diff --git a/browser-client-react/.gitignore b/browser-client-react/.gitignore new file mode 100644 index 0000000..4d29575 --- /dev/null +++ b/browser-client-react/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/browser-client-react/README.md b/browser-client-react/README.md new file mode 100644 index 0000000..b87cb00 --- /dev/null +++ b/browser-client-react/README.md @@ -0,0 +1,46 @@ +# Getting Started with Create React App + +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `npm start` + +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.\ +You will also see any lint errors in the console. + +### `npm test` + +Launches the test runner in the interactive watch mode.\ +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `npm run build` + +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `npm run eject` + +**Note: this is a one-way operation. Once you `eject`, you can’t go back!** + +If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. + +You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). diff --git a/browser-client-react/package-lock.json b/browser-client-react/package-lock.json new file mode 100644 index 0000000..4dbc398 --- /dev/null +++ b/browser-client-react/package-lock.json @@ -0,0 +1,26766 @@ +{ + "name": "browser-client-react", + "version": "3.2.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "browser-client-react", + "version": "3.2.0", + "dependencies": { + "@interopio/browser": "^3.2.0", + "@interopio/react-hooks": "^3.2.0", + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^13.5.0", + "@types/jest": "^27.5.2", + "@types/node": "^16.18.76", + "@types/react": "^18.2.48", + "@types/react-dom": "^18.2.18", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-scripts": "5.0.1", + "typescript": "^4.9.5", + "web-vitals": "^2.1.4" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.3.3", + "license": "MIT" + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.9", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.23.9", + "license": "MIT", + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/@babel/eslint-parser/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.23.9", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.9", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.9", + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.23.9", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.23.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-decorators": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.9", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.23.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.23.8", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-flow": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.23.6", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.9", + "license": "MIT", + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.23.4", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.23.4", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.23.9", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.23.6", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.23.9", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.23.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "license": "MIT" + }, + "node_modules/@babel/runtime": { + "version": "7.23.9", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.23.9", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.9", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.9", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "license": "MIT" + }, + "node_modules/@csstools/normalize.css": { + "version": "12.1.1", + "license": "CC0-1.0" + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "1.1.1", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "1.0.1", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "1.0.2", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "1.0.1", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "2.0.7", + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "1.0.0", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "1.0.1", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "1.1.1", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "1.0.1", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "1.0.2", + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "2.2.0", + "license": "CC0-1.0", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.10" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "license": "Python-2.0" + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@glue42/gateway-web": { + "version": "3.0.19", + "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.19.tgz", + "integrity": "sha512-k0s5C21jIF+3o1g+Sz5ZocfVUTSCuXFg21KB/wh5hqO0aFM4KCVHmWqazBmGpp16VfxoqoPHujcZDk8cK5Dl+g==" + }, + "node_modules/@glue42/schemas": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@glue42/schemas/-/schemas-3.22.0.tgz", + "integrity": "sha512-4eC3oIci6o09DIPYwvGCHSaGHdNPqDDnqByh0XuiOw/lA6rlZii4HfamqbCYhytEZ58dqAdyTDqyqVNnEVBuQA==", + "dependencies": { + "ajv": "^6.12.6", + "ajv-keywords": "^3.4.1" + }, + "peerDependencies": { + "log4js": "^6.4.2" + }, + "peerDependenciesMeta": { + "log4js": { + "optional": true + } + } + }, + "node_modules/@glue42/server-api": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.3.tgz", + "integrity": "sha512-UpHc8l1iNkg48k7JYLB9ofk8BmzG1sRxTLiu2l3pLldbzxS1xxcdRruUx45SSeSiM2juiahbi04iTDCsgQUVFg==", + "dependencies": { + "@glue42/schemas": "^3.18.0", + "@types/request": "^2.48.8", + "axios": "^1.6.2", + "form-data": "^4.0.0", + "jwt-decode": "^3.1.2", + "rimraf": "^5.0.5", + "typescript": "^4.2.4" + } + }, + "node_modules/@glue42/server-api/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@glue42/server-api/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@glue42/server-api/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@glue42/server-api/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@glue42/server-api/node_modules/rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "license": "BSD-3-Clause" + }, + "node_modules/@interopio/browser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.2.0.tgz", + "integrity": "sha512-B9Xv0vAdJtPnkZiy1Zbcy1TPaWkeQMyKL+H0UyNN54SXx/ksvoQCHvvP27OJFiKvNK962v8ju6cfw3oRcYqD1g==", + "dependencies": { + "@interopio/core": "^6.2.0", + "@interopio/desktop": "^6.0.1", + "@interopio/search-api": "^2.2.0", + "@interopio/utils": "^1.2.0", + "@interopio/workspaces-api": "^3.2.0", + "callback-registry": "^2.6.0", + "decoder-validate": "0.0.2", + "idb": "^7.1.1", + "nanoid": "^4.0.0", + "shortid": "^2.2.16" + } + }, + "node_modules/@interopio/browser-platform": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.2.0.tgz", + "integrity": "sha512-0dpIC7r/duBJrvXVvQaKoULC97De6qhPCA6fyFL9l+yCtZvvH3JeqmDkXsx+E7OHd8gQGRokb/Y/MOp620tY9Q==", + "dependencies": { + "@glue42/gateway-web": "^3.0.17", + "@glue42/server-api": "^1.6.3", + "@interopio/browser": "^3.2.0", + "@interopio/core": "^6.2.0", + "@interopio/desktop": "^6.0.1", + "@interopio/search-api": "^2.2.0", + "@interopio/utils": "^1.2.0", + "@interopio/workspaces-api": "^3.2.0", + "callback-registry": "^2.7.1", + "decoder-validate": "0.0.2", + "deep-equal": "^2.1.0", + "deepmerge": "^4.2.2", + "fast-deep-equal": "^3.1.3", + "idb": "^7.1.1", + "jsrsasign": "^10.8.6", + "nanoid": "^4.0.0", + "shortid": "^2.2.16", + "ua-parser-js": "^1.0.35" + } + }, + "node_modules/@interopio/browser-platform/node_modules/nanoid": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@interopio/browser/node_modules/nanoid": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@interopio/core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.2.0.tgz", + "integrity": "sha512-T+I6lymeJ7WbeFdM1+kdTSBOBH95d8qndK1LxVoAkVYKL3B952GXQhHTPBSq5uvARgvZmXlBc7jLVJo8cTDpNw==", + "dependencies": { + "callback-registry": "^2.7.2", + "shortid": "^2.2.16", + "ws": "^8.12.1" + } + }, + "node_modules/@interopio/core/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@interopio/desktop": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.2.2.tgz", + "integrity": "sha512-HzfhjU5PRQPZR7k9JYMLtsZ9TAntsRCoMQp/r2LuPdumG4eWh9SUEB5ScwyXuHlcYqJSdogDwmws8hsIsXvZVA==", + "dependencies": { + "@glue42/schemas": "^3.22.0", + "@interopio/core": "^6.1.0", + "@interopio/workspaces-api": "^3.1.0", + "callback-registry": "^2.7.1", + "nanoid": "^3.3.7" + } + }, + "node_modules/@interopio/react-hooks": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.2.0.tgz", + "integrity": "sha512-1jqquE7heNQObJdooqkoVCNRtg2SlON7P18lOLIlgHl3KIkbRwln1VyHxxrfuXohDJciIlWSq5JbY6IGf85odg==", + "dependencies": { + "@interopio/browser": "^3.2.0", + "@interopio/browser-platform": "^3.2.0", + "@interopio/desktop": "^6.0.1", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": ">=16.13.1", + "react-dom": ">=16.13.1" + }, + "peerDependenciesMeta": { + "react": { + "autoinstall": false + }, + "react-dom": { + "autoinstall": false + } + } + }, + "node_modules/@interopio/search-api": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.2.0.tgz", + "integrity": "sha512-Q8CmDjDSBRie+pS9raklvFaL5ko1LpqzoEEaxD587lpgR+7gdMTdfv8BxazNd8iL/NeZmWbMWWk0GNNgSiaxYA==", + "dependencies": { + "@interopio/core": "^6.2.0", + "callback-registry": "^2.5.2", + "decoder-validate": "0.0.2", + "nanoid": "^4.0.0" + } + }, + "node_modules/@interopio/search-api/node_modules/nanoid": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@interopio/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-Vn6QOX8IjuhpnpTNYGmfZ1VnIzIuRvwa3CIartDTcthvpHce/IlPCpMTr8uquzom8yzdONXcW4t0yLxRxMncBQ==", + "dependencies": { + "decoder-validate": "^0.0.2" + } + }, + "node_modules/@interopio/workspaces-api": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.2.0.tgz", + "integrity": "sha512-ShufjDByHfhn8T9qiOZ/NqczLzBy/7d0BLz+Jq8bMPutud8dsyNpIPHjzFi8jMNTA/y9fZPMp6SyMU0JS6C/uA==", + "dependencies": { + "@interopio/core": "^6.2.0", + "callback-registry": "^2.5.2", + "decoder-validate": "0.0.2", + "nanoid": "^4.0.0" + } + }, + "node_modules/@interopio/workspaces-api/node_modules/nanoid": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "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", + "license": "MIT", + "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", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "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", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "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", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "28.1.3", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/source-map/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/test-result": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "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", + "license": "MIT", + "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", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "1.9.0", + "license": "MIT" + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "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", + "license": "MIT", + "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", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.22", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "license": "MIT" + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "license": "MIT", + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": { + "version": "5.1.1", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { + "version": "4.3.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.11", + "license": "MIT", + "dependencies": { + "ansi-html-community": "^0.0.8", + "common-path-prefix": "^3.0.0", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "find-up": "^5.0.0", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^3.0.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "@types/webpack": "4.x || 5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <5.0.0", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x || 4.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "0.0.39", + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.7.2", + "license": "MIT" + }, + "node_modules/@sinclair/typebox": { + "version": "0.24.51", + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "license": "Apache-2.0", + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "5.5.0", + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core": { + "version": "5.5.0", + "license": "MIT", + "dependencies": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.12.6" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "5.5.0", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "5.5.0", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/webpack": { + "version": "5.5.0", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@testing-library/dom": { + "version": "9.3.4", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "peer": 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/aria-query": { + "version": "5.1.3", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@testing-library/dom/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "peer": 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", + "license": "MIT", + "peer": 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", + "license": "MIT", + "peer": true + }, + "node_modules/@testing-library/dom/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/dom/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "5.17.0", + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=8", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "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/chalk": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "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", + "license": "MIT" + }, + "node_modules/@testing-library/jest-dom/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react": { + "version": "13.4.0", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^8.5.0", + "@types/react-dom": "^18.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@testing-library/react/node_modules/@testing-library/dom": { + "version": "8.20.1", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@testing-library/react/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/react/node_modules/aria-query": { + "version": "5.1.3", + "license": "Apache-2.0", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@testing-library/react/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "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/react/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/react/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/@testing-library/react/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/user-event": { + "version": "13.5.0", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "license": "MIT" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.5", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/caseless": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.2", + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.21", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.42", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "27.5.2", + "license": "MIT", + "dependencies": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "16.18.76", + "license": "MIT" + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "license": "MIT" + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "license": "MIT" + }, + "node_modules/@types/q": { + "version": "1.5.8", + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.9.11", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.2.48", + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.18", + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/request": { + "version": "2.48.12", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", + "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", + "dependencies": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + } + }, + "node_modules/@types/request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "license": "MIT" + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.4", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.5", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "license": "MIT" + }, + "node_modules/@types/testing-library__jest-dom": { + "version": "5.14.9", + "license": "MIT", + "dependencies": { + "@types/jest": "*" + } + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "16.0.9", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "5.62.0", + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "license": "ISC" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "license": "Apache-2.0" + }, + "node_modules/abab": { + "version": "2.0.6", + "license": "BSD-3-Clause" + }, + "node_modules/accepts": { + "version": "1.3.8", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "1.0.10", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.7", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.reduce": { + "version": "1.0.6", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "license": "MIT" + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.5", + "license": "MIT" + }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.17", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.22.2", + "caniuse-lite": "^1.0.30001578", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.7.0", + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/babel-jest": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "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", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader": { + "version": "8.3.0", + "license": "MIT", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-named-asset-import": { + "version": "0.3.8", + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.8", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.5.0", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.9.0", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "license": "MIT" + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-react-app": { + "version": "10.0.1", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/batch": { + "version": "0.6.1", + "license": "MIT" + }, + "node_modules/bfj": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "bluebird": "^3.7.2", + "check-types": "^11.2.3", + "hoopy": "^0.1.4", + "jsonpath": "^1.1.1", + "tryer": "^1.0.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.2.1", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "license": "BSD-2-Clause" + }, + "node_modules/browserslist": { + "version": "4.22.2", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callback-registry": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/callback-registry/-/callback-registry-2.7.2.tgz", + "integrity": "sha512-VVrtF21DaH0VHeNMkLDd4VGuxsYM3V3l3lwYneKVMU/6X3TRtcQszUwlAcqj2HrLcbP1NyS12LsanUwCykaz/Q==" + }, + "node_modules/callsites": { + "version": "3.1.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001580", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/check-types": { + "version": "11.2.3", + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "license": "MIT" + }, + "node_modules/clean-css": { + "version": "5.3.3", + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "1.9.3", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "license": "ISC" + }, + "node_modules/common-tags": { + "version": "1.8.2", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/compressible": { + "version": "2.0.18", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "license": "MIT" + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "license": "MIT" + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.5.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "license": "MIT" + }, + "node_modules/core-js": { + "version": "3.35.1", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.35.1", + "license": "MIT", + "dependencies": { + "browserslist": "^4.22.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.35.1", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-has-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-loader": { + "version": "6.9.1", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.4.1", + "license": "MIT", + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "license": "CC0-1.0", + "bin": { + "css-prefers-color-scheme": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "license": "MIT" + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "license": "MIT" + }, + "node_modules/cssdb": { + "version": "7.10.0", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ], + "license": "CC0-1.0" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "license": "MIT", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "license": "MIT", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "license": "CC0-1.0" + }, + "node_modules/csso/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "license": "BSD-2-Clause" + }, + "node_modules/data-urls": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "license": "MIT" + }, + "node_modules/decoder-validate": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/decoder-validate/-/decoder-validate-0.0.2.tgz", + "integrity": "sha512-9BsqAH9Zq6CvlxKHkSrZrH2iYlhuhHcrh6uTnDvcsa9P5YEweEzt1ci+X/9STgSCE7b9BA7/QIiwhfUDDWmjxw==" + }, + "node_modules/dedent": { + "version": "0.7.0", + "license": "MIT" + }, + "node_modules/deep-equal": { + "version": "2.2.3", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "license": "MIT" + }, + "node_modules/detect-port-alt": { + "version": "1.1.6", + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/detect-port-alt/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "license": "Apache-2.0" + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "license": "MIT" + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "license": "MIT", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "license": "BSD-2-Clause" + }, + "node_modules/duplexer": { + "version": "0.1.2", + "license": "MIT" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.9", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.647", + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.8.1", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-abstract": { + "version": "1.22.3", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "license": "MIT", + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.4.1", + "license": "MIT" + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.56.0", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-react-app": { + "version": "7.0.1", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.3", + "@rushstack/eslint-patch": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^5.5.0", + "@typescript-eslint/parser": "^5.5.0", + "babel-preset-react-app": "^10.0.1", + "confusing-browser-globals": "^1.0.11", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jest": "^25.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-flowtype": { + "version": "8.0.3", + "license": "BSD-3-Clause", + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@babel/plugin-syntax-flow": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.9", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "25.7.0", + "license": "MIT", + "dependencies": { + "@typescript-eslint/experimental-utils": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.8.0", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-testing-library": { + "version": "5.11.1", + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^5.58.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-webpack-plugin": { + "version": "3.2.0", + "license": "MIT", + "dependencies": { + "@types/eslint": "^7.29.0 || ^8.4.1", + "jest-worker": "^28.0.2", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { + "version": "28.1.3", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "license": "Python-2.0" + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/express": { + "version": "4.18.2", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.16.0", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/filesize": { + "version": "8.0.7", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "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/fork-ts-checker-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.5", + "license": "Unlicense" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "license": "ISC" + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "license": "BSD-2-Clause" + }, + "node_modules/global-modules": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "license": "MIT" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "license": "(Apache-2.0 OR MPL-1.1)" + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hoopy": { + "version": "0.1.4", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-entities": { + "version": "2.4.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "license": "MIT" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.0", + "license": "MIT", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/idb": { + "version": "7.1.1", + "license": "ISC" + }, + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ignore": { + "version": "5.3.0", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.0.6", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.2", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.8.7", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "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", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "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", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "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", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "27.5.1", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "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", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "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", + "license": "MIT", + "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", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "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", + "license": "MIT", + "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", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "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", + "license": "MIT", + "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", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-serializer": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "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", + "license": "MIT", + "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", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^28.0.0", + "jest-watcher": "^28.0.0", + "slash": "^4.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "jest": "^27.0.0 || ^28.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/console": { + "version": "28.1.3", + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { + "version": "28.1.3", + "license": "MIT", + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/types": { + "version": "28.1.3", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@types/yargs": { + "version": "17.0.32", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "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-watch-typeahead/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-watch-typeahead/node_modules/emittery": { + "version": "0.10.2", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util": { + "version": "28.1.3", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": { + "version": "28.0.2", + "license": "MIT", + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-util": { + "version": "28.1.3", + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher": { + "version": "28.1.3", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/string-length": { + "version": "4.0.2", + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/strip-ansi": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/pretty-format": { + "version": "28.1.3", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/react-is": { + "version": "18.2.0", + "license": "MIT" + }, + "node_modules/jest-watch-typeahead/node_modules/slash": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length": { + "version": "5.0.1", + "license": "MIT", + "dependencies": { + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "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", + "license": "MIT", + "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", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "16.7.0", + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpath": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" + } + }, + "node_modules/jsonpath/node_modules/esprima": { + "version": "1.2.2", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsrsasign": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", + "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==", + "funding": { + "url": "https://github.com/kjur/jsrsasign#donations" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + }, + "node_modules/keyv": { + "version": "4.5.4", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "license": "MIT" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "license": "MIT" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "license": "MIT", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.7", + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.12.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "license": "MIT" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.14", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.7", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.7", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.7", + "license": "MIT", + "dependencies": { + "array.prototype.reduce": "^1.0.6", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "safe-array-concat": "^1.0.0" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.hasown": { + "version": "1.1.3", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "license": "MIT", + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss": { + "version": "8.4.33", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "5.0.2", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-browser-comments": { + "version": "4.0.0", + "license": "CC0-1.0", + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "browserslist": ">=4", + "postcss": ">=8" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "4.2.4", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "8.0.4", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "7.1.1", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-custom-media": { + "version": "8.0.2", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-custom-properties": { + "version": "12.1.11", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "6.0.3", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "6.0.5", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "3.1.2", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-env-function": { + "version": "4.0.6", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-flexbugs-fixes": { + "version": "5.0.2", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "6.0.4", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "5.0.4", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "3.0.5", + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-image-set-function": { + "version": "4.0.7", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-initial": { + "version": "4.0.1", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-lab-function": { + "version": "4.2.1", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "2.3.4", + "license": "ISC", + "engines": { + "node": ">= 14" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "5.0.4", + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-media-minmax": { + "version": "5.0.0", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "license": "MIT", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.4", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.1.1", + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nesting": { + "version": "10.2.0", + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-normalize": { + "version": "10.0.1", + "license": "CC0-1.0", + "dependencies": { + "@csstools/normalize.css": "*", + "postcss-browser-comments": "^4", + "sanitize.css": "*" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "browserslist": ">= 4", + "postcss": ">= 8" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "1.1.3", + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "license": "MIT", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "3.0.4", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "license": "MIT", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "7.0.5", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-preset-env": { + "version": "7.8.3", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-cascade-layers": "^1.1.1", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.13", + "browserslist": "^4.21.4", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^7.1.0", + "postcss-attribute-case-insensitive": "^5.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.4", + "postcss-color-hex-alpha": "^8.0.4", + "postcss-color-rebeccapurple": "^7.1.1", + "postcss-custom-media": "^8.0.2", + "postcss-custom-properties": "^12.1.10", + "postcss-custom-selectors": "^6.0.3", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.2.1", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.2.0", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.4", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "7.1.6", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.15", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-svgo/node_modules/commander": { + "version": "7.2.0", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/postcss-svgo/node_modules/css-tree": { + "version": "1.1.3", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/postcss-svgo/node_modules/mdn-data": { + "version": "2.0.14", + "license": "CC0-1.0" + }, + "node_modules/postcss-svgo/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-svgo/node_modules/svgo": { + "version": "2.8.0", + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/promise": { + "version": "8.3.0", + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/psl": { + "version": "1.9.0", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/raf": { + "version": "3.4.1", + "license": "MIT", + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "18.2.0", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-app-polyfill": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "core-js": "^3.19.2", + "object-assign": "^4.1.1", + "promise": "^8.1.0", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.9", + "whatwg-fetch": "^3.6.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-app-polyfill/node_modules/regenerator-runtime": { + "version": "0.13.11", + "license": "MIT" + }, + "node_modules/react-dev-utils": { + "version": "12.0.1", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-dev-utils/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "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/react-dev-utils/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/react-dev-utils/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/react-dev-utils/node_modules/escape-string-regexp": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.2.1", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dev-utils/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-error-overlay": { + "version": "6.0.11", + "license": "MIT" + }, + "node_modules/react-is": { + "version": "17.0.2", + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.11.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-scripts": { + "version": "5.0.1", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", + "@svgr/webpack": "^5.5.0", + "babel-jest": "^27.4.2", + "babel-loader": "^8.2.3", + "babel-plugin-named-asset-import": "^0.3.8", + "babel-preset-react-app": "^10.0.1", + "bfj": "^7.0.2", + "browserslist": "^4.18.1", + "camelcase": "^6.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "css-loader": "^6.5.1", + "css-minimizer-webpack-plugin": "^3.2.0", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "eslint": "^8.3.0", + "eslint-config-react-app": "^7.0.1", + "eslint-webpack-plugin": "^3.1.1", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "html-webpack-plugin": "^5.5.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^27.4.3", + "jest-resolve": "^27.4.2", + "jest-watch-typeahead": "^1.0.0", + "mini-css-extract-plugin": "^2.4.5", + "postcss": "^8.4.4", + "postcss-flexbugs-fixes": "^5.0.2", + "postcss-loader": "^6.2.1", + "postcss-normalize": "^10.0.1", + "postcss-preset-env": "^7.0.1", + "prompts": "^2.4.2", + "react-app-polyfill": "^3.0.0", + "react-dev-utils": "^12.0.1", + "react-refresh": "^0.11.0", + "resolve": "^1.20.0", + "resolve-url-loader": "^4.0.0", + "sass-loader": "^12.3.0", + "semver": "^7.3.5", + "source-map-loader": "^3.0.0", + "style-loader": "^3.3.1", + "tailwindcss": "^3.0.2", + "terser-webpack-plugin": "^5.2.5", + "webpack": "^5.64.4", + "webpack-dev-server": "^4.6.0", + "webpack-manifest-plugin": "^4.0.2", + "workbox-webpack-plugin": "^6.4.1" + }, + "bin": { + "react-scripts": "bin/react-scripts.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + }, + "peerDependencies": { + "react": ">= 16", + "typescript": "^3.2.1 || ^4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.3.0", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "license": "MIT", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.8", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=8.9" + }, + "peerDependencies": { + "rework": "1.0.1", + "rework-visit": "1.0.0" + }, + "peerDependenciesMeta": { + "rework": { + "optional": true + }, + "rework-visit": { + "optional": true + } + } + }, + "node_modules/resolve-url-loader/node_modules/convert-source-map": { + "version": "1.9.0", + "license": "MIT" + }, + "node_modules/resolve-url-loader/node_modules/picocolors": { + "version": "0.2.1", + "license": "ISC" + }, + "node_modules/resolve-url-loader/node_modules/postcss": { + "version": "7.0.39", + "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.1", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.79.1", + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "26.6.2", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/sanitize.css": { + "version": "13.0.0", + "license": "CC0-1.0" + }, + "node_modules/sass-loader": { + "version": "12.6.0", + "license": "MIT", + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.2.4", + "license": "ISC" + }, + "node_modules/saxes": { + "version": "5.0.1", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "license": "MIT", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "license": "ISC" + }, + "node_modules/send": { + "version": "0.18.0", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "license": "MIT" + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "license": "ISC" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "license": "ISC" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shortid": { + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz", + "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dependencies": { + "nanoid": "^2.1.0" + } + }, + "node_modules/shortid/node_modules/nanoid": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz", + "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "license": "ISC" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.7.4", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "license": "MIT" + }, + "node_modules/spdy": { + "version": "4.0.2", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "license": "BSD-3-Clause" + }, + "node_modules/stable": { + "version": "0.1.8", + "license": "MIT" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "license": "MIT" + }, + "node_modules/static-eval": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "escodegen": "^1.8.1" + } + }, + "node_modules/static-eval/node_modules/escodegen": { + "version": "1.14.3", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/static-eval/node_modules/estraverse": { + "version": "4.3.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/static-eval/node_modules/levn": { + "version": "0.3.0", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/optionator": { + "version": "0.8.3", + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/prelude-ls": { + "version": "1.1.2", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-eval/node_modules/type-check": { + "version": "0.3.2", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "4.2.3", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "license": "MIT" + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "license": "MIT" + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "3.3.4", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.3.10", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.3", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "license": "MIT" + }, + "node_modules/svgo": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "2.1.0", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/svgo/node_modules/css-what": { + "version": "3.4.2", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "0.2.2", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "1.7.0", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { + "version": "1.3.1", + "license": "BSD-2-Clause" + }, + "node_modules/svgo/node_modules/nth-check": { + "version": "1.0.2", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "license": "MIT" + }, + "node_modules/tailwindcss": { + "version": "3.4.1", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.19.1", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "license": "MIT", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.27.0", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "license": "MIT" + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "6.0.2", + "license": "MIT" + }, + "node_modules/thunky": { + "version": "1.1.0", + "license": "MIT" + }, + "node_modules/tmpl": { + "version": "1.0.5", + "license": "BSD-3-Clause" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tryer": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "license": "Apache-2.0" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "license": "0BSD" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/underscore": { + "version": "1.12.1", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/upath": { + "version": "1.2.0", + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/utila": { + "version": "0.4.0", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "license": "ISC", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-vitals": { + "version": "2.1.4", + "license": "Apache-2.0" + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.90.0", + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.12.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.12.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.16.0", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-manifest-plugin": { + "version": "4.1.1", + "license": "MIT", + "dependencies": { + "tapable": "^2.0.0", + "webpack-sources": "^2.2.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "webpack": "^4.44.2 || ^5.47.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { + "version": "2.3.1", + "license": "MIT", + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.4.24", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "license": "MIT" + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "license": "MIT", + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "license": "MIT", + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-background-sync": { + "version": "6.6.0", + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "6.6.0", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-build": { + "version": "6.6.0", + "license": "MIT", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.6.0", + "workbox-broadcast-update": "6.6.0", + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-google-analytics": "6.6.0", + "workbox-navigation-preload": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-range-requests": "6.6.0", + "workbox-recipes": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0", + "workbox-streams": "6.6.0", + "workbox-sw": "6.6.0", + "workbox-window": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "license": "MIT", + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.12.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/fs-extra": { + "version": "9.1.0", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "license": "BSD-3-Clause", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "license": "BSD-2-Clause" + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "6.6.0", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-core": { + "version": "6.6.0", + "license": "MIT" + }, + "node_modules/workbox-expiration": { + "version": "6.6.0", + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-google-analytics": { + "version": "6.6.0", + "license": "MIT", + "dependencies": { + "workbox-background-sync": "6.6.0", + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "6.6.0", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-precaching": { + "version": "6.6.0", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-range-requests": { + "version": "6.6.0", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-recipes": { + "version": "6.6.0", + "license": "MIT", + "dependencies": { + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-routing": { + "version": "6.6.0", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-strategies": { + "version": "6.6.0", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-streams": { + "version": "6.6.0", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0" + } + }, + "node_modules/workbox-sw": { + "version": "6.6.0", + "license": "MIT" + }, + "node_modules/workbox-webpack-plugin": { + "version": "6.6.0", + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.9.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "license": "MIT", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/workbox-window": { + "version": "6.6.0", + "license": "MIT", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.6.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.9", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "license": "Apache-2.0" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6" + }, + "@adobe/css-tools": { + "version": "4.3.3" + }, + "@alloc/quick-lru": { + "version": "5.2.0" + }, + "@ampproject/remapping": { + "version": "2.2.1", + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.23.5", + "requires": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + } + }, + "@babel/compat-data": { + "version": "7.23.5" + }, + "@babel/core": { + "version": "7.23.9", + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1" + } + } + }, + "@babel/eslint-parser": { + "version": "7.23.9", + "requires": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0" + }, + "semver": { + "version": "6.3.1" + } + } + }, + "@babel/generator": { + "version": "7.23.6", + "requires": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.23.6", + "requires": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.23.9", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1" + } + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1" + } + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.22.20" + }, + "@babel/helper-function-name": { + "version": "7.23.0", + "requires": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.22.5", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "requires": { + "@babel/types": "^7.23.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.22.15", + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-module-transforms": { + "version": "7.23.3", + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.22.5" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + } + }, + "@babel/helper-replace-supers": { + "version": "7.22.20", + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.22.5", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-string-parser": { + "version": "7.23.4" + }, + "@babel/helper-validator-identifier": { + "version": "7.22.20" + }, + "@babel/helper-validator-option": { + "version": "7.23.5" + }, + "@babel/helper-wrap-function": { + "version": "7.22.20", + "requires": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + } + }, + "@babel/helpers": { + "version": "7.23.9", + "requires": { + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" + } + }, + "@babel/highlight": { + "version": "7.23.4", + "requires": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.23.9" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" + } + }, + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.23.9", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.23.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-decorators": "^7.23.3" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "requires": {} + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.23.9", + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "requires": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.23.4", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.23.8", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.23.3", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.23.3", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-flow": "^7.23.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.23.6", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.23.3", + "requires": { + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.23.3", + "requires": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.23.3", + "requires": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.23.9", + "requires": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.23.3", + "requires": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.23.4", + "requires": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.23.4", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "requires": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.23.3", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.23.9", + "requires": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1" + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.23.6", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.23.3" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.23.3", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/preset-env": { + "version": "7.23.9", + "requires": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1" + } + } + }, + "@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" + } + }, + "@babel/preset-typescript": { + "version": "7.23.3", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3" + } + }, + "@babel/regjsgen": { + "version": "0.8.0" + }, + "@babel/runtime": { + "version": "7.23.9", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@babel/template": { + "version": "7.23.9", + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" + } + }, + "@babel/traverse": { + "version": "7.23.9", + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.23.9", + "requires": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3" + }, + "@csstools/normalize.css": { + "version": "12.1.1" + }, + "@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "requires": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + } + }, + "@csstools/postcss-color-function": { + "version": "1.1.1", + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-font-format-keywords": { + "version": "1.0.1", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-hwb-function": { + "version": "1.0.2", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-ic-unit": { + "version": "1.0.1", + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-is-pseudo-class": { + "version": "2.0.7", + "requires": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + } + }, + "@csstools/postcss-nested-calc": { + "version": "1.0.0", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-normalize-display-values": { + "version": "1.0.1", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-oklab-function": { + "version": "1.1.1", + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-stepped-value-functions": { + "version": "1.0.1", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-unset-value": { + "version": "1.0.2", + "requires": {} + }, + "@csstools/selector-specificity": { + "version": "2.2.0", + "requires": {} + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.10.0" + }, + "@eslint/eslintrc": { + "version": "2.1.4", + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1" + }, + "globals": { + "version": "13.24.0", + "requires": { + "type-fest": "^0.20.2" + } + }, + "js-yaml": { + "version": "4.1.0", + "requires": { + "argparse": "^2.0.1" + } + }, + "type-fest": { + "version": "0.20.2" + } + } + }, + "@eslint/js": { + "version": "8.56.0" + }, + "@glue42/gateway-web": { + "version": "3.0.19", + "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.19.tgz", + "integrity": "sha512-k0s5C21jIF+3o1g+Sz5ZocfVUTSCuXFg21KB/wh5hqO0aFM4KCVHmWqazBmGpp16VfxoqoPHujcZDk8cK5Dl+g==" + }, + "@glue42/schemas": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@glue42/schemas/-/schemas-3.22.0.tgz", + "integrity": "sha512-4eC3oIci6o09DIPYwvGCHSaGHdNPqDDnqByh0XuiOw/lA6rlZii4HfamqbCYhytEZ58dqAdyTDqyqVNnEVBuQA==", + "requires": { + "ajv": "^6.12.6", + "ajv-keywords": "^3.4.1" + } + }, + "@glue42/server-api": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.3.tgz", + "integrity": "sha512-UpHc8l1iNkg48k7JYLB9ofk8BmzG1sRxTLiu2l3pLldbzxS1xxcdRruUx45SSeSiM2juiahbi04iTDCsgQUVFg==", + "requires": { + "@glue42/schemas": "^3.18.0", + "@types/request": "^2.48.8", + "axios": "^1.6.2", + "form-data": "^4.0.0", + "jwt-decode": "^3.1.2", + "rimraf": "^5.0.5", + "typescript": "^4.2.4" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "requires": { + "glob": "^10.3.7" + } + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.11.14", + "requires": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1" + }, + "@humanwhocodes/object-schema": { + "version": "2.0.2" + }, + "@interopio/browser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.2.0.tgz", + "integrity": "sha512-B9Xv0vAdJtPnkZiy1Zbcy1TPaWkeQMyKL+H0UyNN54SXx/ksvoQCHvvP27OJFiKvNK962v8ju6cfw3oRcYqD1g==", + "requires": { + "@interopio/core": "^6.2.0", + "@interopio/desktop": "^6.0.1", + "@interopio/search-api": "^2.2.0", + "@interopio/utils": "^1.2.0", + "@interopio/workspaces-api": "^3.2.0", + "callback-registry": "^2.6.0", + "decoder-validate": "0.0.2", + "idb": "^7.1.1", + "nanoid": "^4.0.0", + "shortid": "^2.2.16" + }, + "dependencies": { + "nanoid": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" + } + } + }, + "@interopio/browser-platform": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.2.0.tgz", + "integrity": "sha512-0dpIC7r/duBJrvXVvQaKoULC97De6qhPCA6fyFL9l+yCtZvvH3JeqmDkXsx+E7OHd8gQGRokb/Y/MOp620tY9Q==", + "requires": { + "@glue42/gateway-web": "^3.0.17", + "@glue42/server-api": "^1.6.3", + "@interopio/browser": "^3.2.0", + "@interopio/core": "^6.2.0", + "@interopio/desktop": "^6.0.1", + "@interopio/search-api": "^2.2.0", + "@interopio/utils": "^1.2.0", + "@interopio/workspaces-api": "^3.2.0", + "callback-registry": "^2.7.1", + "decoder-validate": "0.0.2", + "deep-equal": "^2.1.0", + "deepmerge": "^4.2.2", + "fast-deep-equal": "^3.1.3", + "idb": "^7.1.1", + "jsrsasign": "^10.8.6", + "nanoid": "^4.0.0", + "shortid": "^2.2.16", + "ua-parser-js": "^1.0.35" + }, + "dependencies": { + "nanoid": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" + } + } + }, + "@interopio/core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.2.0.tgz", + "integrity": "sha512-T+I6lymeJ7WbeFdM1+kdTSBOBH95d8qndK1LxVoAkVYKL3B952GXQhHTPBSq5uvARgvZmXlBc7jLVJo8cTDpNw==", + "requires": { + "callback-registry": "^2.7.2", + "shortid": "^2.2.16", + "ws": "^8.12.1" + }, + "dependencies": { + "ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "requires": {} + } + } + }, + "@interopio/desktop": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.2.2.tgz", + "integrity": "sha512-HzfhjU5PRQPZR7k9JYMLtsZ9TAntsRCoMQp/r2LuPdumG4eWh9SUEB5ScwyXuHlcYqJSdogDwmws8hsIsXvZVA==", + "requires": { + "@glue42/schemas": "^3.22.0", + "@interopio/core": "^6.1.0", + "@interopio/workspaces-api": "^3.1.0", + "callback-registry": "^2.7.1", + "nanoid": "^3.3.7" + } + }, + "@interopio/react-hooks": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.2.0.tgz", + "integrity": "sha512-1jqquE7heNQObJdooqkoVCNRtg2SlON7P18lOLIlgHl3KIkbRwln1VyHxxrfuXohDJciIlWSq5JbY6IGf85odg==", + "requires": { + "@interopio/browser": "^3.2.0", + "@interopio/browser-platform": "^3.2.0", + "@interopio/desktop": "^6.0.1", + "prop-types": "^15.7.2" + } + }, + "@interopio/search-api": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.2.0.tgz", + "integrity": "sha512-Q8CmDjDSBRie+pS9raklvFaL5ko1LpqzoEEaxD587lpgR+7gdMTdfv8BxazNd8iL/NeZmWbMWWk0GNNgSiaxYA==", + "requires": { + "@interopio/core": "^6.2.0", + "callback-registry": "^2.5.2", + "decoder-validate": "0.0.2", + "nanoid": "^4.0.0" + }, + "dependencies": { + "nanoid": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" + } + } + }, + "@interopio/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-Vn6QOX8IjuhpnpTNYGmfZ1VnIzIuRvwa3CIartDTcthvpHce/IlPCpMTr8uquzom8yzdONXcW4t0yLxRxMncBQ==", + "requires": { + "decoder-validate": "^0.0.2" + } + }, + "@interopio/workspaces-api": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.2.0.tgz", + "integrity": "sha512-ShufjDByHfhn8T9qiOZ/NqczLzBy/7d0BLz+Jq8bMPutud8dsyNpIPHjzFi8jMNTA/y9fZPMp6SyMU0JS6C/uA==", + "requires": { + "@interopio/core": "^6.2.0", + "callback-registry": "^2.5.2", + "decoder-validate": "0.0.2", + "nanoid": "^4.0.0" + }, + "dependencies": { + "nanoid": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" + } + } + }, + "@isaacs/cliui": { + "version": "8.0.2", + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1" + }, + "ansi-styles": { + "version": "6.2.1" + }, + "string-width": { + "version": "5.1.2", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1" + }, + "find-up": { + "version": "4.1.0", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3" + }, + "@jest/console": { + "version": "27.5.1", + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/core": { + "version": "27.5.1", + "requires": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/environment": { + "version": "27.5.1", + "requires": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + } + }, + "@jest/fake-timers": { + "version": "27.5.1", + "requires": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "@jest/globals": { + "version": "27.5.1", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + } + }, + "@jest/reporters": { + "version": "27.5.1", + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "source-map": { + "version": "0.6.1" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/schemas": { + "version": "28.1.3", + "requires": { + "@sinclair/typebox": "^0.24.1" + } + }, + "@jest/source-map": { + "version": "27.5.1", + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1" + } + } + }, + "@jest/test-result": { + "version": "27.5.1", + "requires": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "27.5.1", + "requires": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + } + }, + "@jest/transform": { + "version": "27.5.1", + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "convert-source-map": { + "version": "1.9.0" + }, + "has-flag": { + "version": "4.0.0" + }, + "source-map": { + "version": "0.6.1" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/types": { + "version": "27.5.1", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1" + }, + "@jridgewell/set-array": { + "version": "1.1.2" + }, + "@jridgewell/source-map": { + "version": "0.3.5", + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.22", + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4" + }, + "@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "requires": { + "eslint-scope": "5.1.1" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0" + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "optional": true + }, + "@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.11", + "requires": { + "ansi-html-community": "^0.0.8", + "common-path-prefix": "^3.0.0", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "find-up": "^5.0.0", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^3.0.0", + "source-map": "^0.7.3" + } + }, + "@rollup/plugin-babel": { + "version": "5.3.1", + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, + "@rollup/plugin-node-resolve": { + "version": "11.2.1", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + } + }, + "@rollup/plugin-replace": { + "version": "2.4.2", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.39" + } + } + }, + "@rushstack/eslint-patch": { + "version": "1.7.2" + }, + "@sinclair/typebox": { + "version": "0.24.51" + }, + "@sinonjs/commons": { + "version": "1.8.6", + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "8.1.0", + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "requires": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0" + }, + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0" + }, + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1" + }, + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1" + }, + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0" + }, + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0" + }, + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0" + }, + "@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0" + }, + "@svgr/babel-preset": { + "version": "5.5.0", + "requires": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + } + }, + "@svgr/core": { + "version": "5.5.0", + "requires": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + } + }, + "@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "requires": { + "@babel/types": "^7.12.6" + } + }, + "@svgr/plugin-jsx": { + "version": "5.5.0", + "requires": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + } + }, + "@svgr/plugin-svgo": { + "version": "5.5.0", + "requires": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + } + }, + "@svgr/webpack": { + "version": "5.5.0", + "requires": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + } + }, + "@testing-library/dom": { + "version": "9.3.4", + "peer": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "aria-query": { + "version": "5.1.3", + "peer": true, + "requires": { + "deep-equal": "^2.0.5" + } + }, + "chalk": { + "version": "4.1.2", + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@testing-library/jest-dom": { + "version": "5.17.0", + "requires": { + "@adobe/css-tools": "^4.0.1", + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@testing-library/react": { + "version": "13.4.0", + "requires": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^8.5.0", + "@types/react-dom": "^18.0.0" + }, + "dependencies": { + "@testing-library/dom": { + "version": "8.20.1", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + } + }, + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "aria-query": { + "version": "5.1.3", + "requires": { + "deep-equal": "^2.0.5" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@testing-library/user-event": { + "version": "13.5.0", + "requires": { + "@babel/runtime": "^7.12.5" + } + }, + "@tootallnate/once": { + "version": "1.1.2" + }, + "@trysound/sax": { + "version": "0.2.0" + }, + "@types/aria-query": { + "version": "5.0.4" + }, + "@types/babel__core": { + "version": "7.20.5", + "requires": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.8", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.4", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.20.5", + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@types/body-parser": { + "version": "1.19.5", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.13", + "requires": { + "@types/node": "*" + } + }, + "@types/caseless": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" + }, + "@types/connect": { + "version": "3.4.38", + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.5.4", + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.56.2", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.7", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.5" + }, + "@types/express": { + "version": "4.17.21", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.42", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.9", + "requires": { + "@types/node": "*" + } + }, + "@types/html-minifier-terser": { + "version": "6.1.0" + }, + "@types/http-errors": { + "version": "2.0.4" + }, + "@types/http-proxy": { + "version": "1.17.14", + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.6" + }, + "@types/istanbul-lib-report": { + "version": "3.0.3", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.4", + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "27.5.2", + "requires": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.15" + }, + "@types/json5": { + "version": "0.0.29" + }, + "@types/mime": { + "version": "1.3.5" + }, + "@types/node": { + "version": "16.18.76" + }, + "@types/node-forge": { + "version": "1.3.11", + "requires": { + "@types/node": "*" + } + }, + "@types/parse-json": { + "version": "4.0.2" + }, + "@types/prettier": { + "version": "2.7.3" + }, + "@types/prop-types": { + "version": "15.7.11" + }, + "@types/q": { + "version": "1.5.8" + }, + "@types/qs": { + "version": "6.9.11" + }, + "@types/range-parser": { + "version": "1.2.7" + }, + "@types/react": { + "version": "18.2.48", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "18.2.18", + "requires": { + "@types/react": "*" + } + }, + "@types/request": { + "version": "2.48.12", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", + "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", + "requires": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + }, + "dependencies": { + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } + } + }, + "@types/resolve": { + "version": "1.17.1", + "requires": { + "@types/node": "*" + } + }, + "@types/retry": { + "version": "0.12.0" + }, + "@types/scheduler": { + "version": "0.16.8" + }, + "@types/semver": { + "version": "7.5.6" + }, + "@types/send": { + "version": "0.17.4", + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/serve-index": { + "version": "1.9.4", + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.15.5", + "requires": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.36", + "requires": { + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "2.0.3" + }, + "@types/testing-library__jest-dom": { + "version": "5.14.9", + "requires": { + "@types/jest": "*" + } + }, + "@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" + }, + "@types/trusted-types": { + "version": "2.0.7" + }, + "@types/ws": { + "version": "8.5.10", + "requires": { + "@types/node": "*" + } + }, + "@types/yargs": { + "version": "16.0.9", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.3" + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "requires": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "5.62.0", + "requires": { + "@typescript-eslint/utils": "5.62.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.62.0", + "requires": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.62.0", + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.62.0", + "requires": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.62.0" + }, + "@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.62.0", + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0" + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "requires": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@ungap/structured-clone": { + "version": "1.2.0" + }, + "@webassemblyjs/ast": { + "version": "1.11.6", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.6" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.6" + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.6", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.6", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.6" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.6", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0" + }, + "@xtuc/long": { + "version": "4.2.2" + }, + "abab": { + "version": "2.0.6" + }, + "accepts": { + "version": "1.3.8", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.11.3" + }, + "acorn-globals": { + "version": "6.0.0", + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1" + } + } + }, + "acorn-import-assertions": { + "version": "1.9.0", + "requires": {} + }, + "acorn-jsx": { + "version": "5.3.2", + "requires": {} + }, + "acorn-walk": { + "version": "7.2.0" + }, + "address": { + "version": "1.2.2" + }, + "adjust-sourcemap-loader": { + "version": "4.0.0", + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + } + }, + "agent-base": { + "version": "6.0.2", + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0" + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "requires": {} + }, + "ansi-escapes": { + "version": "4.3.2", + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-html-community": { + "version": "0.0.8" + }, + "ansi-regex": { + "version": "5.0.1" + }, + "ansi-styles": { + "version": "3.2.1", + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0" + }, + "anymatch": { + "version": "3.1.3", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "5.0.2" + }, + "argparse": { + "version": "1.0.10", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "5.3.0", + "requires": { + "dequal": "^2.0.3" + } + }, + "array-buffer-byte-length": { + "version": "1.0.0", + "requires": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, + "array-flatten": { + "version": "1.1.1" + }, + "array-includes": { + "version": "3.1.7", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "2.1.0" + }, + "array.prototype.findlastindex": { + "version": "1.2.3", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "array.prototype.flat": { + "version": "1.3.2", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.2", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.reduce": { + "version": "1.0.6", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + } + }, + "array.prototype.tosorted": { + "version": "1.1.2", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.2", + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + } + }, + "asap": { + "version": "2.0.6" + }, + "ast-types-flow": { + "version": "0.0.8" + }, + "async": { + "version": "3.2.5" + }, + "asynciterator.prototype": { + "version": "1.0.0", + "requires": { + "has-symbols": "^1.0.3" + } + }, + "asynckit": { + "version": "0.4.0" + }, + "at-least-node": { + "version": "1.0.0" + }, + "autoprefixer": { + "version": "10.4.17", + "requires": { + "browserslist": "^4.22.2", + "caniuse-lite": "^1.0.30001578", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "available-typed-arrays": { + "version": "1.0.5" + }, + "axe-core": { + "version": "4.7.0" + }, + "axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "requires": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "axobject-query": { + "version": "3.2.1", + "requires": { + "dequal": "^2.0.3" + } + }, + "babel-jest": { + "version": "27.5.1", + "requires": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "babel-loader": { + "version": "8.3.0", + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "schema-utils": { + "version": "2.7.1", + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "27.5.1", + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-macros": { + "version": "3.1.0", + "requires": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + } + }, + "babel-plugin-named-asset-import": { + "version": "0.3.8", + "requires": {} + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.4.8", + "requires": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.5.0", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1" + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.9.0", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + } + }, + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24" + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "27.5.1", + "requires": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "babel-preset-react-app": { + "version": "10.0.1", + "requires": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "balanced-match": { + "version": "1.0.2" + }, + "batch": { + "version": "0.6.1" + }, + "bfj": { + "version": "7.1.0", + "requires": { + "bluebird": "^3.7.2", + "check-types": "^11.2.3", + "hoopy": "^0.1.4", + "jsonpath": "^1.1.1", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2" + }, + "binary-extensions": { + "version": "2.2.0" + }, + "bluebird": { + "version": "3.7.2" + }, + "body-parser": { + "version": "1.20.1", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2" + }, + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "bonjour-service": { + "version": "1.2.1", + "requires": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "boolbase": { + "version": "1.0.0" + }, + "brace-expansion": { + "version": "1.1.11", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0" + }, + "browserslist": { + "version": "4.22.2", + "requires": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + } + }, + "bser": { + "version": "2.1.1", + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-from": { + "version": "1.1.2" + }, + "builtin-modules": { + "version": "3.3.0" + }, + "bytes": { + "version": "3.0.0" + }, + "call-bind": { + "version": "1.0.5", + "requires": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + } + }, + "callback-registry": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/callback-registry/-/callback-registry-2.7.2.tgz", + "integrity": "sha512-VVrtF21DaH0VHeNMkLDd4VGuxsYM3V3l3lwYneKVMU/6X3TRtcQszUwlAcqj2HrLcbP1NyS12LsanUwCykaz/Q==" + }, + "callsites": { + "version": "3.1.0" + }, + "camel-case": { + "version": "4.1.2", + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "6.3.0" + }, + "camelcase-css": { + "version": "2.0.1" + }, + "caniuse-api": { + "version": "3.0.0", + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001580" + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.4.0" + }, + "chalk": { + "version": "2.4.2", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "char-regex": { + "version": "1.0.2" + }, + "check-types": { + "version": "11.2.3" + }, + "chokidar": { + "version": "3.5.3", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chrome-trace-event": { + "version": "1.0.3" + }, + "ci-info": { + "version": "3.9.0" + }, + "cjs-module-lexer": { + "version": "1.2.3" + }, + "clean-css": { + "version": "5.3.3", + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1" + } + } + }, + "cliui": { + "version": "7.0.4", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "co": { + "version": "4.6.0" + }, + "coa": { + "version": "2.0.2", + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "collect-v8-coverage": { + "version": "1.0.2" + }, + "color-convert": { + "version": "1.9.3", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3" + }, + "colord": { + "version": "2.9.3" + }, + "colorette": { + "version": "2.0.20" + }, + "combined-stream": { + "version": "1.0.8", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "8.3.0" + }, + "common-path-prefix": { + "version": "3.0.0" + }, + "common-tags": { + "version": "1.8.2" + }, + "commondir": { + "version": "1.0.1" + }, + "compressible": { + "version": "2.0.18", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + }, + "safe-buffer": { + "version": "5.1.2" + } + } + }, + "concat-map": { + "version": "0.0.1" + }, + "confusing-browser-globals": { + "version": "1.0.11" + }, + "connect-history-api-fallback": { + "version": "2.0.0" + }, + "content-disposition": { + "version": "0.5.4", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5" + }, + "convert-source-map": { + "version": "2.0.0" + }, + "cookie": { + "version": "0.5.0" + }, + "cookie-signature": { + "version": "1.0.6" + }, + "core-js": { + "version": "3.35.1" + }, + "core-js-compat": { + "version": "3.35.1", + "requires": { + "browserslist": "^4.22.2" + } + }, + "core-js-pure": { + "version": "3.35.1" + }, + "core-util-is": { + "version": "1.0.3" + }, + "cosmiconfig": { + "version": "7.1.0", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-random-string": { + "version": "2.0.0" + }, + "css-blank-pseudo": { + "version": "3.0.3", + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "css-declaration-sorter": { + "version": "6.4.1", + "requires": {} + }, + "css-has-pseudo": { + "version": "3.0.4", + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "css-loader": { + "version": "6.9.1", + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + } + }, + "css-minimizer-webpack-plugin": { + "version": "3.4.1", + "requires": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0" + }, + "schema-utils": { + "version": "4.2.0", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + }, + "source-map": { + "version": "0.6.1" + } + } + }, + "css-prefers-color-scheme": { + "version": "6.0.3", + "requires": {} + }, + "css-select": { + "version": "4.3.0", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-select-base-adapter": { + "version": "0.1.1" + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1" + } + } + }, + "css-what": { + "version": "6.1.0" + }, + "css.escape": { + "version": "1.5.1" + }, + "cssdb": { + "version": "7.10.0" + }, + "cssesc": { + "version": "3.0.0" + }, + "cssnano": { + "version": "5.1.15", + "requires": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.2.14", + "requires": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + } + }, + "cssnano-utils": { + "version": "3.1.0", + "requires": {} + }, + "csso": { + "version": "4.2.0", + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.3", + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14" + }, + "source-map": { + "version": "0.6.1" + } + } + }, + "cssom": { + "version": "0.4.4" + }, + "cssstyle": { + "version": "2.3.0", + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8" + } + } + }, + "csstype": { + "version": "3.1.3" + }, + "damerau-levenshtein": { + "version": "1.0.8" + }, + "data-urls": { + "version": "2.0.0", + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "debug": { + "version": "4.3.4", + "requires": { + "ms": "2.1.2" + } + }, + "decimal.js": { + "version": "10.4.3" + }, + "decoder-validate": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/decoder-validate/-/decoder-validate-0.0.2.tgz", + "integrity": "sha512-9BsqAH9Zq6CvlxKHkSrZrH2iYlhuhHcrh6uTnDvcsa9P5YEweEzt1ci+X/9STgSCE7b9BA7/QIiwhfUDDWmjxw==" + }, + "dedent": { + "version": "0.7.0" + }, + "deep-equal": { + "version": "2.2.3", + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + } + }, + "deep-is": { + "version": "0.1.4" + }, + "deepmerge": { + "version": "4.3.1" + }, + "default-gateway": { + "version": "6.0.3", + "requires": { + "execa": "^5.0.0" + } + }, + "define-data-property": { + "version": "1.1.1", + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "define-lazy-prop": { + "version": "2.0.0" + }, + "define-properties": { + "version": "1.2.1", + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0" + }, + "depd": { + "version": "2.0.0" + }, + "dequal": { + "version": "2.0.3" + }, + "destroy": { + "version": "1.2.0" + }, + "detect-newline": { + "version": "3.1.0" + }, + "detect-node": { + "version": "2.1.0" + }, + "detect-port-alt": { + "version": "1.1.6", + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "didyoumean": { + "version": "1.2.2" + }, + "diff-sequences": { + "version": "27.5.1" + }, + "dir-glob": { + "version": "3.0.1", + "requires": { + "path-type": "^4.0.0" + } + }, + "dlv": { + "version": "1.1.3" + }, + "dns-packet": { + "version": "5.6.1", + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "doctrine": { + "version": "3.0.0", + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-accessibility-api": { + "version": "0.5.16" + }, + "dom-converter": { + "version": "0.2.0", + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.4.1", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0" + }, + "domexception": { + "version": "2.0.1", + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0" + } + } + }, + "domhandler": { + "version": "4.3.1", + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dotenv": { + "version": "10.0.0" + }, + "dotenv-expand": { + "version": "5.1.0" + }, + "duplexer": { + "version": "0.1.2" + }, + "eastasianwidth": { + "version": "0.2.0" + }, + "ee-first": { + "version": "1.1.1" + }, + "ejs": { + "version": "3.1.9", + "requires": { + "jake": "^10.8.5" + } + }, + "electron-to-chromium": { + "version": "1.4.647" + }, + "emittery": { + "version": "0.8.1" + }, + "emoji-regex": { + "version": "9.2.2" + }, + "emojis-list": { + "version": "3.0.0" + }, + "encodeurl": { + "version": "1.0.2" + }, + "enhanced-resolve": { + "version": "5.15.0", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "2.2.0" + }, + "error-ex": { + "version": "1.3.2", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.1.4", + "requires": { + "stackframe": "^1.3.4" + } + }, + "es-abstract": { + "version": "1.22.3", + "requires": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0" + }, + "es-get-iterator": { + "version": "1.1.3", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + } + }, + "es-iterator-helpers": { + "version": "1.0.15", + "requires": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" + } + }, + "es-module-lexer": { + "version": "1.4.1" + }, + "es-set-tostringtag": { + "version": "2.0.2", + "requires": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + } + }, + "es-shim-unscopables": { + "version": "1.0.2", + "requires": { + "hasown": "^2.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1" + }, + "escape-html": { + "version": "1.0.3" + }, + "escape-string-regexp": { + "version": "1.0.5" + }, + "escodegen": { + "version": "2.1.0", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "optional": true + } + } + }, + "eslint": { + "version": "8.56.0", + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1" + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "escape-string-regexp": { + "version": "4.0.0" + }, + "globals": { + "version": "13.24.0", + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0" + }, + "js-yaml": { + "version": "4.1.0", + "requires": { + "argparse": "^2.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.20.2" + } + } + }, + "eslint-config-react-app": { + "version": "7.0.1", + "requires": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.3", + "@rushstack/eslint-patch": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^5.5.0", + "@typescript-eslint/parser": "^5.5.0", + "babel-preset-react-app": "^10.0.1", + "confusing-browser-globals": "^1.0.11", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jest": "^25.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.0.1" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.9", + "requires": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-module-utils": { + "version": "2.8.0", + "requires": { + "debug": "^3.2.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-flowtype": { + "version": "8.0.3", + "requires": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + } + }, + "eslint-plugin-import": { + "version": "2.29.1", + "requires": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "requires": { + "ms": "^2.1.1" + } + }, + "doctrine": { + "version": "2.1.0", + "requires": { + "esutils": "^2.0.2" + } + }, + "semver": { + "version": "6.3.1" + } + } + }, + "eslint-plugin-jest": { + "version": "25.7.0", + "requires": { + "@typescript-eslint/experimental-utils": "^5.0.0" + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.8.0", + "requires": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" + } + }, + "eslint-plugin-react": { + "version": "7.33.2", + "requires": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "2.0.0-next.5", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "semver": { + "version": "6.3.1" + } + } + }, + "eslint-plugin-react-hooks": { + "version": "4.6.0", + "requires": {} + }, + "eslint-plugin-testing-library": { + "version": "5.11.1", + "requires": { + "@typescript-eslint/utils": "^5.58.0" + } + }, + "eslint-scope": { + "version": "7.2.2", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.3" + }, + "eslint-webpack-plugin": { + "version": "3.2.0", + "requires": { + "@types/eslint": "^7.29.0 || ^8.4.1", + "jest-worker": "^28.0.2", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "has-flag": { + "version": "4.0.0" + }, + "jest-worker": { + "version": "28.1.3", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "json-schema-traverse": { + "version": "1.0.0" + }, + "schema-utils": { + "version": "4.2.0", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + }, + "supports-color": { + "version": "8.1.1", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "espree": { + "version": "9.6.1", + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, + "esprima": { + "version": "4.0.1" + }, + "esquery": { + "version": "1.5.0", + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0" + }, + "estree-walker": { + "version": "1.0.1" + }, + "esutils": { + "version": "2.0.3" + }, + "etag": { + "version": "1.8.1" + }, + "eventemitter3": { + "version": "4.0.7" + }, + "events": { + "version": "3.3.0" + }, + "execa": { + "version": "5.1.1", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "exit": { + "version": "0.1.2" + }, + "expect": { + "version": "27.5.1", + "requires": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + } + }, + "express": { + "version": "4.18.2", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "fast-deep-equal": { + "version": "3.1.3" + }, + "fast-glob": { + "version": "3.3.2", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0" + }, + "fast-levenshtein": { + "version": "2.0.6" + }, + "fastq": { + "version": "1.16.0", + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.2", + "requires": { + "bser": "2.1.1" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-loader": { + "version": "6.2.0", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + } + }, + "filelist": { + "version": "1.0.4", + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "filesize": { + "version": "8.0.7" + }, + "fill-range": { + "version": "7.0.1", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "5.0.0", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.2.0", + "requires": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.9" + }, + "follow-redirects": { + "version": "1.15.5" + }, + "for-each": { + "version": "0.3.3", + "requires": { + "is-callable": "^1.1.3" + } + }, + "foreground-child": { + "version": "3.1.1", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0" + } + } + }, + "fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "requires": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "cosmiconfig": { + "version": "6.0.0", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "fs-extra": { + "version": "9.1.0", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0" + }, + "schema-utils": { + "version": "2.7.0", + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + }, + "tapable": { + "version": "1.1.3" + } + } + }, + "form-data": { + "version": "3.0.1", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0" + }, + "fraction.js": { + "version": "4.3.7" + }, + "fresh": { + "version": "0.5.2" + }, + "fs-extra": { + "version": "10.1.0", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-monkey": { + "version": "1.0.5" + }, + "fs.realpath": { + "version": "1.0.0" + }, + "function-bind": { + "version": "1.1.2" + }, + "function.prototype.name": { + "version": "1.1.6", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + } + }, + "functions-have-names": { + "version": "1.2.3" + }, + "gensync": { + "version": "1.0.0-beta.2" + }, + "get-caller-file": { + "version": "2.0.5" + }, + "get-intrinsic": { + "version": "1.2.2", + "requires": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2" + }, + "get-package-type": { + "version": "0.1.0" + }, + "get-stream": { + "version": "6.0.1" + }, + "get-symbol-description": { + "version": "1.0.0", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "glob": { + "version": "7.2.3", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "requires": { + "is-glob": "^4.0.3" + } + }, + "glob-to-regexp": { + "version": "0.4.1" + }, + "global-modules": { + "version": "2.0.0", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "globals": { + "version": "11.12.0" + }, + "globalthis": { + "version": "1.0.3", + "requires": { + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "11.1.0", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "gopd": { + "version": "1.0.1", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.11" + }, + "graphemer": { + "version": "1.4.0" + }, + "gzip-size": { + "version": "6.0.0", + "requires": { + "duplexer": "^0.1.2" + } + }, + "handle-thing": { + "version": "2.0.1" + }, + "harmony-reflect": { + "version": "1.6.2" + }, + "has-bigints": { + "version": "1.0.2" + }, + "has-flag": { + "version": "3.0.0" + }, + "has-property-descriptors": { + "version": "1.0.1", + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1" + }, + "has-symbols": { + "version": "1.0.3" + }, + "has-tostringtag": { + "version": "1.0.0", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hasown": { + "version": "2.0.0", + "requires": { + "function-bind": "^1.1.2" + } + }, + "he": { + "version": "1.2.0" + }, + "hoopy": { + "version": "0.1.4" + }, + "hpack.js": { + "version": "2.1.6", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0" + }, + "readable-stream": { + "version": "2.3.8", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2" + }, + "string_decoder": { + "version": "1.1.1", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-entities": { + "version": "2.4.0" + }, + "html-escaper": { + "version": "2.0.2" + }, + "html-minifier-terser": { + "version": "6.1.0", + "requires": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + } + }, + "html-webpack-plugin": { + "version": "5.6.0", + "requires": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + } + }, + "htmlparser2": { + "version": "6.1.0", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-deceiver": { + "version": "1.2.7" + }, + "http-errors": { + "version": "2.0.0", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.8" + }, + "http-proxy": { + "version": "1.18.1", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0" + }, + "iconv-lite": { + "version": "0.6.3", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "icss-utils": { + "version": "5.1.0", + "requires": {} + }, + "idb": { + "version": "7.1.1" + }, + "identity-obj-proxy": { + "version": "3.0.0", + "requires": { + "harmony-reflect": "^1.4.6" + } + }, + "ignore": { + "version": "5.3.0" + }, + "immer": { + "version": "9.0.21" + }, + "import-fresh": { + "version": "3.3.0", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0" + } + } + }, + "import-local": { + "version": "3.1.0", + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4" + }, + "indent-string": { + "version": "4.0.0" + }, + "inflight": { + "version": "1.0.6", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4" + }, + "ini": { + "version": "1.3.8" + }, + "internal-slot": { + "version": "1.0.6", + "requires": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + } + }, + "ipaddr.js": { + "version": "2.1.0" + }, + "is-arguments": { + "version": "1.1.1", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-array-buffer": { + "version": "3.0.2", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, + "is-arrayish": { + "version": "0.2.1" + }, + "is-async-function": { + "version": "2.0.0", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-bigint": { + "version": "1.0.4", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7" + }, + "is-core-module": { + "version": "2.13.1", + "requires": { + "hasown": "^2.0.0" + } + }, + "is-date-object": { + "version": "1.0.5", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "2.2.1" + }, + "is-extglob": { + "version": "2.1.1" + }, + "is-finalizationregistry": { + "version": "1.0.2", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0" + }, + "is-generator-fn": { + "version": "2.1.0" + }, + "is-generator-function": { + "version": "1.0.10", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.3", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-map": { + "version": "2.0.2" + }, + "is-module": { + "version": "1.0.0" + }, + "is-negative-zero": { + "version": "2.0.2" + }, + "is-number": { + "version": "7.0.0" + }, + "is-number-object": { + "version": "1.0.7", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-obj": { + "version": "1.0.1" + }, + "is-path-inside": { + "version": "3.0.3" + }, + "is-plain-obj": { + "version": "3.0.0" + }, + "is-potential-custom-element-name": { + "version": "1.0.1" + }, + "is-regex": { + "version": "1.1.4", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-regexp": { + "version": "1.0.0" + }, + "is-root": { + "version": "2.1.0" + }, + "is-set": { + "version": "2.0.2" + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "2.0.1" + }, + "is-string": { + "version": "1.0.7", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.12", + "requires": { + "which-typed-array": "^1.1.11" + } + }, + "is-typedarray": { + "version": "1.0.0" + }, + "is-weakmap": { + "version": "2.0.1" + }, + "is-weakref": { + "version": "1.0.2", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-weakset": { + "version": "2.0.2", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "is-wsl": { + "version": "2.2.0", + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "2.0.5" + }, + "isexe": { + "version": "2.0.0" + }, + "istanbul-lib-coverage": { + "version": "3.2.2" + }, + "istanbul-lib-instrument": { + "version": "5.2.1", + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1" + } + } + }, + "istanbul-lib-report": { + "version": "3.0.1", + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0" + }, + "make-dir": { + "version": "4.0.0", + "requires": { + "semver": "^7.5.3" + } + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1" + } + } + }, + "istanbul-reports": { + "version": "3.1.6", + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "iterator.prototype": { + "version": "1.1.2", + "requires": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "jackspeak": { + "version": "2.3.6", + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "jake": { + "version": "10.8.7", + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest": { + "version": "27.5.1", + "requires": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + } + }, + "jest-changed-files": { + "version": "27.5.1", + "requires": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + } + }, + "jest-circus": { + "version": "27.5.1", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-cli": { + "version": "27.5.1", + "requires": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-config": { + "version": "27.5.1", + "requires": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-diff": { + "version": "27.5.1", + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-docblock": { + "version": "27.5.1", + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "27.5.1", + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-environment-jsdom": { + "version": "27.5.1", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + } + }, + "jest-environment-node": { + "version": "27.5.1", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "jest-get-type": { + "version": "27.5.1" + }, + "jest-haste-map": { + "version": "27.5.1", + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "27.5.1", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-leak-detector": { + "version": "27.5.1", + "requires": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-matcher-utils": { + "version": "27.5.1", + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-message-util": { + "version": "27.5.1", + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-mock": { + "version": "27.5.1", + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.3", + "requires": {} + }, + "jest-regex-util": { + "version": "27.5.1" + }, + "jest-resolve": { + "version": "27.5.1", + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "27.5.1", + "requires": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + } + }, + "jest-runner": { + "version": "27.5.1", + "requires": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-runtime": { + "version": "27.5.1", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-serializer": { + "version": "27.5.1", + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + } + }, + "jest-snapshot": { + "version": "27.5.1", + "requires": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-util": { + "version": "27.5.1", + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-validate": { + "version": "27.5.1", + "requires": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-watch-typeahead": { + "version": "1.1.0", + "requires": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^28.0.0", + "jest-watcher": "^28.0.0", + "slash": "^4.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "@jest/console": { + "version": "28.1.3", + "requires": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0" + } + } + }, + "@jest/test-result": { + "version": "28.1.3", + "requires": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/types": { + "version": "28.1.3", + "requires": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "17.0.32", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "emittery": { + "version": "0.10.2" + }, + "has-flag": { + "version": "4.0.0" + }, + "jest-message-util": { + "version": "28.1.3", + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "slash": { + "version": "3.0.0" + } + } + }, + "jest-regex-util": { + "version": "28.0.2" + }, + "jest-util": { + "version": "28.1.3", + "requires": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-watcher": { + "version": "28.1.3", + "requires": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + }, + "dependencies": { + "string-length": { + "version": "4.0.2", + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "pretty-format": { + "version": "28.1.3", + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0" + } + } + }, + "react-is": { + "version": "18.2.0" + }, + "slash": { + "version": "4.0.0" + }, + "string-length": { + "version": "5.0.1", + "requires": { + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "char-regex": { + "version": "2.0.1" + } + } + }, + "strip-ansi": { + "version": "7.1.0", + "requires": { + "ansi-regex": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1" + } + } + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-watcher": { + "version": "27.5.1", + "requires": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-worker": { + "version": "27.5.1", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "8.1.1", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jiti": { + "version": "1.21.0" + }, + "js-tokens": { + "version": "4.0.0" + }, + "js-yaml": { + "version": "3.14.1", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsdom": { + "version": "16.7.0", + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + } + }, + "jsesc": { + "version": "2.5.2" + }, + "json-buffer": { + "version": "3.0.1" + }, + "json-parse-even-better-errors": { + "version": "2.3.1" + }, + "json-schema": { + "version": "0.4.0" + }, + "json-schema-traverse": { + "version": "0.4.1" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1" + }, + "json5": { + "version": "2.2.3" + }, + "jsonfile": { + "version": "6.1.0", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsonpath": { + "version": "1.1.1", + "requires": { + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" + }, + "dependencies": { + "esprima": { + "version": "1.2.2" + } + } + }, + "jsonpointer": { + "version": "5.0.1" + }, + "jsrsasign": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", + "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==" + }, + "jsx-ast-utils": { + "version": "3.3.5", + "requires": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + } + }, + "jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + }, + "keyv": { + "version": "4.5.4", + "requires": { + "json-buffer": "3.0.1" + } + }, + "kind-of": { + "version": "6.0.3" + }, + "kleur": { + "version": "3.0.3" + }, + "klona": { + "version": "2.0.6" + }, + "language-subtag-registry": { + "version": "0.3.22" + }, + "language-tags": { + "version": "1.0.9", + "requires": { + "language-subtag-registry": "^0.3.20" + } + }, + "launch-editor": { + "version": "2.6.1", + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "leven": { + "version": "3.1.0" + }, + "levn": { + "version": "0.4.1", + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lilconfig": { + "version": "2.1.0" + }, + "lines-and-columns": { + "version": "1.2.4" + }, + "loader-runner": { + "version": "4.3.0" + }, + "loader-utils": { + "version": "2.0.4", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "6.0.0", + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21" + }, + "lodash.debounce": { + "version": "4.0.8" + }, + "lodash.memoize": { + "version": "4.1.2" + }, + "lodash.merge": { + "version": "4.6.2" + }, + "lodash.sortby": { + "version": "4.7.0" + }, + "lodash.uniq": { + "version": "4.5.0" + }, + "loose-envify": { + "version": "1.4.0", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "requires": { + "tslib": "^2.0.3" + } + }, + "lru-cache": { + "version": "5.1.1", + "requires": { + "yallist": "^3.0.2" + } + }, + "lz-string": { + "version": "1.5.0" + }, + "magic-string": { + "version": "0.25.9", + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "3.1.0", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1" + } + } + }, + "makeerror": { + "version": "1.0.12", + "requires": { + "tmpl": "1.0.5" + } + }, + "mdn-data": { + "version": "2.0.4" + }, + "media-typer": { + "version": "0.3.0" + }, + "memfs": { + "version": "3.5.3", + "requires": { + "fs-monkey": "^1.0.4" + } + }, + "merge-descriptors": { + "version": "1.0.1" + }, + "merge-stream": { + "version": "2.0.0" + }, + "merge2": { + "version": "1.4.1" + }, + "methods": { + "version": "1.1.2" + }, + "micromatch": { + "version": "4.0.5", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0" + }, + "mime-db": { + "version": "1.52.0" + }, + "mime-types": { + "version": "2.1.35", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0" + }, + "min-indent": { + "version": "1.0.1" + }, + "mini-css-extract-plugin": { + "version": "2.7.7", + "requires": { + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0" + }, + "schema-utils": { + "version": "4.2.0", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1" + }, + "minimatch": { + "version": "3.1.2", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8" + }, + "minipass": { + "version": "7.0.4" + }, + "mkdirp": { + "version": "0.5.6", + "requires": { + "minimist": "^1.2.6" + } + }, + "ms": { + "version": "2.1.2" + }, + "multicast-dns": { + "version": "7.2.5", + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "mz": { + "version": "2.7.0", + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nanoid": { + "version": "3.3.7" + }, + "natural-compare": { + "version": "1.4.0" + }, + "natural-compare-lite": { + "version": "1.4.0" + }, + "negotiator": { + "version": "0.6.3" + }, + "neo-async": { + "version": "2.6.2" + }, + "no-case": { + "version": "3.0.4", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-forge": { + "version": "1.3.1" + }, + "node-int64": { + "version": "0.4.0" + }, + "node-releases": { + "version": "2.0.14" + }, + "normalize-path": { + "version": "3.0.0" + }, + "normalize-range": { + "version": "0.1.2" + }, + "normalize-url": { + "version": "6.1.0" + }, + "npm-run-path": { + "version": "4.0.1", + "requires": { + "path-key": "^3.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "requires": { + "boolbase": "^1.0.0" + } + }, + "nwsapi": { + "version": "2.2.7" + }, + "object-assign": { + "version": "4.1.1" + }, + "object-hash": { + "version": "3.0.0" + }, + "object-inspect": { + "version": "1.13.1" + }, + "object-is": { + "version": "1.1.5", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1" + }, + "object.assign": { + "version": "4.1.5", + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.7", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "object.fromentries": { + "version": "2.0.7", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.7", + "requires": { + "array.prototype.reduce": "^1.0.6", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "safe-array-concat": "^1.0.0" + } + }, + "object.groupby": { + "version": "1.0.1", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "object.hasown": { + "version": "1.1.3", + "requires": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "object.values": { + "version": "1.1.7", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "obuf": { + "version": "1.1.2" + }, + "on-finished": { + "version": "2.4.1", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2" + }, + "once": { + "version": "1.4.0", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.2", + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "optionator": { + "version": "0.9.3", + "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + } + }, + "p-limit": { + "version": "3.1.0", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-retry": { + "version": "4.6.2", + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + } + }, + "p-try": { + "version": "2.2.0" + }, + "param-case": { + "version": "3.0.4", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "6.0.1" + }, + "parseurl": { + "version": "1.3.3" + }, + "pascal-case": { + "version": "3.1.2", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-exists": { + "version": "4.0.0" + }, + "path-is-absolute": { + "version": "1.0.1" + }, + "path-key": { + "version": "3.1.1" + }, + "path-parse": { + "version": "1.0.7" + }, + "path-scurry": { + "version": "1.10.1", + "requires": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.2.0" + } + } + }, + "path-to-regexp": { + "version": "0.1.7" + }, + "path-type": { + "version": "4.0.0" + }, + "performance-now": { + "version": "2.1.0" + }, + "picocolors": { + "version": "1.0.0" + }, + "picomatch": { + "version": "2.3.1" + }, + "pify": { + "version": "2.3.0" + }, + "pirates": { + "version": "4.0.6" + }, + "pkg-dir": { + "version": "4.2.0", + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "pkg-up": { + "version": "3.1.0", + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0" + } + } + }, + "postcss": { + "version": "8.4.33", + "requires": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-attribute-case-insensitive": { + "version": "5.0.2", + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-browser-comments": { + "version": "4.0.0", + "requires": {} + }, + "postcss-calc": { + "version": "8.2.4", + "requires": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-clamp": { + "version": "4.1.0", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-functional-notation": { + "version": "4.2.4", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-hex-alpha": { + "version": "8.0.4", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-rebeccapurple": { + "version": "7.1.1", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "5.3.1", + "requires": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "5.1.3", + "requires": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-media": { + "version": "8.0.2", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-properties": { + "version": "12.1.11", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-selectors": { + "version": "6.0.3", + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-dir-pseudo-class": { + "version": "6.0.5", + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-discard-comments": { + "version": "5.1.2", + "requires": {} + }, + "postcss-discard-duplicates": { + "version": "5.1.0", + "requires": {} + }, + "postcss-discard-empty": { + "version": "5.1.1", + "requires": {} + }, + "postcss-discard-overridden": { + "version": "5.1.0", + "requires": {} + }, + "postcss-double-position-gradients": { + "version": "3.1.2", + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-env-function": { + "version": "4.0.6", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-flexbugs-fixes": { + "version": "5.0.2", + "requires": {} + }, + "postcss-focus-visible": { + "version": "6.0.4", + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-focus-within": { + "version": "5.0.4", + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-font-variant": { + "version": "5.0.0", + "requires": {} + }, + "postcss-gap-properties": { + "version": "3.0.5", + "requires": {} + }, + "postcss-image-set-function": { + "version": "4.0.7", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-import": { + "version": "15.1.0", + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-initial": { + "version": "4.0.1", + "requires": {} + }, + "postcss-js": { + "version": "4.0.1", + "requires": { + "camelcase-css": "^2.0.1" + } + }, + "postcss-lab-function": { + "version": "4.2.1", + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-load-config": { + "version": "4.0.2", + "requires": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "dependencies": { + "lilconfig": { + "version": "3.0.0" + }, + "yaml": { + "version": "2.3.4" + } + } + }, + "postcss-loader": { + "version": "6.2.1", + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + } + }, + "postcss-logical": { + "version": "5.0.4", + "requires": {} + }, + "postcss-media-minmax": { + "version": "5.0.0", + "requires": {} + }, + "postcss-merge-longhand": { + "version": "5.1.7", + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + } + }, + "postcss-merge-rules": { + "version": "5.1.4", + "requires": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-minify-font-values": { + "version": "5.1.0", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "5.1.1", + "requires": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "5.1.4", + "requires": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "5.2.1", + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.4", + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.1.1", + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-nested": { + "version": "6.0.1", + "requires": { + "postcss-selector-parser": "^6.0.11" + } + }, + "postcss-nesting": { + "version": "10.2.0", + "requires": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-normalize": { + "version": "10.0.1", + "requires": { + "@csstools/normalize.css": "*", + "postcss-browser-comments": "^4", + "sanitize.css": "*" + } + }, + "postcss-normalize-charset": { + "version": "5.1.0", + "requires": {} + }, + "postcss-normalize-display-values": { + "version": "5.1.0", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "5.1.1", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.1.1", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "5.1.0", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.1.0", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.1.1", + "requires": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "5.1.0", + "requires": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.1.1", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-opacity-percentage": { + "version": "1.1.3", + "requires": {} + }, + "postcss-ordered-values": { + "version": "5.1.3", + "requires": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-overflow-shorthand": { + "version": "3.0.4", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-page-break": { + "version": "3.0.4", + "requires": {} + }, + "postcss-place": { + "version": "7.0.5", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-preset-env": { + "version": "7.8.3", + "requires": { + "@csstools/postcss-cascade-layers": "^1.1.1", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.13", + "browserslist": "^4.21.4", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^7.1.0", + "postcss-attribute-case-insensitive": "^5.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.4", + "postcss-color-hex-alpha": "^8.0.4", + "postcss-color-rebeccapurple": "^7.1.1", + "postcss-custom-media": "^8.0.2", + "postcss-custom-properties": "^12.1.10", + "postcss-custom-selectors": "^6.0.3", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.2.1", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.2.0", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.4", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-pseudo-class-any-link": { + "version": "7.1.6", + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-reduce-initial": { + "version": "5.1.2", + "requires": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.1.0", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-replace-overflow-wrap": { + "version": "4.0.0", + "requires": {} + }, + "postcss-selector-not": { + "version": "6.0.1", + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-selector-parser": { + "version": "6.0.15", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "5.1.0", + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "dependencies": { + "commander": { + "version": "7.2.0" + }, + "css-tree": { + "version": "1.1.3", + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14" + }, + "source-map": { + "version": "0.6.1" + }, + "svgo": { + "version": "2.8.0", + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + } + } + } + }, + "postcss-unique-selectors": { + "version": "5.1.1", + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-value-parser": { + "version": "4.2.0" + }, + "prelude-ls": { + "version": "1.2.1" + }, + "pretty-bytes": { + "version": "5.6.0" + }, + "pretty-error": { + "version": "4.0.0", + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "pretty-format": { + "version": "27.5.1", + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0" + } + } + }, + "process-nextick-args": { + "version": "2.0.1" + }, + "promise": { + "version": "8.3.0", + "requires": { + "asap": "~2.0.6" + } + }, + "prompts": { + "version": "2.4.2", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "prop-types": { + "version": "15.8.1", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1" + } + } + }, + "proxy-addr": { + "version": "2.0.7", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1" + } + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "psl": { + "version": "1.9.0" + }, + "punycode": { + "version": "2.3.1" + }, + "q": { + "version": "1.5.1" + }, + "qs": { + "version": "6.11.0", + "requires": { + "side-channel": "^1.0.4" + } + }, + "querystringify": { + "version": "2.2.0" + }, + "queue-microtask": { + "version": "1.2.3" + }, + "raf": { + "version": "3.4.1", + "requires": { + "performance-now": "^2.1.0" + } + }, + "randombytes": { + "version": "2.1.0", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1" + }, + "raw-body": { + "version": "2.5.1", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2" + }, + "iconv-lite": { + "version": "0.4.24", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "react": { + "version": "18.2.0", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-app-polyfill": { + "version": "3.0.0", + "requires": { + "core-js": "^3.19.2", + "object-assign": "^4.1.1", + "promise": "^8.1.0", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.9", + "whatwg-fetch": "^3.6.2" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.11" + } + } + }, + "react-dev-utils": { + "version": "12.0.1", + "requires": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "escape-string-regexp": { + "version": "4.0.0" + }, + "has-flag": { + "version": "4.0.0" + }, + "loader-utils": { + "version": "3.2.1" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "react-dom": { + "version": "18.2.0", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, + "react-error-overlay": { + "version": "6.0.11" + }, + "react-is": { + "version": "17.0.2" + }, + "react-refresh": { + "version": "0.11.0" + }, + "react-scripts": { + "version": "5.0.1", + "requires": { + "@babel/core": "^7.16.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", + "@svgr/webpack": "^5.5.0", + "babel-jest": "^27.4.2", + "babel-loader": "^8.2.3", + "babel-plugin-named-asset-import": "^0.3.8", + "babel-preset-react-app": "^10.0.1", + "bfj": "^7.0.2", + "browserslist": "^4.18.1", + "camelcase": "^6.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "css-loader": "^6.5.1", + "css-minimizer-webpack-plugin": "^3.2.0", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "eslint": "^8.3.0", + "eslint-config-react-app": "^7.0.1", + "eslint-webpack-plugin": "^3.1.1", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "fsevents": "^2.3.2", + "html-webpack-plugin": "^5.5.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^27.4.3", + "jest-resolve": "^27.4.2", + "jest-watch-typeahead": "^1.0.0", + "mini-css-extract-plugin": "^2.4.5", + "postcss": "^8.4.4", + "postcss-flexbugs-fixes": "^5.0.2", + "postcss-loader": "^6.2.1", + "postcss-normalize": "^10.0.1", + "postcss-preset-env": "^7.0.1", + "prompts": "^2.4.2", + "react-app-polyfill": "^3.0.0", + "react-dev-utils": "^12.0.1", + "react-refresh": "^0.11.0", + "resolve": "^1.20.0", + "resolve-url-loader": "^4.0.0", + "sass-loader": "^12.3.0", + "semver": "^7.3.5", + "source-map-loader": "^3.0.0", + "style-loader": "^3.3.1", + "tailwindcss": "^3.0.2", + "terser-webpack-plugin": "^5.2.5", + "webpack": "^5.64.4", + "webpack-dev-server": "^4.6.0", + "webpack-manifest-plugin": "^4.0.2", + "workbox-webpack-plugin": "^6.4.1" + } + }, + "read-cache": { + "version": "1.0.0", + "requires": { + "pify": "^2.3.0" + } + }, + "readable-stream": { + "version": "3.6.2", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "requires": { + "picomatch": "^2.2.1" + } + }, + "recursive-readdir": { + "version": "2.2.3", + "requires": { + "minimatch": "^3.0.5" + } + }, + "redent": { + "version": "3.0.0", + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "reflect.getprototypeof": { + "version": "1.0.4", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + } + }, + "regenerate": { + "version": "1.4.2" + }, + "regenerate-unicode-properties": { + "version": "10.1.1", + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.14.1" + }, + "regenerator-transform": { + "version": "0.15.2", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-parser": { + "version": "2.3.0" + }, + "regexp.prototype.flags": { + "version": "1.5.1", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + } + }, + "regexpu-core": { + "version": "5.3.2", + "requires": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsparser": { + "version": "0.9.1", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0" + } + } + }, + "relateurl": { + "version": "0.2.7" + }, + "renderkid": { + "version": "3.0.0", + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "require-directory": { + "version": "2.1.1" + }, + "require-from-string": { + "version": "2.0.2" + }, + "requires-port": { + "version": "1.0.0" + }, + "resolve": { + "version": "1.22.8", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0" + }, + "resolve-url-loader": { + "version": "4.0.0", + "requires": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" + }, + "dependencies": { + "convert-source-map": { + "version": "1.9.0" + }, + "picocolors": { + "version": "0.2.1" + }, + "postcss": { + "version": "7.0.39", + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1" + } + } + }, + "resolve.exports": { + "version": "1.1.1" + }, + "retry": { + "version": "0.13.1" + }, + "reusify": { + "version": "1.0.4" + }, + "rimraf": { + "version": "3.0.2", + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.79.1", + "requires": { + "fsevents": "~2.3.2" + } + }, + "rollup-plugin-terser": { + "version": "7.0.2", + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0" + }, + "jest-worker": { + "version": "26.6.2", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "serialize-javascript": { + "version": "4.0.0", + "requires": { + "randombytes": "^2.1.0" + } + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "run-parallel": { + "version": "1.2.0", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-array-concat": { + "version": "1.1.0", + "requires": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + } + }, + "safe-buffer": { + "version": "5.2.1" + }, + "safe-regex-test": { + "version": "1.0.2", + "requires": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2" + }, + "sanitize.css": { + "version": "13.0.0" + }, + "sass-loader": { + "version": "12.6.0", + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "sax": { + "version": "1.2.4" + }, + "saxes": { + "version": "5.0.1", + "requires": { + "xmlchars": "^2.2.0" + } + }, + "scheduler": { + "version": "0.23.0", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "schema-utils": { + "version": "3.3.0", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0" + }, + "selfsigned": { + "version": "2.4.1", + "requires": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + } + }, + "semver": { + "version": "7.5.4", + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0" + } + } + }, + "send": { + "version": "0.18.0", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0" + } + } + }, + "ms": { + "version": "2.1.3" + } + } + }, + "serialize-javascript": { + "version": "6.0.2", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2" + }, + "http-errors": { + "version": "1.6.3", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3" + }, + "ms": { + "version": "2.0.0" + }, + "setprototypeof": { + "version": "1.1.0" + }, + "statuses": { + "version": "1.5.0" + } + } + }, + "serve-static": { + "version": "1.15.0", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-function-length": { + "version": "1.2.0", + "requires": { + "define-data-property": "^1.1.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + } + }, + "set-function-name": { + "version": "2.0.1", + "requires": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + } + }, + "setprototypeof": { + "version": "1.2.0" + }, + "shebang-command": { + "version": "2.0.0", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0" + }, + "shell-quote": { + "version": "1.8.1" + }, + "shortid": { + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz", + "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==", + "requires": { + "nanoid": "^2.1.0" + }, + "dependencies": { + "nanoid": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz", + "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==" + } + } + }, + "side-channel": { + "version": "1.0.4", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7" + }, + "sisteransi": { + "version": "1.0.5" + }, + "slash": { + "version": "3.0.0" + }, + "sockjs": { + "version": "0.3.24", + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "source-list-map": { + "version": "2.0.1" + }, + "source-map": { + "version": "0.7.4" + }, + "source-map-js": { + "version": "1.0.2" + }, + "source-map-loader": { + "version": "3.0.2", + "requires": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + } + }, + "source-map-support": { + "version": "0.5.21", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1" + } + } + }, + "sourcemap-codec": { + "version": "1.4.8" + }, + "spdy": { + "version": "4.0.2", + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "sprintf-js": { + "version": "1.0.3" + }, + "stable": { + "version": "0.1.8" + }, + "stack-utils": { + "version": "2.0.6", + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0" + } + } + }, + "stackframe": { + "version": "1.3.4" + }, + "static-eval": { + "version": "2.0.2", + "requires": { + "escodegen": "^1.8.1" + }, + "dependencies": { + "escodegen": { + "version": "1.14.3", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "estraverse": { + "version": "4.3.0" + }, + "levn": { + "version": "0.3.0", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2" + }, + "source-map": { + "version": "0.6.1", + "optional": true + }, + "type-check": { + "version": "0.3.2", + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "statuses": { + "version": "2.0.1" + }, + "stop-iteration-iterator": { + "version": "1.0.0", + "requires": { + "internal-slot": "^1.0.4" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-length": { + "version": "4.0.2", + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-natural-compare": { + "version": "3.0.1" + }, + "string-width": { + "version": "4.2.3", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0" + } + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0" + } + } + }, + "string.prototype.matchall": { + "version": "4.0.10", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + } + }, + "string.prototype.trim": { + "version": "1.2.8", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.7", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "string.prototype.trimstart": { + "version": "1.0.7", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "stringify-object": { + "version": "3.3.0", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "4.0.0" + }, + "strip-comments": { + "version": "2.0.1" + }, + "strip-final-newline": { + "version": "2.0.0" + }, + "strip-indent": { + "version": "3.0.0", + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1" + }, + "style-loader": { + "version": "3.3.4", + "requires": {} + }, + "stylehacks": { + "version": "5.1.1", + "requires": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + } + }, + "sucrase": { + "version": "3.35.0", + "requires": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "commander": { + "version": "4.1.1" + }, + "glob": { + "version": "10.3.10", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "minimatch": { + "version": "9.0.3", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.3.0", + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0" + }, + "svg-parser": { + "version": "2.0.4" + }, + "svgo": { + "version": "1.3.2", + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "dependencies": { + "css-select": { + "version": "2.1.0", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-what": { + "version": "3.4.2" + }, + "dom-serializer": { + "version": "0.2.2", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "domutils": { + "version": "1.7.0", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + }, + "dependencies": { + "domelementtype": { + "version": "1.3.1" + } + } + }, + "nth-check": { + "version": "1.0.2", + "requires": { + "boolbase": "~1.0.0" + } + } + } + }, + "symbol-tree": { + "version": "3.2.4" + }, + "tailwindcss": { + "version": "3.4.1", + "requires": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.19.1", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + } + }, + "tapable": { + "version": "2.2.1" + }, + "temp-dir": { + "version": "2.0.0" + }, + "tempy": { + "version": "0.6.0", + "requires": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "dependencies": { + "type-fest": { + "version": "0.16.0" + } + } + }, + "terminal-link": { + "version": "2.1.1", + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "terser": { + "version": "5.27.0", + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3" + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.10", + "requires": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + } + }, + "test-exclude": { + "version": "6.0.0", + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0" + }, + "thenify": { + "version": "3.3.1", + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "throat": { + "version": "6.0.2" + }, + "thunky": { + "version": "1.1.0" + }, + "tmpl": { + "version": "1.0.5" + }, + "to-fast-properties": { + "version": "2.0.0" + }, + "to-regex-range": { + "version": "5.0.1", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1" + }, + "tough-cookie": { + "version": "4.1.3", + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "dependencies": { + "universalify": { + "version": "0.2.0" + } + } + }, + "tr46": { + "version": "2.1.0", + "requires": { + "punycode": "^2.1.1" + } + }, + "tryer": { + "version": "1.0.1" + }, + "ts-interface-checker": { + "version": "0.1.13" + }, + "tsconfig-paths": { + "version": "3.15.0", + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "requires": { + "minimist": "^1.2.0" + } + }, + "strip-bom": { + "version": "3.0.0" + } + } + }, + "tslib": { + "version": "2.6.2" + }, + "tsutils": { + "version": "3.21.0", + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1" + } + } + }, + "type-check": { + "version": "0.4.0", + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8" + }, + "type-fest": { + "version": "0.21.3" + }, + "type-is": { + "version": "1.6.18", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-array-buffer": { + "version": "1.0.0", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-length": { + "version": "1.0.0", + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-offset": { + "version": "1.0.0", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-length": { + "version": "1.0.4", + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.9.5" + }, + "ua-parser-js": { + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==" + }, + "unbox-primitive": { + "version": "1.0.2", + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "underscore": { + "version": "1.12.1" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0" + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0" + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0" + }, + "unique-string": { + "version": "2.0.0", + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.1" + }, + "unpipe": { + "version": "1.0.0" + }, + "unquote": { + "version": "1.1.1" + }, + "upath": { + "version": "1.2.0" + }, + "update-browserslist-db": { + "version": "1.0.13", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse": { + "version": "1.5.10", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2" + }, + "util.promisify": { + "version": "1.0.1", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utila": { + "version": "0.4.0" + }, + "utils-merge": { + "version": "1.0.1" + }, + "uuid": { + "version": "8.3.2" + }, + "v8-to-istanbul": { + "version": "8.1.1", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "convert-source-map": { + "version": "1.9.0" + } + } + }, + "vary": { + "version": "1.1.2" + }, + "w3c-hr-time": { + "version": "1.0.2", + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.8", + "requires": { + "makeerror": "1.0.12" + } + }, + "watchpack": { + "version": "2.4.0", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "web-vitals": { + "version": "2.1.4" + }, + "webidl-conversions": { + "version": "6.1.0" + }, + "webpack": { + "version": "5.90.0", + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0" + } + } + }, + "webpack-dev-middleware": { + "version": "5.3.3", + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0" + }, + "schema-utils": { + "version": "4.2.0", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.15.1", + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0" + }, + "schema-utils": { + "version": "4.2.0", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + }, + "ws": { + "version": "8.16.0", + "requires": {} + } + } + }, + "webpack-manifest-plugin": { + "version": "4.1.1", + "requires": { + "tapable": "^2.0.0", + "webpack-sources": "^2.2.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1" + }, + "webpack-sources": { + "version": "2.3.1", + "requires": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + } + } + } + }, + "webpack-sources": { + "version": "3.2.3" + }, + "websocket-driver": { + "version": "0.7.4", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4" + }, + "whatwg-encoding": { + "version": "1.0.5", + "requires": { + "iconv-lite": "0.4.24" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "whatwg-fetch": { + "version": "3.6.20" + }, + "whatwg-mimetype": { + "version": "2.3.0" + }, + "whatwg-url": { + "version": "8.7.0", + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, + "which": { + "version": "2.0.2", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-builtin-type": { + "version": "1.1.3", + "requires": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + } + }, + "which-collection": { + "version": "1.0.1", + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.13", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "word-wrap": { + "version": "1.2.5" + }, + "workbox-background-sync": { + "version": "6.6.0", + "requires": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "workbox-broadcast-update": { + "version": "6.6.0", + "requires": { + "workbox-core": "6.6.0" + } + }, + "workbox-build": { + "version": "6.6.0", + "requires": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.6.0", + "workbox-broadcast-update": "6.6.0", + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-google-analytics": "6.6.0", + "workbox-navigation-preload": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-range-requests": "6.6.0", + "workbox-recipes": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0", + "workbox-streams": "6.6.0", + "workbox-sw": "6.6.0", + "workbox-window": "6.6.0" + }, + "dependencies": { + "@apideck/better-ajv-errors": { + "version": "0.3.6", + "requires": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + } + }, + "ajv": { + "version": "8.12.0", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "fs-extra": { + "version": "9.1.0", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "json-schema-traverse": { + "version": "1.0.0" + }, + "source-map": { + "version": "0.8.0-beta.0", + "requires": { + "whatwg-url": "^7.0.0" + } + }, + "tr46": { + "version": "1.0.1", + "requires": { + "punycode": "^2.1.0" + } + }, + "webidl-conversions": { + "version": "4.0.2" + }, + "whatwg-url": { + "version": "7.1.0", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "workbox-cacheable-response": { + "version": "6.6.0", + "requires": { + "workbox-core": "6.6.0" + } + }, + "workbox-core": { + "version": "6.6.0" + }, + "workbox-expiration": { + "version": "6.6.0", + "requires": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "workbox-google-analytics": { + "version": "6.6.0", + "requires": { + "workbox-background-sync": "6.6.0", + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "workbox-navigation-preload": { + "version": "6.6.0", + "requires": { + "workbox-core": "6.6.0" + } + }, + "workbox-precaching": { + "version": "6.6.0", + "requires": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "workbox-range-requests": { + "version": "6.6.0", + "requires": { + "workbox-core": "6.6.0" + } + }, + "workbox-recipes": { + "version": "6.6.0", + "requires": { + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "workbox-routing": { + "version": "6.6.0", + "requires": { + "workbox-core": "6.6.0" + } + }, + "workbox-strategies": { + "version": "6.6.0", + "requires": { + "workbox-core": "6.6.0" + } + }, + "workbox-streams": { + "version": "6.6.0", + "requires": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0" + } + }, + "workbox-sw": { + "version": "6.6.0" + }, + "workbox-webpack-plugin": { + "version": "6.6.0", + "requires": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1" + }, + "webpack-sources": { + "version": "1.4.3", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } + } + }, + "workbox-window": { + "version": "6.6.0", + "requires": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.6.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + } + } + }, + "wrappy": { + "version": "1.0.2" + }, + "write-file-atomic": { + "version": "3.0.3", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.5.9", + "requires": {} + }, + "xml-name-validator": { + "version": "3.0.0" + }, + "xmlchars": { + "version": "2.2.0" + }, + "y18n": { + "version": "5.0.8" + }, + "yallist": { + "version": "3.1.1" + }, + "yaml": { + "version": "1.10.2" + }, + "yargs": { + "version": "16.2.0", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9" + }, + "yocto-queue": { + "version": "0.1.0" + } + } +} diff --git a/browser-client-react/package.json b/browser-client-react/package.json new file mode 100644 index 0000000..dbb7076 --- /dev/null +++ b/browser-client-react/package.json @@ -0,0 +1,45 @@ +{ + "name": "browser-client-react", + "version": "3.2.0", + "private": true, + "dependencies": { + "@interopio/browser": "^3.2.0", + "@interopio/react-hooks": "^3.2.0", + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^13.5.0", + "@types/jest": "^27.5.2", + "@types/node": "^16.18.76", + "@types/react": "^18.2.48", + "@types/react-dom": "^18.2.18", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-scripts": "5.0.1", + "typescript": "^4.9.5", + "web-vitals": "^2.1.4" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/browser-client-react/public/favicon.ico b/browser-client-react/public/favicon.ico new file mode 100644 index 0000000..3e9951d Binary files /dev/null and b/browser-client-react/public/favicon.ico differ diff --git a/browser-client-react/public/index.html b/browser-client-react/public/index.html new file mode 100644 index 0000000..c8d6fd9 --- /dev/null +++ b/browser-client-react/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + io.Connect Browser React App + + + +
+ + + diff --git a/browser-client-react/public/manifest.json b/browser-client-react/public/manifest.json new file mode 100644 index 0000000..1f2f141 --- /dev/null +++ b/browser-client-react/public/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/browser-client-react/public/robots.txt b/browser-client-react/public/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/browser-client-react/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/browser-client-react/src/App.css b/browser-client-react/src/App.css new file mode 100644 index 0000000..74b5e05 --- /dev/null +++ b/browser-client-react/src/App.css @@ -0,0 +1,38 @@ +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/browser-client-react/src/App.test.tsx b/browser-client-react/src/App.test.tsx new file mode 100644 index 0000000..2a68616 --- /dev/null +++ b/browser-client-react/src/App.test.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import App from './App'; + +test('renders learn react link', () => { + render(); + const linkElement = screen.getByText(/learn react/i); + expect(linkElement).toBeInTheDocument(); +}); diff --git a/browser-client-react/src/App.tsx b/browser-client-react/src/App.tsx new file mode 100644 index 0000000..2560eb2 --- /dev/null +++ b/browser-client-react/src/App.tsx @@ -0,0 +1,32 @@ +import React, { useContext } from 'react'; +import logo from './connect-browser.svg'; +import './App.css'; +import { IOConnectContext } from '@interopio/react-hooks'; + +function App() { + + const io = useContext(IOConnectContext); + + (window as any).io = io; + + return ( +
+
+ logo +

+ Edit src/App.tsx and save to reload. +

+ + Learn io.Connect Browser + +
+
+ ); +} + +export default App; diff --git a/browser-client-react/src/connect-browser.svg b/browser-client-react/src/connect-browser.svg new file mode 100644 index 0000000..e8b7e2c --- /dev/null +++ b/browser-client-react/src/connect-browser.svg @@ -0,0 +1,26 @@ + + + + + + + \ No newline at end of file diff --git a/browser-client-react/src/index.css b/browser-client-react/src/index.css new file mode 100644 index 0000000..ec2585e --- /dev/null +++ b/browser-client-react/src/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/browser-client-react/src/index.tsx b/browser-client-react/src/index.tsx new file mode 100644 index 0000000..96b7fbb --- /dev/null +++ b/browser-client-react/src/index.tsx @@ -0,0 +1,28 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import './index.css'; +import App from './App'; +import reportWebVitals from './reportWebVitals'; +import { IOConnectProvider } from '@interopio/react-hooks'; +import IOBrowser from "@interopio/browser"; + +const root = ReactDOM.createRoot( + document.getElementById('root') as HTMLElement +); +root.render( + + + + + +); + +// If you want to start measuring performance in your app, pass a function +// to log results (for example: reportWebVitals(console.log)) +// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals +reportWebVitals(); diff --git a/browser-client-react/src/logo.svg b/browser-client-react/src/logo.svg new file mode 100644 index 0000000..9dfc1c0 --- /dev/null +++ b/browser-client-react/src/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/browser-client-react/src/react-app-env.d.ts b/browser-client-react/src/react-app-env.d.ts new file mode 100644 index 0000000..6431bc5 --- /dev/null +++ b/browser-client-react/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/browser-client-react/src/reportWebVitals.ts b/browser-client-react/src/reportWebVitals.ts new file mode 100644 index 0000000..49a2a16 --- /dev/null +++ b/browser-client-react/src/reportWebVitals.ts @@ -0,0 +1,15 @@ +import { ReportHandler } from 'web-vitals'; + +const reportWebVitals = (onPerfEntry?: ReportHandler) => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { + getCLS(onPerfEntry); + getFID(onPerfEntry); + getFCP(onPerfEntry); + getLCP(onPerfEntry); + getTTFB(onPerfEntry); + }); + } +}; + +export default reportWebVitals; diff --git a/browser-client-react/src/setupTests.ts b/browser-client-react/src/setupTests.ts new file mode 100644 index 0000000..8f2609b --- /dev/null +++ b/browser-client-react/src/setupTests.ts @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom'; diff --git a/browser-client-react/tsconfig.json b/browser-client-react/tsconfig.json new file mode 100644 index 0000000..a273b0c --- /dev/null +++ b/browser-client-react/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": [ + "src" + ] +} diff --git a/browser-client-vanilla-js/.gitignore b/browser-client-vanilla-js/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/browser-client-vanilla-js/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/browser-client-vanilla-js/package-lock.json b/browser-client-vanilla-js/package-lock.json new file mode 100644 index 0000000..dd58d95 --- /dev/null +++ b/browser-client-vanilla-js/package-lock.json @@ -0,0 +1,881 @@ +{ + "name": "browser-client-vanilla-js", + "version": "3.2.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "browser-client-vanilla-js", + "version": "3.2.0", + "license": "ISC", + "devDependencies": { + "http-server": "^14.1.1" + } + }, + "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/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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/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/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/corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "dev": true, + "dependencies": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + }, + "bin": { + "http-server": "bin/http-server" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "dev": true + }, + "node_modules/set-function-length": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", + "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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/union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dev": true, + "dependencies": { + "qs": "^6.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + } + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "dev": true + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "dev": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "dev": true, + "requires": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "requires": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + } + }, + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "dev": true + }, + "set-function-length": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", + "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "dev": true, + "requires": { + "define-data-property": "^1.1.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + } + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dev": true, + "requires": { + "qs": "^6.4.0" + } + }, + "url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "requires": { + "iconv-lite": "0.6.3" + } + } + } +} diff --git a/browser-client-vanilla-js/package.json b/browser-client-vanilla-js/package.json new file mode 100644 index 0000000..4b052ef --- /dev/null +++ b/browser-client-vanilla-js/package.json @@ -0,0 +1,15 @@ +{ + "name": "browser-client-vanilla-js", + "version": "3.2.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "http-server -p 4243 -c-1 ./public" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "http-server": "^14.1.1" + } +} diff --git a/browser-client-vanilla-js/public/index.html b/browser-client-vanilla-js/public/index.html new file mode 100644 index 0000000..94b2c7b --- /dev/null +++ b/browser-client-vanilla-js/public/index.html @@ -0,0 +1,14 @@ + + + + + + + IO.Connect Browser Client + + +
+

IO.Connect Browser Client

+
+ + \ No newline at end of file diff --git a/browser-client-vanilla-js/public/index.js b/browser-client-vanilla-js/public/index.js new file mode 100644 index 0000000..a252733 --- /dev/null +++ b/browser-client-vanilla-js/public/index.js @@ -0,0 +1,20 @@ +import IOBrowser from "./libs/browser.es.js"; + +document.getElementById("connection-status").innerHTML = "IO.Connect Browser Client Not Connected"; + +try { + const io = await IOBrowser(); + + document.getElementById("connection-status").innerHTML = "IO.Connect Browser Platform Connected"; + + document.getElementById("connection-status").style.color = "green"; + + document.getElementById("api-version").innerHTML = `io.Connect Browser API ${io.version}`; + + window.io = io; +} catch (error) { + console.error(error); + document.getElementById("connection-status").innerHTML = error.message; + + document.getElementById("connection-status").style.color = "red"; +} diff --git a/browser-client-vanilla-js/public/libs/.gitkeep b/browser-client-vanilla-js/public/libs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/browser-client-vanilla-js/public/libs/browser.es.js b/browser-client-vanilla-js/public/libs/browser.es.js new file mode 100644 index 0000000..15e6bd3 --- /dev/null +++ b/browser-client-vanilla-js/public/libs/browser.es.js @@ -0,0 +1,16068 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +function __rest$2(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +function __awaiter$1(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +const defaultConfig = { + logger: "info", + gateway: { webPlatform: {} }, + libraries: [], + exposeAPI: true +}; +const parseConfig = (config) => { + var _a, _b, _c; + const isPlatformInternal = !!((_b = (_a = config === null || config === void 0 ? void 0 : config.gateway) === null || _a === void 0 ? void 0 : _a.webPlatform) === null || _b === void 0 ? void 0 : _b.port); + const combined = Object.assign({}, defaultConfig, config, { isPlatformInternal }); + if (combined.systemLogger) { + combined.logger = (_c = combined.systemLogger.level) !== null && _c !== void 0 ? _c : "info"; + } + return combined; +}; + +const checkSingleton = () => { + const ioConnectBrowserNamespace = window.glue42core || window.iobrowser; + if (ioConnectBrowserNamespace && ioConnectBrowserNamespace.webStarted) { + throw new Error("IoConnect Browser has already been started for this application."); + } + if (!ioConnectBrowserNamespace) { + window.iobrowser = { webStarted: true }; + return; + } + ioConnectBrowserNamespace.webStarted = true; +}; + +const enterprise = (config) => { + var _a, _b, _c; + const enterpriseConfig = { + windows: true, + layouts: "full", + appManager: "full", + channels: true, + libraries: (_a = config === null || config === void 0 ? void 0 : config.libraries) !== null && _a !== void 0 ? _a : [], + logger: (_c = (_b = config === null || config === void 0 ? void 0 : config.systemLogger) === null || _b === void 0 ? void 0 : _b.level) !== null && _c !== void 0 ? _c : "warn" + }; + const injectedFactory = window.IODesktop || window.Glue; + return injectedFactory(enterpriseConfig); +}; + +/** + * Wraps values in an `Ok` type. + * + * Example: `ok(5) // => {ok: true, result: 5}` + */ +var ok$1 = function (result) { return ({ ok: true, result: result }); }; +/** + * Wraps errors in an `Err` type. + * + * Example: `err('on fire') // => {ok: false, error: 'on fire'}` + */ +var err$1 = function (error) { return ({ ok: false, error: error }); }; +/** + * Create a `Promise` that either resolves with the result of `Ok` or rejects + * with the error of `Err`. + */ +var asPromise$1 = function (r) { + return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error); +}; +/** + * Unwraps a `Result` and returns either the result of an `Ok`, or + * `defaultValue`. + * + * Example: + * ``` + * Result.withDefault(5, number().run(json)) + * ``` + * + * It would be nice if `Decoder` had an instance method that mirrored this + * function. Such a method would look something like this: + * ``` + * class Decoder { + * runWithDefault = (defaultValue: A, json: any): A => + * Result.withDefault(defaultValue, this.run(json)); + * } + * + * number().runWithDefault(5, json) + * ``` + * Unfortunately, the type of `defaultValue: A` on the method causes issues + * with type inference on the `object` decoder in some situations. While these + * inference issues can be solved by providing the optional type argument for + * `object`s, the extra trouble and confusion doesn't seem worth it. + */ +var withDefault$1 = function (defaultValue, r) { + return r.ok === true ? r.result : defaultValue; +}; +/** + * Return the successful result, or throw an error. + */ +var withException$1 = function (r) { + if (r.ok === true) { + return r.result; + } + else { + throw r.error; + } +}; +/** + * Apply `f` to the result of an `Ok`, or pass the error through. + */ +var map$1 = function (f, r) { + return r.ok === true ? ok$1(f(r.result)) : r; +}; +/** + * Apply `f` to the result of two `Ok`s, or pass an error through. If both + * `Result`s are errors then the first one is returned. + */ +var map2$1 = function (f, ar, br) { + return ar.ok === false ? ar : + br.ok === false ? br : + ok$1(f(ar.result, br.result)); +}; +/** + * Apply `f` to the error of an `Err`, or pass the success through. + */ +var mapError$1 = function (f, r) { + return r.ok === true ? r : err$1(f(r.error)); +}; +/** + * Chain together a sequence of computations that may fail, similar to a + * `Promise`. If the first computation fails then the error will propagate + * through. If it succeeds, then `f` will be applied to the value, returning a + * new `Result`. + */ +var andThen$1 = function (f, r) { + return r.ok === true ? f(r.result) : r; +}; + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise */ + + + +var __assign$2 = function() { + __assign$2 = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign$2.apply(this, arguments); +}; + +function __rest$1(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +function isEqual$1(a, b) { + if (a === b) { + return true; + } + if (a === null && b === null) { + return true; + } + if (typeof (a) !== typeof (b)) { + return false; + } + if (typeof (a) === 'object') { + // Array + if (Array.isArray(a)) { + if (!Array.isArray(b)) { + return false; + } + if (a.length !== b.length) { + return false; + } + for (var i = 0; i < a.length; i++) { + if (!isEqual$1(a[i], b[i])) { + return false; + } + } + return true; + } + // Hash table + var keys = Object.keys(a); + if (keys.length !== Object.keys(b).length) { + return false; + } + for (var i = 0; i < keys.length; i++) { + if (!b.hasOwnProperty(keys[i])) { + return false; + } + if (!isEqual$1(a[keys[i]], b[keys[i]])) { + return false; + } + } + return true; + } +} +/* + * Helpers + */ +var isJsonArray$1 = function (json) { return Array.isArray(json); }; +var isJsonObject$1 = function (json) { + return typeof json === 'object' && json !== null && !isJsonArray$1(json); +}; +var typeString$1 = function (json) { + switch (typeof json) { + case 'string': + return 'a string'; + case 'number': + return 'a number'; + case 'boolean': + return 'a boolean'; + case 'undefined': + return 'undefined'; + case 'object': + if (json instanceof Array) { + return 'an array'; + } + else if (json === null) { + return 'null'; + } + else { + return 'an object'; + } + default: + return JSON.stringify(json); + } +}; +var expectedGot$1 = function (expected, got) { + return "expected " + expected + ", got " + typeString$1(got); +}; +var printPath$1 = function (paths) { + return paths.map(function (path) { return (typeof path === 'string' ? "." + path : "[" + path + "]"); }).join(''); +}; +var prependAt$1 = function (newAt, _a) { + var at = _a.at, rest = __rest$1(_a, ["at"]); + return (__assign$2({ at: newAt + (at || '') }, rest)); +}; +/** + * Decoders transform json objects with unknown structure into known and + * verified forms. You can create objects of type `Decoder` with either the + * primitive decoder functions, such as `boolean()` and `string()`, or by + * applying higher-order decoders to the primitives, such as `array(boolean())` + * or `dict(string())`. + * + * Each of the decoder functions are available both as a static method on + * `Decoder` and as a function alias -- for example the string decoder is + * defined at `Decoder.string()`, but is also aliased to `string()`. Using the + * function aliases exported with the library is recommended. + * + * `Decoder` exposes a number of 'run' methods, which all decode json in the + * same way, but communicate success and failure in different ways. The `map` + * and `andThen` methods modify decoders without having to call a 'run' method. + * + * Alternatively, the main decoder `run()` method returns an object of type + * `Result`. This library provides a number of helper + * functions for dealing with the `Result` type, so you can do all the same + * things with a `Result` as with the decoder methods. + */ +var Decoder$1 = /** @class */ (function () { + /** + * The Decoder class constructor is kept private to separate the internal + * `decode` function from the external `run` function. The distinction + * between the two functions is that `decode` returns a + * `Partial` on failure, which contains an unfinished error + * report. When `run` is called on a decoder, the relevant series of `decode` + * calls is made, and then on failure the resulting `Partial` + * is turned into a `DecoderError` by filling in the missing information. + * + * While hiding the constructor may seem restrictive, leveraging the + * provided decoder combinators and helper functions such as + * `andThen` and `map` should be enough to build specialized decoders as + * needed. + */ + function Decoder(decode) { + var _this = this; + this.decode = decode; + /** + * Run the decoder and return a `Result` with either the decoded value or a + * `DecoderError` containing the json input, the location of the error, and + * the error message. + * + * Examples: + * ``` + * number().run(12) + * // => {ok: true, result: 12} + * + * string().run(9001) + * // => + * // { + * // ok: false, + * // error: { + * // kind: 'DecoderError', + * // input: 9001, + * // at: 'input', + * // message: 'expected a string, got 9001' + * // } + * // } + * ``` + */ + this.run = function (json) { + return mapError$1(function (error) { return ({ + kind: 'DecoderError', + input: json, + at: 'input' + (error.at || ''), + message: error.message || '' + }); }, _this.decode(json)); + }; + /** + * Run the decoder as a `Promise`. + */ + this.runPromise = function (json) { return asPromise$1(_this.run(json)); }; + /** + * Run the decoder and return the value on success, or throw an exception + * with a formatted error string. + */ + this.runWithException = function (json) { return withException$1(_this.run(json)); }; + /** + * Construct a new decoder that applies a transformation to the decoded + * result. If the decoder succeeds then `f` will be applied to the value. If + * it fails the error will propagated through. + * + * Example: + * ``` + * number().map(x => x * 5).run(10) + * // => {ok: true, result: 50} + * ``` + */ + this.map = function (f) { + return new Decoder(function (json) { return map$1(f, _this.decode(json)); }); + }; + /** + * Chain together a sequence of decoders. The first decoder will run, and + * then the function will determine what decoder to run second. If the result + * of the first decoder succeeds then `f` will be applied to the decoded + * value. If it fails the error will propagate through. + * + * This is a very powerful method -- it can act as both the `map` and `where` + * methods, can improve error messages for edge cases, and can be used to + * make a decoder for custom types. + * + * Example of adding an error message: + * ``` + * const versionDecoder = valueAt(['version'], number()); + * const infoDecoder3 = object({a: boolean()}); + * + * const decoder = versionDecoder.andThen(version => { + * switch (version) { + * case 3: + * return infoDecoder3; + * default: + * return fail(`Unable to decode info, version ${version} is not supported.`); + * } + * }); + * + * decoder.run({version: 3, a: true}) + * // => {ok: true, result: {a: true}} + * + * decoder.run({version: 5, x: 'abc'}) + * // => + * // { + * // ok: false, + * // error: {... message: 'Unable to decode info, version 5 is not supported.'} + * // } + * ``` + * + * Example of decoding a custom type: + * ``` + * // nominal type for arrays with a length of at least one + * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void }; + * + * const nonEmptyArrayDecoder = (values: Decoder): Decoder> => + * array(values).andThen(arr => + * arr.length > 0 + * ? succeed(createNonEmptyArray(arr)) + * : fail(`expected a non-empty array, got an empty array`) + * ); + * ``` + */ + this.andThen = function (f) { + return new Decoder(function (json) { + return andThen$1(function (value) { return f(value).decode(json); }, _this.decode(json)); + }); + }; + /** + * Add constraints to a decoder _without_ changing the resulting type. The + * `test` argument is a predicate function which returns true for valid + * inputs. When `test` fails on an input, the decoder fails with the given + * `errorMessage`. + * + * ``` + * const chars = (length: number): Decoder => + * string().where( + * (s: string) => s.length === length, + * `expected a string of length ${length}` + * ); + * + * chars(5).run('12345') + * // => {ok: true, result: '12345'} + * + * chars(2).run('HELLO') + * // => {ok: false, error: {... message: 'expected a string of length 2'}} + * + * chars(12).run(true) + * // => {ok: false, error: {... message: 'expected a string, got a boolean'}} + * ``` + */ + this.where = function (test, errorMessage) { + return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); }); + }; + } + /** + * Decoder primitive that validates strings, and fails on all other input. + */ + Decoder.string = function () { + return new Decoder(function (json) { + return typeof json === 'string' + ? ok$1(json) + : err$1({ message: expectedGot$1('a string', json) }); + }); + }; + /** + * Decoder primitive that validates numbers, and fails on all other input. + */ + Decoder.number = function () { + return new Decoder(function (json) { + return typeof json === 'number' + ? ok$1(json) + : err$1({ message: expectedGot$1('a number', json) }); + }); + }; + /** + * Decoder primitive that validates booleans, and fails on all other input. + */ + Decoder.boolean = function () { + return new Decoder(function (json) { + return typeof json === 'boolean' + ? ok$1(json) + : err$1({ message: expectedGot$1('a boolean', json) }); + }); + }; + Decoder.constant = function (value) { + return new Decoder(function (json) { + return isEqual$1(json, value) + ? ok$1(value) + : err$1({ message: "expected " + JSON.stringify(value) + ", got " + JSON.stringify(json) }); + }); + }; + Decoder.object = function (decoders) { + return new Decoder(function (json) { + if (isJsonObject$1(json) && decoders) { + var obj = {}; + for (var key in decoders) { + if (decoders.hasOwnProperty(key)) { + var r = decoders[key].decode(json[key]); + if (r.ok === true) { + // tslint:disable-next-line:strict-type-predicates + if (r.result !== undefined) { + obj[key] = r.result; + } + } + else if (json[key] === undefined) { + return err$1({ message: "the key '" + key + "' is required but was not present" }); + } + else { + return err$1(prependAt$1("." + key, r.error)); + } + } + } + return ok$1(obj); + } + else if (isJsonObject$1(json)) { + return ok$1(json); + } + else { + return err$1({ message: expectedGot$1('an object', json) }); + } + }); + }; + Decoder.array = function (decoder) { + return new Decoder(function (json) { + if (isJsonArray$1(json) && decoder) { + var decodeValue_1 = function (v, i) { + return mapError$1(function (err$$1) { return prependAt$1("[" + i + "]", err$$1); }, decoder.decode(v)); + }; + return json.reduce(function (acc, v, i) { + return map2$1(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i)); + }, ok$1([])); + } + else if (isJsonArray$1(json)) { + return ok$1(json); + } + else { + return err$1({ message: expectedGot$1('an array', json) }); + } + }); + }; + Decoder.tuple = function (decoders) { + return new Decoder(function (json) { + if (isJsonArray$1(json)) { + if (json.length !== decoders.length) { + return err$1({ + message: "expected a tuple of length " + decoders.length + ", got one of length " + json.length + }); + } + var result = []; + for (var i = 0; i < decoders.length; i++) { + var nth = decoders[i].decode(json[i]); + if (nth.ok) { + result[i] = nth.result; + } + else { + return err$1(prependAt$1("[" + i + "]", nth.error)); + } + } + return ok$1(result); + } + else { + return err$1({ message: expectedGot$1("a tuple of length " + decoders.length, json) }); + } + }); + }; + Decoder.union = function (ad, bd) { + var decoders = []; + for (var _i = 2; _i < arguments.length; _i++) { + decoders[_i - 2] = arguments[_i]; + } + return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders)); + }; + Decoder.intersection = function (ad, bd) { + var ds = []; + for (var _i = 2; _i < arguments.length; _i++) { + ds[_i - 2] = arguments[_i]; + } + return new Decoder(function (json) { + return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2$1(Object.assign, acc, decoder.decode(json)); }, ok$1({})); + }); + }; + /** + * Escape hatch to bypass validation. Always succeeds and types the result as + * `any`. Useful for defining decoders incrementally, particularly for + * complex objects. + * + * Example: + * ``` + * interface User { + * name: string; + * complexUserData: ComplexType; + * } + * + * const userDecoder: Decoder = object({ + * name: string(), + * complexUserData: anyJson() + * }); + * ``` + */ + Decoder.anyJson = function () { return new Decoder(function (json) { return ok$1(json); }); }; + /** + * Decoder identity function which always succeeds and types the result as + * `unknown`. + */ + Decoder.unknownJson = function () { + return new Decoder(function (json) { return ok$1(json); }); + }; + /** + * Decoder for json objects where the keys are unknown strings, but the values + * should all be of the same type. + * + * Example: + * ``` + * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37}); + * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}} + * ``` + */ + Decoder.dict = function (decoder) { + return new Decoder(function (json) { + if (isJsonObject$1(json)) { + var obj = {}; + for (var key in json) { + if (json.hasOwnProperty(key)) { + var r = decoder.decode(json[key]); + if (r.ok === true) { + obj[key] = r.result; + } + else { + return err$1(prependAt$1("." + key, r.error)); + } + } + } + return ok$1(obj); + } + else { + return err$1({ message: expectedGot$1('an object', json) }); + } + }); + }; + /** + * Decoder for values that may be `undefined`. This is primarily helpful for + * decoding interfaces with optional fields. + * + * Example: + * ``` + * interface User { + * id: number; + * isOwner?: boolean; + * } + * + * const decoder: Decoder = object({ + * id: number(), + * isOwner: optional(boolean()) + * }); + * ``` + */ + Decoder.optional = function (decoder) { + return new Decoder(function (json) { return (json === undefined || json === null ? ok$1(undefined) : decoder.decode(json)); }); + }; + /** + * Decoder that attempts to run each decoder in `decoders` and either succeeds + * with the first successful decoder, or fails after all decoders have failed. + * + * Note that `oneOf` expects the decoders to all have the same return type, + * while `union` creates a decoder for the union type of all the input + * decoders. + * + * Examples: + * ``` + * oneOf(string(), number().map(String)) + * oneOf(constant('start'), constant('stop'), succeed('unknown')) + * ``` + */ + Decoder.oneOf = function () { + var decoders = []; + for (var _i = 0; _i < arguments.length; _i++) { + decoders[_i] = arguments[_i]; + } + return new Decoder(function (json) { + var errors = []; + for (var i = 0; i < decoders.length; i++) { + var r = decoders[i].decode(json); + if (r.ok === true) { + return r; + } + else { + errors[i] = r.error; + } + } + var errorsList = errors + .map(function (error) { return "at error" + (error.at || '') + ": " + error.message; }) + .join('", "'); + return err$1({ + message: "expected a value matching one of the decoders, got the errors [\"" + errorsList + "\"]" + }); + }); + }; + /** + * Decoder that always succeeds with either the decoded value, or a fallback + * default value. + */ + Decoder.withDefault = function (defaultValue, decoder) { + return new Decoder(function (json) { + return ok$1(withDefault$1(defaultValue, decoder.decode(json))); + }); + }; + /** + * Decoder that pulls a specific field out of a json structure, instead of + * decoding and returning the full structure. The `paths` array describes the + * object keys and array indices to traverse, so that values can be pulled out + * of a nested structure. + * + * Example: + * ``` + * const decoder = valueAt(['a', 'b', 0], string()); + * + * decoder.run({a: {b: ['surprise!']}}) + * // => {ok: true, result: 'surprise!'} + * + * decoder.run({a: {x: 'cats'}}) + * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}} + * ``` + * + * Note that the `decoder` is ran on the value found at the last key in the + * path, even if the last key is not found. This allows the `optional` + * decoder to succeed when appropriate. + * ``` + * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string())); + * + * optionalDecoder.run({a: {b: {c: 'surprise!'}}}) + * // => {ok: true, result: 'surprise!'} + * + * optionalDecoder.run({a: {b: 'cats'}}) + * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got "cats"'} + * + * optionalDecoder.run({a: {b: {z: 1}}}) + * // => {ok: true, result: undefined} + * ``` + */ + Decoder.valueAt = function (paths, decoder) { + return new Decoder(function (json) { + var jsonAtPath = json; + for (var i = 0; i < paths.length; i++) { + if (jsonAtPath === undefined) { + return err$1({ + at: printPath$1(paths.slice(0, i + 1)), + message: 'path does not exist' + }); + } + else if (typeof paths[i] === 'string' && !isJsonObject$1(jsonAtPath)) { + return err$1({ + at: printPath$1(paths.slice(0, i + 1)), + message: expectedGot$1('an object', jsonAtPath) + }); + } + else if (typeof paths[i] === 'number' && !isJsonArray$1(jsonAtPath)) { + return err$1({ + at: printPath$1(paths.slice(0, i + 1)), + message: expectedGot$1('an array', jsonAtPath) + }); + } + else { + jsonAtPath = jsonAtPath[paths[i]]; + } + } + return mapError$1(function (error) { + return jsonAtPath === undefined + ? { at: printPath$1(paths), message: 'path does not exist' } + : prependAt$1(printPath$1(paths), error); + }, decoder.decode(jsonAtPath)); + }); + }; + /** + * Decoder that ignores the input json and always succeeds with `fixedValue`. + */ + Decoder.succeed = function (fixedValue) { + return new Decoder(function (json) { return ok$1(fixedValue); }); + }; + /** + * Decoder that ignores the input json and always fails with `errorMessage`. + */ + Decoder.fail = function (errorMessage) { + return new Decoder(function (json) { return err$1({ message: errorMessage }); }); + }; + /** + * Decoder that allows for validating recursive data structures. Unlike with + * functions, decoders assigned to variables can't reference themselves + * before they are fully defined. We can avoid prematurely referencing the + * decoder by wrapping it in a function that won't be called until use, at + * which point the decoder has been defined. + * + * Example: + * ``` + * interface Comment { + * msg: string; + * replies: Comment[]; + * } + * + * const decoder: Decoder = object({ + * msg: string(), + * replies: lazy(() => array(decoder)) + * }); + * ``` + */ + Decoder.lazy = function (mkDecoder) { + return new Decoder(function (json) { return mkDecoder().decode(json); }); + }; + return Decoder; +}()); + +/* tslint:disable:variable-name */ +/** See `Decoder.string` */ +var string$1 = Decoder$1.string; +/** See `Decoder.number` */ +var number$1 = Decoder$1.number; +/** See `Decoder.boolean` */ +var boolean$1 = Decoder$1.boolean; +/** See `Decoder.anyJson` */ +var anyJson$1 = Decoder$1.anyJson; +/** See `Decoder.unknownJson` */ +Decoder$1.unknownJson; +/** See `Decoder.constant` */ +var constant$1 = Decoder$1.constant; +/** See `Decoder.object` */ +var object$1 = Decoder$1.object; +/** See `Decoder.array` */ +var array$1 = Decoder$1.array; +/** See `Decoder.tuple` */ +Decoder$1.tuple; +/** See `Decoder.dict` */ +Decoder$1.dict; +/** See `Decoder.optional` */ +var optional$1 = Decoder$1.optional; +/** See `Decoder.oneOf` */ +var oneOf$1 = Decoder$1.oneOf; +/** See `Decoder.union` */ +Decoder$1.union; +/** See `Decoder.intersection` */ +Decoder$1.intersection; +/** See `Decoder.withDefault` */ +Decoder$1.withDefault; +/** See `Decoder.valueAt` */ +Decoder$1.valueAt; +/** See `Decoder.succeed` */ +Decoder$1.succeed; +/** See `Decoder.fail` */ +Decoder$1.fail; +/** See `Decoder.lazy` */ +var lazy = Decoder$1.lazy; + +const connectBrowserAppProps = ["name", "title", "version", "customProperties", "icon", "caption", "type"]; +const fdc3v2AppProps = ["appId", "name", "type", "details", "version", "title", "tooltip", "lang", "description", "categories", "icons", "screenshots", "contactEmail", "moreInfo", "publisher", "customConfig", "hostManifests", "interop", "localizedVersions"]; + +/** + * Wraps values in an `Ok` type. + * + * Example: `ok(5) // => {ok: true, result: 5}` + */ +var ok = function (result) { return ({ ok: true, result: result }); }; +/** + * Wraps errors in an `Err` type. + * + * Example: `err('on fire') // => {ok: false, error: 'on fire'}` + */ +var err = function (error) { return ({ ok: false, error: error }); }; +/** + * Create a `Promise` that either resolves with the result of `Ok` or rejects + * with the error of `Err`. + */ +var asPromise = function (r) { + return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error); +}; +/** + * Unwraps a `Result` and returns either the result of an `Ok`, or + * `defaultValue`. + * + * Example: + * ``` + * Result.withDefault(5, number().run(json)) + * ``` + * + * It would be nice if `Decoder` had an instance method that mirrored this + * function. Such a method would look something like this: + * ``` + * class Decoder { + * runWithDefault = (defaultValue: A, json: any): A => + * Result.withDefault(defaultValue, this.run(json)); + * } + * + * number().runWithDefault(5, json) + * ``` + * Unfortunately, the type of `defaultValue: A` on the method causes issues + * with type inference on the `object` decoder in some situations. While these + * inference issues can be solved by providing the optional type argument for + * `object`s, the extra trouble and confusion doesn't seem worth it. + */ +var withDefault = function (defaultValue, r) { + return r.ok === true ? r.result : defaultValue; +}; +/** + * Return the successful result, or throw an error. + */ +var withException = function (r) { + if (r.ok === true) { + return r.result; + } + else { + throw r.error; + } +}; +/** + * Apply `f` to the result of an `Ok`, or pass the error through. + */ +var map = function (f, r) { + return r.ok === true ? ok(f(r.result)) : r; +}; +/** + * Apply `f` to the result of two `Ok`s, or pass an error through. If both + * `Result`s are errors then the first one is returned. + */ +var map2 = function (f, ar, br) { + return ar.ok === false ? ar : + br.ok === false ? br : + ok(f(ar.result, br.result)); +}; +/** + * Apply `f` to the error of an `Err`, or pass the success through. + */ +var mapError = function (f, r) { + return r.ok === true ? r : err(f(r.error)); +}; +/** + * Chain together a sequence of computations that may fail, similar to a + * `Promise`. If the first computation fails then the error will propagate + * through. If it succeeds, then `f` will be applied to the value, returning a + * new `Result`. + */ +var andThen = function (f, r) { + return r.ok === true ? f(r.result) : r; +}; + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise */ + + + +var __assign$1 = function() { + __assign$1 = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign$1.apply(this, arguments); +}; + +function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +function isEqual(a, b) { + if (a === b) { + return true; + } + if (a === null && b === null) { + return true; + } + if (typeof (a) !== typeof (b)) { + return false; + } + if (typeof (a) === 'object') { + // Array + if (Array.isArray(a)) { + if (!Array.isArray(b)) { + return false; + } + if (a.length !== b.length) { + return false; + } + for (var i = 0; i < a.length; i++) { + if (!isEqual(a[i], b[i])) { + return false; + } + } + return true; + } + // Hash table + var keys = Object.keys(a); + if (keys.length !== Object.keys(b).length) { + return false; + } + for (var i = 0; i < keys.length; i++) { + if (!b.hasOwnProperty(keys[i])) { + return false; + } + if (!isEqual(a[keys[i]], b[keys[i]])) { + return false; + } + } + return true; + } +} +/* + * Helpers + */ +var isJsonArray = function (json) { return Array.isArray(json); }; +var isJsonObject = function (json) { + return typeof json === 'object' && json !== null && !isJsonArray(json); +}; +var typeString = function (json) { + switch (typeof json) { + case 'string': + return 'a string'; + case 'number': + return 'a number'; + case 'boolean': + return 'a boolean'; + case 'undefined': + return 'undefined'; + case 'object': + if (json instanceof Array) { + return 'an array'; + } + else if (json === null) { + return 'null'; + } + else { + return 'an object'; + } + default: + return JSON.stringify(json); + } +}; +var expectedGot = function (expected, got) { + return "expected " + expected + ", got " + typeString(got); +}; +var printPath = function (paths) { + return paths.map(function (path) { return (typeof path === 'string' ? "." + path : "[" + path + "]"); }).join(''); +}; +var prependAt = function (newAt, _a) { + var at = _a.at, rest = __rest(_a, ["at"]); + return (__assign$1({ at: newAt + (at || '') }, rest)); +}; +/** + * Decoders transform json objects with unknown structure into known and + * verified forms. You can create objects of type `Decoder` with either the + * primitive decoder functions, such as `boolean()` and `string()`, or by + * applying higher-order decoders to the primitives, such as `array(boolean())` + * or `dict(string())`. + * + * Each of the decoder functions are available both as a static method on + * `Decoder` and as a function alias -- for example the string decoder is + * defined at `Decoder.string()`, but is also aliased to `string()`. Using the + * function aliases exported with the library is recommended. + * + * `Decoder` exposes a number of 'run' methods, which all decode json in the + * same way, but communicate success and failure in different ways. The `map` + * and `andThen` methods modify decoders without having to call a 'run' method. + * + * Alternatively, the main decoder `run()` method returns an object of type + * `Result`. This library provides a number of helper + * functions for dealing with the `Result` type, so you can do all the same + * things with a `Result` as with the decoder methods. + */ +var Decoder = /** @class */ (function () { + /** + * The Decoder class constructor is kept private to separate the internal + * `decode` function from the external `run` function. The distinction + * between the two functions is that `decode` returns a + * `Partial` on failure, which contains an unfinished error + * report. When `run` is called on a decoder, the relevant series of `decode` + * calls is made, and then on failure the resulting `Partial` + * is turned into a `DecoderError` by filling in the missing information. + * + * While hiding the constructor may seem restrictive, leveraging the + * provided decoder combinators and helper functions such as + * `andThen` and `map` should be enough to build specialized decoders as + * needed. + */ + function Decoder(decode) { + var _this = this; + this.decode = decode; + /** + * Run the decoder and return a `Result` with either the decoded value or a + * `DecoderError` containing the json input, the location of the error, and + * the error message. + * + * Examples: + * ``` + * number().run(12) + * // => {ok: true, result: 12} + * + * string().run(9001) + * // => + * // { + * // ok: false, + * // error: { + * // kind: 'DecoderError', + * // input: 9001, + * // at: 'input', + * // message: 'expected a string, got 9001' + * // } + * // } + * ``` + */ + this.run = function (json) { + return mapError(function (error) { return ({ + kind: 'DecoderError', + input: json, + at: 'input' + (error.at || ''), + message: error.message || '' + }); }, _this.decode(json)); + }; + /** + * Run the decoder as a `Promise`. + */ + this.runPromise = function (json) { return asPromise(_this.run(json)); }; + /** + * Run the decoder and return the value on success, or throw an exception + * with a formatted error string. + */ + this.runWithException = function (json) { return withException(_this.run(json)); }; + /** + * Construct a new decoder that applies a transformation to the decoded + * result. If the decoder succeeds then `f` will be applied to the value. If + * it fails the error will propagated through. + * + * Example: + * ``` + * number().map(x => x * 5).run(10) + * // => {ok: true, result: 50} + * ``` + */ + this.map = function (f) { + return new Decoder(function (json) { return map(f, _this.decode(json)); }); + }; + /** + * Chain together a sequence of decoders. The first decoder will run, and + * then the function will determine what decoder to run second. If the result + * of the first decoder succeeds then `f` will be applied to the decoded + * value. If it fails the error will propagate through. + * + * This is a very powerful method -- it can act as both the `map` and `where` + * methods, can improve error messages for edge cases, and can be used to + * make a decoder for custom types. + * + * Example of adding an error message: + * ``` + * const versionDecoder = valueAt(['version'], number()); + * const infoDecoder3 = object({a: boolean()}); + * + * const decoder = versionDecoder.andThen(version => { + * switch (version) { + * case 3: + * return infoDecoder3; + * default: + * return fail(`Unable to decode info, version ${version} is not supported.`); + * } + * }); + * + * decoder.run({version: 3, a: true}) + * // => {ok: true, result: {a: true}} + * + * decoder.run({version: 5, x: 'abc'}) + * // => + * // { + * // ok: false, + * // error: {... message: 'Unable to decode info, version 5 is not supported.'} + * // } + * ``` + * + * Example of decoding a custom type: + * ``` + * // nominal type for arrays with a length of at least one + * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void }; + * + * const nonEmptyArrayDecoder = (values: Decoder): Decoder> => + * array(values).andThen(arr => + * arr.length > 0 + * ? succeed(createNonEmptyArray(arr)) + * : fail(`expected a non-empty array, got an empty array`) + * ); + * ``` + */ + this.andThen = function (f) { + return new Decoder(function (json) { + return andThen(function (value) { return f(value).decode(json); }, _this.decode(json)); + }); + }; + /** + * Add constraints to a decoder _without_ changing the resulting type. The + * `test` argument is a predicate function which returns true for valid + * inputs. When `test` fails on an input, the decoder fails with the given + * `errorMessage`. + * + * ``` + * const chars = (length: number): Decoder => + * string().where( + * (s: string) => s.length === length, + * `expected a string of length ${length}` + * ); + * + * chars(5).run('12345') + * // => {ok: true, result: '12345'} + * + * chars(2).run('HELLO') + * // => {ok: false, error: {... message: 'expected a string of length 2'}} + * + * chars(12).run(true) + * // => {ok: false, error: {... message: 'expected a string, got a boolean'}} + * ``` + */ + this.where = function (test, errorMessage) { + return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); }); + }; + } + /** + * Decoder primitive that validates strings, and fails on all other input. + */ + Decoder.string = function () { + return new Decoder(function (json) { + return typeof json === 'string' + ? ok(json) + : err({ message: expectedGot('a string', json) }); + }); + }; + /** + * Decoder primitive that validates numbers, and fails on all other input. + */ + Decoder.number = function () { + return new Decoder(function (json) { + return typeof json === 'number' + ? ok(json) + : err({ message: expectedGot('a number', json) }); + }); + }; + /** + * Decoder primitive that validates booleans, and fails on all other input. + */ + Decoder.boolean = function () { + return new Decoder(function (json) { + return typeof json === 'boolean' + ? ok(json) + : err({ message: expectedGot('a boolean', json) }); + }); + }; + Decoder.constant = function (value) { + return new Decoder(function (json) { + return isEqual(json, value) + ? ok(value) + : err({ message: "expected " + JSON.stringify(value) + ", got " + JSON.stringify(json) }); + }); + }; + Decoder.object = function (decoders) { + return new Decoder(function (json) { + if (isJsonObject(json) && decoders) { + var obj = {}; + for (var key in decoders) { + if (decoders.hasOwnProperty(key)) { + var r = decoders[key].decode(json[key]); + if (r.ok === true) { + // tslint:disable-next-line:strict-type-predicates + if (r.result !== undefined) { + obj[key] = r.result; + } + } + else if (json[key] === undefined) { + return err({ message: "the key '" + key + "' is required but was not present" }); + } + else { + return err(prependAt("." + key, r.error)); + } + } + } + return ok(obj); + } + else if (isJsonObject(json)) { + return ok(json); + } + else { + return err({ message: expectedGot('an object', json) }); + } + }); + }; + Decoder.array = function (decoder) { + return new Decoder(function (json) { + if (isJsonArray(json) && decoder) { + var decodeValue_1 = function (v, i) { + return mapError(function (err$$1) { return prependAt("[" + i + "]", err$$1); }, decoder.decode(v)); + }; + return json.reduce(function (acc, v, i) { + return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i)); + }, ok([])); + } + else if (isJsonArray(json)) { + return ok(json); + } + else { + return err({ message: expectedGot('an array', json) }); + } + }); + }; + Decoder.tuple = function (decoders) { + return new Decoder(function (json) { + if (isJsonArray(json)) { + if (json.length !== decoders.length) { + return err({ + message: "expected a tuple of length " + decoders.length + ", got one of length " + json.length + }); + } + var result = []; + for (var i = 0; i < decoders.length; i++) { + var nth = decoders[i].decode(json[i]); + if (nth.ok) { + result[i] = nth.result; + } + else { + return err(prependAt("[" + i + "]", nth.error)); + } + } + return ok(result); + } + else { + return err({ message: expectedGot("a tuple of length " + decoders.length, json) }); + } + }); + }; + Decoder.union = function (ad, bd) { + var decoders = []; + for (var _i = 2; _i < arguments.length; _i++) { + decoders[_i - 2] = arguments[_i]; + } + return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders)); + }; + Decoder.intersection = function (ad, bd) { + var ds = []; + for (var _i = 2; _i < arguments.length; _i++) { + ds[_i - 2] = arguments[_i]; + } + return new Decoder(function (json) { + return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({})); + }); + }; + /** + * Escape hatch to bypass validation. Always succeeds and types the result as + * `any`. Useful for defining decoders incrementally, particularly for + * complex objects. + * + * Example: + * ``` + * interface User { + * name: string; + * complexUserData: ComplexType; + * } + * + * const userDecoder: Decoder = object({ + * name: string(), + * complexUserData: anyJson() + * }); + * ``` + */ + Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); }; + /** + * Decoder identity function which always succeeds and types the result as + * `unknown`. + */ + Decoder.unknownJson = function () { + return new Decoder(function (json) { return ok(json); }); + }; + /** + * Decoder for json objects where the keys are unknown strings, but the values + * should all be of the same type. + * + * Example: + * ``` + * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37}); + * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}} + * ``` + */ + Decoder.dict = function (decoder) { + return new Decoder(function (json) { + if (isJsonObject(json)) { + var obj = {}; + for (var key in json) { + if (json.hasOwnProperty(key)) { + var r = decoder.decode(json[key]); + if (r.ok === true) { + obj[key] = r.result; + } + else { + return err(prependAt("." + key, r.error)); + } + } + } + return ok(obj); + } + else { + return err({ message: expectedGot('an object', json) }); + } + }); + }; + /** + * Decoder for values that may be `undefined`. This is primarily helpful for + * decoding interfaces with optional fields. + * + * Example: + * ``` + * interface User { + * id: number; + * isOwner?: boolean; + * } + * + * const decoder: Decoder = object({ + * id: number(), + * isOwner: optional(boolean()) + * }); + * ``` + */ + Decoder.optional = function (decoder) { + return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); }); + }; + /** + * Decoder that attempts to run each decoder in `decoders` and either succeeds + * with the first successful decoder, or fails after all decoders have failed. + * + * Note that `oneOf` expects the decoders to all have the same return type, + * while `union` creates a decoder for the union type of all the input + * decoders. + * + * Examples: + * ``` + * oneOf(string(), number().map(String)) + * oneOf(constant('start'), constant('stop'), succeed('unknown')) + * ``` + */ + Decoder.oneOf = function () { + var decoders = []; + for (var _i = 0; _i < arguments.length; _i++) { + decoders[_i] = arguments[_i]; + } + return new Decoder(function (json) { + var errors = []; + for (var i = 0; i < decoders.length; i++) { + var r = decoders[i].decode(json); + if (r.ok === true) { + return r; + } + else { + errors[i] = r.error; + } + } + var errorsList = errors + .map(function (error) { return "at error" + (error.at || '') + ": " + error.message; }) + .join('", "'); + return err({ + message: "expected a value matching one of the decoders, got the errors [\"" + errorsList + "\"]" + }); + }); + }; + /** + * Decoder that always succeeds with either the decoded value, or a fallback + * default value. + */ + Decoder.withDefault = function (defaultValue, decoder) { + return new Decoder(function (json) { + return ok(withDefault(defaultValue, decoder.decode(json))); + }); + }; + /** + * Decoder that pulls a specific field out of a json structure, instead of + * decoding and returning the full structure. The `paths` array describes the + * object keys and array indices to traverse, so that values can be pulled out + * of a nested structure. + * + * Example: + * ``` + * const decoder = valueAt(['a', 'b', 0], string()); + * + * decoder.run({a: {b: ['surprise!']}}) + * // => {ok: true, result: 'surprise!'} + * + * decoder.run({a: {x: 'cats'}}) + * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}} + * ``` + * + * Note that the `decoder` is ran on the value found at the last key in the + * path, even if the last key is not found. This allows the `optional` + * decoder to succeed when appropriate. + * ``` + * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string())); + * + * optionalDecoder.run({a: {b: {c: 'surprise!'}}}) + * // => {ok: true, result: 'surprise!'} + * + * optionalDecoder.run({a: {b: 'cats'}}) + * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got "cats"'} + * + * optionalDecoder.run({a: {b: {z: 1}}}) + * // => {ok: true, result: undefined} + * ``` + */ + Decoder.valueAt = function (paths, decoder) { + return new Decoder(function (json) { + var jsonAtPath = json; + for (var i = 0; i < paths.length; i++) { + if (jsonAtPath === undefined) { + return err({ + at: printPath(paths.slice(0, i + 1)), + message: 'path does not exist' + }); + } + else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) { + return err({ + at: printPath(paths.slice(0, i + 1)), + message: expectedGot('an object', jsonAtPath) + }); + } + else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) { + return err({ + at: printPath(paths.slice(0, i + 1)), + message: expectedGot('an array', jsonAtPath) + }); + } + else { + jsonAtPath = jsonAtPath[paths[i]]; + } + } + return mapError(function (error) { + return jsonAtPath === undefined + ? { at: printPath(paths), message: 'path does not exist' } + : prependAt(printPath(paths), error); + }, decoder.decode(jsonAtPath)); + }); + }; + /** + * Decoder that ignores the input json and always succeeds with `fixedValue`. + */ + Decoder.succeed = function (fixedValue) { + return new Decoder(function (json) { return ok(fixedValue); }); + }; + /** + * Decoder that ignores the input json and always fails with `errorMessage`. + */ + Decoder.fail = function (errorMessage) { + return new Decoder(function (json) { return err({ message: errorMessage }); }); + }; + /** + * Decoder that allows for validating recursive data structures. Unlike with + * functions, decoders assigned to variables can't reference themselves + * before they are fully defined. We can avoid prematurely referencing the + * decoder by wrapping it in a function that won't be called until use, at + * which point the decoder has been defined. + * + * Example: + * ``` + * interface Comment { + * msg: string; + * replies: Comment[]; + * } + * + * const decoder: Decoder = object({ + * msg: string(), + * replies: lazy(() => array(decoder)) + * }); + * ``` + */ + Decoder.lazy = function (mkDecoder) { + return new Decoder(function (json) { return mkDecoder().decode(json); }); + }; + return Decoder; +}()); + +/* tslint:disable:variable-name */ +/** See `Decoder.string` */ +var string = Decoder.string; +/** See `Decoder.number` */ +var number = Decoder.number; +/** See `Decoder.boolean` */ +var boolean = Decoder.boolean; +/** See `Decoder.anyJson` */ +var anyJson = Decoder.anyJson; +/** See `Decoder.unknownJson` */ +Decoder.unknownJson; +/** See `Decoder.constant` */ +var constant = Decoder.constant; +/** See `Decoder.object` */ +var object = Decoder.object; +/** See `Decoder.array` */ +var array = Decoder.array; +/** See `Decoder.tuple` */ +Decoder.tuple; +/** See `Decoder.dict` */ +var dict = Decoder.dict; +/** See `Decoder.optional` */ +var optional = Decoder.optional; +/** See `Decoder.oneOf` */ +var oneOf = Decoder.oneOf; +/** See `Decoder.union` */ +Decoder.union; +/** See `Decoder.intersection` */ +Decoder.intersection; +/** See `Decoder.withDefault` */ +Decoder.withDefault; +/** See `Decoder.valueAt` */ +Decoder.valueAt; +/** See `Decoder.succeed` */ +Decoder.succeed; +/** See `Decoder.fail` */ +Decoder.fail; +/** See `Decoder.lazy` */ +Decoder.lazy; + +const nonEmptyStringDecoder$1 = string().where((s) => s.length > 0, "Expected a non-empty string"); +const nonNegativeNumberDecoder$1 = number().where((num) => num >= 0, "Expected a non-negative number"); + +const intentDefinitionDecoder$1 = object({ + name: nonEmptyStringDecoder$1, + displayName: optional(string()), + contexts: optional(array(string())), + customConfig: optional(object()) +}); +const v2TypeDecoder = oneOf(constant("web"), constant("native"), constant("citrix"), constant("onlineNative"), constant("other")); +const v2DetailsDecoder = object({ + url: nonEmptyStringDecoder$1 +}); +const v2IconDecoder = object({ + src: nonEmptyStringDecoder$1, + size: optional(nonEmptyStringDecoder$1), + type: optional(nonEmptyStringDecoder$1) +}); +const v2ScreenshotDecoder = object({ + src: nonEmptyStringDecoder$1, + size: optional(nonEmptyStringDecoder$1), + type: optional(nonEmptyStringDecoder$1), + label: optional(nonEmptyStringDecoder$1) +}); +const v2ListensForIntentDecoder = object({ + contexts: array(nonEmptyStringDecoder$1), + displayName: optional(nonEmptyStringDecoder$1), + resultType: optional(nonEmptyStringDecoder$1), + customConfig: optional(anyJson()) +}); +const v2IntentsDecoder = object({ + listensFor: optional(dict(v2ListensForIntentDecoder)), + raises: optional(dict(array(nonEmptyStringDecoder$1))) +}); +const v2UserChannelDecoder = object({ + broadcasts: optional(array(nonEmptyStringDecoder$1)), + listensFor: optional(array(nonEmptyStringDecoder$1)) +}); +const v2AppChannelDecoder = object({ + name: nonEmptyStringDecoder$1, + description: optional(nonEmptyStringDecoder$1), + broadcasts: optional(array(nonEmptyStringDecoder$1)), + listensFor: optional(array(nonEmptyStringDecoder$1)) +}); +const v2InteropDecoder = object({ + intents: optional(v2IntentsDecoder), + userChannels: optional(v2UserChannelDecoder), + appChannels: optional(array(v2AppChannelDecoder)) +}); +const glue42ApplicationDetailsDecoder = object({ + url: nonEmptyStringDecoder$1, + top: optional(number()), + left: optional(number()), + width: optional(nonNegativeNumberDecoder$1), + height: optional(nonNegativeNumberDecoder$1) +}); +const glue42HostManifestsBrowserDecoder = object({ + name: optional(nonEmptyStringDecoder$1), + type: optional(nonEmptyStringDecoder$1.where((s) => s === "window", "Expected a value of window")), + title: optional(nonEmptyStringDecoder$1), + version: optional(nonEmptyStringDecoder$1), + customProperties: optional(anyJson()), + icon: optional(string()), + caption: optional(string()), + details: optional(glue42ApplicationDetailsDecoder), + intents: optional(array(intentDefinitionDecoder$1)), + hidden: optional(boolean()) +}); +const hostManifestsBrowserDecoder = oneOf(object({ + "Glue42": oneOf(glue42HostManifestsBrowserDecoder, anyJson()) +}), anyJson()); +const v1DefinitionDecoder = object({ + name: nonEmptyStringDecoder$1, + appId: nonEmptyStringDecoder$1, + title: optional(nonEmptyStringDecoder$1), + version: optional(nonEmptyStringDecoder$1), + manifest: nonEmptyStringDecoder$1, + manifestType: nonEmptyStringDecoder$1, + tooltip: optional(nonEmptyStringDecoder$1), + description: optional(nonEmptyStringDecoder$1), + contactEmail: optional(nonEmptyStringDecoder$1), + supportEmail: optional(nonEmptyStringDecoder$1), + publisher: optional(nonEmptyStringDecoder$1), + images: optional(array(object({ url: optional(nonEmptyStringDecoder$1) }))), + icons: optional(array(object({ icon: optional(nonEmptyStringDecoder$1) }))), + customConfig: anyJson(), + intents: optional(array(intentDefinitionDecoder$1)) +}); +const v2LocalizedDefinitionDecoder = object({ + appId: optional(nonEmptyStringDecoder$1), + name: optional(nonEmptyStringDecoder$1), + details: optional(v2DetailsDecoder), + version: optional(nonEmptyStringDecoder$1), + title: optional(nonEmptyStringDecoder$1), + tooltip: optional(nonEmptyStringDecoder$1), + lang: optional(nonEmptyStringDecoder$1), + description: optional(nonEmptyStringDecoder$1), + categories: optional(array(nonEmptyStringDecoder$1)), + icons: optional(array(v2IconDecoder)), + screenshots: optional(array(v2ScreenshotDecoder)), + contactEmail: optional(nonEmptyStringDecoder$1), + supportEmail: optional(nonEmptyStringDecoder$1), + moreInfo: optional(nonEmptyStringDecoder$1), + publisher: optional(nonEmptyStringDecoder$1), + customConfig: optional(array(anyJson())), + hostManifests: optional(hostManifestsBrowserDecoder), + interop: optional(v2InteropDecoder) +}); +const v2DefinitionDecoder = object({ + appId: nonEmptyStringDecoder$1, + name: nonEmptyStringDecoder$1, + type: v2TypeDecoder, + details: v2DetailsDecoder, + version: optional(nonEmptyStringDecoder$1), + title: optional(nonEmptyStringDecoder$1), + tooltip: optional(nonEmptyStringDecoder$1), + lang: optional(nonEmptyStringDecoder$1), + description: optional(nonEmptyStringDecoder$1), + categories: optional(array(nonEmptyStringDecoder$1)), + icons: optional(array(v2IconDecoder)), + screenshots: optional(array(v2ScreenshotDecoder)), + contactEmail: optional(nonEmptyStringDecoder$1), + supportEmail: optional(nonEmptyStringDecoder$1), + moreInfo: optional(nonEmptyStringDecoder$1), + publisher: optional(nonEmptyStringDecoder$1), + customConfig: optional(array(anyJson())), + hostManifests: optional(hostManifestsBrowserDecoder), + interop: optional(v2InteropDecoder), + localizedVersions: optional(dict(v2LocalizedDefinitionDecoder)) +}); +const allDefinitionsDecoder = oneOf(v1DefinitionDecoder, v2DefinitionDecoder); + +const parseDecoderErrorToStringMessage = (error) => { + return `${error.kind} at ${error.at}: ${JSON.stringify(error.input)}. Reason - ${error.message}`; +}; + +class FDC3Service { + constructor() { + this.fdc3ToDesktopDefinitionType = { + web: "window", + native: "exe", + citrix: "citrix", + onlineNative: "clickonce", + other: "window" + }; + } + toApi() { + return { + isFdc3Definition: this.isFdc3Definition.bind(this), + parseToBrowserBaseAppData: this.parseToBrowserBaseAppData.bind(this), + parseToDesktopAppConfig: this.parseToDesktopAppConfig.bind(this) + }; + } + isFdc3Definition(definition) { + const decodeRes = allDefinitionsDecoder.run(definition); + if (!decodeRes.ok) { + return { isFdc3: false, reason: parseDecoderErrorToStringMessage(decodeRes.error) }; + } + if (definition.appId && definition.details) { + return { isFdc3: true, version: "2.0" }; + } + if (definition.manifest) { + return { isFdc3: true, version: "1.2" }; + } + return { isFdc3: false, reason: "The passed definition is not FDC3" }; + } + parseToBrowserBaseAppData(definition) { + var _a; + const { isFdc3, version } = this.isFdc3Definition(definition); + if (!isFdc3) { + throw new Error("The passed definition is not FDC3"); + } + const decodeRes = allDefinitionsDecoder.run(definition); + if (!decodeRes.ok) { + throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`); + } + const userProperties = this.getUserPropertiesFromDefinition(definition, version); + const createOptions = { url: this.getUrl(definition, version) }; + let baseApplicationData = { + name: definition.appId, + type: "window", + createOptions, + userProperties: Object.assign(Object.assign({}, userProperties), { intents: version === "1.2" + ? userProperties.intents + : this.getIntentsFromV2AppDefinition(definition), details: createOptions }), + title: definition.title, + version: definition.version, + icon: this.getIconFromDefinition(definition, version), + caption: definition.description, + fdc3: version === "2.0" ? Object.assign(Object.assign({}, definition), { definitionVersion: "2.0" }) : undefined, + }; + if ((_a = definition.hostManifests) === null || _a === void 0 ? void 0 : _a["Glue42"]) { + const decodeRes = glue42HostManifestsBrowserDecoder.run(definition.hostManifests["Glue42"]); + if (!decodeRes.ok) { + throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`); + } + if (!Object.keys(decodeRes.result).length) { + throw new Error("Invalid 'hostManifests['Glue42]' key"); + } + baseApplicationData = this.mergeBaseAppDataWithGlueManifest(baseApplicationData, decodeRes.result); + } + return baseApplicationData; + } + parseToDesktopAppConfig(definition) { + var _a, _b, _c; + const { isFdc3, version } = this.isFdc3Definition(definition); + if (!isFdc3) { + throw new Error("The passed definition is not FDC3"); + } + const decodeRes = allDefinitionsDecoder.run(definition); + if (!decodeRes.ok) { + throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`); + } + if (version === "1.2") { + const fdc3v1Definition = definition; + return { + name: fdc3v1Definition.appId, + type: "window", + details: { + url: this.getUrl(definition, version) + }, + version: fdc3v1Definition.version, + title: fdc3v1Definition.title, + tooltip: fdc3v1Definition.tooltip, + caption: fdc3v1Definition.description, + icon: (_a = fdc3v1Definition.icons) === null || _a === void 0 ? void 0 : _a[0].icon, + intents: fdc3v1Definition.intents, + customProperties: { + manifestType: fdc3v1Definition.manifestType, + images: fdc3v1Definition.images, + contactEmail: fdc3v1Definition.contactEmail, + supportEmail: fdc3v1Definition.supportEmail, + publisher: fdc3v1Definition.publisher, + icons: fdc3v1Definition.icons, + customConfig: fdc3v1Definition.customConfig + } + }; + } + const fdc3v2Definition = definition; + let desktopDefinition = { + name: fdc3v2Definition.appId, + type: this.fdc3ToDesktopDefinitionType[fdc3v2Definition.type], + details: fdc3v2Definition.details, + version: fdc3v2Definition.version, + title: fdc3v2Definition.title, + tooltip: fdc3v2Definition.tooltip, + caption: fdc3v2Definition.description, + icon: this.getIconFromDefinition(fdc3v2Definition, "2.0"), + intents: this.getIntentsFromV2AppDefinition(fdc3v2Definition), + fdc3: Object.assign(Object.assign({}, fdc3v2Definition), { definitionVersion: "2.0" }) + }; + if ((_b = fdc3v2Definition.hostManifests) === null || _b === void 0 ? void 0 : _b["Glue42"]) { + if (typeof fdc3v2Definition.hostManifests["Glue42"] !== "object" || Array.isArray(fdc3v2Definition.hostManifests["Glue42"])) { + throw new Error("Invalid 'hostManifests['Glue42]' key"); + } + desktopDefinition = this.mergeDesktopConfigWithGlueManifest(desktopDefinition, (_c = fdc3v2Definition.hostManifests) === null || _c === void 0 ? void 0 : _c["Glue42"]); + } + return desktopDefinition; + } + getUserPropertiesFromDefinition(definition, version) { + if (version === "1.2") { + return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key))); + } + return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key) && !fdc3v2AppProps.includes(key))); + } + getUrl(definition, version) { + var _a, _b; + let url; + if (version === "1.2") { + const parsedManifest = JSON.parse(definition.manifest); + url = ((_a = parsedManifest.details) === null || _a === void 0 ? void 0 : _a.url) || parsedManifest.url; + } + else { + url = (_b = definition.details) === null || _b === void 0 ? void 0 : _b.url; + } + if (!url || typeof url !== "string") { + throw new Error(`Invalid FDC3 ${version} definition. Provide valid 'url' under '${version === "1.2" ? "manifest" : "details"}' key`); + } + return url; + } + getIntentsFromV2AppDefinition(definition) { + var _a, _b; + const fdc3Intents = (_b = (_a = definition.interop) === null || _a === void 0 ? void 0 : _a.intents) === null || _b === void 0 ? void 0 : _b.listensFor; + if (!fdc3Intents) { + return; + } + const intents = Object.entries(fdc3Intents).map((fdc3Intent) => { + const [intentName, intentData] = fdc3Intent; + return Object.assign({ name: intentName }, intentData); + }); + return intents; + } + getIconFromDefinition(definition, version) { + var _a, _b, _c, _d; + if (version === "1.2") { + return ((_b = (_a = definition.icons) === null || _a === void 0 ? void 0 : _a.find((iconDef) => iconDef.icon)) === null || _b === void 0 ? void 0 : _b.icon) || undefined; + } + return ((_d = (_c = definition.icons) === null || _c === void 0 ? void 0 : _c.find((iconDef) => iconDef.src)) === null || _d === void 0 ? void 0 : _d.src) || undefined; + } + mergeBaseAppDataWithGlueManifest(baseAppData, hostManifestDefinition) { + let baseApplicationDefinition = baseAppData; + if (hostManifestDefinition.details) { + const details = Object.assign(Object.assign({}, baseAppData.createOptions), hostManifestDefinition.details); + baseApplicationDefinition.createOptions = details; + baseApplicationDefinition.userProperties.details = details; + } + if (Array.isArray(hostManifestDefinition.intents)) { + baseApplicationDefinition.userProperties.intents = (baseApplicationDefinition.userProperties.intents || []).concat(hostManifestDefinition.intents); + } + baseApplicationDefinition = Object.assign(Object.assign({}, baseApplicationDefinition), hostManifestDefinition); + delete baseApplicationDefinition.details; + delete baseApplicationDefinition.intents; + return baseApplicationDefinition; + } + mergeDesktopConfigWithGlueManifest(config, desktopDefinition) { + const appConfig = Object.assign({}, config, desktopDefinition, { details: Object.assign(Object.assign({}, config.details), desktopDefinition.details) }); + if (Array.isArray(desktopDefinition.intents)) { + appConfig.intents = (config.intents || []).concat(desktopDefinition.intents); + } + return appConfig; + } +} + +const decoders$1 = { + common: { + nonEmptyStringDecoder: nonEmptyStringDecoder$1, + nonNegativeNumberDecoder: nonNegativeNumberDecoder$1 + }, + fdc3: { + allDefinitionsDecoder, + v1DefinitionDecoder, + v2DefinitionDecoder + } +}; + +var INTENTS_ERRORS; +(function (INTENTS_ERRORS) { + INTENTS_ERRORS["USER_CANCELLED"] = "User Closed Intents Resolver UI without choosing a handler"; + INTENTS_ERRORS["CALLER_NOT_DEFINED"] = "Caller Id is not defined"; + INTENTS_ERRORS["TIMEOUT_HIT"] = "Timeout hit"; + INTENTS_ERRORS["INTENT_NOT_FOUND"] = "Cannot find Intent"; + INTENTS_ERRORS["HANDLER_NOT_FOUND"] = "Cannot find Intent Handler"; + INTENTS_ERRORS["TARGET_INSTANCE_UNAVAILABLE"] = "Cannot start Target Instance"; + INTENTS_ERRORS["INTENT_DELIVERY_FAILED"] = "Target Instance did not add a listener"; + INTENTS_ERRORS["RESOLVER_UNAVAILABLE"] = "Intents Resolver UI unavailable"; + INTENTS_ERRORS["RESOLVER_TIMEOUT"] = "User did not choose a handler"; + INTENTS_ERRORS["INVALID_RESOLVER_RESPONSE"] = "Intents Resolver UI returned invalid response"; + INTENTS_ERRORS["INTENT_HANDLER_REJECTION"] = "Intent Handler function processing the raised intent threw an error or rejected the promise it returned"; +})(INTENTS_ERRORS || (INTENTS_ERRORS = {})); + +let IoC$1 = class IoC { + constructor() { + this._decoders = decoders$1; + this._errors = { + intents: INTENTS_ERRORS + }; + } + get fdc3() { + if (!this._fdc3) { + this._fdc3 = new FDC3Service().toApi(); + } + return this._fdc3; + } + get decoders() { + return this._decoders; + } + get errors() { + return this._errors; + } +}; + +const ioc = new IoC$1(); +ioc.fdc3; +const decoders = ioc.decoders; +ioc.errors; + +const nonEmptyStringDecoder = string$1().where((s) => s.length > 0, "Expected a non-empty string"); +const nonNegativeNumberDecoder = number$1().where((num) => num >= 0, "Expected a non-negative number"); +const optionalNonEmptyStringDecoder = optional$1(nonEmptyStringDecoder); +const libDomainDecoder = oneOf$1(constant$1("system"), constant$1("windows"), constant$1("appManager"), constant$1("layouts"), constant$1("intents"), constant$1("notifications"), constant$1("channels"), constant$1("extension"), constant$1("themes"), constant$1("prefs")); +const windowOperationTypesDecoder = oneOf$1(constant$1("openWindow"), constant$1("windowHello"), constant$1("windowAdded"), constant$1("windowRemoved"), constant$1("getBounds"), constant$1("getFrameBounds"), constant$1("getUrl"), constant$1("moveResize"), constant$1("focus"), constant$1("close"), constant$1("getTitle"), constant$1("setTitle"), constant$1("focusChange"), constant$1("getChannel")); +const appManagerOperationTypesDecoder = oneOf$1(constant$1("appHello"), constant$1("appDirectoryStateChange"), constant$1("instanceStarted"), constant$1("instanceStopped"), constant$1("applicationStart"), constant$1("instanceStop"), constant$1("clear")); +const layoutsOperationTypesDecoder = oneOf$1(constant$1("layoutAdded"), constant$1("layoutChanged"), constant$1("layoutRemoved"), constant$1("get"), constant$1("getAll"), constant$1("export"), constant$1("import"), constant$1("remove"), constant$1("clientSaveRequest"), constant$1("getGlobalPermissionState"), constant$1("checkGlobalActivated"), constant$1("requestGlobalPermission"), constant$1("getDefaultGlobal"), constant$1("setDefaultGlobal"), constant$1("clearDefaultGlobal")); +const notificationsOperationTypesDecoder = oneOf$1(constant$1("raiseNotification"), constant$1("requestPermission"), constant$1("notificationShow"), constant$1("notificationClick"), constant$1("getPermission"), constant$1("list"), constant$1("notificationRaised"), constant$1("notificationClosed"), constant$1("click"), constant$1("clear"), constant$1("clearAll"), constant$1("configure"), constant$1("getConfiguration"), constant$1("configurationChanged"), constant$1("setState"), constant$1("clearOld"), constant$1("activeCountChange"), constant$1("stateChange")); +const systemOperationTypesDecoder = oneOf$1(constant$1("getEnvironment"), constant$1("getBase"), constant$1("platformShutdown")); +const windowRelativeDirectionDecoder = oneOf$1(constant$1("top"), constant$1("left"), constant$1("right"), constant$1("bottom")); +const windowBoundsDecoder = object$1({ + top: number$1(), + left: number$1(), + width: nonNegativeNumberDecoder, + height: nonNegativeNumberDecoder +}); +const windowOpenSettingsDecoder = optional$1(object$1({ + top: optional$1(number$1()), + left: optional$1(number$1()), + width: optional$1(nonNegativeNumberDecoder), + height: optional$1(nonNegativeNumberDecoder), + context: optional$1(anyJson$1()), + relativeTo: optional$1(nonEmptyStringDecoder), + relativeDirection: optional$1(windowRelativeDirectionDecoder), + windowId: optional$1(nonEmptyStringDecoder), + layoutComponentId: optional$1(nonEmptyStringDecoder) +})); +const openWindowConfigDecoder = object$1({ + name: nonEmptyStringDecoder, + url: nonEmptyStringDecoder, + options: windowOpenSettingsDecoder +}); +const windowHelloDecoder = object$1({ + windowId: optional$1(nonEmptyStringDecoder) +}); +const coreWindowDataDecoder = object$1({ + windowId: nonEmptyStringDecoder, + name: nonEmptyStringDecoder +}); +const simpleWindowDecoder = object$1({ + windowId: nonEmptyStringDecoder +}); +const helloSuccessDecoder = object$1({ + windows: array$1(coreWindowDataDecoder), + isWorkspaceFrame: boolean$1() +}); +const windowTitleConfigDecoder = object$1({ + windowId: nonEmptyStringDecoder, + title: string$1() +}); +const focusEventDataDecoder = object$1({ + windowId: nonEmptyStringDecoder, + hasFocus: boolean$1() +}); +const windowMoveResizeConfigDecoder = object$1({ + windowId: nonEmptyStringDecoder, + top: optional$1(number$1()), + left: optional$1(number$1()), + width: optional$1(nonNegativeNumberDecoder), + height: optional$1(nonNegativeNumberDecoder), + relative: optional$1(boolean$1()) +}); +const windowBoundsResultDecoder = object$1({ + windowId: nonEmptyStringDecoder, + bounds: object$1({ + top: number$1(), + left: number$1(), + width: nonNegativeNumberDecoder, + height: nonNegativeNumberDecoder + }) +}); +const frameWindowBoundsResultDecoder = object$1({ + bounds: object$1({ + top: number$1(), + left: number$1(), + width: nonNegativeNumberDecoder, + height: nonNegativeNumberDecoder + }) +}); +const windowUrlResultDecoder = object$1({ + windowId: nonEmptyStringDecoder, + url: nonEmptyStringDecoder +}); +const anyDecoder = anyJson$1(); +const boundsDecoder = object$1({ + top: optional$1(number$1()), + left: optional$1(number$1()), + width: optional$1(nonNegativeNumberDecoder), + height: optional$1(nonNegativeNumberDecoder) +}); +const instanceDataDecoder = object$1({ + id: nonEmptyStringDecoder, + applicationName: nonEmptyStringDecoder +}); +const applicationDetailsDecoder = object$1({ + url: nonEmptyStringDecoder, + top: optional$1(number$1()), + left: optional$1(number$1()), + width: optional$1(nonNegativeNumberDecoder), + height: optional$1(nonNegativeNumberDecoder) +}); +const intentDefinitionDecoder = object$1({ + name: nonEmptyStringDecoder, + displayName: optional$1(string$1()), + contexts: optional$1(array$1(string$1())), + customConfig: optional$1(object$1()) +}); +object$1({ + name: nonEmptyStringDecoder, + title: optional$1(nonEmptyStringDecoder), + version: optional$1(nonEmptyStringDecoder), + appId: optional$1(nonEmptyStringDecoder), + manifest: nonEmptyStringDecoder, + manifestType: nonEmptyStringDecoder, + tooltip: optional$1(nonEmptyStringDecoder), + description: optional$1(nonEmptyStringDecoder), + contactEmail: optional$1(nonEmptyStringDecoder), + supportEmail: optional$1(nonEmptyStringDecoder), + publisher: optional$1(nonEmptyStringDecoder), + images: optional$1(array$1(object$1({ url: optional$1(nonEmptyStringDecoder) }))), + icons: optional$1(array$1(object$1({ icon: optional$1(nonEmptyStringDecoder) }))), + customConfig: anyJson$1(), + intents: optional$1(array$1(intentDefinitionDecoder)) +}); +const applicationDefinitionDecoder = object$1({ + name: nonEmptyStringDecoder, + type: nonEmptyStringDecoder.where((s) => s === "window", "Expected a value of window"), + title: optional$1(nonEmptyStringDecoder), + version: optional$1(nonEmptyStringDecoder), + customProperties: optional$1(anyJson$1()), + icon: optional$1(string$1()), + caption: optional$1(string$1()), + details: applicationDetailsDecoder, + intents: optional$1(array$1(intentDefinitionDecoder)), + hidden: optional$1(boolean$1()), + fdc3: optional$1(decoders.fdc3.v2DefinitionDecoder) +}); +const allApplicationDefinitionsDecoder = oneOf$1(applicationDefinitionDecoder, decoders.fdc3.v2DefinitionDecoder, decoders.fdc3.v1DefinitionDecoder); +object$1({ + definitions: array$1(allApplicationDefinitionsDecoder), + mode: oneOf$1(constant$1("replace"), constant$1("merge")) +}); +const appRemoveConfigDecoder = object$1({ + name: nonEmptyStringDecoder +}); +const appsExportOperationDecoder = object$1({ + definitions: array$1(applicationDefinitionDecoder) +}); +const applicationDataDecoder = object$1({ + name: nonEmptyStringDecoder, + type: nonEmptyStringDecoder.where((s) => s === "window", "Expected a value of window"), + instances: array$1(instanceDataDecoder), + userProperties: optional$1(anyJson$1()), + title: optional$1(nonEmptyStringDecoder), + version: optional$1(nonEmptyStringDecoder), + icon: optional$1(nonEmptyStringDecoder), + caption: optional$1(nonEmptyStringDecoder) +}); +const baseApplicationDataDecoder = object$1({ + name: nonEmptyStringDecoder, + type: nonEmptyStringDecoder.where((s) => s === "window", "Expected a value of window"), + userProperties: anyJson$1(), + title: optional$1(nonEmptyStringDecoder), + version: optional$1(nonEmptyStringDecoder), + icon: optional$1(nonEmptyStringDecoder), + caption: optional$1(nonEmptyStringDecoder) +}); +const appDirectoryStateChangeDecoder = object$1({ + appsAdded: array$1(baseApplicationDataDecoder), + appsChanged: array$1(baseApplicationDataDecoder), + appsRemoved: array$1(baseApplicationDataDecoder) +}); +const appHelloSuccessDecoder = object$1({ + apps: array$1(applicationDataDecoder), + initialChannelId: optional$1(nonEmptyStringDecoder) +}); +const basicInstanceDataDecoder = object$1({ + id: nonEmptyStringDecoder +}); +const applicationStartConfigDecoder = object$1({ + name: nonEmptyStringDecoder, + waitForAGMReady: boolean$1(), + id: optional$1(nonEmptyStringDecoder), + context: optional$1(anyJson$1()), + top: optional$1(number$1()), + left: optional$1(number$1()), + width: optional$1(nonNegativeNumberDecoder), + height: optional$1(nonNegativeNumberDecoder), + relativeTo: optional$1(nonEmptyStringDecoder), + relativeDirection: optional$1(windowRelativeDirectionDecoder), + forceChromeTab: optional$1(boolean$1()), + layoutComponentId: optional$1(nonEmptyStringDecoder), + channelId: optional$1(nonEmptyStringDecoder) +}); +const layoutTypeDecoder = oneOf$1(constant$1("Global"), constant$1("Activity"), constant$1("ApplicationDefault"), constant$1("Swimlane"), constant$1("Workspace")); +const componentTypeDecoder = oneOf$1(constant$1("application"), constant$1("activity")); +const windowComponentStateDecoder = object$1({ + context: optional$1(anyJson$1()), + bounds: windowBoundsDecoder, + createArgs: object$1({ + name: optional$1(nonEmptyStringDecoder), + url: optional$1(nonEmptyStringDecoder), + context: optional$1(anyJson$1()) + }), + windowState: optional$1(nonEmptyStringDecoder), + restoreState: optional$1(nonEmptyStringDecoder), + instanceId: nonEmptyStringDecoder, + isCollapsed: optional$1(boolean$1()), + isSticky: optional$1(boolean$1()), + restoreSettings: object$1({ + groupId: optional$1(nonEmptyStringDecoder), + groupZOrder: optional$1(number$1()) + }) +}); +const windowLayoutComponentDecoder = object$1({ + type: constant$1("window"), + componentType: optional$1(componentTypeDecoder), + application: nonEmptyStringDecoder, + state: windowComponentStateDecoder +}); +const windowLayoutItemDecoder = object$1({ + type: constant$1("window"), + config: object$1({ + appName: nonEmptyStringDecoder, + url: optional$1(nonEmptyStringDecoder), + title: optional$1(string$1()), + allowExtract: optional$1(boolean$1()), + allowReorder: optional$1(boolean$1()), + showCloseButton: optional$1(boolean$1()), + isMaximized: optional$1(boolean$1()) + }) +}); +const groupLayoutItemDecoder = object$1({ + type: constant$1("group"), + config: anyJson$1(), + children: array$1(oneOf$1(windowLayoutItemDecoder)) +}); +const columnLayoutItemDecoder = object$1({ + type: constant$1("column"), + config: anyJson$1(), + children: array$1(oneOf$1(groupLayoutItemDecoder, windowLayoutItemDecoder, lazy(() => columnLayoutItemDecoder), lazy(() => rowLayoutItemDecoder))) +}); +const rowLayoutItemDecoder = object$1({ + type: constant$1("row"), + config: anyJson$1(), + children: array$1(oneOf$1(columnLayoutItemDecoder, groupLayoutItemDecoder, windowLayoutItemDecoder, lazy(() => rowLayoutItemDecoder))) +}); +const workspaceLayoutComponentStateDecoder = object$1({ + config: anyJson$1(), + context: anyJson$1(), + children: array$1(oneOf$1(rowLayoutItemDecoder, columnLayoutItemDecoder, groupLayoutItemDecoder, windowLayoutItemDecoder)) +}); +const workspaceLayoutComponentDecoder = object$1({ + type: constant$1("Workspace"), + application: optional$1(nonEmptyStringDecoder), + state: workspaceLayoutComponentStateDecoder +}); +const workspaceFrameComponentStateDecoder = object$1({ + bounds: windowBoundsDecoder, + instanceId: nonEmptyStringDecoder, + selectedWorkspace: nonNegativeNumberDecoder, + workspaces: array$1(workspaceLayoutComponentStateDecoder), + windowState: optional$1(nonEmptyStringDecoder), + restoreState: optional$1(nonEmptyStringDecoder), + context: optional$1(anyJson$1()) +}); +const workspaceFrameComponentDecoder = object$1({ + type: constant$1("workspaceFrame"), + application: nonEmptyStringDecoder, + componentType: optional$1(componentTypeDecoder), + state: workspaceFrameComponentStateDecoder +}); +const glueLayoutDecoder = object$1({ + name: nonEmptyStringDecoder, + type: layoutTypeDecoder, + components: array$1(oneOf$1(windowLayoutComponentDecoder, workspaceLayoutComponentDecoder, workspaceFrameComponentDecoder)), + context: optional$1(anyJson$1()), + metadata: optional$1(anyJson$1()), + version: optional$1(number$1()) +}); +const newLayoutOptionsDecoder = object$1({ + name: nonEmptyStringDecoder, + context: optional$1(anyJson$1()), + metadata: optional$1(anyJson$1()), + instances: optional$1(array$1(nonEmptyStringDecoder)), + ignoreInstances: optional$1(array$1(nonEmptyStringDecoder)) +}); +const restoreOptionsDecoder = object$1({ + name: nonEmptyStringDecoder, + context: optional$1(anyJson$1()), + closeRunningInstance: optional$1(boolean$1()), + closeMe: optional$1(boolean$1()), + timeout: optional$1(nonNegativeNumberDecoder) +}); +const layoutSummaryDecoder = object$1({ + name: nonEmptyStringDecoder, + type: layoutTypeDecoder, + context: optional$1(anyJson$1()), + metadata: optional$1(anyJson$1()) +}); +const simpleLayoutConfigDecoder = object$1({ + name: nonEmptyStringDecoder, + type: layoutTypeDecoder +}); +const saveLayoutConfigDecoder = object$1({ + layout: newLayoutOptionsDecoder +}); +const restoreLayoutConfigDecoder = object$1({ + layout: restoreOptionsDecoder +}); +const getAllLayoutsConfigDecoder = object$1({ + type: layoutTypeDecoder +}); +const allLayoutsFullConfigDecoder = object$1({ + layouts: array$1(glueLayoutDecoder) +}); +const importModeDecoder = oneOf$1(constant$1("replace"), constant$1("merge")); +const layoutsImportConfigDecoder = object$1({ + layouts: array$1(glueLayoutDecoder), + mode: importModeDecoder, + isManagerOperation: optional$1(boolean$1()) +}); +const allLayoutsSummariesResultDecoder = object$1({ + summaries: array$1(layoutSummaryDecoder) +}); +const simpleLayoutResultDecoder = object$1({ + layout: glueLayoutDecoder +}); +const optionalSimpleLayoutResult = object$1({ + layout: optional$1(glueLayoutDecoder) +}); +const setDefaultGlobalConfigDecoder = object$1({ + name: nonEmptyStringDecoder +}); +const intentsOperationTypesDecoder = oneOf$1(constant$1("findIntent"), constant$1("getIntents"), constant$1("raiseIntent"), constant$1("raise"), constant$1("filterHandlers")); +const intentHandlerDecoder = object$1({ + applicationName: nonEmptyStringDecoder, + applicationTitle: optional$1(string$1()), + applicationDescription: optional$1(string$1()), + applicationIcon: optional$1(string$1()), + type: oneOf$1(constant$1("app"), constant$1("instance")), + displayName: optional$1(string$1()), + contextTypes: optional$1(array$1(nonEmptyStringDecoder)), + instanceId: optional$1(string$1()), + instanceTitle: optional$1(string$1()), + resultType: optional$1(string$1()) +}); +object$1({ + applicationName: string$1(), + applicationIcon: optional$1(string$1()), + instanceId: optional$1(string$1()), +}); +const intentResolverResponseDecoder = object$1({ + intent: nonEmptyStringDecoder, + handler: intentHandlerDecoder +}); +const intentDecoder = object$1({ + name: nonEmptyStringDecoder, + handlers: array$1(intentHandlerDecoder) +}); +const intentTargetDecoder = oneOf$1(constant$1("startNew"), constant$1("reuse"), object$1({ + app: optional$1(nonEmptyStringDecoder), + instance: optional$1(nonEmptyStringDecoder) +})); +const intentContextDecoder = object$1({ + type: optional$1(nonEmptyStringDecoder), + data: optional$1(anyJson$1()) +}); +const intentsDecoder = array$1(intentDecoder); +const wrappedIntentsDecoder = object$1({ + intents: intentsDecoder +}); +const intentFilterDecoder = object$1({ + name: optional$1(nonEmptyStringDecoder), + contextType: optional$1(nonEmptyStringDecoder), + resultType: optional$1(nonEmptyStringDecoder) +}); +const findFilterDecoder = oneOf$1(nonEmptyStringDecoder, intentFilterDecoder); +const wrappedIntentFilterDecoder = object$1({ + filter: optional$1(intentFilterDecoder) +}); +const intentRequestDecoder = object$1({ + intent: nonEmptyStringDecoder, + target: optional$1(intentTargetDecoder), + context: optional$1(intentContextDecoder), + options: optional$1(windowOpenSettingsDecoder), + handlers: optional$1(array$1(intentHandlerDecoder)), + timeout: optional$1(nonNegativeNumberDecoder), + waitUserResponseIndefinitely: optional$1(boolean$1()) +}); +const raiseRequestDecoder = oneOf$1(nonEmptyStringDecoder, intentRequestDecoder); +const resolverConfigDecoder = object$1({ + enabled: boolean$1(), + appName: nonEmptyStringDecoder, + waitResponseTimeout: number$1() +}); +const raiseIntentRequestDecoder = object$1({ + intentRequest: intentRequestDecoder, + resolverConfig: resolverConfigDecoder +}); +const intentResultDecoder = object$1({ + request: intentRequestDecoder, + handler: intentHandlerDecoder, + result: anyJson$1() +}); +const handlersFilterDecoder = object$1({ + title: optional$1(nonEmptyStringDecoder), + openResolver: optional$1(boolean$1()), + timeout: optional$1(nonNegativeNumberDecoder), + intent: optional$1(nonEmptyStringDecoder), + contextTypes: optional$1(array$1(nonEmptyStringDecoder)), + resultType: optional$1(nonEmptyStringDecoder), + applicationNames: optional$1(array$1(nonEmptyStringDecoder)) +}); +const filterHandlersResultDecoder = object$1({ + handlers: array$1(intentHandlerDecoder) +}); +const filterHandlersWithResolverConfigDecoder = object$1({ + filterHandlersRequest: handlersFilterDecoder, + resolverConfig: resolverConfigDecoder +}); +const AddIntentListenerRequestDecoder = object$1({ + intent: nonEmptyStringDecoder, + contextTypes: optional$1(array$1(nonEmptyStringDecoder)), + displayName: optional$1(string$1()), + icon: optional$1(string$1()), + description: optional$1(string$1()), + resultType: optional$1(string$1()) +}); +const AddIntentListenerDecoder = oneOf$1(nonEmptyStringDecoder, AddIntentListenerRequestDecoder); +const intentInfoDecoder = object$1({ + intent: nonEmptyStringDecoder, + contextTypes: optional$1(array$1(nonEmptyStringDecoder)), + description: optional$1(nonEmptyStringDecoder), + displayName: optional$1(nonEmptyStringDecoder), + icon: optional$1(nonEmptyStringDecoder), + resultType: optional$1(nonEmptyStringDecoder) +}); +const getIntentsResultDecoder = object$1({ + intents: array$1(intentInfoDecoder) +}); +const channelNameDecoder = (channelNames) => { + return nonEmptyStringDecoder.where(s => channelNames.includes(s), "Expected a valid channel name"); +}; +const interopActionSettingsDecoder = object$1({ + method: nonEmptyStringDecoder, + arguments: optional$1(anyJson$1()), + target: optional$1(oneOf$1(constant$1("all"), constant$1("best"))) +}); +const glue42NotificationActionDecoder = object$1({ + action: string$1(), + title: nonEmptyStringDecoder, + icon: optional$1(string$1()), + interop: optional$1(interopActionSettingsDecoder) +}); +const notificationStateDecoder = oneOf$1(constant$1("Active"), constant$1("Acknowledged"), constant$1("Seen"), constant$1("Closed"), constant$1("Stale"), constant$1("Snoozed"), constant$1("Processing")); +const activeNotificationsCountChangeDecoder = object$1({ + count: number$1() +}); +const notificationDefinitionDecoder = object$1({ + badge: optional$1(string$1()), + body: optional$1(string$1()), + data: optional$1(anyJson$1()), + dir: optional$1(oneOf$1(constant$1("auto"), constant$1("ltr"), constant$1("rtl"))), + icon: optional$1(string$1()), + image: optional$1(string$1()), + lang: optional$1(string$1()), + renotify: optional$1(boolean$1()), + requireInteraction: optional$1(boolean$1()), + silent: optional$1(boolean$1()), + tag: optional$1(string$1()), + timestamp: optional$1(nonNegativeNumberDecoder), + vibrate: optional$1(array$1(number$1())) +}); +const glue42NotificationOptionsDecoder = object$1({ + title: nonEmptyStringDecoder, + clickInterop: optional$1(interopActionSettingsDecoder), + actions: optional$1(array$1(glue42NotificationActionDecoder)), + focusPlatformOnDefaultClick: optional$1(boolean$1()), + badge: optional$1(string$1()), + body: optional$1(string$1()), + data: optional$1(anyJson$1()), + dir: optional$1(oneOf$1(constant$1("auto"), constant$1("ltr"), constant$1("rtl"))), + icon: optional$1(string$1()), + image: optional$1(string$1()), + lang: optional$1(string$1()), + renotify: optional$1(boolean$1()), + requireInteraction: optional$1(boolean$1()), + silent: optional$1(boolean$1()), + tag: optional$1(string$1()), + timestamp: optional$1(nonNegativeNumberDecoder), + vibrate: optional$1(array$1(number$1())), + severity: optional$1(oneOf$1(constant$1("Low"), constant$1("None"), constant$1("Medium"), constant$1("High"), constant$1("Critical"))), + showToast: optional$1(boolean$1()), + showInPanel: optional$1(boolean$1()), + state: optional$1(notificationStateDecoder) +}); +const notificationSetStateRequestDecoder = object$1({ + id: nonEmptyStringDecoder, + state: notificationStateDecoder +}); +const channelContextDecoder = object$1({ + name: nonEmptyStringDecoder, + meta: object$1({ + color: nonEmptyStringDecoder + }), + data: optional$1(object$1()), +}); +const raiseNotificationDecoder = object$1({ + settings: glue42NotificationOptionsDecoder, + id: nonEmptyStringDecoder +}); +const raiseNotificationResultDecoder = object$1({ + settings: glue42NotificationOptionsDecoder +}); +const permissionRequestResultDecoder = object$1({ + permissionGranted: boolean$1() +}); +const permissionQueryResultDecoder = object$1({ + permission: oneOf$1(constant$1("default"), constant$1("granted"), constant$1("denied")) +}); +const notificationEventPayloadDecoder = object$1({ + definition: notificationDefinitionDecoder, + action: optional$1(string$1()), + id: optional$1(nonEmptyStringDecoder) +}); +const notificationFilterDecoder = object$1({ + allowed: optional$1(array$1(nonEmptyStringDecoder)), + blocked: optional$1(array$1(nonEmptyStringDecoder)) +}); +const notificationsConfigurationDecoder = object$1({ + enable: optional$1(boolean$1()), + enableToasts: optional$1(boolean$1()), + sourceFilter: optional$1(notificationFilterDecoder), +}); +const notificationsConfigurationProtocolDecoder = object$1({ + configuration: notificationsConfigurationDecoder +}); +const strictNotificationsConfigurationProtocolDecoder = object$1({ + configuration: object$1({ + enable: boolean$1(), + enableToasts: boolean$1(), + sourceFilter: object$1({ + allowed: array$1(nonEmptyStringDecoder), + blocked: array$1(nonEmptyStringDecoder) + }) + }) +}); +const platformSaveRequestConfigDecoder = object$1({ + layoutType: oneOf$1(constant$1("Global"), constant$1("Workspace")), + layoutName: nonEmptyStringDecoder, + context: optional$1(anyJson$1()) +}); +const saveRequestClientResponseDecoder = object$1({ + windowContext: optional$1(anyJson$1()), +}); +const permissionStateResultDecoder = object$1({ + state: oneOf$1(constant$1("prompt"), constant$1("denied"), constant$1("granted")) +}); +const simpleAvailabilityResultDecoder = object$1({ + isAvailable: boolean$1() +}); +const simpleItemIdDecoder = object$1({ + itemId: nonEmptyStringDecoder +}); +const operationCheckResultDecoder = object$1({ + isSupported: boolean$1() +}); +const operationCheckConfigDecoder = object$1({ + operation: nonEmptyStringDecoder +}); +const workspaceFrameBoundsResultDecoder = object$1({ + bounds: windowBoundsDecoder +}); +const themeDecoder = object$1({ + displayName: nonEmptyStringDecoder, + name: nonEmptyStringDecoder +}); +const simpleThemeResponseDecoder = object$1({ + theme: themeDecoder +}); +const allThemesResponseDecoder = object$1({ + themes: array$1(themeDecoder) +}); +const selectThemeConfigDecoder = object$1({ + name: nonEmptyStringDecoder +}); +const notificationsDataDecoder = object$1({ + id: nonEmptyStringDecoder, + title: nonEmptyStringDecoder, + clickInterop: optional$1(interopActionSettingsDecoder), + actions: optional$1(array$1(glue42NotificationActionDecoder)), + focusPlatformOnDefaultClick: optional$1(boolean$1()), + badge: optional$1(string$1()), + body: optional$1(string$1()), + data: optional$1(anyJson$1()), + dir: optional$1(oneOf$1(constant$1("auto"), constant$1("ltr"), constant$1("rtl"))), + icon: optional$1(string$1()), + image: optional$1(string$1()), + lang: optional$1(string$1()), + renotify: optional$1(boolean$1()), + requireInteraction: optional$1(boolean$1()), + silent: optional$1(boolean$1()), + tag: optional$1(string$1()), + timestamp: optional$1(nonNegativeNumberDecoder), + vibrate: optional$1(array$1(number$1())), + severity: optional$1(oneOf$1(constant$1("Low"), constant$1("None"), constant$1("Medium"), constant$1("High"), constant$1("Critical"))), + showToast: optional$1(boolean$1()), + showInPanel: optional$1(boolean$1()), + state: optional$1(notificationStateDecoder) +}); +const simpleNotificationDataDecoder = object$1({ + notification: notificationsDataDecoder +}); +const allNotificationsDataDecoder = object$1({ + notifications: array$1(notificationsDataDecoder) +}); +const simpleNotificationSelectDecoder = object$1({ + id: nonEmptyStringDecoder +}); +const getWindowIdsOnChannelDataDecoder = object$1({ + channel: nonEmptyStringDecoder +}); +const getWindowIdsOnChannelResultDecoder = object$1({ + windowIds: array$1(nonEmptyStringDecoder) +}); +const channelsOperationTypesDecoder = oneOf$1(constant$1("addChannel"), constant$1("getMyChannel"), constant$1("getWindowIdsOnChannel"), constant$1("getWindowIdsWithChannels"), constant$1("joinChannel")); +const getMyChanelResultDecoder = object$1({ + channel: optional$1(nonEmptyStringDecoder) +}); +const windowWithChannelFilterDecoder = object$1({ + application: optional$1(nonEmptyStringDecoder), + channels: optional$1(array$1(nonEmptyStringDecoder)), + windowIds: optional$1(array$1(nonEmptyStringDecoder)) +}); +const wrappedWindowWithChannelFilterDecoder = object$1({ + filter: optional$1(windowWithChannelFilterDecoder) +}); +const getWindowIdsWithChannelsResultDecoder = object$1({ + windowIdsWithChannels: array$1(object$1({ + application: nonEmptyStringDecoder, + channel: optional$1(nonEmptyStringDecoder), + windowId: nonEmptyStringDecoder + })) +}); +const startApplicationContextDecoder = optional$1(anyJson$1()); +const startApplicationOptionsDecoder = optional$1(object$1({ + top: optional$1(number$1()), + left: optional$1(number$1()), + width: optional$1(nonNegativeNumberDecoder), + height: optional$1(nonNegativeNumberDecoder), + relativeTo: optional$1(nonEmptyStringDecoder), + relativeDirection: optional$1(windowRelativeDirectionDecoder), + waitForAGMReady: optional$1(boolean$1()), + channelId: optional$1(nonEmptyStringDecoder), + reuseId: optional$1(nonEmptyStringDecoder), +})); +const joinChannelDataDecoder = object$1({ + channel: nonEmptyStringDecoder, + windowId: nonEmptyStringDecoder +}); +const windowChannelResultDecoder = object$1({ + channel: optional$1(nonEmptyStringDecoder), +}); +const prefsOperationTypesDecoder = oneOf$1(constant$1("clear"), constant$1("clearAll"), constant$1("get"), constant$1("getAll"), constant$1("set"), constant$1("update"), constant$1("prefsChanged"), constant$1("prefsHello")); +const appPreferencesDecoder = object$1({ + app: nonEmptyStringDecoder, + data: object$1(), + lastUpdate: optional$1(nonEmptyStringDecoder), +}); +const basePrefsConfigDecoder = object$1({ + app: nonEmptyStringDecoder, +}); +const getPrefsResultDecoder = object$1({ + prefs: appPreferencesDecoder, +}); +const getAllPrefsResultDecoder = object$1({ + all: array$1(appPreferencesDecoder), +}); +const changePrefsDataDecoder = object$1({ + app: nonEmptyStringDecoder, + data: object$1(), +}); +const prefsHelloSuccessDecoder = object$1({ + platform: object$1({ + app: nonEmptyStringDecoder, + }), +}); + +const operations$9 = { + openWindow: { name: "openWindow", dataDecoder: openWindowConfigDecoder, resultDecoder: coreWindowDataDecoder }, + windowHello: { name: "windowHello", dataDecoder: windowHelloDecoder, resultDecoder: helloSuccessDecoder }, + windowAdded: { name: "windowAdded", dataDecoder: coreWindowDataDecoder }, + windowRemoved: { name: "windowRemoved", dataDecoder: simpleWindowDecoder }, + getBounds: { name: "getBounds", dataDecoder: simpleWindowDecoder, resultDecoder: windowBoundsResultDecoder }, + getFrameBounds: { name: "getFrameBounds", dataDecoder: simpleWindowDecoder, resultDecoder: frameWindowBoundsResultDecoder }, + getUrl: { name: "getUrl", dataDecoder: simpleWindowDecoder, resultDecoder: windowUrlResultDecoder }, + moveResize: { name: "moveResize", dataDecoder: windowMoveResizeConfigDecoder }, + focus: { name: "focus", dataDecoder: simpleWindowDecoder }, + close: { name: "close", dataDecoder: simpleWindowDecoder }, + getTitle: { name: "getTitle", dataDecoder: simpleWindowDecoder, resultDecoder: windowTitleConfigDecoder }, + setTitle: { name: "setTitle", dataDecoder: windowTitleConfigDecoder }, + focusChange: { name: "focusChange", dataDecoder: focusEventDataDecoder }, + getChannel: { name: "getChannel", dataDecoder: simpleWindowDecoder, resultDecoder: windowChannelResultDecoder }, +}; + +function getDefaultExportFromCjs$1 (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +function createRegistry$1(options) { + if (options && options.errorHandling + && typeof options.errorHandling !== "function" + && options.errorHandling !== "log" + && options.errorHandling !== "silent" + && options.errorHandling !== "throw") { + throw new Error("Invalid options passed to createRegistry. Prop errorHandling should be [\"log\" | \"silent\" | \"throw\" | (err) => void], but " + typeof options.errorHandling + " was passed"); + } + var _userErrorHandler = options && typeof options.errorHandling === "function" && options.errorHandling; + var callbacks = {}; + function add(key, callback, replayArgumentsArr) { + var callbacksForKey = callbacks[key]; + if (!callbacksForKey) { + callbacksForKey = []; + callbacks[key] = callbacksForKey; + } + callbacksForKey.push(callback); + if (replayArgumentsArr) { + setTimeout(function () { + replayArgumentsArr.forEach(function (replayArgument) { + var _a; + if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) { + try { + if (Array.isArray(replayArgument)) { + callback.apply(undefined, replayArgument); + } + else { + callback.apply(undefined, [replayArgument]); + } + } + catch (err) { + _handleError(err, key); + } + } + }); + }, 0); + } + return function () { + var allForKey = callbacks[key]; + if (!allForKey) { + return; + } + allForKey = allForKey.reduce(function (acc, element, index) { + if (!(element === callback && acc.length === index)) { + acc.push(element); + } + return acc; + }, []); + if (allForKey.length === 0) { + delete callbacks[key]; + } + else { + callbacks[key] = allForKey; + } + }; + } + function execute(key) { + var argumentsArr = []; + for (var _i = 1; _i < arguments.length; _i++) { + argumentsArr[_i - 1] = arguments[_i]; + } + var callbacksForKey = callbacks[key]; + if (!callbacksForKey || callbacksForKey.length === 0) { + return []; + } + var results = []; + callbacksForKey.forEach(function (callback) { + try { + var result = callback.apply(undefined, argumentsArr); + results.push(result); + } + catch (err) { + results.push(undefined); + _handleError(err, key); + } + }); + return results; + } + function _handleError(exceptionArtifact, key) { + var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact); + if (_userErrorHandler) { + _userErrorHandler(errParam); + return; + } + var msg = "[ERROR] callback-registry: User callback for key \"" + key + "\" failed: " + errParam.stack; + if (options) { + switch (options.errorHandling) { + case "log": + return console.error(msg); + case "silent": + return; + case "throw": + throw new Error(msg); + } + } + console.error(msg); + } + function clear() { + callbacks = {}; + } + function clearKey(key) { + var callbacksForKey = callbacks[key]; + if (!callbacksForKey) { + return; + } + delete callbacks[key]; + } + return { + add: add, + execute: execute, + clear: clear, + clearKey: clearKey + }; +} +createRegistry$1.default = createRegistry$1; +var lib$3 = createRegistry$1; + +class WebWindowModel { + constructor(_id, _name, _bridge) { + this._id = _id; + this._name = _name; + this._bridge = _bridge; + this.registry = lib$3(); + this.myCtxKey = `___window___${this.id}`; + } + get id() { + return this._id.slice(); + } + get name() { + return this._name.slice(); + } + clean() { + if (this.ctxUnsubscribe) { + this.ctxUnsubscribe(); + } + } + processSelfFocusEvent(hasFocus) { + this.me.isFocused = hasFocus; + this.registry.execute("focus-change", this.me); + } + toApi() { + return __awaiter$1(this, void 0, void 0, function* () { + this.ctxUnsubscribe = yield this._bridge.contextLib.subscribe(this.myCtxKey, (data) => this.registry.execute("context-updated", data)); + this.me = { + id: this.id, + name: this.name, + isFocused: false, + getURL: this.getURL.bind(this), + moveResize: this.moveResize.bind(this), + resizeTo: this.resizeTo.bind(this), + moveTo: this.moveTo.bind(this), + focus: this.focus.bind(this), + close: this.close.bind(this), + getTitle: this.getTitle.bind(this), + setTitle: this.setTitle.bind(this), + getBounds: this.getBounds.bind(this), + getContext: this.getContext.bind(this), + updateContext: this.updateContext.bind(this), + setContext: this.setContext.bind(this), + onContextUpdated: this.onContextUpdated.bind(this), + onFocusChanged: this.onFocusChanged.bind(this), + getChannel: this.getChannel.bind(this), + }; + return this.me; + }); + } + getURL() { + return __awaiter$1(this, void 0, void 0, function* () { + const result = yield this._bridge.send("windows", operations$9.getUrl, { windowId: this.id }); + return result.url; + }); + } + onFocusChanged(callback) { + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to context changes, because the provided callback is not a function!"); + } + return this.registry.add("focus-change", callback); + } + moveResize(dimension) { + return __awaiter$1(this, void 0, void 0, function* () { + const targetBounds = boundsDecoder.runWithException(dimension); + const commandArgs = Object.assign({}, targetBounds, { windowId: this.id, relative: false }); + yield this._bridge.send("windows", operations$9.moveResize, commandArgs); + return this.me; + }); + } + resizeTo(width, height) { + return __awaiter$1(this, void 0, void 0, function* () { + if (typeof width === "undefined" && typeof height === "undefined") { + return this.me; + } + if (typeof width !== "undefined") { + nonNegativeNumberDecoder.runWithException(width); + } + if (typeof height !== "undefined") { + nonNegativeNumberDecoder.runWithException(height); + } + const commandArgs = Object.assign({}, { width, height }, { windowId: this.id, relative: true }); + yield this._bridge.send("windows", operations$9.moveResize, commandArgs); + return this.me; + }); + } + moveTo(top, left) { + return __awaiter$1(this, void 0, void 0, function* () { + if (typeof top === "undefined" && typeof left === "undefined") { + return this.me; + } + if (typeof top !== "undefined") { + number$1().runWithException(top); + } + if (typeof left !== "undefined") { + number$1().runWithException(left); + } + const commandArgs = Object.assign({}, { top, left }, { windowId: this.id, relative: true }); + yield this._bridge.send("windows", operations$9.moveResize, commandArgs); + return this.me; + }); + } + focus() { + return __awaiter$1(this, void 0, void 0, function* () { + if (this.name === "Platform") { + window.open(undefined, this.id); + } + else { + yield this._bridge.send("windows", operations$9.focus, { windowId: this.id }); + } + return this.me; + }); + } + close() { + return __awaiter$1(this, void 0, void 0, function* () { + yield this._bridge.send("windows", operations$9.close, { windowId: this.id }); + return this.me; + }); + } + getTitle() { + return __awaiter$1(this, void 0, void 0, function* () { + const result = yield this._bridge.send("windows", operations$9.getTitle, { windowId: this.id }); + return result.title; + }); + } + setTitle(title) { + return __awaiter$1(this, void 0, void 0, function* () { + const ttl = nonEmptyStringDecoder.runWithException(title); + yield this._bridge.send("windows", operations$9.setTitle, { windowId: this.id, title: ttl }); + return this.me; + }); + } + getBounds() { + return __awaiter$1(this, void 0, void 0, function* () { + const result = yield this._bridge.send("windows", operations$9.getBounds, { windowId: this.id }); + return result.bounds; + }); + } + getContext() { + return __awaiter$1(this, void 0, void 0, function* () { + const ctx = yield this._bridge.contextLib.get(this.myCtxKey); + return ctx; + }); + } + updateContext(context) { + return __awaiter$1(this, void 0, void 0, function* () { + const ctx = anyDecoder.runWithException(context); + yield this._bridge.contextLib.update(this.myCtxKey, ctx); + return this.me; + }); + } + setContext(context) { + return __awaiter$1(this, void 0, void 0, function* () { + const ctx = anyDecoder.runWithException(context); + yield this._bridge.contextLib.set(this.myCtxKey, ctx); + return this.me; + }); + } + onContextUpdated(callback) { + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to context changes, because the provided callback is not a function!"); + } + const wrappedCallback = (data) => { + callback(data, this.me); + }; + return this.registry.add("context-updated", wrappedCallback); + } + getChannel() { + return __awaiter$1(this, void 0, void 0, function* () { + const result = yield this._bridge.send("windows", operations$9.getChannel, { windowId: this.id }, undefined, { includeOperationCheck: true }); + return result.channel; + }); + } +} + +const systemOperations = { + operationCheck: { name: "operationCheck", dataDecoder: operationCheckConfigDecoder, resultDecoder: operationCheckResultDecoder }, + getWorkspaceWindowFrameBounds: { name: "getWorkspaceWindowFrameBounds", resultDecoder: workspaceFrameBoundsResultDecoder, dataDecoder: simpleItemIdDecoder } +}; + +const PromiseWrap = (promise, timeoutMilliseconds, timeoutMessage) => { + return new Promise((resolve, reject) => { + let promiseActive = true; + const timeout = setTimeout(() => { + if (!promiseActive) { + return; + } + promiseActive = false; + const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`; + reject(message); + }, timeoutMilliseconds); + promise() + .then((result) => { + if (!promiseActive) { + return; + } + promiseActive = false; + clearTimeout(timeout); + resolve(result); + }) + .catch((error) => { + if (!promiseActive) { + return; + } + promiseActive = false; + clearTimeout(timeout); + reject(error); + }); + }); +}; +const PromisePlus$1 = (executor, timeoutMilliseconds, timeoutMessage) => { + return new Promise((resolve, reject) => { + const timeout = setTimeout(() => { + const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`; + reject(message); + }, timeoutMilliseconds); + const providedPromise = new Promise(executor); + providedPromise + .then((result) => { + clearTimeout(timeout); + resolve(result); + }) + .catch((error) => { + clearTimeout(timeout); + reject(error); + }); + }); +}; + +class WindowsController { + constructor() { + this.registry = lib$3(); + this.allWindowProjections = []; + } + start(coreGlue, ioc) { + return __awaiter$1(this, void 0, void 0, function* () { + this.logger = coreGlue.logger.subLogger("windows.controller.web"); + this.logger.trace("starting the web windows controller"); + this.publicWindowId = ioc.publicWindowId; + this.addWindowOperationExecutors(); + this.ioc = ioc; + this.bridge = ioc.bridge; + this.instanceId = coreGlue.interop.instance.instance; + this.channelsController = ioc.channelsController; + this.logger.trace(`set the public window id: ${this.publicWindowId}, set the bridge operations and ioc, registering with the platform now`); + this.platformRegistration = this.registerWithPlatform(); + yield this.platformRegistration; + yield this.initializeFocusTracking(); + this.logger.trace("registration with the platform successful, attaching the windows property to glue and returning"); + const api = this.toApi(); + coreGlue.windows = api; + }); + } + handlePlatformShutdown() { + this.registry.clear(); + this.allWindowProjections = []; + if (!this.focusEventHandler) { + return; + } + document.removeEventListener("visibilityChange", this.focusEventHandler); + window.removeEventListener("focus", this.focusEventHandler); + window.removeEventListener("blur", this.focusEventHandler); + } + handleBridgeMessage(args) { + return __awaiter$1(this, void 0, void 0, function* () { + yield this.platformRegistration; + const operationName = windowOperationTypesDecoder.runWithException(args.operation); + const operation = operations$9[operationName]; + if (!operation.execute) { + return; + } + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return yield operation.execute(operationData); + }); + } + open(name, url, options) { + return __awaiter$1(this, void 0, void 0, function* () { + nonEmptyStringDecoder.runWithException(name); + nonEmptyStringDecoder.runWithException(url); + const settings = windowOpenSettingsDecoder.runWithException(options); + const windowSuccess = yield this.bridge.send("windows", operations$9.openWindow, { name, url, options: settings }); + return this.waitForWindowAdded(windowSuccess.windowId); + }); + } + list() { + return this.allWindowProjections.map((projection) => projection.api); + } + findById(id) { + var _a; + nonEmptyStringDecoder.runWithException(id); + return (_a = this.allWindowProjections.find((projection) => projection.id === id)) === null || _a === void 0 ? void 0 : _a.api; + } + toApi() { + return { + open: this.open.bind(this), + my: this.my.bind(this), + list: this.list.bind(this), + findById: this.findById.bind(this), + onWindowAdded: this.onWindowAdded.bind(this), + onWindowRemoved: this.onWindowRemoved.bind(this), + onWindowGotFocus: this.onWindowGotFocus.bind(this), + onWindowLostFocus: this.onWindowLostFocus.bind(this) + }; + } + addWindowOperationExecutors() { + operations$9.focusChange.execute = this.handleFocusChangeEvent.bind(this); + operations$9.windowAdded.execute = this.handleWindowAdded.bind(this); + operations$9.windowRemoved.execute = this.handleWindowRemoved.bind(this); + operations$9.getBounds.execute = this.handleGetBounds.bind(this); + operations$9.getFrameBounds.execute = this.handleGetBounds.bind(this); + operations$9.getTitle.execute = this.handleGetTitle.bind(this); + operations$9.getUrl.execute = this.handleGetUrl.bind(this); + operations$9.moveResize.execute = this.handleMoveResize.bind(this); + operations$9.setTitle.execute = this.handleSetTitle.bind(this); + operations$9.getChannel.execute = this.handleGetChannel.bind(this); + } + my() { + return Object.assign({}, this.me); + } + onWindowAdded(callback) { + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to window added, because the provided callback is not a function!"); + } + return this.registry.add("window-added", callback); + } + onWindowRemoved(callback) { + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to window removed, because the provided callback is not a function!"); + } + return this.registry.add("window-removed", callback); + } + onWindowGotFocus(callback) { + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to onWindowGotFocus, because the provided callback is not a function!"); + } + return this.registry.add("window-got-focus", callback); + } + onWindowLostFocus(callback) { + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to onWindowLostFocus, because the provided callback is not a function!"); + } + return this.registry.add("window-lost-focus", callback); + } + sayHello() { + return __awaiter$1(this, void 0, void 0, function* () { + const helloSuccess = yield this.bridge.send("windows", operations$9.windowHello, { windowId: this.publicWindowId }); + return helloSuccess; + }); + } + registerWithPlatform() { + return __awaiter$1(this, void 0, void 0, function* () { + const { windows, isWorkspaceFrame } = yield this.sayHello(); + this.isWorkspaceFrame = isWorkspaceFrame; + this.logger.trace("the platform responded to the hello message"); + if (!this.isWorkspaceFrame && this.publicWindowId) { + this.logger.trace("i am not treated as a workspace frame, setting my window"); + const myWindow = windows.find((w) => w.windowId === this.publicWindowId); + if (!myWindow) { + throw new Error("Cannot initialize the window library, because I received no information about me from the platform"); + } + const myProjection = yield this.ioc.buildWebWindow(this.publicWindowId, myWindow.name); + this.me = myProjection.api; + this.allWindowProjections.push(myProjection); + } + const currentWindows = yield Promise.all(windows + .filter((w) => w.windowId !== this.publicWindowId) + .map((w) => this.ioc.buildWebWindow(w.windowId, w.name))); + this.logger.trace("all windows projections are completed, building the list collection"); + this.allWindowProjections.push(...currentWindows); + }); + } + handleFocusChangeEvent(focusData) { + return __awaiter$1(this, void 0, void 0, function* () { + const foundProjection = this.allWindowProjections.find((projection) => projection.id === focusData.windowId); + if (!foundProjection) { + return; + } + foundProjection.model.processSelfFocusEvent(focusData.hasFocus); + const keyToExecute = focusData.hasFocus ? "window-got-focus" : "window-lost-focus"; + this.registry.execute(keyToExecute, foundProjection.api); + }); + } + handleWindowAdded(data) { + return __awaiter$1(this, void 0, void 0, function* () { + if (this.allWindowProjections.some((projection) => projection.id === data.windowId)) { + return; + } + const webWindowProjection = yield this.ioc.buildWebWindow(data.windowId, data.name); + this.allWindowProjections.push(webWindowProjection); + this.registry.execute("window-added", webWindowProjection.api); + }); + } + handleWindowRemoved(data) { + return __awaiter$1(this, void 0, void 0, function* () { + const removed = this.allWindowProjections.find((w) => w.id === data.windowId); + if (!removed) { + return; + } + this.allWindowProjections = this.allWindowProjections.filter((w) => w.id !== data.windowId); + removed.model.clean(); + this.registry.execute("window-removed", removed.api); + }); + } + handleGetBounds() { + return __awaiter$1(this, void 0, void 0, function* () { + if (!this.me && !this.isWorkspaceFrame) { + throw new Error("This window cannot report it's bounds, because it is not a Glue Window, most likely because it is an iframe"); + } + return { + windowId: this.isWorkspaceFrame ? "noop" : this.me.id, + bounds: { + top: window.screenTop, + left: window.screenLeft, + width: window.innerWidth, + height: window.innerHeight + } + }; + }); + } + handleGetTitle() { + return __awaiter$1(this, void 0, void 0, function* () { + if (!this.me) { + throw new Error("This window cannot report it's title, because it is not a Glue Window, most likely because it is an iframe"); + } + return { + windowId: this.me.id, + title: document.title + }; + }); + } + handleGetUrl() { + return __awaiter$1(this, void 0, void 0, function* () { + if (!this.me) { + throw new Error("This window cannot report it's url, because it is not a Glue Window, most likely because it is an iframe"); + } + return { + windowId: this.me.id, + url: window.location.href + }; + }); + } + handleMoveResize(config) { + return __awaiter$1(this, void 0, void 0, function* () { + const targetTop = typeof config.top === "number" ? config.top : + config.relative ? 0 : window.screenTop; + const targetLeft = typeof config.left === "number" ? config.left : + config.relative ? 0 : window.screenLeft; + const targetHeight = typeof config.height === "number" ? config.height : + config.relative ? 0 : window.innerHeight; + const targetWidth = typeof config.width === "number" ? config.width : + config.relative ? 0 : window.innerWidth; + const moveMethod = config.relative ? window.moveBy : window.moveTo; + const resizeMethod = config.relative ? window.resizeBy : window.resizeTo; + moveMethod(targetLeft, targetTop); + resizeMethod(targetWidth, targetHeight); + }); + } + handleSetTitle(config) { + return __awaiter$1(this, void 0, void 0, function* () { + document.title = config.title; + }); + } + initializeFocusTracking() { + return __awaiter$1(this, void 0, void 0, function* () { + if (this.isWorkspaceFrame) { + this.logger.trace("Ignoring the focus tracking, because this client is a workspace frame"); + return; + } + try { + yield this.bridge.send("windows", systemOperations.operationCheck, { operation: "focusChange" }); + } + catch (error) { + this.logger.warn("The platform of this client is outdated and does not support focus tracking, disabling focus events for this client."); + return; + } + const hasFocus = document.hasFocus(); + yield this.transmitFocusChange(true); + if (!hasFocus) { + yield this.transmitFocusChange(false); + } + this.defineEventListeners(); + }); + } + processFocusEvent() { + const hasFocus = document.hasFocus(); + this.transmitFocusChange(hasFocus); + } + waitForWindowAdded(windowId) { + const foundWindow = this.allWindowProjections.find((projection) => projection.id === windowId); + if (foundWindow) { + return Promise.resolve(foundWindow.api); + } + return PromisePlus$1((resolve) => { + const unsubscribe = this.onWindowAdded((addedWindow) => { + if (addedWindow.id === windowId) { + unsubscribe(); + resolve(addedWindow); + } + }); + }, 30000, `Timed out waiting for ${windowId} to be announced`); + } + transmitFocusChange(hasFocus) { + var _a; + return __awaiter$1(this, void 0, void 0, function* () { + const eventData = { + windowId: ((_a = this.me) === null || _a === void 0 ? void 0 : _a.id) || `iframe-${this.instanceId}`, + hasFocus + }; + if (this.me) { + this.me.isFocused = hasFocus; + } + yield this.bridge.send("windows", operations$9.focusChange, eventData); + }); + } + defineEventListeners() { + this.focusEventHandler = this.processFocusEvent.bind(this); + document.addEventListener("visibilityChange", this.focusEventHandler); + window.addEventListener("focus", this.focusEventHandler); + window.addEventListener("blur", this.focusEventHandler); + } + handleGetChannel() { + return __awaiter$1(this, void 0, void 0, function* () { + if (!this.me) { + throw new Error("This window cannot report it's channel, because it is not a Glue Window, most likely because it is an iframe"); + } + const channel = this.channelsController.my(); + return Object.assign({}, (channel ? { channel } : {})); + }); + } +} + +const GlueWebPlatformControlName = "T42.Web.Platform.Control"; +const GlueWebPlatformStreamName = "T42.Web.Platform.Stream"; +const GlueClientControlName = "T42.Web.Client.Control"; +const GlueCorePlusThemesStream = "T42.Core.Plus.Themes.Stream"; + +class GlueBridge { + constructor(coreGlue, communicationId) { + this.coreGlue = coreGlue; + this.communicationId = communicationId; + this.platformMethodTimeoutMs = 10000; + } + get contextLib() { + return this.coreGlue.contexts; + } + get interopInstance() { + return this.coreGlue.interop.instance.instance; + } + stop() { + return __awaiter$1(this, void 0, void 0, function* () { + this.running = false; + this.sub.close(); + yield this.coreGlue.interop.unregister(GlueClientControlName); + }); + } + start(controllers) { + return __awaiter$1(this, void 0, void 0, function* () { + this.running = true; + this.controllers = controllers; + yield Promise.all([ + this.checkWaitMethod(GlueWebPlatformControlName), + this.checkWaitMethod(GlueWebPlatformStreamName) + ]); + const systemId = this.communicationId; + const [sub] = yield Promise.all([ + this.coreGlue.interop.subscribe(GlueWebPlatformStreamName, systemId ? { target: { instance: this.communicationId } } : undefined), + this.coreGlue.interop.registerAsync(GlueClientControlName, (args, _, success, error) => this.passMessageController(args, success, error)) + ]); + this.sub = sub; + this.sub.onData((pkg) => this.passMessageController(pkg.data)); + }); + } + getInteropInstance(windowId) { + const result = this.coreGlue.interop.servers().find((s) => s.windowId && s.windowId === windowId); + return { + application: result === null || result === void 0 ? void 0 : result.application, + applicationName: result === null || result === void 0 ? void 0 : result.applicationName, + peerId: result === null || result === void 0 ? void 0 : result.peerId, + instance: result === null || result === void 0 ? void 0 : result.instance, + windowId: result === null || result === void 0 ? void 0 : result.windowId + }; + } + send(domain, operation, operationData, options, webOptions) { + return __awaiter$1(this, void 0, void 0, function* () { + if (operation.dataDecoder) { + try { + operation.dataDecoder.runWithException(operationData); + } + catch (error) { + throw new Error(`Unexpected Web->Platform outgoing validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`); + } + } + const operationSupported = (webOptions === null || webOptions === void 0 ? void 0 : webOptions.includeOperationCheck) ? + (yield this.checkOperationSupported(domain, operation)).isSupported : + true; + if (!operationSupported) { + throw new Error(`Cannot complete operation: ${operation.name} for domain: ${domain} because this client is connected to a platform which does not support it`); + } + try { + const operationResult = yield this.transmitMessage(domain, operation, operationData, options); + if (operation.resultDecoder) { + operation.resultDecoder.runWithException(operationResult); + } + return operationResult; + } + catch (error) { + if (error.kind) { + throw new Error(`Unexpected Web<-Platform incoming validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`); + } + throw new Error(error.message); + } + }); + } + createNotificationsSteam() { + return __awaiter$1(this, void 0, void 0, function* () { + const streamExists = this.coreGlue.interop.methods().some((method) => method.name === GlueCorePlusThemesStream); + if (!streamExists) { + throw new Error("Cannot subscribe to theme changes, because the underlying interop stream does not exist. Most likely this is the case when this client is not connected to Core Plus."); + } + return this.coreGlue.interop.subscribe(GlueCorePlusThemesStream, this.communicationId ? { target: { instance: this.communicationId } } : undefined); + }); + } + checkOperationSupported(domain, operation) { + return __awaiter$1(this, void 0, void 0, function* () { + try { + const result = yield this.send(domain, systemOperations.operationCheck, { operation: operation.name }); + return result; + } + catch (error) { + return { isSupported: false }; + } + }); + } + checkWaitMethod(name) { + return PromisePlus$1((resolve) => { + const hasMethod = this.coreGlue.interop.methods().some((method) => { + const nameMatch = method.name === name; + const serverMatch = this.communicationId ? + method.getServers().some((server) => server.instance === this.communicationId) : + true; + return nameMatch && serverMatch; + }); + if (hasMethod) { + return resolve(); + } + const unSub = this.coreGlue.interop.serverMethodAdded((data) => { + const method = data.method; + const server = data.server; + const serverMatch = this.communicationId ? + server.instance === this.communicationId : + true; + if (method.name === name && serverMatch) { + unSub(); + resolve(); + } + }); + }, this.platformMethodTimeoutMs, `Cannot initiate Glue Web, because a system method's discovery timed out: ${name}`); + } + passMessageController(args, success, error) { + const decodeResult = libDomainDecoder.run(args.domain); + if (!decodeResult.ok) { + if (error) { + error(`Cannot execute this client control, because of domain validation error: ${JSON.stringify(decodeResult.error)}`); + } + return; + } + const domain = decodeResult.result; + this.controllers[domain] + .handleBridgeMessage(args) + .then((resolutionData) => { + if (success) { + success(resolutionData); + } + }) + .catch((err) => { + if (error) { + error(err); + } + console.warn(err); + }); + } + transmitMessage(domain, operation, data, options) { + return __awaiter$1(this, void 0, void 0, function* () { + const messageData = { domain, data, operation: operation.name }; + let invocationResult; + const baseErrorMessage = `Internal Platform Communication Error. Attempted operation: ${JSON.stringify(operation.name)} with data: ${JSON.stringify(data)}. `; + const systemId = this.communicationId; + try { + if (!this.running) { + throw new Error("Cannot send a control message, because the platform shut down"); + } + invocationResult = yield this.coreGlue.interop.invoke(GlueWebPlatformControlName, messageData, systemId ? { instance: this.communicationId } : undefined, options); + if (!invocationResult) { + throw new Error("Received unsupported result from the platform - empty result"); + } + if (!Array.isArray(invocationResult.all_return_values) || invocationResult.all_return_values.length === 0) { + throw new Error("Received unsupported result from the platform - empty values collection"); + } + } + catch (error) { + if (error && error.all_errors && error.all_errors.length) { + const invocationErrorMessage = error.all_errors[0].message; + throw new Error(`${baseErrorMessage} -> Inner message: ${invocationErrorMessage}`); + } + throw new Error(`${baseErrorMessage} -> Inner message: ${error.message}`); + } + return invocationResult.all_return_values[0].returned; + }); + } +} + +const operations$8 = { + appHello: { name: "appHello", dataDecoder: windowHelloDecoder, resultDecoder: appHelloSuccessDecoder }, + appDirectoryStateChange: { name: "appDirectoryStateChange", dataDecoder: appDirectoryStateChangeDecoder }, + instanceStarted: { name: "instanceStarted", dataDecoder: instanceDataDecoder }, + instanceStopped: { name: "instanceStopped", dataDecoder: instanceDataDecoder }, + applicationStart: { name: "applicationStart", dataDecoder: applicationStartConfigDecoder, resultDecoder: instanceDataDecoder }, + instanceStop: { name: "instanceStop", dataDecoder: basicInstanceDataDecoder }, + import: { name: "import" }, + remove: { name: "remove", dataDecoder: appRemoveConfigDecoder }, + export: { name: "export", resultDecoder: appsExportOperationDecoder }, + clear: { name: "clear" } +}; + +class AppManagerController { + constructor() { + this.baseApplicationsTimeoutMS = 60000; + this.appImportTimeoutMS = 20; + this.registry = lib$3(); + this.applications = []; + this.instances = []; + } + handlePlatformShutdown() { + this.registry.clear(); + this.applications = []; + this.instances = []; + delete this.me; + } + start(coreGlue, ioc) { + return __awaiter$1(this, void 0, void 0, function* () { + this.logger = coreGlue.logger.subLogger("appManger.controller.web"); + this.logger.trace("starting the web appManager controller"); + this.publicWindowId = ioc.publicWindowId; + this.addOperationsExecutors(); + this.ioc = ioc; + this.bridge = ioc.bridge; + this.channelsController = ioc.channelsController; + this.sessionController = ioc.sessionController; + this.platformRegistration = this.registerWithPlatform(); + yield this.platformRegistration; + this.logger.trace("registration with the platform successful, attaching the appManager property to glue and returning"); + const api = this.toApi(); + coreGlue.appManager = api; + }); + } + handleBridgeMessage(args) { + return __awaiter$1(this, void 0, void 0, function* () { + yield this.platformRegistration; + const operationName = appManagerOperationTypesDecoder.runWithException(args.operation); + const operation = operations$8[operationName]; + if (!operation.execute) { + return; + } + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return yield operation.execute(operationData); + }); + } + onInstanceStarted(callback) { + if (typeof callback !== "function") { + throw new Error("onInstanceStarted requires a single argument of type function"); + } + return this.registry.add("instance-started", callback, this.instances); + } + onInstanceStopped(callback) { + if (typeof callback !== "function") { + throw new Error("onInstanceStopped requires a single argument of type function"); + } + return this.registry.add("instance-stopped", callback); + } + startApplication(appName, context, options) { + var _a; + return __awaiter$1(this, void 0, void 0, function* () { + const channels = yield this.channelsController.all(); + if ((options === null || options === void 0 ? void 0 : options.channelId) && !channels.includes(options.channelId)) { + throw new Error(`The channel with name "${options.channelId}" doesn't exist!`); + } + const startOptions = { + name: appName, + waitForAGMReady: (_a = options === null || options === void 0 ? void 0 : options.waitForAGMReady) !== null && _a !== void 0 ? _a : true, + context, + top: options === null || options === void 0 ? void 0 : options.top, + left: options === null || options === void 0 ? void 0 : options.left, + width: options === null || options === void 0 ? void 0 : options.width, + height: options === null || options === void 0 ? void 0 : options.height, + relativeTo: options === null || options === void 0 ? void 0 : options.relativeTo, + relativeDirection: options === null || options === void 0 ? void 0 : options.relativeDirection, + id: options === null || options === void 0 ? void 0 : options.reuseId, + forceChromeTab: options === null || options === void 0 ? void 0 : options.forceTab, + layoutComponentId: options === null || options === void 0 ? void 0 : options.layoutComponentId, + channelId: options === null || options === void 0 ? void 0 : options.channelId + }; + const openResult = yield this.bridge.send("appManager", operations$8.applicationStart, startOptions); + const app = this.applications.find((a) => a.name === openResult.applicationName); + return this.ioc.buildInstance(openResult, app); + }); + } + getApplication(name) { + const verifiedName = nonEmptyStringDecoder.runWithException(name); + return this.applications.find((app) => app.name === verifiedName); + } + getInstances() { + return this.instances.slice(); + } + toApi() { + const api = { + myInstance: this.me, + inMemory: { + import: this.import.bind(this), + remove: this.remove.bind(this), + export: this.export.bind(this), + clear: this.clear.bind(this) + }, + application: this.getApplication.bind(this), + applications: this.getApplications.bind(this), + instances: this.getInstances.bind(this), + onAppAdded: this.onAppAdded.bind(this), + onAppChanged: this.onAppChanged.bind(this), + onAppRemoved: this.onAppRemoved.bind(this), + onInstanceStarted: this.onInstanceStarted.bind(this), + onInstanceStopped: this.onInstanceStopped.bind(this) + }; + return api; + } + addOperationsExecutors() { + operations$8.appDirectoryStateChange.execute = this.handleAppDirectoryStateChange.bind(this); + operations$8.instanceStarted.execute = this.handleInstanceStartedMessage.bind(this); + operations$8.instanceStopped.execute = this.handleInstanceStoppedMessage.bind(this); + } + handleAppDirectoryStateChange(data) { + return __awaiter$1(this, void 0, void 0, function* () { + data.appsAdded.forEach(this.handleApplicationAddedMessage.bind(this)); + data.appsChanged.forEach(this.handleApplicationChangedMessage.bind(this)); + data.appsRemoved.forEach(this.handleApplicationRemovedMessage.bind(this)); + }); + } + onAppAdded(callback) { + if (typeof callback !== "function") { + throw new Error("onAppAdded requires a single argument of type function"); + } + return this.registry.add("application-added", callback, this.applications); + } + onAppRemoved(callback) { + if (typeof callback !== "function") { + throw new Error("onAppRemoved requires a single argument of type function"); + } + return this.registry.add("application-removed", callback); + } + onAppChanged(callback) { + if (typeof callback !== "function") { + throw new Error("onAppChanged requires a single argument of type function"); + } + return this.registry.add("application-changed", callback); + } + handleApplicationAddedMessage(appData) { + return __awaiter$1(this, void 0, void 0, function* () { + if (this.applications.some((app) => app.name === appData.name)) { + return; + } + const app = yield this.ioc.buildApplication(appData, []); + const instances = this.instances.filter((instance) => instance.application.name === app.name); + app.instances.push(...instances); + this.applications.push(app); + this.registry.execute("application-added", app); + }); + } + handleApplicationRemovedMessage(appData) { + return __awaiter$1(this, void 0, void 0, function* () { + const appIndex = this.applications.findIndex((app) => app.name === appData.name); + if (appIndex < 0) { + return; + } + const app = this.applications[appIndex]; + this.applications.splice(appIndex, 1); + this.registry.execute("application-removed", app); + }); + } + handleApplicationChangedMessage(appData) { + return __awaiter$1(this, void 0, void 0, function* () { + const app = this.applications.find((app) => app.name === appData.name); + if (!app) { + return this.handleApplicationAddedMessage(appData); + } + app.title = appData.title; + app.version = appData.version; + app.icon = appData.icon; + app.caption = appData.caption; + app.userProperties = appData.userProperties; + this.registry.execute("application-changed", app); + }); + } + handleInstanceStartedMessage(instanceData) { + return __awaiter$1(this, void 0, void 0, function* () { + if (this.instances.some((instance) => instance.id === instanceData.id)) { + return; + } + const application = this.applications.find((app) => app.name === instanceData.applicationName); + if (!application) { + throw new Error(`Cannot add instance: ${instanceData.id}, because there is no application definition associated with it`); + } + const instance = this.ioc.buildInstance(instanceData, application); + this.instances.push(instance); + application.instances.push(instance); + this.registry.execute("instance-started", instance); + }); + } + handleInstanceStoppedMessage(instanceData) { + return __awaiter$1(this, void 0, void 0, function* () { + const instance = this.instances.find((i) => i.id === instanceData.id); + if (instance) { + const instIdx = this.instances.findIndex((inst) => inst.id === instanceData.id); + this.instances.splice(instIdx, 1); + } + const application = this.applications.find((app) => app.instances.some((inst) => inst.id === instanceData.id)); + if (application) { + const instIdxApps = application.instances.findIndex((inst) => inst.id === instanceData.id); + application.instances.splice(instIdxApps, 1); + } + if (!instance) { + return; + } + this.registry.execute("instance-stopped", instance); + }); + } + import(definitions, mode = "replace") { + return __awaiter$1(this, void 0, void 0, function* () { + importModeDecoder.runWithException(mode); + if (!Array.isArray(definitions)) { + throw new Error("Import must be called with an array of definitions"); + } + if (definitions.length > 10000) { + throw new Error("Cannot import more than 10000 app definitions in Glue42 Core."); + } + const parseResult = definitions.reduce((soFar, definition) => { + const decodeResult = allApplicationDefinitionsDecoder.run(definition); + if (!decodeResult.ok) { + soFar.invalid.push({ app: definition === null || definition === void 0 ? void 0 : definition.name, error: JSON.stringify(decodeResult.error) }); + } + else { + soFar.valid.push(definition); + } + return soFar; + }, { valid: [], invalid: [] }); + const responseTimeout = this.baseApplicationsTimeoutMS + this.appImportTimeoutMS * parseResult.valid.length; + yield this.bridge.send("appManager", operations$8.import, { definitions: parseResult.valid, mode }, { methodResponseTimeoutMs: responseTimeout }); + return { + imported: parseResult.valid.map((valid) => valid.name), + errors: parseResult.invalid + }; + }); + } + remove(name) { + return __awaiter$1(this, void 0, void 0, function* () { + nonEmptyStringDecoder.runWithException(name); + yield this.bridge.send("appManager", operations$8.remove, { name }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); + }); + } + clear() { + return __awaiter$1(this, void 0, void 0, function* () { + yield this.bridge.send("appManager", operations$8.clear, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); + }); + } + export() { + return __awaiter$1(this, void 0, void 0, function* () { + const response = yield this.bridge.send("appManager", operations$8.export, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); + return response.definitions; + }); + } + getApplications() { + return this.applications.slice(); + } + joinInitialChannel(initialChannelId) { + return __awaiter$1(this, void 0, void 0, function* () { + try { + yield this.channelsController.join(initialChannelId); + } + catch (error) { + this.logger.warn(`Application instance ${this.me} was unable to join the ${initialChannelId} channel. Reason: ${JSON.stringify(error)}`); + } + }); + } + registerWithPlatform() { + return __awaiter$1(this, void 0, void 0, function* () { + const result = yield this.bridge.send("appManager", operations$8.appHello, { windowId: this.publicWindowId }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); + this.logger.trace("the platform responded to the hello message with a full list of apps"); + this.applications = yield Promise.all(result.apps.map((app) => this.ioc.buildApplication(app, app.instances))); + this.instances = this.applications.reduce((instancesSoFar, app) => { + instancesSoFar.push(...app.instances); + return instancesSoFar; + }, []); + this.me = this.findMyInstance(); + this.logger.trace(`all applications were parsed and saved. I am ${this.me ? "NOT a" : "a"} valid instance`); + const { channels: channelsStorageData } = this.sessionController.getWindowData(); + const channel = channelsStorageData ? channelsStorageData.currentName : result.initialChannelId; + if (channel) { + yield this.joinInitialChannel(channel); + } + }); + } + findMyInstance() { + for (const app of this.applications) { + const foundInstance = app.instances.find((instance) => instance.id === this.publicWindowId); + if (foundInstance) { + return foundInstance; + } + } + return undefined; + } +} + +class InstanceModel { + constructor(data, bridge, application) { + this.data = data; + this.bridge = bridge; + this.application = application; + this.myCtxKey = `___instance___${this.data.id}`; + } + toApi() { + const agm = this.bridge.getInteropInstance(this.data.id); + const api = { + id: this.data.id, + agm, + application: this.application, + stop: this.stop.bind(this), + getContext: this.getContext.bind(this) + }; + this.me = Object.freeze(api); + return this.me; + } + getContext() { + return __awaiter$1(this, void 0, void 0, function* () { + return this.bridge.contextLib.get(this.myCtxKey); + }); + } + stop() { + return __awaiter$1(this, void 0, void 0, function* () { + yield this.bridge.send("appManager", operations$8.instanceStop, { id: this.data.id }); + }); + } +} + +class ApplicationModel { + constructor(data, instances, controller) { + this.data = data; + this.instances = instances; + this.controller = controller; + } + toApi() { + const api = { + name: this.data.name, + title: this.data.title, + version: this.data.version, + icon: this.data.icon, + caption: this.data.caption, + userProperties: this.data.userProperties, + instances: this.instances, + start: this.start.bind(this), + onInstanceStarted: this.onInstanceStarted.bind(this), + onInstanceStopped: this.onInstanceStopped.bind(this) + }; + this.me = api; + return this.me; + } + onInstanceStarted(callback) { + if (typeof callback !== "function") { + throw new Error("OnInstanceStarted requires a single argument of type function"); + } + return this.controller.onInstanceStarted((instance) => { + if (instance.application.name === this.data.name) { + callback(instance); + } + }); + } + onInstanceStopped(callback) { + if (typeof callback !== "function") { + throw new Error("OnInstanceStarted requires a single argument of type function"); + } + return this.controller.onInstanceStopped((instance) => { + if (instance.application.name === this.data.name) { + callback(instance); + } + }); + } + start(context, options) { + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedContext = startApplicationContextDecoder.runWithException(context); + const verifiedOptions = startApplicationOptionsDecoder.runWithException(options); + return this.controller.startApplication(this.data.name, verifiedContext, verifiedOptions); + }); + } +} + +const operations$7 = { + layoutAdded: { name: "layoutAdded", dataDecoder: glueLayoutDecoder }, + layoutChanged: { name: "layoutChanged", dataDecoder: glueLayoutDecoder }, + layoutRemoved: { name: "layoutRemoved", dataDecoder: glueLayoutDecoder }, + get: { name: "get", dataDecoder: simpleLayoutConfigDecoder, resultDecoder: optionalSimpleLayoutResult }, + getAll: { name: "getAll", dataDecoder: getAllLayoutsConfigDecoder, resultDecoder: allLayoutsSummariesResultDecoder }, + export: { name: "export", dataDecoder: getAllLayoutsConfigDecoder, resultDecoder: allLayoutsFullConfigDecoder }, + import: { name: "import", dataDecoder: layoutsImportConfigDecoder }, + remove: { name: "remove", dataDecoder: simpleLayoutConfigDecoder }, + save: { name: "save", dataDecoder: saveLayoutConfigDecoder, resultDecoder: simpleLayoutResultDecoder }, + restore: { name: "restore", dataDecoder: restoreLayoutConfigDecoder }, + clientSaveRequest: { name: "clientSaveRequest", dataDecoder: platformSaveRequestConfigDecoder, resultDecoder: saveRequestClientResponseDecoder }, + getGlobalPermissionState: { name: "getGlobalPermissionState", resultDecoder: permissionStateResultDecoder }, + requestGlobalPermission: { name: "requestGlobalPermission", resultDecoder: simpleAvailabilityResultDecoder }, + checkGlobalActivated: { name: "checkGlobalActivated", resultDecoder: simpleAvailabilityResultDecoder }, + getDefaultGlobal: { name: "getDefaultGlobal", resultDecoder: optionalSimpleLayoutResult }, + setDefaultGlobal: { name: "setDefaultGlobal", dataDecoder: setDefaultGlobalConfigDecoder }, + clearDefaultGlobal: { name: "clearDefaultGlobal" } +}; + +class LayoutsController { + constructor() { + this.defaultLayoutRestoreTimeoutMS = 120000; + this.registry = lib$3(); + } + handlePlatformShutdown() { + this.registry.clear(); + } + start(coreGlue, ioc) { + return __awaiter$1(this, void 0, void 0, function* () { + this.logger = coreGlue.logger.subLogger("layouts.controller.web"); + this.logger.trace("starting the web layouts controller"); + this.bridge = ioc.bridge; + this.windowsController = ioc.windowsController; + this.addOperationsExecutors(); + const api = this.toApi(); + this.logger.trace("no need for platform registration, attaching the layouts property to glue and returning"); + coreGlue.layouts = api; + }); + } + handleBridgeMessage(args) { + return __awaiter$1(this, void 0, void 0, function* () { + const operationName = layoutsOperationTypesDecoder.runWithException(args.operation); + const operation = operations$7[operationName]; + if (!operation.execute) { + return; + } + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return yield operation.execute(operationData); + }); + } + toApi() { + const api = { + get: this.get.bind(this), + getAll: this.getAll.bind(this), + export: this.export.bind(this), + import: this.import.bind(this), + save: this.save.bind(this), + restore: this.restore.bind(this), + remove: this.remove.bind(this), + onAdded: this.onAdded.bind(this), + onChanged: this.onChanged.bind(this), + onRemoved: this.onRemoved.bind(this), + onSaveRequested: this.subscribeOnSaveRequested.bind(this), + getMultiScreenPermissionState: this.getGlobalPermissionState.bind(this), + requestMultiScreenPermission: this.requestGlobalPermission.bind(this), + getGlobalTypeState: this.checkGlobalActivated.bind(this), + getDefaultGlobal: this.getDefaultGlobal.bind(this), + setDefaultGlobal: this.setDefaultGlobal.bind(this), + clearDefaultGlobal: this.clearDefaultGlobal.bind(this) + }; + return Object.freeze(api); + } + addOperationsExecutors() { + operations$7.layoutAdded.execute = this.handleOnAdded.bind(this); + operations$7.layoutChanged.execute = this.handleOnChanged.bind(this); + operations$7.layoutRemoved.execute = this.handleOnRemoved.bind(this); + operations$7.clientSaveRequest.execute = this.handleSaveRequest.bind(this); + } + get(name, type) { + return __awaiter$1(this, void 0, void 0, function* () { + nonEmptyStringDecoder.runWithException(name); + layoutTypeDecoder.runWithException(type); + const result = yield this.bridge.send("layouts", operations$7.get, { name, type }); + return result.layout; + }); + } + getAll(type) { + return __awaiter$1(this, void 0, void 0, function* () { + layoutTypeDecoder.runWithException(type); + const result = yield this.bridge.send("layouts", operations$7.getAll, { type }); + return result.summaries; + }); + } + export(type) { + return __awaiter$1(this, void 0, void 0, function* () { + layoutTypeDecoder.runWithException(type); + const result = yield this.bridge.send("layouts", operations$7.export, { type }); + return result.layouts; + }); + } + import(layouts, mode = "replace") { + return __awaiter$1(this, void 0, void 0, function* () { + importModeDecoder.runWithException(mode); + if (!Array.isArray(layouts)) { + throw new Error("Import must be called with an array of layouts"); + } + if (layouts.length > 1000) { + throw new Error("Cannot import more than 1000 layouts at once in Glue42 Core."); + } + const parseResult = layouts.reduce((soFar, layout) => { + const decodeResult = glueLayoutDecoder.run(layout); + if (decodeResult.ok) { + soFar.valid.push(layout); + } + else { + this.logger.warn(`A layout with name: ${layout.name} was not imported, because of error: ${JSON.stringify(decodeResult.error)}`); + } + return soFar; + }, { valid: [] }); + const layoutsToImport = layouts.filter((layout) => parseResult.valid.some((validLayout) => validLayout.name === layout.name)); + yield this.bridge.send("layouts", operations$7.import, { layouts: layoutsToImport, mode }); + }); + } + save(layout) { + return __awaiter$1(this, void 0, void 0, function* () { + newLayoutOptionsDecoder.runWithException(layout); + const saveResult = yield this.bridge.send("layouts", operations$7.save, { layout }); + return saveResult.layout; + }); + } + restore(options) { + return __awaiter$1(this, void 0, void 0, function* () { + restoreOptionsDecoder.runWithException(options); + const invocationTimeout = options.timeout ? options.timeout * 2 : this.defaultLayoutRestoreTimeoutMS; + yield this.bridge.send("layouts", operations$7.restore, { layout: options }, { methodResponseTimeoutMs: invocationTimeout }); + }); + } + remove(type, name) { + return __awaiter$1(this, void 0, void 0, function* () { + layoutTypeDecoder.runWithException(type); + nonEmptyStringDecoder.runWithException(name); + yield this.bridge.send("layouts", operations$7.remove, { type, name }); + }); + } + handleSaveRequest(config) { + return __awaiter$1(this, void 0, void 0, function* () { + const response = {}; + if (this.saveRequestSubscription) { + try { + const onSaveRequestResponse = this.saveRequestSubscription(config); + response.windowContext = onSaveRequestResponse === null || onSaveRequestResponse === void 0 ? void 0 : onSaveRequestResponse.windowContext; + } + catch (error) { + this.logger.warn(`An error was thrown by the onSaveRequested callback, ignoring the callback: ${JSON.stringify(error)}`); + } + } + return response; + }); + } + getGlobalPermissionState() { + return __awaiter$1(this, void 0, void 0, function* () { + const requestResult = yield this.bridge.send("layouts", operations$7.getGlobalPermissionState, undefined); + return requestResult; + }); + } + requestGlobalPermission() { + return __awaiter$1(this, void 0, void 0, function* () { + const currentState = (yield this.getGlobalPermissionState()).state; + if (currentState === "denied") { + return { permissionGranted: false }; + } + if (currentState === "granted") { + return { permissionGranted: true }; + } + const myWindow = this.windowsController.my(); + const globalNamespace = window.glue42core || window.iobrowser; + const amIWorkspaceFrame = globalNamespace.isPlatformFrame; + if (myWindow.name !== "Platform" && !amIWorkspaceFrame) { + throw new Error("Cannot request permission for multi-window placement from any app other than the Platform."); + } + const requestResult = yield this.bridge.send("layouts", operations$7.requestGlobalPermission, undefined, { methodResponseTimeoutMs: 180000 }); + return { permissionGranted: requestResult.isAvailable }; + }); + } + checkGlobalActivated() { + return __awaiter$1(this, void 0, void 0, function* () { + const requestResult = yield this.bridge.send("layouts", operations$7.checkGlobalActivated, undefined); + return { activated: requestResult.isAvailable }; + }); + } + getDefaultGlobal() { + return __awaiter$1(this, void 0, void 0, function* () { + const requestResult = yield this.bridge.send("layouts", operations$7.getDefaultGlobal, undefined, undefined, { includeOperationCheck: true }); + return requestResult.layout; + }); + } + setDefaultGlobal(name) { + return __awaiter$1(this, void 0, void 0, function* () { + nonEmptyStringDecoder.runWithException(name); + yield this.bridge.send("layouts", operations$7.setDefaultGlobal, { name }, undefined, { includeOperationCheck: true }); + }); + } + clearDefaultGlobal() { + return __awaiter$1(this, void 0, void 0, function* () { + yield this.bridge.send("layouts", operations$7.clearDefaultGlobal, undefined, undefined, { includeOperationCheck: true }); + }); + } + onAdded(callback) { + this.export("Global").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => { }); + this.export("Workspace").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => { }); + return this.registry.add(operations$7.layoutAdded.name, callback); + } + onChanged(callback) { + return this.registry.add(operations$7.layoutChanged.name, callback); + } + onRemoved(callback) { + return this.registry.add(operations$7.layoutRemoved.name, callback); + } + subscribeOnSaveRequested(callback) { + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to onSaveRequested, because the provided argument is not a valid callback function."); + } + if (this.saveRequestSubscription) { + throw new Error("Cannot subscribe to onSaveRequested, because this client has already subscribed and only one subscription is supported. Consider unsubscribing from the initial one."); + } + this.saveRequestSubscription = callback; + return () => { + delete this.saveRequestSubscription; + }; + } + handleOnAdded(layout) { + return __awaiter$1(this, void 0, void 0, function* () { + this.registry.execute(operations$7.layoutAdded.name, layout); + }); + } + handleOnChanged(layout) { + return __awaiter$1(this, void 0, void 0, function* () { + this.registry.execute(operations$7.layoutChanged.name, layout); + }); + } + handleOnRemoved(layout) { + return __awaiter$1(this, void 0, void 0, function* () { + this.registry.execute(operations$7.layoutRemoved.name, layout); + }); + } +} + +const operations$6 = { + raiseNotification: { name: "raiseNotification", dataDecoder: raiseNotificationDecoder, resultDecoder: raiseNotificationResultDecoder }, + requestPermission: { name: "requestPermission", resultDecoder: permissionRequestResultDecoder }, + notificationShow: { name: "notificationShow", dataDecoder: notificationEventPayloadDecoder }, + notificationClick: { name: "notificationClick", dataDecoder: notificationEventPayloadDecoder }, + getPermission: { name: "getPermission", resultDecoder: permissionQueryResultDecoder }, + list: { name: "list", resultDecoder: allNotificationsDataDecoder }, + notificationRaised: { name: "notificationRaised", dataDecoder: simpleNotificationDataDecoder }, + notificationClosed: { name: "notificationClosed", dataDecoder: simpleNotificationSelectDecoder }, + click: { name: "click" }, + clear: { name: "clear" }, + clearAll: { name: "clearAll" }, + clearOld: { name: "clearOld" }, + configure: { name: "configure", dataDecoder: notificationsConfigurationProtocolDecoder }, + getConfiguration: { name: "getConfiguration", resultDecoder: strictNotificationsConfigurationProtocolDecoder }, + configurationChanged: { name: "configurationChanged", resultDecoder: strictNotificationsConfigurationProtocolDecoder }, + setState: { name: "setState", dataDecoder: notificationSetStateRequestDecoder }, + activeCountChange: { name: "activeCountChange", resultDecoder: activeNotificationsCountChangeDecoder }, + stateChange: { name: "stateChange", resultDecoder: notificationSetStateRequestDecoder } +}; + +var shortidExports$1 = {}; +var shortid$3 = { + get exports(){ return shortidExports$1; }, + set exports(v){ shortidExports$1 = v; }, +}; + +var libExports$1 = {}; +var lib$2 = { + get exports(){ return libExports$1; }, + set exports(v){ libExports$1 = v; }, +}; + +// Found this seed-based random generator somewhere +// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu) + +var seed$1 = 1; + +/** + * return a random number based on a seed + * @param seed + * @returns {number} + */ +function getNextValue$1() { + seed$1 = (seed$1 * 9301 + 49297) % 233280; + return seed$1/(233280.0); +} + +function setSeed$3(_seed_) { + seed$1 = _seed_; +} + +var randomFromSeed$3 = { + nextValue: getNextValue$1, + seed: setSeed$3 +}; + +var randomFromSeed$2 = randomFromSeed$3; + +var ORIGINAL$1 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-'; +var alphabet$5; +var previousSeed$1; + +var shuffled$1; + +function reset$1() { + shuffled$1 = false; +} + +function setCharacters$1(_alphabet_) { + if (!_alphabet_) { + if (alphabet$5 !== ORIGINAL$1) { + alphabet$5 = ORIGINAL$1; + reset$1(); + } + return; + } + + if (_alphabet_ === alphabet$5) { + return; + } + + if (_alphabet_.length !== ORIGINAL$1.length) { + throw new Error('Custom alphabet for shortid must be ' + ORIGINAL$1.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_); + } + + var unique = _alphabet_.split('').filter(function(item, ind, arr){ + return ind !== arr.lastIndexOf(item); + }); + + if (unique.length) { + throw new Error('Custom alphabet for shortid must be ' + ORIGINAL$1.length + ' unique characters. These characters were not unique: ' + unique.join(', ')); + } + + alphabet$5 = _alphabet_; + reset$1(); +} + +function characters$1(_alphabet_) { + setCharacters$1(_alphabet_); + return alphabet$5; +} + +function setSeed$2(seed) { + randomFromSeed$2.seed(seed); + if (previousSeed$1 !== seed) { + reset$1(); + previousSeed$1 = seed; + } +} + +function shuffle$1() { + if (!alphabet$5) { + setCharacters$1(ORIGINAL$1); + } + + var sourceArray = alphabet$5.split(''); + var targetArray = []; + var r = randomFromSeed$2.nextValue(); + var characterIndex; + + while (sourceArray.length > 0) { + r = randomFromSeed$2.nextValue(); + characterIndex = Math.floor(r * sourceArray.length); + targetArray.push(sourceArray.splice(characterIndex, 1)[0]); + } + return targetArray.join(''); +} + +function getShuffled$1() { + if (shuffled$1) { + return shuffled$1; + } + shuffled$1 = shuffle$1(); + return shuffled$1; +} + +/** + * lookup shuffled letter + * @param index + * @returns {string} + */ +function lookup$1(index) { + var alphabetShuffled = getShuffled$1(); + return alphabetShuffled[index]; +} + +function get$1 () { + return alphabet$5 || ORIGINAL$1; +} + +var alphabet_1$1 = { + get: get$1, + characters: characters$1, + seed: setSeed$2, + lookup: lookup$1, + shuffled: getShuffled$1 +}; + +var crypto$1 = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto + +var randomByte$1; + +if (!crypto$1 || !crypto$1.getRandomValues) { + randomByte$1 = function(size) { + var bytes = []; + for (var i = 0; i < size; i++) { + bytes.push(Math.floor(Math.random() * 256)); + } + return bytes; + }; +} else { + randomByte$1 = function(size) { + return crypto$1.getRandomValues(new Uint8Array(size)); + }; +} + +var randomByteBrowser$1 = randomByte$1; + +// This file replaces `format.js` in bundlers like webpack or Rollup, +// according to `browser` config in `package.json`. + +var format_browser$1 = function (random, alphabet, size) { + // We can’t use bytes bigger than the alphabet. To make bytes values closer + // to the alphabet, we apply bitmask on them. We look for the closest + // `2 ** x - 1` number, which will be bigger than alphabet size. If we have + // 30 symbols in the alphabet, we will take 31 (00011111). + // We do not use faster Math.clz32, because it is not available in browsers. + var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1; + // Bitmask is not a perfect solution (in our example it will pass 31 bytes, + // which is bigger than the alphabet). As a result, we will need more bytes, + // than ID size, because we will refuse bytes bigger than the alphabet. + + // Every hardware random generator call is costly, + // because we need to wait for entropy collection. This is why often it will + // be faster to ask for few extra bytes in advance, to avoid additional calls. + + // Here we calculate how many random bytes should we call in advance. + // It depends on ID length, mask / alphabet size and magic number 1.6 + // (which was selected according benchmarks). + + // -~f => Math.ceil(f) if n is float number + // -~i => i + 1 if n is integer number + var step = -~(1.6 * mask * size / alphabet.length); + var id = ''; + + while (true) { + var bytes = random(step); + // Compact alternative for `for (var i = 0; i < step; i++)` + var i = step; + while (i--) { + // If random byte is bigger than alphabet even after bitmask, + // we refuse it by `|| ''`. + id += alphabet[bytes[i] & mask] || ''; + // More compact than `id.length + 1 === size` + if (id.length === +size) return id + } + } +}; + +var alphabet$4 = alphabet_1$1; +var random$1 = randomByteBrowser$1; +var format$1 = format_browser$1; + +function generate$3(number) { + var loopCounter = 0; + var done; + + var str = ''; + + while (!done) { + str = str + format$1(random$1, alphabet$4.get(), 1); + done = number < (Math.pow(16, loopCounter + 1 ) ); + loopCounter++; + } + return str; +} + +var generate_1$1 = generate$3; + +var generate$2 = generate_1$1; + +// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness. +// This number should be updated every year or so to keep the generated id short. +// To regenerate `new Date() - 0` and bump the version. Always bump the version! +var REDUCE_TIME$1 = 1567752802062; + +// don't change unless we change the algos or REDUCE_TIME +// must be an integer and less than 16 +var version$3 = 7; + +// Counter is used when shortid is called multiple times in one second. +var counter$1; + +// Remember the last time shortid was called in case counter is needed. +var previousSeconds$1; + +/** + * Generate unique id + * Returns string id + */ +function build$1(clusterWorkerId) { + var str = ''; + + var seconds = Math.floor((Date.now() - REDUCE_TIME$1) * 0.001); + + if (seconds === previousSeconds$1) { + counter$1++; + } else { + counter$1 = 0; + previousSeconds$1 = seconds; + } + + str = str + generate$2(version$3); + str = str + generate$2(clusterWorkerId); + if (counter$1 > 0) { + str = str + generate$2(counter$1); + } + str = str + generate$2(seconds); + return str; +} + +var build_1$1 = build$1; + +var alphabet$3 = alphabet_1$1; + +function isShortId$1(id) { + if (!id || typeof id !== 'string' || id.length < 6 ) { + return false; + } + + var nonAlphabetic = new RegExp('[^' + + alphabet$3.get().replace(/[|\\{}()[\]^$+*?.-]/g, '\\$&') + + ']'); + return !nonAlphabetic.test(id); +} + +var isValid$1 = isShortId$1; + +(function (module) { + + var alphabet = alphabet_1$1; + var build = build_1$1; + var isValid = isValid$1; + + // if you are using cluster or multiple servers use this to make each instance + // has a unique value for worker + // Note: I don't know if this is automatically set when using third + // party cluster solutions such as pm2. + var clusterWorkerId = 0; + + /** + * Set the seed. + * Highly recommended if you don't want people to try to figure out your id schema. + * exposed as shortid.seed(int) + * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps. + */ + function seed(seedValue) { + alphabet.seed(seedValue); + return module.exports; + } + + /** + * Set the cluster worker or machine id + * exposed as shortid.worker(int) + * @param workerId worker must be positive integer. Number less than 16 is recommended. + * returns shortid module so it can be chained. + */ + function worker(workerId) { + clusterWorkerId = workerId; + return module.exports; + } + + /** + * + * sets new characters to use in the alphabet + * returns the shuffled alphabet + */ + function characters(newCharacters) { + if (newCharacters !== undefined) { + alphabet.characters(newCharacters); + } + + return alphabet.shuffled(); + } + + /** + * Generate unique id + * Returns string id + */ + function generate() { + return build(clusterWorkerId); + } + + // Export all other functions as properties of the generate function + module.exports = generate; + module.exports.generate = generate; + module.exports.seed = seed; + module.exports.worker = worker; + module.exports.characters = characters; + module.exports.isValid = isValid; +} (lib$2)); + +(function (module) { + module.exports = libExports$1; +} (shortid$3)); + +var shortid$2 = /*@__PURE__*/getDefaultExportFromCjs$1(shortidExports$1); + +class NotificationsController { + constructor() { + this.registry = lib$3(); + this.notifications = {}; + } + handlePlatformShutdown() { + this.notifications = {}; + this.registry.clear(); + } + start(coreGlue, ioc) { + return __awaiter$1(this, void 0, void 0, function* () { + this.logger = coreGlue.logger.subLogger("notifications.controller.web"); + this.logger.trace("starting the web notifications controller"); + this.bridge = ioc.bridge; + this.coreGlue = coreGlue; + this.notificationsSettings = ioc.config.notifications; + this.buildNotificationFunc = ioc.buildNotification; + const api = this.toApi(); + this.addOperationExecutors(); + coreGlue.notifications = api; + this.logger.trace("notifications are ready"); + }); + } + handleBridgeMessage(args) { + return __awaiter$1(this, void 0, void 0, function* () { + const operationName = notificationsOperationTypesDecoder.runWithException(args.operation); + const operation = operations$6[operationName]; + if (!operation.execute) { + return; + } + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return yield operation.execute(operationData); + }); + } + toApi() { + const api = { + raise: this.raise.bind(this), + requestPermission: this.requestPermission.bind(this), + getPermission: this.getPermission.bind(this), + list: this.list.bind(this), + onRaised: this.onRaised.bind(this), + onClosed: this.onClosed.bind(this), + click: this.click.bind(this), + clear: this.clear.bind(this), + clearAll: this.clearAll.bind(this), + clearOld: this.clearOld.bind(this), + configure: this.configure.bind(this), + getConfiguration: this.getConfiguration.bind(this), + getFilter: this.getFilter.bind(this), + setFilter: this.setFilter.bind(this), + setState: this.setState.bind(this), + onConfigurationChanged: this.onConfigurationChanged.bind(this), + onActiveCountChanged: this.onActiveCountChanged.bind(this), + onStateChanged: this.onStateChanged.bind(this) + }; + return Object.freeze(api); + } + getPermission() { + return __awaiter$1(this, void 0, void 0, function* () { + const queryResult = yield this.bridge.send("notifications", operations$6.getPermission, undefined); + return queryResult.permission; + }); + } + requestPermission() { + return __awaiter$1(this, void 0, void 0, function* () { + const permissionResult = yield this.bridge.send("notifications", operations$6.requestPermission, undefined); + return permissionResult.permissionGranted; + }); + } + raise(options) { + return __awaiter$1(this, void 0, void 0, function* () { + const settings = glue42NotificationOptionsDecoder.runWithException(options); + settings.showToast = typeof settings.showToast === "boolean" ? settings.showToast : true; + settings.showInPanel = typeof settings.showInPanel === "boolean" ? settings.showInPanel : true; + const permissionGranted = yield this.requestPermission(); + if (!permissionGranted) { + throw new Error("Cannot raise the notification, because the user has declined the permission request"); + } + const id = shortidExports$1.generate(); + const raiseResult = yield this.bridge.send("notifications", operations$6.raiseNotification, { settings, id }); + const notification = this.buildNotificationFunc(raiseResult.settings, id); + this.notifications[id] = notification; + return notification; + }); + } + list() { + return __awaiter$1(this, void 0, void 0, function* () { + const bridgeResponse = yield this.bridge.send("notifications", operations$6.list, undefined, undefined, { includeOperationCheck: true }); + return bridgeResponse.notifications; + }); + } + onRaised(callback) { + if (typeof callback !== "function") { + throw new Error("onRaised expects a callback of type function"); + } + return this.registry.add("notification-raised", callback); + } + onClosed(callback) { + if (typeof callback !== "function") { + throw new Error("onRaised expects a callback of type function"); + } + return this.registry.add("notification-closed", callback); + } + click(id, action) { + return __awaiter$1(this, void 0, void 0, function* () { + nonEmptyStringDecoder.runWithException(id); + if (action) { + nonEmptyStringDecoder.runWithException(action); + } + yield this.bridge.send("notifications", operations$6.click, { id, action }, undefined, { includeOperationCheck: true }); + }); + } + clear(id) { + return __awaiter$1(this, void 0, void 0, function* () { + nonEmptyStringDecoder.runWithException(id); + yield this.bridge.send("notifications", operations$6.clear, { id }, undefined, { includeOperationCheck: true }); + }); + } + clearAll() { + return __awaiter$1(this, void 0, void 0, function* () { + yield this.bridge.send("notifications", operations$6.clearAll, undefined, undefined, { includeOperationCheck: true }); + }); + } + clearOld() { + return __awaiter$1(this, void 0, void 0, function* () { + yield this.bridge.send("notifications", operations$6.clearOld, undefined, undefined, { includeOperationCheck: true }); + }); + } + configure(config) { + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedConfig = notificationsConfigurationDecoder.runWithException(config); + yield this.bridge.send("notifications", operations$6.configure, { configuration: verifiedConfig }, undefined, { includeOperationCheck: true }); + }); + } + getConfiguration() { + return __awaiter$1(this, void 0, void 0, function* () { + const response = yield this.bridge.send("notifications", operations$6.getConfiguration, undefined, undefined, { includeOperationCheck: true }); + return response.configuration; + }); + } + getFilter() { + return __awaiter$1(this, void 0, void 0, function* () { + const response = yield this.bridge.send("notifications", operations$6.getConfiguration, undefined, undefined, { includeOperationCheck: true }); + return response.configuration.sourceFilter; + }); + } + setFilter(filter) { + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedFilter = notificationFilterDecoder.runWithException(filter); + yield this.bridge.send("notifications", operations$6.configure, { configuration: { sourceFilter: verifiedFilter } }, undefined, { includeOperationCheck: true }); + return verifiedFilter; + }); + } + setState(id, state) { + return __awaiter$1(this, void 0, void 0, function* () { + nonEmptyStringDecoder.runWithException(id); + notificationStateDecoder.runWithException(state); + yield this.bridge.send("notifications", operations$6.setState, { id, state }, undefined, { includeOperationCheck: true }); + }); + } + onConfigurationChanged(callback) { + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to configuration changed, because the provided callback is not a function!"); + } + return this.registry.add("notifications-config-changed", callback); + } + onActiveCountChanged(callback) { + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to onActiveCountChanged changed, because the provided callback is not a function!"); + } + return this.registry.add("notifications-active-count-changed", callback); + } + onStateChanged(callback) { + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to onStateChanged changed, because the provided callback is not a function!"); + } + return this.registry.add("notification-state-changed", callback); + } + addOperationExecutors() { + operations$6.notificationShow.execute = this.handleNotificationShow.bind(this); + operations$6.notificationClick.execute = this.handleNotificationClick.bind(this); + operations$6.notificationRaised.execute = this.handleNotificationRaised.bind(this); + operations$6.notificationClosed.execute = this.handleNotificationClosed.bind(this); + operations$6.configurationChanged.execute = this.handleConfigurationChanged.bind(this); + operations$6.activeCountChange.execute = this.handleActiveCountChanged.bind(this); + operations$6.stateChange.execute = this.handleNotificationStateChanged.bind(this); + } + handleConfigurationChanged(data) { + return __awaiter$1(this, void 0, void 0, function* () { + this.registry.execute("notifications-config-changed", data.configuration); + }); + } + handleActiveCountChanged(data) { + return __awaiter$1(this, void 0, void 0, function* () { + this.registry.execute("notifications-active-count-changed", data); + }); + } + handleNotificationStateChanged(data) { + return __awaiter$1(this, void 0, void 0, function* () { + this.registry.execute("notification-state-changed", { id: data.id }, data.state); + }); + } + handleNotificationShow(data) { + return __awaiter$1(this, void 0, void 0, function* () { + if (!data.id) { + return; + } + const notification = this.notifications[data.id]; + if (notification && notification.onshow) { + notification.onshow(); + } + }); + } + handleNotificationClick(data) { + var _a, _b, _c, _d, _e; + return __awaiter$1(this, void 0, void 0, function* () { + if (!data.action && ((_a = this.notificationsSettings) === null || _a === void 0 ? void 0 : _a.defaultClick)) { + this.notificationsSettings.defaultClick(this.coreGlue, data.definition); + } + if (data.action && ((_c = (_b = this.notificationsSettings) === null || _b === void 0 ? void 0 : _b.actionClicks) === null || _c === void 0 ? void 0 : _c.some((actionDef) => actionDef.action === data.action))) { + const foundHandler = (_e = (_d = this.notificationsSettings) === null || _d === void 0 ? void 0 : _d.actionClicks) === null || _e === void 0 ? void 0 : _e.find((actionDef) => actionDef.action === data.action); + foundHandler.handler(this.coreGlue, data.definition); + } + if (!data.id) { + return; + } + const notification = this.notifications[data.id]; + if (notification && notification.onclick) { + notification.onclick(); + delete this.notifications[data.id]; + } + }); + } + handleNotificationRaised(data) { + return __awaiter$1(this, void 0, void 0, function* () { + this.registry.execute("notification-raised", data.notification); + }); + } + handleNotificationClosed(data) { + return __awaiter$1(this, void 0, void 0, function* () { + this.registry.execute("notification-closed", data); + }); + } +} + +const operations$5 = { + getIntents: { name: "getIntents", resultDecoder: wrappedIntentsDecoder }, + findIntent: { name: "findIntent", dataDecoder: wrappedIntentFilterDecoder, resultDecoder: wrappedIntentsDecoder }, + raiseIntent: { name: "raiseIntent", dataDecoder: intentRequestDecoder, resultDecoder: intentResultDecoder }, + raise: { name: "raise", dataDecoder: raiseIntentRequestDecoder, resultDecoder: intentResultDecoder }, + filterHandlers: { name: "filterHandlers", dataDecoder: filterHandlersWithResolverConfigDecoder, resultDecoder: filterHandlersResultDecoder }, + getIntentsByHandler: { name: "getIntentsByHandler", dataDecoder: intentHandlerDecoder, resultDecoder: getIntentsResultDecoder } +}; + +const GLUE42_FDC3_INTENTS_METHOD_PREFIX = "Tick42.FDC3.Intents."; +const INTENTS_RESOLVER_INTEROP_PREFIX = "T42.Intents.Resolver.Control."; +const INTENTS_RESOLVER_APP_NAME = "intentsResolver"; +const DEFAULT_RESOLVER_RESPONSE_TIMEOUT = 60 * 1000; +const ADDITIONAL_BRIDGE_OPERATION_TIMEOUT = 30 * 1000; +const INTENTS_RESOLVER_WIDTH = 400; +const INTENTS_RESOLVER_HEIGHT = 440; +const MAX_SET_TIMEOUT_DELAY = 2147483647; +const DEFAULT_PICK_HANDLER_BY_TIMEOUT = 90 * 1000; + +class IntentsController { + constructor() { + this.myIntents = new Set(); + this.useIntentsResolverUI = true; + this.unregisterIntentPromises = []; + } + start(coreGlue, ioc) { + return __awaiter$1(this, void 0, void 0, function* () { + this.logger = coreGlue.logger.subLogger("intents.controller.web"); + this.logger.trace("starting the web intents controller"); + this.bridge = ioc.bridge; + this.interop = coreGlue.interop; + this.legacyIntentsController = ioc.legacyIntentsHelper; + this.checkIfIntentsResolverIsEnabled(ioc.config); + const api = this.toApi(); + this.logger.trace("no need for platform registration, attaching the intents property to glue and returning"); + coreGlue.intents = api; + }); + } + handlePlatformShutdown() { + this.myIntents = new Set(); + this.unregisterIntentPromises = []; + } + handleBridgeMessage(args) { + return __awaiter$1(this, void 0, void 0, function* () { + const operationName = intentsOperationTypesDecoder.runWithException(args.operation); + const operation = operations$5[operationName]; + if (!operation.execute) { + return; + } + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return yield operation.execute(operationData); + }); + } + toApi() { + const api = { + raise: this.raise.bind(this), + all: this.all.bind(this), + addIntentListener: this.addIntentListener.bind(this), + register: this.register.bind(this), + find: this.find.bind(this), + filterHandlers: this.filterHandlers.bind(this), + getIntents: this.getIntentsByHandler.bind(this) + }; + return api; + } + raise(request) { + return __awaiter$1(this, void 0, void 0, function* () { + const validatedIntentRequest = raiseRequestDecoder.runWithException(request); + const intentRequest = typeof validatedIntentRequest === "string" + ? { intent: validatedIntentRequest } + : validatedIntentRequest; + yield Promise.all(this.unregisterIntentPromises); + const requestWithResolverInfo = { intentRequest, resolverConfig: this.getResolverConfigByRequest({ intentRequest }) }; + const isRaiseOperationSupported = yield this.isRaiseOperationSupported(); + if (!isRaiseOperationSupported.supported) { + this.logger.warn(`${isRaiseOperationSupported.reason}. Invoking legacy raise method`); + return this.legacyIntentsController.raise(requestWithResolverInfo, this.find.bind(this)); + } + this.logger.trace(`Sending raise request to the platform: ${JSON.stringify(request)} and method response timeout of ${this.intentResolverResponseTimeout}ms`); + const methodResponseTimeoutMs = intentRequest.waitUserResponseIndefinitely + ? MAX_SET_TIMEOUT_DELAY + : (intentRequest.timeout || this.intentResolverResponseTimeout) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT; + const response = yield this.bridge.send("intents", operations$5.raise, requestWithResolverInfo, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs }); + return response; + }); + } + getResolverConfigByRequest(filter) { + var _a, _b, _c, _d; + if (filter.handlerFilter) { + return { + enabled: typeof ((_a = filter.handlerFilter) === null || _a === void 0 ? void 0 : _a.openResolver) === "boolean" ? (_b = filter.handlerFilter) === null || _b === void 0 ? void 0 : _b.openResolver : this.useIntentsResolverUI, + appName: this.intentsResolverAppName, + waitResponseTimeout: ((_c = filter.handlerFilter) === null || _c === void 0 ? void 0 : _c.timeout) || DEFAULT_PICK_HANDLER_BY_TIMEOUT + }; + } + const waitResponseTimeout = ((_d = filter.intentRequest) === null || _d === void 0 ? void 0 : _d.waitUserResponseIndefinitely) ? MAX_SET_TIMEOUT_DELAY : this.intentResolverResponseTimeout; + return { + enabled: this.useIntentsResolverUI, + appName: this.intentsResolverAppName, + waitResponseTimeout + }; + } + isRaiseOperationSupported() { + return __awaiter$1(this, void 0, void 0, function* () { + try { + const { isSupported } = yield this.bridge.send("intents", systemOperations.operationCheck, { operation: "raise" }); + return { + supported: isSupported, + reason: isSupported ? "" : "The platform of this client is outdated and does not support \"raise\" operation" + }; + } + catch (error) { + return { + supported: false, + reason: "The platform of this client is outdated and does not support \"operationCheck\" command" + }; + } + }); + } + all() { + return __awaiter$1(this, void 0, void 0, function* () { + yield Promise.all(this.unregisterIntentPromises); + const result = yield this.bridge.send("intents", operations$5.getIntents, undefined); + return result.intents; + }); + } + addIntentListener(intent, handler) { + AddIntentListenerDecoder.runWithException(intent); + if (typeof handler !== "function") { + throw new Error("Cannot add intent listener, because the provided handler is not a function!"); + } + let registerPromise; + const intentName = typeof intent === "string" ? intent : intent.intent; + const methodName = this.buildInteropMethodName(intentName); + const alreadyRegistered = this.myIntents.has(intentName); + if (alreadyRegistered) { + throw new Error(`Intent listener for intent ${intentName} already registered!`); + } + this.myIntents.add(intentName); + const result = { + unsubscribe: () => { + this.myIntents.delete(intentName); + registerPromise + .then(() => this.interop.unregister(methodName)) + .catch((err) => this.logger.trace(`Unregistration of a method with name ${methodName} failed with reason: ${err}`)); + } + }; + let intentFlag = {}; + if (typeof intent === "object") { + const rest = __rest$2(intent, ["intent"]); + intentFlag = rest; + } + registerPromise = this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args) => { + if (this.myIntents.has(intentName)) { + const rest = __rest$2(args, ["_initialCallerId"]); + return handler(rest); + } + }); + registerPromise.catch(err => { + this.myIntents.delete(intentName); + this.logger.warn(`Registration of a method with name ${methodName} failed with reason: ${err}`); + }); + return result; + } + register(intent, handler) { + return __awaiter$1(this, void 0, void 0, function* () { + AddIntentListenerDecoder.runWithException(intent); + if (typeof handler !== "function") { + throw new Error("Cannot add intent listener, because the provided handler is not a function!"); + } + yield Promise.all(this.unregisterIntentPromises); + const intentName = typeof intent === "string" ? intent : intent.intent; + const methodName = this.buildInteropMethodName(intentName); + const alreadyRegistered = this.myIntents.has(intentName); + if (alreadyRegistered) { + throw new Error(`Intent listener for intent ${intentName} already registered!`); + } + this.myIntents.add(intentName); + let intentFlag = {}; + if (typeof intent === "object") { + const rest = __rest$2(intent, ["intent"]); + intentFlag = rest; + } + try { + yield this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args) => { + if (this.myIntents.has(intentName)) { + const { _initialCallerId } = args, rest = __rest$2(args, ["_initialCallerId"]); + const caller = this.interop.servers().find((server) => server.instance === _initialCallerId); + return handler(rest, caller); + } + }); + } + catch (err) { + this.myIntents.delete(intentName); + throw new Error(`Registration of a method with name ${methodName} failed with reason: ${JSON.stringify(err)}`); + } + return { + unsubscribe: () => this.unsubscribeIntent(intentName) + }; + }); + } + find(intentFilter) { + return __awaiter$1(this, void 0, void 0, function* () { + let data = undefined; + if (typeof intentFilter !== "undefined") { + const intentFilterObj = findFilterDecoder.runWithException(intentFilter); + if (typeof intentFilterObj === "string") { + data = { + filter: { + name: intentFilterObj + } + }; + } + else if (typeof intentFilterObj === "object") { + data = { + filter: intentFilterObj + }; + } + } + yield Promise.all(this.unregisterIntentPromises); + const result = yield this.bridge.send("intents", operations$5.findIntent, data); + return result.intents; + }); + } + checkIfIntentsResolverIsEnabled(options) { + var _a, _b, _c, _d, _e; + this.useIntentsResolverUI = typeof ((_a = options.intents) === null || _a === void 0 ? void 0 : _a.enableIntentsResolverUI) === "boolean" + ? options.intents.enableIntentsResolverUI + : true; + this.intentsResolverAppName = (_c = (_b = options.intents) === null || _b === void 0 ? void 0 : _b.intentsResolverAppName) !== null && _c !== void 0 ? _c : INTENTS_RESOLVER_APP_NAME; + this.intentResolverResponseTimeout = (_e = (_d = options.intents) === null || _d === void 0 ? void 0 : _d.methodResponseTimeoutMs) !== null && _e !== void 0 ? _e : DEFAULT_RESOLVER_RESPONSE_TIMEOUT; + } + clearUnregistrationPromise(promiseToRemove) { + this.unregisterIntentPromises = this.unregisterIntentPromises.filter(promise => promise !== promiseToRemove); + } + buildInteropMethodName(intentName) { + return `${GLUE42_FDC3_INTENTS_METHOD_PREFIX}${intentName}`; + } + unsubscribeIntent(intentName) { + this.myIntents.delete(intentName); + const methodName = this.buildInteropMethodName(intentName); + const unregisterPromise = this.interop.unregister(methodName); + this.unregisterIntentPromises.push(unregisterPromise); + unregisterPromise + .then(() => { + this.clearUnregistrationPromise(unregisterPromise); + }) + .catch((err) => { + this.logger.error(`Unregistration of a method with name ${methodName} failed with reason: ${err}`); + this.clearUnregistrationPromise(unregisterPromise); + }); + } + filterHandlers(handlerFilter) { + return __awaiter$1(this, void 0, void 0, function* () { + handlersFilterDecoder.runWithException(handlerFilter); + this.checkIfAtLeastOneFilterIsPresent(handlerFilter); + if (handlerFilter.openResolver && !this.useIntentsResolverUI) { + throw new Error("Cannot resolve 'filterHandlers' request using Intents Resolver UI because it's globally disabled"); + } + const methodResponseTimeoutMs = (handlerFilter.timeout || DEFAULT_PICK_HANDLER_BY_TIMEOUT) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT; + const filterHandlersRequestWithResolverConfig = { filterHandlersRequest: handlerFilter, resolverConfig: this.getResolverConfigByRequest({ handlerFilter }) }; + const result = yield this.bridge.send("intents", operations$5.filterHandlers, filterHandlersRequestWithResolverConfig, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs }, { includeOperationCheck: true }); + return result; + }); + } + checkIfAtLeastOneFilterIsPresent(filter) { + const errorMsg = "Provide at least one filter criteria of the following: 'intent' | 'contextTypes' | 'resultType' | 'applicationNames'"; + if (!Object.keys(filter).length) { + throw new Error(errorMsg); + } + const { intent, resultType, contextTypes, applicationNames } = filter; + const existingValidContextTypes = contextTypes === null || contextTypes === void 0 ? void 0 : contextTypes.length; + const existingValidApplicationNames = applicationNames === null || applicationNames === void 0 ? void 0 : applicationNames.length; + if (!intent && !resultType && !existingValidContextTypes && !existingValidApplicationNames) { + throw new Error(errorMsg); + } + } + getIntentsByHandler(handler) { + return __awaiter$1(this, void 0, void 0, function* () { + intentHandlerDecoder.runWithException(handler); + const result = yield this.bridge.send("intents", operations$5.getIntentsByHandler, handler, undefined, { includeOperationCheck: true }); + return result; + }); + } +} + +const Glue42CoreMessageTypes = { + platformUnload: { name: "platformUnload" }, + transportSwitchRequest: { name: "transportSwitchRequest" }, + transportSwitchResponse: { name: "transportSwitchResponse" }, + getCurrentTransport: { name: "getCurrentTransport" }, + getCurrentTransportResponse: { name: "getCurrentTransportResponse" }, + checkPreferredLogic: { name: "checkPreferredLogic" }, + checkPreferredConnection: { name: "checkPreferredConnection" }, + checkPreferredLogicResponse: { name: "checkPreferredLogicResponse" }, + checkPreferredConnectionResponse: { name: "checkPreferredConnectionResponse" } +}; +const webPlatformTransportName = "web-platform"; +const latestFDC3Type = "latest_fdc3_type"; + +const operations$4 = { + addChannel: { name: "addChannel", dataDecoder: channelContextDecoder }, + getMyChannel: { name: "getMyChannel", resultDecoder: getMyChanelResultDecoder }, + getWindowIdsOnChannel: { name: "getWindowIdsOnChannel", dataDecoder: getWindowIdsOnChannelDataDecoder, resultDecoder: getWindowIdsOnChannelResultDecoder }, + getWindowIdsWithChannels: { name: "getWindowIdsWithChannels", dataDecoder: wrappedWindowWithChannelFilterDecoder, resultDecoder: getWindowIdsWithChannelsResultDecoder }, + joinChannel: { name: "joinChannel", dataDecoder: joinChannelDataDecoder }, +}; + +class ChannelsController { + constructor() { + this.registry = lib$3(); + this.GlueWebChannelsPrefix = "___channel___"; + this.SubsKey = "subs"; + this.ChangedKey = "changed"; + this.replaySubscribe = (callback, channelId) => { + this.get(channelId) + .then((channelContext) => { + if (typeof channelContext.data === "object" && Object.keys(channelContext.data).length) { + const contextName = this.createContextName(channelContext.name); + return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => { + callback(context.data, context, extraData === null || extraData === void 0 ? void 0 : extraData.updaterId); + }); + } + return undefined; + }) + .then((un) => { + if (un && typeof un === "function") { + un(); + } + }) + .catch(err => this.logger.trace(err)); + }; + } + handlePlatformShutdown() { + this.registry.clear(); + } + addOperationsExecutors() { + operations$4.getMyChannel.execute = this.handleGetMyChannel.bind(this); + operations$4.joinChannel.execute = this.handleJoinChannel.bind(this); + } + start(coreGlue, ioc) { + return __awaiter$1(this, void 0, void 0, function* () { + this.logger = coreGlue.logger.subLogger("channels.controller.web"); + this.logger.trace("starting the web channels controller"); + this.contexts = coreGlue.contexts; + this.addOperationsExecutors(); + this.bridge = ioc.bridge; + this.windowsController = ioc.windowsController; + this.sessionController = ioc.sessionController; + this.logger.trace("no need for platform registration, attaching the channels property to glue and returning"); + const api = this.toApi(); + coreGlue.channels = api; + }); + } + handleBridgeMessage(args) { + return __awaiter$1(this, void 0, void 0, function* () { + const operationName = channelsOperationTypesDecoder.runWithException(args.operation); + const operation = operations$4[operationName]; + if (!operation.execute) { + return; + } + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return yield operation.execute(operationData); + }); + } + list() { + return __awaiter$1(this, void 0, void 0, function* () { + const channelNames = this.getAllChannelNames(); + const channelContexts = yield Promise.all(channelNames.map((channelName) => this.get(channelName))); + return channelContexts; + }); + } + my() { + return this.current(); + } + handleGetMyChannel() { + return __awaiter$1(this, void 0, void 0, function* () { + const channel = this.my(); + return channel ? { channel } : {}; + }); + } + join(name, windowId) { + return __awaiter$1(this, void 0, void 0, function* () { + const channelNames = this.getAllChannelNames(); + channelNameDecoder(channelNames).runWithException(name); + optionalNonEmptyStringDecoder.runWithException(windowId); + if (!windowId || windowId === this.windowsController.my().id) { + yield this.switchToChannel(name); + } + else { + yield this.bridge.send("channels", operations$4.joinChannel, { channel: name, windowId }, undefined, { includeOperationCheck: true }); + } + }); + } + handleJoinChannel({ channel, windowId }) { + return this.join(channel, windowId); + } + onChanged(callback) { + return this.changed(callback); + } + leave() { + return __awaiter$1(this, void 0, void 0, function* () { + yield this.switchToChannel(); + }); + } + toApi() { + const api = { + subscribe: this.subscribe.bind(this), + subscribeFor: this.subscribeFor.bind(this), + publish: this.publish.bind(this), + all: this.all.bind(this), + list: this.list.bind(this), + get: this.get.bind(this), + join: this.join.bind(this), + leave: this.leave.bind(this), + current: this.current.bind(this), + my: this.my.bind(this), + changed: this.changed.bind(this), + onChanged: this.onChanged.bind(this), + add: this.add.bind(this), + getMy: this.getMy.bind(this), + getWindowsOnChannel: this.getWindowsOnChannel.bind(this), + getWindowsWithChannels: this.getWindowsWithChannels.bind(this), + }; + return Object.freeze(api); + } + createContextName(channelName) { + return `${this.GlueWebChannelsPrefix}${channelName}`; + } + getAllChannelNames() { + const contextNames = this.contexts.all(); + const channelContextNames = contextNames.filter((contextName) => contextName.startsWith(this.GlueWebChannelsPrefix)); + const channelNames = channelContextNames.map((channelContextName) => channelContextName.replace(this.GlueWebChannelsPrefix, "")); + return channelNames; + } + unsubscribe() { + if (this.unsubscribeFunc) { + this.unsubscribeFunc(); + this.unsubscribeFunc = undefined; + } + } + switchToChannel(name) { + return __awaiter$1(this, void 0, void 0, function* () { + this.unsubscribe(); + this.currentChannelName = name; + if (typeof name !== "undefined") { + const contextName = this.createContextName(name); + this.unsubscribeFunc = yield this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => { + this.registry.execute(this.SubsKey, context.data, context, extraData === null || extraData === void 0 ? void 0 : extraData.updaterId); + }); + } + this.registry.execute(this.ChangedKey, name); + this.sessionController.setWindowData({ currentName: name }, "channels"); + }); + } + updateData(name, data) { + return __awaiter$1(this, void 0, void 0, function* () { + const contextName = this.createContextName(name); + const fdc3Type = this.getFDC3Type(data); + if (this.contexts.setPathSupported) { + const pathValues = Object.keys(data).map((key) => { + return { + path: `data.${key}`, + value: data[key] + }; + }); + if (fdc3Type) { + pathValues.push({ path: latestFDC3Type, value: fdc3Type }); + } + yield this.contexts.setPaths(contextName, pathValues); + } + else { + if (fdc3Type) { + data[latestFDC3Type] = fdc3Type; + } + yield this.contexts.update(contextName, { data }); + } + }); + } + getFDC3Type(data) { + const fdc3PropsArr = Object.keys(data).filter((key) => key.indexOf("fdc3_") === 0); + if (fdc3PropsArr.length === 0) { + return; + } + if (fdc3PropsArr.length > 1) { + throw new Error("FDC3 does not support updating of multiple context keys"); + } + return fdc3PropsArr[0].split("_").slice(1).join("_"); + } + subscribe(callback) { + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to channels, because the provided callback is not a function!"); + } + const currentChannel = this.current(); + if (currentChannel) { + this.replaySubscribe(callback, currentChannel); + } + return this.registry.add(this.SubsKey, callback); + } + subscribeFor(name, callback) { + return __awaiter$1(this, void 0, void 0, function* () { + const channelNames = this.getAllChannelNames(); + channelNameDecoder(channelNames).runWithException(name); + if (typeof callback !== "function") { + throw new Error(`Cannot subscribe to channel ${name}, because the provided callback is not a function!`); + } + const contextName = this.createContextName(name); + return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => { + callback(context.data, context, extraData === null || extraData === void 0 ? void 0 : extraData.updaterId); + }); + }); + } + publish(data, name) { + if (typeof data !== "object") { + throw new Error("Cannot publish to channel, because the provided data is not an object!"); + } + if (typeof name !== "undefined") { + const channelNames = this.getAllChannelNames(); + channelNameDecoder(channelNames).runWithException(name); + return this.updateData(name, data); + } + if (typeof this.currentChannelName === "undefined") { + throw new Error("Cannot publish to channel, because not joined to a channel!"); + } + return this.updateData(this.currentChannelName, data); + } + all() { + return __awaiter$1(this, void 0, void 0, function* () { + const channelNames = this.getAllChannelNames(); + return channelNames; + }); + } + get(name) { + return __awaiter$1(this, void 0, void 0, function* () { + const channelNames = this.getAllChannelNames(); + channelNameDecoder(channelNames).runWithException(name); + const contextName = this.createContextName(name); + const channelContext = yield this.contexts.get(contextName); + if (channelContext.latest_fdc3_type) { + const rest = __rest$2(channelContext, ["latest_fdc3_type"]); + return Object.assign({}, rest); + } + return channelContext; + }); + } + current() { + return this.currentChannelName; + } + changed(callback) { + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to channel changed, because the provided callback is not a function!"); + } + return this.registry.add(this.ChangedKey, callback); + } + add(info) { + return __awaiter$1(this, void 0, void 0, function* () { + const channelContext = channelContextDecoder.runWithException(info); + const channelWithSuchNameExists = this.getAllChannelNames().includes(channelContext.name); + if (channelWithSuchNameExists) { + throw new Error("There's an already existing channel with such name"); + } + yield this.bridge.send("channels", operations$4.addChannel, channelContext); + return channelContext; + }); + } + getMy() { + return __awaiter$1(this, void 0, void 0, function* () { + if (!this.currentChannelName) { + return; + } + return this.get(this.currentChannelName); + }); + } + getWindowsOnChannel(channel) { + return __awaiter$1(this, void 0, void 0, function* () { + const channelNames = this.getAllChannelNames(); + channelNameDecoder(channelNames).runWithException(channel); + const { windowIds } = yield this.bridge.send("channels", operations$4.getWindowIdsOnChannel, { channel }, undefined, { includeOperationCheck: true }); + const result = windowIds.reduce((windows, windowId) => { + const window = this.windowsController.findById(windowId); + return window ? [...windows, window] : windows; + }, []); + return result; + }); + } + getWindowsWithChannels(filter) { + return __awaiter$1(this, void 0, void 0, function* () { + const operationData = filter !== undefined + ? { filter: windowWithChannelFilterDecoder.runWithException(filter) } + : {}; + const { windowIdsWithChannels } = yield this.bridge.send("channels", operations$4.getWindowIdsWithChannels, operationData, undefined, { includeOperationCheck: true }); + const result = windowIdsWithChannels.reduce((windowsWithChannels, { application, channel, windowId }) => { + const window = this.windowsController.findById(windowId); + return window ? [...windowsWithChannels, { application, channel, window }] : windowsWithChannels; + }, []); + return result; + }); + } +} + +const operations$3 = { + getEnvironment: { name: "getEnvironment", resultDecoder: anyDecoder }, + getBase: { name: "getBase", resultDecoder: anyDecoder }, + platformShutdown: { name: "platformShutdown" } +}; + +class SystemController { + start(coreGlue, ioc) { + return __awaiter$1(this, void 0, void 0, function* () { + this.bridge = ioc.bridge; + this.ioc = ioc; + this.addOperationsExecutors(); + yield this.setEnvironment(); + }); + } + handleBridgeMessage(args) { + return __awaiter$1(this, void 0, void 0, function* () { + const operationName = systemOperationTypesDecoder.runWithException(args.operation); + const operation = operations$3[operationName]; + if (!operation.execute) { + return; + } + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return yield operation.execute(operationData); + }); + } + processPlatformShutdown() { + return __awaiter$1(this, void 0, void 0, function* () { + Object.values(this.ioc.controllers).forEach((controller) => controller.handlePlatformShutdown ? controller.handlePlatformShutdown() : null); + this.ioc.preferredConnectionController.stop(); + this.ioc.eventsDispatcher.stop(); + yield this.bridge.stop(); + }); + } + setEnvironment() { + return __awaiter$1(this, void 0, void 0, function* () { + const environment = yield this.bridge.send("system", operations$3.getEnvironment, undefined); + const base = yield this.bridge.send("system", operations$3.getBase, undefined); + const globalNamespace = window.glue42core || window.iobrowser; + const globalNamespaceName = window.glue42core ? "glue42core" : "iobrowser"; + const globalObj = Object.assign({}, globalNamespace, base, { environment }); + window[globalNamespaceName] = Object.freeze(globalObj); + }); + } + addOperationsExecutors() { + operations$3.platformShutdown.execute = this.processPlatformShutdown.bind(this); + } +} + +class Notification { + constructor(config, id) { + this.onclick = () => { }; + this.onshow = () => { }; + this.id = id; + this.badge = config.badge; + this.body = config.body; + this.data = config.data; + this.dir = config.dir; + this.icon = config.icon; + this.image = config.image; + this.lang = config.lang; + this.renotify = config.renotify; + this.requireInteraction = config.requireInteraction; + this.silent = config.silent; + this.tag = config.tag; + this.timestamp = config.timestamp; + this.vibrate = config.vibrate; + this.title = config.title; + this.clickInterop = config.clickInterop; + this.actions = config.actions; + this.focusPlatformOnDefaultClick = config.focusPlatformOnDefaultClick; + this.severity = config.severity; + this.showToast = config.showToast; + this.showInPanel = config.showInPanel; + this.state = config.state; + } +} + +oneOf$1(constant$1("clientHello")); +const extensionConfigDecoder = object$1({ + widget: object$1({ + inject: boolean$1() + }) +}); + +const operations$2 = { + clientHello: { name: "clientHello", resultDecoder: extensionConfigDecoder } +}; + +class ExtController { + constructor() { + this.channels = []; + this.unsubFuncs = []; + this.contentCommands = { + widgetVisualizationPermission: { name: "widgetVisualizationPermission", handle: this.handleWidgetVisualizationPermission.bind(this) }, + changeChannel: { name: "changeChannel", handle: this.handleChangeChannel.bind(this) } + }; + } + handlePlatformShutdown() { + this.unsubFuncs.forEach((unsub) => unsub()); + this.channels = []; + this.unsubFuncs = []; + } + start(coreGlue, ioc) { + return __awaiter$1(this, void 0, void 0, function* () { + this.logger = coreGlue.logger.subLogger("extension.controller.web"); + this.windowId = ioc.publicWindowId; + this.logger.trace("starting the extension web controller"); + this.bridge = ioc.bridge; + this.channelsController = ioc.channelsController; + this.eventsDispatcher = ioc.eventsDispatcher; + try { + yield this.registerWithPlatform(); + } + catch (error) { + return; + } + this.channels = yield this.channelsController.list(); + const unsubDispatcher = this.eventsDispatcher.onContentMessage(this.handleContentMessage.bind(this)); + const unsubChannels = this.channelsController.onChanged((channel) => { + this.eventsDispatcher.sendContentMessage({ command: "channelChange", newChannel: channel }); + }); + this.unsubFuncs.push(unsubDispatcher); + this.unsubFuncs.push(unsubChannels); + }); + } + handleBridgeMessage(_) { + return __awaiter$1(this, void 0, void 0, function* () { + }); + } + handleContentMessage(message) { + if (!message || typeof message.command !== "string") { + return; + } + const foundHandler = this.contentCommands[message.command]; + if (!foundHandler) { + return; + } + foundHandler.handle(message); + } + registerWithPlatform() { + return __awaiter$1(this, void 0, void 0, function* () { + this.logger.trace("registering with the platform"); + this.config = yield this.bridge.send("extension", operations$2.clientHello, { windowId: this.windowId }); + this.logger.trace("the platform responded to the hello message with a valid extension config"); + }); + } + handleWidgetVisualizationPermission() { + var _a; + return __awaiter$1(this, void 0, void 0, function* () { + if (!((_a = this.config) === null || _a === void 0 ? void 0 : _a.widget.inject)) { + return this.eventsDispatcher.sendContentMessage({ command: "permissionResponse", allowed: false }); + } + const currentChannel = this.channels.find((channel) => channel.name === this.channelsController.my()); + this.eventsDispatcher.sendContentMessage({ command: "permissionResponse", allowed: true, channels: this.channels, currentChannel }); + }); + } + handleChangeChannel(message) { + return __awaiter$1(this, void 0, void 0, function* () { + if (message.name === "no-channel") { + yield this.channelsController.leave(); + return; + } + yield this.channelsController.join(message.name); + }); + } +} + +class EventsDispatcher { + constructor(config) { + this.config = config; + this.registry = lib$3(); + this.glue42EventName = "Glue42"; + this.events = { + notifyStarted: { name: "notifyStarted", handle: this.handleNotifyStarted.bind(this) }, + contentInc: { name: "contentInc", handle: this.handleContentInc.bind(this) }, + requestGlue: { name: "requestGlue", handle: this.handleRequestGlue.bind(this) } + }; + } + stop() { + window.removeEventListener(this.glue42EventName, this._handleMessage); + } + start(glue) { + this.glue = glue; + this.wireCustomEventListener(); + this.announceStarted(); + } + sendContentMessage(message) { + this.send("contentOut", "glue42core", message); + } + onContentMessage(callback) { + return this.registry.add("content-inc", callback); + } + wireCustomEventListener() { + this._handleMessage = this.handleMessage.bind(this); + window.addEventListener(this.glue42EventName, this._handleMessage); + } + handleMessage(event) { + var _a; + const data = event.detail; + const namespace = (_a = data === null || data === void 0 ? void 0 : data.glue42) !== null && _a !== void 0 ? _a : data === null || data === void 0 ? void 0 : data.glue42core; + if (!namespace) { + return; + } + const glue42Event = namespace.event; + const foundHandler = this.events[glue42Event]; + if (!foundHandler) { + return; + } + foundHandler.handle(namespace.message); + } + announceStarted() { + this.send("start", "glue42"); + } + handleRequestGlue() { + if (!this.config.exposeAPI) { + this.send("requestGlueResponse", "glue42", { error: "Will not give access to the underlying Glue API, because it was explicitly denied upon initialization." }); + return; + } + this.send("requestGlueResponse", "glue42", { glue: this.glue }); + } + handleNotifyStarted() { + this.announceStarted(); + } + handleContentInc(message) { + this.registry.execute("content-inc", message); + } + send(eventName, namespace, message) { + const payload = {}; + payload[namespace] = { event: eventName, message }; + const event = new CustomEvent(this.glue42EventName, { detail: payload }); + window.dispatchEvent(event); + } +} + +class PreferredConnectionController { + constructor(coreGlue) { + this.coreGlue = coreGlue; + this.transactionTimeout = 15000; + this.transactionLocks = {}; + this.reconnectCounter = 0; + this.logger = this.coreGlue.logger.subLogger("web.preferred.connection.controller"); + } + stop() { + if (!this.webPlatformMessagesUnsubscribe) { + return; + } + this.webPlatformMessagesUnsubscribe(); + } + start(coreConfig) { + return __awaiter$1(this, void 0, void 0, function* () { + if (coreConfig.isPlatformInternal) { + this.logger.trace("This is an internal client to the platform, skipping all client preferred communication logic."); + return; + } + const isConnectedToPlatform = this.coreGlue.connection.transport.name() === webPlatformTransportName; + if (!isConnectedToPlatform) { + throw new Error("Cannot initiate the Glue Web Bridge, because the initial connection was not handled by a Web Platform transport."); + } + if (!this.coreGlue.connection.transport.isPreferredActivated) { + this.logger.trace("The platform of this client was configured without a preferred connection, skipping the rest of the initialization."); + return; + } + this.webPlatformTransport = this.coreGlue.connection.transport; + this.webPlatformMessagesUnsubscribe = this.webPlatformTransport.onMessage(this.handleWebPlatformMessage.bind(this)); + const transportState = yield this.getCurrentPlatformTransportState(); + yield this.checkSwitchTransport(transportState); + }); + } + handleWebPlatformMessage(msg) { + if (typeof msg === "string") { + return; + } + const isConnectedToPlatform = this.coreGlue.connection.transport.name() === webPlatformTransportName; + const type = msg.type; + const args = msg.args; + const transactionId = msg.transactionId; + if (type === Glue42CoreMessageTypes.transportSwitchRequest.name) { + return this.handleTransportSwitchRequest(args, transactionId); + } + if (type === Glue42CoreMessageTypes.platformUnload.name && !isConnectedToPlatform) { + return this.handlePlatformUnload(); + } + if (type === Glue42CoreMessageTypes.getCurrentTransportResponse.name) { + return this.handleGetCurrentTransportResponse(args, transactionId); + } + if (type === Glue42CoreMessageTypes.checkPreferredLogic.name) { + return this.handleCheckPreferredLogic(transactionId); + } + if (type === Glue42CoreMessageTypes.checkPreferredConnection.name) { + return this.handleCheckPreferredConnection(args, transactionId); + } + } + reEstablishPlatformPort() { + return __awaiter$1(this, void 0, void 0, function* () { + try { + yield this.webPlatformTransport.connect(); + } + catch (error) { + this.logger.trace(`Error when re-establishing port connection to the platform: ${JSON.stringify(error)}`); + --this.reconnectCounter; + if (this.reconnectCounter > 0) { + return this.reEstablishPlatformPort(); + } + this.logger.warn("This client lost connection to the platform while connected to a preferred GW and was not able to re-connect to the platform."); + } + this.logger.trace("The connection to the platform was re-established, closing the connection to the web gateway."); + this.reconnectCounter = 0; + this.webPlatformTransport.close(); + const transportState = yield this.getCurrentPlatformTransportState(); + yield this.checkSwitchTransport(transportState); + }); + } + checkSwitchTransport(config) { + return __awaiter$1(this, void 0, void 0, function* () { + const myCurrentTransportName = this.coreGlue.connection.transport.name(); + if (myCurrentTransportName === config.transportName) { + this.logger.trace("A check switch was requested, but the platform transport and my transport are identical, no switch is necessary"); + return; + } + this.logger.trace(`A check switch was requested and a transport switch is necessary, because this client is now on ${myCurrentTransportName}, but it should reconnect to ${JSON.stringify(config)}`); + const result = yield this.coreGlue.connection.switchTransport(config); + this.setConnected(); + this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(result)}`); + }); + } + getCurrentPlatformTransportState() { + return __awaiter$1(this, void 0, void 0, function* () { + this.logger.trace("Requesting the current transport state of the platform."); + const transaction = this.setTransaction(Glue42CoreMessageTypes.getCurrentTransport.name); + this.sendPlatformMessage(Glue42CoreMessageTypes.getCurrentTransport.name, transaction.id); + const transportState = yield transaction.lock; + this.logger.trace(`The platform responded with transport state: ${JSON.stringify(transportState)}`); + return transportState; + }); + } + setTransaction(operation) { + const transaction = {}; + const transactionId = shortidExports$1.generate(); + const transactionLock = new Promise((resolve, reject) => { + let transactionLive = true; + transaction.lift = (args) => { + transactionLive = false; + delete this.transactionLocks[transactionId]; + resolve(args); + }; + transaction.fail = (reason) => { + transactionLive = false; + delete this.transactionLocks[transactionId]; + reject(reason); + }; + setTimeout(() => { + if (!transactionLive) { + return; + } + transactionLive = false; + this.logger.warn(`Transaction for operation: ${operation} timed out.`); + delete this.transactionLocks[transactionId]; + reject(`Transaction for operation: ${operation} timed out.`); + }, this.transactionTimeout); + }); + transaction.lock = transactionLock; + transaction.id = transactionId; + this.transactionLocks[transactionId] = transaction; + return transaction; + } + sendPlatformMessage(type, transactionId, args) { + this.logger.trace(`Sending a platform message of type: ${type}, id: ${transactionId} and args: ${JSON.stringify(args)}`); + this.webPlatformTransport.sendObject({ + glue42core: { type, args, transactionId } + }); + } + handleTransportSwitchRequest(args, transactionId) { + this.logger.trace(`Received a transport switch request with id: ${transactionId} and data: ${JSON.stringify(args)}`); + this.coreGlue.connection.switchTransport(args.switchSettings) + .then((result) => { + this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(result)}`); + this.setConnected(); + this.sendPlatformMessage(Glue42CoreMessageTypes.transportSwitchResponse.name, transactionId, { success: result.success }); + }) + .catch((error) => { + this.logger.error(error); + this.sendPlatformMessage(Glue42CoreMessageTypes.transportSwitchResponse.name, transactionId, { success: false }); + }); + } + handlePlatformUnload() { + this.reconnectCounter = 5; + this.logger.trace("The platform was unloaded while I am connected to a preferred connection, re-establishing the port connection."); + this.reEstablishPlatformPort(); + } + handleGetCurrentTransportResponse(args, transactionId) { + this.logger.trace(`Got a current transport response from the platform with id: ${transactionId} and data: ${JSON.stringify(args)}`); + const transportState = args.transportState; + const transaction = this.transactionLocks[transactionId]; + transaction === null || transaction === void 0 ? void 0 : transaction.lift(transportState); + } + handleCheckPreferredLogic(transactionId) { + setTimeout(() => this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredLogicResponse.name, transactionId), 0); + } + handleCheckPreferredConnection(args, transactionId) { + const url = args.url; + this.logger.trace(`Testing the possible connection to: ${url}`); + this.checkPreferredConnection(url) + .then((result) => { + this.logger.trace(`The connection to ${url} is possible`); + this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredConnectionResponse.name, transactionId, result); + }) + .catch((error) => { + this.logger.trace(`The connection to ${url} is not possible`); + this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredConnectionResponse.name, transactionId, { error }); + }); + } + checkPreferredConnection(url) { + return new Promise((resolve) => { + const ws = new WebSocket(url); + ws.onerror = () => resolve({ live: false }); + ws.onopen = () => { + ws.close(); + resolve({ live: true }); + }; + }); + } + setConnected() { + this.webPlatformTransport.manualSetReadyState(); + } +} + +class LegacyIntentsHelper { + constructor(logger, bridge, interop, appManagerController, windowsController) { + this.bridge = bridge; + this.interop = interop; + this.appManagerController = appManagerController; + this.windowsController = windowsController; + this.intentsResolverResponsePromises = {}; + this.logger = this.configureLogger(logger); + } + raise(requestWithResolverInfo, findIntentFn) { + var _a; + return __awaiter$1(this, void 0, void 0, function* () { + const { intentRequest, resolverConfig } = requestWithResolverInfo; + const intent = (yield findIntentFn(intentRequest.intent)).find(intent => intent.name === intentRequest.intent); + if (!intent) { + throw new Error(`Intent with name ${intentRequest.intent} not found`); + } + const { open, reason } = this.checkIfResolverShouldBeOpened(intent, intentRequest, resolverConfig); + if (!open) { + (_a = this.logger) === null || _a === void 0 ? void 0 : _a.trace(`Intent Resolver UI won't be used. Reason: ${reason}`); + return this.invokeRaiseIntent(intentRequest); + } + const intentResult = yield this.raiseIntentWithResolverApp(requestWithResolverInfo); + return intentResult; + }); + } + configureLogger(loggerInst) { + return loggerInst.subLogger("intents.legacy.helper.web"); + } + raiseIntentWithResolverApp(requestWithResolverInfo) { + return __awaiter$1(this, void 0, void 0, function* () { + const { intentRequest, resolverConfig } = requestWithResolverInfo; + this.logger.trace(`Intents Resolver UI with app name ${resolverConfig.appName} will be used`); + const responseMethodName = yield this.registerResponseMethod(); + this.logger.trace(`Registered interop method ${responseMethodName}`); + const resolverInstance = yield this.openIntentResolverApplication(requestWithResolverInfo, responseMethodName); + this.logger.trace(`Intents Resolver Instance with id ${resolverInstance.id} opened`); + const handler = yield this.handleInstanceResponse(resolverInstance.id); + const target = handler.type === "app" + ? { app: handler.applicationName } + : { instance: handler.instanceId }; + this.logger.trace(`Intent handler chosen by the user: ${JSON.stringify(target)}`); + const intentResult = yield this.invokeRaiseIntent(Object.assign(Object.assign({}, intentRequest), { target })); + return intentResult; + }); + } + handleInstanceResponse(instanceId) { + var _a; + return __awaiter$1(this, void 0, void 0, function* () { + try { + const { handler, intent } = yield this.intentsResolverResponsePromises[instanceId].promise; + (_a = this.logger) === null || _a === void 0 ? void 0 : _a.trace(`Intent handler chosen for intent ${intent}: ${JSON.stringify(handler)}`); + this.stopResolverInstance(instanceId); + return handler; + } + catch (error) { + this.stopResolverInstance(instanceId); + throw new Error(error); + } + }); + } + invokeRaiseIntent(requestObj) { + return this.bridge.send("intents", operations$5.raiseIntent, requestObj); + } + registerResponseMethod() { + return __awaiter$1(this, void 0, void 0, function* () { + const methodName = INTENTS_RESOLVER_INTEROP_PREFIX + shortid$2(); + yield this.interop.register(methodName, this.resolverResponseHandler.bind(this)); + return methodName; + }); + } + openIntentResolverApplication(requestWithResolverInfo, methodName) { + return __awaiter$1(this, void 0, void 0, function* () { + const { intentRequest, resolverConfig } = requestWithResolverInfo; + const startContext = this.buildStartContext(intentRequest, methodName); + const startOptions = yield this.buildStartOptions(); + this.logger.trace(`Starting Intents Resolver UI with context: ${JSON.stringify(startContext)} and options: ${startOptions}`); + const instance = yield this.appManagerController.getApplication(resolverConfig.appName).start(startContext, startOptions); + this.logger.trace(`Intents Resolver instance with id ${instance.id} opened`); + this.subscribeOnInstanceStopped(instance); + this.createResponsePromise(intentRequest.intent, instance.id, methodName, resolverConfig.waitResponseTimeout); + return instance; + }); + } + cleanUpIntentResolverPromise(instanceId) { + return __awaiter$1(this, void 0, void 0, function* () { + const intentPromise = this.intentsResolverResponsePromises[instanceId]; + if (!intentPromise) { + return; + } + const unregisterPromise = this.interop.unregister(intentPromise.methodName); + unregisterPromise.catch((error) => this.logger.warn(error)); + delete this.intentsResolverResponsePromises[instanceId]; + }); + } + buildStartContext(requestObj, methodName) { + return { + intent: requestObj, + callerId: this.interop.instance.instance, + methodName + }; + } + buildStartOptions() { + return __awaiter$1(this, void 0, void 0, function* () { + const bounds = yield this.getTargetBounds(); + return { + top: (bounds.height - INTENTS_RESOLVER_HEIGHT) / 2 + bounds.top, + left: (bounds.width - INTENTS_RESOLVER_WIDTH) / 2 + bounds.left, + width: INTENTS_RESOLVER_WIDTH, + height: INTENTS_RESOLVER_HEIGHT + }; + }); + } + getTargetBounds() { + return __awaiter$1(this, void 0, void 0, function* () { + const bounds = (yield this.tryGetWindowBasedBounds()) || (yield this.tryGetWorkspaceBasedBounds()); + if (bounds) { + this.logger.trace(`Opening Intents Resolver UI with bounds: ${JSON.stringify(bounds)}`); + return bounds; + } + const defaultBounds = { + top: window.screen.availTop || 0, + left: window.screen.availLeft || 0, + width: window.screen.width, + height: window.screen.height + }; + this.logger.trace(`Opening Intents Resolver UI relative to my screen bounds: ${JSON.stringify(defaultBounds)}`); + return defaultBounds; + }); + } + tryGetWindowBasedBounds() { + return __awaiter$1(this, void 0, void 0, function* () { + try { + const myWindowBounds = yield this.windowsController.my().getBounds(); + this.logger.trace(`Opening the resolver UI relative to my window bounds: ${JSON.stringify(myWindowBounds)}`); + return myWindowBounds; + } + catch (error) { + this.logger.trace(`Failure to get my window bounds: ${JSON.stringify(error)}`); + } + return undefined; + }); + } + tryGetWorkspaceBasedBounds() { + return __awaiter$1(this, void 0, void 0, function* () { + try { + yield this.bridge.send("workspaces", systemOperations.operationCheck, { operation: "getWorkspaceWindowFrameBounds" }); + const bridgeResponse = yield this.bridge.send("workspaces", systemOperations.getWorkspaceWindowFrameBounds, { itemId: this.windowsController.my().id }); + const myWorkspaceBounds = bridgeResponse.bounds; + this.logger.trace(`Opening the resolver UI relative to my workspace frame window bounds: ${JSON.stringify(myWorkspaceBounds)}`); + return myWorkspaceBounds; + } + catch (error) { + this.logger.trace(`Failure to get my workspace frame window bounds: ${JSON.stringify(error)}`); + } + return undefined; + }); + } + subscribeOnInstanceStopped(instance) { + const { application } = instance; + const unsub = application.onInstanceStopped((inst) => { + if (inst.id !== instance.id) { + return; + } + const intentPromise = this.intentsResolverResponsePromises[inst.id]; + if (!intentPromise) { + return unsub(); + } + intentPromise.reject(`Cannot resolve raised intent "${intentPromise.intent}" - User closed ${application.name} app without choosing an intent handler`); + this.cleanUpIntentResolverPromise(inst.id); + unsub(); + }); + } + createResponsePromise(intent, instanceId, methodName, timeout) { + let resolve = () => { }; + let reject = () => { }; + const promise = PromisePlus$1((res, rej) => { + resolve = res; + reject = rej; + }, timeout, `Timeout of ${timeout}ms hit waiting for the user to choose a handler for intent ${intent}`); + this.intentsResolverResponsePromises[instanceId] = { intent, resolve, reject, promise, methodName }; + } + resolverResponseHandler(args, callerId) { + const response = intentResolverResponseDecoder.run(args); + const instanceId = callerId.instance; + if (response.ok) { + this.logger.trace(`Intent Resolver instance with id ${instanceId} send a valid response: ${JSON.stringify(response.result)}`); + return this.intentsResolverResponsePromises[instanceId].resolve(response.result); + } + this.logger.trace(`Intent Resolver instance with id ${instanceId} sent an invalid response. Error: ${JSON.stringify(response.error)}`); + this.intentsResolverResponsePromises[instanceId].reject(response.error.message); + this.stopResolverInstance(instanceId); + } + stopResolverInstance(instanceId) { + const searchedInstance = this.appManagerController.getInstances().find((inst) => inst.id === instanceId); + if (!searchedInstance) { + return; + } + searchedInstance.stop().catch(err => this.logger.error(err)); + } + checkIfIntentHasMoreThanOneHandler(intent, request) { + if (typeof request.target === "object") { + return false; + } + return request.handlers ? request.handlers.length > 1 : intent.handlers.length > 1; + } + checkIfResolverShouldBeOpened(intent, intentRequest, resolverConfig) { + if (!resolverConfig.enabled) { + return { open: false, reason: "Intent Resolver is disabled. Raising intent to first found handler" }; + } + const intentsResolverApp = this.appManagerController.getApplication(resolverConfig.appName); + if (!intentsResolverApp) { + return { open: false, reason: `Application with name ${resolverConfig.appName} not found` }; + } + const hasMoreThanOneHandler = this.checkIfIntentHasMoreThanOneHandler(intent, intentRequest); + if (!hasMoreThanOneHandler) { + return { open: false, reason: "Raised intent has only one handler" }; + } + return { open: true }; + } +} + +const operations$1 = { + getCurrent: { name: "getCurrent", resultDecoder: simpleThemeResponseDecoder }, + list: { name: "list", resultDecoder: allThemesResponseDecoder }, + select: { name: "select", dataDecoder: selectThemeConfigDecoder } +}; + +class ThemesController { + constructor() { + this.registry = lib$3(); + this.activeThemeSubs = 0; + } + start(coreGlue, ioc) { + return __awaiter$1(this, void 0, void 0, function* () { + this.logger = coreGlue.logger.subLogger("themes.controller.web"); + this.logger.trace("starting the web themes controller"); + this.bridge = ioc.bridge; + const api = this.toApi(); + coreGlue.themes = api; + this.logger.trace("themes are ready"); + }); + } + handlePlatformShutdown() { + var _a; + this.registry.clear(); + this.activeThemeSubs = 0; + (_a = this.themesSubscription) === null || _a === void 0 ? void 0 : _a.close(); + delete this.themesSubscription; + } + handleBridgeMessage() { + return __awaiter$1(this, void 0, void 0, function* () { + }); + } + toApi() { + const api = { + getCurrent: this.getCurrent.bind(this), + list: this.list.bind(this), + select: this.select.bind(this), + onChanged: this.onChanged.bind(this) + }; + return Object.freeze(api); + } + getCurrent() { + return __awaiter$1(this, void 0, void 0, function* () { + const bridgeResponse = yield this.bridge.send("themes", operations$1.getCurrent, undefined, undefined, { includeOperationCheck: true }); + return bridgeResponse.theme; + }); + } + list() { + return __awaiter$1(this, void 0, void 0, function* () { + const bridgeResponse = yield this.bridge.send("themes", operations$1.list, undefined, undefined, { includeOperationCheck: true }); + return bridgeResponse.themes; + }); + } + select(name) { + return __awaiter$1(this, void 0, void 0, function* () { + nonEmptyStringDecoder.runWithException(name); + yield this.bridge.send("themes", operations$1.select, { name }, undefined, { includeOperationCheck: true }); + }); + } + onChanged(callback) { + return __awaiter$1(this, void 0, void 0, function* () { + if (typeof callback !== "function") { + throw new Error("onChanged requires a callback of type function"); + } + const subReady = this.themesSubscription ? + Promise.resolve() : + this.configureThemeSubscription(); + yield subReady; + ++this.activeThemeSubs; + const unsubFunc = this.registry.add("on-theme-change", callback); + return () => this.themeUnsub(unsubFunc); + }); + } + configureThemeSubscription() { + return __awaiter$1(this, void 0, void 0, function* () { + if (this.themesSubscription) { + return; + } + this.themesSubscription = yield this.bridge.createNotificationsSteam(); + this.themesSubscription.onData((data) => { + const eventData = data.data; + const validation = simpleThemeResponseDecoder.run(eventData); + if (!validation.ok) { + this.logger.warn(`Received invalid theme data on the theme event stream: ${JSON.stringify(validation.error)}`); + return; + } + const themeChanged = validation.result; + this.registry.execute("on-theme-change", themeChanged.theme); + }); + this.themesSubscription.onClosed(() => { + this.logger.warn("The Themes interop stream was closed, no theme changes notifications will be received"); + this.registry.clear(); + this.activeThemeSubs = 0; + delete this.themesSubscription; + }); + }); + } + themeUnsub(registryUnsub) { + var _a; + registryUnsub(); + --this.activeThemeSubs; + if (this.activeThemeSubs) { + return; + } + (_a = this.themesSubscription) === null || _a === void 0 ? void 0 : _a.close(); + delete this.themesSubscription; + } +} + +class SessionStorageController { + constructor() { + this.sessionStorage = window.sessionStorage; + } + get allNamespaces() { + return [{ namespace: this.windowNamespace, defaultValue: {} }]; + } + configure(config) { + this.windowId = config.windowId; + this.allNamespaces.forEach(({ namespace, defaultValue }) => { + const data = this.sessionStorage.getItem(namespace); + if (!data) { + this.sessionStorage.setItem(namespace, JSON.stringify(defaultValue)); + } + }); + } + get windowNamespace() { + return `io_connect_window_${this.windowId}`; + } + getWindowData() { + return JSON.parse(this.sessionStorage.getItem(this.windowNamespace)); + } + setWindowData(data, key) { + const allData = this.getWindowData(); + allData[key] = data; + this.sessionStorage.setItem(this.windowNamespace, JSON.stringify(allData)); + } +} + +const operations = { + clear: { name: "clear", dataDecoder: basePrefsConfigDecoder }, + clearAll: { name: "clearAll" }, + get: { name: "get", dataDecoder: basePrefsConfigDecoder, resultDecoder: getPrefsResultDecoder }, + getAll: { name: "getAll", resultDecoder: getAllPrefsResultDecoder }, + set: { name: "set", dataDecoder: changePrefsDataDecoder }, + update: { name: "update", dataDecoder: changePrefsDataDecoder }, + prefsChanged: { name: "prefsChanged", dataDecoder: getPrefsResultDecoder }, + prefsHello: { name: "prefsHello", resultDecoder: prefsHelloSuccessDecoder }, +}; + +class PrefsController { + constructor() { + this.registry = lib$3(); + } + handlePlatformShutdown() { + this.registry.clear(); + } + start(coreGlue, ioc) { + return __awaiter$1(this, void 0, void 0, function* () { + this.logger = coreGlue.logger.subLogger("prefs.controller.web"); + this.logger.trace("starting the web prefs controller"); + this.addOperationsExecutors(); + this.bridge = ioc.bridge; + this.config = ioc.config; + this.appManagerController = ioc.appManagerController; + try { + const prefsHelloSuccess = yield this.bridge.send("prefs", operations.prefsHello, undefined, undefined, { includeOperationCheck: true }); + this.platformAppName = prefsHelloSuccess.platform.app; + } + catch (error) { + this.logger.warn("The platform of this client is outdated and does not support Prefs API."); + return; + } + this.logger.trace("no need for platform registration, attaching the prefs property to glue and returning"); + const api = this.toApi(); + coreGlue.prefs = api; + }); + } + handleBridgeMessage(args) { + return __awaiter$1(this, void 0, void 0, function* () { + const operationName = prefsOperationTypesDecoder.runWithException(args.operation); + const operation = operations[operationName]; + if (!operation.execute) { + return; + } + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return yield operation.execute(operationData); + }); + } + addOperationsExecutors() { + operations.prefsChanged.execute = this.handleOnChanged.bind(this); + } + toApi() { + const api = { + clear: this.clear.bind(this), + clearAll: this.clearAll.bind(this), + clearFor: this.clearFor.bind(this), + get: this.get.bind(this), + getAll: this.getAll.bind(this), + set: this.set.bind(this), + setFor: this.setFor.bind(this), + subscribe: this.subscribe.bind(this), + subscribeFor: this.subscribeFor.bind(this), + update: this.update.bind(this), + updateFor: this.updateFor.bind(this), + }; + return api; + } + clear() { + return __awaiter$1(this, void 0, void 0, function* () { + const app = this.getMyAppName(); + yield this.clearFor(app); + }); + } + clearAll() { + return __awaiter$1(this, void 0, void 0, function* () { + yield this.bridge.send("prefs", operations.clearAll, undefined, undefined, { includeOperationCheck: true }); + }); + } + clearFor(app) { + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedApp = nonEmptyStringDecoder.runWithException(app); + yield this.bridge.send("prefs", operations.clear, { app: verifiedApp }, undefined, { includeOperationCheck: true }); + }); + } + get(app) { + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedApp = app === undefined || app === null ? this.getMyAppName() : nonEmptyStringDecoder.runWithException(app); + const { prefs } = yield this.bridge.send("prefs", operations.get, { app: verifiedApp }, undefined, { includeOperationCheck: true }); + return prefs; + }); + } + getAll() { + return __awaiter$1(this, void 0, void 0, function* () { + const result = yield this.bridge.send("prefs", operations.getAll, undefined, undefined, { includeOperationCheck: true }); + return result; + }); + } + set(data, options) { + var _a; + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedOptions = optional$1(basePrefsConfigDecoder).runWithException(options); + const app = (_a = verifiedOptions === null || verifiedOptions === void 0 ? void 0 : verifiedOptions.app) !== null && _a !== void 0 ? _a : this.getMyAppName(); + yield this.setFor(app, data); + }); + } + setFor(app, data) { + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedApp = nonEmptyStringDecoder.runWithException(app); + const verifiedData = object$1().runWithException(data); + yield this.bridge.send("prefs", operations.set, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true }); + }); + } + subscribe(callback) { + const app = this.getMyAppName(); + return this.subscribeFor(app, callback); + } + subscribeFor(app, callback) { + const verifiedApp = nonEmptyStringDecoder.runWithException(app); + const applications = this.appManagerController.getApplications(); + const isValidApp = verifiedApp === this.platformAppName || applications.some((application) => application.name === verifiedApp); + if (!isValidApp) { + throw new Error(`The provided app name "${app}" is not valid.`); + } + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to prefs, because the provided callback is not a function!"); + } + const subscriptionKey = this.getSubscriptionKey(verifiedApp); + this.get(verifiedApp).then(callback); + return this.registry.add(subscriptionKey, callback); + } + update(data, options) { + var _a; + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedOptions = optional$1(basePrefsConfigDecoder).runWithException(options); + const app = (_a = verifiedOptions === null || verifiedOptions === void 0 ? void 0 : verifiedOptions.app) !== null && _a !== void 0 ? _a : this.getMyAppName(); + yield this.updateFor(app, data); + }); + } + updateFor(app, data) { + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedApp = nonEmptyStringDecoder.runWithException(app); + const verifiedData = object$1().runWithException(data); + yield this.bridge.send("prefs", operations.update, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true }); + }); + } + getMyAppName() { + var _a; + const myAppName = this.config.isPlatformInternal ? this.platformAppName : (_a = this.appManagerController.me) === null || _a === void 0 ? void 0 : _a.application.name; + if (!myAppName) { + throw new Error("App Preferences operations can not be executed for windows that do not have app!"); + } + return myAppName; + } + getSubscriptionKey(app) { + return `prefs-changed-${app}`; + } + handleOnChanged({ prefs }) { + return __awaiter$1(this, void 0, void 0, function* () { + const subscriptionKey = this.getSubscriptionKey(prefs.app); + this.registry.execute(subscriptionKey, prefs); + }); + } +} + +class IoC { + constructor() { + this.controllers = { + windows: this.windowsController, + appManager: this.appManagerController, + layouts: this.layoutsController, + notifications: this.notificationsController, + intents: this.intentsController, + channels: this.channelsController, + system: this.systemController, + extension: this.extensionController, + themes: this.themesController, + prefs: this.prefsController + }; + } + get communicationId() { + return this._communicationId; + } + get publicWindowId() { + return this._publicWindowId; + } + get windowsController() { + if (!this._windowsControllerInstance) { + this._windowsControllerInstance = new WindowsController(); + } + return this._windowsControllerInstance; + } + get appManagerController() { + if (!this._appManagerControllerInstance) { + this._appManagerControllerInstance = new AppManagerController(); + } + return this._appManagerControllerInstance; + } + get layoutsController() { + if (!this._layoutsControllerInstance) { + this._layoutsControllerInstance = new LayoutsController(); + } + return this._layoutsControllerInstance; + } + get themesController() { + if (!this._themesControllerInstance) { + this._themesControllerInstance = new ThemesController(); + } + return this._themesControllerInstance; + } + get notificationsController() { + if (!this._notificationsControllerInstance) { + this._notificationsControllerInstance = new NotificationsController(); + } + return this._notificationsControllerInstance; + } + get intentsController() { + if (!this._intentsControllerInstance) { + this._intentsControllerInstance = new IntentsController(); + } + return this._intentsControllerInstance; + } + get legacyIntentsHelper() { + if (!this._legacyIntentsHelperInstance) { + this._legacyIntentsHelperInstance = new LegacyIntentsHelper(this._coreGlue.logger, this.bridge, this._coreGlue.interop, this.appManagerController, this.windowsController); + } + return this._legacyIntentsHelperInstance; + } + get systemController() { + if (!this._systemControllerInstance) { + this._systemControllerInstance = new SystemController(); + } + return this._systemControllerInstance; + } + get channelsController() { + if (!this._channelsControllerInstance) { + this._channelsControllerInstance = new ChannelsController(); + } + return this._channelsControllerInstance; + } + get prefsController() { + if (!this._prefsControllerInstance) { + this._prefsControllerInstance = new PrefsController(); + } + return this._prefsControllerInstance; + } + get extensionController() { + if (!this._extensionController) { + this._extensionController = new ExtController(); + } + return this._extensionController; + } + get eventsDispatcher() { + if (!this._eventsDispatcher) { + this._eventsDispatcher = new EventsDispatcher(this.config); + } + return this._eventsDispatcher; + } + get bridge() { + if (!this._bridgeInstance) { + this._bridgeInstance = new GlueBridge(this._coreGlue, this.communicationId); + } + return this._bridgeInstance; + } + get preferredConnectionController() { + if (!this._preferredConnectionController) { + this._preferredConnectionController = new PreferredConnectionController(this._coreGlue); + } + return this._preferredConnectionController; + } + get sessionController() { + if (!this._sessionController) { + this._sessionController = new SessionStorageController(); + } + return this._sessionController; + } + get config() { + return this._webConfig; + } + defineGlue(coreGlue) { + this._coreGlue = coreGlue; + this._publicWindowId = coreGlue.connection.transport.publicWindowId; + const globalNamespace = window.glue42core || window.iobrowser; + this._communicationId = coreGlue.connection.transport.communicationId || globalNamespace.communicationId; + } + defineConfig(config) { + this._webConfig = config; + } + buildWebWindow(id, name) { + return __awaiter$1(this, void 0, void 0, function* () { + const model = new WebWindowModel(id, name, this.bridge); + const api = yield model.toApi(); + return { id, model, api }; + }); + } + buildNotification(config, id) { + return new Notification(config, id); + } + buildApplication(app, applicationInstances) { + return __awaiter$1(this, void 0, void 0, function* () { + const application = (new ApplicationModel(app, [], this.appManagerController)).toApi(); + const instances = applicationInstances.map((instanceData) => this.buildInstance(instanceData, application)); + application.instances.push(...instances); + return application; + }); + } + buildInstance(instanceData, app) { + return (new InstanceModel(instanceData, this.bridge, app)).toApi(); + } +} + +var version$2 = "3.2.0"; + +const createFactoryFunction = (coreFactoryFunction) => { + return (userConfig) => __awaiter$1(void 0, void 0, void 0, function* () { + if (window.glue42gd || window.iodesktop) { + return enterprise(userConfig); + } + const ioc = new IoC(); + const config = parseConfig(userConfig); + checkSingleton(); + const glue = yield PromiseWrap(() => coreFactoryFunction(config, { version: version$2 }), 30000, "Glue Web initialization timed out, because core didn't resolve"); + const logger = glue.logger.subLogger("web.main.controller"); + ioc.defineGlue(glue); + ioc.sessionController.configure({ windowId: glue.interop.instance.instance }); + yield ioc.preferredConnectionController.start(config); + yield ioc.bridge.start(ioc.controllers); + ioc.defineConfig(config); + logger.trace("the bridge has been started, initializing all controllers"); + yield Promise.all(Object.values(ioc.controllers).map((controller) => controller.start(glue, ioc))); + logger.trace("all controllers reported started, starting all additional libraries"); + yield Promise.all(config.libraries.map((lib) => lib(glue, config))); + logger.trace("all libraries were started"); + ioc.eventsDispatcher.start(glue); + logger.trace("start event dispatched, glue is ready, returning it"); + return glue; + }); +}; + +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +} + +var MetricTypes = { + STRING: 1, + NUMBER: 2, + TIMESTAMP: 3, + OBJECT: 4 +}; + +function getMetricTypeByValue(metric) { + if (metric.type === MetricTypes.TIMESTAMP) { + return "timestamp"; + } + else if (metric.type === MetricTypes.NUMBER) { + return "number"; + } + else if (metric.type === MetricTypes.STRING) { + return "string"; + } + else if (metric.type === MetricTypes.OBJECT) { + return "object"; + } + return "unknown"; +} +function getTypeByValue(value) { + if (value.constructor === Date) { + return "timestamp"; + } + else if (typeof value === "number") { + return "number"; + } + else if (typeof value === "string") { + return "string"; + } + else if (typeof value === "object") { + return "object"; + } + else { + return "string"; + } +} +function serializeMetric(metric) { + var serializedMetrics = {}; + var type = getMetricTypeByValue(metric); + if (type === "object") { + var values = Object.keys(metric.value).reduce(function (memo, key) { + var innerType = getTypeByValue(metric.value[key]); + if (innerType === "object") { + var composite = defineNestedComposite(metric.value[key]); + memo[key] = { + type: "object", + description: "", + context: {}, + composite: composite, + }; + } + else { + memo[key] = { + type: innerType, + description: "", + context: {}, + }; + } + return memo; + }, {}); + serializedMetrics.composite = values; + } + serializedMetrics.name = normalizeMetricName(metric.path.join("/") + "/" + metric.name); + serializedMetrics.type = type; + serializedMetrics.description = metric.description; + serializedMetrics.context = {}; + return serializedMetrics; +} +function defineNestedComposite(values) { + return Object.keys(values).reduce(function (memo, key) { + var type = getTypeByValue(values[key]); + if (type === "object") { + memo[key] = { + type: "object", + description: "", + context: {}, + composite: defineNestedComposite(values[key]), + }; + } + else { + memo[key] = { + type: type, + description: "", + context: {}, + }; + } + return memo; + }, {}); +} +function normalizeMetricName(name) { + if (typeof name !== "undefined" && name.length > 0 && name[0] !== "/") { + return "/" + name; + } + else { + return name; + } +} +function getMetricValueByType(metric) { + var type = getMetricTypeByValue(metric); + if (type === "timestamp") { + return Date.now(); + } + else { + return publishNestedComposite(metric.value); + } +} +function publishNestedComposite(values) { + if (typeof values !== "object") { + return values; + } + return Object.keys(values).reduce(function (memo, key) { + var value = values[key]; + if (typeof value === "object" && value.constructor !== Date) { + memo[key] = publishNestedComposite(value); + } + else if (value.constructor === Date) { + memo[key] = new Date(value).getTime(); + } + else if (value.constructor === Boolean) { + memo[key] = value.toString(); + } + else { + memo[key] = value; + } + return memo; + }, {}); +} +function flatten(arr) { + return arr.reduce(function (flat, toFlatten) { + return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten); + }, []); +} +function getHighestState(arr) { + return arr.sort(function (a, b) { + if (!a.state) { + return 1; + } + if (!b.state) { + return -1; + } + return b.state - a.state; + })[0]; +} +function aggregateDescription(arr) { + var msg = ""; + arr.forEach(function (m, idx, a) { + var path = m.path.join("."); + if (idx === a.length - 1) { + msg += path + "." + m.name + ": " + m.description; + } + else { + msg += path + "." + m.name + ": " + m.description + ","; + } + }); + if (msg.length > 100) { + return msg.slice(0, 100) + "..."; + } + else { + return msg; + } +} +function composeMsgForRootStateMetric(system) { + var aggregatedState = system.root.getAggregateState(); + var merged = flatten(aggregatedState); + var highestState = getHighestState(merged); + var aggregateDesc = aggregateDescription(merged); + return { + description: aggregateDesc, + value: highestState.state, + }; +} + +function gw3 (connection, config) { + var _this = this; + if (!connection || typeof connection !== "object") { + throw new Error("Connection is required parameter"); + } + var joinPromise; + var session; + var init = function (repo) { + var resolveReadyPromise; + joinPromise = new Promise(function (resolve) { + resolveReadyPromise = resolve; + }); + session = connection.domain("metrics"); + session.onJoined(function (reconnect) { + if (!reconnect && resolveReadyPromise) { + resolveReadyPromise(); + resolveReadyPromise = undefined; + } + var rootStateMetric = { + name: "/State", + type: "object", + composite: { + Description: { + type: "string", + description: "", + }, + Value: { + type: "number", + description: "", + }, + }, + description: "System state", + context: {}, + }; + var defineRootMetricsMsg = { + type: "define", + metrics: [rootStateMetric], + }; + session.send(defineRootMetricsMsg); + if (reconnect) { + replayRepo(repo); + } + }); + session.join({ + system: config.system, + service: config.service, + instance: config.instance + }); + }; + var replayRepo = function (repo) { + replaySystem(repo.root); + }; + var replaySystem = function (system) { + createSystem(system); + system.metrics.forEach(function (m) { + createMetric(m); + }); + system.subSystems.forEach(function (ss) { + replaySystem(ss); + }); + }; + var createSystem = function (system) { return __awaiter(_this, void 0, void 0, function () { + var metric, createMetricsMsg; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (system.parent === undefined) { + return [2]; + } + return [4, joinPromise]; + case 1: + _a.sent(); + metric = { + name: normalizeMetricName(system.path.join("/") + "/" + system.name + "/State"), + type: "object", + composite: { + Description: { + type: "string", + description: "", + }, + Value: { + type: "number", + description: "", + }, + }, + description: "System state", + context: {}, + }; + createMetricsMsg = { + type: "define", + metrics: [metric], + }; + session.send(createMetricsMsg); + return [2]; + } + }); + }); }; + var updateSystem = function (system, state) { return __awaiter(_this, void 0, void 0, function () { + var shadowedUpdateMetric, stateObj, rootMetric; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4, joinPromise]; + case 1: + _a.sent(); + shadowedUpdateMetric = { + type: "publish", + values: [{ + name: normalizeMetricName(system.path.join("/") + "/" + system.name + "/State"), + value: { + Description: state.description, + Value: state.state, + }, + timestamp: Date.now(), + }], + }; + session.send(shadowedUpdateMetric); + stateObj = composeMsgForRootStateMetric(system); + rootMetric = { + type: "publish", + peer_id: connection.peerId, + values: [{ + name: "/State", + value: { + Description: stateObj.description, + Value: stateObj.value, + }, + timestamp: Date.now(), + }], + }; + session.send(rootMetric); + return [2]; + } + }); + }); }; + var createMetric = function (metric) { return __awaiter(_this, void 0, void 0, function () { + var metricClone, m, createMetricsMsg; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + metricClone = cloneMetric(metric); + return [4, joinPromise]; + case 1: + _a.sent(); + m = serializeMetric(metricClone); + createMetricsMsg = { + type: "define", + metrics: [m], + }; + session.send(createMetricsMsg); + if (typeof metricClone.value !== "undefined") { + updateMetricCore(metricClone); + } + return [2]; + } + }); + }); }; + var updateMetric = function (metric) { return __awaiter(_this, void 0, void 0, function () { + var metricClone; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + metricClone = cloneMetric(metric); + return [4, joinPromise]; + case 1: + _a.sent(); + updateMetricCore(metricClone); + return [2]; + } + }); + }); }; + var updateMetricCore = function (metric) { + if (canUpdate()) { + var value = getMetricValueByType(metric); + var publishMetricsMsg = { + type: "publish", + values: [{ + name: normalizeMetricName(metric.path.join("/") + "/" + metric.name), + value: value, + timestamp: Date.now(), + }], + }; + return session.sendFireAndForget(publishMetricsMsg); + } + return Promise.resolve(); + }; + var cloneMetric = function (metric) { + var metricClone = __assign({}, metric); + if (typeof metric.value === "object" && metric.value !== null) { + metricClone.value = __assign({}, metric.value); + } + return metricClone; + }; + var canUpdate = function () { + var _a; + try { + var func = (_a = config.canUpdateMetric) !== null && _a !== void 0 ? _a : (function () { return true; }); + return func(); + } + catch (_b) { + return true; + } + }; + return { + init: init, + createSystem: createSystem, + updateSystem: updateSystem, + createMetric: createMetric, + updateMetric: updateMetric, + }; +} + +var Helpers = { + validate: function (definition, parent, transport) { + if (definition === null || typeof definition !== "object") { + throw new Error("Missing definition"); + } + if (parent === null || typeof parent !== "object") { + throw new Error("Missing parent"); + } + if (transport === null || typeof transport !== "object") { + throw new Error("Missing transport"); + } + }, +}; + +var BaseMetric = (function () { + function BaseMetric(definition, system, transport, value, type) { + this.definition = definition; + this.system = system; + this.transport = transport; + this.value = value; + this.type = type; + this.path = []; + Helpers.validate(definition, system, transport); + this.path = system.path.slice(0); + this.path.push(system.name); + this.name = definition.name; + this.description = definition.description; + transport.createMetric(this); + } + Object.defineProperty(BaseMetric.prototype, "repo", { + get: function () { + var _a; + return (_a = this.system) === null || _a === void 0 ? void 0 : _a.repo; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(BaseMetric.prototype, "id", { + get: function () { return "".concat(this.system.path, "/").concat(name); }, + enumerable: false, + configurable: true + }); + BaseMetric.prototype.update = function (newValue) { + this.value = newValue; + return this.transport.updateMetric(this); + }; + return BaseMetric; +}()); + +var NumberMetric = (function (_super) { + __extends(NumberMetric, _super); + function NumberMetric(definition, system, transport, value) { + return _super.call(this, definition, system, transport, value, MetricTypes.NUMBER) || this; + } + NumberMetric.prototype.incrementBy = function (num) { + this.update(this.value + num); + }; + NumberMetric.prototype.increment = function () { + this.incrementBy(1); + }; + NumberMetric.prototype.decrement = function () { + this.incrementBy(-1); + }; + NumberMetric.prototype.decrementBy = function (num) { + this.incrementBy(num * -1); + }; + return NumberMetric; +}(BaseMetric)); + +var ObjectMetric = (function (_super) { + __extends(ObjectMetric, _super); + function ObjectMetric(definition, system, transport, value) { + return _super.call(this, definition, system, transport, value, MetricTypes.OBJECT) || this; + } + ObjectMetric.prototype.update = function (newValue) { + this.mergeValues(newValue); + return this.transport.updateMetric(this); + }; + ObjectMetric.prototype.mergeValues = function (values) { + var _this = this; + return Object.keys(this.value).forEach(function (k) { + if (typeof values[k] !== "undefined") { + _this.value[k] = values[k]; + } + }); + }; + return ObjectMetric; +}(BaseMetric)); + +var StringMetric = (function (_super) { + __extends(StringMetric, _super); + function StringMetric(definition, system, transport, value) { + return _super.call(this, definition, system, transport, value, MetricTypes.STRING) || this; + } + return StringMetric; +}(BaseMetric)); + +var TimestampMetric = (function (_super) { + __extends(TimestampMetric, _super); + function TimestampMetric(definition, system, transport, value) { + return _super.call(this, definition, system, transport, value, MetricTypes.TIMESTAMP) || this; + } + TimestampMetric.prototype.now = function () { + this.update(new Date()); + }; + return TimestampMetric; +}(BaseMetric)); + +function system(name, repo, protocol, parent, description) { + if (!repo) { + throw new Error("Repository is required"); + } + if (!protocol) { + throw new Error("Transport is required"); + } + var _transport = protocol; + var _name = name; + var _description = description || ""; + var _repo = repo; + var _parent = parent; + var _path = _buildPath(parent); + var _state = {}; + var id = _arrayToString(_path, "/") + name; + var root = repo.root; + var _subSystems = []; + var _metrics = []; + function subSystem(nameSystem, descriptionSystem) { + if (!nameSystem || nameSystem.length === 0) { + throw new Error("name is required"); + } + var match = _subSystems.filter(function (s) { return s.name === nameSystem; }); + if (match.length > 0) { + return match[0]; + } + var _system = system(nameSystem, _repo, _transport, me, descriptionSystem); + _subSystems.push(_system); + return _system; + } + function setState(state, stateDescription) { + _state = { state: state, description: stateDescription }; + _transport.updateSystem(me, _state); + } + function stringMetric(definition, value) { + return _getOrCreateMetric(definition, MetricTypes.STRING, value, function (metricDef) { return new StringMetric(metricDef, me, _transport, value); }); + } + function numberMetric(definition, value) { + return _getOrCreateMetric(definition, MetricTypes.NUMBER, value, function (metricDef) { return new NumberMetric(metricDef, me, _transport, value); }); + } + function objectMetric(definition, value) { + return _getOrCreateMetric(definition, MetricTypes.OBJECT, value, function (metricDef) { return new ObjectMetric(metricDef, me, _transport, value); }); + } + function timestampMetric(definition, value) { + return _getOrCreateMetric(definition, MetricTypes.TIMESTAMP, value, function (metricDef) { return new TimestampMetric(metricDef, me, _transport, value); }); + } + function _getOrCreateMetric(metricObject, expectedType, value, createMetric) { + var metricDef = { name: "" }; + if (typeof metricObject === "string") { + metricDef = { name: metricObject }; + } + else { + metricDef = metricObject; + } + var matching = _metrics.filter(function (shadowedMetric) { return shadowedMetric.name === metricDef.name; }); + if (matching.length > 0) { + var existing = matching[0]; + if (existing.type !== expectedType) { + throw new Error("A metric named ".concat(metricDef.name, " is already defined with different type.")); + } + if (typeof value !== "undefined") { + existing + .update(value) + .catch(function () { }); + } + return existing; + } + var metric = createMetric(metricDef); + _metrics.push(metric); + return metric; + } + function _buildPath(shadowedSystem) { + if (!shadowedSystem || !shadowedSystem.parent) { + return []; + } + var path = _buildPath(shadowedSystem.parent); + path.push(shadowedSystem.name); + return path; + } + function _arrayToString(path, separator) { + return ((path && path.length > 0) ? path.join(separator) : ""); + } + function getAggregateState() { + var aggState = []; + if (Object.keys(_state).length > 0) { + aggState.push({ + name: _name, + path: _path, + state: _state.state, + description: _state.description, + }); + } + _subSystems.forEach(function (shadowedSubSystem) { + var result = shadowedSubSystem.getAggregateState(); + if (result.length > 0) { + aggState.push.apply(aggState, result); + } + }); + return aggState; + } + var me = { + get name() { + return _name; + }, + get description() { + return _description; + }, + get repo() { + return _repo; + }, + get parent() { + return _parent; + }, + path: _path, + id: id, + root: root, + get subSystems() { + return _subSystems; + }, + get metrics() { + return _metrics; + }, + subSystem: subSystem, + getState: function () { + return _state; + }, + setState: setState, + stringMetric: stringMetric, + timestampMetric: timestampMetric, + objectMetric: objectMetric, + numberMetric: numberMetric, + getAggregateState: getAggregateState, + }; + _transport.createSystem(me); + return me; +} + +var Repository = (function () { + function Repository(options, protocol) { + protocol.init(this); + this.root = system("", this, protocol); + this.addSystemMetrics(this.root, options.clickStream || options.clickStream === undefined); + } + Repository.prototype.addSystemMetrics = function (rootSystem, useClickStream) { + if (typeof navigator !== "undefined") { + rootSystem.stringMetric("UserAgent", navigator.userAgent); + } + if (useClickStream && typeof document !== "undefined") { + var clickStream_1 = rootSystem.subSystem("ClickStream"); + var documentClickHandler = function (e) { + var _a; + if (!e.target) { + return; + } + var target = e.target; + var className = target ? (_a = target.getAttribute("class")) !== null && _a !== void 0 ? _a : "" : ""; + clickStream_1.objectMetric("LastBrowserEvent", { + type: "click", + timestamp: new Date(), + target: { + className: className, + id: target.id, + type: "<" + target.tagName.toLowerCase() + ">", + href: target.href || "", + }, + }); + }; + clickStream_1.objectMetric("Page", { + title: document.title, + page: window.location.href, + }); + if (document.addEventListener) { + document.addEventListener("click", documentClickHandler); + } + else { + document.attachEvent("onclick", documentClickHandler); + } + } + rootSystem.stringMetric("StartTime", (new Date()).toString()); + var urlMetric = rootSystem.stringMetric("StartURL", ""); + var appNameMetric = rootSystem.stringMetric("AppName", ""); + if (typeof window !== "undefined") { + if (typeof window.location !== "undefined") { + var startUrl = window.location.href; + urlMetric.update(startUrl); + } + if (typeof window.glue42gd !== "undefined") { + appNameMetric.update(window.glue42gd.appName); + } + } + }; + return Repository; +}()); + +var NullProtocol = (function () { + function NullProtocol() { + } + NullProtocol.prototype.init = function (repo) { + }; + NullProtocol.prototype.createSystem = function (system) { + return Promise.resolve(); + }; + NullProtocol.prototype.updateSystem = function (metric, state) { + return Promise.resolve(); + }; + NullProtocol.prototype.createMetric = function (metric) { + return Promise.resolve(); + }; + NullProtocol.prototype.updateMetric = function (metric) { + return Promise.resolve(); + }; + return NullProtocol; +}()); + +var PerfTracker = (function () { + function PerfTracker(api, initialPublishTimeout, publishInterval) { + this.api = api; + this.lastCount = 0; + this.initialPublishTimeout = 10 * 1000; + this.publishInterval = 60 * 1000; + this.initialPublishTimeout = initialPublishTimeout !== null && initialPublishTimeout !== void 0 ? initialPublishTimeout : this.initialPublishTimeout; + this.publishInterval = publishInterval !== null && publishInterval !== void 0 ? publishInterval : this.publishInterval; + this.scheduleCollection(); + this.system = this.api.subSystem("performance", "Performance data published by the web application"); + } + PerfTracker.prototype.scheduleCollection = function () { + var _this = this; + setTimeout(function () { + _this.collect(); + setInterval(function () { + _this.collect(); + }, _this.publishInterval); + }, this.initialPublishTimeout); + }; + PerfTracker.prototype.collect = function () { + try { + this.collectMemory(); + this.collectEntries(); + } + catch (_a) { + } + }; + PerfTracker.prototype.collectMemory = function () { + var memory = window.performance.memory; + this.system.stringMetric("memory", JSON.stringify({ + totalJSHeapSize: memory.totalJSHeapSize, + usedJSHeapSize: memory.usedJSHeapSize + })); + }; + PerfTracker.prototype.collectEntries = function () { + var allEntries = window.performance.getEntries(); + if (allEntries.length <= this.lastCount) { + return; + } + this.lastCount = allEntries.length; + var jsonfiedEntries = allEntries.map(function (i) { return i.toJSON(); }); + this.system.stringMetric("entries", JSON.stringify(jsonfiedEntries)); + }; + return PerfTracker; +}()); + +var metrics = (function (options) { + var protocol; + if (!options.connection || typeof options.connection !== "object") { + protocol = new NullProtocol(); + } + else { + protocol = gw3(options.connection, options); + } + var repo = new Repository(options, protocol); + var rootSystem = repo.root; + if (!options.disableAutoAppSystem) { + rootSystem = rootSystem.subSystem("App"); + } + var api = addFAVSupport(rootSystem); + initPerf(api, options.pagePerformanceMetrics); + return api; +}); +function initPerf(api, config) { + var _a, _b; + if (typeof window === "undefined") { + return; + } + var perfConfig = (_b = (_a = window === null || window === void 0 ? void 0 : window.glue42gd) === null || _a === void 0 ? void 0 : _a.metrics) === null || _b === void 0 ? void 0 : _b.pagePerformanceMetrics; + if (perfConfig) { + config = perfConfig; + } + if (config === null || config === void 0 ? void 0 : config.enabled) { + new PerfTracker(api, config.initialPublishTimeout, config.publishInterval); + } +} +function addFAVSupport(system) { + var reportingSystem = system.subSystem("reporting"); + var def = { + name: "features" + }; + var featureMetric; + var featureMetricFunc = function (name, action, payload) { + if (typeof name === "undefined" || name === "") { + throw new Error("name is mandatory"); + } + else if (typeof action === "undefined" || action === "") { + throw new Error("action is mandatory"); + } + else if (typeof payload === "undefined" || payload === "") { + throw new Error("payload is mandatory"); + } + if (!featureMetric) { + featureMetric = reportingSystem.objectMetric(def, { name: name, action: action, payload: payload }); + } + else { + featureMetric.update({ + name: name, + action: action, + payload: payload + }); + } + }; + system.featureMetric = featureMetricFunc; + return system; +} + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +function createRegistry(options) { + if (options && options.errorHandling + && typeof options.errorHandling !== "function" + && options.errorHandling !== "log" + && options.errorHandling !== "silent" + && options.errorHandling !== "throw") { + throw new Error("Invalid options passed to createRegistry. Prop errorHandling should be [\"log\" | \"silent\" | \"throw\" | (err) => void], but " + typeof options.errorHandling + " was passed"); + } + var _userErrorHandler = options && typeof options.errorHandling === "function" && options.errorHandling; + var callbacks = {}; + function add(key, callback, replayArgumentsArr) { + var callbacksForKey = callbacks[key]; + if (!callbacksForKey) { + callbacksForKey = []; + callbacks[key] = callbacksForKey; + } + callbacksForKey.push(callback); + if (replayArgumentsArr) { + setTimeout(function () { + replayArgumentsArr.forEach(function (replayArgument) { + var _a; + if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) { + try { + if (Array.isArray(replayArgument)) { + callback.apply(undefined, replayArgument); + } + else { + callback.apply(undefined, [replayArgument]); + } + } + catch (err) { + _handleError(err, key); + } + } + }); + }, 0); + } + return function () { + var allForKey = callbacks[key]; + if (!allForKey) { + return; + } + allForKey = allForKey.reduce(function (acc, element, index) { + if (!(element === callback && acc.length === index)) { + acc.push(element); + } + return acc; + }, []); + if (allForKey.length === 0) { + delete callbacks[key]; + } + else { + callbacks[key] = allForKey; + } + }; + } + function execute(key) { + var argumentsArr = []; + for (var _i = 1; _i < arguments.length; _i++) { + argumentsArr[_i - 1] = arguments[_i]; + } + var callbacksForKey = callbacks[key]; + if (!callbacksForKey || callbacksForKey.length === 0) { + return []; + } + var results = []; + callbacksForKey.forEach(function (callback) { + try { + var result = callback.apply(undefined, argumentsArr); + results.push(result); + } + catch (err) { + results.push(undefined); + _handleError(err, key); + } + }); + return results; + } + function _handleError(exceptionArtifact, key) { + var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact); + if (_userErrorHandler) { + _userErrorHandler(errParam); + return; + } + var msg = "[ERROR] callback-registry: User callback for key \"" + key + "\" failed: " + errParam.stack; + if (options) { + switch (options.errorHandling) { + case "log": + return console.error(msg); + case "silent": + return; + case "throw": + throw new Error(msg); + } + } + console.error(msg); + } + function clear() { + callbacks = {}; + } + function clearKey(key) { + var callbacksForKey = callbacks[key]; + if (!callbacksForKey) { + return; + } + delete callbacks[key]; + } + return { + add: add, + execute: execute, + clear: clear, + clearKey: clearKey + }; +} +createRegistry.default = createRegistry; +var lib$1 = createRegistry; + +var InProcTransport = (function () { + function InProcTransport(settings, logger) { + var _this = this; + this.registry = lib$1(); + this.gw = settings.facade; + this.gw.connect(function (_client, message) { + _this.messageHandler(message); + }).then(function (client) { + _this.client = client; + }); + } + Object.defineProperty(InProcTransport.prototype, "isObjectBasedTransport", { + get: function () { + return true; + }, + enumerable: false, + configurable: true + }); + InProcTransport.prototype.sendObject = function (msg) { + if (this.client) { + this.client.send(msg); + return Promise.resolve(undefined); + } + else { + return Promise.reject("not connected"); + } + }; + InProcTransport.prototype.send = function (_msg) { + return Promise.reject("not supported"); + }; + InProcTransport.prototype.onMessage = function (callback) { + return this.registry.add("onMessage", callback); + }; + InProcTransport.prototype.onConnectedChanged = function (callback) { + callback(true); + return function () { }; + }; + InProcTransport.prototype.close = function () { + return Promise.resolve(); + }; + InProcTransport.prototype.open = function () { + return Promise.resolve(); + }; + InProcTransport.prototype.name = function () { + return "in-memory"; + }; + InProcTransport.prototype.reconnect = function () { + return Promise.resolve(); + }; + InProcTransport.prototype.messageHandler = function (msg) { + this.registry.execute("onMessage", msg); + }; + return InProcTransport; +}()); + +var SharedWorkerTransport = (function () { + function SharedWorkerTransport(workerFile, logger) { + var _this = this; + this.logger = logger; + this.registry = lib$1(); + this.worker = new SharedWorker(workerFile); + this.worker.port.onmessage = function (e) { + _this.messageHandler(e.data); + }; + } + Object.defineProperty(SharedWorkerTransport.prototype, "isObjectBasedTransport", { + get: function () { + return true; + }, + enumerable: false, + configurable: true + }); + SharedWorkerTransport.prototype.sendObject = function (msg) { + this.worker.port.postMessage(msg); + return Promise.resolve(); + }; + SharedWorkerTransport.prototype.send = function (_msg) { + return Promise.reject("not supported"); + }; + SharedWorkerTransport.prototype.onMessage = function (callback) { + return this.registry.add("onMessage", callback); + }; + SharedWorkerTransport.prototype.onConnectedChanged = function (callback) { + callback(true); + return function () { }; + }; + SharedWorkerTransport.prototype.close = function () { + return Promise.resolve(); + }; + SharedWorkerTransport.prototype.open = function () { + return Promise.resolve(); + }; + SharedWorkerTransport.prototype.name = function () { + return "shared-worker"; + }; + SharedWorkerTransport.prototype.reconnect = function () { + return Promise.resolve(); + }; + SharedWorkerTransport.prototype.messageHandler = function (msg) { + this.registry.execute("onMessage", msg); + }; + return SharedWorkerTransport; +}()); + +var Utils = (function () { + function Utils() { + } + Utils.isNode = function () { + if (typeof Utils._isNode !== "undefined") { + return Utils._isNode; + } + if (typeof window !== "undefined") { + Utils._isNode = false; + return false; + } + try { + Utils._isNode = Object.prototype.toString.call(global.process) === "[object process]"; + } + catch (e) { + Utils._isNode = false; + } + return Utils._isNode; + }; + return Utils; +}()); + +var PromiseWrapper = (function () { + function PromiseWrapper() { + var _this = this; + this.rejected = false; + this.resolved = false; + this.promise = new Promise(function (resolve, reject) { + _this.resolve = function (t) { + _this.resolved = true; + resolve(t); + }; + _this.reject = function (err) { + _this.rejected = true; + reject(err); + }; + }); + } + PromiseWrapper.delay = function (time) { + return new Promise(function (resolve) { return setTimeout(resolve, time); }); + }; + Object.defineProperty(PromiseWrapper.prototype, "ended", { + get: function () { + return this.rejected || this.resolved; + }, + enumerable: false, + configurable: true + }); + return PromiseWrapper; +}()); + +var timers = {}; +function getAllTimers() { + return timers; +} +function timer (timerName) { + var existing = timers[timerName]; + if (existing) { + return existing; + } + var marks = []; + function now() { + return new Date().getTime(); + } + var startTime = now(); + mark("start", startTime); + var endTime; + var period; + function stop() { + endTime = now(); + mark("end", endTime); + period = endTime - startTime; + return period; + } + function mark(name, time) { + var currentTime = time !== null && time !== void 0 ? time : now(); + var diff = 0; + if (marks.length > 0) { + diff = currentTime - marks[marks.length - 1].time; + } + marks.push({ name: name, time: currentTime, diff: diff }); + } + var timerObj = { + get startTime() { + return startTime; + }, + get endTime() { + return endTime; + }, + get period() { + return period; + }, + stop: stop, + mark: mark, + marks: marks + }; + timers[timerName] = timerObj; + return timerObj; +} + +var WebSocketConstructor = Utils.isNode() ? require("ws") : window.WebSocket; +var WS = (function () { + function WS(settings, logger) { + this.startupTimer = timer("connection"); + this._running = true; + this._registry = lib$1(); + this.wsRequests = []; + this.settings = settings; + this.logger = logger; + if (!this.settings.ws) { + throw new Error("ws is missing"); + } + } + WS.prototype.onMessage = function (callback) { + return this._registry.add("onMessage", callback); + }; + WS.prototype.send = function (msg, options) { + var _this = this; + return new Promise(function (resolve, reject) { + _this.waitForSocketConnection(function () { + var _a; + try { + (_a = _this.ws) === null || _a === void 0 ? void 0 : _a.send(msg); + resolve(); + } + catch (e) { + reject(e); + } + }, reject); + }); + }; + WS.prototype.open = function () { + var _this = this; + this.logger.info("opening ws..."); + this._running = true; + return new Promise(function (resolve, reject) { + _this.waitForSocketConnection(resolve, reject); + }); + }; + WS.prototype.close = function () { + this._running = false; + if (this.ws) { + this.ws.close(); + } + return Promise.resolve(); + }; + WS.prototype.onConnectedChanged = function (callback) { + return this._registry.add("onConnectedChanged", callback); + }; + WS.prototype.name = function () { + return this.settings.ws; + }; + WS.prototype.reconnect = function () { + var _a; + (_a = this.ws) === null || _a === void 0 ? void 0 : _a.close(); + var pw = new PromiseWrapper(); + this.waitForSocketConnection(function () { + pw.resolve(); + }); + return pw.promise; + }; + WS.prototype.waitForSocketConnection = function (callback, failed) { + var _a; + failed = failed !== null && failed !== void 0 ? failed : (function () { }); + if (!this._running) { + failed("wait for socket on ".concat(this.settings.ws, " failed - socket closed by user")); + return; + } + if (((_a = this.ws) === null || _a === void 0 ? void 0 : _a.readyState) === 1) { + callback(); + return; + } + this.wsRequests.push({ callback: callback, failed: failed }); + if (this.wsRequests.length > 1) { + return; + } + this.openSocket(); + }; + WS.prototype.openSocket = function (retryInterval, retriesLeft) { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + this.startupTimer.mark("opening-socket"); + if (retryInterval === undefined) { + retryInterval = this.settings.reconnectInterval; + } + if (typeof retriesLeft === "undefined") { + retriesLeft = this.settings.reconnectAttempts; + } + if (retriesLeft !== undefined) { + if (retriesLeft === 0) { + this.notifyForSocketState("wait for socket on ".concat(this.settings.ws, " failed - no more retries left")); + return [2]; + } + this.logger.debug("will retry ".concat(retriesLeft, " more times (every ").concat(retryInterval, " ms)")); + } + _b.label = 1; + case 1: + _b.trys.push([1, 3, , 4]); + return [4, this.initiateSocket()]; + case 2: + _b.sent(); + this.startupTimer.mark("socket-initiated"); + this.notifyForSocketState(); + return [3, 4]; + case 3: + _b.sent(); + setTimeout(function () { + var retries = retriesLeft === undefined ? undefined : retriesLeft - 1; + _this.openSocket(retryInterval, retries); + }, retryInterval); + return [3, 4]; + case 4: return [2]; + } + }); + }); + }; + WS.prototype.initiateSocket = function () { + var _this = this; + var pw = new PromiseWrapper(); + this.logger.debug("initiating ws to ".concat(this.settings.ws, "...")); + this.ws = new WebSocketConstructor(this.settings.ws || ""); + this.ws.onerror = function (err) { + var reason = ""; + try { + reason = JSON.stringify(err); + } + catch (error) { + var seen_1 = new WeakSet(); + var replacer = function (key, value) { + if (typeof value === "object" && value !== null) { + if (seen_1.has(value)) { + return; + } + seen_1.add(value); + } + return value; + }; + reason = JSON.stringify(err, replacer); + } + pw.reject("error"); + _this.notifyStatusChanged(false, reason); + }; + this.ws.onclose = function (err) { + _this.logger.info("ws closed ".concat(err)); + pw.reject("closed"); + _this.notifyStatusChanged(false); + }; + this.ws.onopen = function () { + var _a; + _this.startupTimer.mark("ws-opened"); + _this.logger.info("ws opened ".concat((_a = _this.settings.identity) === null || _a === void 0 ? void 0 : _a.application)); + pw.resolve(); + _this.notifyStatusChanged(true); + }; + this.ws.onmessage = function (message) { + _this._registry.execute("onMessage", message.data); + }; + return pw.promise; + }; + WS.prototype.notifyForSocketState = function (error) { + this.wsRequests.forEach(function (wsRequest) { + if (error) { + if (wsRequest.failed) { + wsRequest.failed(error); + } + } + else { + wsRequest.callback(); + } + }); + this.wsRequests = []; + }; + WS.prototype.notifyStatusChanged = function (status, reason) { + this._registry.execute("onConnectedChanged", status, reason); + }; + return WS; +}()); + +var shortidExports = {}; +var shortid$1 = { + get exports(){ return shortidExports; }, + set exports(v){ shortidExports = v; }, +}; + +var libExports = {}; +var lib = { + get exports(){ return libExports; }, + set exports(v){ libExports = v; }, +}; + +// Found this seed-based random generator somewhere +// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu) + +var seed = 1; + +/** + * return a random number based on a seed + * @param seed + * @returns {number} + */ +function getNextValue() { + seed = (seed * 9301 + 49297) % 233280; + return seed/(233280.0); +} + +function setSeed$1(_seed_) { + seed = _seed_; +} + +var randomFromSeed$1 = { + nextValue: getNextValue, + seed: setSeed$1 +}; + +var randomFromSeed = randomFromSeed$1; + +var ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-'; +var alphabet$2; +var previousSeed; + +var shuffled; + +function reset() { + shuffled = false; +} + +function setCharacters(_alphabet_) { + if (!_alphabet_) { + if (alphabet$2 !== ORIGINAL) { + alphabet$2 = ORIGINAL; + reset(); + } + return; + } + + if (_alphabet_ === alphabet$2) { + return; + } + + if (_alphabet_.length !== ORIGINAL.length) { + throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_); + } + + var unique = _alphabet_.split('').filter(function(item, ind, arr){ + return ind !== arr.lastIndexOf(item); + }); + + if (unique.length) { + throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', ')); + } + + alphabet$2 = _alphabet_; + reset(); +} + +function characters(_alphabet_) { + setCharacters(_alphabet_); + return alphabet$2; +} + +function setSeed(seed) { + randomFromSeed.seed(seed); + if (previousSeed !== seed) { + reset(); + previousSeed = seed; + } +} + +function shuffle() { + if (!alphabet$2) { + setCharacters(ORIGINAL); + } + + var sourceArray = alphabet$2.split(''); + var targetArray = []; + var r = randomFromSeed.nextValue(); + var characterIndex; + + while (sourceArray.length > 0) { + r = randomFromSeed.nextValue(); + characterIndex = Math.floor(r * sourceArray.length); + targetArray.push(sourceArray.splice(characterIndex, 1)[0]); + } + return targetArray.join(''); +} + +function getShuffled() { + if (shuffled) { + return shuffled; + } + shuffled = shuffle(); + return shuffled; +} + +/** + * lookup shuffled letter + * @param index + * @returns {string} + */ +function lookup(index) { + var alphabetShuffled = getShuffled(); + return alphabetShuffled[index]; +} + +function get () { + return alphabet$2 || ORIGINAL; +} + +var alphabet_1 = { + get: get, + characters: characters, + seed: setSeed, + lookup: lookup, + shuffled: getShuffled +}; + +var crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto + +var randomByte; + +if (!crypto || !crypto.getRandomValues) { + randomByte = function(size) { + var bytes = []; + for (var i = 0; i < size; i++) { + bytes.push(Math.floor(Math.random() * 256)); + } + return bytes; + }; +} else { + randomByte = function(size) { + return crypto.getRandomValues(new Uint8Array(size)); + }; +} + +var randomByteBrowser = randomByte; + +// This file replaces `format.js` in bundlers like webpack or Rollup, +// according to `browser` config in `package.json`. + +var format_browser = function (random, alphabet, size) { + // We can’t use bytes bigger than the alphabet. To make bytes values closer + // to the alphabet, we apply bitmask on them. We look for the closest + // `2 ** x - 1` number, which will be bigger than alphabet size. If we have + // 30 symbols in the alphabet, we will take 31 (00011111). + // We do not use faster Math.clz32, because it is not available in browsers. + var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1; + // Bitmask is not a perfect solution (in our example it will pass 31 bytes, + // which is bigger than the alphabet). As a result, we will need more bytes, + // than ID size, because we will refuse bytes bigger than the alphabet. + + // Every hardware random generator call is costly, + // because we need to wait for entropy collection. This is why often it will + // be faster to ask for few extra bytes in advance, to avoid additional calls. + + // Here we calculate how many random bytes should we call in advance. + // It depends on ID length, mask / alphabet size and magic number 1.6 + // (which was selected according benchmarks). + + // -~f => Math.ceil(f) if n is float number + // -~i => i + 1 if n is integer number + var step = -~(1.6 * mask * size / alphabet.length); + var id = ''; + + while (true) { + var bytes = random(step); + // Compact alternative for `for (var i = 0; i < step; i++)` + var i = step; + while (i--) { + // If random byte is bigger than alphabet even after bitmask, + // we refuse it by `|| ''`. + id += alphabet[bytes[i] & mask] || ''; + // More compact than `id.length + 1 === size` + if (id.length === +size) return id + } + } +}; + +var alphabet$1 = alphabet_1; +var random = randomByteBrowser; +var format = format_browser; + +function generate$1(number) { + var loopCounter = 0; + var done; + + var str = ''; + + while (!done) { + str = str + format(random, alphabet$1.get(), 1); + done = number < (Math.pow(16, loopCounter + 1 ) ); + loopCounter++; + } + return str; +} + +var generate_1 = generate$1; + +var generate = generate_1; + +// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness. +// This number should be updated every year or so to keep the generated id short. +// To regenerate `new Date() - 0` and bump the version. Always bump the version! +var REDUCE_TIME = 1567752802062; + +// don't change unless we change the algos or REDUCE_TIME +// must be an integer and less than 16 +var version$1 = 7; + +// Counter is used when shortid is called multiple times in one second. +var counter; + +// Remember the last time shortid was called in case counter is needed. +var previousSeconds; + +/** + * Generate unique id + * Returns string id + */ +function build(clusterWorkerId) { + var str = ''; + + var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001); + + if (seconds === previousSeconds) { + counter++; + } else { + counter = 0; + previousSeconds = seconds; + } + + str = str + generate(version$1); + str = str + generate(clusterWorkerId); + if (counter > 0) { + str = str + generate(counter); + } + str = str + generate(seconds); + return str; +} + +var build_1 = build; + +var alphabet = alphabet_1; + +function isShortId(id) { + if (!id || typeof id !== 'string' || id.length < 6 ) { + return false; + } + + var nonAlphabetic = new RegExp('[^' + + alphabet.get().replace(/[|\\{}()[\]^$+*?.-]/g, '\\$&') + + ']'); + return !nonAlphabetic.test(id); +} + +var isValid = isShortId; + +(function (module) { + + var alphabet = alphabet_1; + var build = build_1; + var isValid$1 = isValid; + + // if you are using cluster or multiple servers use this to make each instance + // has a unique value for worker + // Note: I don't know if this is automatically set when using third + // party cluster solutions such as pm2. + var clusterWorkerId = 0; + + /** + * Set the seed. + * Highly recommended if you don't want people to try to figure out your id schema. + * exposed as shortid.seed(int) + * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps. + */ + function seed(seedValue) { + alphabet.seed(seedValue); + return module.exports; + } + + /** + * Set the cluster worker or machine id + * exposed as shortid.worker(int) + * @param workerId worker must be positive integer. Number less than 16 is recommended. + * returns shortid module so it can be chained. + */ + function worker(workerId) { + clusterWorkerId = workerId; + return module.exports; + } + + /** + * + * sets new characters to use in the alphabet + * returns the shuffled alphabet + */ + function characters(newCharacters) { + if (newCharacters !== undefined) { + alphabet.characters(newCharacters); + } + + return alphabet.shuffled(); + } + + /** + * Generate unique id + * Returns string id + */ + function generate() { + return build(clusterWorkerId); + } + + // Export all other functions as properties of the generate function + module.exports = generate; + module.exports.generate = generate; + module.exports.seed = seed; + module.exports.worker = worker; + module.exports.characters = characters; + module.exports.isValid = isValid$1; +} (lib)); + +(function (module) { + module.exports = libExports; +} (shortid$1)); + +var shortid = /*@__PURE__*/getDefaultExportFromCjs(shortidExports); + +function domainSession (domain, connection, logger, successMessages, errorMessages) { + if (domain == null) { + domain = "global"; + } + successMessages = successMessages || ["success"]; + errorMessages = errorMessages || ["error"]; + var isJoined = false; + var tryReconnecting = false; + var _latestOptions; + var _connectionOn = false; + var callbacks = lib$1(); + connection.disconnected(handleConnectionDisconnected); + connection.loggedIn(handleConnectionLoggedIn); + connection.on("success", function (msg) { return handleSuccessMessage(msg); }); + connection.on("error", function (msg) { return handleErrorMessage(msg); }); + connection.on("result", function (msg) { return handleSuccessMessage(msg); }); + if (successMessages) { + successMessages.forEach(function (sm) { + connection.on(sm, function (msg) { return handleSuccessMessage(msg); }); + }); + } + if (errorMessages) { + errorMessages.forEach(function (sm) { + connection.on(sm, function (msg) { return handleErrorMessage(msg); }); + }); + } + var requestsMap = {}; + function join(options) { + _latestOptions = options; + return new Promise(function (resolve, reject) { + if (isJoined) { + resolve({}); + return; + } + var joinPromise; + if (domain === "global") { + joinPromise = _connectionOn ? Promise.resolve({}) : Promise.reject("not connected to gateway"); + } + else { + logger.debug("joining domain ".concat(domain)); + var joinMsg = { + type: "join", + destination: domain, + domain: "global", + options: options, + }; + joinPromise = send(joinMsg); + } + joinPromise + .then(function () { + handleJoined(); + resolve({}); + }) + .catch(function (err) { + logger.debug("error joining " + domain + " domain: " + JSON.stringify(err)); + reject(err); + }); + }); + } + function leave() { + if (domain === "global") { + return Promise.resolve(); + } + logger.debug("stopping session " + domain + "..."); + var leaveMsg = { + type: "leave", + destination: domain, + domain: "global", + }; + tryReconnecting = false; + return send(leaveMsg) + .then(function () { + isJoined = false; + callbacks.execute("onLeft"); + }) + .catch(function () { + isJoined = false; + callbacks.execute("onLeft"); + }); + } + function handleJoined() { + logger.debug("did join " + domain); + isJoined = true; + var wasReconnect = tryReconnecting; + tryReconnecting = false; + callbacks.execute("onJoined", wasReconnect); + } + function handleConnectionDisconnected() { + _connectionOn = false; + logger.debug("connection is down"); + isJoined = false; + tryReconnecting = true; + callbacks.execute("onLeft", { disconnected: true }); + } + function handleConnectionLoggedIn() { + _connectionOn = true; + if (tryReconnecting) { + logger.debug("connection is now up - trying to reconnect..."); + join(_latestOptions); + } + } + function onJoined(callback) { + if (isJoined) { + callback(false); + } + return callbacks.add("onJoined", callback); + } + function onLeft(callback) { + if (!isJoined) { + callback(); + } + return callbacks.add("onLeft", callback); + } + function handleErrorMessage(msg) { + if (domain !== msg.domain) { + return; + } + var requestId = msg.request_id; + if (!requestId) { + return; + } + var entry = requestsMap[requestId]; + if (!entry) { + return; + } + entry.error(msg); + } + function handleSuccessMessage(msg) { + if (msg.domain !== domain) { + return; + } + var requestId = msg.request_id; + if (!requestId) { + return; + } + var entry = requestsMap[requestId]; + if (!entry) { + return; + } + entry.success(msg); + } + function getNextRequestId() { + return shortid(); + } + function send(msg, tag, options) { + options = options || {}; + msg.request_id = msg.request_id || getNextRequestId(); + msg.domain = msg.domain || domain; + if (!options.skipPeerId) { + msg.peer_id = connection.peerId; + } + var requestId = msg.request_id; + return new Promise(function (resolve, reject) { + requestsMap[requestId] = { + success: function (successMsg) { + delete requestsMap[requestId]; + successMsg._tag = tag; + resolve(successMsg); + }, + error: function (errorMsg) { + logger.warn("GW error - ".concat(JSON.stringify(errorMsg), " for request ").concat(JSON.stringify(msg))); + delete requestsMap[requestId]; + errorMsg._tag = tag; + reject(errorMsg); + }, + }; + connection + .send(msg, options) + .catch(function (err) { + requestsMap[requestId].error({ err: err }); + }); + }); + } + function sendFireAndForget(msg) { + msg.request_id = msg.request_id ? msg.request_id : getNextRequestId(); + msg.domain = msg.domain || domain; + msg.peer_id = connection.peerId; + return connection.send(msg); + } + return { + join: join, + leave: leave, + onJoined: onJoined, + onLeft: onLeft, + send: send, + sendFireAndForget: sendFireAndForget, + on: function (type, callback) { + connection.on(type, function (msg) { + if (msg.domain !== domain) { + return; + } + try { + callback(msg); + } + catch (e) { + logger.error("Callback failed: ".concat(e, " \n ").concat(e.stack, " \n msg was: ").concat(JSON.stringify(msg)), e); + } + }); + }, + loggedIn: function (callback) { return connection.loggedIn(callback); }, + connected: function (callback) { return connection.connected(callback); }, + disconnected: function (callback) { return connection.disconnected(callback); }, + get peerId() { + return connection.peerId; + }, + get domain() { + return domain; + }, + }; +} + +var GW3ProtocolImpl = (function () { + function GW3ProtocolImpl(connection, settings, logger) { + var _this = this; + this.connection = connection; + this.settings = settings; + this.logger = logger; + this.protocolVersion = 3; + this.datePrefix = "#T42_DATE#"; + this.datePrefixLen = this.datePrefix.length; + this.dateMinLen = this.datePrefixLen + 1; + this.datePrefixFirstChar = this.datePrefix[0]; + this.registry = lib$1(); + this._isLoggedIn = false; + this.shouldTryLogin = true; + this.initialLogin = true; + this.initialLoginAttempts = 3; + this.sessions = []; + connection.disconnected(function () { + _this.handleDisconnected(); + }); + this.ping(); + } + Object.defineProperty(GW3ProtocolImpl.prototype, "isLoggedIn", { + get: function () { + return this._isLoggedIn; + }, + enumerable: false, + configurable: true + }); + GW3ProtocolImpl.prototype.processStringMessage = function (message) { + var _this = this; + var msg = JSON.parse(message, function (key, value) { + if (typeof value !== "string") { + return value; + } + if (value.length < _this.dateMinLen) { + return value; + } + if (value[0] !== _this.datePrefixFirstChar) { + return value; + } + if (value.substring(0, _this.datePrefixLen) !== _this.datePrefix) { + return value; + } + try { + var milliseconds = parseInt(value.substring(_this.datePrefixLen, value.length), 10); + if (isNaN(milliseconds)) { + return value; + } + return new Date(milliseconds); + } + catch (ex) { + return value; + } + }); + return { + msg: msg, + msgType: msg.type, + }; + }; + GW3ProtocolImpl.prototype.createStringMessage = function (message) { + var oldToJson = Date.prototype.toJSON; + try { + var datePrefix_1 = this.datePrefix; + Date.prototype.toJSON = function () { + return datePrefix_1 + this.getTime(); + }; + var result = JSON.stringify(message); + return result; + } + finally { + Date.prototype.toJSON = oldToJson; + } + }; + GW3ProtocolImpl.prototype.processObjectMessage = function (message) { + if (!message.type) { + throw new Error("Object should have type property"); + } + return { + msg: message, + msgType: message.type, + }; + }; + GW3ProtocolImpl.prototype.createObjectMessage = function (message) { + return message; + }; + GW3ProtocolImpl.prototype.login = function (config, reconnect) { + return __awaiter(this, void 0, void 0, function () { + var authentication, token, e_1, _a, helloMsg, sendOptions, welcomeMsg, msg, token, _b, err_1; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + this.logger.debug("logging in..."); + this.loginConfig = config; + if (!this.loginConfig) { + this.loginConfig = { username: "", password: "" }; + } + this.shouldTryLogin = true; + authentication = {}; + this.connection.gatewayToken = config.gatewayToken; + if (!config.gatewayToken) return [3, 5]; + if (!reconnect) return [3, 4]; + _c.label = 1; + case 1: + _c.trys.push([1, 3, , 4]); + return [4, this.getNewGWToken()]; + case 2: + token = _c.sent(); + config.gatewayToken = token; + return [3, 4]; + case 3: + e_1 = _c.sent(); + this.logger.warn("failed to get GW token when reconnecting ".concat((e_1 === null || e_1 === void 0 ? void 0 : e_1.message) || e_1)); + return [3, 4]; + case 4: + authentication.method = "gateway-token"; + authentication.token = config.gatewayToken; + this.connection.gatewayToken = config.gatewayToken; + return [3, 10]; + case 5: + if (!(config.flowName === "sspi")) return [3, 9]; + authentication.provider = "win"; + authentication.method = "access-token"; + if (!(config.flowCallback && config.sessionId)) return [3, 7]; + _a = authentication; + return [4, config.flowCallback(config.sessionId, null)]; + case 6: + _a.token = + (_c.sent()) + .data + .toString("base64"); + return [3, 8]; + case 7: throw new Error("Invalid SSPI config"); + case 8: return [3, 10]; + case 9: + if (config.token) { + authentication.method = "access-token"; + authentication.token = config.token; + } + else if (config.username) { + authentication.method = "secret"; + authentication.login = config.username; + authentication.secret = config.password; + } + else if (config.provider) { + authentication.provider = config.provider; + authentication.providerContext = config.providerContext; + } + else { + throw new Error("invalid auth message" + JSON.stringify(config)); + } + _c.label = 10; + case 10: + helloMsg = { + type: "hello", + identity: this.settings.identity, + authentication: authentication + }; + if (config.sessionId) { + helloMsg.request_id = config.sessionId; + } + this.globalDomain = domainSession("global", this.connection, this.logger.subLogger("global-domain"), [ + "welcome", + "token", + "authentication-request" + ]); + sendOptions = { skipPeerId: true }; + if (this.initialLogin) { + sendOptions.retryInterval = this.settings.reconnectInterval; + sendOptions.maxRetries = this.settings.reconnectAttempts; + } + _c.label = 11; + case 11: + _c.trys.push([11, 19, 20, 21]); + welcomeMsg = void 0; + _c.label = 12; + case 12: + return [4, this.globalDomain.send(helloMsg, undefined, sendOptions)]; + case 13: + msg = _c.sent(); + if (!(msg.type === "authentication-request")) return [3, 16]; + token = Buffer.from(msg.authentication.token, "base64"); + if (!(config.flowCallback && config.sessionId)) return [3, 15]; + _b = helloMsg.authentication; + return [4, config.flowCallback(config.sessionId, token)]; + case 14: + _b.token = + (_c.sent()) + .data + .toString("base64"); + _c.label = 15; + case 15: + helloMsg.request_id = config.sessionId; + return [3, 12]; + case 16: + if (msg.type === "welcome") { + welcomeMsg = msg; + return [3, 18]; + } + else if (msg.type === "error") { + throw new Error("Authentication failed: " + msg.reason); + } + else { + throw new Error("Unexpected message type during authentication: " + msg.type); + } + case 17: return [3, 12]; + case 18: + this.initialLogin = false; + this.logger.debug("login successful with peerId " + welcomeMsg.peer_id); + this.connection.peerId = welcomeMsg.peer_id; + this.connection.resolvedIdentity = welcomeMsg.resolved_identity; + this.connection.availableDomains = welcomeMsg.available_domains; + if (welcomeMsg.options) { + this.connection.token = welcomeMsg.options.access_token; + this.connection.info = welcomeMsg.options.info; + } + this.setLoggedIn(true); + return [2, welcomeMsg.resolved_identity]; + case 19: + err_1 = _c.sent(); + this.logger.error("error sending hello message - " + (err_1.message || err_1.msg || err_1.reason || err_1), err_1); + throw err_1; + case 20: + if (config && config.flowCallback && config.sessionId) { + config.flowCallback(config.sessionId, null); + } + return [7]; + case 21: return [2]; + } + }); + }); + }; + GW3ProtocolImpl.prototype.logout = function () { + return __awaiter(this, void 0, void 0, function () { + var promises; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + this.logger.debug("logging out..."); + this.shouldTryLogin = false; + if (this.pingTimer) { + clearTimeout(this.pingTimer); + } + promises = this.sessions.map(function (session) { + session.leave(); + }); + return [4, Promise.all(promises)]; + case 1: + _a.sent(); + return [2]; + } + }); + }); + }; + GW3ProtocolImpl.prototype.loggedIn = function (callback) { + if (this._isLoggedIn) { + callback(); + } + return this.registry.add("onLoggedIn", callback); + }; + GW3ProtocolImpl.prototype.domain = function (domainName, domainLogger, successMessages, errorMessages) { + var session = this.sessions.filter(function (s) { return s.domain === domainName; })[0]; + if (!session) { + session = domainSession(domainName, this.connection, domainLogger, successMessages, errorMessages); + this.sessions.push(session); + } + return session; + }; + GW3ProtocolImpl.prototype.handleDisconnected = function () { + var _this = this; + this.setLoggedIn(false); + var tryToLogin = this.shouldTryLogin; + if (tryToLogin && this.initialLogin) { + if (this.initialLoginAttempts <= 0) { + return; + } + this.initialLoginAttempts--; + } + this.logger.debug("disconnected - will try new login?" + this.shouldTryLogin); + if (this.shouldTryLogin) { + if (!this.loginConfig) { + throw new Error("no login info"); + } + this.connection.login(this.loginConfig, true) + .catch(function () { + setTimeout(_this.handleDisconnected.bind(_this), _this.settings.reconnectInterval || 1000); + }); + } + }; + GW3ProtocolImpl.prototype.setLoggedIn = function (value) { + this._isLoggedIn = value; + if (this._isLoggedIn) { + this.registry.execute("onLoggedIn"); + } + }; + GW3ProtocolImpl.prototype.ping = function () { + var _this = this; + if (!this.shouldTryLogin) { + return; + } + if (this._isLoggedIn) { + this.connection.send({ type: "ping" }); + } + this.pingTimer = setTimeout(function () { + _this.ping(); + }, 30 * 1000); + }; + GW3ProtocolImpl.prototype.authToken = function () { + var createTokenReq = { + type: "create-token" + }; + if (!this.globalDomain) { + return Promise.reject(new Error("no global domain session")); + } + return this.globalDomain.send(createTokenReq) + .then(function (res) { + return res.token; + }); + }; + GW3ProtocolImpl.prototype.getNewGWToken = function () { + if (typeof window !== "undefined") { + var glue42gd = window.glue42gd; + if (glue42gd) { + return glue42gd.getGWToken(); + } + } + return Promise.reject(new Error("not running in GD")); + }; + return GW3ProtocolImpl; +}()); + +var MessageReplayerImpl = (function () { + function MessageReplayerImpl(specs) { + this.specsNames = []; + this.messages = {}; + this.subs = {}; + this.subsRefCount = {}; + this.specs = {}; + for (var _i = 0, specs_1 = specs; _i < specs_1.length; _i++) { + var spec = specs_1[_i]; + this.specs[spec.name] = spec; + this.specsNames.push(spec.name); + } + } + MessageReplayerImpl.prototype.init = function (connection) { + var _this = this; + this.connection = connection; + for (var _i = 0, _a = this.specsNames; _i < _a.length; _i++) { + var name_1 = _a[_i]; + var _loop_1 = function (type) { + var refCount = this_1.subsRefCount[type]; + if (!refCount) { + refCount = 0; + } + refCount += 1; + this_1.subsRefCount[type] = refCount; + if (refCount > 1) { + return "continue"; + } + var sub = connection.on(type, function (msg) { return _this.processMessage(type, msg); }); + this_1.subs[type] = sub; + }; + var this_1 = this; + for (var _b = 0, _c = this.specs[name_1].types; _b < _c.length; _b++) { + var type = _c[_b]; + _loop_1(type); + } + } + }; + MessageReplayerImpl.prototype.processMessage = function (type, msg) { + if (this.isDone || !msg) { + return; + } + for (var _i = 0, _a = this.specsNames; _i < _a.length; _i++) { + var name_2 = _a[_i]; + if (this.specs[name_2].types.indexOf(type) !== -1) { + var messages = this.messages[name_2] || []; + this.messages[name_2] = messages; + messages.push(msg); + } + } + }; + MessageReplayerImpl.prototype.drain = function (name, callback) { + var _a; + if (callback) { + (this.messages[name] || []).forEach(callback); + } + delete this.messages[name]; + for (var _i = 0, _b = this.specs[name].types; _i < _b.length; _i++) { + var type = _b[_i]; + this.subsRefCount[type] -= 1; + if (this.subsRefCount[type] <= 0) { + (_a = this.connection) === null || _a === void 0 ? void 0 : _a.off(this.subs[type]); + delete this.subs[type]; + delete this.subsRefCount[type]; + } + } + delete this.specs[name]; + if (!this.specs.length) { + this.isDone = true; + } + }; + return MessageReplayerImpl; +}()); + +var PromisePlus = function (executor, timeoutMilliseconds, timeoutMessage) { + return new Promise(function (resolve, reject) { + var timeout = setTimeout(function () { + var message = timeoutMessage || "Promise timeout hit: ".concat(timeoutMilliseconds); + reject(message); + }, timeoutMilliseconds); + var providedPromise = new Promise(executor); + providedPromise + .then(function (result) { + clearTimeout(timeout); + resolve(result); + }) + .catch(function (error) { + clearTimeout(timeout); + reject(error); + }); + }); +}; + +var WebPlatformTransport = (function () { + function WebPlatformTransport(settings, logger, identity) { + this.settings = settings; + this.logger = logger; + this.identity = identity; + this.iAmConnected = false; + this.parentReady = false; + this.rejected = false; + this.children = []; + this.extContentAvailable = false; + this.extContentConnecting = false; + this.extContentConnected = false; + this.parentInExtMode = false; + this.webNamespace = "g42_core_web"; + this.parentPingTimeout = 5000; + this.connectionRequestTimeout = 7000; + this.defaultTargetString = "*"; + this.registry = lib$1(); + this.messages = { + connectionAccepted: { name: "connectionAccepted", handle: this.handleConnectionAccepted.bind(this) }, + connectionRejected: { name: "connectionRejected", handle: this.handleConnectionRejected.bind(this) }, + connectionRequest: { name: "connectionRequest", handle: this.handleConnectionRequest.bind(this) }, + parentReady: { + name: "parentReady", handle: function () { + } + }, + parentPing: { name: "parentPing", handle: this.handleParentPing.bind(this) }, + platformPing: { name: "platformPing", handle: this.handlePlatformPing.bind(this) }, + platformReady: { name: "platformReady", handle: this.handlePlatformReady.bind(this) }, + clientUnload: { name: "clientUnload", handle: this.handleClientUnload.bind(this) }, + manualUnload: { name: "manualUnload", handle: this.handleManualUnload.bind(this) }, + extConnectionResponse: { name: "extConnectionResponse", handle: this.handleExtConnectionResponse.bind(this) }, + extSetupRequest: { name: "extSetupRequest", handle: this.handleExtSetupRequest.bind(this) }, + gatewayDisconnect: { name: "gatewayDisconnect", handle: this.handleGatewayDisconnect.bind(this) }, + gatewayInternalConnect: { name: "gatewayInternalConnect", handle: this.handleGatewayInternalConnect.bind(this) } + }; + this.extContentAvailable = !!window.glue42ext; + this.setUpMessageListener(); + this.setUpUnload(); + this.setupPlatformUnloadListener(); + this.parentType = window.name.includes("#wsp") ? "workspace" : undefined; + } + WebPlatformTransport.prototype.manualSetReadyState = function () { + this.iAmConnected = true; + this.parentReady = true; + }; + Object.defineProperty(WebPlatformTransport.prototype, "transportWindowId", { + get: function () { + return this.publicWindowId; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(WebPlatformTransport.prototype, "communicationId", { + get: function () { + return this._communicationId; + }, + enumerable: false, + configurable: true + }); + WebPlatformTransport.prototype.sendObject = function (msg) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + if (this.extContentConnected) { + return [2, window.postMessage({ glue42ExtOut: msg }, this.defaultTargetString)]; + } + if (!this.port) { + throw new Error("Cannot send message, because the port was not opened yet"); + } + this.port.postMessage(msg); + return [2]; + }); + }); + }; + Object.defineProperty(WebPlatformTransport.prototype, "isObjectBasedTransport", { + get: function () { + return true; + }, + enumerable: false, + configurable: true + }); + WebPlatformTransport.prototype.onMessage = function (callback) { + return this.registry.add("onMessage", callback); + }; + WebPlatformTransport.prototype.send = function () { + return Promise.reject("not supported"); + }; + WebPlatformTransport.prototype.onConnectedChanged = function (callback) { + return this.registry.add("onConnectedChanged", callback); + }; + WebPlatformTransport.prototype.open = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + this.logger.debug("opening a connection to the web platform gateway."); + return [4, this.connect()]; + case 1: + _a.sent(); + this.notifyStatusChanged(true); + return [2]; + } + }); + }); + }; + WebPlatformTransport.prototype.close = function () { + var _a, _b; + var message = { + glue42core: { + type: this.messages.gatewayDisconnect.name, + data: { + clientId: this.myClientId, + ownWindowId: (_a = this.identity) === null || _a === void 0 ? void 0 : _a.windowId + } + } + }; + (_b = this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message); + this.parentReady = false; + this.notifyStatusChanged(false, "manual reconnection"); + return Promise.resolve(); + }; + WebPlatformTransport.prototype.name = function () { + return "web-platform"; + }; + WebPlatformTransport.prototype.reconnect = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4, this.close()]; + case 1: + _a.sent(); + return [2, Promise.resolve()]; + } + }); + }); + }; + WebPlatformTransport.prototype.initiateInternalConnection = function () { + var _this = this; + return new Promise(function (resolve, reject) { + _this.logger.debug("opening an internal web platform connection"); + _this.port = _this.settings.port; + if (_this.iAmConnected) { + _this.logger.warn("cannot open a new connection, because this client is currently connected"); + return; + } + _this.port.onmessage = function (event) { + var _a, _b; + if (_this.iAmConnected && !((_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core)) { + _this.registry.execute("onMessage", event.data); + return; + } + var data = (_b = event.data) === null || _b === void 0 ? void 0 : _b.glue42core; + if (!data) { + return; + } + if (data.type === _this.messages.gatewayInternalConnect.name && data.success) { + _this.publicWindowId = _this.settings.windowId; + if (_this.identity && _this.publicWindowId) { + _this.identity.windowId = _this.publicWindowId; + _this.identity.instance = _this.publicWindowId; + } + resolve(); + } + if (data.type === _this.messages.gatewayInternalConnect.name && data.error) { + reject(data.error); + } + }; + _this.port.postMessage({ + glue42core: { + type: _this.messages.gatewayInternalConnect.name + } + }); + }); + }; + WebPlatformTransport.prototype.initiateRemoteConnection = function (target) { + var _this = this; + return PromisePlus(function (resolve, reject) { + var _a; + _this.connectionResolve = resolve; + _this.connectionReject = reject; + _this.myClientId = (_a = _this.myClientId) !== null && _a !== void 0 ? _a : shortid(); + var bridgeInstanceId = _this.getMyWindowId() || shortid(); + var request = { + glue42core: { + type: _this.messages.connectionRequest.name, + clientId: _this.myClientId, + clientType: "child", + bridgeInstanceId: bridgeInstanceId, + selfAssignedWindowId: _this.selfAssignedWindowId + } + }; + _this.logger.debug("sending connection request"); + if (_this.extContentConnecting) { + request.glue42core.clientType = "child"; + request.glue42core.bridgeInstanceId = _this.myClientId; + request.glue42core.parentWindowId = _this.parentWindowId; + return window.postMessage(request, _this.defaultTargetString); + } + if (!target) { + throw new Error("Cannot send a connection request, because no glue target was specified!"); + } + target.postMessage(request, _this.defaultTargetString); + }, this.connectionRequestTimeout, "The connection to the target glue window timed out"); + }; + WebPlatformTransport.prototype.isParentCheckSuccess = function (parentCheck) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + _a.trys.push([0, 2, , 3]); + return [4, parentCheck]; + case 1: + _a.sent(); + return [2, { success: true }]; + case 2: + _a.sent(); + return [2, { success: false }]; + case 3: return [2]; + } + }); + }); + }; + WebPlatformTransport.prototype.setUpMessageListener = function () { + var _this = this; + if (this.settings.port) { + this.logger.debug("skipping generic message listener, because this is an internal client"); + return; + } + window.addEventListener("message", function (event) { + var _a; + var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core; + if (!data || _this.rejected) { + return; + } + var allowedOrigins = _this.settings.allowedOrigins || []; + if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) { + _this.logger.warn("received a message from an origin which is not in the allowed list: ".concat(event.origin)); + return; + } + if (!_this.checkMessageTypeValid(data.type)) { + _this.logger.error("cannot handle the incoming glue42 core message, because the type is invalid: ".concat(data.type)); + return; + } + var messageType = data.type; + _this.logger.debug("received valid glue42core message of type: ".concat(messageType)); + _this.messages[messageType].handle(event); + }); + }; + WebPlatformTransport.prototype.setUpUnload = function () { + var _this = this; + if (this.settings.port) { + this.logger.debug("skipping unload event listener, because this is an internal client"); + return; + } + window.addEventListener("beforeunload", function () { + var _a, _b; + if (_this.extContentConnected) { + return; + } + var message = { + glue42core: { + type: _this.messages.clientUnload.name, + data: { + clientId: _this.myClientId, + ownWindowId: (_a = _this.identity) === null || _a === void 0 ? void 0 : _a.windowId + } + } + }; + if (_this.parent) { + _this.parent.postMessage(message, _this.defaultTargetString); + } + (_b = _this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message); + }); + }; + WebPlatformTransport.prototype.handlePlatformReady = function (event) { + this.logger.debug("the web platform gave the ready signal"); + this.parentReady = true; + if (this.parentPingResolve) { + this.parentPingResolve(); + delete this.parentPingResolve; + } + if (this.parentPingInterval) { + clearInterval(this.parentPingInterval); + delete this.parentPingInterval; + } + this.parent = event.source; + this.parentType = window.name.includes("#wsp") ? "workspace" : "window"; + }; + WebPlatformTransport.prototype.handleConnectionAccepted = function (event) { + var _a; + var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core; + if (this.myClientId === data.clientId) { + return this.handleAcceptanceOfMyRequest(data); + } + return this.handleAcceptanceOfGrandChildRequest(data, event); + }; + WebPlatformTransport.prototype.handleAcceptanceOfMyRequest = function (data) { + var _this = this; + this.logger.debug("handling a connection accepted signal targeted at me."); + this.isPreferredActivated = data.isPreferredActivated; + if (this.extContentConnecting) { + return this.processExtContentConnection(data); + } + if (!data.port) { + this.logger.error("cannot set up my connection, because I was not provided with a port"); + return; + } + this.publicWindowId = this.getMyWindowId(); + if (this.identity) { + this.identity.windowId = this.publicWindowId; + this.identity.instance = this.identity.instance ? this.identity.instance : this.publicWindowId || shortid(); + } + if (this.identity && data.appName) { + this.identity.application = data.appName; + this.identity.applicationName = data.appName; + } + this._communicationId = data.communicationId; + this.port = data.port; + this.port.onmessage = function (e) { return _this.registry.execute("onMessage", e.data); }; + if (this.connectionResolve) { + this.logger.debug("my connection is set up, calling the connection resolve."); + this.connectionResolve(); + delete this.connectionResolve; + return; + } + this.logger.error("unable to call the connection resolve, because no connection promise was found"); + }; + WebPlatformTransport.prototype.processExtContentConnection = function (data) { + var _this = this; + this.logger.debug("handling a connection accepted signal targeted at me for extension content connection."); + this.extContentConnecting = false; + this.extContentConnected = true; + this.publicWindowId = this.parentWindowId || this.myClientId; + if (this.extContentConnecting && this.identity) { + this.identity.windowId = this.publicWindowId; + } + if (this.identity && data.appName) { + this.identity.application = data.appName; + this.identity.applicationName = data.appName; + } + window.addEventListener("message", function (event) { + var _a; + var extData = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42ExtInc; + if (!extData) { + return; + } + var allowedOrigins = _this.settings.allowedOrigins || []; + if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) { + _this.logger.warn("received a message from an origin which is not in the allowed list: ".concat(event.origin)); + return; + } + _this.registry.execute("onMessage", extData); + }); + if (this.connectionResolve) { + this.logger.debug("my connection is set up, calling the connection resolve."); + this.connectionResolve(); + delete this.connectionResolve; + return; + } + }; + WebPlatformTransport.prototype.handleAcceptanceOfGrandChildRequest = function (data, event) { + if (this.extContentConnecting || this.extContentConnected) { + this.logger.debug("cannot process acceptance of a grandchild, because I am connected to a content script"); + return; + } + this.logger.debug("handling a connection accepted signal targeted at a grandchild: ".concat(data.clientId)); + var child = this.children.find(function (c) { return c.grandChildId === data.clientId; }); + if (!child) { + this.logger.error("cannot handle connection accepted for grandchild: ".concat(data.clientId, ", because there is no grandchild with this id")); + return; + } + child.connected = true; + this.logger.debug("the grandchild connection for ".concat(data.clientId, " is set up, forwarding the success message and the gateway port")); + data.parentWindowId = this.publicWindowId; + child.source.postMessage(event.data, child.origin, [data.port]); + return; + }; + WebPlatformTransport.prototype.handleConnectionRejected = function () { + this.logger.debug("handling a connection rejection. Most likely the reason is that this window was not created by a glue API call"); + if (this.connectionReject) { + this.connectionReject("The platform connection was rejected. Most likely because this window was not created by a glue API call"); + delete this.connectionReject; + } + }; + WebPlatformTransport.prototype.handleConnectionRequest = function (event) { + if (this.extContentConnecting) { + this.logger.debug("This connection request event is targeted at the extension content"); + return; + } + var source = event.source; + var data = event.data.glue42core; + if (!data.clientType || data.clientType !== "grandChild") { + return this.rejectConnectionRequest(source, event.origin, "rejecting a connection request, because the source was not opened by a glue API call"); + } + if (!data.clientId) { + return this.rejectConnectionRequest(source, event.origin, "rejecting a connection request, because the source did not provide a valid id"); + } + if (!this.parent) { + return this.rejectConnectionRequest(source, event.origin, "Cannot forward the connection request, because no direct connection to the platform was found"); + } + this.logger.debug("handling a connection request for a grandchild: ".concat(data.clientId)); + this.children.push({ grandChildId: data.clientId, source: source, connected: false, origin: event.origin }); + this.logger.debug("grandchild: ".concat(data.clientId, " is prepared, forwarding connection request to the platform")); + this.parent.postMessage(event.data, this.defaultTargetString); + }; + WebPlatformTransport.prototype.handleParentPing = function (event) { + if (!this.parentReady) { + this.logger.debug("my parent is not ready, I am ignoring the parent ping"); + return; + } + if (!this.iAmConnected) { + this.logger.debug("i am not fully connected yet, I am ignoring the parent ping"); + return; + } + var message = { + glue42core: { + type: this.messages.parentReady.name + } + }; + if (this.extContentConnected) { + message.glue42core.extMode = { windowId: this.myClientId }; + } + var source = event.source; + this.logger.debug("responding to a parent ping with a ready message"); + source.postMessage(message, event.origin); + }; + WebPlatformTransport.prototype.setupPlatformUnloadListener = function () { + var _this = this; + this.onMessage(function (msg) { + if (msg.type === "platformUnload") { + _this.logger.debug("detected a web platform unload"); + _this.parentReady = false; + _this.notifyStatusChanged(false, "Gateway unloaded"); + } + }); + }; + WebPlatformTransport.prototype.handleManualUnload = function () { + var _a, _b; + var message = { + glue42core: { + type: this.messages.clientUnload.name, + data: { + clientId: this.myClientId, + ownWindowId: (_a = this.identity) === null || _a === void 0 ? void 0 : _a.windowId + } + } + }; + if (this.extContentConnected) { + return window.postMessage({ glue42ExtOut: message }, this.defaultTargetString); + } + (_b = this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message); + }; + WebPlatformTransport.prototype.handleClientUnload = function (event) { + var data = event.data.glue42core; + var clientId = data === null || data === void 0 ? void 0 : data.data.clientId; + if (!clientId) { + this.logger.warn("cannot process grand child unload, because the provided id was not valid"); + return; + } + var foundChild = this.children.find(function (child) { return child.grandChildId === clientId; }); + if (!foundChild) { + this.logger.warn("cannot process grand child unload, because this client is unaware of this grandchild"); + return; + } + this.logger.debug("handling grandchild unload for id: ".concat(clientId)); + this.children = this.children.filter(function (child) { return child.grandChildId !== clientId; }); + }; + WebPlatformTransport.prototype.handlePlatformPing = function () { + return; + }; + WebPlatformTransport.prototype.notifyStatusChanged = function (status, reason) { + this.iAmConnected = status; + this.registry.execute("onConnectedChanged", status, reason); + }; + WebPlatformTransport.prototype.checkMessageTypeValid = function (typeToValidate) { + return typeof typeToValidate === "string" && !!this.messages[typeToValidate]; + }; + WebPlatformTransport.prototype.rejectConnectionRequest = function (source, origin, reason) { + this.rejected = true; + this.logger.error(reason); + var rejection = { + glue42core: { + type: this.messages.connectionRejected.name + } + }; + source.postMessage(rejection, origin); + }; + WebPlatformTransport.prototype.requestConnectionPermissionFromExt = function () { + var _this = this; + return this.waitForContentScript() + .then(function () { return PromisePlus(function (resolve, reject) { + _this.extConnectionResolve = resolve; + _this.extConnectionReject = reject; + var message = { + glue42core: { + type: "extSetupRequest" + } + }; + _this.logger.debug("permission request to the extension content script was sent"); + window.postMessage(message, _this.defaultTargetString); + }, _this.parentPingTimeout, "Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection timed out"); }); + }; + WebPlatformTransport.prototype.handleExtConnectionResponse = function (event) { + var _a; + var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core; + if (!data.approved) { + return this.extConnectionReject ? this.extConnectionReject("Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection was rejected") : undefined; + } + if (this.extConnectionResolve) { + this.extConnectionResolve(); + delete this.extConnectionResolve; + } + this.extContentConnecting = true; + this.parentType = "extension"; + this.logger.debug("The extension connection was approved, proceeding."); + }; + WebPlatformTransport.prototype.handleExtSetupRequest = function () { + return; + }; + WebPlatformTransport.prototype.handleGatewayDisconnect = function () { + return; + }; + WebPlatformTransport.prototype.handleGatewayInternalConnect = function () { + return; + }; + WebPlatformTransport.prototype.waitForContentScript = function () { + var _a; + var contentReady = !!((_a = window.glue42ext) === null || _a === void 0 ? void 0 : _a.content); + if (contentReady) { + return Promise.resolve(); + } + return PromisePlus(function (resolve) { + window.addEventListener("Glue42EXTReady", function () { + resolve(); + }); + }, this.connectionRequestTimeout, "The content script was available, but was never heard to be ready"); + }; + WebPlatformTransport.prototype.connect = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!this.settings.port) return [3, 2]; + return [4, this.initiateInternalConnection()]; + case 1: + _a.sent(); + this.logger.debug("internal web platform connection completed"); + return [2]; + case 2: + this.logger.debug("opening a client web platform connection"); + return [4, this.findParent()]; + case 3: + _a.sent(); + return [4, this.initiateRemoteConnection(this.parent)]; + case 4: + _a.sent(); + this.logger.debug("the client is connected"); + return [2]; + } + }); + }); + }; + WebPlatformTransport.prototype.findParent = function () { + var _a; + return __awaiter(this, void 0, void 0, function () { + var connectionNotPossibleMsg, myInsideParents, myOutsideParents, uniqueParents, defaultParentCheck; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + connectionNotPossibleMsg = "Cannot initiate glue, because this window was not opened or created by a glue client"; + myInsideParents = this.getPossibleParentsInWindow(window); + myOutsideParents = this.getPossibleParentsOutsideWindow((_a = window.top) === null || _a === void 0 ? void 0 : _a.opener, window.top); + uniqueParents = new Set(__spreadArray(__spreadArray([], myInsideParents, true), myOutsideParents, true)); + if (!uniqueParents.size && !this.extContentAvailable) { + throw new Error(connectionNotPossibleMsg); + } + if (!(!uniqueParents.size && this.extContentAvailable)) return [3, 2]; + return [4, this.requestConnectionPermissionFromExt()]; + case 1: + _b.sent(); + return [2]; + case 2: return [4, this.isParentCheckSuccess(this.confirmParent(Array.from(uniqueParents)))]; + case 3: + defaultParentCheck = _b.sent(); + if (defaultParentCheck.success) { + this.logger.debug("The default parent was found!"); + return [2]; + } + if (!this.extContentAvailable) { + throw new Error(connectionNotPossibleMsg); + } + return [4, this.requestConnectionPermissionFromExt()]; + case 4: + _b.sent(); + return [2]; + } + }); + }); + }; + WebPlatformTransport.prototype.getPossibleParentsInWindow = function (currentWindow) { + return (!currentWindow || currentWindow === currentWindow.top) ? [] : __spreadArray([currentWindow.parent], this.getPossibleParentsInWindow(currentWindow.parent), true); + }; + WebPlatformTransport.prototype.getPossibleParentsOutsideWindow = function (opener, current) { + return (!opener || !current || opener === current) ? [] : __spreadArray(__spreadArray([opener], this.getPossibleParentsInWindow(opener), true), this.getPossibleParentsOutsideWindow(opener.opener, opener), true); + }; + WebPlatformTransport.prototype.confirmParent = function (targets) { + var _this = this; + var connectionNotPossibleMsg = "Cannot initiate glue, because this window was not opened or created by a glue client"; + var parentCheck = PromisePlus(function (resolve) { + _this.parentPingResolve = resolve; + var message = { + glue42core: { + type: _this.messages.platformPing.name + } + }; + _this.parentPingInterval = setInterval(function () { + targets.forEach(function (target) { + target.postMessage(message, _this.defaultTargetString); + }); + }, 1000); + }, this.parentPingTimeout, connectionNotPossibleMsg); + parentCheck.catch(function () { + if (_this.parentPingInterval) { + clearInterval(_this.parentPingInterval); + delete _this.parentPingInterval; + } + }); + return parentCheck; + }; + WebPlatformTransport.prototype.getMyWindowId = function () { + var _a; + if (this.parentType === "workspace") { + return window.name.substring(0, window.name.indexOf("#wsp")); + } + if (window !== window.top) { + return; + } + if ((_a = window.name) === null || _a === void 0 ? void 0 : _a.includes("g42")) { + return window.name; + } + this.selfAssignedWindowId = this.selfAssignedWindowId || "g42-".concat(shortid()); + return this.selfAssignedWindowId; + }; + return WebPlatformTransport; +}()); + +var waitForInvocations = function (invocations, callback) { + var left = invocations; + return function () { + left--; + if (left === 0) { + callback(); + } + }; +}; + +var AsyncSequelizer = (function () { + function AsyncSequelizer(minSequenceInterval) { + if (minSequenceInterval === void 0) { minSequenceInterval = 0; } + this.minSequenceInterval = minSequenceInterval; + this.queue = []; + this.isExecutingQueue = false; + } + AsyncSequelizer.prototype.enqueue = function (action) { + var _this = this; + return new Promise(function (resolve, reject) { + _this.queue.push({ action: action, resolve: resolve, reject: reject }); + _this.executeQueue(); + }); + }; + AsyncSequelizer.prototype.executeQueue = function () { + return __awaiter(this, void 0, void 0, function () { + var operation, actionResult, error_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (this.isExecutingQueue) { + return [2]; + } + this.isExecutingQueue = true; + _a.label = 1; + case 1: + if (!this.queue.length) return [3, 7]; + operation = this.queue.shift(); + if (!operation) { + this.isExecutingQueue = false; + return [2]; + } + _a.label = 2; + case 2: + _a.trys.push([2, 4, , 5]); + return [4, operation.action()]; + case 3: + actionResult = _a.sent(); + operation.resolve(actionResult); + return [3, 5]; + case 4: + error_1 = _a.sent(); + operation.reject(error_1); + return [3, 5]; + case 5: return [4, this.intervalBreak()]; + case 6: + _a.sent(); + return [3, 1]; + case 7: + this.isExecutingQueue = false; + return [2]; + } + }); + }); + }; + AsyncSequelizer.prototype.intervalBreak = function () { + var _this = this; + return new Promise(function (res) { return setTimeout(res, _this.minSequenceInterval); }); + }; + return AsyncSequelizer; +}()); + +var Connection = (function () { + function Connection(settings, logger) { + this.settings = settings; + this.logger = logger; + this.messageHandlers = {}; + this.ids = 1; + this.registry = lib$1(); + this._connected = false; + this.isTrace = false; + this._swapTransport = false; + this._switchInProgress = false; + this._transportSubscriptions = []; + this._sequelizer = new AsyncSequelizer(); + settings = settings || {}; + settings.reconnectAttempts = settings.reconnectAttempts || 10; + settings.reconnectInterval = settings.reconnectInterval || 1000; + if (settings.inproc) { + this.transport = new InProcTransport(settings.inproc, logger.subLogger("inMemory")); + } + else if (settings.sharedWorker) { + this.transport = new SharedWorkerTransport(settings.sharedWorker, logger.subLogger("shared-worker")); + } + else if (settings.webPlatform) { + this.transport = new WebPlatformTransport(settings.webPlatform, logger.subLogger("web-platform"), settings.identity); + } + else if (settings.ws !== undefined) { + this.transport = new WS(settings, logger.subLogger("ws")); + } + else { + throw new Error("No connection information specified"); + } + this.isTrace = logger.canPublish("trace"); + logger.debug("starting with ".concat(this.transport.name(), " transport")); + this.protocol = new GW3ProtocolImpl(this, settings, logger.subLogger("protocol")); + var unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this)); + var unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this)); + this._transportSubscriptions.push(unsubConnectionChanged); + this._transportSubscriptions.push(unsubOnMessage); + this._defaultTransport = this.transport; + } + Object.defineProperty(Connection.prototype, "protocolVersion", { + get: function () { + var _a; + return (_a = this.protocol) === null || _a === void 0 ? void 0 : _a.protocolVersion; + }, + enumerable: false, + configurable: true + }); + Connection.prototype.switchTransport = function (settings) { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + return [2, this._sequelizer.enqueue(function () { return __awaiter(_this, void 0, void 0, function () { + var switchTargetTransport, verifyPromise, isSwitchSuccess; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!settings || typeof settings !== "object") { + throw new Error("Cannot switch transports, because the settings are missing or invalid."); + } + if (typeof settings.type === "undefined") { + throw new Error("Cannot switch the transport, because the type is not defined"); + } + this.logger.trace("Starting transport switch with settings: ".concat(JSON.stringify(settings))); + switchTargetTransport = settings.type === "secondary" ? this.getNewSecondaryTransport(settings) : this._defaultTransport; + this._targetTransport = switchTargetTransport; + this._targetAuth = settings.type === "secondary" ? this.getNewSecondaryAuth(settings) : this._defaultAuth; + verifyPromise = this.verifyConnection(); + this._swapTransport = true; + this._switchInProgress = true; + this.logger.trace("The new transport has been set, closing the current transport"); + return [4, this.transport.close()]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + _a.trys.push([2, 4, , 5]); + return [4, verifyPromise]; + case 3: + _a.sent(); + isSwitchSuccess = this.transport === switchTargetTransport; + this.logger.info("The reconnection after the switch was completed. Was the switch a success: ".concat(isSwitchSuccess)); + this._switchInProgress = false; + return [2, { success: isSwitchSuccess }]; + case 4: + _a.sent(); + this.logger.info("The reconnection after the switch timed out, reverting back to the default transport."); + this.switchTransport({ type: "default" }); + this._switchInProgress = false; + return [2, { success: false }]; + case 5: return [2]; + } + }); + }); })]; + }); + }); + }; + Connection.prototype.onLibReAnnounced = function (callback) { + return this.registry.add("libReAnnounced", callback); + }; + Connection.prototype.setLibReAnnounced = function (lib) { + this.registry.execute("libReAnnounced", lib); + }; + Connection.prototype.send = function (message, options) { + if (this.transport.sendObject && + this.transport.isObjectBasedTransport) { + var msg = this.protocol.createObjectMessage(message); + if (this.isTrace) { + this.logger.trace(">> ".concat(JSON.stringify(msg))); + } + return this.transport.sendObject(msg, options); + } + else { + var strMessage = this.protocol.createStringMessage(message); + if (this.isTrace) { + this.logger.trace(">> ".concat(strMessage)); + } + return this.transport.send(strMessage, options); + } + }; + Connection.prototype.on = function (type, messageHandler) { + type = type.toLowerCase(); + if (this.messageHandlers[type] === undefined) { + this.messageHandlers[type] = {}; + } + var id = this.ids++; + this.messageHandlers[type][id] = messageHandler; + return { + type: type, + id: id, + }; + }; + Connection.prototype.off = function (info) { + delete this.messageHandlers[info.type.toLowerCase()][info.id]; + }; + Object.defineProperty(Connection.prototype, "isConnected", { + get: function () { + return this.protocol.isLoggedIn; + }, + enumerable: false, + configurable: true + }); + Connection.prototype.connected = function (callback) { + var _this = this; + return this.protocol.loggedIn(function () { + var currentServer = _this.transport.name(); + callback(currentServer); + }); + }; + Connection.prototype.disconnected = function (callback) { + return this.registry.add("disconnected", callback); + }; + Connection.prototype.login = function (authRequest, reconnect) { + return __awaiter(this, void 0, void 0, function () { + var newAuth, identity, error_2; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!this._defaultAuth) { + this._defaultAuth = authRequest; + } + if (this._swapTransport) { + this.logger.trace("Detected a transport swap, swapping transports"); + newAuth = this.transportSwap(); + authRequest = newAuth !== null && newAuth !== void 0 ? newAuth : authRequest; + } + this.logger.trace("Starting login for transport: ".concat(this.transport.name(), " and auth ").concat(JSON.stringify(authRequest))); + _a.label = 1; + case 1: + _a.trys.push([1, 4, , 5]); + return [4, this.transport.open()]; + case 2: + _a.sent(); + this.logger.trace("Transport: ".concat(this.transport.name(), " opened, logging in")); + timer("connection").mark("transport-opened"); + return [4, this.protocol.login(authRequest, reconnect)]; + case 3: + identity = _a.sent(); + this.logger.trace("Logged in with identity: ".concat(JSON.stringify(identity))); + timer("connection").mark("protocol-logged-in"); + return [2, identity]; + case 4: + error_2 = _a.sent(); + if (this._switchInProgress) { + this.logger.trace("An error while logging in after a transport swap, preparing a default swap."); + this.prepareDefaultSwap(); + } + throw new Error(error_2); + case 5: return [2]; + } + }); + }); + }; + Connection.prototype.logout = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4, this.protocol.logout()]; + case 1: + _a.sent(); + return [4, this.transport.close()]; + case 2: + _a.sent(); + return [2]; + } + }); + }); + }; + Connection.prototype.loggedIn = function (callback) { + return this.protocol.loggedIn(callback); + }; + Connection.prototype.domain = function (domain, successMessages, errorMessages) { + return this.protocol.domain(domain, this.logger.subLogger("domain=".concat(domain)), successMessages, errorMessages); + }; + Connection.prototype.authToken = function () { + return this.protocol.authToken(); + }; + Connection.prototype.reconnect = function () { + return this.transport.reconnect(); + }; + Connection.prototype.distributeMessage = function (message, type) { + var _this = this; + var handlers = this.messageHandlers[type.toLowerCase()]; + if (handlers !== undefined) { + Object.keys(handlers).forEach(function (handlerId) { + var handler = handlers[handlerId]; + if (handler !== undefined) { + try { + handler(message); + } + catch (error) { + try { + _this.logger.error("Message handler failed with ".concat(error.stack), error); + } + catch (loggerError) { + console.log("Message handler failed", error); + } + } + } + }); + } + }; + Connection.prototype.handleConnectionChanged = function (connected) { + if (this._connected === connected) { + return; + } + this._connected = connected; + if (connected) { + if (this.settings.replaySpecs && this.settings.replaySpecs.length) { + this.replayer = new MessageReplayerImpl(this.settings.replaySpecs); + this.replayer.init(this); + } + this.registry.execute("connected"); + } + else { + this.registry.execute("disconnected"); + } + }; + Connection.prototype.handleTransportMessage = function (msg) { + var msgObj; + if (typeof msg === "string") { + msgObj = this.protocol.processStringMessage(msg); + } + else { + msgObj = this.protocol.processObjectMessage(msg); + } + if (this.isTrace) { + this.logger.trace("<< ".concat(JSON.stringify(msgObj))); + } + this.distributeMessage(msgObj.msg, msgObj.msgType); + }; + Connection.prototype.verifyConnection = function () { + var _this = this; + return PromisePlus(function (resolve) { + var unsub; + var ready = waitForInvocations(2, function () { + if (unsub) { + unsub(); + } + resolve(); + }); + unsub = _this.onLibReAnnounced(function (lib) { + if (lib.name === "interop") { + return ready(); + } + if (lib.name === "contexts") { + return ready(); + } + }); + }, 10000, "Transport switch timed out waiting for all libraries to be re-announced"); + }; + Connection.prototype.getNewSecondaryTransport = function (settings) { + var _a; + if (!((_a = settings.transportConfig) === null || _a === void 0 ? void 0 : _a.url)) { + throw new Error("Missing secondary transport URL."); + } + return new WS(Object.assign({}, this.settings, { ws: settings.transportConfig.url, reconnectAttempts: 1 }), this.logger.subLogger("ws-secondary")); + }; + Connection.prototype.getNewSecondaryAuth = function (settings) { + var _a; + if (!((_a = settings.transportConfig) === null || _a === void 0 ? void 0 : _a.auth)) { + throw new Error("Missing secondary transport auth information."); + } + return settings.transportConfig.auth; + }; + Connection.prototype.transportSwap = function () { + this._swapTransport = false; + if (!this._targetTransport || !this._targetAuth) { + this.logger.warn("Error while switching transports - either the target transport or auth is not defined: transport defined -> ".concat(!!this._defaultTransport, ", auth defined -> ").concat(!!this._targetAuth, ". Staying on the current one.")); + return; + } + this._transportSubscriptions.forEach(function (unsub) { return unsub(); }); + this._transportSubscriptions = []; + this.transport = this._targetTransport; + var unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this)); + var unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this)); + this._transportSubscriptions.push(unsubConnectionChanged); + this._transportSubscriptions.push(unsubOnMessage); + return this._targetAuth; + }; + Connection.prototype.prepareDefaultSwap = function () { + var _this = this; + this._transportSubscriptions.forEach(function (unsub) { return unsub(); }); + this._transportSubscriptions = []; + this.transport.close().catch(function (error) { return _this.logger.warn("Error closing the ".concat(_this.transport.name(), " transport after a failed connection attempt: ").concat(JSON.stringify(error))); }); + this._targetTransport = this._defaultTransport; + this._targetAuth = this._defaultAuth; + this._swapTransport = true; + }; + return Connection; +}()); + +var order = ["trace", "debug", "info", "warn", "error", "off"]; +var Logger = (function () { + function Logger(name, parent, logFn) { + this.name = name; + this.parent = parent; + this.subLoggers = []; + this.logFn = console; + this.customLogFn = false; + this.name = name; + if (parent) { + this.path = "".concat(parent.path, ".").concat(name); + } + else { + this.path = name; + } + this.loggerFullName = "[".concat(this.path, "]"); + this.includeTimeAndLevel = !logFn; + if (logFn) { + this.logFn = logFn; + this.customLogFn = true; + } + } + Logger.prototype.subLogger = function (name) { + var existingSub = this.subLoggers.filter(function (subLogger) { + return subLogger.name === name; + })[0]; + if (existingSub !== undefined) { + return existingSub; + } + Object.keys(this).forEach(function (key) { + if (key === name) { + throw new Error("This sub logger name is not allowed."); + } + }); + var sub = new Logger(name, this, this.customLogFn ? this.logFn : undefined); + this.subLoggers.push(sub); + return sub; + }; + Logger.prototype.publishLevel = function (level) { + var _a; + if (level) { + this._publishLevel = level; + } + return this._publishLevel || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.publishLevel()); + }; + Logger.prototype.consoleLevel = function (level) { + var _a; + if (level) { + this._consoleLevel = level; + } + return this._consoleLevel || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.consoleLevel()); + }; + Logger.prototype.log = function (message, level, error) { + this.publishMessage(level || "info", message, error); + }; + Logger.prototype.trace = function (message) { + this.log(message, "trace"); + }; + Logger.prototype.debug = function (message) { + this.log(message, "debug"); + }; + Logger.prototype.info = function (message) { + this.log(message, "info"); + }; + Logger.prototype.warn = function (message) { + this.log(message, "warn"); + }; + Logger.prototype.error = function (message, err) { + this.log(message, "error"); + }; + Logger.prototype.canPublish = function (level, compareWith) { + var levelIdx = order.indexOf(level); + var restrictionIdx = order.indexOf(compareWith || this.consoleLevel() || "trace"); + return levelIdx >= restrictionIdx; + }; + Logger.prototype.publishMessage = function (level, message, error) { + var loggerName = this.loggerFullName; + if (level === "error" && !error) { + var e = new Error(); + if (e.stack) { + message = + message + + "\n" + + e.stack + .split("\n") + .slice(3) + .join("\n"); + } + } + if (this.canPublish(level, this.publishLevel())) { + var interop = Logger.Interop; + if (interop) { + try { + if (interop.methods({ name: Logger.InteropMethodName }).length > 0) { + interop.invoke(Logger.InteropMethodName, { + msg: "".concat(message), + logger: loggerName, + level: level + }); + } + } + catch (_a) { + } + } + } + if (this.canPublish(level)) { + var prefix = ""; + if (this.includeTimeAndLevel) { + var date = new Date(); + var time = "".concat(date.getHours(), ":").concat(date.getMinutes(), ":").concat(date.getSeconds(), ":").concat(date.getMilliseconds()); + prefix = "[".concat(time, "] [").concat(level, "] "); + } + var toPrint = "".concat(prefix).concat(loggerName, ": ").concat(message); + switch (level) { + case "trace": + this.logFn.debug(toPrint); + break; + case "debug": + if (this.logFn.debug) { + this.logFn.debug(toPrint); + } + else { + this.logFn.log(toPrint); + } + break; + case "info": + this.logFn.info(toPrint); + break; + case "warn": + this.logFn.warn(toPrint); + break; + case "error": + this.logFn.error(toPrint, error); + break; + } + } + }; + Logger.InteropMethodName = "T42.AppLogger.Log"; + return Logger; +}()); + +var GW_MESSAGE_CREATE_CONTEXT = "create-context"; +var GW_MESSAGE_ACTIVITY_CREATED = "created"; +var GW_MESSAGE_ACTIVITY_DESTROYED = "destroyed"; +var GW_MESSAGE_CONTEXT_CREATED = "context-created"; +var GW_MESSAGE_CONTEXT_ADDED = "context-added"; +var GW_MESSAGE_SUBSCRIBE_CONTEXT = "subscribe-context"; +var GW_MESSAGE_SUBSCRIBED_CONTEXT = "subscribed-context"; +var GW_MESSAGE_UNSUBSCRIBE_CONTEXT = "unsubscribe-context"; +var GW_MESSAGE_DESTROY_CONTEXT = "destroy-context"; +var GW_MESSAGE_CONTEXT_DESTROYED = "context-destroyed"; +var GW_MESSAGE_UPDATE_CONTEXT = "update-context"; +var GW_MESSAGE_CONTEXT_UPDATED = "context-updated"; +var GW_MESSAGE_JOINED_ACTIVITY = "joined"; + +var ContextMessageReplaySpec = { + get name() { + return "context"; + }, + get types() { + return [ + GW_MESSAGE_CREATE_CONTEXT, + GW_MESSAGE_ACTIVITY_CREATED, + GW_MESSAGE_ACTIVITY_DESTROYED, + GW_MESSAGE_CONTEXT_CREATED, + GW_MESSAGE_CONTEXT_ADDED, + GW_MESSAGE_SUBSCRIBE_CONTEXT, + GW_MESSAGE_SUBSCRIBED_CONTEXT, + GW_MESSAGE_UNSUBSCRIBE_CONTEXT, + GW_MESSAGE_DESTROY_CONTEXT, + GW_MESSAGE_CONTEXT_DESTROYED, + GW_MESSAGE_UPDATE_CONTEXT, + GW_MESSAGE_CONTEXT_UPDATED, + GW_MESSAGE_JOINED_ACTIVITY + ]; + } +}; + +var version = "6.2.0"; + +function prepareConfig (configuration, ext, glue42gd) { + var _a, _b, _c, _d; + var nodeStartingContext; + if (Utils.isNode()) { + var startingContextString = process.env._GD_STARTING_CONTEXT_; + if (startingContextString) { + try { + nodeStartingContext = JSON.parse(startingContextString); + } + catch (_e) { + } + } + } + function getConnection() { + var _a, _b, _c, _d, _e, _f; + var gwConfig = configuration.gateway; + var protocolVersion = (_a = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.protocolVersion) !== null && _a !== void 0 ? _a : 3; + var reconnectInterval = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.reconnectInterval; + var reconnectAttempts = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.reconnectAttempts; + var defaultWs = "ws://localhost:8385"; + var ws = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.ws; + var sharedWorker = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.sharedWorker; + var inproc = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.inproc; + var webPlatform = (_b = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.webPlatform) !== null && _b !== void 0 ? _b : undefined; + if (glue42gd) { + ws = glue42gd.gwURL; + } + if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwURL) { + ws = nodeStartingContext.gwURL; + } + if (!ws && !sharedWorker && !inproc) { + ws = defaultWs; + } + var instanceId; + var windowId; + var pid; + var environment; + var region; + var appName = getApplication(); + var uniqueAppName = appName; + if (typeof glue42gd !== "undefined") { + windowId = glue42gd.windowId; + pid = glue42gd.pid; + if (glue42gd.env) { + environment = glue42gd.env.env; + region = glue42gd.env.region; + } + uniqueAppName = (_c = glue42gd.application) !== null && _c !== void 0 ? _c : "glue-app"; + instanceId = glue42gd.appInstanceId; + } + else if (Utils.isNode()) { + pid = process.pid; + if (nodeStartingContext) { + environment = nodeStartingContext.env; + region = nodeStartingContext.region; + instanceId = nodeStartingContext.instanceId; + } + } + else if (typeof (window === null || window === void 0 ? void 0 : window.glue42electron) !== "undefined") { + windowId = window === null || window === void 0 ? void 0 : window.glue42electron.instanceId; + pid = window === null || window === void 0 ? void 0 : window.glue42electron.pid; + environment = window === null || window === void 0 ? void 0 : window.glue42electron.env; + region = window === null || window === void 0 ? void 0 : window.glue42electron.region; + uniqueAppName = (_d = window === null || window === void 0 ? void 0 : window.glue42electron.application) !== null && _d !== void 0 ? _d : "glue-app"; + instanceId = window === null || window === void 0 ? void 0 : window.glue42electron.instanceId; + } + else ; + var replaySpecs = (_f = (_e = configuration.gateway) === null || _e === void 0 ? void 0 : _e.replaySpecs) !== null && _f !== void 0 ? _f : []; + replaySpecs.push(ContextMessageReplaySpec); + var identity = { + application: uniqueAppName, + applicationName: appName, + windowId: windowId, + instance: instanceId, + process: pid, + region: region, + environment: environment, + api: ext.version || version + }; + if (configuration.identity) { + identity = Object.assign(identity, configuration.identity); + } + return { + identity: identity, + reconnectInterval: reconnectInterval, + ws: ws, + sharedWorker: sharedWorker, + webPlatform: webPlatform, + inproc: inproc, + protocolVersion: protocolVersion, + reconnectAttempts: reconnectAttempts, + replaySpecs: replaySpecs, + }; + } + function getContexts() { + if (typeof configuration.contexts === "undefined") { + return { reAnnounceKnownContexts: true }; + } + if (typeof configuration.contexts === "boolean" && configuration.contexts) { + return { reAnnounceKnownContexts: true }; + } + if (typeof configuration.contexts === "object") { + return Object.assign({}, { reAnnounceKnownContexts: true }, configuration.contexts); + } + return false; + } + function getApplication() { + if (configuration.application) { + return configuration.application; + } + if (glue42gd) { + return glue42gd.applicationName; + } + if (typeof window !== "undefined" && typeof window.glue42electron !== "undefined") { + return window.glue42electron.application; + } + var uid = shortid(); + if (Utils.isNode()) { + if (nodeStartingContext) { + return nodeStartingContext.applicationConfig.name; + } + return "NodeJS" + uid; + } + if (typeof window !== "undefined" && typeof document !== "undefined") { + return document.title + " (".concat(uid, ")"); + } + return uid; + } + function getAuth() { + var _a, _b, _c; + if (typeof configuration.auth === "string") { + return { + token: configuration.auth + }; + } + if (configuration.auth) { + return configuration.auth; + } + if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwToken) { + return { + gatewayToken: nodeStartingContext.gwToken + }; + } + if (((_a = configuration.gateway) === null || _a === void 0 ? void 0 : _a.webPlatform) || ((_b = configuration.gateway) === null || _b === void 0 ? void 0 : _b.inproc) || ((_c = configuration.gateway) === null || _c === void 0 ? void 0 : _c.sharedWorker)) { + return { + username: "glue42", password: "glue42" + }; + } + } + function getLogger() { + var _a, _b; + var config = configuration.logger; + var defaultLevel = "warn"; + if (!config) { + config = defaultLevel; + } + var gdConsoleLevel; + if (glue42gd) { + gdConsoleLevel = glue42gd.consoleLogLevel; + } + if (typeof config === "string") { + return { console: gdConsoleLevel !== null && gdConsoleLevel !== void 0 ? gdConsoleLevel : config, publish: defaultLevel }; + } + return { + console: (_a = gdConsoleLevel !== null && gdConsoleLevel !== void 0 ? gdConsoleLevel : config.console) !== null && _a !== void 0 ? _a : defaultLevel, + publish: (_b = config.publish) !== null && _b !== void 0 ? _b : defaultLevel + }; + } + var connection = getConnection(); + var application = getApplication(); + if (typeof window !== "undefined") { + var windowAsAny = window; + var containerApplication = windowAsAny.htmlContainer ? + "".concat(windowAsAny.htmlContainer.containerName, ".").concat(windowAsAny.htmlContainer.application) : + (_a = windowAsAny === null || windowAsAny === void 0 ? void 0 : windowAsAny.glue42gd) === null || _a === void 0 ? void 0 : _a.application; + if (containerApplication) { + application = containerApplication; + } + } + return { + bus: (_b = configuration.bus) !== null && _b !== void 0 ? _b : false, + application: application, + auth: getAuth(), + logger: getLogger(), + connection: connection, + metrics: (_c = configuration.metrics) !== null && _c !== void 0 ? _c : true, + contexts: getContexts(), + version: ext.version || version, + libs: (_d = ext.libs) !== null && _d !== void 0 ? _d : [], + customLogger: configuration.customLogger + }; +} + +var GW3ContextData = (function () { + function GW3ContextData(contextId, name, isAnnounced, activityId) { + this.updateCallbacks = {}; + this.contextId = contextId; + this.name = name; + this.isAnnounced = isAnnounced; + this.activityId = activityId; + this.context = {}; + } + GW3ContextData.prototype.hasCallbacks = function () { + return Object.keys(this.updateCallbacks).length > 0; + }; + GW3ContextData.prototype.getState = function () { + if (this.isAnnounced && this.hasCallbacks()) { + return 3; + } + if (this.isAnnounced) { + return 2; + } + if (this.hasCallbacks()) { + return 1; + } + return 0; + }; + return GW3ContextData; +}()); + +var lodash_clonedeepExports = {}; +var lodash_clonedeep = { + get exports(){ return lodash_clonedeepExports; }, + set exports(v){ lodash_clonedeepExports = v; }, +}; + +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +(function (module, exports) { + /** Used as the size to enable large array optimizations. */ + var LARGE_ARRAY_SIZE = 200; + + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + + /** Used as references for various `Number` constants. */ + var MAX_SAFE_INTEGER = 9007199254740991; + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + /** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + + /** Used to match `RegExp` flags from their coerced string values. */ + var reFlags = /\w*$/; + + /** Used to detect host constructors (Safari). */ + var reIsHostCtor = /^\[object .+?Constructor\]$/; + + /** Used to detect unsigned integer values. */ + var reIsUint = /^(?:0|[1-9]\d*)$/; + + /** Used to identify `toStringTag` values supported by `_.clone`. */ + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = + cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = + cloneableTags[boolTag] = cloneableTags[dateTag] = + cloneableTags[float32Tag] = cloneableTags[float64Tag] = + cloneableTags[int8Tag] = cloneableTags[int16Tag] = + cloneableTags[int32Tag] = cloneableTags[mapTag] = + cloneableTags[numberTag] = cloneableTags[objectTag] = + cloneableTags[regexpTag] = cloneableTags[setTag] = + cloneableTags[stringTag] = cloneableTags[symbolTag] = + cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = + cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = + cloneableTags[weakMapTag] = false; + + /** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; + + /** Detect free variable `self`. */ + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); + + /** Detect free variable `exports`. */ + var freeExports = exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports; + + /** + * Adds the key-value `pair` to `map`. + * + * @private + * @param {Object} map The map to modify. + * @param {Array} pair The key-value pair to add. + * @returns {Object} Returns `map`. + */ + function addMapEntry(map, pair) { + // Don't return `map.set` because it's not chainable in IE 11. + map.set(pair[0], pair[1]); + return map; + } + + /** + * Adds `value` to `set`. + * + * @private + * @param {Object} set The set to modify. + * @param {*} value The value to add. + * @returns {Object} Returns `set`. + */ + function addSetEntry(set, value) { + // Don't return `set.add` because it's not chainable in IE 11. + set.add(value); + return set; + } + + /** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEach(array, iteratee) { + var index = -1, + length = array ? array.length : 0; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } + + /** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; + } + + /** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array ? array.length : 0; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } + + /** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; + } + + /** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function getValue(object, key) { + return object == null ? undefined : object[key]; + } + + /** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ + function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + return result; + } + + /** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ + function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } + + /** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + + /** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ + function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; + } + + /** Used for built-in method references. */ + var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + + /** Used to detect overreaching core-js shims. */ + var coreJsData = root['__core-js_shared__']; + + /** Used to detect methods masquerading as native. */ + var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; + }()); + + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var objectToString = objectProto.toString; + + /** Used to detect if a method is native. */ + var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); + + /** Built-in value references. */ + var Buffer = moduleExports ? root.Buffer : undefined, + Symbol = root.Symbol, + Uint8Array = root.Uint8Array, + getPrototype = overArg(Object.getPrototypeOf, Object), + objectCreate = Object.create, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice; + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeGetSymbols = Object.getOwnPropertySymbols, + nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeKeys = overArg(Object.keys, Object); + + /* Built-in method references that are verified to be native. */ + var DataView = getNative(root, 'DataView'), + Map = getNative(root, 'Map'), + Promise = getNative(root, 'Promise'), + Set = getNative(root, 'Set'), + WeakMap = getNative(root, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); + + /** Used to detect maps, sets, and weakmaps. */ + var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + + /** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + } + + /** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; + } + + /** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; + } + + /** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); + } + + /** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ + function hashSet(key, value) { + var data = this.__data__; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; + } + + // Add methods to `Hash`. + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + + /** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ + function listCacheClear() { + this.__data__ = []; + } + + /** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; + } + + /** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; + } + + /** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + + /** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } + + // Add methods to `ListCache`. + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + + /** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ + function mapCacheClear() { + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; + } + + /** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); + } + + /** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + + /** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + + /** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ + function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; + } + + // Add methods to `MapCache`. + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + + /** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Stack(entries) { + this.__data__ = new ListCache(entries); + } + + /** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ + function stackClear() { + this.__data__ = new ListCache; + } + + /** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function stackDelete(key) { + return this.__data__['delete'](key); + } + + /** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function stackGet(key) { + return this.__data__.get(key); + } + + /** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function stackHas(key) { + return this.__data__.has(key); + } + + /** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ + function stackSet(key, value) { + var cache = this.__data__; + if (cache instanceof ListCache) { + var pairs = cache.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + return this; + } + cache = this.__data__ = new MapCache(pairs); + } + cache.set(key, value); + return this; + } + + // Add methods to `Stack`. + Stack.prototype.clear = stackClear; + Stack.prototype['delete'] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; + + /** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ + function arrayLikeKeys(value, inherited) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + // Safari 9 makes `arguments.length` enumerable in strict mode. + var result = (isArray(value) || isArguments(value)) + ? baseTimes(value.length, String) + : []; + + var length = result.length, + skipIndexes = !!length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + result.push(key); + } + } + return result; + } + + /** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + object[key] = value; + } + } + + /** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } + + /** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); + } + + /** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @param {boolean} [isFull] Specify a clone including symbols. + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ + function baseClone(value, isDeep, isFull, customizer, key, object, stack) { + var result; + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + if (isHostObject(value)) { + return object ? value : {}; + } + result = initCloneObject(isFunc ? {} : value); + if (!isDeep) { + return copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, baseClone, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (!isArr) { + var props = isFull ? getAllKeys(value) : keys(value); + } + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack)); + }); + return result; + } + + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} prototype The object to inherit from. + * @returns {Object} Returns the new object. + */ + function baseCreate(proto) { + return isObject(proto) ? objectCreate(proto) : {}; + } + + /** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + } + + /** + * The base implementation of `getTag`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + function baseGetTag(value) { + return objectToString.call(value); + } + + /** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + /** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; + } + + /** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var result = new buffer.constructor(buffer.length); + buffer.copy(result); + return result; + } + + /** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ + function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; + } + + /** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ + function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); + } + + /** + * Creates a clone of `map`. + * + * @private + * @param {Object} map The map to clone. + * @param {Function} cloneFunc The function to clone values. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned map. + */ + function cloneMap(map, isDeep, cloneFunc) { + var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map); + return arrayReduce(array, addMapEntry, new map.constructor); + } + + /** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ + function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; + } + + /** + * Creates a clone of `set`. + * + * @private + * @param {Object} set The set to clone. + * @param {Function} cloneFunc The function to clone values. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned set. + */ + function cloneSet(set, isDeep, cloneFunc) { + var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set); + return arrayReduce(array, addSetEntry, new set.constructor); + } + + /** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ + function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; + } + + /** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } + + /** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ + function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + + /** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ + function copyObject(source, props, object, customizer) { + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + assignValue(object, key, newValue === undefined ? source[key] : newValue); + } + return object; + } + + /** + * Copies own symbol properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); + } + + /** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); + } + + /** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; + } + + /** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + /** + * Creates an array of the own enumerable symbol properties of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray; + + /** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + var getTag = baseGetTag; + + // Fallback for data views, maps, sets, and weak maps in IE 11, + // for data views in Edge < 14, and promises in Node.js. + if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = objectToString.call(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : undefined; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; + } + + /** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ + function initCloneArray(array) { + var length = array.length, + result = array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; + } + + /** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; + } + + /** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {Function} cloneFunc The function to clone values. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneByTag(object, tag, cloneFunc, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return cloneMap(object, isDeep, cloneFunc); + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return cloneSet(object, isDeep, cloneFunc); + + case symbolTag: + return cloneSymbol(object); + } + } + + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); + } + + /** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ + function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); + } + + /** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ + function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); + } + + /** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; + } + + /** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to process. + * @returns {string} Returns the source code. + */ + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; + } + + /** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ + function cloneDeep(value) { + return baseClone(value, true, true); + } + + /** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ + function eq(value, other) { + return value === other || (value !== value && other !== other); + } + + /** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ + function isArguments(value) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && + (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); + } + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + var isArray = Array.isArray; + + /** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + /** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + + /** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ + var isBuffer = nativeIsBuffer || stubFalse; + + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; + } + + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ + function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ + function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); + } + + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return !!value && typeof value == 'object'; + } + + /** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + + /** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ + function stubArray() { + return []; + } + + /** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ + function stubFalse() { + return false; + } + + module.exports = cloneDeep; +} (lodash_clonedeep, lodash_clonedeepExports)); + +var cloneDeep = lodash_clonedeepExports; + +function applyContextDelta(context, delta, logger) { + try { + if (logger === null || logger === void 0 ? void 0 : logger.canPublish("trace")) { + logger === null || logger === void 0 ? void 0 : logger.trace("applying context delta ".concat(JSON.stringify(delta), " on context ").concat(JSON.stringify(context))); + } + if (!delta) { + return context; + } + if (delta.reset) { + context = __assign({}, delta.reset); + return context; + } + context = deepClone(context, undefined); + if (delta.commands) { + for (var _i = 0, _a = delta.commands; _i < _a.length; _i++) { + var command = _a[_i]; + if (command.type === "remove") { + deletePath(context, command.path); + } + else if (command.type === "set") { + setValueToPath(context, command.value, command.path); + } + } + return context; + } + var added_1 = delta.added; + var updated_1 = delta.updated; + var removed = delta.removed; + if (added_1) { + Object.keys(added_1).forEach(function (key) { + context[key] = added_1[key]; + }); + } + if (updated_1) { + Object.keys(updated_1).forEach(function (key) { + mergeObjectsProperties(key, context, updated_1); + }); + } + if (removed) { + removed.forEach(function (key) { + delete context[key]; + }); + } + return context; + } + catch (e) { + logger === null || logger === void 0 ? void 0 : logger.error("error applying context delta ".concat(JSON.stringify(delta), " on context ").concat(JSON.stringify(context)), e); + return context; + } +} +function deepClone(obj, hash) { + return cloneDeep(obj); +} +var mergeObjectsProperties = function (key, what, withWhat) { + var right = withWhat[key]; + if (right === undefined) { + return what; + } + var left = what[key]; + if (!left || !right) { + what[key] = right; + return what; + } + if (typeof left === "string" || + typeof left === "number" || + typeof left === "boolean" || + typeof right === "string" || + typeof right === "number" || + typeof right === "boolean" || + Array.isArray(left) || + Array.isArray(right)) { + what[key] = right; + return what; + } + what[key] = Object.assign({}, left, right); + return what; +}; +function deepEqual(x, y) { + if (x === y) { + return true; + } + if (!(x instanceof Object) || !(y instanceof Object)) { + return false; + } + if (x.constructor !== y.constructor) { + return false; + } + for (var p in x) { + if (!x.hasOwnProperty(p)) { + continue; + } + if (!y.hasOwnProperty(p)) { + return false; + } + if (x[p] === y[p]) { + continue; + } + if (typeof (x[p]) !== "object") { + return false; + } + if (!deepEqual(x[p], y[p])) { + return false; + } + } + for (var p in y) { + if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) { + return false; + } + } + return true; +} +function setValueToPath(obj, value, path) { + var pathArr = path.split("."); + var i; + for (i = 0; i < pathArr.length - 1; i++) { + if (!obj[pathArr[i]]) { + obj[pathArr[i]] = {}; + } + if (typeof obj[pathArr[i]] !== "object") { + obj[pathArr[i]] = {}; + } + obj = obj[pathArr[i]]; + } + obj[pathArr[i]] = value; +} +function isSubset(superObj, subObj) { + return Object.keys(subObj).every(function (ele) { + if (typeof subObj[ele] === "object") { + return isSubset((superObj === null || superObj === void 0 ? void 0 : superObj[ele]) || {}, subObj[ele] || {}); + } + return subObj[ele] === (superObj === null || superObj === void 0 ? void 0 : superObj[ele]); + }); +} +function deletePath(obj, path) { + var pathArr = path.split("."); + var i; + for (i = 0; i < pathArr.length - 1; i++) { + if (!obj[pathArr[i]]) { + return; + } + obj = obj[pathArr[i]]; + } + delete obj[pathArr[i]]; +} + +var GW3Bridge = (function () { + function GW3Bridge(config) { + var _this = this; + var _a; + this._contextNameToData = {}; + this._gw3Subscriptions = []; + this._nextCallbackSubscriptionNumber = 0; + this._creationPromises = {}; + this._contextNameToId = {}; + this._contextIdToName = {}; + this._protocolVersion = undefined; + this._contextsTempCache = {}; + this._contextsSubscriptionsCache = []; + this._connection = config.connection; + this._logger = config.logger; + this._trackAllContexts = config.trackAllContexts; + this._reAnnounceKnownContexts = config.reAnnounceKnownContexts; + this._gw3Session = this._connection.domain("global", [ + GW_MESSAGE_CONTEXT_CREATED, + GW_MESSAGE_SUBSCRIBED_CONTEXT, + GW_MESSAGE_CONTEXT_DESTROYED, + GW_MESSAGE_CONTEXT_UPDATED, + ]); + this._gw3Session.disconnected(this.resetState.bind(this)); + this._gw3Session.onJoined(function (wasReconnect) { + if (!wasReconnect) { + return; + } + if (!_this._reAnnounceKnownContexts) { + return _this._connection.setLibReAnnounced({ name: "contexts" }); + } + _this.reInitiateState().then(function () { return _this._connection.setLibReAnnounced({ name: "contexts" }); }); + }); + this.subscribeToContextCreatedMessages(); + this.subscribeToContextUpdatedMessages(); + this.subscribeToContextDestroyedMessages(); + (_a = this._connection.replayer) === null || _a === void 0 ? void 0 : _a.drain(ContextMessageReplaySpec.name, function (message) { + var type = message.type; + if (!type) { + return; + } + if (type === GW_MESSAGE_CONTEXT_CREATED || + type === GW_MESSAGE_CONTEXT_ADDED || + type === GW_MESSAGE_ACTIVITY_CREATED) { + _this.handleContextCreatedMessage(message); + } + else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT || + type === GW_MESSAGE_CONTEXT_UPDATED || + type === GW_MESSAGE_JOINED_ACTIVITY) { + _this.handleContextUpdatedMessage(message); + } + else if (type === GW_MESSAGE_CONTEXT_DESTROYED || + type === GW_MESSAGE_ACTIVITY_DESTROYED) { + _this.handleContextDestroyedMessage(message); + } + }); + } + Object.defineProperty(GW3Bridge.prototype, "protocolVersion", { + get: function () { + var _a; + if (!this._protocolVersion) { + var contextsDomainInfo = this._connection.availableDomains.find(function (d) { return d.uri === "context"; }); + this._protocolVersion = (_a = contextsDomainInfo === null || contextsDomainInfo === void 0 ? void 0 : contextsDomainInfo.version) !== null && _a !== void 0 ? _a : 1; + } + return this._protocolVersion; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(GW3Bridge.prototype, "setPathSupported", { + get: function () { + return this.protocolVersion >= 2; + }, + enumerable: false, + configurable: true + }); + GW3Bridge.prototype.dispose = function () { + for (var _i = 0, _a = this._gw3Subscriptions; _i < _a.length; _i++) { + var sub = _a[_i]; + this._connection.off(sub); + } + this._gw3Subscriptions.length = 0; + for (var contextName in this._contextNameToData) { + if (this._contextNameToId.hasOwnProperty(contextName)) { + delete this._contextNameToData[contextName]; + } + } + }; + GW3Bridge.prototype.createContext = function (name, data) { + var _this = this; + if (name in this._creationPromises) { + return this._creationPromises[name]; + } + this._creationPromises[name] = + this._gw3Session + .send({ + type: GW_MESSAGE_CREATE_CONTEXT, + domain: "global", + name: name, + data: data, + lifetime: "retained", + }) + .then(function (createContextMsg) { + _this._contextNameToId[name] = createContextMsg.context_id; + _this._contextIdToName[createContextMsg.context_id] = name; + var contextData = _this._contextNameToData[name] || new GW3ContextData(createContextMsg.context_id, name, true, undefined); + contextData.isAnnounced = true; + contextData.name = name; + contextData.contextId = createContextMsg.context_id; + contextData.context = createContextMsg.data || deepClone(data); + contextData.hasReceivedSnapshot = true; + _this._contextNameToData[name] = contextData; + delete _this._creationPromises[name]; + return createContextMsg.context_id; + }); + return this._creationPromises[name]; + }; + GW3Bridge.prototype.all = function () { + var _this = this; + return Object.keys(this._contextNameToData) + .filter(function (name) { return _this._contextNameToData[name].isAnnounced; }); + }; + GW3Bridge.prototype.update = function (name, delta) { + var _a; + return __awaiter(this, void 0, void 0, function () { + var contextData, currentContext, calculatedDelta; + var _this = this; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + if (delta) { + delta = deepClone(delta); + } + if (!(name in this._creationPromises)) return [3, 2]; + return [4, this._creationPromises[name]]; + case 1: + _b.sent(); + _b.label = 2; + case 2: + contextData = this._contextNameToData[name]; + if (!contextData || !contextData.isAnnounced) { + return [2, this.createContext(name, delta)]; + } + currentContext = contextData.context; + if (!!contextData.hasCallbacks()) return [3, 4]; + return [4, this.get(contextData.name)]; + case 3: + currentContext = _b.sent(); + _b.label = 4; + case 4: + calculatedDelta = this.setPathSupported ? + this.calculateContextDeltaV2(currentContext, delta) : + this.calculateContextDeltaV1(currentContext, delta); + if (!Object.keys(calculatedDelta.added).length + && !Object.keys(calculatedDelta.updated).length + && !calculatedDelta.removed.length + && !((_a = calculatedDelta.commands) === null || _a === void 0 ? void 0 : _a.length)) { + return [2, Promise.resolve()]; + } + return [2, this._gw3Session + .send({ + type: GW_MESSAGE_UPDATE_CONTEXT, + domain: "global", + context_id: contextData.contextId, + delta: calculatedDelta, + }, {}, { skipPeerId: false }) + .then(function (gwResponse) { + _this.handleUpdated(contextData, calculatedDelta, { + updaterId: gwResponse.peer_id + }); + })]; + } + }); + }); + }; + GW3Bridge.prototype.set = function (name, data) { + return __awaiter(this, void 0, void 0, function () { + var contextData; + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (data) { + data = deepClone(data); + } + if (!(name in this._creationPromises)) return [3, 2]; + return [4, this._creationPromises[name]]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + contextData = this._contextNameToData[name]; + if (!contextData || !contextData.isAnnounced) { + return [2, this.createContext(name, data)]; + } + return [2, this._gw3Session + .send({ + type: GW_MESSAGE_UPDATE_CONTEXT, + domain: "global", + context_id: contextData.contextId, + delta: { reset: data }, + }, {}, { skipPeerId: false }) + .then(function (gwResponse) { + _this.handleUpdated(contextData, { + reset: data, + added: {}, + removed: [], + updated: {} + }, { + updaterId: gwResponse.peer_id + }); + })]; + } + }); + }); + }; + GW3Bridge.prototype.setPath = function (name, path, value) { + if (!this.setPathSupported) { + return Promise.reject("glue.contexts.setPath operation is not supported, use Glue42 3.10 or later"); + } + return this.setPaths(name, [{ path: path, value: value }]); + }; + GW3Bridge.prototype.setPaths = function (name, pathValues) { + return __awaiter(this, void 0, void 0, function () { + var contextData, obj, _i, pathValues_1, pathValue, commands, _a, pathValues_2, pathValue; + var _this = this; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + if (!this.setPathSupported) { + return [2, Promise.reject("glue.contexts.setPaths operation is not supported, use Glue42 3.10 or later")]; + } + if (pathValues) { + pathValues = deepClone(pathValues); + } + if (!(name in this._creationPromises)) return [3, 2]; + return [4, this._creationPromises[name]]; + case 1: + _b.sent(); + _b.label = 2; + case 2: + contextData = this._contextNameToData[name]; + if (!contextData || !contextData.isAnnounced) { + obj = {}; + for (_i = 0, pathValues_1 = pathValues; _i < pathValues_1.length; _i++) { + pathValue = pathValues_1[_i]; + setValueToPath(obj, pathValue.value, pathValue.path); + } + return [2, this.createContext(name, obj)]; + } + commands = []; + for (_a = 0, pathValues_2 = pathValues; _a < pathValues_2.length; _a++) { + pathValue = pathValues_2[_a]; + if (pathValue.value === null) { + commands.push({ type: "remove", path: pathValue.path }); + } + else { + commands.push({ type: "set", path: pathValue.path, value: pathValue.value }); + } + } + return [2, this._gw3Session + .send({ + type: GW_MESSAGE_UPDATE_CONTEXT, + domain: "global", + context_id: contextData.contextId, + delta: { commands: commands } + }, {}, { skipPeerId: false }) + .then(function (gwResponse) { + _this.handleUpdated(contextData, { + added: {}, + removed: [], + updated: {}, + commands: commands + }, { + updaterId: gwResponse.peer_id + }); + })]; + } + }); + }); + }; + GW3Bridge.prototype.get = function (name) { + var _a; + return __awaiter(this, void 0, void 0, function () { + var contextData, context; + var _this = this; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + if (!(name in this._creationPromises)) return [3, 2]; + return [4, this._creationPromises[name]]; + case 1: + _b.sent(); + _b.label = 2; + case 2: + contextData = this._contextNameToData[name]; + if (!contextData || !contextData.isAnnounced) { + return [2, Promise.resolve({})]; + } + if (contextData && (!contextData.hasCallbacks() || !contextData.hasReceivedSnapshot)) { + return [2, new Promise(function (resolve) { + _this.subscribe(name, function (data, _d, _r, un) { + _this.unsubscribe(un); + resolve(data); + }); + })]; + } + context = (_a = contextData === null || contextData === void 0 ? void 0 : contextData.context) !== null && _a !== void 0 ? _a : {}; + return [2, Promise.resolve(deepClone(context))]; + } + }); + }); + }; + GW3Bridge.prototype.subscribe = function (name, callback, subscriptionKey) { + return __awaiter(this, void 0, void 0, function () { + var thisCallbackSubscriptionNumber, contextData, hadCallbacks, clone, clone, clone; + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!(name in this._creationPromises)) return [3, 2]; + return [4, this._creationPromises[name]]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + thisCallbackSubscriptionNumber = typeof subscriptionKey === "undefined" ? this._nextCallbackSubscriptionNumber : subscriptionKey; + if (typeof subscriptionKey === "undefined") { + this._nextCallbackSubscriptionNumber += 1; + } + if (this._contextsSubscriptionsCache.every(function (subscription) { return subscription.subKey !== _this._nextCallbackSubscriptionNumber; })) { + this._contextsSubscriptionsCache.push({ contextName: name, subKey: thisCallbackSubscriptionNumber, callback: callback }); + } + contextData = this._contextNameToData[name]; + if (!contextData || + !contextData.isAnnounced) { + contextData = contextData || new GW3ContextData(undefined, name, false, undefined); + this._contextNameToData[name] = contextData; + contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback; + return [2, Promise.resolve(thisCallbackSubscriptionNumber)]; + } + hadCallbacks = contextData.hasCallbacks(); + contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback; + if (!hadCallbacks) { + if (!contextData.joinedActivity) { + if (contextData.context && contextData.sentExplicitSubscription) { + if (contextData.hasReceivedSnapshot) { + clone = deepClone(contextData.context); + callback(clone, clone, [], thisCallbackSubscriptionNumber); + } + return [2, Promise.resolve(thisCallbackSubscriptionNumber)]; + } + return [2, this.sendSubscribe(contextData) + .then(function () { return thisCallbackSubscriptionNumber; })]; + } + else { + if (contextData.hasReceivedSnapshot) { + clone = deepClone(contextData.context); + callback(clone, clone, [], thisCallbackSubscriptionNumber); + } + return [2, Promise.resolve(thisCallbackSubscriptionNumber)]; + } + } + else { + if (contextData.hasReceivedSnapshot) { + clone = deepClone(contextData.context); + callback(clone, clone, [], thisCallbackSubscriptionNumber); + } + return [2, Promise.resolve(thisCallbackSubscriptionNumber)]; + } + } + }); + }); + }; + GW3Bridge.prototype.unsubscribe = function (subscriptionKey) { + this._contextsSubscriptionsCache = this._contextsSubscriptionsCache.filter(function (subscription) { return subscription.subKey !== subscriptionKey; }); + for (var _i = 0, _a = Object.keys(this._contextNameToData); _i < _a.length; _i++) { + var name_1 = _a[_i]; + var contextData = this._contextNameToData[name_1]; + if (!contextData) { + return; + } + var hadCallbacks = contextData.hasCallbacks(); + delete contextData.updateCallbacks[subscriptionKey]; + if (contextData.isAnnounced && + hadCallbacks && + !contextData.hasCallbacks() && + contextData.sentExplicitSubscription) { + this.sendUnsubscribe(contextData); + } + if (!contextData.isAnnounced && + !contextData.hasCallbacks()) { + delete this._contextNameToData[name_1]; + } + } + }; + GW3Bridge.prototype.destroy = function (name) { + return __awaiter(this, void 0, void 0, function () { + var contextData; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!(name in this._creationPromises)) return [3, 2]; + return [4, this._creationPromises[name]]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + contextData = this._contextNameToData[name]; + if (!contextData) { + return [2, Promise.reject("context with ".concat(name, " does not exist"))]; + } + return [2, this._gw3Session + .send({ + type: GW_MESSAGE_DESTROY_CONTEXT, + domain: "global", + context_id: contextData.contextId, + }).then(function (_) { return undefined; })]; + } + }); + }); + }; + GW3Bridge.prototype.handleUpdated = function (contextData, delta, extraData) { + var oldContext = contextData.context; + contextData.context = applyContextDelta(contextData.context, delta, this._logger); + contextData.hasReceivedSnapshot = true; + if (this._contextNameToData[contextData.name] === contextData && + !deepEqual(oldContext, contextData.context)) { + this.invokeUpdateCallbacks(contextData, delta, extraData); + } + }; + GW3Bridge.prototype.subscribeToContextCreatedMessages = function () { + var createdMessageTypes = [ + GW_MESSAGE_CONTEXT_ADDED, + GW_MESSAGE_CONTEXT_CREATED, + GW_MESSAGE_ACTIVITY_CREATED, + ]; + for (var _i = 0, createdMessageTypes_1 = createdMessageTypes; _i < createdMessageTypes_1.length; _i++) { + var createdMessageType = createdMessageTypes_1[_i]; + var sub = this._connection.on(createdMessageType, this.handleContextCreatedMessage.bind(this)); + this._gw3Subscriptions.push(sub); + } + }; + GW3Bridge.prototype.handleContextCreatedMessage = function (contextCreatedMsg) { + var _this = this; + var createdMessageType = contextCreatedMsg.type; + if (createdMessageType === GW_MESSAGE_ACTIVITY_CREATED) { + this._contextNameToId[contextCreatedMsg.activity_id] = contextCreatedMsg.context_id; + this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.activity_id; + } + else if (createdMessageType === GW_MESSAGE_CONTEXT_ADDED) { + this._contextNameToId[contextCreatedMsg.name] = contextCreatedMsg.context_id; + this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.name; + } + else ; + var name = this._contextIdToName[contextCreatedMsg.context_id]; + if (!name) { + throw new Error("Received created event for context with unknown name: " + contextCreatedMsg.context_id); + } + if (!this._contextNameToId[name]) { + throw new Error("Received created event for context with unknown id: " + contextCreatedMsg.context_id); + } + var contextData = this._contextNameToData[name]; + if (contextData) { + if (contextData.isAnnounced) { + return; + } + else { + if (!contextData.hasCallbacks()) { + throw new Error("Assertion failure: contextData.hasCallbacks()"); + } + contextData.isAnnounced = true; + contextData.contextId = contextCreatedMsg.context_id; + contextData.activityId = contextCreatedMsg.activity_id; + if (!contextData.sentExplicitSubscription) { + this.sendSubscribe(contextData); + } + } + } + else { + this._contextNameToData[name] = contextData = + new GW3ContextData(contextCreatedMsg.context_id, name, true, contextCreatedMsg.activity_id); + if (this._trackAllContexts) { + this.subscribe(name, function () { }).then(function (subKey) { return _this._systemContextsSubKey = subKey; }); + } + } + }; + GW3Bridge.prototype.subscribeToContextUpdatedMessages = function () { + var updatedMessageTypes = [ + GW_MESSAGE_CONTEXT_UPDATED, + GW_MESSAGE_SUBSCRIBED_CONTEXT, + GW_MESSAGE_JOINED_ACTIVITY, + ]; + for (var _i = 0, updatedMessageTypes_1 = updatedMessageTypes; _i < updatedMessageTypes_1.length; _i++) { + var updatedMessageType = updatedMessageTypes_1[_i]; + var sub = this._connection.on(updatedMessageType, this.handleContextUpdatedMessage.bind(this)); + this._gw3Subscriptions.push(sub); + } + }; + GW3Bridge.prototype.handleContextUpdatedMessage = function (contextUpdatedMsg) { + var updatedMessageType = contextUpdatedMsg.type; + var contextId = contextUpdatedMsg.context_id; + var contextData = this._contextNameToData[this._contextIdToName[contextId]]; + var justSeen = !contextData || !contextData.isAnnounced; + if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) { + if (!contextData) { + contextData = + this._contextNameToData[contextUpdatedMsg.activity_id] || + new GW3ContextData(contextId, contextUpdatedMsg.activity_id, true, contextUpdatedMsg.activity_id); + } + this._contextNameToData[contextUpdatedMsg.activity_id] = contextData; + this._contextIdToName[contextId] = contextUpdatedMsg.activity_id; + this._contextNameToId[contextUpdatedMsg.activity_id] = contextId; + contextData.contextId = contextId; + contextData.isAnnounced = true; + contextData.activityId = contextUpdatedMsg.activity_id; + contextData.joinedActivity = true; + } + else { + if (!contextData || !contextData.isAnnounced) { + if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) { + contextData = contextData || new GW3ContextData(contextId, contextUpdatedMsg.name, true, undefined); + contextData.sentExplicitSubscription = true; + this._contextNameToData[contextUpdatedMsg.name] = contextData; + this._contextIdToName[contextId] = contextUpdatedMsg.name; + this._contextNameToId[contextUpdatedMsg.name] = contextId; + } + else { + this._logger.error("Received 'update' for unknown context: ".concat(contextId)); + } + return; + } + } + var oldContext = contextData.context; + contextData.hasReceivedSnapshot = true; + if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) { + contextData.context = contextUpdatedMsg.data || {}; + } + else if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) { + contextData.context = contextUpdatedMsg.context_snapshot || {}; + } + else if (updatedMessageType === GW_MESSAGE_CONTEXT_UPDATED) { + contextData.context = applyContextDelta(contextData.context, contextUpdatedMsg.delta, this._logger); + } + else { + throw new Error("Unrecognized context update message " + updatedMessageType); + } + if (justSeen || + !deepEqual(contextData.context, oldContext) || + updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) { + this.invokeUpdateCallbacks(contextData, contextUpdatedMsg.delta, { updaterId: contextUpdatedMsg.updater_id }); + } + }; + GW3Bridge.prototype.invokeUpdateCallbacks = function (contextData, delta, extraData) { + delta = delta || { added: {}, updated: {}, reset: {}, removed: [] }; + if (delta.commands) { + delta.added = delta.updated = delta.reset = {}; + delta.removed = []; + for (var _i = 0, _a = delta.commands; _i < _a.length; _i++) { + var command = _a[_i]; + if (command.type === "remove") { + if (command.path.indexOf(".") === -1) { + delta.removed.push(command.path); + } + setValueToPath(delta.updated, null, command.path); + } + else if (command.type === "set") { + setValueToPath(delta.updated, command.value, command.path); + } + } + } + for (var updateCallbackIndex in contextData.updateCallbacks) { + if (contextData.updateCallbacks.hasOwnProperty(updateCallbackIndex)) { + try { + var updateCallback = contextData.updateCallbacks[updateCallbackIndex]; + updateCallback(deepClone(contextData.context), deepClone(Object.assign({}, delta.added || {}, delta.updated || {}, delta.reset || {})), delta.removed, parseInt(updateCallbackIndex, 10), extraData); + } + catch (err) { + this._logger.debug("callback error: " + JSON.stringify(err)); + } + } + } + }; + GW3Bridge.prototype.subscribeToContextDestroyedMessages = function () { + var destroyedMessageTypes = [ + GW_MESSAGE_CONTEXT_DESTROYED, + GW_MESSAGE_ACTIVITY_DESTROYED, + ]; + for (var _i = 0, destroyedMessageTypes_1 = destroyedMessageTypes; _i < destroyedMessageTypes_1.length; _i++) { + var destroyedMessageType = destroyedMessageTypes_1[_i]; + var sub = this._connection.on(destroyedMessageType, this.handleContextDestroyedMessage.bind(this)); + this._gw3Subscriptions.push(sub); + } + }; + GW3Bridge.prototype.handleContextDestroyedMessage = function (destroyedMsg) { + var destroyedMessageType = destroyedMsg.type; + var contextId; + var name; + if (destroyedMessageType === GW_MESSAGE_ACTIVITY_DESTROYED) { + name = destroyedMsg.activity_id; + contextId = this._contextNameToId[name]; + if (!contextId) { + this._logger.error("Received 'destroyed' for unknown activity: ".concat(destroyedMsg.activity_id)); + return; + } + } + else { + contextId = destroyedMsg.context_id; + name = this._contextIdToName[contextId]; + if (!name) { + this._logger.error("Received 'destroyed' for unknown context: ".concat(destroyedMsg.context_id)); + return; + } + } + delete this._contextIdToName[contextId]; + delete this._contextNameToId[name]; + var contextData = this._contextNameToData[name]; + delete this._contextNameToData[name]; + if (!contextData || !contextData.isAnnounced) { + this._logger.error("Received 'destroyed' for unknown context: ".concat(contextId)); + return; + } + }; + GW3Bridge.prototype.sendSubscribe = function (contextData) { + contextData.sentExplicitSubscription = true; + return this._gw3Session + .send({ + type: GW_MESSAGE_SUBSCRIBE_CONTEXT, + domain: "global", + context_id: contextData.contextId, + }).then(function (_) { return undefined; }); + }; + GW3Bridge.prototype.sendUnsubscribe = function (contextData) { + contextData.sentExplicitSubscription = false; + return this._gw3Session + .send({ + type: GW_MESSAGE_UNSUBSCRIBE_CONTEXT, + domain: "global", + context_id: contextData.contextId, + }).then(function (_) { return undefined; }); + }; + GW3Bridge.prototype.calculateContextDeltaV1 = function (from, to) { + var delta = { added: {}, updated: {}, removed: [], reset: undefined }; + if (from) { + for (var _i = 0, _a = Object.keys(from); _i < _a.length; _i++) { + var x = _a[_i]; + if (Object.keys(to).indexOf(x) !== -1 + && to[x] !== null + && !deepEqual(from[x], to[x])) { + delta.updated[x] = to[x]; + } + } + } + for (var _b = 0, _c = Object.keys(to); _b < _c.length; _b++) { + var x = _c[_b]; + if (!from || (Object.keys(from).indexOf(x) === -1)) { + if (to[x] !== null) { + delta.added[x] = to[x]; + } + } + else if (to[x] === null) { + delta.removed.push(x); + } + } + return delta; + }; + GW3Bridge.prototype.calculateContextDeltaV2 = function (from, to) { + var _a, _b; + var delta = { added: {}, updated: {}, removed: [], reset: undefined, commands: [] }; + for (var _i = 0, _c = Object.keys(to); _i < _c.length; _i++) { + var x = _c[_i]; + if (to[x] !== null) { + var fromX = from ? from[x] : null; + if (!deepEqual(fromX, to[x])) { + (_a = delta.commands) === null || _a === void 0 ? void 0 : _a.push({ type: "set", path: x, value: to[x] }); + } + } + else { + (_b = delta.commands) === null || _b === void 0 ? void 0 : _b.push({ type: "remove", path: x }); + } + } + return delta; + }; + GW3Bridge.prototype.resetState = function () { + var _this = this; + for (var _i = 0, _a = this._gw3Subscriptions; _i < _a.length; _i++) { + var sub = _a[_i]; + this._connection.off(sub); + } + if (this._systemContextsSubKey) { + this.unsubscribe(this._systemContextsSubKey); + delete this._systemContextsSubKey; + } + this._gw3Subscriptions = []; + this._contextNameToId = {}; + this._contextIdToName = {}; + delete this._protocolVersion; + this._contextsTempCache = Object.keys(this._contextNameToData).reduce(function (cacheSoFar, ctxName) { + cacheSoFar[ctxName] = _this._contextNameToData[ctxName].context; + return cacheSoFar; + }, {}); + this._contextNameToData = {}; + }; + GW3Bridge.prototype.reInitiateState = function () { + var _a; + return __awaiter(this, void 0, void 0, function () { + var _b, _c, _e, _i, ctxName, lastKnownData; + var _this = this; + return __generator(this, function (_f) { + switch (_f.label) { + case 0: + this.subscribeToContextCreatedMessages(); + this.subscribeToContextUpdatedMessages(); + this.subscribeToContextDestroyedMessages(); + (_a = this._connection.replayer) === null || _a === void 0 ? void 0 : _a.drain(ContextMessageReplaySpec.name, function (message) { + var type = message.type; + if (!type) { + return; + } + if (type === GW_MESSAGE_CONTEXT_CREATED || + type === GW_MESSAGE_CONTEXT_ADDED || + type === GW_MESSAGE_ACTIVITY_CREATED) { + _this.handleContextCreatedMessage(message); + } + else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT || + type === GW_MESSAGE_CONTEXT_UPDATED || + type === GW_MESSAGE_JOINED_ACTIVITY) { + _this.handleContextUpdatedMessage(message); + } + else if (type === GW_MESSAGE_CONTEXT_DESTROYED || + type === GW_MESSAGE_ACTIVITY_DESTROYED) { + _this.handleContextDestroyedMessage(message); + } + }); + return [4, Promise.all(this._contextsSubscriptionsCache.map(function (subscription) { return _this.subscribe(subscription.contextName, subscription.callback, subscription.subKey); }))]; + case 1: + _f.sent(); + return [4, this.flushQueue()]; + case 2: + _f.sent(); + _b = this._contextsTempCache; + _c = []; + for (_e in _b) + _c.push(_e); + _i = 0; + _f.label = 3; + case 3: + if (!(_i < _c.length)) return [3, 7]; + _e = _c[_i]; + if (!(_e in _b)) return [3, 6]; + ctxName = _e; + if (typeof this._contextsTempCache[ctxName] !== "object" || Object.keys(this._contextsTempCache[ctxName]).length === 0) { + return [3, 6]; + } + lastKnownData = this._contextsTempCache[ctxName]; + this._logger.info("Re-announcing known context: ".concat(ctxName)); + return [4, this.flushQueue()]; + case 4: + _f.sent(); + return [4, this.update(ctxName, lastKnownData)]; + case 5: + _f.sent(); + _f.label = 6; + case 6: + _i++; + return [3, 3]; + case 7: + this._contextsTempCache = {}; + this._logger.info("Contexts are re-announced"); + return [2]; + } + }); + }); + }; + GW3Bridge.prototype.flushQueue = function () { + return new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 0); }); + }; + return GW3Bridge; +}()); + +var ContextsModule = (function () { + function ContextsModule(config) { + this._bridge = new GW3Bridge(config); + } + ContextsModule.prototype.all = function () { + return this._bridge.all(); + }; + ContextsModule.prototype.update = function (name, data) { + this.checkName(name); + this.checkData(data); + return this._bridge.update(name, data); + }; + ContextsModule.prototype.set = function (name, data) { + this.checkName(name); + this.checkData(data); + return this._bridge.set(name, data); + }; + ContextsModule.prototype.setPath = function (name, path, data) { + this.checkName(name); + this.checkPath(path); + var isTopLevelPath = path === ""; + if (isTopLevelPath) { + this.checkData(data); + return this.set(name, data); + } + return this._bridge.setPath(name, path, data); + }; + ContextsModule.prototype.setPaths = function (name, paths) { + this.checkName(name); + if (!Array.isArray(paths)) { + throw new Error("Please provide the paths as an array of PathValues!"); + } + for (var _i = 0, paths_1 = paths; _i < paths_1.length; _i++) { + var _a = paths_1[_i], path = _a.path, value = _a.value; + this.checkPath(path); + var isTopLevelPath = path === ""; + if (isTopLevelPath) { + this.checkData(value); + } + } + return this._bridge.setPaths(name, paths); + }; + ContextsModule.prototype.subscribe = function (name, callback) { + var _this = this; + this.checkName(name); + if (typeof callback !== "function") { + throw new Error("Please provide the callback as a function!"); + } + return this._bridge + .subscribe(name, function (data, delta, removed, key, extraData) { return callback(data, delta, removed, function () { return _this._bridge.unsubscribe(key); }, extraData); }) + .then(function (key) { + return function () { + _this._bridge.unsubscribe(key); + }; + }); + }; + ContextsModule.prototype.get = function (name) { + this.checkName(name); + return this._bridge.get(name); + }; + ContextsModule.prototype.ready = function () { + return Promise.resolve(this); + }; + ContextsModule.prototype.destroy = function (name) { + this.checkName(name); + return this._bridge.destroy(name); + }; + Object.defineProperty(ContextsModule.prototype, "setPathSupported", { + get: function () { + return this._bridge.setPathSupported; + }, + enumerable: false, + configurable: true + }); + ContextsModule.prototype.checkName = function (name) { + if (typeof name !== "string" || name === "") { + throw new Error("Please provide the name as a non-empty string!"); + } + }; + ContextsModule.prototype.checkPath = function (path) { + if (typeof path !== "string") { + throw new Error("Please provide the path as a dot delimited string!"); + } + }; + ContextsModule.prototype.checkData = function (data) { + if (typeof data !== "object") { + throw new Error("Please provide the data as an object!"); + } + }; + return ContextsModule; +}()); + +function promisify (promise, successCallback, errorCallback) { + if (typeof successCallback !== "function" && typeof errorCallback !== "function") { + return promise; + } + if (typeof successCallback !== "function") { + successCallback = function () { }; + } + else if (typeof errorCallback !== "function") { + errorCallback = function () { }; + } + return promise.then(successCallback, errorCallback); +} + +function rejectAfter(ms, promise, error) { + if (ms === void 0) { ms = 0; } + var timeout; + var clearTimeoutIfThere = function () { + if (timeout) { + clearTimeout(timeout); + } + }; + promise + .then(function () { + clearTimeoutIfThere(); + }) + .catch(function () { + clearTimeoutIfThere(); + }); + return new Promise(function (resolve, reject) { + timeout = setTimeout(function () { return reject(error); }, ms); + }); +} + +var InvokeStatus; +(function (InvokeStatus) { + InvokeStatus[InvokeStatus["Success"] = 0] = "Success"; + InvokeStatus[InvokeStatus["Error"] = 1] = "Error"; +})(InvokeStatus || (InvokeStatus = {})); +var Client = (function () { + function Client(protocol, repo, instance, configuration) { + this.protocol = protocol; + this.repo = repo; + this.instance = instance; + this.configuration = configuration; + } + Client.prototype.subscribe = function (method, options, successCallback, errorCallback, existingSub) { + var _this = this; + var callProtocolSubscribe = function (targetServers, stream, successProxy, errorProxy) { + var _a; + options.methodResponseTimeout = (_a = options.methodResponseTimeout) !== null && _a !== void 0 ? _a : options.waitTimeoutMs; + _this.protocol.client.subscribe(stream, options, targetServers, successProxy, errorProxy, existingSub); + }; + var promise = new Promise(function (resolve, reject) { + var successProxy = function (sub) { + resolve(sub); + }; + var errorProxy = function (err) { + reject(err); + }; + if (!method) { + reject("Method definition is required. Please, provide either a unique string for a method name or a \u201CmethodDefinition\u201D object with a required \u201Cname\u201D property."); + return; + } + var methodDef; + if (typeof method === "string") { + methodDef = { name: method }; + } + else { + methodDef = method; + } + if (!methodDef.name) { + reject("Method definition is required. Please, provide either a unique string for a method name or a \u201CmethodDefinition\u201D object with a required \u201Cname\u201D property."); + return; + } + if (options === undefined) { + options = {}; + } + var target = options.target; + if (target === undefined) { + target = "best"; + } + if (typeof target === "string" && target !== "all" && target !== "best") { + reject(new Error("\"".concat(target, "\" is not a valid target. Valid targets are \"all\", \"best\", or an instance."))); + return; + } + if (options.methodResponseTimeout === undefined) { + options.methodResponseTimeout = options.method_response_timeout; + if (options.methodResponseTimeout === undefined) { + options.methodResponseTimeout = _this.configuration.methodResponseTimeout; + } + } + if (options.waitTimeoutMs === undefined) { + options.waitTimeoutMs = options.wait_for_method_timeout; + if (options.waitTimeoutMs === undefined) { + options.waitTimeoutMs = _this.configuration.waitTimeoutMs; + } + } + var delayStep = 500; + var delayTillNow = 0; + var currentServers = _this.getServerMethodsByFilterAndTarget(methodDef, target); + if (currentServers.length > 0) { + callProtocolSubscribe(currentServers, currentServers[0].methods[0], successProxy, errorProxy); + } + else { + var retry_1 = function () { + if (!target || !(options.waitTimeoutMs)) { + return; + } + delayTillNow += delayStep; + currentServers = _this.getServerMethodsByFilterAndTarget(methodDef, target); + if (currentServers.length > 0) { + var streamInfo = currentServers[0].methods[0]; + callProtocolSubscribe(currentServers, streamInfo, successProxy, errorProxy); + } + else if (delayTillNow >= options.waitTimeoutMs) { + var def = typeof method === "string" ? { name: method } : method; + callProtocolSubscribe(currentServers, def, successProxy, errorProxy); + } + else { + setTimeout(retry_1, delayStep); + } + }; + setTimeout(retry_1, delayStep); + } + }); + return promisify(promise, successCallback, errorCallback); + }; + Client.prototype.servers = function (methodFilter) { + var filterCopy = methodFilter === undefined + ? undefined + : __assign({}, methodFilter); + return this.getServers(filterCopy).map(function (serverMethodMap) { + return serverMethodMap.server.instance; + }); + }; + Client.prototype.methods = function (methodFilter) { + if (typeof methodFilter === "string") { + methodFilter = { name: methodFilter }; + } + else { + methodFilter = __assign({}, methodFilter); + } + return this.getMethods(methodFilter); + }; + Client.prototype.methodsForInstance = function (instance) { + return this.getMethodsForInstance(instance); + }; + Client.prototype.methodAdded = function (callback) { + return this.repo.onMethodAdded(callback); + }; + Client.prototype.methodRemoved = function (callback) { + return this.repo.onMethodRemoved(callback); + }; + Client.prototype.serverAdded = function (callback) { + return this.repo.onServerAdded(callback); + }; + Client.prototype.serverRemoved = function (callback) { + return this.repo.onServerRemoved(function (server, reason) { + callback(server, reason); + }); + }; + Client.prototype.serverMethodAdded = function (callback) { + return this.repo.onServerMethodAdded(function (server, method) { + callback({ server: server, method: method }); + }); + }; + Client.prototype.serverMethodRemoved = function (callback) { + return this.repo.onServerMethodRemoved(function (server, method) { + callback({ server: server, method: method }); + }); + }; + Client.prototype.invoke = function (methodFilter, argumentObj, target, additionalOptions, success, error) { + return __awaiter(this, void 0, void 0, function () { + var getInvokePromise; + var _this = this; + return __generator(this, function (_a) { + getInvokePromise = function () { return __awaiter(_this, void 0, void 0, function () { + var methodDefinition, serversMethodMap, method, errorObj, timeout, additionalOptionsCopy, invokePromises, invocationMessages, results, allRejected; + var _this = this; + var _a, _b, _c; + return __generator(this, function (_d) { + switch (_d.label) { + case 0: + if (typeof methodFilter === "string") { + methodDefinition = { name: methodFilter }; + } + else { + methodDefinition = __assign({}, methodFilter); + } + if (!methodDefinition.name) { + return [2, Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a \u201CmethodDefinition\u201D object with a required \u201Cname\u201D property.")]; + } + if (!argumentObj) { + argumentObj = {}; + } + if (!target) { + target = "best"; + } + if (typeof target === "string" && target !== "all" && target !== "best" && target !== "skipMine") { + return [2, Promise.reject(new Error("\"".concat(target, "\" is not a valid target. Valid targets are \"all\" and \"best\".")))]; + } + if (!additionalOptions) { + additionalOptions = {}; + } + if (additionalOptions.methodResponseTimeoutMs === undefined) { + additionalOptions.methodResponseTimeoutMs = additionalOptions.method_response_timeout; + if (additionalOptions.methodResponseTimeoutMs === undefined) { + additionalOptions.methodResponseTimeoutMs = this.configuration.methodResponseTimeout; + } + } + if (additionalOptions.waitTimeoutMs === undefined) { + additionalOptions.waitTimeoutMs = additionalOptions.wait_for_method_timeout; + if (additionalOptions.waitTimeoutMs === undefined) { + additionalOptions.waitTimeoutMs = this.configuration.waitTimeoutMs; + } + } + if (additionalOptions.waitTimeoutMs !== undefined && typeof additionalOptions.waitTimeoutMs !== "number") { + return [2, Promise.reject(new Error("\"".concat(additionalOptions.waitTimeoutMs, "\" is not a valid number for \"waitTimeoutMs\" ")))]; + } + if (typeof argumentObj !== "object") { + return [2, Promise.reject(new Error("The method arguments must be an object. method: ".concat(methodDefinition.name)))]; + } + serversMethodMap = this.getServerMethodsByFilterAndTarget(methodDefinition, target); + if (!(serversMethodMap.length === 0)) return [3, 4]; + _d.label = 1; + case 1: + _d.trys.push([1, 3, , 4]); + return [4, this.tryToAwaitForMethods(methodDefinition, target, additionalOptions)]; + case 2: + serversMethodMap = _d.sent(); + return [3, 4]; + case 3: + _d.sent(); + method = __assign(__assign({}, methodDefinition), { getServers: function () { return []; }, supportsStreaming: false, objectTypes: (_a = methodDefinition.objectTypes) !== null && _a !== void 0 ? _a : [], flags: (_c = (_b = methodDefinition.flags) === null || _b === void 0 ? void 0 : _b.metadata) !== null && _c !== void 0 ? _c : {} }); + errorObj = { + method: method, + called_with: argumentObj, + message: "Can not find a method matching ".concat(JSON.stringify(methodFilter), " with server filter ").concat(JSON.stringify(target)), + executed_by: undefined, + returned: undefined, + status: undefined, + }; + return [2, Promise.reject(errorObj)]; + case 4: + timeout = additionalOptions.methodResponseTimeoutMs; + additionalOptionsCopy = additionalOptions; + invokePromises = serversMethodMap.map(function (serversMethodPair) { + var invId = shortid(); + var method = serversMethodPair.methods[0]; + var server = serversMethodPair.server; + var invokePromise = _this.protocol.client.invoke(invId, method, argumentObj, server, additionalOptionsCopy); + return Promise.race([ + invokePromise, + rejectAfter(timeout, invokePromise, { + invocationId: invId, + message: "Invocation timeout (".concat(timeout, " ms) reached for method name: ").concat(method === null || method === void 0 ? void 0 : method.name, ", target instance: ").concat(JSON.stringify(server.instance), ", options: ").concat(JSON.stringify(additionalOptionsCopy)), + status: InvokeStatus.Error, + }) + ]); + }); + return [4, Promise.all(invokePromises)]; + case 5: + invocationMessages = _d.sent(); + results = this.getInvocationResultObj(invocationMessages, methodDefinition, argumentObj); + allRejected = invocationMessages.every(function (result) { return result.status === InvokeStatus.Error; }); + if (allRejected) { + return [2, Promise.reject(results)]; + } + return [2, results]; + } + }); + }); }; + return [2, promisify(getInvokePromise(), success, error)]; + }); + }); + }; + Client.prototype.getInvocationResultObj = function (invocationResults, method, calledWith) { + var all_return_values = invocationResults + .filter(function (invokeMessage) { return invokeMessage.status === InvokeStatus.Success; }) + .reduce(function (allValues, currentValue) { + allValues = __spreadArray(__spreadArray([], allValues, true), [ + { + executed_by: currentValue.instance, + returned: currentValue.result, + called_with: calledWith, + method: method, + message: currentValue.message, + status: currentValue.status, + } + ], false); + return allValues; + }, []); + var all_errors = invocationResults + .filter(function (invokeMessage) { return invokeMessage.status === InvokeStatus.Error; }) + .reduce(function (allErrors, currError) { + allErrors = __spreadArray(__spreadArray([], allErrors, true), [ + { + executed_by: currError.instance, + called_with: calledWith, + name: method.name, + message: currError.message, + } + ], false); + return allErrors; + }, []); + var invResult = invocationResults[0]; + var result = { + method: method, + called_with: calledWith, + returned: invResult.result, + executed_by: invResult.instance, + all_return_values: all_return_values, + all_errors: all_errors, + message: invResult.message, + status: invResult.status + }; + return result; + }; + Client.prototype.tryToAwaitForMethods = function (methodDefinition, target, additionalOptions) { + var _this = this; + return new Promise(function (resolve, reject) { + if (additionalOptions.waitTimeoutMs === 0) { + reject(); + return; + } + var delayStep = 500; + var delayTillNow = 0; + var retry = function () { + delayTillNow += delayStep; + var serversMethodMap = _this.getServerMethodsByFilterAndTarget(methodDefinition, target); + if (serversMethodMap.length > 0) { + clearInterval(interval); + resolve(serversMethodMap); + } + else if (delayTillNow >= (additionalOptions.waitTimeoutMs || 10000)) { + clearInterval(interval); + reject(); + return; + } + }; + var interval = setInterval(retry, delayStep); + }); + }; + Client.prototype.filterByTarget = function (target, serverMethodMap) { + var _this = this; + if (typeof target === "string") { + if (target === "all") { + return __spreadArray([], serverMethodMap, true); + } + else if (target === "best") { + var localMachine = serverMethodMap + .find(function (s) { return s.server.instance.isLocal; }); + if (localMachine) { + return [localMachine]; + } + if (serverMethodMap[0] !== undefined) { + return [serverMethodMap[0]]; + } + } + else if (target === "skipMine") { + return serverMethodMap.filter(function (_a) { + var server = _a.server; + return server.instance.peerId !== _this.instance.peerId; + }); + } + } + else { + var targetArray = void 0; + if (!Array.isArray(target)) { + targetArray = [target]; + } + else { + targetArray = target; + } + var allServersMatching = targetArray.reduce(function (matches, filter) { + var myMatches = serverMethodMap.filter(function (serverMethodPair) { + return _this.instanceMatch(filter, serverMethodPair.server.instance); + }); + return matches.concat(myMatches); + }, []); + return allServersMatching; + } + return []; + }; + Client.prototype.instanceMatch = function (instanceFilter, instanceDefinition) { + return this.containsProps(instanceFilter, instanceDefinition); + }; + Client.prototype.methodMatch = function (methodFilter, methodDefinition) { + return this.containsProps(methodFilter, methodDefinition); + }; + Client.prototype.containsProps = function (filter, repoMethod) { + var filterProps = Object.keys(filter) + .filter(function (prop) { + return filter[prop] !== undefined + && filter[prop] !== null + && typeof filter[prop] !== "function" + && prop !== "object_types" + && prop !== "display_name" + && prop !== "id" + && prop !== "gatewayId" + && prop !== "identifier" + && prop[0] !== "_"; + }); + return filterProps.every(function (prop) { + var isMatch; + var filterValue = filter[prop]; + var repoMethodValue = repoMethod[prop]; + switch (prop) { + case "objectTypes": + isMatch = (filterValue || []).every(function (filterValueEl) { + return (repoMethodValue || []).includes(filterValueEl); + }); + break; + case "flags": + isMatch = isSubset(repoMethodValue || {}, filterValue || {}); + break; + default: + isMatch = String(filterValue).toLowerCase() === String(repoMethodValue).toLowerCase(); + } + return isMatch; + }); + }; + Client.prototype.getMethods = function (methodFilter) { + var _this = this; + if (methodFilter === undefined) { + return this.repo.getMethods(); + } + var methods = this.repo.getMethods().filter(function (method) { + return _this.methodMatch(methodFilter, method); + }); + return methods; + }; + Client.prototype.getMethodsForInstance = function (instanceFilter) { + var _this = this; + var allServers = this.repo.getServers(); + var matchingServers = allServers.filter(function (server) { + return _this.instanceMatch(instanceFilter, server.instance); + }); + if (matchingServers.length === 0) { + return []; + } + var resultMethodsObject = {}; + if (matchingServers.length === 1) { + resultMethodsObject = matchingServers[0].methods; + } + else { + matchingServers.forEach(function (server) { + Object.keys(server.methods).forEach(function (methodKey) { + var method = server.methods[methodKey]; + resultMethodsObject[method.identifier] = method; + }); + }); + } + return Object.keys(resultMethodsObject) + .map(function (key) { + return resultMethodsObject[key]; + }); + }; + Client.prototype.getServers = function (methodFilter) { + var _this = this; + var servers = this.repo.getServers(); + if (methodFilter === undefined) { + return servers.map(function (server) { + return { server: server, methods: [] }; + }); + } + return servers.reduce(function (prev, current) { + var methodsForServer = Object.values(current.methods); + var matchingMethods = methodsForServer.filter(function (method) { + return _this.methodMatch(methodFilter, method); + }); + if (matchingMethods.length > 0) { + prev.push({ server: current, methods: matchingMethods }); + } + return prev; + }, []); + }; + Client.prototype.getServerMethodsByFilterAndTarget = function (methodFilter, target) { + var serversMethodMap = this.getServers(methodFilter); + return this.filterByTarget(target, serversMethodMap); + }; + return Client; +}()); + +var ServerSubscription = (function () { + function ServerSubscription(protocol, repoMethod, subscription) { + this.protocol = protocol; + this.repoMethod = repoMethod; + this.subscription = subscription; + } + Object.defineProperty(ServerSubscription.prototype, "stream", { + get: function () { + if (!this.repoMethod.stream) { + throw new Error("no stream"); + } + return this.repoMethod.stream; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ServerSubscription.prototype, "arguments", { + get: function () { return this.subscription.arguments || {}; }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ServerSubscription.prototype, "branchKey", { + get: function () { return this.subscription.branchKey; }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ServerSubscription.prototype, "instance", { + get: function () { + if (!this.subscription.instance) { + throw new Error("no instance"); + } + return this.subscription.instance; + }, + enumerable: false, + configurable: true + }); + ServerSubscription.prototype.close = function () { + this.protocol.server.closeSingleSubscription(this.repoMethod, this.subscription); + }; + ServerSubscription.prototype.push = function (data) { + this.protocol.server.pushDataToSingle(this.repoMethod, this.subscription, data); + }; + return ServerSubscription; +}()); + +var Request = (function () { + function Request(protocol, repoMethod, requestContext) { + this.protocol = protocol; + this.repoMethod = repoMethod; + this.requestContext = requestContext; + this.arguments = requestContext.arguments; + this.instance = requestContext.instance; + } + Request.prototype.accept = function () { + this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, ""); + }; + Request.prototype.acceptOnBranch = function (branch) { + this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, branch); + }; + Request.prototype.reject = function (reason) { + this.protocol.server.rejectRequest(this.requestContext, this.repoMethod, reason); + }; + return Request; +}()); + +var ServerStreaming$1 = (function () { + function ServerStreaming(protocol, server) { + var _this = this; + this.protocol = protocol; + this.server = server; + protocol.server.onSubRequest(function (rc, rm) { return _this.handleSubRequest(rc, rm); }); + protocol.server.onSubAdded(function (sub, rm) { return _this.handleSubAdded(sub, rm); }); + protocol.server.onSubRemoved(function (sub, rm) { return _this.handleSubRemoved(sub, rm); }); + } + ServerStreaming.prototype.handleSubRequest = function (requestContext, repoMethod) { + if (!(repoMethod && + repoMethod.streamCallbacks && + typeof repoMethod.streamCallbacks.subscriptionRequestHandler === "function")) { + return; + } + var request = new Request(this.protocol, repoMethod, requestContext); + repoMethod.streamCallbacks.subscriptionRequestHandler(request); + }; + ServerStreaming.prototype.handleSubAdded = function (subscription, repoMethod) { + if (!(repoMethod && + repoMethod.streamCallbacks && + typeof repoMethod.streamCallbacks.subscriptionAddedHandler === "function")) { + return; + } + var sub = new ServerSubscription(this.protocol, repoMethod, subscription); + repoMethod.streamCallbacks.subscriptionAddedHandler(sub); + }; + ServerStreaming.prototype.handleSubRemoved = function (subscription, repoMethod) { + if (!(repoMethod && + repoMethod.streamCallbacks && + typeof repoMethod.streamCallbacks.subscriptionRemovedHandler === "function")) { + return; + } + var sub = new ServerSubscription(this.protocol, repoMethod, subscription); + repoMethod.streamCallbacks.subscriptionRemovedHandler(sub); + }; + return ServerStreaming; +}()); + +var ServerBranch = (function () { + function ServerBranch(key, protocol, repoMethod) { + this.key = key; + this.protocol = protocol; + this.repoMethod = repoMethod; + } + ServerBranch.prototype.subscriptions = function () { + var _this = this; + var subList = this.protocol.server.getSubscriptionList(this.repoMethod, this.key); + return subList.map(function (sub) { + return new ServerSubscription(_this.protocol, _this.repoMethod, sub); + }); + }; + ServerBranch.prototype.close = function () { + this.protocol.server.closeAllSubscriptions(this.repoMethod, this.key); + }; + ServerBranch.prototype.push = function (data) { + this.protocol.server.pushData(this.repoMethod, data, [this.key]); + }; + return ServerBranch; +}()); + +var ServerStream = (function () { + function ServerStream(_protocol, _repoMethod, _server) { + this._protocol = _protocol; + this._repoMethod = _repoMethod; + this._server = _server; + this.name = this._repoMethod.definition.name; + } + ServerStream.prototype.branches = function (key) { + var _this = this; + var bList = this._protocol.server.getBranchList(this._repoMethod); + if (key) { + if (bList.indexOf(key) > -1) { + return new ServerBranch(key, this._protocol, this._repoMethod); + } + return undefined; + } + else { + return bList.map(function (branchKey) { + return new ServerBranch(branchKey, _this._protocol, _this._repoMethod); + }); + } + }; + ServerStream.prototype.branch = function (key) { + return this.branches(key); + }; + ServerStream.prototype.subscriptions = function () { + var _this = this; + var subList = this._protocol.server.getSubscriptionList(this._repoMethod); + return subList.map(function (sub) { + return new ServerSubscription(_this._protocol, _this._repoMethod, sub); + }); + }; + Object.defineProperty(ServerStream.prototype, "definition", { + get: function () { + var _a; + var def2 = this._repoMethod.definition; + return { + accepts: def2.accepts, + description: def2.description, + displayName: def2.displayName, + name: def2.name, + objectTypes: def2.objectTypes, + returns: def2.returns, + supportsStreaming: def2.supportsStreaming, + flags: (_a = def2.flags) === null || _a === void 0 ? void 0 : _a.metadata, + }; + }, + enumerable: false, + configurable: true + }); + ServerStream.prototype.close = function () { + this._protocol.server.closeAllSubscriptions(this._repoMethod); + this._server.unregister(this._repoMethod.definition, true); + }; + ServerStream.prototype.push = function (data, branches) { + if (typeof branches !== "string" && !Array.isArray(branches) && branches !== undefined) { + throw new Error("invalid branches should be string or string array"); + } + if (typeof data !== "object") { + throw new Error("Invalid arguments. Data must be an object."); + } + this._protocol.server.pushData(this._repoMethod, data, branches); + }; + ServerStream.prototype.updateRepoMethod = function (repoMethod) { + this._repoMethod = repoMethod; + }; + return ServerStream; +}()); + +var Server = (function () { + function Server(protocol, serverRepository) { + this.protocol = protocol; + this.serverRepository = serverRepository; + this.invocations = 0; + this.currentlyUnregistering = {}; + this.streaming = new ServerStreaming$1(protocol, this); + this.protocol.server.onInvoked(this.onMethodInvoked.bind(this)); + } + Server.prototype.createStream = function (streamDef, callbacks, successCallback, errorCallback, existingStream) { + var _this = this; + var promise = new Promise(function (resolve, reject) { + if (!streamDef) { + reject("The stream name must be unique! Please, provide either a unique string for a stream name to “glue.interop.createStream()” or a “methodDefinition” object with a unique “name” property for the stream."); + return; + } + var streamMethodDefinition; + if (typeof streamDef === "string") { + streamMethodDefinition = { name: "" + streamDef }; + } + else { + streamMethodDefinition = __assign({}, streamDef); + } + if (!streamMethodDefinition.name) { + return reject("The \u201Cname\u201D property is required for the \u201CstreamDefinition\u201D object and must be unique. Stream definition: ".concat(JSON.stringify(streamMethodDefinition))); + } + var nameAlreadyExists = _this.serverRepository.getList() + .some(function (serverMethod) { return serverMethod.definition.name === streamMethodDefinition.name; }); + if (nameAlreadyExists) { + return reject("A stream with the name \"".concat(streamMethodDefinition.name, "\" already exists! Please, provide a unique name for the stream.")); + } + streamMethodDefinition.supportsStreaming = true; + if (!callbacks) { + callbacks = {}; + } + if (typeof callbacks.subscriptionRequestHandler !== "function") { + callbacks.subscriptionRequestHandler = function (request) { + request.accept(); + }; + } + var repoMethod = _this.serverRepository.add({ + definition: streamMethodDefinition, + streamCallbacks: callbacks, + protocolState: {}, + }); + _this.protocol.server.createStream(repoMethod) + .then(function () { + var streamUserObject; + if (existingStream) { + streamUserObject = existingStream; + existingStream.updateRepoMethod(repoMethod); + } + else { + streamUserObject = new ServerStream(_this.protocol, repoMethod, _this); + } + repoMethod.stream = streamUserObject; + resolve(streamUserObject); + }) + .catch(function (err) { + if (repoMethod.repoId) { + _this.serverRepository.remove(repoMethod.repoId); + } + reject(err); + }); + }); + return promisify(promise, successCallback, errorCallback); + }; + Server.prototype.register = function (methodDefinition, callback) { + var _this = this; + if (!methodDefinition) { + return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property."); + } + if (typeof callback !== "function") { + return Promise.reject("The second parameter must be a callback function. Method: ".concat(typeof methodDefinition === "string" ? methodDefinition : methodDefinition.name)); + } + var wrappedCallbackFunction = function (context, resultCallback) { return __awaiter(_this, void 0, void 0, function () { + var result, resultValue, e_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + _a.trys.push([0, 4, , 5]); + result = callback(context.args, context.instance); + if (!(result && typeof result.then === "function")) return [3, 2]; + return [4, result]; + case 1: + resultValue = _a.sent(); + resultCallback(undefined, resultValue); + return [3, 3]; + case 2: + resultCallback(undefined, result); + _a.label = 3; + case 3: return [3, 5]; + case 4: + e_1 = _a.sent(); + resultCallback(e_1 !== null && e_1 !== void 0 ? e_1 : "", e_1 !== null && e_1 !== void 0 ? e_1 : ""); + return [3, 5]; + case 5: return [2]; + } + }); + }); }; + wrappedCallbackFunction.userCallback = callback; + return this.registerCore(methodDefinition, wrappedCallbackFunction); + }; + Server.prototype.registerAsync = function (methodDefinition, callback) { + var _this = this; + if (!methodDefinition) { + return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property."); + } + if (typeof callback !== "function") { + return Promise.reject("The second parameter must be a callback function. Method: ".concat(typeof methodDefinition === "string" ? methodDefinition : methodDefinition.name)); + } + var wrappedCallback = function (context, resultCallback) { return __awaiter(_this, void 0, void 0, function () { + var resultCalled_1, success, error, methodResult; + return __generator(this, function (_a) { + try { + resultCalled_1 = false; + success = function (result) { + if (!resultCalled_1) { + resultCallback(undefined, result); + } + resultCalled_1 = true; + }; + error = function (e) { + if (!resultCalled_1) { + if (!e) { + e = ""; + } + resultCallback(e, e); + } + resultCalled_1 = true; + }; + methodResult = callback(context.args, context.instance, success, error); + if (methodResult && typeof methodResult.then === "function") { + methodResult + .then(success) + .catch(error); + } + } + catch (e) { + resultCallback(e, undefined); + } + return [2]; + }); + }); }; + wrappedCallback.userCallbackAsync = callback; + return this.registerCore(methodDefinition, wrappedCallback); + }; + Server.prototype.unregister = function (methodFilter, forStream) { + if (forStream === void 0) { forStream = false; } + return __awaiter(this, void 0, void 0, function () { + var methodDefinition, methodToBeRemoved; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (methodFilter === undefined) { + return [2, Promise.reject("Please, provide either a unique string for a name or an object containing a “name” property.")]; + } + if (!(typeof methodFilter === "function")) return [3, 2]; + return [4, this.unregisterWithPredicate(methodFilter, forStream)]; + case 1: + _a.sent(); + return [2]; + case 2: + if (typeof methodFilter === "string") { + methodDefinition = { name: methodFilter }; + } + else { + methodDefinition = methodFilter; + } + if (methodDefinition.name === undefined) { + return [2, Promise.reject("Method name is required. Cannot find a method if the method name is undefined!")]; + } + methodToBeRemoved = this.serverRepository.getList().find(function (serverMethod) { + return serverMethod.definition.name === methodDefinition.name + && (serverMethod.definition.supportsStreaming || false) === forStream; + }); + if (!methodToBeRemoved) { + return [2, Promise.reject("Method with a name \"".concat(methodDefinition.name, "\" does not exist or is not registered by your application!"))]; + } + return [4, this.removeMethodsOrStreams([methodToBeRemoved])]; + case 3: + _a.sent(); + return [2]; + } + }); + }); + }; + Server.prototype.unregisterWithPredicate = function (filterPredicate, forStream) { + return __awaiter(this, void 0, void 0, function () { + var methodsOrStreamsToRemove; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + methodsOrStreamsToRemove = this.serverRepository.getList() + .filter(function (sm) { return filterPredicate(sm.definition); }) + .filter(function (serverMethod) { + return (serverMethod.definition.supportsStreaming || false) === forStream; + }); + if (!methodsOrStreamsToRemove || methodsOrStreamsToRemove.length === 0) { + return [2, Promise.reject("Could not find a ".concat(forStream ? "stream" : "method", " matching the specified condition!"))]; + } + return [4, this.removeMethodsOrStreams(methodsOrStreamsToRemove)]; + case 1: + _a.sent(); + return [2]; + } + }); + }); + }; + Server.prototype.removeMethodsOrStreams = function (methodsToRemove) { + var _this = this; + var methodUnregPromises = []; + methodsToRemove.forEach(function (method) { + var promise = _this.protocol.server.unregister(method) + .then(function () { + if (method.repoId) { + _this.serverRepository.remove(method.repoId); + } + }); + methodUnregPromises.push(promise); + _this.addAsCurrentlyUnregistering(method.definition.name, promise); + }); + return Promise.all(methodUnregPromises); + }; + Server.prototype.addAsCurrentlyUnregistering = function (methodName, promise) { + return __awaiter(this, void 0, void 0, function () { + var timeout; + var _this = this; + return __generator(this, function (_a) { + timeout = new Promise(function (resolve) { return setTimeout(resolve, 5000); }); + this.currentlyUnregistering[methodName] = Promise.race([promise, timeout]).then(function () { + delete _this.currentlyUnregistering[methodName]; + }); + return [2]; + }); + }); + }; + Server.prototype.registerCore = function (method, theFunction) { + return __awaiter(this, void 0, void 0, function () { + var methodDefinition, unregisterInProgress, nameAlreadyExists, repoMethod; + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (typeof method === "string") { + methodDefinition = { name: "" + method }; + } + else { + methodDefinition = __assign({}, method); + } + if (!methodDefinition.name) { + return [2, Promise.reject("Please, provide a (unique) string value for the \u201Cname\u201D property in the \u201CmethodDefinition\u201D object: ".concat(JSON.stringify(method)))]; + } + unregisterInProgress = this.currentlyUnregistering[methodDefinition.name]; + if (!(typeof unregisterInProgress !== "undefined")) return [3, 2]; + return [4, unregisterInProgress]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + nameAlreadyExists = this.serverRepository.getList() + .some(function (serverMethod) { return serverMethod.definition.name === methodDefinition.name; }); + if (nameAlreadyExists) { + return [2, Promise.reject("A method with the name \"".concat(methodDefinition.name, "\" already exists! Please, provide a unique name for the method."))]; + } + if (methodDefinition.supportsStreaming) { + return [2, Promise.reject("When you create methods with \u201Cglue.interop.register()\u201D or \u201Cglue.interop.registerAsync()\u201D the property \u201CsupportsStreaming\u201D cannot be \u201Ctrue\u201D. If you want \u201C".concat(methodDefinition.name, "\u201D to be a stream, please use the \u201Cglue.interop.createStream()\u201D method."))]; + } + repoMethod = this.serverRepository.add({ + definition: methodDefinition, + theFunction: theFunction, + protocolState: {}, + }); + return [2, this.protocol.server.register(repoMethod) + .catch(function (err) { + if (repoMethod === null || repoMethod === void 0 ? void 0 : repoMethod.repoId) { + _this.serverRepository.remove(repoMethod.repoId); + } + throw err; + })]; + } + }); + }); + }; + Server.prototype.onMethodInvoked = function (methodToExecute, invocationId, invocationArgs) { + var _this = this; + if (!methodToExecute || !methodToExecute.theFunction) { + return; + } + methodToExecute.theFunction(invocationArgs, function (err, result) { + if (err !== undefined && err !== null) { + if (err.message && typeof err.message === "string") { + err = err.message; + } + else if (typeof err !== "string") { + try { + err = JSON.stringify(err); + } + catch (unStrException) { + err = "un-stringifyable error in onMethodInvoked! Top level prop names: ".concat(Object.keys(err)); + } + } + } + if (!result) { + result = {}; + } + else if (typeof result !== "object" || Array.isArray(result)) { + result = { _value: result }; + } + _this.protocol.server.methodInvocationResult(methodToExecute, invocationId, err, result); + }); + }; + return Server; +}()); + +var InstanceWrapper = (function () { + function InstanceWrapper(API, instance, connection) { + var _this = this; + this.wrapped = {}; + this.wrapped.getMethods = function () { + return API.methodsForInstance(this); + }; + this.wrapped.getStreams = function () { + return API.methodsForInstance(this).filter(function (m) { return m.supportsStreaming; }); + }; + if (instance) { + this.refreshWrappedObject(instance); + } + if (connection) { + connection.loggedIn(function () { + _this.refresh(connection); + }); + this.refresh(connection); + } + } + InstanceWrapper.prototype.unwrap = function () { + return this.wrapped; + }; + InstanceWrapper.prototype.refresh = function (connection) { + if (!connection) { + return; + } + var resolvedIdentity = connection === null || connection === void 0 ? void 0 : connection.resolvedIdentity; + var instance = Object.assign({}, resolvedIdentity !== null && resolvedIdentity !== void 0 ? resolvedIdentity : {}, { peerId: connection === null || connection === void 0 ? void 0 : connection.peerId }); + this.refreshWrappedObject(instance); + }; + InstanceWrapper.prototype.refreshWrappedObject = function (resolvedIdentity) { + var _this = this; + var _a, _b, _c, _d; + Object.keys(resolvedIdentity).forEach(function (key) { + _this.wrapped[key] = resolvedIdentity[key]; + }); + this.wrapped.user = resolvedIdentity.user; + this.wrapped.instance = resolvedIdentity.instance; + this.wrapped.application = (_a = resolvedIdentity.application) !== null && _a !== void 0 ? _a : shortid(); + this.wrapped.applicationName = resolvedIdentity.applicationName; + this.wrapped.pid = (_c = (_b = resolvedIdentity.pid) !== null && _b !== void 0 ? _b : resolvedIdentity.process) !== null && _c !== void 0 ? _c : Math.floor(Math.random() * 10000000000); + this.wrapped.machine = resolvedIdentity.machine; + this.wrapped.environment = resolvedIdentity.environment; + this.wrapped.region = resolvedIdentity.region; + this.wrapped.windowId = resolvedIdentity.windowId; + this.wrapped.isLocal = (_d = resolvedIdentity.isLocal) !== null && _d !== void 0 ? _d : true; + this.wrapped.api = resolvedIdentity.api; + this.wrapped.service = resolvedIdentity.service; + this.wrapped.peerId = resolvedIdentity.peerId; + }; + return InstanceWrapper; +}()); + +var hideMethodSystemFlags = function (method) { + return __assign(__assign({}, method), { flags: method.flags.metadata || {} }); +}; +var ClientRepository = (function () { + function ClientRepository(logger, API) { + this.logger = logger; + this.API = API; + this.servers = {}; + this.methodsCount = {}; + this.callbacks = lib$1(); + var peerId = this.API.instance.peerId; + this.myServer = { + id: peerId, + methods: {}, + instance: this.API.instance, + wrapper: this.API.unwrappedInstance, + }; + this.servers[peerId] = this.myServer; + } + ClientRepository.prototype.addServer = function (info, serverId) { + this.logger.debug("adding server ".concat(serverId)); + var current = this.servers[serverId]; + if (current) { + return current.id; + } + var wrapper = new InstanceWrapper(this.API, info); + var serverEntry = { + id: serverId, + methods: {}, + instance: wrapper.unwrap(), + wrapper: wrapper, + }; + this.servers[serverId] = serverEntry; + this.callbacks.execute("onServerAdded", serverEntry.instance); + return serverId; + }; + ClientRepository.prototype.removeServerById = function (id, reason) { + var _this = this; + var server = this.servers[id]; + if (!server) { + this.logger.warn("not aware of server ".concat(id, ", my state ").concat(JSON.stringify(Object.keys(this.servers)))); + return; + } + else { + this.logger.debug("removing server ".concat(id)); + } + Object.keys(server.methods).forEach(function (methodId) { + _this.removeServerMethod(id, methodId); + }); + delete this.servers[id]; + this.callbacks.execute("onServerRemoved", server.instance, reason); + }; + ClientRepository.prototype.addServerMethod = function (serverId, method) { + var _a; + var server = this.servers[serverId]; + if (!server) { + throw new Error("server does not exists"); + } + if (server.methods[method.id]) { + return; + } + var identifier = this.createMethodIdentifier(method); + var that = this; + var methodDefinition = { + identifier: identifier, + gatewayId: method.id, + name: method.name, + displayName: method.display_name, + description: method.description, + version: method.version, + objectTypes: method.object_types || [], + accepts: method.input_signature, + returns: method.result_signature, + supportsStreaming: typeof method.flags !== "undefined" ? method.flags.streaming : false, + flags: (_a = method.flags) !== null && _a !== void 0 ? _a : {}, + getServers: function () { + return that.getServersByMethod(identifier); + } + }; + methodDefinition.object_types = methodDefinition.objectTypes; + methodDefinition.display_name = methodDefinition.displayName; + methodDefinition.version = methodDefinition.version; + server.methods[method.id] = methodDefinition; + var clientMethodDefinition = hideMethodSystemFlags(methodDefinition); + if (!this.methodsCount[identifier]) { + this.methodsCount[identifier] = 0; + this.callbacks.execute("onMethodAdded", clientMethodDefinition); + } + this.methodsCount[identifier] = this.methodsCount[identifier] + 1; + this.callbacks.execute("onServerMethodAdded", server.instance, clientMethodDefinition); + return methodDefinition; + }; + ClientRepository.prototype.removeServerMethod = function (serverId, methodId) { + var server = this.servers[serverId]; + if (!server) { + throw new Error("server does not exists"); + } + var method = server.methods[methodId]; + delete server.methods[methodId]; + var clientMethodDefinition = hideMethodSystemFlags(method); + this.methodsCount[method.identifier] = this.methodsCount[method.identifier] - 1; + if (this.methodsCount[method.identifier] === 0) { + this.callbacks.execute("onMethodRemoved", clientMethodDefinition); + } + this.callbacks.execute("onServerMethodRemoved", server.instance, clientMethodDefinition); + }; + ClientRepository.prototype.getMethods = function () { + return this.extractMethodsFromServers(Object.values(this.servers)).map(hideMethodSystemFlags); + }; + ClientRepository.prototype.getServers = function () { + return Object.values(this.servers).map(this.hideServerMethodSystemFlags); + }; + ClientRepository.prototype.onServerAdded = function (callback) { + var unsubscribeFunc = this.callbacks.add("onServerAdded", callback); + var serversWithMethodsToReplay = this.getServers().map(function (s) { return s.instance; }); + return this.returnUnsubWithDelayedReplay(unsubscribeFunc, serversWithMethodsToReplay, callback); + }; + ClientRepository.prototype.onMethodAdded = function (callback) { + var unsubscribeFunc = this.callbacks.add("onMethodAdded", callback); + var methodsToReplay = this.getMethods(); + return this.returnUnsubWithDelayedReplay(unsubscribeFunc, methodsToReplay, callback); + }; + ClientRepository.prototype.onServerMethodAdded = function (callback) { + var unsubscribeFunc = this.callbacks.add("onServerMethodAdded", callback); + var unsubCalled = false; + var servers = this.getServers(); + setTimeout(function () { + servers.forEach(function (server) { + var methods = server.methods; + Object.keys(methods).forEach(function (methodId) { + if (!unsubCalled) { + callback(server.instance, methods[methodId]); + } + }); + }); + }, 0); + return function () { + unsubCalled = true; + unsubscribeFunc(); + }; + }; + ClientRepository.prototype.onMethodRemoved = function (callback) { + var unsubscribeFunc = this.callbacks.add("onMethodRemoved", callback); + return unsubscribeFunc; + }; + ClientRepository.prototype.onServerRemoved = function (callback) { + var unsubscribeFunc = this.callbacks.add("onServerRemoved", callback); + return unsubscribeFunc; + }; + ClientRepository.prototype.onServerMethodRemoved = function (callback) { + var unsubscribeFunc = this.callbacks.add("onServerMethodRemoved", callback); + return unsubscribeFunc; + }; + ClientRepository.prototype.getServerById = function (id) { + return this.hideServerMethodSystemFlags(this.servers[id]); + }; + ClientRepository.prototype.reset = function () { + var _a; + var _this = this; + Object.keys(this.servers).forEach(function (key) { + _this.removeServerById(key, "reset"); + }); + this.servers = (_a = {}, + _a[this.myServer.id] = this.myServer, + _a); + this.methodsCount = {}; + }; + ClientRepository.prototype.createMethodIdentifier = function (methodInfo) { + var _a, _b; + var accepts = (_a = methodInfo.input_signature) !== null && _a !== void 0 ? _a : ""; + var returns = (_b = methodInfo.result_signature) !== null && _b !== void 0 ? _b : ""; + return (methodInfo.name + accepts + returns).toLowerCase(); + }; + ClientRepository.prototype.getServersByMethod = function (identifier) { + var allServers = []; + Object.values(this.servers).forEach(function (server) { + Object.values(server.methods).forEach(function (method) { + if (method.identifier === identifier) { + allServers.push(server.instance); + } + }); + }); + return allServers; + }; + ClientRepository.prototype.returnUnsubWithDelayedReplay = function (unsubscribeFunc, collectionToReplay, callback) { + var unsubCalled = false; + setTimeout(function () { + collectionToReplay.forEach(function (item) { + if (!unsubCalled) { + callback(item); + } + }); + }, 0); + return function () { + unsubCalled = true; + unsubscribeFunc(); + }; + }; + ClientRepository.prototype.hideServerMethodSystemFlags = function (server) { + var clientMethods = {}; + Object.entries(server.methods).forEach(function (_a) { + var name = _a[0], method = _a[1]; + clientMethods[name] = hideMethodSystemFlags(method); + }); + return __assign(__assign({}, server), { methods: clientMethods }); + }; + ClientRepository.prototype.extractMethodsFromServers = function (servers) { + var methods = Object.values(servers).reduce(function (clientMethods, server) { + return __spreadArray(__spreadArray([], clientMethods, true), Object.values(server.methods), true); + }, []); + return methods; + }; + return ClientRepository; +}()); + +var ServerRepository = (function () { + function ServerRepository() { + this.nextId = 0; + this.methods = []; + } + ServerRepository.prototype.add = function (method) { + method.repoId = String(this.nextId); + this.nextId += 1; + this.methods.push(method); + return method; + }; + ServerRepository.prototype.remove = function (repoId) { + if (typeof repoId !== "string") { + return new TypeError("Expecting a string"); + } + this.methods = this.methods.filter(function (m) { + return m.repoId !== repoId; + }); + }; + ServerRepository.prototype.getById = function (id) { + if (typeof id !== "string") { + return undefined; + } + return this.methods.find(function (m) { + return m.repoId === id; + }); + }; + ServerRepository.prototype.getList = function () { + return this.methods.map(function (m) { return m; }); + }; + ServerRepository.prototype.length = function () { + return this.methods.length; + }; + ServerRepository.prototype.reset = function () { + this.methods = []; + }; + return ServerRepository; +}()); + +var SUBSCRIPTION_REQUEST = "onSubscriptionRequest"; +var SUBSCRIPTION_ADDED = "onSubscriptionAdded"; +var SUBSCRIPTION_REMOVED = "onSubscriptionRemoved"; +var ServerStreaming = (function () { + function ServerStreaming(session, repository, serverRepository) { + var _this = this; + this.session = session; + this.repository = repository; + this.serverRepository = serverRepository; + this.ERR_URI_SUBSCRIPTION_FAILED = "com.tick42.agm.errors.subscription.failure"; + this.callbacks = lib$1(); + this.nextStreamId = 0; + session.on("add-interest", function (msg) { + _this.handleAddInterest(msg); + }); + session.on("remove-interest", function (msg) { + _this.handleRemoveInterest(msg); + }); + } + ServerStreaming.prototype.acceptRequestOnBranch = function (requestContext, streamingMethod, branch) { + if (typeof branch !== "string") { + branch = ""; + } + if (typeof streamingMethod.protocolState.subscriptionsMap !== "object") { + throw new TypeError("The streaming method is missing its subscriptions."); + } + if (!Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) { + throw new TypeError("The streaming method is missing its branches."); + } + var streamId = this.getStreamId(streamingMethod, branch); + var key = requestContext.msg.subscription_id; + var subscription = { + id: key, + arguments: requestContext.arguments, + instance: requestContext.instance, + branchKey: branch, + streamId: streamId, + subscribeMsg: requestContext.msg, + }; + streamingMethod.protocolState.subscriptionsMap[key] = subscription; + this.session.sendFireAndForget({ + type: "accepted", + subscription_id: key, + stream_id: streamId, + }); + this.callbacks.execute(SUBSCRIPTION_ADDED, subscription, streamingMethod); + }; + ServerStreaming.prototype.rejectRequest = function (requestContext, streamingMethod, reason) { + if (typeof reason !== "string") { + reason = ""; + } + this.sendSubscriptionFailed("Subscription rejected by user. " + reason, requestContext.msg.subscription_id); + }; + ServerStreaming.prototype.pushData = function (streamingMethod, data, branches) { + var _this = this; + if (typeof streamingMethod !== "object" || !Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) { + return; + } + if (typeof data !== "object") { + throw new Error("Invalid arguments. Data must be an object."); + } + if (typeof branches === "string") { + branches = [branches]; + } + else if (!Array.isArray(branches) || branches.length <= 0) { + branches = []; + } + var streamIdList = streamingMethod.protocolState.branchKeyToStreamIdMap + .filter(function (br) { + if (!branches || branches.length === 0) { + return true; + } + return branches.indexOf(br.key) >= 0; + }).map(function (br) { + return br.streamId; + }); + streamIdList.forEach(function (streamId) { + var publishMessage = { + type: "publish", + stream_id: streamId, + data: data, + }; + _this.session.sendFireAndForget(publishMessage); + }); + }; + ServerStreaming.prototype.pushDataToSingle = function (method, subscription, data) { + if (typeof data !== "object") { + throw new Error("Invalid arguments. Data must be an object."); + } + var postMessage = { + type: "post", + subscription_id: subscription.id, + data: data, + }; + this.session.sendFireAndForget(postMessage); + }; + ServerStreaming.prototype.closeSingleSubscription = function (streamingMethod, subscription) { + if (streamingMethod.protocolState.subscriptionsMap) { + delete streamingMethod.protocolState.subscriptionsMap[subscription.id]; + } + var dropSubscriptionMessage = { + type: "drop-subscription", + subscription_id: subscription.id, + reason: "Server dropping a single subscription", + }; + this.session.sendFireAndForget(dropSubscriptionMessage); + subscription.instance; + this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod); + }; + ServerStreaming.prototype.closeMultipleSubscriptions = function (streamingMethod, branchKey) { + var _this = this; + if (typeof streamingMethod !== "object" || typeof streamingMethod.protocolState.subscriptionsMap !== "object") { + return; + } + if (!streamingMethod.protocolState.subscriptionsMap) { + return; + } + var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap; + var subscriptionsToClose = Object.keys(subscriptionsMap) + .map(function (key) { + return subscriptionsMap[key]; + }); + if (typeof branchKey === "string") { + subscriptionsToClose = subscriptionsToClose.filter(function (sub) { + return sub.branchKey === branchKey; + }); + } + subscriptionsToClose.forEach(function (subscription) { + delete subscriptionsMap[subscription.id]; + var drop = { + type: "drop-subscription", + subscription_id: subscription.id, + reason: "Server dropping all subscriptions on stream_id: " + subscription.streamId, + }; + _this.session.sendFireAndForget(drop); + }); + }; + ServerStreaming.prototype.getSubscriptionList = function (streamingMethod, branchKey) { + if (typeof streamingMethod !== "object") { + return []; + } + var subscriptions = []; + if (!streamingMethod.protocolState.subscriptionsMap) { + return []; + } + var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap; + var allSubscriptions = Object.keys(subscriptionsMap) + .map(function (key) { + return subscriptionsMap[key]; + }); + if (typeof branchKey !== "string") { + subscriptions = allSubscriptions; + } + else { + subscriptions = allSubscriptions.filter(function (sub) { + return sub.branchKey === branchKey; + }); + } + return subscriptions; + }; + ServerStreaming.prototype.getBranchList = function (streamingMethod) { + if (typeof streamingMethod !== "object") { + return []; + } + if (!streamingMethod.protocolState.subscriptionsMap) { + return []; + } + var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap; + var allSubscriptions = Object.keys(subscriptionsMap) + .map(function (key) { + return subscriptionsMap[key]; + }); + var result = []; + allSubscriptions.forEach(function (sub) { + var branch = ""; + if (typeof sub === "object" && typeof sub.branchKey === "string") { + branch = sub.branchKey; + } + if (result.indexOf(branch) === -1) { + result.push(branch); + } + }); + return result; + }; + ServerStreaming.prototype.onSubAdded = function (callback) { + this.onSubscriptionLifetimeEvent(SUBSCRIPTION_ADDED, callback); + }; + ServerStreaming.prototype.onSubRequest = function (callback) { + this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REQUEST, callback); + }; + ServerStreaming.prototype.onSubRemoved = function (callback) { + this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REMOVED, callback); + }; + ServerStreaming.prototype.handleRemoveInterest = function (msg) { + var streamingMethod = this.serverRepository.getById(msg.method_id); + if (typeof msg.subscription_id !== "string" || + typeof streamingMethod !== "object") { + return; + } + if (!streamingMethod.protocolState.subscriptionsMap) { + return; + } + if (typeof streamingMethod.protocolState.subscriptionsMap[msg.subscription_id] !== "object") { + return; + } + var subscription = streamingMethod.protocolState.subscriptionsMap[msg.subscription_id]; + delete streamingMethod.protocolState.subscriptionsMap[msg.subscription_id]; + this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod); + }; + ServerStreaming.prototype.onSubscriptionLifetimeEvent = function (eventName, handlerFunc) { + this.callbacks.add(eventName, handlerFunc); + }; + ServerStreaming.prototype.getNextStreamId = function () { + return this.nextStreamId++ + ""; + }; + ServerStreaming.prototype.handleAddInterest = function (msg) { + var caller = this.repository.getServerById(msg.caller_id); + var instance = caller.instance; + var requestContext = { + msg: msg, + arguments: msg.arguments_kv || {}, + instance: instance, + }; + var streamingMethod = this.serverRepository.getById(msg.method_id); + if (streamingMethod === undefined) { + var errorMsg = "No method with id " + msg.method_id + " on this server."; + this.sendSubscriptionFailed(errorMsg, msg.subscription_id); + return; + } + if (streamingMethod.protocolState.subscriptionsMap && + streamingMethod.protocolState.subscriptionsMap[msg.subscription_id]) { + this.sendSubscriptionFailed("A subscription with id " + msg.subscription_id + " already exists.", msg.subscription_id); + return; + } + this.callbacks.execute(SUBSCRIPTION_REQUEST, requestContext, streamingMethod); + }; + ServerStreaming.prototype.sendSubscriptionFailed = function (reason, subscriptionId) { + var errorMessage = { + type: "error", + reason_uri: this.ERR_URI_SUBSCRIPTION_FAILED, + reason: reason, + request_id: subscriptionId, + }; + this.session.sendFireAndForget(errorMessage); + }; + ServerStreaming.prototype.getStreamId = function (streamingMethod, branchKey) { + if (typeof branchKey !== "string") { + branchKey = ""; + } + if (!streamingMethod.protocolState.branchKeyToStreamIdMap) { + throw new Error("streaming ".concat(streamingMethod.definition.name, " method without protocol state")); + } + var needleBranch = streamingMethod.protocolState.branchKeyToStreamIdMap.filter(function (branch) { + return branch.key === branchKey; + })[0]; + var streamId = (needleBranch ? needleBranch.streamId : undefined); + if (typeof streamId !== "string" || streamId === "") { + streamId = this.getNextStreamId(); + streamingMethod.protocolState.branchKeyToStreamIdMap.push({ key: branchKey, streamId: streamId }); + } + return streamId; + }; + return ServerStreaming; +}()); + +var ServerProtocol = (function () { + function ServerProtocol(session, clientRepository, serverRepository, logger) { + var _this = this; + this.session = session; + this.clientRepository = clientRepository; + this.serverRepository = serverRepository; + this.logger = logger; + this.callbacks = lib$1(); + this.streaming = new ServerStreaming(session, clientRepository, serverRepository); + this.session.on("invoke", function (msg) { return _this.handleInvokeMessage(msg); }); + } + ServerProtocol.prototype.createStream = function (repoMethod) { + repoMethod.protocolState.subscriptionsMap = {}; + repoMethod.protocolState.branchKeyToStreamIdMap = []; + return this.register(repoMethod, true); + }; + ServerProtocol.prototype.register = function (repoMethod, isStreaming) { + var _this = this; + var _a; + var methodDef = repoMethod.definition; + var flags = Object.assign({}, { metadata: (_a = methodDef.flags) !== null && _a !== void 0 ? _a : {} }, { streaming: isStreaming || false }); + var registerMsg = { + type: "register", + methods: [{ + id: repoMethod.repoId, + name: methodDef.name, + display_name: methodDef.displayName, + description: methodDef.description, + version: methodDef.version, + flags: flags, + object_types: methodDef.objectTypes || methodDef.object_types, + input_signature: methodDef.accepts, + result_signature: methodDef.returns, + restrictions: undefined, + }], + }; + return this.session.send(registerMsg, { methodId: repoMethod.repoId }) + .then(function () { + _this.logger.debug("registered method " + repoMethod.definition.name + " with id " + repoMethod.repoId); + }) + .catch(function (msg) { + _this.logger.warn("failed to register method ".concat(repoMethod.definition.name, " with id ").concat(repoMethod.repoId, " - ").concat(JSON.stringify(msg))); + throw msg; + }); + }; + ServerProtocol.prototype.onInvoked = function (callback) { + this.callbacks.add("onInvoked", callback); + }; + ServerProtocol.prototype.methodInvocationResult = function (method, invocationId, err, result) { + var msg; + if (err || err === "") { + msg = { + type: "error", + request_id: invocationId, + reason_uri: "agm.errors.client_error", + reason: err, + context: result, + peer_id: undefined, + }; + } + else { + msg = { + type: "yield", + invocation_id: invocationId, + peer_id: this.session.peerId, + result: result, + request_id: undefined, + }; + } + this.session.sendFireAndForget(msg); + }; + ServerProtocol.prototype.unregister = function (method) { + return __awaiter(this, void 0, void 0, function () { + var msg; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + msg = { + type: "unregister", + methods: [method.repoId], + }; + return [4, this.session.send(msg)]; + case 1: + _a.sent(); + return [2]; + } + }); + }); + }; + ServerProtocol.prototype.getBranchList = function (method) { + return this.streaming.getBranchList(method); + }; + ServerProtocol.prototype.getSubscriptionList = function (method, branchKey) { + return this.streaming.getSubscriptionList(method, branchKey); + }; + ServerProtocol.prototype.closeAllSubscriptions = function (method, branchKey) { + this.streaming.closeMultipleSubscriptions(method, branchKey); + }; + ServerProtocol.prototype.pushData = function (method, data, branches) { + this.streaming.pushData(method, data, branches); + }; + ServerProtocol.prototype.pushDataToSingle = function (method, subscription, data) { + this.streaming.pushDataToSingle(method, subscription, data); + }; + ServerProtocol.prototype.closeSingleSubscription = function (method, subscription) { + this.streaming.closeSingleSubscription(method, subscription); + }; + ServerProtocol.prototype.acceptRequestOnBranch = function (requestContext, method, branch) { + this.streaming.acceptRequestOnBranch(requestContext, method, branch); + }; + ServerProtocol.prototype.rejectRequest = function (requestContext, method, reason) { + this.streaming.rejectRequest(requestContext, method, reason); + }; + ServerProtocol.prototype.onSubRequest = function (callback) { + this.streaming.onSubRequest(callback); + }; + ServerProtocol.prototype.onSubAdded = function (callback) { + this.streaming.onSubAdded(callback); + }; + ServerProtocol.prototype.onSubRemoved = function (callback) { + this.streaming.onSubRemoved(callback); + }; + ServerProtocol.prototype.handleInvokeMessage = function (msg) { + var invocationId = msg.invocation_id; + var callerId = msg.caller_id; + var methodId = msg.method_id; + var args = msg.arguments_kv; + var methodList = this.serverRepository.getList(); + var method = methodList.filter(function (m) { + return m.repoId === methodId; + })[0]; + if (method === undefined) { + return; + } + var client = this.clientRepository.getServerById(callerId).instance; + var invocationArgs = { args: args, instance: client }; + this.callbacks.execute("onInvoked", method, invocationId, invocationArgs); + }; + return ServerProtocol; +}()); + +var UserSubscription = (function () { + function UserSubscription(repository, subscriptionData) { + this.repository = repository; + this.subscriptionData = subscriptionData; + } + Object.defineProperty(UserSubscription.prototype, "requestArguments", { + get: function () { + return this.subscriptionData.params.arguments || {}; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(UserSubscription.prototype, "servers", { + get: function () { + var _this = this; + return this.subscriptionData.trackedServers + .filter(function (pair) { return pair.subscriptionId; }) + .map(function (pair) { return _this.repository.getServerById(pair.serverId).instance; }); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(UserSubscription.prototype, "serverInstance", { + get: function () { + return this.servers[0]; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(UserSubscription.prototype, "stream", { + get: function () { + return this.subscriptionData.method; + }, + enumerable: false, + configurable: true + }); + UserSubscription.prototype.onData = function (dataCallback) { + if (typeof dataCallback !== "function") { + throw new TypeError("The data callback must be a function."); + } + this.subscriptionData.handlers.onData.push(dataCallback); + if (this.subscriptionData.handlers.onData.length === 1 && this.subscriptionData.queued.data.length > 0) { + this.subscriptionData.queued.data.forEach(function (dataItem) { + dataCallback(dataItem); + }); + } + }; + UserSubscription.prototype.onClosed = function (closedCallback) { + if (typeof closedCallback !== "function") { + throw new TypeError("The callback must be a function."); + } + this.subscriptionData.handlers.onClosed.push(closedCallback); + }; + UserSubscription.prototype.onFailed = function (callback) { + }; + UserSubscription.prototype.onConnected = function (callback) { + if (typeof callback !== "function") { + throw new TypeError("The callback must be a function."); + } + this.subscriptionData.handlers.onConnected.push(callback); + }; + UserSubscription.prototype.close = function () { + this.subscriptionData.close(); + }; + UserSubscription.prototype.setNewSubscription = function (newSub) { + this.subscriptionData = newSub; + }; + return UserSubscription; +}()); + +var TimedCache = (function () { + function TimedCache(config) { + this.config = config; + this.cache = []; + this.timeoutIds = []; + } + TimedCache.prototype.add = function (element) { + var _this = this; + var id = shortid(); + this.cache.push({ id: id, element: element }); + var timeoutId = setTimeout(function () { + var elementIdx = _this.cache.findIndex(function (entry) { return entry.id === id; }); + if (elementIdx < 0) { + return; + } + _this.cache.splice(elementIdx, 1); + }, this.config.ELEMENT_TTL_MS); + this.timeoutIds.push(timeoutId); + }; + TimedCache.prototype.flush = function () { + var elements = this.cache.map(function (entry) { return entry.element; }); + this.timeoutIds.forEach(function (id) { return clearInterval(id); }); + this.cache = []; + this.timeoutIds = []; + return elements; + }; + return TimedCache; +}()); + +var STATUS_AWAITING_ACCEPT = "awaitingAccept"; +var STATUS_SUBSCRIBED = "subscribed"; +var ERR_MSG_SUB_FAILED = "Subscription failed."; +var ERR_MSG_SUB_REJECTED = "Subscription rejected."; +var ON_CLOSE_MSG_SERVER_INIT = "ServerInitiated"; +var ON_CLOSE_MSG_CLIENT_INIT = "ClientInitiated"; +var ClientStreaming = (function () { + function ClientStreaming(session, repository, logger) { + var _this = this; + this.session = session; + this.repository = repository; + this.logger = logger; + this.subscriptionsList = {}; + this.timedCache = new TimedCache({ ELEMENT_TTL_MS: 10000 }); + this.subscriptionIdToLocalKeyMap = {}; + this.nextSubLocalKey = 0; + this.handleErrorSubscribing = function (errorResponse) { + var tag = errorResponse._tag; + var subLocalKey = tag.subLocalKey; + var pendingSub = _this.subscriptionsList[subLocalKey]; + if (typeof pendingSub !== "object") { + return; + } + pendingSub.trackedServers = pendingSub.trackedServers.filter(function (server) { + return server.serverId !== tag.serverId; + }); + if (pendingSub.trackedServers.length <= 0) { + clearTimeout(pendingSub.timeoutId); + if (pendingSub.status === STATUS_AWAITING_ACCEPT) { + var reason = (typeof errorResponse.reason === "string" && errorResponse.reason !== "") ? + ' Publisher said "' + errorResponse.reason + '".' : + " No reason given."; + var callArgs = typeof pendingSub.params.arguments === "object" ? + JSON.stringify(pendingSub.params.arguments) : + "{}"; + pendingSub.error({ + message: ERR_MSG_SUB_REJECTED + reason + " Called with:" + callArgs, + called_with: pendingSub.params.arguments, + method: pendingSub.method, + }); + } + else if (pendingSub.status === STATUS_SUBSCRIBED) { + _this.callOnClosedHandlers(pendingSub); + } + delete _this.subscriptionsList[subLocalKey]; + } + }; + this.handleSubscribed = function (msg) { + var subLocalKey = msg._tag.subLocalKey; + var pendingSub = _this.subscriptionsList[subLocalKey]; + if (typeof pendingSub !== "object") { + return; + } + var serverId = msg._tag.serverId; + var acceptingServer = pendingSub.trackedServers + .filter(function (server) { + return server.serverId === serverId; + })[0]; + if (typeof acceptingServer !== "object") { + return; + } + acceptingServer.subscriptionId = msg.subscription_id; + _this.subscriptionIdToLocalKeyMap[msg.subscription_id] = subLocalKey; + var isFirstResponse = (pendingSub.status === STATUS_AWAITING_ACCEPT); + pendingSub.status = STATUS_SUBSCRIBED; + if (isFirstResponse) { + var reconnect = false; + var sub = pendingSub.subscription; + if (sub) { + sub.setNewSubscription(pendingSub); + pendingSub.success(sub); + reconnect = true; + } + else { + sub = new UserSubscription(_this.repository, pendingSub); + pendingSub.subscription = sub; + pendingSub.success(sub); + } + for (var _i = 0, _a = pendingSub.handlers.onConnected; _i < _a.length; _i++) { + var handler = _a[_i]; + try { + handler(sub.serverInstance, reconnect); + } + catch (e) { + } + } + } + }; + this.handleEventData = function (msg) { + var subLocalKey = _this.subscriptionIdToLocalKeyMap[msg.subscription_id]; + if (typeof subLocalKey === "undefined") { + return; + } + var subscription = _this.subscriptionsList[subLocalKey]; + if (typeof subscription !== "object") { + return; + } + var trackedServersFound = subscription.trackedServers.filter(function (server) { + return server.subscriptionId === msg.subscription_id; + }); + if (trackedServersFound.length !== 1) { + return; + } + var isPrivateData = msg.oob; + var sendingServerId = trackedServersFound[0].serverId; + var receivedStreamData = function () { + return { + data: msg.data, + server: _this.repository.getServerById(sendingServerId).instance, + requestArguments: subscription.params.arguments, + message: undefined, + private: isPrivateData, + }; + }; + var onDataHandlers = subscription.handlers.onData; + var queuedData = subscription.queued.data; + if (onDataHandlers.length > 0) { + onDataHandlers.forEach(function (callback) { + if (typeof callback === "function") { + callback(receivedStreamData()); + } + }); + } + else { + queuedData.push(receivedStreamData()); + } + }; + this.handleSubscriptionCancelled = function (msg) { + var subLocalKey = _this.subscriptionIdToLocalKeyMap[msg.subscription_id]; + if (typeof subLocalKey === "undefined") { + return; + } + var subscription = _this.subscriptionsList[subLocalKey]; + if (typeof subscription !== "object") { + return; + } + var expectedNewLength = subscription.trackedServers.length - 1; + subscription.trackedServers = subscription.trackedServers.filter(function (server) { + if (server.subscriptionId === msg.subscription_id) { + subscription.queued.closers.push(server.serverId); + return false; + } + else { + return true; + } + }); + if (subscription.trackedServers.length !== expectedNewLength) { + return; + } + if (subscription.trackedServers.length <= 0) { + _this.timedCache.add(subscription); + clearTimeout(subscription.timeoutId); + _this.callOnClosedHandlers(subscription); + delete _this.subscriptionsList[subLocalKey]; + } + delete _this.subscriptionIdToLocalKeyMap[msg.subscription_id]; + }; + session.on("subscribed", this.handleSubscribed); + session.on("event", this.handleEventData); + session.on("subscription-cancelled", this.handleSubscriptionCancelled); + } + ClientStreaming.prototype.subscribe = function (streamingMethod, params, targetServers, success, error, existingSub) { + var _this = this; + if (targetServers.length === 0) { + error({ + method: streamingMethod, + called_with: params.arguments, + message: ERR_MSG_SUB_FAILED + " No available servers matched the target params.", + }); + return; + } + var subLocalKey = this.getNextSubscriptionLocalKey(); + var pendingSub = this.registerSubscription(subLocalKey, streamingMethod, params, success, error, params.methodResponseTimeout || 10000, existingSub); + if (typeof pendingSub !== "object") { + error({ + method: streamingMethod, + called_with: params.arguments, + message: ERR_MSG_SUB_FAILED + " Unable to register the user callbacks.", + }); + return; + } + targetServers.forEach(function (target) { + var serverId = target.server.id; + var method = target.methods.find(function (m) { return m.name === streamingMethod.name; }); + if (!method) { + _this.logger.error("can not find method ".concat(streamingMethod.name, " for target ").concat(target.server.id)); + return; + } + pendingSub.trackedServers.push({ + serverId: serverId, + subscriptionId: undefined, + }); + var msg = { + type: "subscribe", + server_id: serverId, + method_id: method.gatewayId, + arguments_kv: params.arguments, + }; + _this.session.send(msg, { serverId: serverId, subLocalKey: subLocalKey }) + .then(function (m) { return _this.handleSubscribed(m); }) + .catch(function (err) { return _this.handleErrorSubscribing(err); }); + }); + }; + ClientStreaming.prototype.drainSubscriptions = function () { + var existing = Object.values(this.subscriptionsList); + this.subscriptionsList = {}; + this.subscriptionIdToLocalKeyMap = {}; + return existing; + }; + ClientStreaming.prototype.drainSubscriptionsCache = function () { + return this.timedCache.flush(); + }; + ClientStreaming.prototype.getNextSubscriptionLocalKey = function () { + var current = this.nextSubLocalKey; + this.nextSubLocalKey += 1; + return current; + }; + ClientStreaming.prototype.registerSubscription = function (subLocalKey, method, params, success, error, timeout, existingSub) { + var _this = this; + var subsInfo = { + localKey: subLocalKey, + status: STATUS_AWAITING_ACCEPT, + method: method, + params: params, + success: success, + error: error, + trackedServers: [], + handlers: { + onData: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onData) || [], + onClosed: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onClosed) || [], + onConnected: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onConnected) || [], + }, + queued: { + data: [], + closers: [], + }, + timeoutId: undefined, + close: function () { return _this.closeSubscription(subLocalKey); }, + subscription: existingSub === null || existingSub === void 0 ? void 0 : existingSub.subscription + }; + if (!existingSub) { + if (params.onData) { + subsInfo.handlers.onData.push(params.onData); + } + if (params.onClosed) { + subsInfo.handlers.onClosed.push(params.onClosed); + } + if (params.onConnected) { + subsInfo.handlers.onConnected.push(params.onConnected); + } + } + this.subscriptionsList[subLocalKey] = subsInfo; + subsInfo.timeoutId = setTimeout(function () { + if (_this.subscriptionsList[subLocalKey] === undefined) { + return; + } + var pendingSub = _this.subscriptionsList[subLocalKey]; + if (pendingSub.status === STATUS_AWAITING_ACCEPT) { + error({ + method: method, + called_with: params.arguments, + message: ERR_MSG_SUB_FAILED + " Subscription attempt timed out after " + timeout + " ms.", + }); + delete _this.subscriptionsList[subLocalKey]; + } + else if (pendingSub.status === STATUS_SUBSCRIBED && pendingSub.trackedServers.length > 0) { + pendingSub.trackedServers = pendingSub.trackedServers.filter(function (server) { + return (typeof server.subscriptionId !== "undefined"); + }); + delete pendingSub.timeoutId; + if (pendingSub.trackedServers.length <= 0) { + _this.callOnClosedHandlers(pendingSub); + delete _this.subscriptionsList[subLocalKey]; + } + } + }, timeout); + return subsInfo; + }; + ClientStreaming.prototype.callOnClosedHandlers = function (subscription, reason) { + var closersCount = subscription.queued.closers.length; + var closingServerId = (closersCount > 0) ? subscription.queued.closers[closersCount - 1] : null; + var closingServer; + if (closingServerId !== undefined && typeof closingServerId === "string") { + closingServer = this.repository.getServerById(closingServerId).instance; + } + subscription.handlers.onClosed.forEach(function (callback) { + if (typeof callback !== "function") { + return; + } + callback({ + message: reason || ON_CLOSE_MSG_SERVER_INIT, + requestArguments: subscription.params.arguments || {}, + server: closingServer, + stream: subscription.method, + }); + }); + }; + ClientStreaming.prototype.closeSubscription = function (subLocalKey) { + var _this = this; + var subscription = this.subscriptionsList[subLocalKey]; + if (typeof subscription !== "object") { + return; + } + subscription.trackedServers.forEach(function (server) { + if (typeof server.subscriptionId === "undefined") { + return; + } + subscription.queued.closers.push(server.serverId); + _this.session.sendFireAndForget({ + type: "unsubscribe", + subscription_id: server.subscriptionId, + reason_uri: "", + reason: ON_CLOSE_MSG_CLIENT_INIT, + }); + delete _this.subscriptionIdToLocalKeyMap[server.subscriptionId]; + }); + subscription.trackedServers = []; + this.callOnClosedHandlers(subscription, ON_CLOSE_MSG_CLIENT_INIT); + delete this.subscriptionsList[subLocalKey]; + }; + return ClientStreaming; +}()); + +var ClientProtocol = (function () { + function ClientProtocol(session, repository, logger) { + var _this = this; + this.session = session; + this.repository = repository; + this.logger = logger; + session.on("peer-added", function (msg) { return _this.handlePeerAdded(msg); }); + session.on("peer-removed", function (msg) { return _this.handlePeerRemoved(msg); }); + session.on("methods-added", function (msg) { return _this.handleMethodsAddedMessage(msg); }); + session.on("methods-removed", function (msg) { return _this.handleMethodsRemovedMessage(msg); }); + this.streaming = new ClientStreaming(session, repository, logger); + } + ClientProtocol.prototype.subscribe = function (stream, options, targetServers, success, error, existingSub) { + this.streaming.subscribe(stream, options, targetServers, success, error, existingSub); + }; + ClientProtocol.prototype.invoke = function (id, method, args, target) { + var _this = this; + var serverId = target.id; + var methodId = method.gatewayId; + var msg = { + type: "call", + server_id: serverId, + method_id: methodId, + arguments_kv: args, + }; + return this.session.send(msg, { invocationId: id, serverId: serverId }) + .then(function (m) { return _this.handleResultMessage(m); }) + .catch(function (err) { return _this.handleInvocationError(err); }); + }; + ClientProtocol.prototype.drainSubscriptions = function () { + return this.streaming.drainSubscriptions(); + }; + ClientProtocol.prototype.drainSubscriptionsCache = function () { + return this.streaming.drainSubscriptionsCache(); + }; + ClientProtocol.prototype.handlePeerAdded = function (msg) { + var newPeerId = msg.new_peer_id; + var remoteId = msg.identity; + var isLocal = msg.meta ? msg.meta.local : true; + var pid = Number(remoteId.process); + var serverInfo = { + machine: remoteId.machine, + pid: isNaN(pid) ? remoteId.process : pid, + instance: remoteId.instance, + application: remoteId.application, + applicationName: remoteId.applicationName, + environment: remoteId.environment, + region: remoteId.region, + user: remoteId.user, + windowId: remoteId.windowId, + peerId: newPeerId, + api: remoteId.api, + isLocal: isLocal + }; + this.repository.addServer(serverInfo, newPeerId); + }; + ClientProtocol.prototype.handlePeerRemoved = function (msg) { + var removedPeerId = msg.removed_id; + var reason = msg.reason; + this.repository.removeServerById(removedPeerId, reason); + }; + ClientProtocol.prototype.handleMethodsAddedMessage = function (msg) { + var _this = this; + var serverId = msg.server_id; + var methods = msg.methods; + methods.forEach(function (method) { + _this.repository.addServerMethod(serverId, method); + }); + }; + ClientProtocol.prototype.handleMethodsRemovedMessage = function (msg) { + var _this = this; + var serverId = msg.server_id; + var methodIdList = msg.methods; + var server = this.repository.getServerById(serverId); + var serverMethodKeys = Object.keys(server.methods); + serverMethodKeys.forEach(function (methodKey) { + var method = server.methods[methodKey]; + if (methodIdList.indexOf(method.gatewayId) > -1) { + _this.repository.removeServerMethod(serverId, methodKey); + } + }); + }; + ClientProtocol.prototype.handleResultMessage = function (msg) { + var invocationId = msg._tag.invocationId; + var result = msg.result; + var serverId = msg._tag.serverId; + var server = this.repository.getServerById(serverId); + return { + invocationId: invocationId, + result: result, + instance: server.instance, + status: InvokeStatus.Success, + message: "" + }; + }; + ClientProtocol.prototype.handleInvocationError = function (msg) { + this.logger.debug("handle invocation error ".concat(JSON.stringify(msg))); + if ("_tag" in msg) { + var invocationId = msg._tag.invocationId; + var serverId = msg._tag.serverId; + var server = this.repository.getServerById(serverId); + var message = msg.reason; + var context_1 = msg.context; + return { + invocationId: invocationId, + result: context_1, + instance: server.instance, + status: InvokeStatus.Error, + message: message + }; + } + else { + return { + invocationId: "", + message: msg.message, + status: InvokeStatus.Error, + error: msg + }; + } + }; + return ClientProtocol; +}()); + +function gW3ProtocolFactory (instance, connection, clientRepository, serverRepository, libConfig, interop) { + var logger = libConfig.logger.subLogger("gw3-protocol"); + var resolveReadyPromise; + var readyPromise = new Promise(function (resolve) { + resolveReadyPromise = resolve; + }); + var session = connection.domain("agm", ["subscribed"]); + var server = new ServerProtocol(session, clientRepository, serverRepository, logger.subLogger("server")); + var client = new ClientProtocol(session, clientRepository, logger.subLogger("client")); + function handleReconnect() { + return __awaiter(this, void 0, void 0, function () { + var reconnectionPromises, existingSubscriptions, _loop_1, _i, existingSubscriptions_1, sub, registeredMethods, _loop_2, _a, registeredMethods_1, method; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + logger.info("reconnected - will replay registered methods and subscriptions"); + client.drainSubscriptionsCache().forEach(function (sub) { + var methodInfo = sub.method; + var params = Object.assign({}, sub.params); + logger.info("trying to soft-re-subscribe to method ".concat(methodInfo.name, ", with params: ").concat(JSON.stringify(params))); + interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(function () { return logger.info("soft-subscribing to method ".concat(methodInfo.name, " DONE")); }).catch(function (error) { return logger.warn("subscribing to method ".concat(methodInfo.name, " failed: ").concat(JSON.stringify(error), "}")); }); + }); + reconnectionPromises = []; + existingSubscriptions = client.drainSubscriptions(); + _loop_1 = function (sub) { + var methodInfo = sub.method; + var params = Object.assign({}, sub.params); + logger.info("trying to re-subscribe to method ".concat(methodInfo.name, ", with params: ").concat(JSON.stringify(params))); + reconnectionPromises.push(interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(function () { return logger.info("subscribing to method ".concat(methodInfo.name, " DONE")); })); + }; + for (_i = 0, existingSubscriptions_1 = existingSubscriptions; _i < existingSubscriptions_1.length; _i++) { + sub = existingSubscriptions_1[_i]; + _loop_1(sub); + } + registeredMethods = serverRepository.getList(); + serverRepository.reset(); + _loop_2 = function (method) { + var def = method.definition; + logger.info("re-publishing method ".concat(def.name)); + if (method.stream) { + reconnectionPromises.push(interop.server.createStream(def, method.streamCallbacks, undefined, undefined, method.stream).then(function () { return logger.info("subscribing to method ".concat(def.name, " DONE")); })); + } + else if (method.theFunction && method.theFunction.userCallback) { + reconnectionPromises.push(interop.register(def, method.theFunction.userCallback).then(function () { return logger.info("subscribing to method ".concat(def.name, " DONE")); })); + } + else if (method.theFunction && method.theFunction.userCallbackAsync) { + reconnectionPromises.push(interop.registerAsync(def, method.theFunction.userCallbackAsync).then(function () { return logger.info("subscribing to method ".concat(def.name, " DONE")); })); + } + logger.info("re-publishing method ".concat(def.name, " DONE")); + }; + for (_a = 0, registeredMethods_1 = registeredMethods; _a < registeredMethods_1.length; _a++) { + method = registeredMethods_1[_a]; + _loop_2(method); + } + return [4, Promise.all(reconnectionPromises)]; + case 1: + _b.sent(); + logger.info("Interop is re-announced"); + return [2]; + } + }); + }); + } + function handleInitialJoin() { + if (resolveReadyPromise) { + resolveReadyPromise({ + client: client, + server: server, + }); + resolveReadyPromise = undefined; + } + } + session.onJoined(function (reconnect) { + clientRepository.addServer(instance, connection.peerId); + if (reconnect) { + handleReconnect().then(function () { return connection.setLibReAnnounced({ name: "interop" }); }).catch(function (error) { return logger.warn("Error while re-announcing interop: ".concat(JSON.stringify(error))); }); + } + else { + handleInitialJoin(); + } + }); + session.onLeft(function () { + clientRepository.reset(); + }); + session.join(); + return readyPromise; +} + +var Interop = (function () { + function Interop(configuration) { + var _this = this; + if (typeof configuration === "undefined") { + throw new Error("configuration is required"); + } + if (typeof configuration.connection === "undefined") { + throw new Error("configuration.connections is required"); + } + var connection = configuration.connection; + if (typeof configuration.methodResponseTimeout !== "number") { + configuration.methodResponseTimeout = 30 * 1000; + } + if (typeof configuration.waitTimeoutMs !== "number") { + configuration.waitTimeoutMs = 30 * 1000; + } + this.unwrappedInstance = new InstanceWrapper(this, undefined, connection); + this.instance = this.unwrappedInstance.unwrap(); + this.clientRepository = new ClientRepository(configuration.logger.subLogger("cRep"), this); + this.serverRepository = new ServerRepository(); + var protocolPromise; + if (connection.protocolVersion === 3) { + protocolPromise = gW3ProtocolFactory(this.instance, connection, this.clientRepository, this.serverRepository, configuration, this); + } + else { + throw new Error("protocol ".concat(connection.protocolVersion, " not supported")); + } + this.readyPromise = protocolPromise.then(function (protocol) { + _this.protocol = protocol; + _this.client = new Client(_this.protocol, _this.clientRepository, _this.instance, configuration); + _this.server = new Server(_this.protocol, _this.serverRepository); + return _this; + }); + } + Interop.prototype.ready = function () { + return this.readyPromise; + }; + Interop.prototype.serverRemoved = function (callback) { + return this.client.serverRemoved(callback); + }; + Interop.prototype.serverAdded = function (callback) { + return this.client.serverAdded(callback); + }; + Interop.prototype.serverMethodRemoved = function (callback) { + return this.client.serverMethodRemoved(callback); + }; + Interop.prototype.serverMethodAdded = function (callback) { + return this.client.serverMethodAdded(callback); + }; + Interop.prototype.methodRemoved = function (callback) { + return this.client.methodRemoved(callback); + }; + Interop.prototype.methodAdded = function (callback) { + return this.client.methodAdded(callback); + }; + Interop.prototype.methodsForInstance = function (instance) { + return this.client.methodsForInstance(instance); + }; + Interop.prototype.methods = function (methodFilter) { + return this.client.methods(methodFilter); + }; + Interop.prototype.servers = function (methodFilter) { + return this.client.servers(methodFilter); + }; + Interop.prototype.subscribe = function (method, options, successCallback, errorCallback) { + return this.client.subscribe(method, options, successCallback, errorCallback); + }; + Interop.prototype.createStream = function (streamDef, callbacks, successCallback, errorCallback) { + return this.server.createStream(streamDef, callbacks, successCallback, errorCallback); + }; + Interop.prototype.unregister = function (methodFilter) { + return this.server.unregister(methodFilter); + }; + Interop.prototype.registerAsync = function (methodDefinition, callback) { + return this.server.registerAsync(methodDefinition, callback); + }; + Interop.prototype.register = function (methodDefinition, callback) { + return this.server.register(methodDefinition, callback); + }; + Interop.prototype.invoke = function (methodFilter, argumentObj, target, additionalOptions, success, error) { + return this.client.invoke(methodFilter, argumentObj, target, additionalOptions, success, error); + }; + Interop.prototype.waitForMethod = function (name) { + var pw = new PromiseWrapper(); + var unsubscribe = this.client.methodAdded(function (m) { + if (m.name === name) { + unsubscribe(); + pw.resolve(m); + } + }); + return pw.promise; + }; + return Interop; +}()); + +var successMessages = ["subscribed", "success"]; +var MessageBus = (function () { + function MessageBus(connection, logger) { + var _this = this; + this.publish = function (topic, data, options) { + var _a = options || {}, routingKey = _a.routingKey, target = _a.target; + var args = _this.removeEmptyValues({ + type: "publish", + topic: topic, + data: data, + peer_id: _this.peerId, + routing_key: routingKey, + target_identity: target + }); + _this.session.send(args); + }; + this.subscribe = function (topic, callback, options) { + return new Promise(function (resolve, reject) { + var _a = options || {}, routingKey = _a.routingKey, target = _a.target; + var args = _this.removeEmptyValues({ + type: "subscribe", + topic: topic, + peer_id: _this.peerId, + routing_key: routingKey, + source: target + }); + _this.session.send(args) + .then(function (response) { + var subscription_id = response.subscription_id; + _this.subscriptions.push({ subscription_id: subscription_id, topic: topic, callback: callback, source: target }); + resolve({ + unsubscribe: function () { + _this.session.send({ type: "unsubscribe", subscription_id: subscription_id, peer_id: _this.peerId }); + _this.subscriptions = _this.subscriptions.filter(function (s) { return s.subscription_id !== subscription_id; }); + return Promise.resolve(); + } + }); + }) + .catch(function (error) { return reject(error); }); + }); + }; + this.watchOnEvent = function () { + _this.session.on("event", function (args) { + var data = args.data, subscription_id = args.subscription_id; + var source = args["publisher-identity"]; + var subscription = _this.subscriptions.find(function (s) { return s.subscription_id === subscription_id; }); + if (subscription) { + if (!subscription.source) { + subscription.callback(data, subscription.topic, source); + } + else { + if (_this.keysMatch(subscription.source, source)) { + subscription.callback(data, subscription.topic, source); + } + } + } + }); + }; + this.connection = connection; + this.logger = logger; + this.peerId = connection.peerId; + this.subscriptions = []; + this.session = connection.domain("bus", successMessages); + this.readyPromise = this.session.join(); + this.readyPromise.then(function () { + _this.watchOnEvent(); + }); + } + MessageBus.prototype.ready = function () { + return this.readyPromise; + }; + MessageBus.prototype.removeEmptyValues = function (obj) { + var cleaned = {}; + Object.keys(obj).forEach(function (key) { + if (obj[key] !== undefined && obj[key] !== null) { + cleaned[key] = obj[key]; + } + }); + return cleaned; + }; + MessageBus.prototype.keysMatch = function (obj1, obj2) { + var keysObj1 = Object.keys(obj1); + var allMatch = true; + keysObj1.forEach(function (key) { + if (obj1[key] !== obj2[key]) { + allMatch = false; + } + }); + return allMatch; + }; + return MessageBus; +}()); + +var IOConnectCoreFactory = function (userConfig, ext) { + var _a, _b; + var iodesktop = typeof window === "object" ? ((_a = window.iodesktop) !== null && _a !== void 0 ? _a : window.glue42gd) : undefined; + var preloadPromise = typeof window === "object" ? ((_b = window.gdPreloadPromise) !== null && _b !== void 0 ? _b : Promise.resolve()) : Promise.resolve(); + var glueInitTimer = timer("glue"); + userConfig = userConfig || {}; + ext = ext || {}; + var internalConfig = prepareConfig(userConfig, ext, iodesktop); + var _connection; + var _interop; + var _logger; + var _metrics; + var _contexts; + var _bus; + var _allowTrace; + var libs = {}; + function registerLib(name, inner, t) { + _allowTrace = _logger.canPublish("trace"); + if (_allowTrace) { + _logger.trace("registering ".concat(name, " module")); + } + var done = function () { + inner.initTime = t.stop(); + inner.initEndTime = t.endTime; + inner.marks = t.marks; + if (_allowTrace) { + _logger.trace("".concat(name, " is ready - ").concat(t.endTime - t.startTime)); + } + }; + inner.initStartTime = t.startTime; + if (inner.ready) { + inner.ready().then(function () { + done(); + }); + } + else { + done(); + } + if (!Array.isArray(name)) { + name = [name]; + } + name.forEach(function (n) { + libs[n] = inner; + IOConnectCoreFactory[n] = inner; + }); + } + function setupConnection() { + var initTimer = timer("connection"); + _connection = new Connection(internalConfig.connection, _logger.subLogger("connection")); + var authPromise = Promise.resolve(internalConfig.auth); + if (internalConfig.connection && !internalConfig.auth) { + if (iodesktop) { + authPromise = iodesktop.getGWToken() + .then(function (token) { + return { + gatewayToken: token + }; + }); + } + else if (typeof window !== "undefined" && (window === null || window === void 0 ? void 0 : window.glue42electron)) { + if (typeof window.glue42electron.gwToken === "string") { + authPromise = Promise.resolve({ + gatewayToken: window.glue42electron.gwToken + }); + } + } + else { + authPromise = Promise.reject("You need to provide auth information"); + } + } + return authPromise + .then(function (authConfig) { + initTimer.mark("auth-promise-resolved"); + var authRequest; + if (Object.prototype.toString.call(authConfig) === "[object Object]") { + authRequest = authConfig; + } + else { + throw new Error("Invalid auth object - " + JSON.stringify(authConfig)); + } + return _connection.login(authRequest); + }) + .then(function () { + registerLib("connection", _connection, initTimer); + return internalConfig; + }) + .catch(function (e) { + if (_connection) { + _connection.logout(); + } + throw e; + }); + } + function setupLogger() { + var _a; + var initTimer = timer("logger"); + _logger = new Logger("".concat((_a = internalConfig.connection.identity) === null || _a === void 0 ? void 0 : _a.application), undefined, internalConfig.customLogger); + _logger.consoleLevel(internalConfig.logger.console); + _logger.publishLevel(internalConfig.logger.publish); + if (_logger.canPublish("debug")) { + _logger.debug("initializing glue..."); + } + registerLib("logger", _logger, initTimer); + return Promise.resolve(undefined); + } + function setupMetrics() { + var _a, _b, _c, _d, _e; + var initTimer = timer("metrics"); + var config = internalConfig.metrics; + var metricsPublishingEnabledFunc = iodesktop === null || iodesktop === void 0 ? void 0 : iodesktop.getMetricsPublishingEnabled; + var identity = internalConfig.connection.identity; + var canUpdateMetric = metricsPublishingEnabledFunc ? metricsPublishingEnabledFunc : function () { return true; }; + var disableAutoAppSystem = (_a = (typeof config !== "boolean" && config.disableAutoAppSystem)) !== null && _a !== void 0 ? _a : false; + _metrics = metrics({ + connection: config ? _connection : undefined, + logger: _logger.subLogger("metrics"), + canUpdateMetric: canUpdateMetric, + system: "Glue42", + service: (_c = (_b = identity === null || identity === void 0 ? void 0 : identity.service) !== null && _b !== void 0 ? _b : iodesktop === null || iodesktop === void 0 ? void 0 : iodesktop.applicationName) !== null && _c !== void 0 ? _c : internalConfig.application, + instance: (_e = (_d = identity === null || identity === void 0 ? void 0 : identity.instance) !== null && _d !== void 0 ? _d : identity === null || identity === void 0 ? void 0 : identity.windowId) !== null && _e !== void 0 ? _e : shortid(), + disableAutoAppSystem: disableAutoAppSystem, + pagePerformanceMetrics: typeof config !== "boolean" ? config === null || config === void 0 ? void 0 : config.pagePerformanceMetrics : undefined + }); + registerLib("metrics", _metrics, initTimer); + return Promise.resolve(); + } + function setupInterop() { + var initTimer = timer("interop"); + var agmConfig = { + connection: _connection, + logger: _logger.subLogger("interop"), + }; + _interop = new Interop(agmConfig); + Logger.Interop = _interop; + registerLib(["interop", "agm"], _interop, initTimer); + return Promise.resolve(); + } + function setupContexts() { + var hasActivities = (internalConfig.activities && _connection.protocolVersion === 3); + var needsContexts = internalConfig.contexts || hasActivities; + if (needsContexts) { + var initTimer = timer("contexts"); + _contexts = new ContextsModule({ + connection: _connection, + logger: _logger.subLogger("contexts"), + trackAllContexts: typeof internalConfig.contexts === "object" ? internalConfig.contexts.trackAllContexts : false, + reAnnounceKnownContexts: typeof internalConfig.contexts === "object" ? internalConfig.contexts.reAnnounceKnownContexts : false + }); + registerLib("contexts", _contexts, initTimer); + return _contexts; + } + else { + var replayer = _connection.replayer; + if (replayer) { + replayer.drain(ContextMessageReplaySpec.name); + } + } + } + function setupBus() { + return __awaiter(this, void 0, void 0, function () { + var initTimer; + return __generator(this, function (_a) { + if (!internalConfig.bus) { + return [2, Promise.resolve()]; + } + initTimer = timer("bus"); + _bus = new MessageBus(_connection, _logger.subLogger("bus")); + registerLib("bus", _bus, initTimer); + return [2, Promise.resolve()]; + }); + }); + } + function setupExternalLibs(externalLibs) { + try { + externalLibs.forEach(function (lib) { + setupExternalLib(lib.name, lib.create); + }); + return Promise.resolve(); + } + catch (e) { + return Promise.reject(e); + } + } + function setupExternalLib(name, createCallback) { + var initTimer = timer(name); + var lib = createCallback(libs); + if (lib) { + registerLib(name, lib, initTimer); + } + } + function waitForLibs() { + var libsReadyPromises = Object.keys(libs).map(function (key) { + var lib = libs[key]; + return lib.ready ? + lib.ready() : Promise.resolve(); + }); + return Promise.all(libsReadyPromises); + } + function constructGlueObject() { + var feedbackFunc = function (feedbackInfo) { + if (!_interop) { + return; + } + _interop.invoke("T42.ACS.Feedback", feedbackInfo, "best"); + }; + var info = { + coreVersion: version, + version: internalConfig.version + }; + glueInitTimer.stop(); + var glue = { + feedback: feedbackFunc, + info: info, + logger: _logger, + interop: _interop, + agm: _interop, + connection: _connection, + metrics: _metrics, + contexts: _contexts, + bus: _bus, + version: internalConfig.version, + userConfig: userConfig, + done: function () { + _logger === null || _logger === void 0 ? void 0 : _logger.info("done called by user..."); + return _connection.logout(); + } + }; + glue.performance = { + get glueVer() { + return internalConfig.version; + }, + get glueConfig() { + return JSON.stringify(userConfig); + }, + get browser() { + return window.performance.timing.toJSON(); + }, + get memory() { + return window.performance.memory; + }, + get initTimes() { + var all = getAllTimers(); + return Object.keys(all).map(function (key) { + var t = all[key]; + return { + name: key, + duration: t.endTime - t.startTime, + marks: t.marks, + startTime: t.startTime, + endTime: t.endTime + }; + }); + } + }; + Object.keys(libs).forEach(function (key) { + var lib = libs[key]; + glue[key] = lib; + }); + glue.config = {}; + Object.keys(internalConfig).forEach(function (k) { + glue.config[k] = internalConfig[k]; + }); + if (ext && ext.extOptions) { + Object.keys(ext.extOptions).forEach(function (k) { + glue.config[k] = ext === null || ext === void 0 ? void 0 : ext.extOptions[k]; + }); + } + if (ext === null || ext === void 0 ? void 0 : ext.enrichGlue) { + ext.enrichGlue(glue); + } + if (iodesktop && iodesktop.updatePerfData) { + iodesktop.updatePerfData(glue.performance); + } + if (glue.agm) { + var deprecatedDecorator = function (fn, wrong, proper) { + return function () { + glue.logger.warn("glue.js - 'glue.agm.".concat(wrong, "' method is deprecated, use 'glue.interop.").concat(proper, "' instead.")); + return fn.apply(glue.agm, arguments); + }; + }; + var agmAny = glue.agm; + agmAny.method_added = deprecatedDecorator(glue.agm.methodAdded, "method_added", "methodAdded"); + agmAny.method_removed = deprecatedDecorator(glue.agm.methodRemoved, "method_removed", "methodRemoved"); + agmAny.server_added = deprecatedDecorator(glue.agm.serverAdded, "server_added", "serverAdded"); + agmAny.server_method_aded = deprecatedDecorator(glue.agm.serverMethodAdded, "server_method_aded", "serverMethodAdded"); + agmAny.server_method_removed = deprecatedDecorator(glue.agm.serverMethodRemoved, "server_method_removed", "serverMethodRemoved"); + } + return glue; + } + function registerInstanceIfNeeded() { + return __awaiter(this, void 0, void 0, function () { + var RegisterInstanceMethodName, isMethodAvailable, error_1, typedError; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + RegisterInstanceMethodName = "T42.ACS.RegisterInstance"; + if (!(Utils.isNode() && typeof process.env._GD_STARTING_CONTEXT_ === "undefined" && typeof (userConfig === null || userConfig === void 0 ? void 0 : userConfig.application) !== "undefined")) return [3, 4]; + isMethodAvailable = _interop.methods({ name: RegisterInstanceMethodName }).length > 0; + if (!isMethodAvailable) return [3, 4]; + _a.label = 1; + case 1: + _a.trys.push([1, 3, , 4]); + return [4, _interop.invoke(RegisterInstanceMethodName, { appName: userConfig === null || userConfig === void 0 ? void 0 : userConfig.application, pid: process.pid })]; + case 2: + _a.sent(); + return [3, 4]; + case 3: + error_1 = _a.sent(); + typedError = error_1; + _logger.error("Cannot register as an instance: ".concat(JSON.stringify(typedError.message))); + return [3, 4]; + case 4: return [2]; + } + }); + }); + } + return preloadPromise + .then(setupLogger) + .then(setupConnection) + .then(function () { return Promise.all([setupMetrics(), setupInterop(), setupContexts(), setupBus()]); }) + .then(function () { return _interop.readyPromise; }) + .then(function () { return registerInstanceIfNeeded(); }) + .then(function () { + return setupExternalLibs(internalConfig.libs || []); + }) + .then(waitForLibs) + .then(constructGlueObject) + .catch(function (err) { + return Promise.reject({ + err: err, + libs: libs + }); + }); +}; +if (typeof window !== "undefined") { + window.IOConnectCore = IOConnectCoreFactory; +} +IOConnectCoreFactory.version = version; +IOConnectCoreFactory.default = IOConnectCoreFactory; + +const iOConnectBrowserFactory = createFactoryFunction(IOConnectCoreFactory); +if (typeof window !== "undefined") { + const windowAny = window; + windowAny.IOBrowser = iOConnectBrowserFactory; + delete windowAny.GlueCore; + delete windowAny.IOConnectCore; +} +const legacyGlobal = window.glue42gd || window.glue42core; +const ioGlobal = window.iodesktop || window.iobrowser; +if (!legacyGlobal && !ioGlobal) { + window.iobrowser = { webStarted: false }; +} +iOConnectBrowserFactory.version = version$2; + +export { iOConnectBrowserFactory as default }; +//# sourceMappingURL=browser.es.js.map diff --git a/browser-client-vanilla-js/public/libs/browser.es.js.map b/browser-client-vanilla-js/public/libs/browser.es.js.map new file mode 100644 index 0000000..6f75b2f --- /dev/null +++ b/browser-client-vanilla-js/public/libs/browser.es.js.map @@ -0,0 +1 @@ +{"version":3,"file":"browser.es.js","sources":["../src/config/index.ts","../src/config/checkSingleton.ts","../src/enterprise/index.ts","../node_modules/decoder-validate/dist/index.es5.js","../../utils/dist/utils.es.js","../src/shared/decoders.ts","../src/windows/protocol.ts","../node_modules/callback-registry/lib/index.js","../src/windows/webWindow.ts","../src/shared/systemOperations.ts","../src/shared/promise-plus.ts","../src/windows/controller.ts","../src/communication/constants.ts","../src/communication/bridge.ts","../src/appManager/protocol.ts","../src/appManager/controller.ts","../src/appManager/instance.ts","../src/appManager/application.ts","../src/layouts/protocol.ts","../src/layouts/controller.ts","../src/notifications/protocol.ts","../node_modules/shortid/lib/random/random-from-seed.js","../node_modules/shortid/lib/alphabet.js","../node_modules/shortid/lib/random/random-byte-browser.js","../node_modules/shortid/node_modules/nanoid/format.browser.js","../node_modules/shortid/lib/generate.js","../node_modules/shortid/lib/build.js","../node_modules/shortid/lib/is-valid.js","../node_modules/shortid/lib/index.js","../node_modules/shortid/index.js","../src/notifications/controller.ts","../src/intents/protocol.ts","../src/intents/constants.ts","../src/intents/controller.ts","../src/shared/constants.ts","../src/channels/protocol.ts","../src/channels/controller.ts","../src/system/protocol.ts","../src/system/controller.ts","../src/notifications/notification.ts","../src/extension/decoders.ts","../src/extension/protocol.ts","../src/extension/controller.ts","../src/shared/dispatcher.ts","../src/communication/preferred.ts","../src/intents/legacyHelper.ts","../src/themes/protocol.ts","../src/themes/controller.ts","../src/storage/session.ts","../src/prefs/protocol.ts","../src/prefs/controller.ts","../src/shared/ioc.ts","../src/web.ts","../../core/dist/core.es.js","../src/index.ts"],"sourcesContent":["import { IOConnectBrowser } from \"../../browser\";\nimport { ParsedConfig } from \"../shared/types\";\n\nconst defaultConfig = {\n logger: \"info\",\n gateway: { webPlatform: {} },\n libraries: [],\n exposeAPI: true\n};\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const parseConfig = (config?: IOConnectBrowser.Config): ParsedConfig => {\n const isPlatformInternal = !!(config as any)?.gateway?.webPlatform?.port;\n\n const combined: ParsedConfig = Object.assign({}, defaultConfig, config, { isPlatformInternal });\n\n if (combined.systemLogger) {\n combined.logger = combined.systemLogger.level ?? \"info\";\n }\n\n return combined;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const checkSingleton = (): void => {\n const ioConnectBrowserNamespace = (window as any).glue42core || (window as any).iobrowser;\n\n if (ioConnectBrowserNamespace && ioConnectBrowserNamespace.webStarted) {\n throw new Error(\"IoConnect Browser has already been started for this application.\");\n }\n\n if (!ioConnectBrowserNamespace) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any).iobrowser = { webStarted: true };\n return;\n }\n\n ioConnectBrowserNamespace.webStarted = true;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { IOConnectDesktop } from \"@interopio/desktop\";\nimport { IOConnectBrowser } from \"../../browser\";\n\nexport const enterprise = (config?: IOConnectBrowser.Config): IOConnectDesktop.API => {\n const enterpriseConfig = {\n windows: true,\n layouts: \"full\",\n appManager: \"full\",\n channels: true,\n libraries: config?.libraries ?? [],\n logger: config?.systemLogger?.level ?? \"warn\"\n };\n\n const injectedFactory = (window as any).IODesktop || (window as any).Glue;\n\n return injectedFactory(enterpriseConfig);\n};","/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Typeguard for `Ok`.\r\n */\r\nvar isOk = function (r) { return r.ok === true; };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Typeguard for `Err`.\r\n */\r\nvar isErr = function (r) { return r.ok === false; };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Given an array of `Result`s, return the successful values.\r\n */\r\nvar successes = function (results) {\r\n return results.reduce(function (acc, r) { return (r.ok === true ? acc.concat(r.result) : acc); }, []);\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n\r\nvar result = Object.freeze({\r\n\tok: ok,\r\n\tisOk: isOk,\r\n\terr: err,\r\n\tisErr: isErr,\r\n\tasPromise: asPromise,\r\n\twithDefault: withDefault,\r\n\twithException: withException,\r\n\tsuccesses: successes,\r\n\tmap: map,\r\n\tmap2: map2,\r\n\tmapError: mapError,\r\n\tandThen: andThen\r\n});\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/**\r\n * Type guard for `DecoderError`. One use case of the type guard is in the\r\n * `catch` of a promise. Typescript types the error argument of `catch` as\r\n * `any`, so when dealing with a decoder as a promise you may need to\r\n * distinguish between a `DecoderError` and an error string.\r\n */\r\nvar isDecoderError = function (a) {\r\n return a.kind === 'DecoderError' && typeof a.at === 'string' && typeof a.message === 'string';\r\n};\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nvar unknownJson = Decoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nvar tuple = Decoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nvar union = Decoder.union;\r\n/** See `Decoder.intersection` */\r\nvar intersection = Decoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nvar withDefault$1 = Decoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nvar valueAt = Decoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nvar succeed = Decoder.succeed;\r\n/** See `Decoder.fail` */\r\nvar fail = Decoder.fail;\r\n/** See `Decoder.lazy` */\r\nvar lazy = Decoder.lazy;\r\n\r\nexport { result as Result, Decoder, isDecoderError, string, number, boolean, anyJson, unknownJson, constant, object, array, tuple, dict, optional, oneOf, union, intersection, withDefault$1 as withDefault, valueAt, succeed, fail, lazy };\r\n//# sourceMappingURL=index.es5.js.map\r\n","const connectBrowserAppProps = [\"name\", \"title\", \"version\", \"customProperties\", \"icon\", \"caption\", \"type\"];\nconst fdc3v2AppProps = [\"appId\", \"name\", \"type\", \"details\", \"version\", \"title\", \"tooltip\", \"lang\", \"description\", \"categories\", \"icons\", \"screenshots\", \"contactEmail\", \"moreInfo\", \"publisher\", \"customConfig\", \"hostManifests\", \"interop\", \"localizedVersions\"];\n\n/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nDecoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nDecoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nDecoder.union;\r\n/** See `Decoder.intersection` */\r\nDecoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nDecoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nDecoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nDecoder.succeed;\r\n/** See `Decoder.fail` */\r\nDecoder.fail;\r\n/** See `Decoder.lazy` */\r\nDecoder.lazy;\n\nconst nonEmptyStringDecoder = string().where((s) => s.length > 0, \"Expected a non-empty string\");\nconst nonNegativeNumberDecoder = number().where((num) => num >= 0, \"Expected a non-negative number\");\n\nconst intentDefinitionDecoder = object({\n name: nonEmptyStringDecoder,\n displayName: optional(string()),\n contexts: optional(array(string())),\n customConfig: optional(object())\n});\nconst v2TypeDecoder = oneOf(constant(\"web\"), constant(\"native\"), constant(\"citrix\"), constant(\"onlineNative\"), constant(\"other\"));\nconst v2DetailsDecoder = object({\n url: nonEmptyStringDecoder\n});\nconst v2IconDecoder = object({\n src: nonEmptyStringDecoder,\n size: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder)\n});\nconst v2ScreenshotDecoder = object({\n src: nonEmptyStringDecoder,\n size: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder),\n label: optional(nonEmptyStringDecoder)\n});\nconst v2ListensForIntentDecoder = object({\n contexts: array(nonEmptyStringDecoder),\n displayName: optional(nonEmptyStringDecoder),\n resultType: optional(nonEmptyStringDecoder),\n customConfig: optional(anyJson())\n});\nconst v2IntentsDecoder = object({\n listensFor: optional(dict(v2ListensForIntentDecoder)),\n raises: optional(dict(array(nonEmptyStringDecoder)))\n});\nconst v2UserChannelDecoder = object({\n broadcasts: optional(array(nonEmptyStringDecoder)),\n listensFor: optional(array(nonEmptyStringDecoder))\n});\nconst v2AppChannelDecoder = object({\n name: nonEmptyStringDecoder,\n description: optional(nonEmptyStringDecoder),\n broadcasts: optional(array(nonEmptyStringDecoder)),\n listensFor: optional(array(nonEmptyStringDecoder))\n});\nconst v2InteropDecoder = object({\n intents: optional(v2IntentsDecoder),\n userChannels: optional(v2UserChannelDecoder),\n appChannels: optional(array(v2AppChannelDecoder))\n});\nconst glue42ApplicationDetailsDecoder = object({\n url: nonEmptyStringDecoder,\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n});\nconst glue42HostManifestsBrowserDecoder = object({\n name: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\")),\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n customProperties: optional(anyJson()),\n icon: optional(string()),\n caption: optional(string()),\n details: optional(glue42ApplicationDetailsDecoder),\n intents: optional(array(intentDefinitionDecoder)),\n hidden: optional(boolean())\n});\nconst hostManifestsBrowserDecoder = oneOf(object({\n \"Glue42\": oneOf(glue42HostManifestsBrowserDecoder, anyJson())\n}), anyJson());\nconst v1DefinitionDecoder = object({\n name: nonEmptyStringDecoder,\n appId: nonEmptyStringDecoder,\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n manifest: nonEmptyStringDecoder,\n manifestType: nonEmptyStringDecoder,\n tooltip: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n images: optional(array(object({ url: optional(nonEmptyStringDecoder) }))),\n icons: optional(array(object({ icon: optional(nonEmptyStringDecoder) }))),\n customConfig: anyJson(),\n intents: optional(array(intentDefinitionDecoder))\n});\nconst v2LocalizedDefinitionDecoder = object({\n appId: optional(nonEmptyStringDecoder),\n name: optional(nonEmptyStringDecoder),\n details: optional(v2DetailsDecoder),\n version: optional(nonEmptyStringDecoder),\n title: optional(nonEmptyStringDecoder),\n tooltip: optional(nonEmptyStringDecoder),\n lang: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n categories: optional(array(nonEmptyStringDecoder)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n moreInfo: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder)\n});\nconst v2DefinitionDecoder = object({\n appId: nonEmptyStringDecoder,\n name: nonEmptyStringDecoder,\n type: v2TypeDecoder,\n details: v2DetailsDecoder,\n version: optional(nonEmptyStringDecoder),\n title: optional(nonEmptyStringDecoder),\n tooltip: optional(nonEmptyStringDecoder),\n lang: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n categories: optional(array(nonEmptyStringDecoder)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n moreInfo: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder),\n localizedVersions: optional(dict(v2LocalizedDefinitionDecoder))\n});\nconst allDefinitionsDecoder = oneOf(v1DefinitionDecoder, v2DefinitionDecoder);\n\nconst parseDecoderErrorToStringMessage = (error) => {\n return `${error.kind} at ${error.at}: ${JSON.stringify(error.input)}. Reason - ${error.message}`;\n};\n\nclass FDC3Service {\n constructor() {\n this.fdc3ToDesktopDefinitionType = {\n web: \"window\",\n native: \"exe\",\n citrix: \"citrix\",\n onlineNative: \"clickonce\",\n other: \"window\"\n };\n }\n toApi() {\n return {\n isFdc3Definition: this.isFdc3Definition.bind(this),\n parseToBrowserBaseAppData: this.parseToBrowserBaseAppData.bind(this),\n parseToDesktopAppConfig: this.parseToDesktopAppConfig.bind(this)\n };\n }\n isFdc3Definition(definition) {\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n return { isFdc3: false, reason: parseDecoderErrorToStringMessage(decodeRes.error) };\n }\n if (definition.appId && definition.details) {\n return { isFdc3: true, version: \"2.0\" };\n }\n if (definition.manifest) {\n return { isFdc3: true, version: \"1.2\" };\n }\n return { isFdc3: false, reason: \"The passed definition is not FDC3\" };\n }\n parseToBrowserBaseAppData(definition) {\n var _a;\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n const userProperties = this.getUserPropertiesFromDefinition(definition, version);\n const createOptions = { url: this.getUrl(definition, version) };\n let baseApplicationData = {\n name: definition.appId,\n type: \"window\",\n createOptions,\n userProperties: Object.assign(Object.assign({}, userProperties), { intents: version === \"1.2\"\n ? userProperties.intents\n : this.getIntentsFromV2AppDefinition(definition), details: createOptions }),\n title: definition.title,\n version: definition.version,\n icon: this.getIconFromDefinition(definition, version),\n caption: definition.description,\n fdc3: version === \"2.0\" ? Object.assign(Object.assign({}, definition), { definitionVersion: \"2.0\" }) : undefined,\n };\n if ((_a = definition.hostManifests) === null || _a === void 0 ? void 0 : _a[\"Glue42\"]) {\n const decodeRes = glue42HostManifestsBrowserDecoder.run(definition.hostManifests[\"Glue42\"]);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n if (!Object.keys(decodeRes.result).length) {\n throw new Error(\"Invalid 'hostManifests['Glue42]' key\");\n }\n baseApplicationData = this.mergeBaseAppDataWithGlueManifest(baseApplicationData, decodeRes.result);\n }\n return baseApplicationData;\n }\n parseToDesktopAppConfig(definition) {\n var _a, _b, _c;\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n if (version === \"1.2\") {\n const fdc3v1Definition = definition;\n return {\n name: fdc3v1Definition.appId,\n type: \"window\",\n details: {\n url: this.getUrl(definition, version)\n },\n version: fdc3v1Definition.version,\n title: fdc3v1Definition.title,\n tooltip: fdc3v1Definition.tooltip,\n caption: fdc3v1Definition.description,\n icon: (_a = fdc3v1Definition.icons) === null || _a === void 0 ? void 0 : _a[0].icon,\n intents: fdc3v1Definition.intents,\n customProperties: {\n manifestType: fdc3v1Definition.manifestType,\n images: fdc3v1Definition.images,\n contactEmail: fdc3v1Definition.contactEmail,\n supportEmail: fdc3v1Definition.supportEmail,\n publisher: fdc3v1Definition.publisher,\n icons: fdc3v1Definition.icons,\n customConfig: fdc3v1Definition.customConfig\n }\n };\n }\n const fdc3v2Definition = definition;\n let desktopDefinition = {\n name: fdc3v2Definition.appId,\n type: this.fdc3ToDesktopDefinitionType[fdc3v2Definition.type],\n details: fdc3v2Definition.details,\n version: fdc3v2Definition.version,\n title: fdc3v2Definition.title,\n tooltip: fdc3v2Definition.tooltip,\n caption: fdc3v2Definition.description,\n icon: this.getIconFromDefinition(fdc3v2Definition, \"2.0\"),\n intents: this.getIntentsFromV2AppDefinition(fdc3v2Definition),\n fdc3: Object.assign(Object.assign({}, fdc3v2Definition), { definitionVersion: \"2.0\" })\n };\n if ((_b = fdc3v2Definition.hostManifests) === null || _b === void 0 ? void 0 : _b[\"Glue42\"]) {\n if (typeof fdc3v2Definition.hostManifests[\"Glue42\"] !== \"object\" || Array.isArray(fdc3v2Definition.hostManifests[\"Glue42\"])) {\n throw new Error(\"Invalid 'hostManifests['Glue42]' key\");\n }\n desktopDefinition = this.mergeDesktopConfigWithGlueManifest(desktopDefinition, (_c = fdc3v2Definition.hostManifests) === null || _c === void 0 ? void 0 : _c[\"Glue42\"]);\n }\n return desktopDefinition;\n }\n getUserPropertiesFromDefinition(definition, version) {\n if (version === \"1.2\") {\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key)));\n }\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key) && !fdc3v2AppProps.includes(key)));\n }\n getUrl(definition, version) {\n var _a, _b;\n let url;\n if (version === \"1.2\") {\n const parsedManifest = JSON.parse(definition.manifest);\n url = ((_a = parsedManifest.details) === null || _a === void 0 ? void 0 : _a.url) || parsedManifest.url;\n }\n else {\n url = (_b = definition.details) === null || _b === void 0 ? void 0 : _b.url;\n }\n if (!url || typeof url !== \"string\") {\n throw new Error(`Invalid FDC3 ${version} definition. Provide valid 'url' under '${version === \"1.2\" ? \"manifest\" : \"details\"}' key`);\n }\n return url;\n }\n getIntentsFromV2AppDefinition(definition) {\n var _a, _b;\n const fdc3Intents = (_b = (_a = definition.interop) === null || _a === void 0 ? void 0 : _a.intents) === null || _b === void 0 ? void 0 : _b.listensFor;\n if (!fdc3Intents) {\n return;\n }\n const intents = Object.entries(fdc3Intents).map((fdc3Intent) => {\n const [intentName, intentData] = fdc3Intent;\n return Object.assign({ name: intentName }, intentData);\n });\n return intents;\n }\n getIconFromDefinition(definition, version) {\n var _a, _b, _c, _d;\n if (version === \"1.2\") {\n return ((_b = (_a = definition.icons) === null || _a === void 0 ? void 0 : _a.find((iconDef) => iconDef.icon)) === null || _b === void 0 ? void 0 : _b.icon) || undefined;\n }\n return ((_d = (_c = definition.icons) === null || _c === void 0 ? void 0 : _c.find((iconDef) => iconDef.src)) === null || _d === void 0 ? void 0 : _d.src) || undefined;\n }\n mergeBaseAppDataWithGlueManifest(baseAppData, hostManifestDefinition) {\n let baseApplicationDefinition = baseAppData;\n if (hostManifestDefinition.details) {\n const details = Object.assign(Object.assign({}, baseAppData.createOptions), hostManifestDefinition.details);\n baseApplicationDefinition.createOptions = details;\n baseApplicationDefinition.userProperties.details = details;\n }\n if (Array.isArray(hostManifestDefinition.intents)) {\n baseApplicationDefinition.userProperties.intents = (baseApplicationDefinition.userProperties.intents || []).concat(hostManifestDefinition.intents);\n }\n baseApplicationDefinition = Object.assign(Object.assign({}, baseApplicationDefinition), hostManifestDefinition);\n delete baseApplicationDefinition.details;\n delete baseApplicationDefinition.intents;\n return baseApplicationDefinition;\n }\n mergeDesktopConfigWithGlueManifest(config, desktopDefinition) {\n const appConfig = Object.assign({}, config, desktopDefinition, { details: Object.assign(Object.assign({}, config.details), desktopDefinition.details) });\n if (Array.isArray(desktopDefinition.intents)) {\n appConfig.intents = (config.intents || []).concat(desktopDefinition.intents);\n }\n return appConfig;\n }\n}\n\nconst decoders$1 = {\n common: {\n nonEmptyStringDecoder,\n nonNegativeNumberDecoder\n },\n fdc3: {\n allDefinitionsDecoder,\n v1DefinitionDecoder,\n v2DefinitionDecoder\n }\n};\n\nvar INTENTS_ERRORS;\n(function (INTENTS_ERRORS) {\n INTENTS_ERRORS[\"USER_CANCELLED\"] = \"User Closed Intents Resolver UI without choosing a handler\";\n INTENTS_ERRORS[\"CALLER_NOT_DEFINED\"] = \"Caller Id is not defined\";\n INTENTS_ERRORS[\"TIMEOUT_HIT\"] = \"Timeout hit\";\n INTENTS_ERRORS[\"INTENT_NOT_FOUND\"] = \"Cannot find Intent\";\n INTENTS_ERRORS[\"HANDLER_NOT_FOUND\"] = \"Cannot find Intent Handler\";\n INTENTS_ERRORS[\"TARGET_INSTANCE_UNAVAILABLE\"] = \"Cannot start Target Instance\";\n INTENTS_ERRORS[\"INTENT_DELIVERY_FAILED\"] = \"Target Instance did not add a listener\";\n INTENTS_ERRORS[\"RESOLVER_UNAVAILABLE\"] = \"Intents Resolver UI unavailable\";\n INTENTS_ERRORS[\"RESOLVER_TIMEOUT\"] = \"User did not choose a handler\";\n INTENTS_ERRORS[\"INVALID_RESOLVER_RESPONSE\"] = \"Intents Resolver UI returned invalid response\";\n INTENTS_ERRORS[\"INTENT_HANDLER_REJECTION\"] = \"Intent Handler function processing the raised intent threw an error or rejected the promise it returned\";\n})(INTENTS_ERRORS || (INTENTS_ERRORS = {}));\n\nclass IoC {\n constructor() {\n this._decoders = decoders$1;\n this._errors = {\n intents: INTENTS_ERRORS\n };\n }\n get fdc3() {\n if (!this._fdc3) {\n this._fdc3 = new FDC3Service().toApi();\n }\n return this._fdc3;\n }\n get decoders() {\n return this._decoders;\n }\n get errors() {\n return this._errors;\n }\n}\n\nconst ioc = new IoC();\nconst fdc3 = ioc.fdc3;\nconst decoders = ioc.decoders;\nconst errors = ioc.errors;\n\nexport { decoders, errors, fdc3 };\n//# sourceMappingURL=utils.es.js.map\n","import { IOConnectWorkspaces } from \"@interopio/workspaces-api\";\nimport { decoders } from \"@interopio/utils\";\nimport { Decoder, string, number, object, constant, oneOf, optional, array, boolean, anyJson, lazy } from \"decoder-validate\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { AppsImportOperation, AppHelloSuccess, ApplicationData, ApplicationStartConfig, AppManagerOperationTypes, AppRemoveConfig, BaseApplicationData, BasicInstanceData, InstanceData, AppsExportOperation, FDC3Definition, AppDirectoryStateChange } from \"../appManager/protocol\";\nimport { AllLayoutsFullConfig, AllLayoutsSummariesResult, GetAllLayoutsConfig, LayoutsImportConfig, LayoutsOperationTypes, OptionalSimpleLayoutResult, RestoreLayoutConfig, SaveLayoutConfig, SaveRequestClientResponse, PlatformSaveRequestConfig, SimpleLayoutConfig, SimpleLayoutResult, PermissionStateResult, SimpleAvailabilityResult, SetDefaultGlobalConfig } from \"../layouts/protocol\";\nimport { HelloSuccess, OpenWindowConfig, CoreWindowData, WindowHello, WindowOperationTypes, SimpleWindowCommand, WindowTitleConfig, WindowBoundsResult, WindowMoveResizeConfig, WindowUrlResult, FrameWindowBoundsResult, FocusEventData, WindowChannelResult } from \"../windows/protocol\";\nimport { IntentsOperationTypes, WrappedIntentFilter, WrappedIntents } from \"../intents/protocol\";\nimport { ActiveNotificationsCountChange, AllNotificationsData, NotificationEventPayload, NotificationSetStateRequest, NotificationsConfigurationProtocol, NotificationsOperationTypes, PermissionQueryResult, PermissionRequestResult, RaiseNotification, RaiseNotificationResult, SimpleNotificationData, SimpleNotificationSelect, StrictNotificationsConfigurationProtocol } from \"../notifications/protocol\";\nimport { LibDomains, OperationCheckConfig, OperationCheckResult, SimpleItemIdRequest, WorkspaceFrameBoundsResult } from \"./types\";\nimport { AllThemesResponse, SelectThemeConfig, SimpleThemeResponse } from \"../themes/protocol\";\nimport { SystemOperationTypes } from \"../system/protocol\";\nimport { WindowIdsOnChannelData, ChannelOperationTypes, WrappedWindowWithChannelFilter, WindowIdsWithChannelsData, MyChannelData, JoinChannelData } from \"../channels/protocol\";\nimport { FilterHandlersWithResolverConfig, IntentRequestWithResolverConfig, IntentResolverResponse, ResolverConfig } from \"../intents/types\";\nimport { BasePrefsConfig, PrefsHelloSuccess, PrefsOperationTypes } from \"../prefs/protocol\";\n\nexport const nonEmptyStringDecoder: Decoder = string().where((s) => s.length > 0, \"Expected a non-empty string\");\nexport const nonNegativeNumberDecoder: Decoder = number().where((num) => num >= 0, \"Expected a non-negative number\");\nexport const optionalNonEmptyStringDecoder: Decoder = optional(nonEmptyStringDecoder);\n\nexport const libDomainDecoder: Decoder = oneOf<\"system\" | \"windows\" | \"appManager\" | \"layouts\" | \"intents\" | \"notifications\" | \"channels\" | \"extension\" | \"themes\" | \"prefs\">(\n constant(\"system\"),\n constant(\"windows\"),\n constant(\"appManager\"),\n constant(\"layouts\"),\n constant(\"intents\"),\n constant(\"notifications\"),\n constant(\"channels\"),\n constant(\"extension\"),\n constant(\"themes\"),\n constant(\"prefs\")\n);\n\nexport const windowOperationTypesDecoder: Decoder = oneOf<\"openWindow\" | \"getBounds\" | \"getFrameBounds\" | \"windowHello\" | \"windowAdded\" | \"windowRemoved\" | \"getUrl\" | \"moveResize\" | \"focus\" | \"close\" | \"getTitle\" | \"setTitle\" | \"focusChange\" | \"getChannel\">(\n constant(\"openWindow\"),\n constant(\"windowHello\"),\n constant(\"windowAdded\"),\n constant(\"windowRemoved\"),\n constant(\"getBounds\"),\n constant(\"getFrameBounds\"),\n constant(\"getUrl\"),\n constant(\"moveResize\"),\n constant(\"focus\"),\n constant(\"close\"),\n constant(\"getTitle\"),\n constant(\"setTitle\"),\n constant(\"focusChange\"),\n constant(\"getChannel\"),\n);\n\nexport const appManagerOperationTypesDecoder: Decoder = oneOf<\"appHello\" | \"appDirectoryStateChange\" | \"instanceStarted\" | \"instanceStopped\" | \"applicationStart\" | \"instanceStop\" | \"clear\">(\n constant(\"appHello\"),\n constant(\"appDirectoryStateChange\"),\n constant(\"instanceStarted\"),\n constant(\"instanceStopped\"),\n constant(\"applicationStart\"),\n constant(\"instanceStop\"),\n constant(\"clear\")\n);\n\nexport const layoutsOperationTypesDecoder: Decoder = oneOf<\"layoutAdded\" | \"layoutChanged\" | \"layoutRemoved\" | \"get\" | \"getAll\" | \"export\" | \"import\" | \"remove\" | \"clientSaveRequest\" | \"getGlobalPermissionState\" | \"requestGlobalPermission\" | \"checkGlobalActivated\" | \"getDefaultGlobal\" | \"setDefaultGlobal\" | \"clearDefaultGlobal\">(\n constant(\"layoutAdded\"),\n constant(\"layoutChanged\"),\n constant(\"layoutRemoved\"),\n constant(\"get\"),\n constant(\"getAll\"),\n constant(\"export\"),\n constant(\"import\"),\n constant(\"remove\"),\n constant(\"clientSaveRequest\"),\n constant(\"getGlobalPermissionState\"),\n constant(\"checkGlobalActivated\"),\n constant(\"requestGlobalPermission\"),\n constant(\"getDefaultGlobal\"),\n constant(\"setDefaultGlobal\"),\n constant(\"clearDefaultGlobal\")\n);\n\nexport const notificationsOperationTypesDecoder: Decoder = oneOf<\"raiseNotification\" | \"requestPermission\" | \"notificationShow\" | \"notificationClick\" | \"getPermission\" | \"list\" | \"notificationRaised\" | \"notificationClosed\" | \"click\" | \"clear\" | \"clearAll\" | \"configure\" | \"getConfiguration\" | \"configurationChanged\" | \"setState\" | \"clearOld\" | \"activeCountChange\" | \"stateChange\">(\n constant(\"raiseNotification\"),\n constant(\"requestPermission\"),\n constant(\"notificationShow\"),\n constant(\"notificationClick\"),\n constant(\"getPermission\"),\n constant(\"list\"),\n constant(\"notificationRaised\"),\n constant(\"notificationClosed\"),\n constant(\"click\"),\n constant(\"clear\"),\n constant(\"clearAll\"),\n constant(\"configure\"),\n constant(\"getConfiguration\"),\n constant(\"configurationChanged\"),\n constant(\"setState\"),\n constant(\"clearOld\"),\n constant(\"activeCountChange\"),\n constant(\"stateChange\")\n);\n\nexport const systemOperationTypesDecoder: Decoder = oneOf<\"getEnvironment\" | \"getBase\" | \"platformShutdown\">(\n constant(\"getEnvironment\"),\n constant(\"getBase\"),\n constant(\"platformShutdown\")\n);\n\nexport const windowRelativeDirectionDecoder: Decoder = oneOf<\"top\" | \"left\" | \"right\" | \"bottom\">(\n constant(\"top\"),\n constant(\"left\"),\n constant(\"right\"),\n constant(\"bottom\")\n);\n\nexport const windowBoundsDecoder: Decoder = object({\n top: number(),\n left: number(),\n width: nonNegativeNumberDecoder,\n height: nonNegativeNumberDecoder\n});\n\nexport const windowOpenSettingsDecoder: Decoder = optional(object({\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder),\n context: optional(anyJson()),\n relativeTo: optional(nonEmptyStringDecoder),\n relativeDirection: optional(windowRelativeDirectionDecoder),\n windowId: optional(nonEmptyStringDecoder),\n layoutComponentId: optional(nonEmptyStringDecoder)\n}));\n\nexport const openWindowConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n url: nonEmptyStringDecoder,\n options: windowOpenSettingsDecoder\n});\n\nexport const windowHelloDecoder: Decoder = object({\n windowId: optional(nonEmptyStringDecoder)\n});\n\nexport const coreWindowDataDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n name: nonEmptyStringDecoder\n});\n\nexport const simpleWindowDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder\n});\n\nexport const helloSuccessDecoder: Decoder = object({\n windows: array(coreWindowDataDecoder),\n isWorkspaceFrame: boolean()\n});\n\n\nexport const windowTitleConfigDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n title: string()\n});\n\nexport const focusEventDataDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n hasFocus: boolean()\n});\n\nexport const windowMoveResizeConfigDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder),\n relative: optional(boolean())\n});\n\nexport const windowBoundsResultDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n bounds: object({\n top: number(),\n left: number(),\n width: nonNegativeNumberDecoder,\n height: nonNegativeNumberDecoder\n })\n});\n\nexport const frameWindowBoundsResultDecoder: Decoder = object({\n bounds: object({\n top: number(),\n left: number(),\n width: nonNegativeNumberDecoder,\n height: nonNegativeNumberDecoder\n })\n});\n\nexport const windowUrlResultDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n url: nonEmptyStringDecoder\n});\n\nexport const anyDecoder: Decoder = anyJson();\n\nexport const boundsDecoder: Decoder> = object({\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n});\n\nexport const instanceDataDecoder: Decoder = object({\n id: nonEmptyStringDecoder,\n applicationName: nonEmptyStringDecoder\n});\n\nexport const applicationDetailsDecoder: Decoder = object({\n url: nonEmptyStringDecoder,\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n});\n\nexport const intentDefinitionDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n displayName: optional(string()),\n contexts: optional(array(string())),\n customConfig: optional(object())\n});\n\nexport const fdc3AppDefinitionDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n appId: optional(nonEmptyStringDecoder),\n manifest: nonEmptyStringDecoder,\n manifestType: nonEmptyStringDecoder,\n tooltip: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n images: optional(array(object({ url: optional(nonEmptyStringDecoder) }))),\n icons: optional(array(object({ icon: optional(nonEmptyStringDecoder) }))),\n customConfig: anyJson(),\n intents: optional(array(intentDefinitionDecoder))\n});\n\nexport const applicationDefinitionDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n customProperties: optional(anyJson()),\n icon: optional(string()),\n caption: optional(string()),\n details: applicationDetailsDecoder,\n intents: optional(array(intentDefinitionDecoder)),\n hidden: optional(boolean()),\n fdc3: optional(decoders.fdc3.v2DefinitionDecoder)\n});\n\nexport const allApplicationDefinitionsDecoder: Decoder = oneOf(\n applicationDefinitionDecoder,\n decoders.fdc3.v2DefinitionDecoder,\n decoders.fdc3.v1DefinitionDecoder\n);\n\nexport const appsImportOperationDecoder: Decoder = object({\n definitions: array(allApplicationDefinitionsDecoder),\n mode: oneOf<\"replace\" | \"merge\">(\n constant(\"replace\"),\n constant(\"merge\")\n )\n});\n\nexport const appRemoveConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder\n});\n\nexport const appsExportOperationDecoder: Decoder = object({\n definitions: array(applicationDefinitionDecoder)\n});\n\nexport const applicationDataDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\n instances: array(instanceDataDecoder),\n userProperties: optional(anyJson()),\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n icon: optional(nonEmptyStringDecoder),\n caption: optional(nonEmptyStringDecoder)\n});\n\nexport const baseApplicationDataDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\n userProperties: anyJson(),\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n icon: optional(nonEmptyStringDecoder),\n caption: optional(nonEmptyStringDecoder)\n});\n\nexport const appDirectoryStateChangeDecoder: Decoder = object({\n appsAdded: array(baseApplicationDataDecoder),\n appsChanged: array(baseApplicationDataDecoder),\n appsRemoved: array(baseApplicationDataDecoder)\n});\n\nexport const appHelloSuccessDecoder: Decoder = object({\n apps: array(applicationDataDecoder),\n initialChannelId: optional(nonEmptyStringDecoder)\n});\n\nexport const basicInstanceDataDecoder: Decoder = object({\n id: nonEmptyStringDecoder\n});\n\nexport const applicationStartConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n waitForAGMReady: boolean(),\n id: optional(nonEmptyStringDecoder),\n context: optional(anyJson()),\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder),\n relativeTo: optional(nonEmptyStringDecoder),\n relativeDirection: optional(windowRelativeDirectionDecoder),\n forceChromeTab: optional(boolean()),\n layoutComponentId: optional(nonEmptyStringDecoder),\n channelId: optional(nonEmptyStringDecoder)\n});\n\nexport const layoutTypeDecoder: Decoder = oneOf<\"Global\" | \"Activity\" | \"ApplicationDefault\" | \"Swimlane\" | \"Workspace\">(\n constant(\"Global\"),\n constant(\"Activity\"),\n constant(\"ApplicationDefault\"),\n constant(\"Swimlane\"),\n constant(\"Workspace\")\n);\n\nexport const componentTypeDecoder: Decoder = oneOf<\"application\" | \"activity\">(\n constant(\"application\"),\n constant(\"activity\")\n);\n\nexport const windowComponentStateDecoder: Decoder = object({\n context: optional(anyJson()),\n bounds: windowBoundsDecoder,\n createArgs: object({\n name: optional(nonEmptyStringDecoder),\n url: optional(nonEmptyStringDecoder),\n context: optional(anyJson())\n }),\n windowState: optional(nonEmptyStringDecoder),\n restoreState: optional(nonEmptyStringDecoder),\n instanceId: nonEmptyStringDecoder,\n isCollapsed: optional(boolean()),\n isSticky: optional(boolean()),\n restoreSettings: object({\n groupId: optional(nonEmptyStringDecoder),\n groupZOrder: optional(number())\n })\n});\n\nexport const windowLayoutComponentDecoder: Decoder = object({\n type: constant(\"window\"),\n componentType: optional(componentTypeDecoder),\n application: nonEmptyStringDecoder,\n state: windowComponentStateDecoder\n});\n\nexport const windowLayoutItemDecoder: Decoder = object({\n type: constant(\"window\"),\n config: object({\n appName: nonEmptyStringDecoder,\n url: optional(nonEmptyStringDecoder),\n title: optional(string()),\n allowExtract: optional(boolean()),\n allowReorder: optional(boolean()),\n showCloseButton: optional(boolean()),\n isMaximized: optional(boolean())\n })\n});\n\nexport const groupLayoutItemDecoder: Decoder = object({\n type: constant(\"group\"),\n config: anyJson(),\n children: array(oneOf(\n windowLayoutItemDecoder\n ))\n});\n\nexport const columnLayoutItemDecoder: Decoder = object({\n type: constant(\"column\"),\n config: anyJson(),\n children: array(oneOf(\n groupLayoutItemDecoder,\n windowLayoutItemDecoder,\n lazy(() => columnLayoutItemDecoder),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n lazy(() => rowLayoutItemDecoder)\n ))\n});\n\nexport const rowLayoutItemDecoder: Decoder = object({\n type: constant(\"row\"),\n config: anyJson(),\n children: array(oneOf(\n columnLayoutItemDecoder,\n groupLayoutItemDecoder,\n windowLayoutItemDecoder,\n lazy(() => rowLayoutItemDecoder)\n ))\n});\n\nexport const workspaceLayoutComponentStateDecoder: Decoder = object({\n config: anyJson(),\n context: anyJson(),\n children: array(oneOf(\n rowLayoutItemDecoder,\n columnLayoutItemDecoder,\n groupLayoutItemDecoder,\n windowLayoutItemDecoder\n ))\n});\n\nexport const workspaceLayoutComponentDecoder: Decoder = object({\n type: constant(\"Workspace\"),\n application: optional(nonEmptyStringDecoder),\n state: workspaceLayoutComponentStateDecoder\n});\n\nexport const workspaceFrameComponentStateDecoder: Decoder = object({\n bounds: windowBoundsDecoder,\n instanceId: nonEmptyStringDecoder,\n selectedWorkspace: nonNegativeNumberDecoder,\n workspaces: array(workspaceLayoutComponentStateDecoder),\n windowState: optional(nonEmptyStringDecoder),\n restoreState: optional(nonEmptyStringDecoder),\n context: optional(anyJson())\n});\n\nexport const workspaceFrameComponentDecoder: Decoder = object({\n type: constant<\"workspaceFrame\">(\"workspaceFrame\"),\n application: nonEmptyStringDecoder,\n componentType: optional(componentTypeDecoder),\n state: workspaceFrameComponentStateDecoder\n});\n\nexport const glueLayoutDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: layoutTypeDecoder,\n components: array(oneOf(\n windowLayoutComponentDecoder,\n workspaceLayoutComponentDecoder,\n workspaceFrameComponentDecoder\n )),\n context: optional(anyJson()),\n metadata: optional(anyJson()),\n version: optional(number())\n});\n\nexport const newLayoutOptionsDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n context: optional(anyJson()),\n metadata: optional(anyJson()),\n instances: optional(array(nonEmptyStringDecoder)),\n ignoreInstances: optional(array(nonEmptyStringDecoder))\n});\n\nexport const restoreOptionsDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n context: optional(anyJson()),\n closeRunningInstance: optional(boolean()),\n closeMe: optional(boolean()),\n timeout: optional(nonNegativeNumberDecoder)\n});\n\nexport const layoutSummaryDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: layoutTypeDecoder,\n context: optional(anyJson()),\n metadata: optional(anyJson())\n});\n\nexport const simpleLayoutConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: layoutTypeDecoder\n});\n\nexport const saveLayoutConfigDecoder: Decoder = object({\n layout: newLayoutOptionsDecoder\n});\n\nexport const restoreLayoutConfigDecoder: Decoder = object({\n layout: restoreOptionsDecoder\n});\n\nexport const getAllLayoutsConfigDecoder: Decoder = object({\n type: layoutTypeDecoder\n});\n\nexport const allLayoutsFullConfigDecoder: Decoder = object({\n layouts: array(glueLayoutDecoder)\n});\n\nexport const importModeDecoder: Decoder<\"replace\" | \"merge\"> = oneOf<\"replace\" | \"merge\">(\n constant(\"replace\"),\n constant(\"merge\")\n);\n\nexport const layoutsImportConfigDecoder: Decoder = object({\n layouts: array(glueLayoutDecoder),\n mode: importModeDecoder,\n isManagerOperation: optional(boolean())\n});\n\nexport const allLayoutsSummariesResultDecoder: Decoder = object({\n summaries: array(layoutSummaryDecoder)\n});\n\nexport const simpleLayoutResultDecoder: Decoder = object({\n layout: glueLayoutDecoder\n});\n\nexport const optionalSimpleLayoutResult: Decoder = object({\n layout: optional(glueLayoutDecoder)\n});\n\nexport const setDefaultGlobalConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder\n});\n\nexport const intentsOperationTypesDecoder: Decoder = oneOf<\"findIntent\" | \"getIntents\" | \"raiseIntent\" | \"raise\" | \"filterHandlers\">(\n constant(\"findIntent\"),\n constant(\"getIntents\"),\n constant(\"raiseIntent\"),\n constant(\"raise\"),\n constant(\"filterHandlers\")\n);\n\nexport const intentHandlerDecoder: Decoder = object({\n applicationName: nonEmptyStringDecoder,\n applicationTitle: optional(string()),\n applicationDescription: optional(string()),\n applicationIcon: optional(string()),\n type: oneOf<\"app\" | \"instance\">(constant(\"app\"), constant(\"instance\")),\n displayName: optional(string()),\n contextTypes: optional(array(nonEmptyStringDecoder)),\n instanceId: optional(string()),\n instanceTitle: optional(string()),\n resultType: optional(string())\n});\n\nexport const resolverIntentHandlerDecoder = object({\n applicationName: string(),\n applicationIcon: optional(string()),\n instanceId: optional(string()),\n});\n\nexport const intentResolverResponseDecoder: Decoder = object({\n intent: nonEmptyStringDecoder,\n handler: intentHandlerDecoder\n});\n\nconst intentDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n handlers: array(intentHandlerDecoder)\n});\n\nconst intentTargetDecoder: Decoder<\"startNew\" | \"reuse\" | { app?: string; instance?: string }> = oneOf<\"startNew\" | \"reuse\" | { app?: string; instance?: string }>(\n constant(\"startNew\"),\n constant(\"reuse\"),\n object({\n app: optional(nonEmptyStringDecoder),\n instance: optional(nonEmptyStringDecoder)\n })\n);\n\nconst intentContextDecoder: Decoder = object({\n type: optional(nonEmptyStringDecoder),\n data: optional(anyJson())\n});\n\nexport const intentsDecoder: Decoder = array(intentDecoder);\n\nexport const wrappedIntentsDecoder: Decoder = object({\n intents: intentsDecoder\n});\n\nexport const intentFilterDecoder: Decoder = object({\n name: optional(nonEmptyStringDecoder),\n contextType: optional(nonEmptyStringDecoder),\n resultType: optional(nonEmptyStringDecoder)\n});\n\nexport const findFilterDecoder: Decoder = oneOf(\n nonEmptyStringDecoder,\n intentFilterDecoder\n);\n\nexport const wrappedIntentFilterDecoder: Decoder = object({\n filter: optional(intentFilterDecoder)\n});\n\nexport const intentRequestDecoder: Decoder = object({\n intent: nonEmptyStringDecoder,\n target: optional(intentTargetDecoder),\n context: optional(intentContextDecoder),\n options: optional(windowOpenSettingsDecoder),\n handlers: optional(array(intentHandlerDecoder)),\n timeout: optional(nonNegativeNumberDecoder),\n waitUserResponseIndefinitely: optional(boolean())\n});\n\nexport const raiseRequestDecoder: Decoder = oneOf(\n nonEmptyStringDecoder,\n intentRequestDecoder\n);\n\nexport const resolverConfigDecoder: Decoder = object({\n enabled: boolean(),\n appName: nonEmptyStringDecoder,\n waitResponseTimeout: number()\n});\n\nexport const raiseIntentRequestDecoder: Decoder = object({\n intentRequest: intentRequestDecoder,\n resolverConfig: resolverConfigDecoder\n});\n\nexport const intentResultDecoder: Decoder = object({\n request: intentRequestDecoder,\n handler: intentHandlerDecoder,\n result: anyJson()\n});\n\nexport const handlersFilterDecoder: Decoder = object({\n title: optional(nonEmptyStringDecoder),\n openResolver: optional(boolean()),\n timeout: optional(nonNegativeNumberDecoder),\n intent: optional(nonEmptyStringDecoder),\n contextTypes: optional(array(nonEmptyStringDecoder)),\n resultType: optional(nonEmptyStringDecoder),\n applicationNames: optional(array(nonEmptyStringDecoder))\n});\n\nexport const filterHandlersResultDecoder: Decoder = object({\n handlers: array(intentHandlerDecoder)\n});\n\nexport const filterHandlersWithResolverConfigDecoder: Decoder = object({\n filterHandlersRequest: handlersFilterDecoder,\n resolverConfig: resolverConfigDecoder\n});\n\nexport const AddIntentListenerRequestDecoder: Decoder = object({\n intent: nonEmptyStringDecoder,\n contextTypes: optional(array(nonEmptyStringDecoder)),\n displayName: optional(string()),\n icon: optional(string()),\n description: optional(string()),\n resultType: optional(string())\n});\n\nexport const AddIntentListenerDecoder: Decoder = oneOf(\n nonEmptyStringDecoder,\n AddIntentListenerRequestDecoder\n);\n\nexport const intentInfoDecoder: Decoder = object({\n intent: nonEmptyStringDecoder,\n contextTypes: optional(array(nonEmptyStringDecoder)),\n description: optional(nonEmptyStringDecoder),\n displayName: optional(nonEmptyStringDecoder),\n icon: optional(nonEmptyStringDecoder),\n resultType: optional(nonEmptyStringDecoder)\n});\n\nexport const getIntentsResultDecoder: Decoder = object({\n intents: array(intentInfoDecoder)\n});\n\nexport const channelNameDecoder = (channelNames: string[]): Decoder => {\n return nonEmptyStringDecoder.where(s => channelNames.includes(s), \"Expected a valid channel name\");\n};\n\nexport const interopActionSettingsDecoder: Decoder = object({\n method: nonEmptyStringDecoder,\n arguments: optional(anyJson()),\n target: optional(oneOf<\"all\" | \"best\">(\n constant(\"all\"),\n constant(\"best\")\n ))\n});\n\nexport const glue42NotificationActionDecoder: Decoder = object({\n action: string(),\n title: nonEmptyStringDecoder,\n icon: optional(string()),\n interop: optional(interopActionSettingsDecoder)\n});\n\nexport const notificationStateDecoder: Decoder = oneOf<\"Active\" | \"Acknowledged\" | \"Seen\" | \"Closed\" | \"Stale\" | \"Snoozed\" | \"Processing\">(\n constant(\"Active\"),\n constant(\"Acknowledged\"),\n constant(\"Seen\"),\n constant(\"Closed\"),\n constant(\"Stale\"),\n constant(\"Snoozed\"),\n constant(\"Processing\")\n);\n\nexport const activeNotificationsCountChangeDecoder: Decoder = object({\n count: number()\n});\n\nexport const notificationDefinitionDecoder: Decoder = object({\n badge: optional(string()),\n body: optional(string()),\n data: optional(anyJson()),\n dir: optional(oneOf<\"auto\" | \"ltr\" | \"rtl\">(\n constant(\"auto\"),\n constant(\"ltr\"),\n constant(\"rtl\")\n )),\n icon: optional(string()),\n image: optional(string()),\n lang: optional(string()),\n renotify: optional(boolean()),\n requireInteraction: optional(boolean()),\n silent: optional(boolean()),\n tag: optional(string()),\n timestamp: optional(nonNegativeNumberDecoder),\n vibrate: optional(array(number()))\n});\n\nexport const glue42NotificationOptionsDecoder: Decoder = object({\n title: nonEmptyStringDecoder,\n clickInterop: optional(interopActionSettingsDecoder),\n actions: optional(array(glue42NotificationActionDecoder)),\n focusPlatformOnDefaultClick: optional(boolean()),\n badge: optional(string()),\n body: optional(string()),\n data: optional(anyJson()),\n dir: optional(oneOf<\"auto\" | \"ltr\" | \"rtl\">(\n constant(\"auto\"),\n constant(\"ltr\"),\n constant(\"rtl\")\n )),\n icon: optional(string()),\n image: optional(string()),\n lang: optional(string()),\n renotify: optional(boolean()),\n requireInteraction: optional(boolean()),\n silent: optional(boolean()),\n tag: optional(string()),\n timestamp: optional(nonNegativeNumberDecoder),\n vibrate: optional(array(number())),\n severity: optional(oneOf<\"Low\" | \"Medium\" | \"High\" | \"Critical\" | \"None\">(\n constant(\"Low\"),\n constant(\"None\"),\n constant(\"Medium\"),\n constant(\"High\"),\n constant(\"Critical\")\n )),\n showToast: optional(boolean()),\n showInPanel: optional(boolean()),\n state: optional(notificationStateDecoder)\n});\n\nexport const notificationSetStateRequestDecoder: Decoder = object({\n id: nonEmptyStringDecoder,\n state: notificationStateDecoder\n}); \n\nexport const channelContextDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n meta: object({\n color: nonEmptyStringDecoder\n }),\n data: optional(object()),\n});\n\n\nexport const raiseNotificationDecoder: Decoder = object({\n settings: glue42NotificationOptionsDecoder,\n id: nonEmptyStringDecoder\n});\n\nexport const raiseNotificationResultDecoder: Decoder = object({\n settings: glue42NotificationOptionsDecoder\n});\n\nexport const permissionRequestResultDecoder: Decoder = object({\n permissionGranted: boolean()\n});\n\nexport const permissionQueryResultDecoder: Decoder = object({\n permission: oneOf<\"default\" | \"granted\" | \"denied\">(\n constant(\"default\"),\n constant(\"granted\"),\n constant(\"denied\")\n )\n});\n\nexport const notificationEventPayloadDecoder: Decoder = object({\n definition: notificationDefinitionDecoder,\n action: optional(string()),\n id: optional(nonEmptyStringDecoder)\n});\n\nexport const notificationFilterDecoder: Decoder = object({\n allowed: optional(array(nonEmptyStringDecoder)),\n blocked: optional(array(nonEmptyStringDecoder))\n});\n\nexport const notificationsConfigurationDecoder: Decoder = object({\n enable: optional(boolean()),\n enableToasts: optional(boolean()),\n sourceFilter: optional(notificationFilterDecoder),\n}); \n\nexport const notificationsConfigurationProtocolDecoder: Decoder = object({\n configuration: notificationsConfigurationDecoder\n});\n\nexport const strictNotificationsConfigurationProtocolDecoder: Decoder = object({\n configuration: object({\n enable: boolean(),\n enableToasts: boolean(),\n sourceFilter: object({\n allowed: array(nonEmptyStringDecoder),\n blocked: array(nonEmptyStringDecoder)\n })\n })\n});\n\nexport const platformSaveRequestConfigDecoder: Decoder = object({\n layoutType: oneOf<\"Global\" | \"Workspace\">(\n constant(\"Global\"),\n constant(\"Workspace\")\n ),\n layoutName: nonEmptyStringDecoder,\n context: optional(anyJson())\n});\n\nexport const saveRequestClientResponseDecoder: Decoder = object({\n windowContext: optional(anyJson()),\n});\n\nexport const permissionStateResultDecoder: Decoder = object({\n state: oneOf<\"prompt\" | \"granted\" | \"denied\">(\n constant(\"prompt\"),\n constant(\"denied\"),\n constant(\"granted\")\n )\n});\n\nexport const simpleAvailabilityResultDecoder: Decoder = object({\n isAvailable: boolean()\n});\n\nexport const simpleItemIdDecoder: Decoder = object({\n itemId: nonEmptyStringDecoder\n});\n\nexport const operationCheckResultDecoder: Decoder = object({\n isSupported: boolean()\n});\n\nexport const operationCheckConfigDecoder: Decoder = object({\n operation: nonEmptyStringDecoder\n});\n\nexport const workspaceFrameBoundsResultDecoder: Decoder = object({\n bounds: windowBoundsDecoder\n});\n\nexport const themeDecoder: Decoder = object({\n displayName: nonEmptyStringDecoder,\n name: nonEmptyStringDecoder\n});\n\nexport const simpleThemeResponseDecoder: Decoder = object({\n theme: themeDecoder\n});\n\nexport const allThemesResponseDecoder: Decoder = object({\n themes: array(themeDecoder)\n});\n\nexport const selectThemeConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder\n});\n\nexport const notificationsDataDecoder: Decoder = object({\n id: nonEmptyStringDecoder,\n title: nonEmptyStringDecoder,\n clickInterop: optional(interopActionSettingsDecoder),\n actions: optional(array(glue42NotificationActionDecoder)),\n focusPlatformOnDefaultClick: optional(boolean()),\n badge: optional(string()),\n body: optional(string()),\n data: optional(anyJson()),\n dir: optional(oneOf<\"auto\" | \"ltr\" | \"rtl\">(\n constant(\"auto\"),\n constant(\"ltr\"),\n constant(\"rtl\")\n )),\n icon: optional(string()),\n image: optional(string()),\n lang: optional(string()),\n renotify: optional(boolean()),\n requireInteraction: optional(boolean()),\n silent: optional(boolean()),\n tag: optional(string()),\n timestamp: optional(nonNegativeNumberDecoder),\n vibrate: optional(array(number())),\n severity: optional(oneOf<\"Low\" | \"Medium\" | \"High\" | \"Critical\" | \"None\">(\n constant(\"Low\"),\n constant(\"None\"),\n constant(\"Medium\"),\n constant(\"High\"),\n constant(\"Critical\")\n )),\n showToast: optional(boolean()),\n showInPanel: optional(boolean()),\n state: optional(notificationStateDecoder)\n});\n\nexport const simpleNotificationDataDecoder: Decoder = object({\n notification: notificationsDataDecoder\n});\n\nexport const allNotificationsDataDecoder: Decoder = object({\n notifications: array(notificationsDataDecoder)\n});\n\nexport const simpleNotificationSelectDecoder: Decoder = object({\n id: nonEmptyStringDecoder\n});\n\nexport const getWindowIdsOnChannelDataDecoder: Decoder<{ channel: string }> = object({\n channel: nonEmptyStringDecoder\n});\n\nexport const getWindowIdsOnChannelResultDecoder: Decoder = object({\n windowIds: array(nonEmptyStringDecoder)\n});\n\nexport const channelsOperationTypesDecoder: Decoder = oneOf<\"addChannel\" | \"getMyChannel\" | \"getWindowIdsOnChannel\" | \"getWindowIdsWithChannels\" | \"joinChannel\">(\n constant(\"addChannel\"),\n constant(\"getMyChannel\"),\n constant(\"getWindowIdsOnChannel\"),\n constant(\"getWindowIdsWithChannels\"),\n constant(\"joinChannel\"),\n);\n\nexport const getMyChanelResultDecoder: Decoder = object({\n channel: optional(nonEmptyStringDecoder)\n});\n\nexport const windowWithChannelFilterDecoder: Decoder = object({\n application: optional(nonEmptyStringDecoder),\n channels: optional(array(nonEmptyStringDecoder)),\n windowIds: optional(array(nonEmptyStringDecoder))\n});\n\nexport const wrappedWindowWithChannelFilterDecoder: Decoder = object({\n filter: optional(windowWithChannelFilterDecoder)\n});\n\nexport const getWindowIdsWithChannelsResultDecoder: Decoder = object({\n windowIdsWithChannels: array(object({\n application: nonEmptyStringDecoder,\n channel: optional(nonEmptyStringDecoder),\n windowId: nonEmptyStringDecoder\n }))\n});\nexport const startApplicationContextDecoder = optional(anyJson());\n\nexport const startApplicationOptionsDecoder: Decoder = optional(object({\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder),\n relativeTo: optional(nonEmptyStringDecoder),\n relativeDirection: optional(windowRelativeDirectionDecoder),\n waitForAGMReady: optional(boolean()),\n channelId: optional(nonEmptyStringDecoder),\n reuseId: optional(nonEmptyStringDecoder),\n}));\n\nexport const joinChannelDataDecoder: Decoder = object({\n channel: nonEmptyStringDecoder,\n windowId: nonEmptyStringDecoder\n});\n\nexport const windowChannelResultDecoder: Decoder = object({\n channel: optional(nonEmptyStringDecoder),\n});\n\nexport const prefsOperationTypesDecoder: Decoder = oneOf<\"clear\" | \"clearAll\" | \"get\" | \"getAll\" | \"set\" | \"update\" | \"prefsChanged\" | \"prefsHello\">(\n constant(\"clear\"),\n constant(\"clearAll\"),\n constant(\"get\"),\n constant(\"getAll\"),\n constant(\"set\"),\n constant(\"update\"),\n constant(\"prefsChanged\"),\n constant(\"prefsHello\"),\n);\n\nexport const appPreferencesDecoder: Decoder = object({\n app: nonEmptyStringDecoder,\n data: object(), \n lastUpdate: optional(nonEmptyStringDecoder),\n});\n\nexport const basePrefsConfigDecoder: Decoder = object({\n app: nonEmptyStringDecoder,\n});\n\nexport const getPrefsResultDecoder: Decoder<{ prefs: IOConnectBrowser.Prefs.AppPreferences }> = object({\n prefs: appPreferencesDecoder,\n});\n\nexport const getAllPrefsResultDecoder: Decoder<{ all: IOConnectBrowser.Prefs.AppPreferences[] }> = object({\n all: array(appPreferencesDecoder),\n});\n\nexport const changePrefsDataDecoder: Decoder<{ app: string, data: any }> = object({\n app: nonEmptyStringDecoder,\n data: object(),\n});\n\nexport const prefsHelloSuccessDecoder: Decoder = object({\n platform: object({\n app: nonEmptyStringDecoder,\n }),\n});\n","import { IOConnectBrowser } from \"../../browser\";\nimport { openWindowConfigDecoder, coreWindowDataDecoder, windowHelloDecoder, helloSuccessDecoder, simpleWindowDecoder, windowBoundsResultDecoder, windowUrlResultDecoder, windowMoveResizeConfigDecoder, windowTitleConfigDecoder, frameWindowBoundsResultDecoder, focusEventDataDecoder, windowChannelResultDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\nimport { WebWindowModel } from \"./webWindow\";\n\nexport type WindowOperationTypes = \"openWindow\" | \"getBounds\" | \"getFrameBounds\" |\n \"windowHello\" | \"windowAdded\" | \"windowRemoved\" | \"getUrl\" |\n \"moveResize\" | \"focus\" | \"close\" | \"getTitle\" | \"setTitle\" | \"focusChange\" |\n \"getChannel\";\n\nexport const operations: { [key in WindowOperationTypes]: BridgeOperation } = {\n openWindow: { name: \"openWindow\", dataDecoder: openWindowConfigDecoder, resultDecoder: coreWindowDataDecoder },\n windowHello: { name: \"windowHello\", dataDecoder: windowHelloDecoder, resultDecoder: helloSuccessDecoder },\n windowAdded: { name: \"windowAdded\", dataDecoder: coreWindowDataDecoder },\n windowRemoved: { name: \"windowRemoved\", dataDecoder: simpleWindowDecoder },\n getBounds: { name: \"getBounds\", dataDecoder: simpleWindowDecoder, resultDecoder: windowBoundsResultDecoder },\n getFrameBounds: { name: \"getFrameBounds\", dataDecoder: simpleWindowDecoder, resultDecoder: frameWindowBoundsResultDecoder },\n getUrl: { name: \"getUrl\", dataDecoder: simpleWindowDecoder, resultDecoder: windowUrlResultDecoder },\n moveResize: { name: \"moveResize\", dataDecoder: windowMoveResizeConfigDecoder },\n focus: { name: \"focus\", dataDecoder: simpleWindowDecoder },\n close: { name: \"close\", dataDecoder: simpleWindowDecoder },\n getTitle: { name: \"getTitle\", dataDecoder: simpleWindowDecoder, resultDecoder: windowTitleConfigDecoder },\n setTitle: { name: \"setTitle\", dataDecoder: windowTitleConfigDecoder },\n focusChange: { name: \"focusChange\", dataDecoder: focusEventDataDecoder },\n getChannel: { name: \"getChannel\", dataDecoder: simpleWindowDecoder, resultDecoder: windowChannelResultDecoder },\n};\n\nexport interface WindowProjection {\n id: string;\n model: WebWindowModel;\n api: IOConnectBrowser.Windows.WebWindow;\n}\n\nexport interface WindowHello {\n windowId?: string;\n}\n\nexport interface OpenWindowConfig {\n name: string;\n url: string;\n options?: IOConnectBrowser.Windows.Settings;\n}\n\nexport interface FocusEventData {\n windowId: string;\n hasFocus: boolean;\n}\n\nexport interface SimpleWindowCommand {\n windowId: string;\n}\n\nexport interface WindowTitleConfig {\n windowId: string;\n title: string;\n}\n\nexport interface WindowMoveResizeConfig {\n windowId: string;\n top?: number;\n left?: number;\n width?: number;\n height?: number;\n relative?: boolean;\n}\n\nexport interface HelloSuccess {\n windows: CoreWindowData[];\n isWorkspaceFrame: boolean;\n}\n\nexport interface CoreWindowData {\n windowId: string;\n name: string;\n}\n\nexport interface WindowBoundsResult {\n windowId: string;\n bounds: IOConnectBrowser.Windows.Bounds;\n}\n\nexport interface FrameWindowBoundsResult {\n bounds: IOConnectBrowser.Windows.Bounds;\n}\n\nexport interface WindowUrlResult {\n windowId: string;\n url: string;\n}\n\nexport interface WindowChannelResult {\n channel?: string;\n}\n","\"use strict\";\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\n;\ncreateRegistry.default = createRegistry;\nmodule.exports = createRegistry;\n//# sourceMappingURL=index.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { number } from \"decoder-validate\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { anyDecoder, boundsDecoder, nonEmptyStringDecoder, nonNegativeNumberDecoder } from \"../shared/decoders\";\nimport { operations, SimpleWindowCommand, WindowBoundsResult, WindowChannelResult, WindowMoveResizeConfig, WindowTitleConfig, WindowUrlResult } from \"./protocol\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\n\nexport class WebWindowModel {\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private readonly myCtxKey: string;\n private ctxUnsubscribe: UnsubscribeFunction | undefined;\n private me!: IOConnectBrowser.Windows.WebWindow;\n\n constructor(private readonly _id: string, private readonly _name: string, private readonly _bridge: GlueBridge) {\n this.myCtxKey = `___window___${this.id}`;\n }\n\n public get id(): string {\n return this._id.slice();\n }\n\n public get name(): string {\n return this._name.slice();\n }\n\n public clean(): void {\n if (this.ctxUnsubscribe) {\n this.ctxUnsubscribe();\n }\n }\n\n public processSelfFocusEvent(hasFocus: boolean): void {\n this.me.isFocused = hasFocus;\n\n this.registry.execute(\"focus-change\", this.me);\n }\n\n public async toApi(): Promise {\n\n this.ctxUnsubscribe = await this._bridge.contextLib.subscribe(this.myCtxKey, (data) => this.registry.execute(\"context-updated\", data));\n\n this.me = {\n id: this.id,\n name: this.name,\n isFocused: false,\n getURL: this.getURL.bind(this),\n moveResize: this.moveResize.bind(this),\n resizeTo: this.resizeTo.bind(this),\n moveTo: this.moveTo.bind(this),\n focus: this.focus.bind(this),\n close: this.close.bind(this),\n getTitle: this.getTitle.bind(this),\n setTitle: this.setTitle.bind(this),\n getBounds: this.getBounds.bind(this),\n getContext: this.getContext.bind(this),\n updateContext: this.updateContext.bind(this),\n setContext: this.setContext.bind(this),\n onContextUpdated: this.onContextUpdated.bind(this),\n onFocusChanged: this.onFocusChanged.bind(this),\n getChannel: this.getChannel.bind(this),\n };\n\n return this.me;\n }\n\n private async getURL(): Promise {\n const result = await this._bridge.send(\"windows\", operations.getUrl, { windowId: this.id });\n return result.url;\n }\n\n private onFocusChanged(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to context changes, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"focus-change\", callback);\n }\n\n private async moveResize(dimension: Partial): Promise {\n const targetBounds = boundsDecoder.runWithException(dimension);\n\n const commandArgs = Object.assign({}, targetBounds, { windowId: this.id, relative: false });\n\n await this._bridge.send(\"windows\", operations.moveResize, commandArgs);\n\n return this.me;\n }\n\n private async resizeTo(width?: number, height?: number): Promise {\n if (typeof width === \"undefined\" && typeof height === \"undefined\") {\n return this.me;\n }\n\n if (typeof width !== \"undefined\") {\n nonNegativeNumberDecoder.runWithException(width);\n }\n\n if (typeof height !== \"undefined\") {\n nonNegativeNumberDecoder.runWithException(height);\n }\n\n const commandArgs = Object.assign({}, { width, height }, { windowId: this.id, relative: true });\n\n await this._bridge.send(\"windows\", operations.moveResize, commandArgs);\n\n return this.me;\n }\n\n private async moveTo(top?: number, left?: number): Promise {\n if (typeof top === \"undefined\" && typeof left === \"undefined\") {\n return this.me;\n }\n\n if (typeof top !== \"undefined\") {\n number().runWithException(top);\n }\n\n if (typeof left !== \"undefined\") {\n number().runWithException(left);\n }\n\n const commandArgs = Object.assign({}, { top, left }, { windowId: this.id, relative: true });\n\n await this._bridge.send(\"windows\", operations.moveResize, commandArgs);\n\n return this.me;\n }\n\n private async focus(): Promise {\n if (this.name === \"Platform\") {\n window.open(undefined, this.id);\n } else {\n await this._bridge.send(\"windows\", operations.focus, { windowId: this.id });\n }\n\n return this.me;\n }\n\n private async close(): Promise {\n await this._bridge.send(\"windows\", operations.close, { windowId: this.id });\n\n return this.me;\n }\n\n private async getTitle(): Promise {\n const result = await this._bridge.send(\"windows\", operations.getTitle, { windowId: this.id });\n\n return result.title;\n }\n\n private async setTitle(title: string): Promise {\n const ttl = nonEmptyStringDecoder.runWithException(title);\n\n await this._bridge.send(\"windows\", operations.setTitle, { windowId: this.id, title: ttl });\n\n return this.me;\n }\n\n private async getBounds(): Promise {\n const result = await this._bridge.send(\"windows\", operations.getBounds, { windowId: this.id });\n\n return result.bounds;\n }\n\n private async getContext(): Promise {\n const ctx = await this._bridge.contextLib.get(this.myCtxKey);\n return ctx;\n }\n\n private async updateContext(context: any): Promise {\n const ctx = anyDecoder.runWithException(context);\n\n await this._bridge.contextLib.update(this.myCtxKey, ctx);\n\n return this.me;\n }\n\n private async setContext(context: any): Promise {\n const ctx = anyDecoder.runWithException(context);\n\n await this._bridge.contextLib.set(this.myCtxKey, ctx);\n\n return this.me;\n }\n\n private onContextUpdated(callback: (context: any, window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to context changes, because the provided callback is not a function!\");\n }\n\n const wrappedCallback = (data: any): void => {\n callback(data, this.me);\n };\n\n return this.registry.add(\"context-updated\", wrappedCallback);\n }\n\n private async getChannel(): Promise {\n const result = await this._bridge.send(\"windows\", operations.getChannel, { windowId: this.id }, undefined, { includeOperationCheck: true });\n\n return result.channel as string;\n }\n}\n","import { operationCheckConfigDecoder, operationCheckResultDecoder, simpleItemIdDecoder, workspaceFrameBoundsResultDecoder } from \"./decoders\";\nimport { BridgeOperation } from \"./types\";\n\nexport type SystemOperationTypes = \"operationCheck\" | \"getWorkspaceWindowFrameBounds\";\n\nexport const systemOperations: { [key in SystemOperationTypes]: BridgeOperation } = {\n operationCheck: { name: \"operationCheck\", dataDecoder: operationCheckConfigDecoder, resultDecoder: operationCheckResultDecoder },\n getWorkspaceWindowFrameBounds: { name: \"getWorkspaceWindowFrameBounds\", resultDecoder: workspaceFrameBoundsResultDecoder, dataDecoder: simpleItemIdDecoder }\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nexport const PromiseWrap = (promise: () => Promise, timeoutMilliseconds: number, timeoutMessage?: string): Promise => {\r\n return new Promise((resolve, reject) => {\r\n\r\n let promiseActive = true;\r\n\r\n const timeout = setTimeout(() => {\r\n if (!promiseActive) {\r\n return;\r\n }\r\n promiseActive = false;\r\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\r\n\r\n reject(message);\r\n }, timeoutMilliseconds);\r\n\r\n promise()\r\n .then((result) => {\r\n if (!promiseActive) {\r\n return;\r\n }\r\n promiseActive = false;\r\n clearTimeout(timeout);\r\n resolve(result);\r\n })\r\n .catch((error) => {\r\n if (!promiseActive) {\r\n return;\r\n }\r\n promiseActive = false;\r\n clearTimeout(timeout);\r\n reject(error);\r\n });\r\n });\r\n};\r\n\r\nexport const PromisePlus = (executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void, timeoutMilliseconds: number, timeoutMessage?: string): Promise => {\r\n\r\n return new Promise((resolve, reject) => {\r\n const timeout = setTimeout(() => {\r\n\r\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\r\n\r\n reject(message);\r\n }, timeoutMilliseconds);\r\n\r\n const providedPromise = new Promise(executor);\r\n\r\n providedPromise\r\n .then((result) => {\r\n clearTimeout(timeout);\r\n resolve(result);\r\n })\r\n .catch((error) => {\r\n clearTimeout(timeout);\r\n reject(error);\r\n });\r\n });\r\n\r\n};\r\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { nonEmptyStringDecoder, windowOpenSettingsDecoder, windowOperationTypesDecoder } from \"../shared/decoders\";\nimport { LibController, OperationCheckConfig, OperationCheckResult } from \"../shared/types\";\nimport { HelloSuccess, OpenWindowConfig, CoreWindowData, WindowHello, operations, WindowBoundsResult, WindowTitleConfig, WindowUrlResult, WindowMoveResizeConfig, WindowProjection, FocusEventData, WindowChannelResult } from \"./protocol\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { IoC } from \"../shared/ioc\";\nimport { systemOperations } from \"../shared/systemOperations\";\nimport { PromisePlus } from \"../shared/promise-plus\";\nimport { ChannelsController } from \"../channels/controller\";\n\nexport class WindowsController implements LibController {\n\n private focusEventHandler?: () => void;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private platformRegistration!: Promise;\n private ioc!: IoC;\n private bridge!: GlueBridge;\n private publicWindowId!: string;\n private allWindowProjections: WindowProjection[] = [];\n private me?: IOConnectBrowser.Windows.WebWindow;\n private logger!: IOConnectBrowser.Logger.API;\n private isWorkspaceFrame?: boolean;\n private instanceId!: string;\n private channelsController!: ChannelsController;\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n\n this.logger = coreGlue.logger.subLogger(\"windows.controller.web\");\n\n this.logger.trace(\"starting the web windows controller\");\n\n this.publicWindowId = ioc.publicWindowId;\n\n this.addWindowOperationExecutors();\n\n this.ioc = ioc;\n this.bridge = ioc.bridge;\n this.instanceId = coreGlue.interop.instance.instance as string;\n\n this.channelsController = ioc.channelsController;\n\n this.logger.trace(`set the public window id: ${this.publicWindowId}, set the bridge operations and ioc, registering with the platform now`);\n\n this.platformRegistration = this.registerWithPlatform();\n\n await this.platformRegistration;\n\n await this.initializeFocusTracking();\n\n this.logger.trace(\"registration with the platform successful, attaching the windows property to glue and returning\");\n\n const api = this.toApi();\n\n (coreGlue as IOConnectBrowser.API).windows = api;\n }\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n this.allWindowProjections = [];\n\n if (!this.focusEventHandler) {\n return;\n }\n\n document.removeEventListener(\"visibilityChange\", this.focusEventHandler);\n window.removeEventListener(\"focus\", this.focusEventHandler);\n window.removeEventListener(\"blur\", this.focusEventHandler);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public async handleBridgeMessage(args: any): Promise {\n await this.platformRegistration;\n\n const operationName = windowOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private async open(name: string, url: string, options?: IOConnectBrowser.Windows.Settings): Promise {\n nonEmptyStringDecoder.runWithException(name);\n nonEmptyStringDecoder.runWithException(url);\n // layoutComponentId is a hidden property for global layouts\n const settings = windowOpenSettingsDecoder.runWithException(options);\n\n const windowSuccess = await this.bridge.send(\"windows\", operations.openWindow, { name, url, options: settings });\n\n return this.waitForWindowAdded(windowSuccess.windowId);\n }\n\n private list(): IOConnectBrowser.Windows.WebWindow[] {\n return this.allWindowProjections.map((projection) => projection.api);\n }\n\n public findById(id: string): IOConnectBrowser.Windows.WebWindow | undefined {\n nonEmptyStringDecoder.runWithException(id);\n\n return this.allWindowProjections.find((projection) => projection.id === id)?.api;\n }\n\n private toApi(): IOConnectBrowser.Windows.API {\n return {\n open: this.open.bind(this),\n my: this.my.bind(this),\n list: this.list.bind(this),\n findById: this.findById.bind(this),\n onWindowAdded: this.onWindowAdded.bind(this),\n onWindowRemoved: this.onWindowRemoved.bind(this),\n onWindowGotFocus: this.onWindowGotFocus.bind(this),\n onWindowLostFocus: this.onWindowLostFocus.bind(this)\n };\n }\n\n private addWindowOperationExecutors(): void {\n operations.focusChange.execute = this.handleFocusChangeEvent.bind(this);\n operations.windowAdded.execute = this.handleWindowAdded.bind(this);\n operations.windowRemoved.execute = this.handleWindowRemoved.bind(this);\n operations.getBounds.execute = this.handleGetBounds.bind(this);\n operations.getFrameBounds.execute = this.handleGetBounds.bind(this);\n operations.getTitle.execute = this.handleGetTitle.bind(this);\n operations.getUrl.execute = this.handleGetUrl.bind(this);\n operations.moveResize.execute = this.handleMoveResize.bind(this);\n operations.setTitle.execute = this.handleSetTitle.bind(this);\n operations.getChannel.execute = this.handleGetChannel.bind(this);\n }\n\n public my(): IOConnectBrowser.Windows.WebWindow {\n return Object.assign({}, this.me);\n }\n\n private onWindowAdded(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to window added, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"window-added\", callback);\n }\n\n private onWindowRemoved(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to window removed, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"window-removed\", callback);\n }\n\n private onWindowGotFocus(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onWindowGotFocus, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"window-got-focus\", callback);\n }\n\n private onWindowLostFocus(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onWindowLostFocus, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"window-lost-focus\", callback);\n }\n\n private async sayHello(): Promise {\n const helloSuccess = await this.bridge.send(\"windows\", operations.windowHello, { windowId: this.publicWindowId });\n\n return helloSuccess;\n }\n\n private async registerWithPlatform(): Promise {\n\n const { windows, isWorkspaceFrame } = await this.sayHello();\n\n this.isWorkspaceFrame = isWorkspaceFrame;\n\n this.logger.trace(\"the platform responded to the hello message\");\n\n // if I am an iframe, I am not considered a Glue Window\n if (!this.isWorkspaceFrame && this.publicWindowId) {\n this.logger.trace(\"i am not treated as a workspace frame, setting my window\");\n\n const myWindow = windows.find((w) => w.windowId === this.publicWindowId);\n\n if (!myWindow) {\n throw new Error(\"Cannot initialize the window library, because I received no information about me from the platform\");\n }\n\n const myProjection = await this.ioc.buildWebWindow(this.publicWindowId, myWindow.name);\n\n this.me = myProjection.api;\n\n this.allWindowProjections.push(myProjection);\n }\n\n const currentWindows = await Promise.all(windows\n .filter((w) => w.windowId !== this.publicWindowId)\n .map((w) => this.ioc.buildWebWindow(w.windowId, w.name))\n );\n\n this.logger.trace(\"all windows projections are completed, building the list collection\");\n\n this.allWindowProjections.push(...currentWindows);\n }\n\n private async handleFocusChangeEvent(focusData: FocusEventData): Promise {\n const foundProjection = this.allWindowProjections.find((projection) => projection.id === focusData.windowId);\n\n if (!foundProjection) {\n return;\n }\n\n foundProjection.model.processSelfFocusEvent(focusData.hasFocus);\n\n const keyToExecute = focusData.hasFocus ? \"window-got-focus\" : \"window-lost-focus\";\n\n this.registry.execute(keyToExecute, foundProjection.api);\n }\n\n private async handleWindowAdded(data: CoreWindowData): Promise {\n if (this.allWindowProjections.some((projection) => projection.id === data.windowId)) {\n return;\n }\n\n const webWindowProjection = await this.ioc.buildWebWindow(data.windowId, data.name);\n this.allWindowProjections.push(webWindowProjection);\n\n this.registry.execute(\"window-added\", webWindowProjection.api);\n }\n\n private async handleWindowRemoved(data: CoreWindowData): Promise {\n const removed = this.allWindowProjections.find((w) => w.id === data.windowId);\n\n if (!removed) {\n return;\n }\n\n this.allWindowProjections = this.allWindowProjections.filter((w) => w.id !== data.windowId);\n\n removed.model.clean();\n\n this.registry.execute(\"window-removed\", removed.api);\n }\n\n private async handleGetBounds(): Promise {\n\n if (!this.me && !this.isWorkspaceFrame) {\n throw new Error(\"This window cannot report it's bounds, because it is not a Glue Window, most likely because it is an iframe\");\n }\n\n // this.me is optional, because this handler responds to a workspace frame bounds request and the frame is not a regular GD window\n return {\n windowId: this.isWorkspaceFrame ? \"noop\" : this.me!.id,\n bounds: {\n top: window.screenTop,\n left: window.screenLeft,\n width: window.innerWidth,\n height: window.innerHeight\n }\n };\n }\n\n private async handleGetTitle(): Promise {\n\n if (!this.me) {\n throw new Error(\"This window cannot report it's title, because it is not a Glue Window, most likely because it is an iframe\");\n }\n\n return {\n windowId: this.me.id,\n title: document.title\n };\n }\n\n private async handleGetUrl(): Promise {\n\n if (!this.me) {\n throw new Error(\"This window cannot report it's url, because it is not a Glue Window, most likely because it is an iframe\");\n }\n\n return {\n windowId: this.me.id,\n url: window.location.href\n };\n }\n\n private async handleMoveResize(config: WindowMoveResizeConfig): Promise {\n\n const targetTop = typeof config.top === \"number\" ? config.top :\n config.relative ? 0 : window.screenTop;\n\n const targetLeft = typeof config.left === \"number\" ? config.left :\n config.relative ? 0 : window.screenLeft;\n\n const targetHeight = typeof config.height === \"number\" ? config.height :\n config.relative ? 0 : window.innerHeight;\n\n const targetWidth = typeof config.width === \"number\" ? config.width :\n config.relative ? 0 : window.innerWidth;\n\n const moveMethod = config.relative ? window.moveBy : window.moveTo;\n const resizeMethod = config.relative ? window.resizeBy : window.resizeTo;\n\n moveMethod(targetLeft, targetTop);\n resizeMethod(targetWidth, targetHeight);\n }\n\n private async handleSetTitle(config: WindowTitleConfig): Promise {\n document.title = config.title;\n }\n\n private async initializeFocusTracking(): Promise {\n\n if (this.isWorkspaceFrame) {\n this.logger.trace(\"Ignoring the focus tracking, because this client is a workspace frame\");\n return;\n }\n\n try {\n await this.bridge.send(\"windows\", systemOperations.operationCheck, { operation: \"focusChange\" });\n } catch (error) {\n this.logger.warn(\"The platform of this client is outdated and does not support focus tracking, disabling focus events for this client.\");\n return;\n }\n\n const hasFocus = document.hasFocus();\n\n // every window when opened gaines focus\n await this.transmitFocusChange(true);\n\n if (!hasFocus) {\n // manual focus lost announce in case focus was lost while Web was initializing\n await this.transmitFocusChange(false);\n }\n\n this.defineEventListeners();\n }\n\n private processFocusEvent(): void {\n const hasFocus = document.hasFocus();\n\n this.transmitFocusChange(hasFocus);\n }\n\n private waitForWindowAdded(windowId: string): Promise {\n\n const foundWindow = this.allWindowProjections.find((projection) => projection.id === windowId);\n\n if (foundWindow) {\n return Promise.resolve(foundWindow.api);\n }\n\n return PromisePlus((resolve) => {\n const unsubscribe = this.onWindowAdded((addedWindow) => {\n if (addedWindow.id === windowId) {\n unsubscribe();\n resolve(addedWindow);\n }\n });\n }, 30000, `Timed out waiting for ${windowId} to be announced`);\n }\n\n private async transmitFocusChange(hasFocus: boolean): Promise {\n\n const eventData: FocusEventData = {\n windowId: this.me?.id || `iframe-${this.instanceId}`,\n hasFocus\n };\n\n if (this.me) {\n this.me.isFocused = hasFocus;\n }\n\n await this.bridge.send(\"windows\", operations.focusChange, eventData);\n }\n\n private defineEventListeners(): void {\n\n this.focusEventHandler = this.processFocusEvent.bind(this);\n\n document.addEventListener(\"visibilityChange\", this.focusEventHandler);\n window.addEventListener(\"focus\", this.focusEventHandler);\n window.addEventListener(\"blur\", this.focusEventHandler);\n }\n\n private async handleGetChannel(): Promise {\n\n if (!this.me) {\n throw new Error(\"This window cannot report it's channel, because it is not a Glue Window, most likely because it is an iframe\");\n }\n\n const channel = this.channelsController.my();\n\n return {\n ...(channel ? { channel } : {}),\n };\n }\n}\n","export const GlueWebPlatformControlName = \"T42.Web.Platform.Control\";\n\nexport const GlueWebPlatformStreamName = \"T42.Web.Platform.Stream\";\n\nexport const GlueClientControlName = \"T42.Web.Client.Control\";\n\nexport const GlueCorePlusThemesStream = \"T42.Core.Plus.Themes.Stream\";","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { libDomainDecoder } from \"../shared/decoders\";\nimport { PromisePlus } from \"../shared/promise-plus\";\nimport { systemOperations } from \"../shared/systemOperations\";\nimport { BridgeOperation, LibController, LibDomains, OperationCheckConfig, OperationCheckResult } from \"../shared/types\";\nimport { GlueClientControlName, GlueCorePlusThemesStream, GlueWebPlatformControlName, GlueWebPlatformStreamName } from \"./constants\";\n\nexport class GlueBridge {\n private readonly platformMethodTimeoutMs = 10000;\n private controllers!: { [key in LibDomains]: LibController };\n private sub!: IOConnectCore.AGM.Subscription;\n private running?: boolean;\n\n constructor(private readonly coreGlue: IOConnectCore.API, private readonly communicationId: string) {}\n\n public get contextLib(): IOConnectCore.Contexts.API {\n return this.coreGlue.contexts;\n }\n\n public get interopInstance(): string | undefined {\n return this.coreGlue.interop.instance.instance;\n }\n\n public async stop(): Promise {\n this.running = false;\n this.sub.close();\n await this.coreGlue.interop.unregister(GlueClientControlName);\n }\n\n public async start(controllers: { [key in LibDomains]: LibController }): Promise {\n this.running = true;\n this.controllers = controllers;\n\n await Promise.all([\n this.checkWaitMethod(GlueWebPlatformControlName),\n this.checkWaitMethod(GlueWebPlatformStreamName)\n ]);\n\n // this systemId will be missing if the platform is older than 1.12.X\n const systemId = this.communicationId;\n\n const [sub] = await Promise.all([\n this.coreGlue.interop.subscribe(GlueWebPlatformStreamName, systemId ? { target: { instance: this.communicationId } } : undefined),\n this.coreGlue.interop.registerAsync(GlueClientControlName, (args, _, success, error) => this.passMessageController(args, success, error))\n ]);\n\n this.sub = sub;\n\n this.sub.onData((pkg) => this.passMessageController(pkg.data));\n }\n\n public getInteropInstance(windowId: string): IOConnectCore.Interop.Instance {\n const result = this.coreGlue.interop.servers().find((s) => s.windowId && s.windowId === windowId);\n\n return {\n application: result?.application,\n applicationName: result?.applicationName,\n peerId: result?.peerId,\n instance: result?.instance,\n windowId: result?.windowId\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public async send(domain: LibDomains, operation: BridgeOperation, operationData: OutBound, options?: IOConnectCore.AGM.InvokeOptions, webOptions?: { includeOperationCheck?: boolean }): Promise {\n\n if (operation.dataDecoder) {\n try {\n operation.dataDecoder.runWithException(operationData);\n } catch (error: any) {\n throw new Error(`Unexpected Web->Platform outgoing validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`);\n }\n }\n\n const operationSupported = webOptions?.includeOperationCheck ? \n (await this.checkOperationSupported(domain, operation)).isSupported :\n true;\n\n if (!operationSupported) {\n throw new Error(`Cannot complete operation: ${operation.name} for domain: ${domain} because this client is connected to a platform which does not support it`);\n }\n\n try {\n const operationResult = await this.transmitMessage(domain, operation, operationData, options);\n\n if (operation.resultDecoder) {\n operation.resultDecoder.runWithException(operationResult);\n }\n\n return operationResult;\n\n } catch (error: any) {\n if (error.kind) {\n throw new Error(`Unexpected Web<-Platform incoming validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`);\n }\n throw new Error(error.message);\n }\n }\n\n public async createNotificationsSteam(): Promise {\n const streamExists = this.coreGlue.interop.methods().some((method) => method.name === GlueCorePlusThemesStream);\n\n if (!streamExists) {\n throw new Error(\"Cannot subscribe to theme changes, because the underlying interop stream does not exist. Most likely this is the case when this client is not connected to Core Plus.\");\n }\n\n return this.coreGlue.interop.subscribe(GlueCorePlusThemesStream, this.communicationId ? { target: { instance: this.communicationId } } : undefined);\n }\n\n private async checkOperationSupported(domain: LibDomains, operation: BridgeOperation): Promise {\n try {\n const result = await this.send(domain, systemOperations.operationCheck, { operation: operation.name });\n\n return result;\n } catch (error) {\n return { isSupported: false };\n }\n }\n\n private checkWaitMethod(name: string): Promise {\n return PromisePlus((resolve) => {\n\n const hasMethod = this.coreGlue.interop.methods().some((method) => {\n const nameMatch = method.name === name;\n\n const serverMatch = this.communicationId ?\n method.getServers().some((server) => server.instance === this.communicationId) :\n true;\n\n return nameMatch && serverMatch;\n });\n\n if (hasMethod) {\n return resolve();\n }\n\n const unSub = this.coreGlue.interop.serverMethodAdded((data) => {\n const method = data.method;\n const server = data.server;\n\n const serverMatch = this.communicationId ?\n server.instance === this.communicationId :\n true;\n\n if (method.name === name && serverMatch) {\n unSub();\n resolve();\n }\n });\n\n }, this.platformMethodTimeoutMs, `Cannot initiate Glue Web, because a system method's discovery timed out: ${name}`);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private passMessageController(args: any, success?: (args?: any) => void, error?: (error?: string | object | undefined) => void): void {\n const decodeResult = libDomainDecoder.run(args.domain);\n\n if (!decodeResult.ok) {\n if (error) {\n error(`Cannot execute this client control, because of domain validation error: ${JSON.stringify(decodeResult.error)}`);\n }\n return;\n }\n\n const domain = decodeResult.result;\n\n this.controllers[domain]\n .handleBridgeMessage(args)\n .then((resolutionData: unknown) => {\n if (success) {\n success(resolutionData);\n }\n })\n .catch((err: string | object | undefined) => {\n if (error) {\n error(err);\n }\n console.warn(err);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private async transmitMessage(domain: string, operation: BridgeOperation, data: any, options?: IOConnectCore.AGM.InvokeOptions): Promise {\n\n const messageData = { domain, data, operation: operation.name };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let invocationResult: IOConnectCore.Interop.InvocationResult;\n\n const baseErrorMessage = `Internal Platform Communication Error. Attempted operation: ${JSON.stringify(operation.name)} with data: ${JSON.stringify(data)}. `;\n\n const systemId = this.communicationId;\n\n try {\n\n if (!this.running) {\n throw new Error(\"Cannot send a control message, because the platform shut down\");\n }\n\n invocationResult = await this.coreGlue.interop.invoke(GlueWebPlatformControlName, messageData, systemId ? { instance: this.communicationId } : undefined, options);\n\n if (!invocationResult) {\n throw new Error(\"Received unsupported result from the platform - empty result\");\n }\n\n if (!Array.isArray(invocationResult.all_return_values) || invocationResult.all_return_values.length === 0) {\n throw new Error(\"Received unsupported result from the platform - empty values collection\");\n }\n\n } catch (error: any) {\n if (error && error.all_errors && error.all_errors.length) {\n // IMPORTANT: Do NOT change the `Inner message:` string, because it is used by other programs to extract the inner message of a communication error\n const invocationErrorMessage = error.all_errors[0].message;\n throw new Error(`${baseErrorMessage} -> Inner message: ${invocationErrorMessage}`);\n\n }\n // IMPORTANT: Do NOT change the `Inner message:` string, because it is used by other programs to extract the inner message of a communication error\n throw new Error(`${baseErrorMessage} -> Inner message: ${error.message}`);\n }\n\n return invocationResult.all_return_values[0].returned;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectBrowser } from \"../../browser\";\nimport { appDirectoryStateChangeDecoder, appHelloSuccessDecoder, applicationStartConfigDecoder, appRemoveConfigDecoder, appsExportOperationDecoder, basicInstanceDataDecoder, instanceDataDecoder, windowHelloDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type AppManagerOperationTypes = \"appHello\" | \"appDirectoryStateChange\" | \"instanceStarted\" | \"instanceStopped\" |\n \"applicationStart\" | \"instanceStop\" | \"import\" | \"remove\" | \"export\" | \"clear\";\n\nexport const operations: { [key in AppManagerOperationTypes]: BridgeOperation } = {\n appHello: { name: \"appHello\", dataDecoder: windowHelloDecoder, resultDecoder: appHelloSuccessDecoder },\n appDirectoryStateChange: { name: \"appDirectoryStateChange\", dataDecoder: appDirectoryStateChangeDecoder },\n instanceStarted: { name: \"instanceStarted\", dataDecoder: instanceDataDecoder },\n instanceStopped: { name: \"instanceStopped\", dataDecoder: instanceDataDecoder },\n applicationStart: { name: \"applicationStart\", dataDecoder: applicationStartConfigDecoder, resultDecoder: instanceDataDecoder },\n instanceStop: { name: \"instanceStop\", dataDecoder: basicInstanceDataDecoder },\n import: { name: \"import\" },\n remove: { name: \"remove\", dataDecoder: appRemoveConfigDecoder },\n export: { name: \"export\", resultDecoder: appsExportOperationDecoder },\n clear: { name: \"clear\" }\n};\n\nexport interface InstanceData {\n id: string;\n applicationName: string;\n}\n\nexport interface BaseApplicationData {\n name: string;\n type: string;\n userProperties: any;\n title?: string;\n version?: string;\n icon?: string;\n caption?: string;\n}\n\nexport interface ApplicationData extends BaseApplicationData {\n instances: InstanceData[];\n}\n\nexport interface AppDirectoryStateChange {\n appsAdded: BaseApplicationData[];\n appsChanged: BaseApplicationData[];\n appsRemoved: BaseApplicationData[];\n}\n\nexport interface AppRemoveConfig {\n name: string;\n}\n\nexport interface AppsExportOperation {\n definitions: IOConnectBrowser.AppManager.Definition[];\n}\n\nexport interface AppsImportOperation {\n definitions: Array;\n mode: \"replace\" | \"merge\";\n}\n\nexport interface AppHelloSuccess {\n apps: ApplicationData[];\n initialChannelId?: string;\n}\n\nexport interface ApplicationStartConfig {\n name: string;\n waitForAGMReady: boolean;\n id?: string;\n context?: any;\n top?: number;\n left?: number;\n width?: number;\n height?: number;\n relativeTo?: string;\n relativeDirection?: \"top\" | \"left\" | \"right\" | \"bottom\";\n forceChromeTab?: boolean;\n layoutComponentId?: string;\n channelId?: string;\n}\n\nexport interface BasicInstanceData {\n id: string;\n}\n\nexport interface FDC3Definition {\n name: string;\n title?: string;\n version?: string;\n appId?: string;\n manifest: string;\n manifestType: string;\n tooltip?: string;\n description?: string;\n contactEmail?: string;\n supportEmail?: string;\n publisher?: string;\n images?: Array<{ url?: string }>;\n icons?: Array<{ icon?: string }>;\n customConfig?: any;\n intents?: Intent[];\n}\n\nexport interface Intent {\n name: string;\n displayName?: string;\n contexts?: string[];\n customConfig?: any;\n}\n\nexport interface DefinitionParseResult {\n valid: IOConnectBrowser.AppManager.Definition[];\n invalid: Array<{ app: string; error: string }>;\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { allApplicationDefinitionsDecoder, appManagerOperationTypesDecoder, importModeDecoder, nonEmptyStringDecoder } from \"../shared/decoders\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport { WindowHello } from \"../windows/protocol\";\nimport { AppsImportOperation, AppHelloSuccess, ApplicationStartConfig, AppRemoveConfig, InstanceData, operations, BaseApplicationData, AppsExportOperation, DefinitionParseResult, AppDirectoryStateChange } from \"./protocol\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { ChannelsController } from \"../channels/controller\";\nimport { SessionStorageController } from \"../storage/session\";\n\nexport class AppManagerController implements LibController {\n public me: IOConnectBrowser.AppManager.Instance | undefined;\n\n private baseApplicationsTimeoutMS = 60000;\n private appImportTimeoutMS = 20;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private ioc!: IoC;\n private bridge!: GlueBridge;\n private publicWindowId!: string;\n private applications: IOConnectBrowser.AppManager.Application[] = [];\n private instances: IOConnectBrowser.AppManager.Instance[] = [];\n private platformRegistration!: Promise;\n private logger!: IOConnectBrowser.Logger.API;\n private channelsController!: ChannelsController;\n private sessionController!: SessionStorageController;\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n this.applications = [];\n this.instances = [];\n delete this.me;\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"appManger.controller.web\");\n\n this.logger.trace(\"starting the web appManager controller\");\n\n this.publicWindowId = ioc.publicWindowId;\n\n this.addOperationsExecutors();\n\n this.ioc = ioc;\n this.bridge = ioc.bridge;\n this.channelsController = ioc.channelsController;\n this.sessionController = ioc.sessionController;\n\n this.platformRegistration = this.registerWithPlatform();\n\n await this.platformRegistration;\n\n this.logger.trace(\"registration with the platform successful, attaching the appManager property to glue and returning\");\n\n const api = this.toApi();\n\n (coreGlue as IOConnectBrowser.API).appManager = api;\n }\n\n public async handleBridgeMessage(args: any): Promise {\n await this.platformRegistration;\n\n const operationName = appManagerOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n public onInstanceStarted(callback: (instance: IOConnectBrowser.AppManager.Instance) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onInstanceStarted requires a single argument of type function\");\n }\n\n return this.registry.add(\"instance-started\", callback, this.instances);\n }\n\n public onInstanceStopped(callback: (instance: IOConnectBrowser.AppManager.Instance) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onInstanceStopped requires a single argument of type function\");\n }\n\n return this.registry.add(\"instance-stopped\", callback);\n }\n\n public async startApplication(appName: string, context?: object, options?: IOConnectBrowser.AppManager.ApplicationStartOptions): Promise {\n const channels = await this.channelsController.all();\n\n if (options?.channelId && !channels.includes(options.channelId)) {\n throw new Error(`The channel with name \"${options.channelId}\" doesn't exist!`);\n }\n \n // reuseId is a hidden property for workspaces-only use\n // layoutComponentId is a hidden property for global layouts\n // forceChromeTab is a hidden property for extension use only\n const startOptions: ApplicationStartConfig = {\n name: appName,\n waitForAGMReady: options?.waitForAGMReady ?? true,\n context,\n top: options?.top,\n left: options?.left,\n width: options?.width,\n height: options?.height,\n relativeTo: options?.relativeTo,\n relativeDirection: options?.relativeDirection,\n id: (options as any)?.reuseId,\n forceChromeTab: (options as any)?.forceTab,\n layoutComponentId: (options as any)?.layoutComponentId,\n channelId: options?.channelId\n };\n\n const openResult = await this.bridge.send(\"appManager\", operations.applicationStart, startOptions);\n\n const app = this.applications.find((a) => a.name === openResult.applicationName) as IOConnectBrowser.AppManager.Application;\n\n return this.ioc.buildInstance(openResult, app);\n }\n\n public getApplication(name: string): IOConnectBrowser.AppManager.Application {\n const verifiedName = nonEmptyStringDecoder.runWithException(name);\n\n return this.applications.find((app) => app.name === verifiedName) as IOConnectBrowser.AppManager.Application;\n }\n\n public getInstances(): IOConnectBrowser.AppManager.Instance[] {\n return this.instances.slice();\n }\n\n private toApi(): IOConnectBrowser.AppManager.API {\n const api: IOConnectBrowser.AppManager.API = {\n myInstance: this.me as unknown as IOConnectBrowser.AppManager.Instance,\n inMemory: {\n import: this.import.bind(this),\n remove: this.remove.bind(this),\n export: this.export.bind(this),\n clear: this.clear.bind(this)\n },\n application: this.getApplication.bind(this),\n applications: this.getApplications.bind(this),\n instances: this.getInstances.bind(this),\n onAppAdded: this.onAppAdded.bind(this),\n onAppChanged: this.onAppChanged.bind(this),\n onAppRemoved: this.onAppRemoved.bind(this),\n onInstanceStarted: this.onInstanceStarted.bind(this),\n onInstanceStopped: this.onInstanceStopped.bind(this)\n };\n\n return api;\n }\n\n private addOperationsExecutors(): void {\n operations.appDirectoryStateChange.execute = this.handleAppDirectoryStateChange.bind(this);\n operations.instanceStarted.execute = this.handleInstanceStartedMessage.bind(this);\n operations.instanceStopped.execute = this.handleInstanceStoppedMessage.bind(this);\n }\n\n private async handleAppDirectoryStateChange(data: AppDirectoryStateChange): Promise {\n data.appsAdded.forEach(this.handleApplicationAddedMessage.bind(this));\n data.appsChanged.forEach(this.handleApplicationChangedMessage.bind(this));\n data.appsRemoved.forEach(this.handleApplicationRemovedMessage.bind(this));\n }\n\n private onAppAdded(callback: (app: IOConnectBrowser.AppManager.Application) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onAppAdded requires a single argument of type function\");\n }\n\n return this.registry.add(\"application-added\", callback, this.applications);\n }\n\n private onAppRemoved(callback: (app: IOConnectBrowser.AppManager.Application) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onAppRemoved requires a single argument of type function\");\n }\n\n return this.registry.add(\"application-removed\", callback);\n }\n\n private onAppChanged(callback: (app: IOConnectBrowser.AppManager.Application) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onAppChanged requires a single argument of type function\");\n }\n\n return this.registry.add(\"application-changed\", callback);\n }\n\n private async handleApplicationAddedMessage(appData: BaseApplicationData): Promise {\n\n if (this.applications.some((app) => app.name === appData.name)) {\n return;\n }\n\n const app = await this.ioc.buildApplication(appData, []);\n\n const instances = this.instances.filter((instance) => instance.application.name === app.name);\n\n app.instances.push(...instances);\n\n this.applications.push(app);\n\n this.registry.execute(\"application-added\", app);\n }\n\n private async handleApplicationRemovedMessage(appData: BaseApplicationData): Promise {\n const appIndex = this.applications.findIndex((app) => app.name === appData.name);\n\n if (appIndex < 0) {\n return;\n }\n\n const app = this.applications[appIndex];\n\n this.applications.splice(appIndex, 1);\n\n this.registry.execute(\"application-removed\", app);\n }\n\n private async handleApplicationChangedMessage(appData: BaseApplicationData): Promise {\n const app = this.applications.find((app) => app.name === appData.name);\n\n if (!app) {\n return this.handleApplicationAddedMessage(appData);\n }\n\n app.title = appData.title as string;\n app.version = appData.version as string;\n app.icon = appData.icon as string;\n app.caption = appData.caption as string;\n app.userProperties = appData.userProperties;\n\n this.registry.execute(\"application-changed\", app);\n }\n\n private async handleInstanceStartedMessage(instanceData: InstanceData): Promise {\n if (this.instances.some((instance) => instance.id === instanceData.id)) {\n return;\n }\n\n const application = this.applications.find((app) => app.name === instanceData.applicationName);\n\n if (!application) {\n throw new Error(`Cannot add instance: ${instanceData.id}, because there is no application definition associated with it`);\n }\n\n const instance = this.ioc.buildInstance(instanceData, application);\n\n this.instances.push(instance);\n application.instances.push(instance);\n\n this.registry.execute(\"instance-started\", instance);\n }\n\n private async handleInstanceStoppedMessage(instanceData: InstanceData): Promise {\n const instance = this.instances.find((i) => i.id === instanceData.id);\n\n if (instance) {\n const instIdx = this.instances.findIndex((inst) => inst.id === instanceData.id);\n this.instances.splice(instIdx, 1);\n }\n\n const application = this.applications.find((app) => app.instances.some((inst) => inst.id === instanceData.id));\n\n if (application) {\n const instIdxApps = application.instances.findIndex((inst) => inst.id === instanceData.id);\n application.instances.splice(instIdxApps, 1);\n }\n\n if (!instance) {\n return;\n }\n\n this.registry.execute(\"instance-stopped\", instance);\n }\n\n private async import(definitions: IOConnectBrowser.AppManager.Definition[], mode: \"replace\" | \"merge\" = \"replace\"): Promise {\n importModeDecoder.runWithException(mode);\n\n if (!Array.isArray(definitions)) {\n throw new Error(\"Import must be called with an array of definitions\");\n }\n\n if (definitions.length > 10000) {\n throw new Error(\"Cannot import more than 10000 app definitions in Glue42 Core.\");\n }\n\n const parseResult = definitions.reduce((soFar, definition) => {\n\n const decodeResult = allApplicationDefinitionsDecoder.run(definition);\n\n if (!decodeResult.ok) {\n soFar.invalid.push({ app: definition?.name, error: JSON.stringify(decodeResult.error) });\n } else {\n soFar.valid.push(definition);\n }\n\n return soFar;\n }, { valid: [], invalid: [] });\n\n const responseTimeout = this.baseApplicationsTimeoutMS + this.appImportTimeoutMS * parseResult.valid.length;\n\n await this.bridge.send(\"appManager\", operations.import, { definitions: parseResult.valid, mode }, { methodResponseTimeoutMs: responseTimeout });\n\n return {\n imported: parseResult.valid.map((valid) => valid.name),\n errors: parseResult.invalid\n };\n }\n\n private async remove(name: string): Promise {\n nonEmptyStringDecoder.runWithException(name);\n\n await this.bridge.send(\"appManager\", operations.remove, { name }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\n }\n\n private async clear(): Promise {\n await this.bridge.send(\"appManager\", operations.clear, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\n }\n\n private async export(): Promise {\n\n const response = await this.bridge.send(\"appManager\", operations.export, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\n\n return response.definitions;\n }\n\n public getApplications(): IOConnectBrowser.AppManager.Application[] {\n return this.applications.slice();\n }\n\n private async joinInitialChannel(initialChannelId: string): Promise {\n try {\n await this.channelsController.join(initialChannelId);\n } catch (error) {\n this.logger.warn(`Application instance ${this.me} was unable to join the ${initialChannelId} channel. Reason: ${JSON.stringify(error)}`);\n }\n }\n\n private async registerWithPlatform(): Promise {\n const result = await this.bridge.send(\"appManager\", operations.appHello, { windowId: this.publicWindowId }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\n\n this.logger.trace(\"the platform responded to the hello message with a full list of apps\");\n\n this.applications = await Promise.all(result.apps.map((app) => this.ioc.buildApplication(app, app.instances)));\n\n this.instances = this.applications.reduce((instancesSoFar, app) => {\n\n instancesSoFar.push(...app.instances);\n\n return instancesSoFar;\n }, []);\n\n this.me = this.findMyInstance();\n\n this.logger.trace(`all applications were parsed and saved. I am ${this.me ? \"NOT a\" : \"a\"} valid instance`);\n\n const { channels: channelsStorageData } = this.sessionController.getWindowData();\n const channel = channelsStorageData ? channelsStorageData.currentName : result.initialChannelId;\n \n if (channel) {\n await this.joinInitialChannel(channel);\n }\n }\n \n private findMyInstance(): IOConnectBrowser.AppManager.Instance | undefined {\n for (const app of this.applications) {\n const foundInstance = app.instances.find((instance) => instance.id === this.publicWindowId);\n\n if (foundInstance) {\n return foundInstance;\n }\n }\n\n // this satisfies the TS \"noImplicitReturns\" true flag\n return undefined;\n }\n}\n","import { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { BasicInstanceData, InstanceData, operations } from \"./protocol\";\n\nexport class InstanceModel {\n private me!: IOConnectBrowser.AppManager.Instance;\n private readonly myCtxKey: string;\n\n constructor(private readonly data: InstanceData, private readonly bridge: GlueBridge, private readonly application: IOConnectBrowser.AppManager.Application) {\n this.myCtxKey = `___instance___${this.data.id}`;\n }\n\n public toApi(): IOConnectBrowser.AppManager.Instance {\n const agm = this.bridge.getInteropInstance(this.data.id);\n\n const api: IOConnectBrowser.AppManager.Instance = {\n id: this.data.id,\n agm,\n application: this.application,\n stop: this.stop.bind(this),\n getContext: this.getContext.bind(this)\n };\n\n this.me = Object.freeze(api);\n\n return this.me;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private async getContext(): Promise {\n return this.bridge.contextLib.get(this.myCtxKey);\n }\n\n private async stop(): Promise {\n await this.bridge.send(\"appManager\", operations.instanceStop, { id: this.data.id });\n }\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { UnsubscribeFunction } from \"callback-registry\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { AppManagerController } from \"./controller\";\nimport { BaseApplicationData } from \"./protocol\";\nimport { startApplicationContextDecoder, startApplicationOptionsDecoder } from \"../shared/decoders\";\n\nexport class ApplicationModel {\n private me!: IOConnectBrowser.AppManager.Application;\n\n constructor(\n private readonly data: BaseApplicationData,\n private readonly instances: IOConnectBrowser.AppManager.Instance[],\n private readonly controller: AppManagerController,\n ) { }\n\n public toApi(): IOConnectBrowser.AppManager.Application {\n const api: IOConnectBrowser.AppManager.Application = {\n name: this.data.name,\n title: this.data.title as string,\n version: this.data.version as string,\n icon: this.data.icon as string,\n caption: this.data.caption as string,\n userProperties: this.data.userProperties,\n instances: this.instances,\n start: this.start.bind(this),\n onInstanceStarted: this.onInstanceStarted.bind(this),\n onInstanceStopped: this.onInstanceStopped.bind(this)\n };\n\n this.me = api;\n\n return this.me;\n }\n\n private onInstanceStarted(callback: (instance: IOConnectBrowser.AppManager.Instance) => any): UnsubscribeFunction {\n\n if (typeof callback !== \"function\") {\n throw new Error(\"OnInstanceStarted requires a single argument of type function\");\n }\n\n return this.controller.onInstanceStarted((instance) => {\n if (instance.application.name === this.data.name) {\n callback(instance);\n }\n });\n }\n\n private onInstanceStopped(callback: (instance: IOConnectBrowser.AppManager.Instance) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"OnInstanceStarted requires a single argument of type function\");\n }\n\n return this.controller.onInstanceStopped((instance) => {\n if (instance.application.name === this.data.name) {\n callback(instance);\n }\n });\n }\n\n private async start(context?: any, options?: IOConnectBrowser.AppManager.ApplicationStartOptions): Promise {\n const verifiedContext = startApplicationContextDecoder.runWithException(context);\n const verifiedOptions = startApplicationOptionsDecoder.runWithException(options);\n\n return this.controller.startApplication(this.data.name, verifiedContext, verifiedOptions);\n }\n}","import { IOConnectBrowser } from \"../../browser\";\nimport { allLayoutsFullConfigDecoder, allLayoutsSummariesResultDecoder, getAllLayoutsConfigDecoder, glueLayoutDecoder, layoutsImportConfigDecoder, optionalSimpleLayoutResult, restoreLayoutConfigDecoder, saveLayoutConfigDecoder, saveRequestClientResponseDecoder, platformSaveRequestConfigDecoder, simpleLayoutConfigDecoder, simpleLayoutResultDecoder, simpleAvailabilityResultDecoder, permissionStateResultDecoder, setDefaultGlobalConfigDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type LayoutsOperationTypes = \"layoutAdded\" | \"layoutChanged\" | \"layoutRemoved\" |\n \"get\" | \"getAll\" | \"export\" | \"import\" | \"remove\" | \"save\" | \"restore\" | \"clientSaveRequest\" |\n \"getGlobalPermissionState\" | \"requestGlobalPermission\" | \"checkGlobalActivated\" | \"getDefaultGlobal\" | \"setDefaultGlobal\" | \"clearDefaultGlobal\";\n\nexport const operations: { [key in LayoutsOperationTypes]: BridgeOperation } = {\n layoutAdded: { name: \"layoutAdded\", dataDecoder: glueLayoutDecoder },\n layoutChanged: { name: \"layoutChanged\", dataDecoder: glueLayoutDecoder },\n layoutRemoved: { name: \"layoutRemoved\", dataDecoder: glueLayoutDecoder },\n get: { name: \"get\", dataDecoder: simpleLayoutConfigDecoder, resultDecoder: optionalSimpleLayoutResult },\n getAll: { name: \"getAll\", dataDecoder: getAllLayoutsConfigDecoder, resultDecoder: allLayoutsSummariesResultDecoder },\n export: { name: \"export\", dataDecoder: getAllLayoutsConfigDecoder, resultDecoder: allLayoutsFullConfigDecoder },\n import: { name: \"import\", dataDecoder: layoutsImportConfigDecoder },\n remove: { name: \"remove\", dataDecoder: simpleLayoutConfigDecoder },\n save: { name: \"save\", dataDecoder: saveLayoutConfigDecoder, resultDecoder: simpleLayoutResultDecoder },\n restore: { name: \"restore\", dataDecoder: restoreLayoutConfigDecoder },\n clientSaveRequest: { name: \"clientSaveRequest\", dataDecoder: platformSaveRequestConfigDecoder, resultDecoder: saveRequestClientResponseDecoder },\n getGlobalPermissionState: { name: \"getGlobalPermissionState\", resultDecoder: permissionStateResultDecoder },\n requestGlobalPermission: { name: \"requestGlobalPermission\", resultDecoder: simpleAvailabilityResultDecoder },\n checkGlobalActivated: { name: \"checkGlobalActivated\", resultDecoder: simpleAvailabilityResultDecoder },\n getDefaultGlobal: { name: \"getDefaultGlobal\", resultDecoder: optionalSimpleLayoutResult },\n setDefaultGlobal: { name: \"setDefaultGlobal\", dataDecoder: setDefaultGlobalConfigDecoder },\n clearDefaultGlobal: { name: \"clearDefaultGlobal\" }\n};\n\nexport interface SimpleLayoutConfig {\n name: string;\n type: IOConnectBrowser.Layouts.LayoutType;\n}\n\nexport interface SaveLayoutConfig {\n layout: IOConnectBrowser.Layouts.NewLayoutOptions;\n}\n\nexport interface RestoreLayoutConfig {\n layout: IOConnectBrowser.Layouts.RestoreOptions;\n}\n\nexport interface GetAllLayoutsConfig {\n type: IOConnectBrowser.Layouts.LayoutType;\n}\n\nexport interface LayoutsImportConfig {\n layouts: IOConnectBrowser.Layouts.Layout[];\n mode: \"replace\" | \"merge\";\n isManagerOperation?: boolean;\n}\n\nexport interface AllLayoutsFullConfig {\n layouts: IOConnectBrowser.Layouts.Layout[];\n}\n\nexport interface AllLayoutsSummariesResult {\n summaries: IOConnectBrowser.Layouts.LayoutSummary[];\n}\n\nexport interface SimpleLayoutResult {\n layout: IOConnectBrowser.Layouts.Layout;\n}\n\nexport interface OptionalSimpleLayoutResult {\n layout?: IOConnectBrowser.Layouts.Layout;\n}\n\nexport interface LayoutParseResult {\n valid: IOConnectBrowser.Layouts.Layout[];\n}\n\nexport interface PlatformSaveRequestConfig {\n layoutType: \"Global\" | \"Workspace\";\n layoutName: string;\n context?: any;\n}\n\nexport interface SaveRequestClientResponse {\n windowContext?: any;\n}\n\nexport interface PermissionStateResult {\n state: \"prompt\" | \"granted\" | \"denied\";\n}\n\nexport interface SimpleAvailabilityResult {\n isAvailable: boolean;\n}\n\nexport interface SetDefaultGlobalConfig {\n name: string;\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { glueLayoutDecoder, importModeDecoder, layoutsOperationTypesDecoder, layoutTypeDecoder, newLayoutOptionsDecoder, nonEmptyStringDecoder, restoreOptionsDecoder } from \"../shared/decoders\";\nimport { AllLayoutsFullConfig, AllLayoutsSummariesResult, GetAllLayoutsConfig, LayoutParseResult, LayoutsImportConfig, operations, OptionalSimpleLayoutResult, RestoreLayoutConfig, SaveLayoutConfig, SaveRequestClientResponse, PlatformSaveRequestConfig, SimpleLayoutConfig, SimpleLayoutResult, PermissionStateResult, SimpleAvailabilityResult, SetDefaultGlobalConfig } from \"./protocol\";\nimport { WindowsController } from \"../windows/controller\";\n\nexport class LayoutsController implements LibController {\n private readonly defaultLayoutRestoreTimeoutMS = 120000;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private bridge!: GlueBridge;\n private logger!: IOConnectBrowser.Logger.API;\n private windowsController!: WindowsController;\n private saveRequestSubscription?: (info?: IOConnectBrowser.Layouts.SaveRequestContext) => IOConnectBrowser.Layouts.SaveRequestResponse;\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"layouts.controller.web\");\n\n this.logger.trace(\"starting the web layouts controller\");\n\n this.bridge = ioc.bridge;\n\n this.windowsController = ioc.windowsController;\n\n this.addOperationsExecutors();\n\n const api = this.toApi();\n\n this.logger.trace(\"no need for platform registration, attaching the layouts property to glue and returning\");\n\n (coreGlue as IOConnectBrowser.API).layouts = api;\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = layoutsOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n private toApi(): IOConnectBrowser.Layouts.API {\n const api: IOConnectBrowser.Layouts.API = {\n get: this.get.bind(this),\n getAll: this.getAll.bind(this),\n export: this.export.bind(this),\n import: this.import.bind(this),\n save: this.save.bind(this),\n restore: this.restore.bind(this),\n remove: this.remove.bind(this),\n onAdded: this.onAdded.bind(this),\n onChanged: this.onChanged.bind(this),\n onRemoved: this.onRemoved.bind(this),\n onSaveRequested: this.subscribeOnSaveRequested.bind(this),\n getMultiScreenPermissionState: this.getGlobalPermissionState.bind(this),\n requestMultiScreenPermission: this.requestGlobalPermission.bind(this),\n getGlobalTypeState: this.checkGlobalActivated.bind(this),\n getDefaultGlobal: this.getDefaultGlobal.bind(this),\n setDefaultGlobal: this.setDefaultGlobal.bind(this),\n clearDefaultGlobal: this.clearDefaultGlobal.bind(this)\n };\n\n return Object.freeze(api);\n }\n\n private addOperationsExecutors(): void {\n operations.layoutAdded.execute = this.handleOnAdded.bind(this);\n operations.layoutChanged.execute = this.handleOnChanged.bind(this);\n operations.layoutRemoved.execute = this.handleOnRemoved.bind(this);\n operations.clientSaveRequest.execute = this.handleSaveRequest.bind(this);\n }\n\n private async get(name: string, type: IOConnectBrowser.Layouts.LayoutType): Promise {\n nonEmptyStringDecoder.runWithException(name);\n layoutTypeDecoder.runWithException(type);\n\n const result = await this.bridge.send(\"layouts\", operations.get, { name, type });\n\n return result.layout;\n }\n\n private async getAll(type: IOConnectBrowser.Layouts.LayoutType): Promise {\n layoutTypeDecoder.runWithException(type);\n\n const result = await this.bridge.send(\"layouts\", operations.getAll, { type });\n\n return result.summaries;\n }\n\n private async export(type: IOConnectBrowser.Layouts.LayoutType): Promise {\n layoutTypeDecoder.runWithException(type);\n\n const result = await this.bridge.send(\"layouts\", operations.export, { type });\n\n return result.layouts;\n }\n\n private async import(layouts: IOConnectBrowser.Layouts.Layout[], mode: \"replace\" | \"merge\" = \"replace\"): Promise {\n importModeDecoder.runWithException(mode);\n\n if (!Array.isArray(layouts)) {\n throw new Error(\"Import must be called with an array of layouts\");\n }\n\n if (layouts.length > 1000) {\n throw new Error(\"Cannot import more than 1000 layouts at once in Glue42 Core.\");\n }\n\n const parseResult = layouts.reduce((soFar, layout) => {\n\n const decodeResult = glueLayoutDecoder.run(layout);\n\n if (decodeResult.ok) {\n soFar.valid.push(layout);\n } else {\n this.logger.warn(`A layout with name: ${layout.name} was not imported, because of error: ${JSON.stringify(decodeResult.error)}`);\n }\n\n return soFar;\n\n }, { valid: [] });\n\n const layoutsToImport = layouts.filter((layout) => parseResult.valid.some((validLayout) => validLayout.name === layout.name));\n\n await this.bridge.send(\"layouts\", operations.import, { layouts: layoutsToImport, mode });\n }\n\n private async save(layout: IOConnectBrowser.Layouts.NewLayoutOptions): Promise {\n newLayoutOptionsDecoder.runWithException(layout);\n\n const saveResult = await this.bridge.send(\"layouts\", operations.save, { layout });\n\n return saveResult.layout;\n }\n\n private async restore(options: IOConnectBrowser.Layouts.RestoreOptions): Promise {\n restoreOptionsDecoder.runWithException(options);\n\n // the user-provided timeout needs to be doubled for the invocation in order to allow time for the Global Layouts plugin to correctly honor the user timeout.\n const invocationTimeout = options.timeout ? options.timeout * 2 : this.defaultLayoutRestoreTimeoutMS;\n\n await this.bridge.send(\"layouts\", operations.restore, { layout: options }, { methodResponseTimeoutMs: invocationTimeout });\n }\n\n private async remove(type: IOConnectBrowser.Layouts.LayoutType, name: string): Promise {\n layoutTypeDecoder.runWithException(type);\n nonEmptyStringDecoder.runWithException(name);\n\n await this.bridge.send(\"layouts\", operations.remove, { type, name });\n }\n\n private async handleSaveRequest(config: PlatformSaveRequestConfig): Promise {\n const response: SaveRequestClientResponse = {};\n\n if (this.saveRequestSubscription) {\n try {\n const onSaveRequestResponse = this.saveRequestSubscription(config);\n\n response.windowContext = onSaveRequestResponse?.windowContext;\n } catch (error) {\n this.logger.warn(`An error was thrown by the onSaveRequested callback, ignoring the callback: ${JSON.stringify(error)}`);\n }\n }\n\n return response;\n }\n\n private async getGlobalPermissionState(): Promise<{ state: \"prompt\" | \"granted\" | \"denied\" }> {\n const requestResult = await this.bridge.send(\"layouts\", operations.getGlobalPermissionState, undefined);\n\n return requestResult;\n }\n\n private async requestGlobalPermission(): Promise<{ permissionGranted: boolean }> {\n\n const currentState = (await this.getGlobalPermissionState()).state;\n\n if (currentState === \"denied\") {\n return { permissionGranted: false };\n }\n\n if (currentState === \"granted\") {\n return { permissionGranted: true };\n }\n\n const myWindow = this.windowsController.my();\n\n const globalNamespace = (window as any).glue42core || (window as any).iobrowser;\n\n const amIWorkspaceFrame = globalNamespace.isPlatformFrame;\n\n if (myWindow.name !== \"Platform\" && !amIWorkspaceFrame) {\n throw new Error(\"Cannot request permission for multi-window placement from any app other than the Platform.\");\n }\n\n const requestResult = await this.bridge.send(\"layouts\", operations.requestGlobalPermission, undefined, { methodResponseTimeoutMs: 180000 });\n\n return { permissionGranted: requestResult.isAvailable };\n }\n\n private async checkGlobalActivated(): Promise<{ activated: boolean }> {\n const requestResult = await this.bridge.send(\"layouts\", operations.checkGlobalActivated, undefined);\n\n return { activated: requestResult.isAvailable };\n }\n\n private async getDefaultGlobal(): Promise {\n const requestResult = await this.bridge.send(\"layouts\", operations.getDefaultGlobal, undefined, undefined, { includeOperationCheck: true });\n\n return requestResult.layout;\n }\n\n private async setDefaultGlobal(name: string): Promise {\n nonEmptyStringDecoder.runWithException(name);\n\n await this.bridge.send(\"layouts\", operations.setDefaultGlobal, { name }, undefined, { includeOperationCheck: true });\n }\n\n private async clearDefaultGlobal(): Promise {\n await this.bridge.send(\"layouts\", operations.clearDefaultGlobal, undefined, undefined, { includeOperationCheck: true });\n }\n\n private onAdded(callback: (layout: IOConnectBrowser.Layouts.Layout) => void): UnsubscribeFunction {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.export(\"Global\").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => {});\n this.export(\"Workspace\").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => {});\n\n return this.registry.add(operations.layoutAdded.name, callback);\n }\n\n private onChanged(callback: (layout: IOConnectBrowser.Layouts.Layout) => void): UnsubscribeFunction {\n return this.registry.add(operations.layoutChanged.name, callback);\n }\n\n private onRemoved(callback: (layout: IOConnectBrowser.Layouts.Layout) => void): UnsubscribeFunction {\n return this.registry.add(operations.layoutRemoved.name, callback);\n }\n\n private subscribeOnSaveRequested(callback: (info?: IOConnectBrowser.Layouts.SaveRequestContext) => IOConnectBrowser.Layouts.SaveRequestResponse): () => void {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onSaveRequested, because the provided argument is not a valid callback function.\");\n }\n\n if (this.saveRequestSubscription) {\n throw new Error(\"Cannot subscribe to onSaveRequested, because this client has already subscribed and only one subscription is supported. Consider unsubscribing from the initial one.\");\n }\n\n this.saveRequestSubscription = callback;\n\n return () => {\n delete this.saveRequestSubscription;\n };\n }\n\n private async handleOnAdded(layout: IOConnectBrowser.Layouts.Layout): Promise {\n this.registry.execute(operations.layoutAdded.name, layout);\n }\n\n private async handleOnChanged(layout: IOConnectBrowser.Layouts.Layout): Promise {\n this.registry.execute(operations.layoutChanged.name, layout);\n }\n\n private async handleOnRemoved(layout: IOConnectBrowser.Layouts.Layout): Promise {\n this.registry.execute(operations.layoutRemoved.name, layout);\n }\n}","import { IOConnectBrowser } from \"../../browser\";\nimport { activeNotificationsCountChangeDecoder, allNotificationsDataDecoder, notificationEventPayloadDecoder, notificationSetStateRequestDecoder, notificationsConfigurationProtocolDecoder, permissionQueryResultDecoder, permissionRequestResultDecoder, raiseNotificationDecoder, raiseNotificationResultDecoder, simpleNotificationDataDecoder, simpleNotificationSelectDecoder, strictNotificationsConfigurationProtocolDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type NotificationsOperationTypes = \"raiseNotification\" | \"requestPermission\" | \"notificationShow\" | \"notificationClick\" | \"getPermission\" |\n \"list\" | \"notificationRaised\" | \"notificationClosed\" | \"click\" | \"clear\" | \"clearAll\" | \"clearOld\" | \n \"configure\" | \"getConfiguration\" | \"configurationChanged\" | \"setState\" | \"activeCountChange\" | \"stateChange\";\n\nexport type NotificationPermissionTypes = \"default\" | \"granted\" | \"denied\";\n\nexport const operations: { [key in NotificationsOperationTypes]: BridgeOperation } = {\n raiseNotification: { name: \"raiseNotification\", dataDecoder: raiseNotificationDecoder, resultDecoder:raiseNotificationResultDecoder },\n requestPermission: { name: \"requestPermission\", resultDecoder: permissionRequestResultDecoder },\n notificationShow: { name: \"notificationShow\", dataDecoder: notificationEventPayloadDecoder },\n notificationClick: { name: \"notificationClick\", dataDecoder: notificationEventPayloadDecoder },\n getPermission: { name: \"getPermission\", resultDecoder: permissionQueryResultDecoder },\n list: { name: \"list\", resultDecoder: allNotificationsDataDecoder },\n notificationRaised: { name: \"notificationRaised\", dataDecoder: simpleNotificationDataDecoder },\n notificationClosed: { name: \"notificationClosed\", dataDecoder: simpleNotificationSelectDecoder },\n click: { name: \"click\" },\n clear: { name: \"clear\" },\n clearAll: { name: \"clearAll\" },\n clearOld: { name: \"clearOld\" },\n configure: { name: \"configure\", dataDecoder: notificationsConfigurationProtocolDecoder },\n getConfiguration: { name: \"getConfiguration\", resultDecoder: strictNotificationsConfigurationProtocolDecoder },\n configurationChanged: { name: \"configurationChanged\", resultDecoder: strictNotificationsConfigurationProtocolDecoder },\n setState: { name: \"setState\", dataDecoder: notificationSetStateRequestDecoder },\n activeCountChange: { name: \"activeCountChange\", resultDecoder: activeNotificationsCountChangeDecoder },\n stateChange: { name: \"stateChange\", resultDecoder: notificationSetStateRequestDecoder }\n};\n\nexport interface RaiseNotification {\n settings: IOConnectBrowser.Notifications.RaiseOptions;\n id: string;\n}\n\nexport interface RaiseNotificationResult {\n settings: IOConnectBrowser.Notifications.RaiseOptions;\n}\n\nexport interface PermissionRequestResult {\n permissionGranted: boolean;\n}\n\nexport interface PermissionQueryResult {\n permission: NotificationPermissionTypes;\n}\n\nexport interface NotificationEventPayload {\n definition: IOConnectBrowser.Notifications.NotificationDefinition;\n action?: string;\n id?: string;\n}\n\nexport interface SimpleNotificationData {\n notification: IOConnectBrowser.Notifications.NotificationData;\n}\n\nexport interface AllNotificationsData {\n notifications: IOConnectBrowser.Notifications.NotificationData[];\n}\n\nexport interface NotificationClickConfig {\n id: string;\n action?: string;\n}\n\nexport interface SimpleNotificationSelect {\n id: string;\n}\n\nexport interface NotificationsConfigurationProtocol {\n configuration: IOConnectBrowser.Notifications.Configuration;\n}\n\nexport interface StrictSourceFiler extends IOConnectBrowser.Notifications.NotificationFilter {\n allowed: NonNullable;\n blocked: NonNullable;\n}\n\nexport interface StrictConfiguration extends IOConnectBrowser.Notifications.Configuration {\n enable: NonNullable;\n enableToasts: NonNullable;\n sourceFilter: StrictSourceFiler;\n}\n\nexport interface StrictNotificationsConfigurationProtocol {\n configuration: StrictConfiguration;\n}\n\nexport interface NotificationSetStateRequest {\n id: string;\n state: IOConnectBrowser.Notifications.State;\n}\n\nexport interface ActiveNotificationsCountChange {\n count: number;\n}\n","'use strict';\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n seed = (seed * 9301 + 49297) % 233280;\n return seed/(233280.0);\n}\n\nfunction setSeed(_seed_) {\n seed = _seed_;\n}\n\nmodule.exports = {\n nextValue: getNextValue,\n seed: setSeed\n};\n","'use strict';\n\nvar randomFromSeed = require('./random/random-from-seed');\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet;\nvar previousSeed;\n\nvar shuffled;\n\nfunction reset() {\n shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet !== ORIGINAL) {\n alphabet = ORIGINAL;\n reset();\n }\n return;\n }\n\n if (_alphabet_ === alphabet) {\n return;\n }\n\n if (_alphabet_.length !== ORIGINAL.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n\n var unique = _alphabet_.split('').filter(function(item, ind, arr){\n return ind !== arr.lastIndexOf(item);\n });\n\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n\n alphabet = _alphabet_;\n reset();\n}\n\nfunction characters(_alphabet_) {\n setCharacters(_alphabet_);\n return alphabet;\n}\n\nfunction setSeed(seed) {\n randomFromSeed.seed(seed);\n if (previousSeed !== seed) {\n reset();\n previousSeed = seed;\n }\n}\n\nfunction shuffle() {\n if (!alphabet) {\n setCharacters(ORIGINAL);\n }\n\n var sourceArray = alphabet.split('');\n var targetArray = [];\n var r = randomFromSeed.nextValue();\n var characterIndex;\n\n while (sourceArray.length > 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\n\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n shuffled = shuffle();\n return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\n\nfunction get () {\n return alphabet || ORIGINAL;\n}\n\nmodule.exports = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};\n","'use strict';\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function(size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte = function(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\n\nmodule.exports = randomByte;\n","// This file replaces `format.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nmodule.exports = function (random, alphabet, size) {\n // We can’t use bytes bigger than the alphabet. To make bytes values closer\n // to the alphabet, we apply bitmask on them. We look for the closest\n // `2 ** x - 1` number, which will be bigger than alphabet size. If we have\n // 30 symbols in the alphabet, we will take 31 (00011111).\n // We do not use faster Math.clz32, because it is not available in browsers.\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1\n // Bitmask is not a perfect solution (in our example it will pass 31 bytes,\n // which is bigger than the alphabet). As a result, we will need more bytes,\n // than ID size, because we will refuse bytes bigger than the alphabet.\n\n // Every hardware random generator call is costly,\n // because we need to wait for entropy collection. This is why often it will\n // be faster to ask for few extra bytes in advance, to avoid additional calls.\n\n // Here we calculate how many random bytes should we call in advance.\n // It depends on ID length, mask / alphabet size and magic number 1.6\n // (which was selected according benchmarks).\n\n // -~f => Math.ceil(f) if n is float number\n // -~i => i + 1 if n is integer number\n var step = -~(1.6 * mask * size / alphabet.length)\n var id = ''\n\n while (true) {\n var bytes = random(step)\n // Compact alternative for `for (var i = 0; i < step; i++)`\n var i = step\n while (i--) {\n // If random byte is bigger than alphabet even after bitmask,\n // we refuse it by `|| ''`.\n id += alphabet[bytes[i] & mask] || ''\n // More compact than `id.length + 1 === size`\n if (id.length === +size) return id\n }\n }\n}\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar random = require('./random/random-byte');\nvar format = require('nanoid/format');\n\nfunction generate(number) {\n var loopCounter = 0;\n var done;\n\n var str = '';\n\n while (!done) {\n str = str + format(random, alphabet.get(), 1);\n done = number < (Math.pow(16, loopCounter + 1 ) );\n loopCounter++;\n }\n return str;\n}\n\nmodule.exports = generate;\n","'use strict';\n\nvar generate = require('./generate');\nvar alphabet = require('./alphabet');\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\n\nmodule.exports = build;\n","'use strict';\nvar alphabet = require('./alphabet');\n\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6 ) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' +\n alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n ']');\n return !nonAlphabetic.test(id);\n}\n\nmodule.exports = isShortId;\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar build = require('./build');\nvar isValid = require('./is-valid');\n\n// if you are using cluster or multiple servers use this to make each instance\n// has a unique value for worker\n// Note: I don't know if this is automatically set when using third\n// party cluster solutions such as pm2.\nvar clusterWorkerId = require('./util/cluster-worker-id') || 0;\n\n/**\n * Set the seed.\n * Highly recommended if you don't want people to try to figure out your id schema.\n * exposed as shortid.seed(int)\n * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n */\nfunction seed(seedValue) {\n alphabet.seed(seedValue);\n return module.exports;\n}\n\n/**\n * Set the cluster worker or machine id\n * exposed as shortid.worker(int)\n * @param workerId worker must be positive integer. Number less than 16 is recommended.\n * returns shortid module so it can be chained.\n */\nfunction worker(workerId) {\n clusterWorkerId = workerId;\n return module.exports;\n}\n\n/**\n *\n * sets new characters to use in the alphabet\n * returns the shuffled alphabet\n */\nfunction characters(newCharacters) {\n if (newCharacters !== undefined) {\n alphabet.characters(newCharacters);\n }\n\n return alphabet.shuffled();\n}\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction generate() {\n return build(clusterWorkerId);\n}\n\n// Export all other functions as properties of the generate function\nmodule.exports = generate;\nmodule.exports.generate = generate;\nmodule.exports.seed = seed;\nmodule.exports.worker = worker;\nmodule.exports.characters = characters;\nmodule.exports.isValid = isValid;\n","'use strict';\nmodule.exports = require('./lib/index');\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { glue42NotificationOptionsDecoder, nonEmptyStringDecoder, notificationFilterDecoder, notificationStateDecoder, notificationsConfigurationDecoder, notificationsOperationTypesDecoder } from \"../shared/decoders\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport { ActiveNotificationsCountChange, AllNotificationsData, NotificationClickConfig, NotificationEventPayload, NotificationsConfigurationProtocol, NotificationSetStateRequest, operations, PermissionQueryResult, PermissionRequestResult, RaiseNotification, RaiseNotificationResult, SimpleNotificationData, SimpleNotificationSelect, StrictNotificationsConfigurationProtocol } from \"./protocol\";\nimport { generate } from \"shortid\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction\n} from \"callback-registry\";\n\nexport class NotificationsController implements LibController {\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private logger!: IOConnectBrowser.Logger.API;\n private bridge!: GlueBridge;\n private notificationsSettings?: IOConnectBrowser.Notifications.Settings;\n private notifications: { [key in string]: IOConnectBrowser.Notifications.Notification } = {};\n private coreGlue!: IOConnectCore.API;\n private buildNotificationFunc!: (config: IOConnectBrowser.Notifications.RaiseOptions, id: string) => IOConnectBrowser.Notifications.Notification;\n\n public handlePlatformShutdown(): void {\n this.notifications = {};\n this.registry.clear();\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"notifications.controller.web\");\n\n this.logger.trace(\"starting the web notifications controller\");\n\n this.bridge = ioc.bridge;\n\n this.coreGlue = coreGlue;\n\n this.notificationsSettings = ioc.config.notifications;\n\n this.buildNotificationFunc = ioc.buildNotification;\n\n const api = this.toApi();\n\n this.addOperationExecutors();\n\n (coreGlue as IOConnectBrowser.API).notifications = api;\n\n this.logger.trace(\"notifications are ready\");\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = notificationsOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n private toApi(): IOConnectBrowser.Notifications.API {\n const api: IOConnectBrowser.Notifications.API = {\n raise: this.raise.bind(this),\n requestPermission: this.requestPermission.bind(this),\n getPermission: this.getPermission.bind(this),\n list: this.list.bind(this),\n onRaised: this.onRaised.bind(this),\n onClosed: this.onClosed.bind(this),\n click: this.click.bind(this),\n clear: this.clear.bind(this),\n clearAll: this.clearAll.bind(this),\n clearOld: this.clearOld.bind(this),\n configure: this.configure.bind(this),\n getConfiguration: this.getConfiguration.bind(this),\n getFilter: this.getFilter.bind(this),\n setFilter: this.setFilter.bind(this),\n setState: this.setState.bind(this),\n onConfigurationChanged: this.onConfigurationChanged.bind(this),\n onActiveCountChanged: this.onActiveCountChanged.bind(this),\n onStateChanged: this.onStateChanged.bind(this)\n };\n\n return Object.freeze(api);\n }\n\n private async getPermission(): Promise<\"default\" | \"granted\" | \"denied\"> {\n\n const queryResult = await this.bridge.send(\"notifications\", operations.getPermission, undefined);\n\n return queryResult.permission;\n }\n\n private async requestPermission(): Promise {\n\n const permissionResult = await this.bridge.send(\"notifications\", operations.requestPermission, undefined);\n\n return permissionResult.permissionGranted;\n }\n\n private async raise(options: IOConnectBrowser.Notifications.RaiseOptions): Promise {\n const settings = glue42NotificationOptionsDecoder.runWithException(options);\n\n settings.showToast = typeof settings.showToast === \"boolean\" ? settings.showToast : true;\n settings.showInPanel = typeof settings.showInPanel === \"boolean\" ? settings.showInPanel : true;\n\n const permissionGranted = await this.requestPermission();\n\n if (!permissionGranted) {\n throw new Error(\"Cannot raise the notification, because the user has declined the permission request\");\n }\n\n const id = generate();\n\n const raiseResult = await this.bridge.send(\"notifications\", operations.raiseNotification, { settings, id });\n\n const notification = this.buildNotificationFunc(raiseResult.settings, id);\n\n this.notifications[id] = notification;\n\n return notification;\n }\n\n private async list(): Promise {\n const bridgeResponse = await this.bridge.send(\"notifications\", operations.list, undefined, undefined, { includeOperationCheck: true });\n\n return bridgeResponse.notifications;\n }\n\n private onRaised(callback: (notification: IOConnectBrowser.Notifications.NotificationData) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onRaised expects a callback of type function\");\n }\n\n return this.registry.add(\"notification-raised\", callback);\n }\n\n private onClosed(callback: (notification: SimpleNotificationSelect) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onRaised expects a callback of type function\");\n }\n\n return this.registry.add(\"notification-closed\", callback);\n }\n\n private async click(id: string, action?: string): Promise {\n nonEmptyStringDecoder.runWithException(id);\n\n if (action) {\n nonEmptyStringDecoder.runWithException(action);\n }\n\n await this.bridge.send(\"notifications\", operations.click, { id, action }, undefined, { includeOperationCheck: true });\n }\n\n private async clear(id: string): Promise {\n nonEmptyStringDecoder.runWithException(id);\n\n await this.bridge.send(\"notifications\", operations.clear, { id }, undefined, { includeOperationCheck: true });\n }\n\n private async clearAll(): Promise {\n await this.bridge.send(\"notifications\", operations.clearAll, undefined, undefined, { includeOperationCheck: true });\n }\n\n private async clearOld(): Promise {\n await this.bridge.send(\"notifications\", operations.clearOld, undefined, undefined, { includeOperationCheck: true });\n }\n\n private async configure(config: IOConnectBrowser.Notifications.Configuration): Promise {\n const verifiedConfig = notificationsConfigurationDecoder.runWithException(config);\n\n await this.bridge.send(\"notifications\", operations.configure, { configuration: verifiedConfig }, undefined, { includeOperationCheck: true });\n }\n\n private async getConfiguration(): Promise {\n const response = await this.bridge.send(\"notifications\", operations.getConfiguration, undefined, undefined, { includeOperationCheck: true });\n\n return response.configuration;\n }\n\n private async getFilter(): Promise {\n const response = await this.bridge.send(\"notifications\", operations.getConfiguration, undefined, undefined, { includeOperationCheck: true });\n\n return response.configuration.sourceFilter;\n }\n\n private async setFilter(filter: IOConnectBrowser.Notifications.NotificationFilter): Promise {\n const verifiedFilter = notificationFilterDecoder.runWithException(filter);\n\n await this.bridge.send(\"notifications\", operations.configure, { configuration: { sourceFilter: verifiedFilter } }, undefined, { includeOperationCheck: true });\n\n return verifiedFilter;\n }\n\n private async setState(id: string, state: IOConnectBrowser.Notifications.State): Promise {\n nonEmptyStringDecoder.runWithException(id);\n notificationStateDecoder.runWithException(state);\n\n await this.bridge.send(\"notifications\", operations.setState, { id, state }, undefined, { includeOperationCheck: true });\n }\n\n private onConfigurationChanged(callback: (config: IOConnectBrowser.Notifications.Configuration) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to configuration changed, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"notifications-config-changed\", callback);\n }\n\n private onActiveCountChanged(callback: (info: { count: number; }) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onActiveCountChanged changed, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"notifications-active-count-changed\", callback);\n }\n\n private onStateChanged(callback: (notification: { id: string; }, state: IOConnectBrowser.Notifications.State) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onStateChanged changed, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"notification-state-changed\", callback);\n }\n\n private addOperationExecutors(): void {\n operations.notificationShow.execute = this.handleNotificationShow.bind(this);\n operations.notificationClick.execute = this.handleNotificationClick.bind(this);\n operations.notificationRaised.execute = this.handleNotificationRaised.bind(this);\n operations.notificationClosed.execute = this.handleNotificationClosed.bind(this);\n operations.configurationChanged.execute = this.handleConfigurationChanged.bind(this);\n operations.activeCountChange.execute = this.handleActiveCountChanged.bind(this);\n operations.stateChange.execute = this.handleNotificationStateChanged.bind(this);\n }\n\n private async handleConfigurationChanged(data: StrictNotificationsConfigurationProtocol): Promise {\n this.registry.execute(\"notifications-config-changed\", data.configuration);\n }\n\n private async handleActiveCountChanged(data: ActiveNotificationsCountChange): Promise {\n this.registry.execute(\"notifications-active-count-changed\", data);\n }\n\n private async handleNotificationStateChanged(data: NotificationSetStateRequest): Promise {\n this.registry.execute(\"notification-state-changed\", {id: data.id}, data.state);\n }\n\n private async handleNotificationShow(data: NotificationEventPayload): Promise {\n\n if (!data.id) {\n return;\n }\n\n const notification = this.notifications[data.id];\n if (notification && notification.onshow) {\n notification.onshow();\n }\n }\n\n private async handleNotificationClick(data: NotificationEventPayload): Promise {\n\n if (!data.action && this.notificationsSettings?.defaultClick) {\n this.notificationsSettings.defaultClick(this.coreGlue as IOConnectBrowser.API, data.definition);\n }\n\n if (data.action && this.notificationsSettings?.actionClicks?.some((actionDef) => actionDef.action === data.action)) {\n const foundHandler = this.notificationsSettings?.actionClicks?.find((actionDef) => actionDef.action === data.action) as IOConnectBrowser.Notifications.ActionClickHandler;\n\n foundHandler.handler(this.coreGlue as IOConnectBrowser.API, data.definition);\n }\n\n if (!data.id) {\n return;\n }\n\n const notification = this.notifications[data.id];\n\n if (notification && notification.onclick) {\n notification.onclick();\n delete this.notifications[data.id];\n }\n\n }\n\n private async handleNotificationRaised(data: SimpleNotificationData): Promise {\n this.registry.execute(\"notification-raised\", data.notification);\n }\n\n private async handleNotificationClosed(data: SimpleNotificationSelect): Promise {\n this.registry.execute(\"notification-closed\", data);\n }\n}\n","import { IOConnectBrowser } from \"../../browser\";\nimport { wrappedIntentFilterDecoder, intentRequestDecoder, intentResultDecoder, wrappedIntentsDecoder, raiseIntentRequestDecoder, filterHandlersResultDecoder, filterHandlersWithResolverConfigDecoder, intentHandlerDecoder, getIntentsResultDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type IntentsOperationTypes = \"getIntents\" | \"findIntent\" | \"raiseIntent\" | \"raise\" | \"filterHandlers\" | \"getIntentsByHandler\";\n\nexport const operations: { [key in IntentsOperationTypes]: BridgeOperation } = {\n getIntents: { name: \"getIntents\", resultDecoder: wrappedIntentsDecoder },\n findIntent: { name: \"findIntent\", dataDecoder: wrappedIntentFilterDecoder, resultDecoder: wrappedIntentsDecoder },\n raiseIntent: { name: \"raiseIntent\", dataDecoder: intentRequestDecoder, resultDecoder: intentResultDecoder },\n raise: { name: \"raise\", dataDecoder: raiseIntentRequestDecoder, resultDecoder: intentResultDecoder },\n filterHandlers: { name: \"filterHandlers\", dataDecoder: filterHandlersWithResolverConfigDecoder, resultDecoder: filterHandlersResultDecoder },\n getIntentsByHandler: { name: \"getIntentsByHandler\", dataDecoder: intentHandlerDecoder, resultDecoder: getIntentsResultDecoder }\n};\n\nexport interface WrappedIntentFilter {\n filter?: IOConnectBrowser.Intents.IntentFilter;\n}\n\nexport interface WrappedIntents {\n intents: IOConnectBrowser.Intents.Intent[];\n}\n\nexport interface IntentsResolverResponse {\n intent: string;\n handler: IOConnectBrowser.Intents.IntentHandler;\n}\n\nexport interface IntentsResolverResponsePromise {\n intent: string;\n methodName: string;\n promise: Promise;\n resolve: (arg: IntentsResolverResponse) => void;\n reject: (reason: string) => void;\n}\n\nexport interface RaiseIntentArgs extends IOConnectBrowser.Intents.IntentContext {\n _initialCallerId: string;\n}","export const GLUE42_FDC3_INTENTS_METHOD_PREFIX = \"Tick42.FDC3.Intents.\";\n\nexport const INTENTS_RESOLVER_INTEROP_PREFIX = \"T42.Intents.Resolver.Control.\";\n\nexport const INTENTS_RESOLVER_APP_NAME = \"intentsResolver\";\n\nexport const DEFAULT_RESOLVER_RESPONSE_TIMEOUT = 60 * 1000;\n\nexport const ADDITIONAL_BRIDGE_OPERATION_TIMEOUT = 30 * 1000;\n\nexport const INTENTS_RESOLVER_WIDTH = 400;\n\nexport const INTENTS_RESOLVER_HEIGHT = 440;\n\n// JS setTimeout max value - When delay is larger than 2147483647 or less than 1, the delay will be set to 1\nexport const MAX_SET_TIMEOUT_DELAY = 2147483647;\n\nexport const DEFAULT_PICK_HANDLER_BY_TIMEOUT = 90 * 1000;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController, OperationCheckConfig, OperationCheckResult } from \"../shared/types\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { UnsubscribeFunction } from \"callback-registry\";\nimport { intentsOperationTypesDecoder, raiseRequestDecoder, findFilterDecoder, AddIntentListenerDecoder, handlersFilterDecoder, intentHandlerDecoder } from \"../shared/decoders\";\nimport { operations, RaiseIntentArgs, WrappedIntentFilter, WrappedIntents } from \"./protocol\";\nimport { ADDITIONAL_BRIDGE_OPERATION_TIMEOUT, DEFAULT_PICK_HANDLER_BY_TIMEOUT, DEFAULT_RESOLVER_RESPONSE_TIMEOUT, GLUE42_FDC3_INTENTS_METHOD_PREFIX, INTENTS_RESOLVER_APP_NAME, MAX_SET_TIMEOUT_DELAY } from \"./constants\";\nimport { LegacyIntentsHelper } from \"./legacyHelper\";\nimport { systemOperations } from \"../shared/systemOperations\";\nimport { FilterHandlersWithResolverConfig, ResolverConfig, IntentRequestWithResolverConfig, IsRaiseOperationSupported, GetResolverConfigByRequestArgs } from \"./types\"; \n\nexport class IntentsController implements LibController {\n private bridge!: GlueBridge;\n private logger!: IOConnectBrowser.Logger.API;\n private interop!: IOConnectCore.AGM.API;\n private legacyIntentsController!: LegacyIntentsHelper;\n private myIntents = new Set();\n\n private useIntentsResolverUI = true;\n private intentsResolverAppName!: string;\n private intentResolverResponseTimeout!: number;\n\n private unregisterIntentPromises: Promise[] = [];\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"intents.controller.web\");\n\n this.logger.trace(\"starting the web intents controller\");\n\n this.bridge = ioc.bridge;\n\n this.interop = coreGlue.interop;\n\n this.legacyIntentsController = ioc.legacyIntentsHelper;\n\n this.checkIfIntentsResolverIsEnabled(ioc.config);\n\n const api = this.toApi();\n\n this.logger.trace(\"no need for platform registration, attaching the intents property to glue and returning\");\n\n (coreGlue as IOConnectBrowser.API).intents = api;\n }\n\n public handlePlatformShutdown(): void {\n this.myIntents = new Set();\n this.unregisterIntentPromises = [];\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = intentsOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n private toApi(): IOConnectBrowser.Intents.API {\n const api: IOConnectBrowser.Intents.API = {\n raise: this.raise.bind(this),\n all: this.all.bind(this),\n addIntentListener: this.addIntentListener.bind(this),\n register: this.register.bind(this),\n find: this.find.bind(this),\n filterHandlers: this.filterHandlers.bind(this),\n getIntents: this.getIntentsByHandler.bind(this)\n };\n\n return api;\n }\n\n private async raise(request: string | IOConnectBrowser.Intents.IntentRequest): Promise {\n const validatedIntentRequest = raiseRequestDecoder.runWithException(request);\n\n const intentRequest: IOConnectBrowser.Intents.IntentRequest = typeof validatedIntentRequest === \"string\"\n ? { intent: validatedIntentRequest }\n : validatedIntentRequest;\n\n await Promise.all(this.unregisterIntentPromises);\n\n const requestWithResolverInfo = { intentRequest, resolverConfig: this.getResolverConfigByRequest({ intentRequest }) };\n\n const isRaiseOperationSupported = await this.isRaiseOperationSupported();\n\n if (!isRaiseOperationSupported.supported) {\n this.logger.warn(`${isRaiseOperationSupported.reason}. Invoking legacy raise method`);\n\n return this.legacyIntentsController.raise(requestWithResolverInfo, this.find.bind(this));\n }\n\n this.logger.trace(`Sending raise request to the platform: ${JSON.stringify(request)} and method response timeout of ${this.intentResolverResponseTimeout}ms`);\n\n // waitUserResponseIndefinitely: true -> methodResponseTimeoutMs: Number.MAX_SAFE_INTEGER\n const methodResponseTimeoutMs = intentRequest.waitUserResponseIndefinitely \n ? MAX_SET_TIMEOUT_DELAY\n : (intentRequest.timeout || this.intentResolverResponseTimeout) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT;\n\n const response = await this.bridge.send(\"intents\", operations.raise, requestWithResolverInfo, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs });\n\n return response;\n }\n\n private getResolverConfigByRequest(filter: GetResolverConfigByRequestArgs): ResolverConfig {\n if (filter.handlerFilter) {\n return {\n enabled: typeof filter.handlerFilter?.openResolver === \"boolean\" ? filter.handlerFilter?.openResolver : this.useIntentsResolverUI,\n appName: this.intentsResolverAppName,\n waitResponseTimeout: filter.handlerFilter?.timeout || DEFAULT_PICK_HANDLER_BY_TIMEOUT\n };\n }\n\n\n // if waitUserResponseIndefinitely: true -> ignore resolver timeout and wait for eternity until the user chooses a handler\n const waitResponseTimeout = filter.intentRequest?.waitUserResponseIndefinitely ? MAX_SET_TIMEOUT_DELAY : this.intentResolverResponseTimeout;\n\n return { \n enabled: this.useIntentsResolverUI,\n appName: this.intentsResolverAppName,\n waitResponseTimeout\n };\n }\n\n private async isRaiseOperationSupported(): Promise {\n try {\n const { isSupported } = await this.bridge.send(\"intents\", systemOperations.operationCheck, { operation: \"raise\" });\n\n return {\n supported: isSupported,\n reason: isSupported ? \"\" : \"The platform of this client is outdated and does not support \\\"raise\\\" operation\"\n };\n } catch (error) {\n return {\n supported: false,\n reason: \"The platform of this client is outdated and does not support \\\"operationCheck\\\" command\"\n };\n }\n }\n\n private async all(): Promise {\n await Promise.all(this.unregisterIntentPromises);\n\n const result = await this.bridge.send(\"intents\", operations.getIntents, undefined);\n\n return result.intents;\n }\n\n private addIntentListener(intent: string | IOConnectBrowser.Intents.AddIntentListenerRequest, handler: (context: IOConnectBrowser.Intents.IntentContext) => any): { unsubscribe: UnsubscribeFunction } {\n AddIntentListenerDecoder.runWithException(intent);\n if (typeof handler !== \"function\") {\n throw new Error(\"Cannot add intent listener, because the provided handler is not a function!\");\n }\n\n // eslint-disable-next-line prefer-const\n let registerPromise: Promise;\n\n // `addIntentListener()` is sync.\n const intentName = typeof intent === \"string\" ? intent : intent.intent;\n const methodName = this.buildInteropMethodName(intentName);\n\n const alreadyRegistered = this.myIntents.has(intentName);\n\n if (alreadyRegistered) {\n throw new Error(`Intent listener for intent ${intentName} already registered!`);\n }\n this.myIntents.add(intentName);\n\n const result = {\n unsubscribe: (): void => {\n this.myIntents.delete(intentName);\n\n registerPromise\n .then(() => this.interop.unregister(methodName))\n .catch((err) => this.logger.trace(`Unregistration of a method with name ${methodName} failed with reason: ${err}`));\n }\n };\n\n let intentFlag: Omit = {};\n\n if (typeof intent === \"object\") {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { intent: removed, ...rest } = intent;\n intentFlag = rest;\n }\n\n registerPromise = this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args: RaiseIntentArgs) => {\n if (this.myIntents.has(intentName)) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _initialCallerId, ...rest } = args;\n\n return handler(rest);\n }\n });\n\n registerPromise.catch(err => {\n this.myIntents.delete(intentName);\n\n this.logger.warn(`Registration of a method with name ${methodName} failed with reason: ${err}`);\n });\n\n return result;\n }\n\n private async register(intent: string | IOConnectBrowser.Intents.AddIntentListenerRequest, handler: (context: IOConnectBrowser.Intents.IntentContext, caller?: IOConnectCore.Interop.Instance) => any): Promise<{ unsubscribe: UnsubscribeFunction }> {\n AddIntentListenerDecoder.runWithException(intent);\n\n if (typeof handler !== \"function\") {\n throw new Error(\"Cannot add intent listener, because the provided handler is not a function!\");\n }\n\n await Promise.all(this.unregisterIntentPromises);\n\n const intentName = typeof intent === \"string\" ? intent : intent.intent;\n const methodName = this.buildInteropMethodName(intentName);\n\n const alreadyRegistered = this.myIntents.has(intentName);\n\n if (alreadyRegistered) {\n throw new Error(`Intent listener for intent ${intentName} already registered!`);\n }\n this.myIntents.add(intentName);\n\n let intentFlag: Omit = {};\n\n if (typeof intent === \"object\") {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { intent: removed, ...rest } = intent;\n intentFlag = rest;\n }\n\n try {\n await this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args: RaiseIntentArgs) => {\n if (this.myIntents.has(intentName)) {\n const { _initialCallerId, ...rest } = args;\n\n const caller = this.interop.servers().find((server) => server.instance === _initialCallerId);\n\n return handler(rest, caller);\n }\n });\n } catch (err) {\n this.myIntents.delete(intentName);\n\n throw new Error(`Registration of a method with name ${methodName} failed with reason: ${JSON.stringify(err)}`);\n }\n\n return {\n unsubscribe: () => this.unsubscribeIntent(intentName)\n };\n }\n\n private async find(intentFilter?: string | IOConnectBrowser.Intents.IntentFilter): Promise {\n let data: WrappedIntentFilter | undefined = undefined;\n\n if (typeof intentFilter !== \"undefined\") {\n const intentFilterObj = findFilterDecoder.runWithException(intentFilter);\n\n if (typeof intentFilterObj === \"string\") {\n data = {\n filter: {\n name: intentFilterObj\n }\n };\n } else if (typeof intentFilterObj === \"object\") {\n data = {\n filter: intentFilterObj\n };\n }\n }\n\n await Promise.all(this.unregisterIntentPromises);\n\n const result = await this.bridge.send(\"intents\", operations.findIntent, data);\n\n return result.intents;\n }\n\n private checkIfIntentsResolverIsEnabled(options: IOConnectBrowser.Config): void {\n this.useIntentsResolverUI = typeof options.intents?.enableIntentsResolverUI === \"boolean\"\n ? options.intents.enableIntentsResolverUI\n : true;\n\n this.intentsResolverAppName = options.intents?.intentsResolverAppName ?? INTENTS_RESOLVER_APP_NAME;\n\n this.intentResolverResponseTimeout = options.intents?.methodResponseTimeoutMs ?? DEFAULT_RESOLVER_RESPONSE_TIMEOUT;\n }\n\n private clearUnregistrationPromise(promiseToRemove: Promise): void {\n this.unregisterIntentPromises = this.unregisterIntentPromises.filter(promise => promise !== promiseToRemove);\n }\n\n private buildInteropMethodName(intentName: string): string {\n return `${GLUE42_FDC3_INTENTS_METHOD_PREFIX}${intentName}`;\n }\n\n private unsubscribeIntent(intentName: string): void {\n this.myIntents.delete(intentName);\n\n const methodName = this.buildInteropMethodName(intentName);\n\n // typings are wrong and mark unregister as a sync method\n const unregisterPromise = this.interop.unregister(methodName) as unknown as Promise;\n\n this.unregisterIntentPromises.push(unregisterPromise);\n\n unregisterPromise\n .then(() => {\n this.clearUnregistrationPromise(unregisterPromise);\n })\n .catch((err) => {\n this.logger.error(`Unregistration of a method with name ${methodName} failed with reason: ${err}`);\n\n this.clearUnregistrationPromise(unregisterPromise);\n });\n }\n\n private async filterHandlers(handlerFilter: IOConnectBrowser.Intents.HandlerFilter): Promise {\n handlersFilterDecoder.runWithException(handlerFilter);\n \n this.checkIfAtLeastOneFilterIsPresent(handlerFilter);\n\n if (handlerFilter.openResolver && !this.useIntentsResolverUI) {\n throw new Error(\"Cannot resolve 'filterHandlers' request using Intents Resolver UI because it's globally disabled\");\n }\n\n const methodResponseTimeoutMs = (handlerFilter.timeout || DEFAULT_PICK_HANDLER_BY_TIMEOUT) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT;\n\n const filterHandlersRequestWithResolverConfig: FilterHandlersWithResolverConfig = { filterHandlersRequest: handlerFilter, resolverConfig: this.getResolverConfigByRequest({ handlerFilter }) };\n \n const result = await this.bridge.send(\"intents\", operations.filterHandlers, filterHandlersRequestWithResolverConfig, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs }, { includeOperationCheck: true });\n\n return result;\n }\n\n private checkIfAtLeastOneFilterIsPresent(filter: IOConnectBrowser.Intents.HandlerFilter): void {\n const errorMsg = \"Provide at least one filter criteria of the following: 'intent' | 'contextTypes' | 'resultType' | 'applicationNames'\";\n \n if (!Object.keys(filter).length) {\n // only title was present\n throw new Error(errorMsg);\n }\n\n const { intent, resultType, contextTypes, applicationNames } = filter;\n\n const existingValidContextTypes = contextTypes?.length;\n const existingValidApplicationNames = applicationNames?.length;\n\n if (!intent && !resultType && !existingValidContextTypes && !existingValidApplicationNames) {\n throw new Error(errorMsg);\n }\n }\n\n private async getIntentsByHandler(handler: IOConnectBrowser.Intents.IntentHandler): Promise {\n intentHandlerDecoder.runWithException(handler);\n\n const result = await this.bridge.send(\"intents\", operations.getIntentsByHandler, handler, undefined, { includeOperationCheck: true });\n\n return result;\n }\n}\n","import { PlatformMessages } from \"./types\";\n\nexport const Glue42CoreMessageTypes: { [key in PlatformMessages]: { name: PlatformMessages } } = {\n platformUnload: { name: \"platformUnload\" },\n transportSwitchRequest: { name: \"transportSwitchRequest\" },\n transportSwitchResponse: { name: \"transportSwitchResponse\" },\n getCurrentTransport: { name: \"getCurrentTransport\" },\n getCurrentTransportResponse: { name: \"getCurrentTransportResponse\" },\n checkPreferredLogic: { name: \"checkPreferredLogic\" },\n checkPreferredConnection: { name: \"checkPreferredConnection\" },\n checkPreferredLogicResponse: { name: \"checkPreferredLogicResponse\" },\n checkPreferredConnectionResponse: { name: \"checkPreferredConnectionResponse\" }\n};\n\nexport const webPlatformTransportName = \"web-platform\";\n\nexport const latestFDC3Type = \"latest_fdc3_type\";","import { channelContextDecoder, getMyChanelResultDecoder, getWindowIdsOnChannelDataDecoder, getWindowIdsOnChannelResultDecoder, getWindowIdsWithChannelsResultDecoder, joinChannelDataDecoder, wrappedWindowWithChannelFilterDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\nimport { IOConnectBrowser } from \"../../browser\";\n\nexport type ChannelOperationTypes = \"addChannel\" | \"getMyChannel\" | \"getWindowIdsOnChannel\" | \"getWindowIdsWithChannels\" | \"joinChannel\";\n\nexport const operations: { [key in ChannelOperationTypes]: BridgeOperation } = {\n addChannel: { name: \"addChannel\", dataDecoder: channelContextDecoder },\n getMyChannel: { name: \"getMyChannel\", resultDecoder: getMyChanelResultDecoder },\n getWindowIdsOnChannel: { name: \"getWindowIdsOnChannel\", dataDecoder: getWindowIdsOnChannelDataDecoder, resultDecoder: getWindowIdsOnChannelResultDecoder },\n getWindowIdsWithChannels: { name: \"getWindowIdsWithChannels\", dataDecoder: wrappedWindowWithChannelFilterDecoder, resultDecoder: getWindowIdsWithChannelsResultDecoder },\n joinChannel: { name: \"joinChannel\", dataDecoder: joinChannelDataDecoder },\n};\n\nexport interface MyChannelData {\n channel?: string;\n}\n\nexport interface WindowIdsOnChannelData {\n windowIds: string[];\n}\n\nexport interface WindowIdsWithChannelsData {\n windowIdsWithChannels: {\n application: string;\n channel?: string;\n windowId: string;\n }[]\n}\n\nexport interface WrappedWindowWithChannelFilter {\n filter?: IOConnectBrowser.Channels.WindowWithChannelFilter\n}\n\nexport interface JoinChannelData {\n channel: string;\n windowId: string;\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { channelContextDecoder, channelNameDecoder, channelsOperationTypesDecoder, optionalNonEmptyStringDecoder, windowWithChannelFilterDecoder } from \"../shared/decoders\";\nimport { LibController } from \"../shared/types\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { latestFDC3Type } from \"../shared/constants\";\nimport { IoC } from \"../shared/ioc\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { JoinChannelData, operations, WindowIdsOnChannelData, WindowIdsWithChannelsData, WrappedWindowWithChannelFilter } from \"./protocol\";\nimport { WindowsController } from \"../windows/controller\";\nimport { SessionStorageController } from \"../storage/session\";\n\nexport class ChannelsController implements LibController {\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private logger!: IOConnectBrowser.Logger.API;\n private contexts!: IOConnectCore.Contexts.API;\n private bridge!: GlueBridge;\n private currentChannelName: string | undefined;\n private windowsController!: WindowsController;\n private sessionController!: SessionStorageController;\n private unsubscribeFunc: (() => void) | undefined;\n\n private readonly GlueWebChannelsPrefix = \"___channel___\";\n private readonly SubsKey = \"subs\";\n private readonly ChangedKey = \"changed\";\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n }\n\n private addOperationsExecutors(): void {\n operations.getMyChannel.execute = this.handleGetMyChannel.bind(this);\n operations.joinChannel.execute = this.handleJoinChannel.bind(this);\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"channels.controller.web\");\n\n this.logger.trace(\"starting the web channels controller\");\n\n this.contexts = coreGlue.contexts;\n\n this.addOperationsExecutors();\n\n this.bridge = ioc.bridge;\n\n this.windowsController = ioc.windowsController;\n \n this.sessionController = ioc.sessionController;\n\n this.logger.trace(\"no need for platform registration, attaching the channels property to glue and returning\");\n\n const api = this.toApi();\n\n (coreGlue as IOConnectBrowser.API).channels = api;\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = channelsOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if(!operation.execute) {\n return; \n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n public async list(): Promise {\n const channelNames = this.getAllChannelNames();\n\n const channelContexts = await Promise.all(channelNames.map((channelName) => this.get(channelName)));\n\n return channelContexts;\n }\n\n public my(): string {\n return this.current();\n }\n\n private async handleGetMyChannel() {\n const channel = this.my();\n \n return channel ? { channel } : {};\n }\n\n public async join(name: string, windowId?: string): Promise {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(name);\n optionalNonEmptyStringDecoder.runWithException(windowId);\n\n if (!windowId || windowId === this.windowsController.my().id) {\n await this.switchToChannel(name);\n } else {\n await this.bridge.send(\"channels\", operations.joinChannel, { channel: name, windowId }, undefined, { includeOperationCheck: true });\n }\n }\n\n private handleJoinChannel({ channel, windowId }: JoinChannelData) {\n return this.join(channel, windowId);\n }\n\n public onChanged(callback: (channel: string) => void): UnsubscribeFunction {\n return this.changed(callback);\n }\n\n public async leave(): Promise {\n await this.switchToChannel();\n }\n\n private toApi(): IOConnectBrowser.Channels.API {\n const api: IOConnectBrowser.Channels.API = {\n subscribe: this.subscribe.bind(this),\n subscribeFor: this.subscribeFor.bind(this),\n publish: this.publish.bind(this),\n all: this.all.bind(this),\n list: this.list.bind(this),\n get: this.get.bind(this),\n join: this.join.bind(this),\n leave: this.leave.bind(this),\n current: this.current.bind(this),\n my: this.my.bind(this),\n changed: this.changed.bind(this),\n onChanged: this.onChanged.bind(this),\n add: this.add.bind(this),\n getMy: this.getMy.bind(this),\n getWindowsOnChannel: this.getWindowsOnChannel.bind(this),\n getWindowsWithChannels: this.getWindowsWithChannels.bind(this),\n };\n\n return Object.freeze(api);\n }\n\n private createContextName(channelName: string): string {\n return `${this.GlueWebChannelsPrefix}${channelName}`;\n }\n\n private getAllChannelNames(): string[] {\n const contextNames = this.contexts.all();\n\n const channelContextNames = contextNames.filter((contextName) => contextName.startsWith(this.GlueWebChannelsPrefix));\n\n const channelNames = channelContextNames.map((channelContextName) => channelContextName.replace(this.GlueWebChannelsPrefix, \"\"));\n\n return channelNames;\n }\n\n private unsubscribe(): void {\n if (this.unsubscribeFunc) {\n this.unsubscribeFunc();\n\n this.unsubscribeFunc = undefined;\n }\n }\n\n private async switchToChannel(name?: string): Promise {\n this.unsubscribe();\n\n // TODO: Should be set after `subscribe()` has resolved, but due to an issue where `subscribe()` replays the context before returning an unsubscribe function this has been moved here.\n this.currentChannelName = name;\n\n // When joining a channel (and not leaving).\n if (typeof name !== \"undefined\") {\n const contextName = this.createContextName(name);\n\n this.unsubscribeFunc = await this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\n this.registry.execute(this.SubsKey, context.data, context, extraData?.updaterId);\n });\n }\n\n this.registry.execute(this.ChangedKey, name);\n\n this.sessionController.setWindowData({ currentName: name }, \"channels\");\n }\n\n private async updateData(name: string, data: any): Promise {\n const contextName = this.createContextName(name);\n const fdc3Type = this.getFDC3Type(data);\n\n if (this.contexts.setPathSupported) {\n const pathValues: IOConnectBrowser.Contexts.PathValue[] = Object.keys(data).map((key) => {\n return {\n path: `data.${key}`,\n value: data[key]\n };\n });\n\n if (fdc3Type) {\n pathValues.push({ path: latestFDC3Type, value: fdc3Type});\n }\n\n await this.contexts.setPaths(contextName, pathValues);\n } else {\n if (fdc3Type) {\n data[latestFDC3Type] = fdc3Type;\n }\n\n // Pre @glue42/core 5.2.0. Note that we update the data property only.\n await this.contexts.update(contextName, { data });\n }\n }\n\n private getFDC3Type(data: any): string | undefined {\n const fdc3PropsArr = Object.keys(data).filter((key: string) => key.indexOf(\"fdc3_\") === 0);\n\n if (fdc3PropsArr.length === 0) {\n return;\n }\n\n if (fdc3PropsArr.length > 1) {\n throw new Error(\"FDC3 does not support updating of multiple context keys\");\n }\n\n return fdc3PropsArr[0].split(\"_\").slice(1).join(\"_\");\n }\n\n private subscribe(callback: (data: any, context: IOConnectBrowser.Channels.ChannelContext, updaterId: string) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to channels, because the provided callback is not a function!\");\n }\n\n const currentChannel = this.current();\n \n if (currentChannel) {\n this.replaySubscribe(callback, currentChannel);\n }\n\n return this.registry.add(this.SubsKey, callback);\n }\n\n private async subscribeFor(name: string, callback: (data: any, context: IOConnectBrowser.Channels.ChannelContext, updaterId: string) => void): Promise {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(name);\n if (typeof callback !== \"function\") {\n throw new Error(`Cannot subscribe to channel ${name}, because the provided callback is not a function!`);\n }\n\n const contextName = this.createContextName(name);\n\n return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\n callback(context.data, context, extraData?.updaterId);\n });\n }\n\n private publish(data: any, name?: string): Promise {\n if (typeof data !== \"object\") {\n throw new Error(\"Cannot publish to channel, because the provided data is not an object!\");\n }\n if (typeof name !== \"undefined\") {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(name);\n\n return this.updateData(name, data);\n }\n\n if (typeof this.currentChannelName === \"undefined\") {\n throw new Error(\"Cannot publish to channel, because not joined to a channel!\");\n }\n\n return this.updateData(this.currentChannelName, data);\n }\n\n public async all(): Promise {\n const channelNames = this.getAllChannelNames();\n\n return channelNames;\n }\n\n private async get(name: string): Promise {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(name);\n\n const contextName = this.createContextName(name);\n\n const channelContext = await this.contexts.get(contextName);\n\n if (channelContext.latest_fdc3_type) {\n const { latest_fdc3_type, ...rest} = channelContext;\n\n return { ...rest };\n }\n\n return channelContext;\n }\n\n private current(): string {\n return this.currentChannelName as string;\n }\n\n private changed(callback: (channel: string) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to channel changed, because the provided callback is not a function!\");\n }\n\n return this.registry.add(this.ChangedKey, callback);\n }\n\n private async add(info: IOConnectBrowser.Channels.ChannelContext): Promise {\n const channelContext = channelContextDecoder.runWithException(info);\n\n const channelWithSuchNameExists = this.getAllChannelNames().includes(channelContext.name);\n\n if (channelWithSuchNameExists) {\n throw new Error(\"There's an already existing channel with such name\");\n }\n\n await this.bridge.send(\"channels\", operations.addChannel, channelContext);\n\n return channelContext;\n }\n\n private replaySubscribe = (callback: (data: any, context: IOConnectBrowser.Channels.ChannelContext, updaterId: string) => void, channelId: string) => {\n this.get(channelId)\n .then((channelContext: IOConnectBrowser.Channels.ChannelContext) => {\n if (typeof channelContext.data === \"object\" && Object.keys(channelContext.data).length) {\n const contextName = this.createContextName(channelContext.name);\n\n return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\n callback(context.data, context, extraData?.updaterId);\n });\n }\n\n // this satisfies the TS \"noImplicitReturns\" true flag\n return undefined;\n })\n .then((un: (() => void) | undefined) => {\n if (un && typeof un === \"function\") {\n un();\n }\n })\n .catch(err => this.logger.trace(err));\n };\n\n private async getMy(): Promise {\n if (!this.currentChannelName) {\n return;\n }\n\n return this.get(this.currentChannelName);\n }\n\n private async getWindowsOnChannel(channel: string): Promise {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(channel);\n\n const { windowIds } = await this.bridge.send<{ channel: string }, WindowIdsOnChannelData>(\"channels\", operations.getWindowIdsOnChannel, { channel }, undefined, { includeOperationCheck: true });\n\n const result = windowIds.reduce((windows, windowId) => {\n const window = this.windowsController.findById(windowId);\n\n return window ? [...windows, window] : windows;\n }, []);\n\n return result;\n }\n \n private async getWindowsWithChannels(filter?: IOConnectBrowser.Channels.WindowWithChannelFilter): Promise {\n const operationData: WrappedWindowWithChannelFilter = filter !== undefined\n ? { filter: windowWithChannelFilterDecoder.runWithException(filter) }\n : {};\n\n const { windowIdsWithChannels } = await this.bridge.send(\"channels\", operations.getWindowIdsWithChannels, operationData, undefined, { includeOperationCheck: true });\n\n const result = windowIdsWithChannels.reduce((windowsWithChannels, { application, channel, windowId }) => {\n const window = this.windowsController.findById(windowId);\n\n return window ? [...windowsWithChannels, { application, channel, window }] : windowsWithChannels;\n }, []);\n\n return result;\n }\n}\n","import { anyDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type SystemOperationTypes = \"getEnvironment\" | \"getBase\" | \"platformShutdown\";\n\nexport const operations: { [key in SystemOperationTypes]: BridgeOperation } = {\n getEnvironment: { name: \"getEnvironment\", resultDecoder: anyDecoder },\n getBase: { name: \"getBase\", resultDecoder: anyDecoder },\n platformShutdown: { name: \"platformShutdown\" }\n};\n","import { IOConnectCore } from \"@interopio/core\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { systemOperationTypesDecoder } from \"../shared/decoders\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport { operations } from \"./protocol\";\n\nexport class SystemController implements LibController {\n private bridge!: GlueBridge;\n private ioc!: IoC;\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.bridge = ioc.bridge;\n this.ioc = ioc;\n\n this.addOperationsExecutors();\n\n await this.setEnvironment();\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = systemOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n private async processPlatformShutdown(): Promise {\n\n Object.values(this.ioc.controllers).forEach((controller) => controller.handlePlatformShutdown ? controller.handlePlatformShutdown() : null);\n\n this.ioc.preferredConnectionController.stop();\n\n this.ioc.eventsDispatcher.stop();\n\n await this.bridge.stop();\n\n }\n\n private async setEnvironment(): Promise {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const environment = await this.bridge.send(\"system\", operations.getEnvironment, undefined);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const base = await this.bridge.send(\"system\", operations.getBase, undefined);\n\n const globalNamespace = (window as any).glue42core || (window as any).iobrowser;\n\n const globalNamespaceName = (window as any).glue42core ? \"glue42core\" : \"iobrowser\";\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObj = Object.assign({}, globalNamespace, base, { environment });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any)[globalNamespaceName] = Object.freeze(globalObj);\n }\n\n private addOperationsExecutors(): void {\n operations.platformShutdown.execute = this.processPlatformShutdown.bind(this);\n }\n}","/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectBrowser } from \"../../browser\";\n\nexport class Notification implements IOConnectBrowser.Notifications.Notification {\n\n public onclick: () => any = () => { };\n public onshow: () => any = () => { };\n public id: string;\n public title: string;\n public badge?: string | undefined;\n public body?: string | undefined;\n public data?: any;\n public dir?: \"auto\" | \"ltr\" | \"rtl\" | undefined;\n public icon?: string | undefined;\n public image?: string | undefined;\n public lang?: string | undefined;\n public renotify?: boolean | undefined;\n public requireInteraction?: boolean | undefined;\n public silent?: boolean | undefined;\n public tag?: string | undefined;\n public timestamp?: number | undefined;\n public vibrate?: number[] | undefined;\n public clickInterop?: IOConnectBrowser.Notifications.InteropActionSettings | undefined;\n public actions?: IOConnectBrowser.Notifications.NotificationAction[] | undefined;\n public focusPlatformOnDefaultClick?: boolean | undefined;\n public severity?: \"Low\" | \"Medium\" | \"High\" | \"Critical\" | \"None\" | undefined;\n public showToast?: boolean | undefined;\n public showInPanel?: boolean | undefined;\n public state?: IOConnectBrowser.Notifications.State;\n\n constructor(config: IOConnectBrowser.Notifications.RaiseOptions, id: string) {\n this.id = id;\n this.badge = config.badge;\n this.body = config.body;\n this.data = config.data;\n this.dir = config.dir;\n this.icon = config.icon;\n this.image = config.image;\n this.lang = config.lang;\n this.renotify = config.renotify;\n this.requireInteraction = config.requireInteraction;\n this.silent = config.silent;\n this.tag = config.tag;\n this.timestamp = config.timestamp;\n this.vibrate = config.vibrate;\n this.title = config.title;\n this.clickInterop = config.clickInterop;\n this.actions = config.actions;\n this.focusPlatformOnDefaultClick = config.focusPlatformOnDefaultClick;\n this.severity = config.severity;\n this.showToast = config.showToast;\n this.showInPanel = config.showInPanel;\n this.state = config.state;\n }\n\n}","import { Decoder, oneOf, constant, object, boolean } from \"decoder-validate\";\nimport { ExtensionConfig, ExtensionOperationTypes } from \"./protocol\";\n\nexport const extensionOperationTypesDecoder: Decoder = oneOf<\"clientHello\">(\n constant(\"clientHello\")\n);\n\nexport const extensionConfigDecoder: Decoder = object({\n widget: object({\n inject: boolean()\n })\n});\n","import { IOConnectBrowser } from \"../../browser\";\nimport { BridgeOperation } from \"../shared/types\";\nimport { extensionConfigDecoder } from \"./decoders\";\n\nexport type ExtensionOperationTypes = \"clientHello\";\n\nexport const operations: { [key in ExtensionOperationTypes]: BridgeOperation } = {\n clientHello: { name: \"clientHello\", resultDecoder: extensionConfigDecoder }\n};\n\nexport interface ExtensionConfig {\n widget: {\n inject: boolean;\n };\n}\n\nexport interface WidgetInjectionPermission { \n command: \"permissionResponse\";\n allowed: boolean;\n channels?: IOConnectBrowser.Channels.ChannelContext[]; \n currentChannel?: IOConnectBrowser.Channels.ChannelContext; \n}","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { ChannelsController } from \"../channels/controller\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { EventsDispatcher } from \"../shared/dispatcher\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport { ExtensionConfig, operations, WidgetInjectionPermission } from \"./protocol\";\n\nexport class ExtController implements LibController {\n\n private windowId!: string;\n private logger!: IOConnectBrowser.Logger.API;\n private bridge!: GlueBridge;\n private eventsDispatcher!: EventsDispatcher;\n private channelsController!: ChannelsController;\n private config!: ExtensionConfig;\n private channels: IOConnectBrowser.Channels.ChannelContext[] = [];\n private unsubFuncs: (() => void)[] = [];\n\n private readonly contentCommands: { [key in string]: { name: string; handle: (message: any) => Promise } } = {\n widgetVisualizationPermission: { name: \"widgetVisualizationPermission\", handle: this.handleWidgetVisualizationPermission.bind(this) },\n changeChannel: { name: \"changeChannel\", handle: this.handleChangeChannel.bind(this) }\n };\n\n public handlePlatformShutdown(): void {\n this.unsubFuncs.forEach((unsub) => unsub());\n this.channels = [];\n this.unsubFuncs = [];\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n\n this.logger = coreGlue.logger.subLogger(\"extension.controller.web\");\n \n this.windowId = ioc.publicWindowId;\n\n this.logger.trace(\"starting the extension web controller\");\n\n this.bridge = ioc.bridge;\n this.channelsController = ioc.channelsController;\n this.eventsDispatcher = ioc.eventsDispatcher;\n\n // TODO: Maybe think about a better way, because the platform will reject and log an error\n try {\n await this.registerWithPlatform();\n } catch (error) {\n // this is soft controller initialization to ensure that\n // this non-essential controller will not break Glue Web \n // initialization combined with older platforms\n return;\n }\n\n this.channels = await this.channelsController.list();\n\n const unsubDispatcher = this.eventsDispatcher.onContentMessage(this.handleContentMessage.bind(this));\n const unsubChannels = this.channelsController.onChanged((channel) => {\n this.eventsDispatcher.sendContentMessage({ command: \"channelChange\", newChannel: channel });\n });\n\n this.unsubFuncs.push(unsubDispatcher);\n this.unsubFuncs.push(unsubChannels);\n }\n\n public async handleBridgeMessage(_: any): Promise {\n // noop\n }\n\n private handleContentMessage(message: any): void {\n\n if (!message || typeof message.command !== \"string\") {\n return;\n }\n\n const foundHandler = this.contentCommands[message.command];\n\n if (!foundHandler) {\n return;\n }\n\n foundHandler.handle(message);\n }\n\n private async registerWithPlatform(): Promise {\n this.logger.trace(\"registering with the platform\");\n\n this.config = await this.bridge.send<{ windowId: string }, ExtensionConfig>(\"extension\", operations.clientHello, { windowId: this.windowId });\n\n this.logger.trace(\"the platform responded to the hello message with a valid extension config\");\n }\n\n private async handleWidgetVisualizationPermission(): Promise {\n if (!this.config?.widget.inject) {\n return this.eventsDispatcher.sendContentMessage({ command: \"permissionResponse\", allowed: false });\n }\n\n const currentChannel = this.channels.find((channel) => channel.name === this.channelsController.my());\n\n this.eventsDispatcher.sendContentMessage({ command: \"permissionResponse\", allowed: true, channels: this.channels, currentChannel });\n }\n\n private async handleChangeChannel(message: { name: string }): Promise {\n if (message.name === \"no-channel\") {\n await this.channelsController.leave();\n return;\n }\n\n await this.channelsController.join(message.name);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { Glue42EventPayload, ParsedConfig } from \"./types\";\n\nexport class EventsDispatcher {\n private glue!: IOConnectBrowser.API;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private readonly glue42EventName = \"Glue42\";\n private _handleMessage!: (event: Event) => void;\n\n constructor(private readonly config: ParsedConfig) { }\n\n private readonly events: { [key in string]: { name: string; handle: (glue42Data: any) => void | Promise } } = {\n notifyStarted: { name: \"notifyStarted\", handle: this.handleNotifyStarted.bind(this) },\n contentInc: { name: \"contentInc\", handle: this.handleContentInc.bind(this) },\n requestGlue: { name: \"requestGlue\", handle: this.handleRequestGlue.bind(this) }\n };\n\n public stop(): void {\n window.removeEventListener(this.glue42EventName, this._handleMessage);\n }\n\n public start(glue: IOConnectBrowser.API): void {\n this.glue = glue;\n\n this.wireCustomEventListener();\n\n this.announceStarted();\n }\n\n public sendContentMessage(message: T): void {\n this.send(\"contentOut\", \"glue42core\", message);\n }\n\n public onContentMessage(callback: (message: any) => void): UnsubscribeFunction {\n return this.registry.add(\"content-inc\", callback);\n }\n\n private wireCustomEventListener(): void {\n\n this._handleMessage = this.handleMessage.bind(this);\n\n window.addEventListener(this.glue42EventName, this._handleMessage);\n }\n\n private handleMessage(event: Event): void {\n const data = (event as CustomEvent).detail;\n\n const namespace = data?.glue42 ?? data?.glue42core;\n \n if (!namespace) {\n return;\n }\n\n const glue42Event: string = namespace.event;\n\n const foundHandler = this.events[glue42Event];\n\n if (!foundHandler) {\n return;\n }\n\n foundHandler.handle(namespace.message);\n }\n\n private announceStarted(): void {\n this.send(\"start\", \"glue42\");\n }\n\n private handleRequestGlue(): void {\n if (!this.config.exposeAPI) {\n this.send(\"requestGlueResponse\", \"glue42\", { error: \"Will not give access to the underlying Glue API, because it was explicitly denied upon initialization.\" });\n return;\n }\n\n this.send(\"requestGlueResponse\", \"glue42\", { glue: this.glue });\n }\n\n private handleNotifyStarted(): void {\n this.announceStarted();\n }\n\n private handleContentInc(message: any): void {\n this.registry.execute(\"content-inc\", message);\n }\n\n private send(eventName: string, namespace: \"glue42core\" | \"glue42\", message?: any): void {\n const payload: Glue42EventPayload = {};\n payload[namespace] = { event: eventName, message };\n\n const event = new CustomEvent(this.glue42EventName, { detail: payload });\n\n window.dispatchEvent(event);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { UnsubscribeFunction } from \"callback-registry\";\nimport { generate } from \"shortid\";\nimport { Glue42CoreMessageTypes, webPlatformTransportName } from \"../shared/constants\";\nimport { ParsedConfig, PlatformMessages, Transaction, TransportState } from \"../shared/types\";\n\nexport class PreferredConnectionController {\n\n private readonly transactionTimeout = 15000;\n private readonly transactionLocks: { [key in string]: Transaction } = {};\n private webPlatformTransport: any;\n private webPlatformMessagesUnsubscribe: UnsubscribeFunction | undefined;\n private reconnectCounter = 0;\n private readonly logger: IOConnectCore.Logger.API;\n\n constructor(private readonly coreGlue: IOConnectCore.API) {\n this.logger = this.coreGlue.logger.subLogger(\"web.preferred.connection.controller\");\n }\n\n public stop(): void {\n if (!this.webPlatformMessagesUnsubscribe) {\n return;\n }\n\n this.webPlatformMessagesUnsubscribe();\n }\n\n public async start(coreConfig: ParsedConfig): Promise {\n if (coreConfig.isPlatformInternal) {\n this.logger.trace(\"This is an internal client to the platform, skipping all client preferred communication logic.\");\n return;\n }\n\n const isConnectedToPlatform = (this.coreGlue as any).connection.transport.name() === webPlatformTransportName;\n\n if (!isConnectedToPlatform) {\n throw new Error(\"Cannot initiate the Glue Web Bridge, because the initial connection was not handled by a Web Platform transport.\");\n }\n\n if (!(this.coreGlue as any).connection.transport.isPreferredActivated) {\n this.logger.trace(\"The platform of this client was configured without a preferred connection, skipping the rest of the initialization.\");\n return;\n }\n\n this.webPlatformTransport = (this.coreGlue as any).connection.transport;\n\n this.webPlatformMessagesUnsubscribe = this.webPlatformTransport.onMessage(this.handleWebPlatformMessage.bind(this));\n\n const transportState = await this.getCurrentPlatformTransportState();\n\n await this.checkSwitchTransport(transportState);\n }\n\n private handleWebPlatformMessage(msg: string | object): void {\n if (typeof msg === \"string\") {\n return;\n }\n\n const isConnectedToPlatform = (this.coreGlue as any).connection.transport.name() === webPlatformTransportName;\n\n const type = (msg as any).type;\n const args = (msg as any).args;\n const transactionId = (msg as any).transactionId;\n\n if (type === Glue42CoreMessageTypes.transportSwitchRequest.name) {\n return this.handleTransportSwitchRequest(args, transactionId);\n }\n\n if (type === Glue42CoreMessageTypes.platformUnload.name && !isConnectedToPlatform) {\n return this.handlePlatformUnload();\n }\n\n if (type === Glue42CoreMessageTypes.getCurrentTransportResponse.name) {\n return this.handleGetCurrentTransportResponse(args, transactionId);\n }\n\n if (type === Glue42CoreMessageTypes.checkPreferredLogic.name) {\n return this.handleCheckPreferredLogic(transactionId);\n }\n\n if (type === Glue42CoreMessageTypes.checkPreferredConnection.name) {\n return this.handleCheckPreferredConnection(args, transactionId);\n }\n\n }\n\n private async reEstablishPlatformPort(): Promise {\n try {\n await this.webPlatformTransport.connect();\n } catch (error) {\n this.logger.trace(`Error when re-establishing port connection to the platform: ${JSON.stringify(error)}`);\n --this.reconnectCounter;\n\n if (this.reconnectCounter > 0) {\n return this.reEstablishPlatformPort();\n }\n\n this.logger.warn(\"This client lost connection to the platform while connected to a preferred GW and was not able to re-connect to the platform.\");\n }\n\n this.logger.trace(\"The connection to the platform was re-established, closing the connection to the web gateway.\");\n\n this.reconnectCounter = 0;\n\n this.webPlatformTransport.close();\n\n const transportState = await this.getCurrentPlatformTransportState();\n\n await this.checkSwitchTransport(transportState);\n\n }\n\n private async checkSwitchTransport(config: TransportState): Promise {\n const myCurrentTransportName: string = (this.coreGlue as any).connection.transport.name();\n\n if (myCurrentTransportName === config.transportName) {\n this.logger.trace(\"A check switch was requested, but the platform transport and my transport are identical, no switch is necessary\");\n return;\n }\n\n this.logger.trace(`A check switch was requested and a transport switch is necessary, because this client is now on ${myCurrentTransportName}, but it should reconnect to ${JSON.stringify(config)}`);\n\n const result = await this.coreGlue.connection.switchTransport(config);\n\n this.setConnected();\n\n this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(result)}`);\n }\n\n private async getCurrentPlatformTransportState(): Promise {\n\n this.logger.trace(\"Requesting the current transport state of the platform.\");\n\n const transaction = this.setTransaction(Glue42CoreMessageTypes.getCurrentTransport.name);\n\n this.sendPlatformMessage(Glue42CoreMessageTypes.getCurrentTransport.name, transaction.id);\n\n const transportState = await transaction.lock;\n\n this.logger.trace(`The platform responded with transport state: ${JSON.stringify(transportState)}`);\n\n return transportState;\n }\n\n private setTransaction(operation: PlatformMessages): Transaction {\n const transaction: Transaction = {} as Transaction;\n\n const transactionId = generate();\n\n const transactionLock = new Promise((resolve, reject) => {\n\n let transactionLive = true;\n\n transaction.lift = (args): void => {\n transactionLive = false;\n delete this.transactionLocks[transactionId];\n resolve(args);\n };\n\n transaction.fail = (reason): void => {\n transactionLive = false;\n delete this.transactionLocks[transactionId];\n reject(reason);\n };\n\n setTimeout(() => {\n if (!transactionLive) {\n return;\n }\n\n transactionLive = false;\n this.logger.warn(`Transaction for operation: ${operation} timed out.`);\n delete this.transactionLocks[transactionId];\n reject(`Transaction for operation: ${operation} timed out.`);\n }, this.transactionTimeout);\n });\n\n transaction.lock = transactionLock;\n\n transaction.id = transactionId;\n\n this.transactionLocks[transactionId] = transaction;\n\n return transaction;\n }\n\n private sendPlatformMessage(type: PlatformMessages, transactionId: string, args?: any): void {\n this.logger.trace(`Sending a platform message of type: ${type}, id: ${transactionId} and args: ${JSON.stringify(args)}`);\n this.webPlatformTransport.sendObject({\n glue42core: { type, args, transactionId }\n });\n }\n\n private handleTransportSwitchRequest(args: any, transactionId: string): void {\n this.logger.trace(`Received a transport switch request with id: ${transactionId} and data: ${JSON.stringify(args)}`);\n this.coreGlue.connection.switchTransport(args.switchSettings)\n .then((result) => {\n this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(result)}`);\n this.setConnected();\n this.sendPlatformMessage(Glue42CoreMessageTypes.transportSwitchResponse.name, transactionId, { success: result.success });\n })\n .catch((error) => {\n this.logger.error(error);\n this.sendPlatformMessage(Glue42CoreMessageTypes.transportSwitchResponse.name, transactionId, { success: false });\n });\n }\n\n private handlePlatformUnload(): void {\n this.reconnectCounter = 5;\n this.logger.trace(\"The platform was unloaded while I am connected to a preferred connection, re-establishing the port connection.\");\n this.reEstablishPlatformPort();\n }\n\n private handleGetCurrentTransportResponse(args: any, transactionId: string): void {\n this.logger.trace(`Got a current transport response from the platform with id: ${transactionId} and data: ${JSON.stringify(args)}`);\n const transportState = args.transportState as TransportState;\n\n const transaction = this.transactionLocks[transactionId];\n\n transaction?.lift(transportState);\n }\n\n private handleCheckPreferredLogic(transactionId: string): void {\n setTimeout(() => this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredLogicResponse.name, transactionId), 0);\n }\n\n private handleCheckPreferredConnection(args: any, transactionId: string): void {\n const url = args.url;\n\n this.logger.trace(`Testing the possible connection to: ${url}`);\n\n this.checkPreferredConnection(url)\n .then((result) => {\n this.logger.trace(`The connection to ${url} is possible`);\n this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredConnectionResponse.name, transactionId, result);\n })\n .catch((error) => {\n this.logger.trace(`The connection to ${url} is not possible`);\n this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredConnectionResponse.name, transactionId, { error });\n });\n }\n\n private checkPreferredConnection(url: string): Promise<{ live: boolean }> {\n\n return new Promise<{ live: boolean }>((resolve) => {\n const ws = new WebSocket(url);\n\n ws.onerror = (): void => resolve({ live: false });\n\n ws.onopen = (): void => {\n ws.close();\n resolve({ live: true });\n };\n\n });\n\n }\n\n private setConnected(): void {\n this.webPlatformTransport.manualSetReadyState();\n }\n}\n","import { IOConnectCore } from \"@interopio/core\";\nimport shortid from \"shortid\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { AppManagerController } from \"../appManager/controller\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { intentResolverResponseDecoder } from \"../shared/decoders\";\nimport { PromisePlus } from \"../shared/promise-plus\";\nimport { systemOperations } from \"../shared/systemOperations\";\nimport { LibDomains, OperationCheckConfig, OperationCheckResult, SimpleItemIdRequest, WorkspaceFrameBoundsResult } from \"../shared/types\";\nimport { WindowsController } from \"../windows/controller\";\nimport { INTENTS_RESOLVER_HEIGHT, INTENTS_RESOLVER_INTEROP_PREFIX, INTENTS_RESOLVER_WIDTH } from \"./constants\";\nimport { IntentsResolverResponse, IntentsResolverResponsePromise, operations } from \"./protocol\";\nimport { IntentRequestWithResolverConfig, IntentsResolverStartContext, ShouldResolverOpen, ResolverConfig, IntentResolverResponse } from \"./types\";\n\nexport class LegacyIntentsHelper {\n private logger!: IOConnectBrowser.Logger.API;\n\n private intentsResolverResponsePromises: { [instanceId: string]: IntentsResolverResponsePromise } = {};\n\n constructor(\n logger: IOConnectBrowser.Logger.API,\n private readonly bridge: GlueBridge,\n private readonly interop: IOConnectCore.AGM.API,\n private readonly appManagerController: AppManagerController,\n private readonly windowsController: WindowsController\n ) {\n this.logger = this.configureLogger(logger);\n }\n\n public async raise(requestWithResolverInfo: IntentRequestWithResolverConfig, findIntentFn: (intentFilter?: string | IOConnectBrowser.Intents.IntentFilter | undefined) => Promise): Promise {\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\n\n const intent = (await findIntentFn(intentRequest.intent)).find(intent => intent.name === intentRequest.intent);\n\n if (!intent) {\n throw new Error(`Intent with name ${intentRequest.intent} not found`);\n }\n\n const { open, reason } = this.checkIfResolverShouldBeOpened(intent, intentRequest, resolverConfig);\n\n if (!open) {\n this.logger?.trace(`Intent Resolver UI won't be used. Reason: ${reason}`);\n\n return this.invokeRaiseIntent(intentRequest);\n }\n\n const intentResult = await this.raiseIntentWithResolverApp(requestWithResolverInfo);\n\n return intentResult;\n }\n\n private configureLogger(loggerInst: IOConnectBrowser.Logger.API): IOConnectBrowser.Logger.API {\n return loggerInst.subLogger(\"intents.legacy.helper.web\");\n }\n\n private async raiseIntentWithResolverApp(requestWithResolverInfo: IntentRequestWithResolverConfig): Promise {\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\n\n this.logger.trace(`Intents Resolver UI with app name ${resolverConfig.appName} will be used`);\n\n const responseMethodName = await this.registerResponseMethod();\n\n this.logger.trace(`Registered interop method ${responseMethodName}`);\n\n const resolverInstance = await this.openIntentResolverApplication(requestWithResolverInfo, responseMethodName);\n\n this.logger.trace(`Intents Resolver Instance with id ${resolverInstance.id} opened`);\n\n const handler = await this.handleInstanceResponse(resolverInstance.id);\n\n const target = handler.type === \"app\"\n ? { app: handler.applicationName }\n : { instance: handler.instanceId };\n\n this.logger.trace(`Intent handler chosen by the user: ${JSON.stringify(target)}`);\n\n const intentResult = await this.invokeRaiseIntent({ ...intentRequest, target });\n\n return intentResult;\n }\n\n private async handleInstanceResponse(instanceId: string): Promise {\n try {\n const { handler, intent } = await this.intentsResolverResponsePromises[instanceId].promise;\n\n this.logger?.trace(`Intent handler chosen for intent ${intent}: ${JSON.stringify(handler)}`);\n\n this.stopResolverInstance(instanceId);\n\n return handler;\n\n } catch (error) {\n this.stopResolverInstance(instanceId);\n\n throw new Error(error as string);\n }\n }\n\n private invokeRaiseIntent(requestObj: IOConnectBrowser.Intents.IntentRequest): Promise {\n return this.bridge.send(\"intents\", operations.raiseIntent, requestObj);\n }\n\n private async registerResponseMethod(): Promise {\n const methodName = INTENTS_RESOLVER_INTEROP_PREFIX + shortid();\n\n await this.interop.register(methodName, this.resolverResponseHandler.bind(this));\n\n return methodName;\n }\n\n private async openIntentResolverApplication(requestWithResolverInfo: IntentRequestWithResolverConfig, methodName: string): Promise {\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\n\n const startContext = this.buildStartContext(intentRequest, methodName);\n\n const startOptions = await this.buildStartOptions();\n\n this.logger.trace(`Starting Intents Resolver UI with context: ${JSON.stringify(startContext)} and options: ${startOptions}`);\n\n const instance = await this.appManagerController.getApplication(resolverConfig.appName).start(startContext, startOptions);\n\n this.logger.trace(`Intents Resolver instance with id ${instance.id} opened`);\n\n this.subscribeOnInstanceStopped(instance);\n\n this.createResponsePromise(intentRequest.intent, instance.id, methodName, resolverConfig.waitResponseTimeout);\n\n return instance;\n }\n\n private async cleanUpIntentResolverPromise(instanceId: string): Promise {\n const intentPromise = this.intentsResolverResponsePromises[instanceId];\n\n if (!intentPromise) {\n return;\n }\n\n // typings are wrong and mark unregister as a sync method\n const unregisterPromise = this.interop.unregister(intentPromise.methodName) as unknown as Promise;\n\n unregisterPromise.catch((error) => this.logger.warn(error));\n\n delete this.intentsResolverResponsePromises[instanceId];\n }\n\n private buildStartContext(requestObj: IOConnectBrowser.Intents.IntentRequest, methodName: string): IntentsResolverStartContext {\n return {\n intent: requestObj,\n callerId: this.interop.instance.instance!,\n methodName\n };\n }\n\n private async buildStartOptions(): Promise {\n const bounds = await this.getTargetBounds();\n\n return {\n top: (bounds.height - INTENTS_RESOLVER_HEIGHT) / 2 + bounds.top,\n left: (bounds.width - INTENTS_RESOLVER_WIDTH) / 2 + bounds.left,\n width: INTENTS_RESOLVER_WIDTH,\n height: INTENTS_RESOLVER_HEIGHT\n };\n }\n\n private async getTargetBounds(): Promise {\n const bounds = await this.tryGetWindowBasedBounds() || await this.tryGetWorkspaceBasedBounds();\n\n if (bounds) {\n this.logger.trace(`Opening Intents Resolver UI with bounds: ${JSON.stringify(bounds)}`);\n\n return bounds;\n }\n\n const defaultBounds: IOConnectBrowser.Windows.Bounds = {\n top: (window as any).screen.availTop || 0,\n left: (window as any).screen.availLeft || 0,\n width: window.screen.width,\n height: window.screen.height\n };\n\n this.logger.trace(`Opening Intents Resolver UI relative to my screen bounds: ${JSON.stringify(defaultBounds)}`);\n\n return defaultBounds;\n }\n\n private async tryGetWindowBasedBounds(): Promise {\n try {\n const myWindowBounds = await this.windowsController.my().getBounds();\n\n this.logger.trace(`Opening the resolver UI relative to my window bounds: ${JSON.stringify(myWindowBounds)}`);\n\n return myWindowBounds;\n } catch (error) {\n this.logger.trace(`Failure to get my window bounds: ${JSON.stringify(error)}`);\n }\n \n // this satisfies the TS \"noImplicitReturns\" true flag\n return undefined;\n }\n\n private async tryGetWorkspaceBasedBounds(): Promise {\n try {\n await this.bridge.send(\"workspaces\" as LibDomains, systemOperations.operationCheck, { operation: \"getWorkspaceWindowFrameBounds\" });\n\n const bridgeResponse = await this.bridge.send(\"workspaces\" as LibDomains, systemOperations.getWorkspaceWindowFrameBounds, { itemId: this.windowsController.my().id });\n\n const myWorkspaceBounds = bridgeResponse.bounds;\n\n this.logger.trace(`Opening the resolver UI relative to my workspace frame window bounds: ${JSON.stringify(myWorkspaceBounds)}`);\n\n return myWorkspaceBounds;\n } catch (error) {\n this.logger.trace(`Failure to get my workspace frame window bounds: ${JSON.stringify(error)}`);\n }\n \n // this satisfies the TS \"noImplicitReturns\" true flag\n return undefined;\n }\n\n private subscribeOnInstanceStopped(instance: IOConnectBrowser.AppManager.Instance): void {\n const { application } = instance;\n\n const unsub = application.onInstanceStopped((inst: IOConnectBrowser.AppManager.Instance) => {\n if (inst.id !== instance.id) {\n return;\n }\n\n const intentPromise = this.intentsResolverResponsePromises[inst.id];\n\n if (!intentPromise) {\n return unsub();\n }\n\n intentPromise.reject(`Cannot resolve raised intent \"${intentPromise.intent}\" - User closed ${application.name} app without choosing an intent handler`);\n\n this.cleanUpIntentResolverPromise(inst.id);\n\n unsub();\n });\n }\n\n private createResponsePromise(intent: string, instanceId: string, methodName: string, timeout: number): void {\n let resolve: (arg: IntentsResolverResponse) => void = () => { };\n let reject: (reason: string) => void = () => { };\n\n const promise = PromisePlus((res, rej) => {\n resolve = res;\n reject = rej;\n }, timeout, `Timeout of ${timeout}ms hit waiting for the user to choose a handler for intent ${intent}`);\n\n this.intentsResolverResponsePromises[instanceId] = { intent, resolve, reject, promise, methodName };\n }\n\n private resolverResponseHandler(args: any, callerId: IOConnectBrowser.Interop.Instance): void {\n const response = intentResolverResponseDecoder.run(args);\n\n const instanceId = callerId.instance;\n\n if (response.ok) {\n this.logger.trace(`Intent Resolver instance with id ${instanceId} send a valid response: ${JSON.stringify(response.result)}`);\n\n return this.intentsResolverResponsePromises[instanceId!].resolve(response.result);\n }\n\n this.logger.trace(`Intent Resolver instance with id ${instanceId} sent an invalid response. Error: ${JSON.stringify(response.error)}`);\n\n this.intentsResolverResponsePromises[instanceId!].reject(response.error.message);\n\n this.stopResolverInstance(instanceId!);\n }\n\n private stopResolverInstance(instanceId: string): void {\n const searchedInstance = this.appManagerController.getInstances().find((inst: IOConnectBrowser.AppManager.Instance) => inst.id === instanceId);\n\n if (!searchedInstance) {\n return;\n }\n\n searchedInstance.stop().catch(err => this.logger.error(err));\n }\n\n private checkIfIntentHasMoreThanOneHandler(intent: IOConnectBrowser.Intents.Intent, request: IOConnectBrowser.Intents.IntentRequest): boolean {\n // if a specific app / instance is passed, do not open the resolver\n if (typeof request.target === \"object\") {\n return false;\n }\n\n return request.handlers ? request.handlers.length > 1 : intent.handlers.length > 1;\n }\n\n private checkIfResolverShouldBeOpened(intent: IOConnectBrowser.Intents.Intent, intentRequest: IOConnectBrowser.Intents.IntentRequest, resolverConfig: ResolverConfig): ShouldResolverOpen {\n if (!resolverConfig.enabled) {\n return { open: false, reason: \"Intent Resolver is disabled. Raising intent to first found handler\" };\n }\n\n const intentsResolverApp = this.appManagerController.getApplication(resolverConfig.appName);\n\n if (!intentsResolverApp) {\n return { open: false, reason: `Application with name ${resolverConfig.appName} not found` };\n }\n\n const hasMoreThanOneHandler = this.checkIfIntentHasMoreThanOneHandler(intent, intentRequest);\n\n if (!hasMoreThanOneHandler) {\n return { open: false, reason: \"Raised intent has only one handler\" };\n }\n\n return { open: true };\n }\n}","import { IOConnectBrowser } from \"../../browser\";\nimport { allThemesResponseDecoder, selectThemeConfigDecoder, simpleThemeResponseDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type ThemesOperationTypes = \"getCurrent\" | \"list\" | \"select\";\n\nexport const operations: { [key in ThemesOperationTypes]: BridgeOperation } = {\n getCurrent: { name: \"getCurrent\", resultDecoder: simpleThemeResponseDecoder },\n list: { name: \"list\", resultDecoder: allThemesResponseDecoder },\n select: { name: \"select\", dataDecoder: selectThemeConfigDecoder }\n};\n\nexport interface SimpleThemeResponse {\n theme: IOConnectBrowser.Themes.Theme;\n}\n\nexport interface AllThemesResponse {\n themes: IOConnectBrowser.Themes.Theme[];\n}\n\nexport interface SelectThemeConfig {\n name: string;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction\n} from \"callback-registry\";\nimport { nonEmptyStringDecoder, simpleThemeResponseDecoder } from \"../shared/decoders\";\nimport { AllThemesResponse, operations, SelectThemeConfig, SimpleThemeResponse } from \"./protocol\";\n\nexport class ThemesController implements LibController {\n\n private logger!: IOConnectBrowser.Logger.API;\n private bridge!: GlueBridge;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private themesSubscription: IOConnectCore.AGM.Subscription | undefined;\n private activeThemeSubs = 0;\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"themes.controller.web\");\n\n this.logger.trace(\"starting the web themes controller\");\n\n this.bridge = ioc.bridge;\n\n const api = this.toApi();\n\n (coreGlue as IOConnectBrowser.API).themes = api;\n\n this.logger.trace(\"themes are ready\");\n }\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n this.activeThemeSubs = 0;\n this.themesSubscription?.close();\n\n delete this.themesSubscription;\n }\n\n public async handleBridgeMessage(): Promise {\n // noop, because we do not want theme changes notifications to be published by default\n }\n\n private toApi(): IOConnectBrowser.Themes.API {\n const api: IOConnectBrowser.Themes.API = {\n getCurrent: this.getCurrent.bind(this),\n list: this.list.bind(this),\n select: this.select.bind(this),\n onChanged: this.onChanged.bind(this)\n };\n\n return Object.freeze(api);\n }\n\n private async getCurrent(): Promise {\n\n const bridgeResponse = await this.bridge.send(\"themes\", operations.getCurrent, undefined, undefined, { includeOperationCheck: true });\n\n return bridgeResponse.theme;\n }\n\n private async list(): Promise {\n const bridgeResponse = await this.bridge.send(\"themes\", operations.list, undefined, undefined, { includeOperationCheck: true });\n\n return bridgeResponse.themes;\n }\n\n private async select(name: string): Promise {\n nonEmptyStringDecoder.runWithException(name);\n\n await this.bridge.send(\"themes\", operations.select, { name }, undefined, { includeOperationCheck: true });\n }\n\n private async onChanged(callback: (theme: IOConnectBrowser.Themes.Theme) => any): Promise {\n\n if (typeof callback !== \"function\") {\n throw new Error(\"onChanged requires a callback of type function\");\n }\n\n const subReady = this.themesSubscription ?\n Promise.resolve() :\n this.configureThemeSubscription();\n\n await subReady;\n\n ++this.activeThemeSubs;\n const unsubFunc = this.registry.add(\"on-theme-change\", callback);\n\n return () => this.themeUnsub(unsubFunc);\n }\n\n private async configureThemeSubscription(): Promise {\n if (this.themesSubscription) {\n return;\n }\n\n this.themesSubscription = await this.bridge.createNotificationsSteam();\n\n this.themesSubscription.onData((data) => {\n const eventData = data.data;\n\n const validation = simpleThemeResponseDecoder.run(eventData);\n\n if (!validation.ok) {\n this.logger.warn(`Received invalid theme data on the theme event stream: ${JSON.stringify(validation.error)}`);\n return;\n }\n\n const themeChanged = validation.result;\n\n this.registry.execute(\"on-theme-change\", themeChanged.theme);\n });\n\n this.themesSubscription.onClosed(() => {\n this.logger.warn(\"The Themes interop stream was closed, no theme changes notifications will be received\");\n this.registry.clear();\n this.activeThemeSubs = 0;\n delete this.themesSubscription;\n });\n\n }\n\n private themeUnsub(registryUnsub: UnsubscribeFunction): void {\n registryUnsub();\n --this.activeThemeSubs;\n\n if (this.activeThemeSubs) {\n return;\n }\n\n this.themesSubscription?.close();\n\n delete this.themesSubscription;\n }\n}","import { SessionStorageConfig, WindowSessionData } from \"./types\";\n\nexport class SessionStorageController {\n private sessionStorage: Storage = window.sessionStorage;\n private windowId!: string;\n private get allNamespaces(): { namespace: string; defaultValue: any }[] {\n return [{ namespace: this.windowNamespace, defaultValue: {} }];\n }\n\n public configure(config: SessionStorageConfig): void {\n this.windowId = config.windowId;\n\n this.allNamespaces.forEach(({ namespace, defaultValue }) => {\n const data = this.sessionStorage.getItem(namespace);\n\n if (!data) {\n this.sessionStorage.setItem(namespace, JSON.stringify(defaultValue));\n }\n });\n }\n\n private get windowNamespace(): string {\n return `io_connect_window_${this.windowId}`;\n }\n\n public getWindowData(): WindowSessionData {\n return JSON.parse(this.sessionStorage.getItem(this.windowNamespace) as string);\n }\n\n public setWindowData(data: WindowSessionData[Key], key: Key): void {\n const allData = this.getWindowData();\n\n allData[key] = data;\n\n this.sessionStorage.setItem(this.windowNamespace, JSON.stringify(allData));\n }\n}\n","import { BridgeOperation } from \"../shared/types\";\nimport { basePrefsConfigDecoder, changePrefsDataDecoder, getAllPrefsResultDecoder, getPrefsResultDecoder, prefsHelloSuccessDecoder } from \"../shared/decoders\";\n\nexport type PrefsOperationTypes = \"clear\" | \"clearAll\" | \"get\" | \"getAll\" | \"set\" | \"update\" | \"prefsChanged\" | \"prefsHello\";\n\nexport const operations: { [key in PrefsOperationTypes]: BridgeOperation } = {\n clear: { name: \"clear\", dataDecoder: basePrefsConfigDecoder },\n clearAll: { name: \"clearAll\" },\n get: { name: \"get\", dataDecoder: basePrefsConfigDecoder, resultDecoder: getPrefsResultDecoder },\n getAll: { name: \"getAll\", resultDecoder: getAllPrefsResultDecoder },\n set: { name: \"set\", dataDecoder: changePrefsDataDecoder },\n update: { name: \"update\", dataDecoder: changePrefsDataDecoder },\n prefsChanged: { name: \"prefsChanged\", dataDecoder: getPrefsResultDecoder },\n prefsHello: { name: \"prefsHello\", resultDecoder: prefsHelloSuccessDecoder },\n};\n\nexport interface BasePrefsConfig {\n app: string;\n}\n\nexport interface PrefsHelloSuccess {\n platform: {\n app: string;\n };\n}\n","import {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { IOConnectCore } from \"@interopio/core\";\nimport { object, optional } from \"decoder-validate\";\nimport { AppManagerController } from \"../appManager/controller\";\nimport { BasePrefsConfig, PrefsHelloSuccess, operations } from \"./protocol\";\nimport { basePrefsConfigDecoder, nonEmptyStringDecoder, prefsOperationTypesDecoder } from \"../shared/decoders\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { IoC } from \"../shared/ioc\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { LibController, ParsedConfig } from \"../shared/types\";\n\nexport class PrefsController implements LibController {\n private bridge!: GlueBridge;\n private config!: ParsedConfig;\n private logger!: IOConnectBrowser.Logger.API;\n private appManagerController!: AppManagerController;\n private platformAppName!: string;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"prefs.controller.web\");\n\n this.logger.trace(\"starting the web prefs controller\");\n\n this.addOperationsExecutors();\n\n this.bridge = ioc.bridge;\n\n this.config = ioc.config;\n\n this.appManagerController = ioc.appManagerController;\n\n try {\n const prefsHelloSuccess = await this.bridge.send(\"prefs\", operations.prefsHello, undefined, undefined, { includeOperationCheck: true });\n\n this.platformAppName = prefsHelloSuccess.platform.app;\n } catch (error) {\n this.logger.warn(\"The platform of this client is outdated and does not support Prefs API.\");\n return;\n }\n\n this.logger.trace(\"no need for platform registration, attaching the prefs property to glue and returning\");\n\n const api = this.toApi();\n\n (coreGlue as IOConnectBrowser.API).prefs = api;\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = prefsOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n private addOperationsExecutors(): void {\n operations.prefsChanged.execute = this.handleOnChanged.bind(this);\n }\n\n private toApi(): IOConnectBrowser.Prefs.API {\n const api: IOConnectBrowser.Prefs.API = {\n clear: this.clear.bind(this),\n clearAll: this.clearAll.bind(this),\n clearFor: this.clearFor.bind(this),\n get: this.get.bind(this),\n getAll: this.getAll.bind(this),\n set: this.set.bind(this),\n setFor: this.setFor.bind(this),\n subscribe: this.subscribe.bind(this),\n subscribeFor: this.subscribeFor.bind(this),\n update: this.update.bind(this),\n updateFor: this.updateFor.bind(this),\n };\n\n return api;\n }\n\n private async clear(): Promise {\n const app = this.getMyAppName();\n\n await this.clearFor(app);\n }\n\n private async clearAll(): Promise {\n await this.bridge.send(\"prefs\", operations.clearAll, undefined , undefined, { includeOperationCheck: true });\n }\n\n private async clearFor(app: string): Promise {\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\n\n await this.bridge.send(\"prefs\", operations.clear, { app: verifiedApp }, undefined, { includeOperationCheck: true });\n }\n\n private async get(app?: string): Promise {\n const verifiedApp = app === undefined || app === null ? this.getMyAppName() : nonEmptyStringDecoder.runWithException(app);\n\n const { prefs } = await this.bridge.send(\"prefs\", operations.get, { app: verifiedApp }, undefined, { includeOperationCheck: true });\n \n return prefs;\n }\n\n private async getAll(): Promise<{ all: IOConnectBrowser.Prefs.AppPreferences[] }> {\n const result = await this.bridge.send(\"prefs\", operations.getAll, undefined, undefined, { includeOperationCheck: true });\n\n return result;\n }\n\n private async set(data: any, options?: BasePrefsConfig): Promise {\n const verifiedOptions = optional(basePrefsConfigDecoder).runWithException(options);\n const app = verifiedOptions?.app ?? this.getMyAppName();\n\n await this.setFor(app, data);\n }\n\n private async setFor(app: string, data: any): Promise {\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\n const verifiedData = object().runWithException(data);\n\n await this.bridge.send<{ app: string, data: any }, void>(\"prefs\", operations.set, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true });\n }\n\n private subscribe(callback: (prefs: IOConnectBrowser.Prefs.AppPreferences) => void): UnsubscribeFunction {\n const app = this.getMyAppName();\n\n return this.subscribeFor(app, callback);\n }\n\n private subscribeFor(app: string, callback: (prefs: IOConnectBrowser.Prefs.AppPreferences) => void): UnsubscribeFunction {\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\n const applications = this.appManagerController.getApplications();\n const isValidApp = verifiedApp === this.platformAppName || applications.some((application) => application.name === verifiedApp);\n\n if (!isValidApp) {\n throw new Error(`The provided app name \"${app}\" is not valid.`);\n }\n\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to prefs, because the provided callback is not a function!\");\n }\n\n const subscriptionKey = this.getSubscriptionKey(verifiedApp);\n\n this.get(verifiedApp).then(callback);\n\n return this.registry.add(subscriptionKey, callback);\n }\n\n private async update(data: any, options?: BasePrefsConfig): Promise {\n const verifiedOptions = optional(basePrefsConfigDecoder).runWithException(options);\n const app = verifiedOptions?.app ?? this.getMyAppName();\n\n await this.updateFor(app, data);\n }\n\n private async updateFor(app: string, data: any): Promise {\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\n const verifiedData = object().runWithException(data);\n\n await this.bridge.send<{ app: string, data: any }, void>(\"prefs\", operations.update, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true });\n }\n\n private getMyAppName(): string {\n const myAppName = this.config.isPlatformInternal ? this.platformAppName : this.appManagerController.me?.application.name;\n\n if (!myAppName) {\n throw new Error(\"App Preferences operations can not be executed for windows that do not have app!\");\n }\n \n return myAppName;\n }\n\n private getSubscriptionKey(app: string): string {\n return `prefs-changed-${app}`;\n }\n\n private async handleOnChanged({ prefs }: { prefs: IOConnectBrowser.Prefs.AppPreferences }): Promise {\n const subscriptionKey = this.getSubscriptionKey(prefs.app);\n \n this.registry.execute(subscriptionKey, prefs);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { WebWindowModel } from \"../windows/webWindow\";\nimport { LibController, LibDomains, ParsedConfig } from \"./types\";\nimport { WindowsController } from \"../windows/controller\";\nimport { IOConnectCore } from \"@interopio/core\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { AppManagerController } from \"../appManager/controller\";\nimport { WindowProjection } from \"../windows/protocol\";\nimport { BaseApplicationData, InstanceData } from \"../appManager/protocol\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { InstanceModel } from \"../appManager/instance\";\nimport { ApplicationModel } from \"../appManager/application\";\nimport { LayoutsController } from \"../layouts/controller\";\nimport { NotificationsController } from \"../notifications/controller\";\nimport { IntentsController } from \"../intents/controller\";\nimport { ChannelsController } from \"../channels/controller\";\nimport { SystemController } from \"../system/controller\";\nimport { Notification } from \"../notifications/notification\";\nimport { ExtController } from \"../extension/controller\";\nimport { EventsDispatcher } from \"./dispatcher\";\nimport { PreferredConnectionController } from \"../communication/preferred\";\nimport { LegacyIntentsHelper } from \"../intents/legacyHelper\";\nimport { ThemesController } from \"../themes/controller\";\nimport { SessionStorageController } from \"../storage/session\";\nimport { PrefsController } from \"../prefs/controller\";\n\nexport class IoC {\n private _coreGlue!: IOConnectCore.API;\n private _communicationId!: string;\n private _publicWindowId!: string;\n private _webConfig!: ParsedConfig;\n private _windowsControllerInstance!: WindowsController;\n private _appManagerControllerInstance!: AppManagerController;\n private _layoutsControllerInstance!: LayoutsController;\n private _notificationsControllerInstance!: NotificationsController;\n private _intentsControllerInstance!: IntentsController;\n private _legacyIntentsHelperInstance!: LegacyIntentsHelper;\n private _channelsControllerInstance!: ChannelsController;\n private _themesControllerInstance!: ThemesController;\n private _extensionController!: ExtController;\n private _systemControllerInstance!: SystemController;\n private _bridgeInstance!: GlueBridge;\n private _eventsDispatcher!: EventsDispatcher;\n private _preferredConnectionController!: PreferredConnectionController;\n private _sessionController!: SessionStorageController;\n private _prefsControllerInstance!: PrefsController;\n\n public controllers: { [key in LibDomains]: LibController } = {\n windows: this.windowsController,\n appManager: this.appManagerController,\n layouts: this.layoutsController,\n notifications: this.notificationsController,\n intents: this.intentsController,\n channels: this.channelsController,\n system: this.systemController,\n extension: this.extensionController,\n themes: this.themesController,\n prefs: this.prefsController\n };\n\n public get communicationId(): string {\n return this._communicationId;\n }\n\n public get publicWindowId(): string {\n return this._publicWindowId;\n }\n\n public get windowsController(): WindowsController {\n if (!this._windowsControllerInstance) {\n this._windowsControllerInstance = new WindowsController();\n }\n\n return this._windowsControllerInstance;\n }\n\n public get appManagerController(): AppManagerController {\n if (!this._appManagerControllerInstance) {\n this._appManagerControllerInstance = new AppManagerController();\n }\n\n return this._appManagerControllerInstance;\n }\n\n public get layoutsController(): LayoutsController {\n if (!this._layoutsControllerInstance) {\n this._layoutsControllerInstance = new LayoutsController();\n }\n\n return this._layoutsControllerInstance;\n }\n\n public get themesController(): ThemesController {\n if (!this._themesControllerInstance) {\n this._themesControllerInstance = new ThemesController();\n }\n\n return this._themesControllerInstance;\n }\n\n public get notificationsController(): NotificationsController {\n if (!this._notificationsControllerInstance) {\n this._notificationsControllerInstance = new NotificationsController();\n }\n\n return this._notificationsControllerInstance;\n }\n\n public get intentsController(): IntentsController {\n if (!this._intentsControllerInstance) {\n this._intentsControllerInstance = new IntentsController();\n }\n\n return this._intentsControllerInstance;\n }\n\n public get legacyIntentsHelper(): LegacyIntentsHelper {\n if (!this._legacyIntentsHelperInstance) {\n this._legacyIntentsHelperInstance = new LegacyIntentsHelper(this._coreGlue.logger, this.bridge, this._coreGlue.interop, this.appManagerController, this.windowsController);\n }\n\n return this._legacyIntentsHelperInstance;\n }\n\n public get systemController(): SystemController {\n if (!this._systemControllerInstance) {\n this._systemControllerInstance = new SystemController();\n }\n\n return this._systemControllerInstance;\n }\n\n public get channelsController(): ChannelsController {\n if (!this._channelsControllerInstance) {\n this._channelsControllerInstance = new ChannelsController();\n }\n\n return this._channelsControllerInstance;\n }\n\n public get prefsController(): PrefsController {\n if (!this._prefsControllerInstance) {\n this._prefsControllerInstance = new PrefsController();\n }\n\n return this._prefsControllerInstance;\n }\n\n public get extensionController(): ExtController {\n if (!this._extensionController) {\n this._extensionController = new ExtController();\n }\n\n return this._extensionController;\n }\n\n public get eventsDispatcher(): EventsDispatcher {\n if (!this._eventsDispatcher) {\n this._eventsDispatcher = new EventsDispatcher(this.config);\n }\n\n return this._eventsDispatcher;\n }\n\n public get bridge(): GlueBridge {\n if (!this._bridgeInstance) {\n this._bridgeInstance = new GlueBridge(this._coreGlue, this.communicationId);\n }\n\n return this._bridgeInstance;\n }\n\n public get preferredConnectionController(): PreferredConnectionController {\n if (!this._preferredConnectionController) {\n this._preferredConnectionController = new PreferredConnectionController(this._coreGlue);\n }\n\n return this._preferredConnectionController;\n }\n \n public get sessionController(): SessionStorageController {\n if (!this._sessionController) {\n this._sessionController = new SessionStorageController();\n }\n\n return this._sessionController;\n }\n\n public get config(): ParsedConfig {\n return this._webConfig;\n }\n\n public defineGlue(coreGlue: IOConnectCore.API): void {\n this._coreGlue = coreGlue;\n\n this._publicWindowId = (coreGlue as any).connection.transport.publicWindowId;\n\n const globalNamespace = (window as any).glue42core || (window as any).iobrowser;\n // the communicationId will be available in the global namespace if this client is an internal client to the platform\n this._communicationId = (coreGlue as any).connection.transport.communicationId || globalNamespace.communicationId;\n }\n\n public defineConfig(config: ParsedConfig): void {\n this._webConfig = config;\n }\n\n public async buildWebWindow(id: string, name: string): Promise {\n\n const model = new WebWindowModel(id, name, this.bridge);\n\n const api = await model.toApi();\n\n return { id, model, api };\n }\n\n public buildNotification(config: IOConnectBrowser.Notifications.RaiseOptions, id: string): IOConnectBrowser.Notifications.Notification {\n return new Notification(config, id);\n }\n\n public async buildApplication(app: BaseApplicationData, applicationInstances: InstanceData[]): Promise {\n\n const application = (new ApplicationModel(app, [], this.appManagerController)).toApi();\n\n const instances = applicationInstances.map((instanceData) => this.buildInstance(instanceData, application));\n\n application.instances.push(...instances);\n\n return application;\n }\n\n public buildInstance(instanceData: InstanceData, app: IOConnectBrowser.AppManager.Application): IOConnectBrowser.AppManager.Instance {\n return (new InstanceModel(instanceData, this.bridge, app)).toApi();\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* tslint:disable:no-console no-empty */\nimport { IOConnectCoreFactoryFunction } from \"@interopio/core\";\nimport { IOConnectDesktop } from \"@interopio/desktop\";\nimport { IOConnectBrowser, IOConnectBrowserFactoryFunction } from \"../browser\";\nimport { parseConfig } from \"./config\";\nimport { checkSingleton } from \"./config/checkSingleton\";\nimport { enterprise } from \"./enterprise\";\nimport { IoC } from \"./shared/ioc\";\nimport { PromiseWrap } from \"./shared/promise-plus\";\nimport { version } from \"../package.json\";\n\n/** This function creates the factory function which is the default export of the library */\nexport const createFactoryFunction = (coreFactoryFunction: IOConnectCoreFactoryFunction): IOConnectBrowserFactoryFunction => {\n\n return async (userConfig?: IOConnectBrowser.Config): Promise => {\n if (window.glue42gd || (window as any).iodesktop) {\n return enterprise(userConfig);\n }\n\n const ioc = new IoC();\n\n const config = parseConfig(userConfig);\n\n checkSingleton();\n\n const glue = await PromiseWrap(() => coreFactoryFunction(config, { version }) as Promise, 30000, \"Glue Web initialization timed out, because core didn't resolve\");\n\n const logger = glue.logger.subLogger(\"web.main.controller\");\n\n ioc.defineGlue(glue);\n\n ioc.sessionController.configure({ windowId: glue.interop.instance.instance as string });\n\n await ioc.preferredConnectionController.start(config);\n\n await ioc.bridge.start(ioc.controllers);\n\n ioc.defineConfig(config);\n\n logger.trace(\"the bridge has been started, initializing all controllers\");\n\n await Promise.all(Object.values(ioc.controllers).map((controller) => controller.start(glue, ioc)));\n\n logger.trace(\"all controllers reported started, starting all additional libraries\");\n\n await Promise.all(config.libraries.map((lib: any) => lib(glue, config)));\n\n logger.trace(\"all libraries were started\");\n\n ioc.eventsDispatcher.start(glue);\n\n logger.trace(\"start event dispatched, glue is ready, returning it\");\n\n return glue;\n };\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar MetricTypes = {\r\n STRING: 1,\r\n NUMBER: 2,\r\n TIMESTAMP: 3,\r\n OBJECT: 4\r\n};\n\nfunction getMetricTypeByValue(metric) {\r\n if (metric.type === MetricTypes.TIMESTAMP) {\r\n return \"timestamp\";\r\n }\r\n else if (metric.type === MetricTypes.NUMBER) {\r\n return \"number\";\r\n }\r\n else if (metric.type === MetricTypes.STRING) {\r\n return \"string\";\r\n }\r\n else if (metric.type === MetricTypes.OBJECT) {\r\n return \"object\";\r\n }\r\n return \"unknown\";\r\n}\r\nfunction getTypeByValue(value) {\r\n if (value.constructor === Date) {\r\n return \"timestamp\";\r\n }\r\n else if (typeof value === \"number\") {\r\n return \"number\";\r\n }\r\n else if (typeof value === \"string\") {\r\n return \"string\";\r\n }\r\n else if (typeof value === \"object\") {\r\n return \"object\";\r\n }\r\n else {\r\n return \"string\";\r\n }\r\n}\r\nfunction serializeMetric(metric) {\r\n var serializedMetrics = {};\r\n var type = getMetricTypeByValue(metric);\r\n if (type === \"object\") {\r\n var values = Object.keys(metric.value).reduce(function (memo, key) {\r\n var innerType = getTypeByValue(metric.value[key]);\r\n if (innerType === \"object\") {\r\n var composite = defineNestedComposite(metric.value[key]);\r\n memo[key] = {\r\n type: \"object\",\r\n description: \"\",\r\n context: {},\r\n composite: composite,\r\n };\r\n }\r\n else {\r\n memo[key] = {\r\n type: innerType,\r\n description: \"\",\r\n context: {},\r\n };\r\n }\r\n return memo;\r\n }, {});\r\n serializedMetrics.composite = values;\r\n }\r\n serializedMetrics.name = normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name);\r\n serializedMetrics.type = type;\r\n serializedMetrics.description = metric.description;\r\n serializedMetrics.context = {};\r\n return serializedMetrics;\r\n}\r\nfunction defineNestedComposite(values) {\r\n return Object.keys(values).reduce(function (memo, key) {\r\n var type = getTypeByValue(values[key]);\r\n if (type === \"object\") {\r\n memo[key] = {\r\n type: \"object\",\r\n description: \"\",\r\n context: {},\r\n composite: defineNestedComposite(values[key]),\r\n };\r\n }\r\n else {\r\n memo[key] = {\r\n type: type,\r\n description: \"\",\r\n context: {},\r\n };\r\n }\r\n return memo;\r\n }, {});\r\n}\r\nfunction normalizeMetricName(name) {\r\n if (typeof name !== \"undefined\" && name.length > 0 && name[0] !== \"/\") {\r\n return \"/\" + name;\r\n }\r\n else {\r\n return name;\r\n }\r\n}\r\nfunction getMetricValueByType(metric) {\r\n var type = getMetricTypeByValue(metric);\r\n if (type === \"timestamp\") {\r\n return Date.now();\r\n }\r\n else {\r\n return publishNestedComposite(metric.value);\r\n }\r\n}\r\nfunction publishNestedComposite(values) {\r\n if (typeof values !== \"object\") {\r\n return values;\r\n }\r\n return Object.keys(values).reduce(function (memo, key) {\r\n var value = values[key];\r\n if (typeof value === \"object\" && value.constructor !== Date) {\r\n memo[key] = publishNestedComposite(value);\r\n }\r\n else if (value.constructor === Date) {\r\n memo[key] = new Date(value).getTime();\r\n }\r\n else if (value.constructor === Boolean) {\r\n memo[key] = value.toString();\r\n }\r\n else {\r\n memo[key] = value;\r\n }\r\n return memo;\r\n }, {});\r\n}\r\nfunction flatten(arr) {\r\n return arr.reduce(function (flat, toFlatten) {\r\n return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);\r\n }, []);\r\n}\r\nfunction getHighestState(arr) {\r\n return arr.sort(function (a, b) {\r\n if (!a.state) {\r\n return 1;\r\n }\r\n if (!b.state) {\r\n return -1;\r\n }\r\n return b.state - a.state;\r\n })[0];\r\n}\r\nfunction aggregateDescription(arr) {\r\n var msg = \"\";\r\n arr.forEach(function (m, idx, a) {\r\n var path = m.path.join(\".\");\r\n if (idx === a.length - 1) {\r\n msg += path + \".\" + m.name + \": \" + m.description;\r\n }\r\n else {\r\n msg += path + \".\" + m.name + \": \" + m.description + \",\";\r\n }\r\n });\r\n if (msg.length > 100) {\r\n return msg.slice(0, 100) + \"...\";\r\n }\r\n else {\r\n return msg;\r\n }\r\n}\r\nfunction composeMsgForRootStateMetric(system) {\r\n var aggregatedState = system.root.getAggregateState();\r\n var merged = flatten(aggregatedState);\r\n var highestState = getHighestState(merged);\r\n var aggregateDesc = aggregateDescription(merged);\r\n return {\r\n description: aggregateDesc,\r\n value: highestState.state,\r\n };\r\n}\n\nfunction gw3 (connection, config) {\r\n var _this = this;\r\n if (!connection || typeof connection !== \"object\") {\r\n throw new Error(\"Connection is required parameter\");\r\n }\r\n var joinPromise;\r\n var session;\r\n var init = function (repo) {\r\n var resolveReadyPromise;\r\n joinPromise = new Promise(function (resolve) {\r\n resolveReadyPromise = resolve;\r\n });\r\n session = connection.domain(\"metrics\");\r\n session.onJoined(function (reconnect) {\r\n if (!reconnect && resolveReadyPromise) {\r\n resolveReadyPromise();\r\n resolveReadyPromise = undefined;\r\n }\r\n var rootStateMetric = {\r\n name: \"/State\",\r\n type: \"object\",\r\n composite: {\r\n Description: {\r\n type: \"string\",\r\n description: \"\",\r\n },\r\n Value: {\r\n type: \"number\",\r\n description: \"\",\r\n },\r\n },\r\n description: \"System state\",\r\n context: {},\r\n };\r\n var defineRootMetricsMsg = {\r\n type: \"define\",\r\n metrics: [rootStateMetric],\r\n };\r\n session.send(defineRootMetricsMsg);\r\n if (reconnect) {\r\n replayRepo(repo);\r\n }\r\n });\r\n session.join({\r\n system: config.system,\r\n service: config.service,\r\n instance: config.instance\r\n });\r\n };\r\n var replayRepo = function (repo) {\r\n replaySystem(repo.root);\r\n };\r\n var replaySystem = function (system) {\r\n createSystem(system);\r\n system.metrics.forEach(function (m) {\r\n createMetric(m);\r\n });\r\n system.subSystems.forEach(function (ss) {\r\n replaySystem(ss);\r\n });\r\n };\r\n var createSystem = function (system) { return __awaiter(_this, void 0, void 0, function () {\r\n var metric, createMetricsMsg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (system.parent === undefined) {\r\n return [2];\r\n }\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n metric = {\r\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\r\n type: \"object\",\r\n composite: {\r\n Description: {\r\n type: \"string\",\r\n description: \"\",\r\n },\r\n Value: {\r\n type: \"number\",\r\n description: \"\",\r\n },\r\n },\r\n description: \"System state\",\r\n context: {},\r\n };\r\n createMetricsMsg = {\r\n type: \"define\",\r\n metrics: [metric],\r\n };\r\n session.send(createMetricsMsg);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateSystem = function (system, state) { return __awaiter(_this, void 0, void 0, function () {\r\n var shadowedUpdateMetric, stateObj, rootMetric;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n shadowedUpdateMetric = {\r\n type: \"publish\",\r\n values: [{\r\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\r\n value: {\r\n Description: state.description,\r\n Value: state.state,\r\n },\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n session.send(shadowedUpdateMetric);\r\n stateObj = composeMsgForRootStateMetric(system);\r\n rootMetric = {\r\n type: \"publish\",\r\n peer_id: connection.peerId,\r\n values: [{\r\n name: \"/State\",\r\n value: {\r\n Description: stateObj.description,\r\n Value: stateObj.value,\r\n },\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n session.send(rootMetric);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var createMetric = function (metric) { return __awaiter(_this, void 0, void 0, function () {\r\n var metricClone, m, createMetricsMsg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metricClone = cloneMetric(metric);\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n m = serializeMetric(metricClone);\r\n createMetricsMsg = {\r\n type: \"define\",\r\n metrics: [m],\r\n };\r\n session.send(createMetricsMsg);\r\n if (typeof metricClone.value !== \"undefined\") {\r\n updateMetricCore(metricClone);\r\n }\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateMetric = function (metric) { return __awaiter(_this, void 0, void 0, function () {\r\n var metricClone;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metricClone = cloneMetric(metric);\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n updateMetricCore(metricClone);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateMetricCore = function (metric) {\r\n if (canUpdate()) {\r\n var value = getMetricValueByType(metric);\r\n var publishMetricsMsg = {\r\n type: \"publish\",\r\n values: [{\r\n name: normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name),\r\n value: value,\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n return session.sendFireAndForget(publishMetricsMsg);\r\n }\r\n return Promise.resolve();\r\n };\r\n var cloneMetric = function (metric) {\r\n var metricClone = __assign({}, metric);\r\n if (typeof metric.value === \"object\" && metric.value !== null) {\r\n metricClone.value = __assign({}, metric.value);\r\n }\r\n return metricClone;\r\n };\r\n var canUpdate = function () {\r\n var _a;\r\n try {\r\n var func = (_a = config.canUpdateMetric) !== null && _a !== void 0 ? _a : (function () { return true; });\r\n return func();\r\n }\r\n catch (_b) {\r\n return true;\r\n }\r\n };\r\n return {\r\n init: init,\r\n createSystem: createSystem,\r\n updateSystem: updateSystem,\r\n createMetric: createMetric,\r\n updateMetric: updateMetric,\r\n };\r\n}\n\nvar Helpers = {\r\n validate: function (definition, parent, transport) {\r\n if (definition === null || typeof definition !== \"object\") {\r\n throw new Error(\"Missing definition\");\r\n }\r\n if (parent === null || typeof parent !== \"object\") {\r\n throw new Error(\"Missing parent\");\r\n }\r\n if (transport === null || typeof transport !== \"object\") {\r\n throw new Error(\"Missing transport\");\r\n }\r\n },\r\n};\n\nvar BaseMetric = (function () {\r\n function BaseMetric(definition, system, transport, value, type) {\r\n this.definition = definition;\r\n this.system = system;\r\n this.transport = transport;\r\n this.value = value;\r\n this.type = type;\r\n this.path = [];\r\n Helpers.validate(definition, system, transport);\r\n this.path = system.path.slice(0);\r\n this.path.push(system.name);\r\n this.name = definition.name;\r\n this.description = definition.description;\r\n transport.createMetric(this);\r\n }\r\n Object.defineProperty(BaseMetric.prototype, \"repo\", {\r\n get: function () {\r\n var _a;\r\n return (_a = this.system) === null || _a === void 0 ? void 0 : _a.repo;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseMetric.prototype, \"id\", {\r\n get: function () { return \"\".concat(this.system.path, \"/\").concat(name); },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n BaseMetric.prototype.update = function (newValue) {\r\n this.value = newValue;\r\n return this.transport.updateMetric(this);\r\n };\r\n return BaseMetric;\r\n}());\n\nvar NumberMetric = (function (_super) {\r\n __extends(NumberMetric, _super);\r\n function NumberMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.NUMBER) || this;\r\n }\r\n NumberMetric.prototype.incrementBy = function (num) {\r\n this.update(this.value + num);\r\n };\r\n NumberMetric.prototype.increment = function () {\r\n this.incrementBy(1);\r\n };\r\n NumberMetric.prototype.decrement = function () {\r\n this.incrementBy(-1);\r\n };\r\n NumberMetric.prototype.decrementBy = function (num) {\r\n this.incrementBy(num * -1);\r\n };\r\n return NumberMetric;\r\n}(BaseMetric));\n\nvar ObjectMetric = (function (_super) {\r\n __extends(ObjectMetric, _super);\r\n function ObjectMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.OBJECT) || this;\r\n }\r\n ObjectMetric.prototype.update = function (newValue) {\r\n this.mergeValues(newValue);\r\n return this.transport.updateMetric(this);\r\n };\r\n ObjectMetric.prototype.mergeValues = function (values) {\r\n var _this = this;\r\n return Object.keys(this.value).forEach(function (k) {\r\n if (typeof values[k] !== \"undefined\") {\r\n _this.value[k] = values[k];\r\n }\r\n });\r\n };\r\n return ObjectMetric;\r\n}(BaseMetric));\n\nvar StringMetric = (function (_super) {\r\n __extends(StringMetric, _super);\r\n function StringMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.STRING) || this;\r\n }\r\n return StringMetric;\r\n}(BaseMetric));\n\nvar TimestampMetric = (function (_super) {\r\n __extends(TimestampMetric, _super);\r\n function TimestampMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.TIMESTAMP) || this;\r\n }\r\n TimestampMetric.prototype.now = function () {\r\n this.update(new Date());\r\n };\r\n return TimestampMetric;\r\n}(BaseMetric));\n\nfunction system(name, repo, protocol, parent, description) {\r\n if (!repo) {\r\n throw new Error(\"Repository is required\");\r\n }\r\n if (!protocol) {\r\n throw new Error(\"Transport is required\");\r\n }\r\n var _transport = protocol;\r\n var _name = name;\r\n var _description = description || \"\";\r\n var _repo = repo;\r\n var _parent = parent;\r\n var _path = _buildPath(parent);\r\n var _state = {};\r\n var id = _arrayToString(_path, \"/\") + name;\r\n var root = repo.root;\r\n var _subSystems = [];\r\n var _metrics = [];\r\n function subSystem(nameSystem, descriptionSystem) {\r\n if (!nameSystem || nameSystem.length === 0) {\r\n throw new Error(\"name is required\");\r\n }\r\n var match = _subSystems.filter(function (s) { return s.name === nameSystem; });\r\n if (match.length > 0) {\r\n return match[0];\r\n }\r\n var _system = system(nameSystem, _repo, _transport, me, descriptionSystem);\r\n _subSystems.push(_system);\r\n return _system;\r\n }\r\n function setState(state, stateDescription) {\r\n _state = { state: state, description: stateDescription };\r\n _transport.updateSystem(me, _state);\r\n }\r\n function stringMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.STRING, value, function (metricDef) { return new StringMetric(metricDef, me, _transport, value); });\r\n }\r\n function numberMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.NUMBER, value, function (metricDef) { return new NumberMetric(metricDef, me, _transport, value); });\r\n }\r\n function objectMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.OBJECT, value, function (metricDef) { return new ObjectMetric(metricDef, me, _transport, value); });\r\n }\r\n function timestampMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.TIMESTAMP, value, function (metricDef) { return new TimestampMetric(metricDef, me, _transport, value); });\r\n }\r\n function _getOrCreateMetric(metricObject, expectedType, value, createMetric) {\r\n var metricDef = { name: \"\" };\r\n if (typeof metricObject === \"string\") {\r\n metricDef = { name: metricObject };\r\n }\r\n else {\r\n metricDef = metricObject;\r\n }\r\n var matching = _metrics.filter(function (shadowedMetric) { return shadowedMetric.name === metricDef.name; });\r\n if (matching.length > 0) {\r\n var existing = matching[0];\r\n if (existing.type !== expectedType) {\r\n throw new Error(\"A metric named \".concat(metricDef.name, \" is already defined with different type.\"));\r\n }\r\n if (typeof value !== \"undefined\") {\r\n existing\r\n .update(value)\r\n .catch(function () { });\r\n }\r\n return existing;\r\n }\r\n var metric = createMetric(metricDef);\r\n _metrics.push(metric);\r\n return metric;\r\n }\r\n function _buildPath(shadowedSystem) {\r\n if (!shadowedSystem || !shadowedSystem.parent) {\r\n return [];\r\n }\r\n var path = _buildPath(shadowedSystem.parent);\r\n path.push(shadowedSystem.name);\r\n return path;\r\n }\r\n function _arrayToString(path, separator) {\r\n return ((path && path.length > 0) ? path.join(separator) : \"\");\r\n }\r\n function getAggregateState() {\r\n var aggState = [];\r\n if (Object.keys(_state).length > 0) {\r\n aggState.push({\r\n name: _name,\r\n path: _path,\r\n state: _state.state,\r\n description: _state.description,\r\n });\r\n }\r\n _subSystems.forEach(function (shadowedSubSystem) {\r\n var result = shadowedSubSystem.getAggregateState();\r\n if (result.length > 0) {\r\n aggState.push.apply(aggState, result);\r\n }\r\n });\r\n return aggState;\r\n }\r\n var me = {\r\n get name() {\r\n return _name;\r\n },\r\n get description() {\r\n return _description;\r\n },\r\n get repo() {\r\n return _repo;\r\n },\r\n get parent() {\r\n return _parent;\r\n },\r\n path: _path,\r\n id: id,\r\n root: root,\r\n get subSystems() {\r\n return _subSystems;\r\n },\r\n get metrics() {\r\n return _metrics;\r\n },\r\n subSystem: subSystem,\r\n getState: function () {\r\n return _state;\r\n },\r\n setState: setState,\r\n stringMetric: stringMetric,\r\n timestampMetric: timestampMetric,\r\n objectMetric: objectMetric,\r\n numberMetric: numberMetric,\r\n getAggregateState: getAggregateState,\r\n };\r\n _transport.createSystem(me);\r\n return me;\r\n}\n\nvar Repository = (function () {\r\n function Repository(options, protocol) {\r\n protocol.init(this);\r\n this.root = system(\"\", this, protocol);\r\n this.addSystemMetrics(this.root, options.clickStream || options.clickStream === undefined);\r\n }\r\n Repository.prototype.addSystemMetrics = function (rootSystem, useClickStream) {\r\n if (typeof navigator !== \"undefined\") {\r\n rootSystem.stringMetric(\"UserAgent\", navigator.userAgent);\r\n }\r\n if (useClickStream && typeof document !== \"undefined\") {\r\n var clickStream_1 = rootSystem.subSystem(\"ClickStream\");\r\n var documentClickHandler = function (e) {\r\n var _a;\r\n if (!e.target) {\r\n return;\r\n }\r\n var target = e.target;\r\n var className = target ? (_a = target.getAttribute(\"class\")) !== null && _a !== void 0 ? _a : \"\" : \"\";\r\n clickStream_1.objectMetric(\"LastBrowserEvent\", {\r\n type: \"click\",\r\n timestamp: new Date(),\r\n target: {\r\n className: className,\r\n id: target.id,\r\n type: \"<\" + target.tagName.toLowerCase() + \">\",\r\n href: target.href || \"\",\r\n },\r\n });\r\n };\r\n clickStream_1.objectMetric(\"Page\", {\r\n title: document.title,\r\n page: window.location.href,\r\n });\r\n if (document.addEventListener) {\r\n document.addEventListener(\"click\", documentClickHandler);\r\n }\r\n else {\r\n document.attachEvent(\"onclick\", documentClickHandler);\r\n }\r\n }\r\n rootSystem.stringMetric(\"StartTime\", (new Date()).toString());\r\n var urlMetric = rootSystem.stringMetric(\"StartURL\", \"\");\r\n var appNameMetric = rootSystem.stringMetric(\"AppName\", \"\");\r\n if (typeof window !== \"undefined\") {\r\n if (typeof window.location !== \"undefined\") {\r\n var startUrl = window.location.href;\r\n urlMetric.update(startUrl);\r\n }\r\n if (typeof window.glue42gd !== \"undefined\") {\r\n appNameMetric.update(window.glue42gd.appName);\r\n }\r\n }\r\n };\r\n return Repository;\r\n}());\n\nvar NullProtocol = (function () {\r\n function NullProtocol() {\r\n }\r\n NullProtocol.prototype.init = function (repo) {\r\n };\r\n NullProtocol.prototype.createSystem = function (system) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.updateSystem = function (metric, state) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.createMetric = function (metric) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.updateMetric = function (metric) {\r\n return Promise.resolve();\r\n };\r\n return NullProtocol;\r\n}());\n\nvar PerfTracker = (function () {\r\n function PerfTracker(api, initialPublishTimeout, publishInterval) {\r\n this.api = api;\r\n this.lastCount = 0;\r\n this.initialPublishTimeout = 10 * 1000;\r\n this.publishInterval = 60 * 1000;\r\n this.initialPublishTimeout = initialPublishTimeout !== null && initialPublishTimeout !== void 0 ? initialPublishTimeout : this.initialPublishTimeout;\r\n this.publishInterval = publishInterval !== null && publishInterval !== void 0 ? publishInterval : this.publishInterval;\r\n this.scheduleCollection();\r\n this.system = this.api.subSystem(\"performance\", \"Performance data published by the web application\");\r\n }\r\n PerfTracker.prototype.scheduleCollection = function () {\r\n var _this = this;\r\n setTimeout(function () {\r\n _this.collect();\r\n setInterval(function () {\r\n _this.collect();\r\n }, _this.publishInterval);\r\n }, this.initialPublishTimeout);\r\n };\r\n PerfTracker.prototype.collect = function () {\r\n try {\r\n this.collectMemory();\r\n this.collectEntries();\r\n }\r\n catch (_a) {\r\n }\r\n };\r\n PerfTracker.prototype.collectMemory = function () {\r\n var memory = window.performance.memory;\r\n this.system.stringMetric(\"memory\", JSON.stringify({\r\n totalJSHeapSize: memory.totalJSHeapSize,\r\n usedJSHeapSize: memory.usedJSHeapSize\r\n }));\r\n };\r\n PerfTracker.prototype.collectEntries = function () {\r\n var allEntries = window.performance.getEntries();\r\n if (allEntries.length <= this.lastCount) {\r\n return;\r\n }\r\n this.lastCount = allEntries.length;\r\n var jsonfiedEntries = allEntries.map(function (i) { return i.toJSON(); });\r\n this.system.stringMetric(\"entries\", JSON.stringify(jsonfiedEntries));\r\n };\r\n return PerfTracker;\r\n}());\n\nvar metrics = (function (options) {\r\n var protocol;\r\n if (!options.connection || typeof options.connection !== \"object\") {\r\n protocol = new NullProtocol();\r\n }\r\n else {\r\n protocol = gw3(options.connection, options);\r\n }\r\n var repo = new Repository(options, protocol);\r\n var rootSystem = repo.root;\r\n if (!options.disableAutoAppSystem) {\r\n rootSystem = rootSystem.subSystem(\"App\");\r\n }\r\n var api = addFAVSupport(rootSystem);\r\n initPerf(api, options.pagePerformanceMetrics);\r\n return api;\r\n});\r\nfunction initPerf(api, config) {\r\n var _a, _b;\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n var perfConfig = (_b = (_a = window === null || window === void 0 ? void 0 : window.glue42gd) === null || _a === void 0 ? void 0 : _a.metrics) === null || _b === void 0 ? void 0 : _b.pagePerformanceMetrics;\r\n if (perfConfig) {\r\n config = perfConfig;\r\n }\r\n if (config === null || config === void 0 ? void 0 : config.enabled) {\r\n new PerfTracker(api, config.initialPublishTimeout, config.publishInterval);\r\n }\r\n}\r\nfunction addFAVSupport(system) {\r\n var reportingSystem = system.subSystem(\"reporting\");\r\n var def = {\r\n name: \"features\"\r\n };\r\n var featureMetric;\r\n var featureMetricFunc = function (name, action, payload) {\r\n if (typeof name === \"undefined\" || name === \"\") {\r\n throw new Error(\"name is mandatory\");\r\n }\r\n else if (typeof action === \"undefined\" || action === \"\") {\r\n throw new Error(\"action is mandatory\");\r\n }\r\n else if (typeof payload === \"undefined\" || payload === \"\") {\r\n throw new Error(\"payload is mandatory\");\r\n }\r\n if (!featureMetric) {\r\n featureMetric = reportingSystem.objectMetric(def, { name: name, action: action, payload: payload });\r\n }\r\n else {\r\n featureMetric.update({\r\n name: name,\r\n action: action,\r\n payload: payload\r\n });\r\n }\r\n };\r\n system.featureMetric = featureMetricFunc;\r\n return system;\r\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\ncreateRegistry.default = createRegistry;\nvar lib$1 = createRegistry;\n\nvar InProcTransport = (function () {\r\n function InProcTransport(settings, logger) {\r\n var _this = this;\r\n this.registry = lib$1();\r\n this.gw = settings.facade;\r\n this.gw.connect(function (_client, message) {\r\n _this.messageHandler(message);\r\n }).then(function (client) {\r\n _this.client = client;\r\n });\r\n }\r\n Object.defineProperty(InProcTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n InProcTransport.prototype.sendObject = function (msg) {\r\n if (this.client) {\r\n this.client.send(msg);\r\n return Promise.resolve(undefined);\r\n }\r\n else {\r\n return Promise.reject(\"not connected\");\r\n }\r\n };\r\n InProcTransport.prototype.send = function (_msg) {\r\n return Promise.reject(\"not supported\");\r\n };\r\n InProcTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n InProcTransport.prototype.onConnectedChanged = function (callback) {\r\n callback(true);\r\n return function () { };\r\n };\r\n InProcTransport.prototype.close = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.open = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.name = function () {\r\n return \"in-memory\";\r\n };\r\n InProcTransport.prototype.reconnect = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.messageHandler = function (msg) {\r\n this.registry.execute(\"onMessage\", msg);\r\n };\r\n return InProcTransport;\r\n}());\n\nvar SharedWorkerTransport = (function () {\r\n function SharedWorkerTransport(workerFile, logger) {\r\n var _this = this;\r\n this.logger = logger;\r\n this.registry = lib$1();\r\n this.worker = new SharedWorker(workerFile);\r\n this.worker.port.onmessage = function (e) {\r\n _this.messageHandler(e.data);\r\n };\r\n }\r\n Object.defineProperty(SharedWorkerTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n SharedWorkerTransport.prototype.sendObject = function (msg) {\r\n this.worker.port.postMessage(msg);\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.send = function (_msg) {\r\n return Promise.reject(\"not supported\");\r\n };\r\n SharedWorkerTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n SharedWorkerTransport.prototype.onConnectedChanged = function (callback) {\r\n callback(true);\r\n return function () { };\r\n };\r\n SharedWorkerTransport.prototype.close = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.open = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.name = function () {\r\n return \"shared-worker\";\r\n };\r\n SharedWorkerTransport.prototype.reconnect = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.messageHandler = function (msg) {\r\n this.registry.execute(\"onMessage\", msg);\r\n };\r\n return SharedWorkerTransport;\r\n}());\n\nvar Utils = (function () {\r\n function Utils() {\r\n }\r\n Utils.isNode = function () {\r\n if (typeof Utils._isNode !== \"undefined\") {\r\n return Utils._isNode;\r\n }\r\n if (typeof window !== \"undefined\") {\r\n Utils._isNode = false;\r\n return false;\r\n }\r\n try {\r\n Utils._isNode = Object.prototype.toString.call(global.process) === \"[object process]\";\r\n }\r\n catch (e) {\r\n Utils._isNode = false;\r\n }\r\n return Utils._isNode;\r\n };\r\n return Utils;\r\n}());\n\nvar PromiseWrapper = (function () {\r\n function PromiseWrapper() {\r\n var _this = this;\r\n this.rejected = false;\r\n this.resolved = false;\r\n this.promise = new Promise(function (resolve, reject) {\r\n _this.resolve = function (t) {\r\n _this.resolved = true;\r\n resolve(t);\r\n };\r\n _this.reject = function (err) {\r\n _this.rejected = true;\r\n reject(err);\r\n };\r\n });\r\n }\r\n PromiseWrapper.delay = function (time) {\r\n return new Promise(function (resolve) { return setTimeout(resolve, time); });\r\n };\r\n Object.defineProperty(PromiseWrapper.prototype, \"ended\", {\r\n get: function () {\r\n return this.rejected || this.resolved;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return PromiseWrapper;\r\n}());\n\nvar timers = {};\r\nfunction getAllTimers() {\r\n return timers;\r\n}\r\nfunction timer (timerName) {\r\n var existing = timers[timerName];\r\n if (existing) {\r\n return existing;\r\n }\r\n var marks = [];\r\n function now() {\r\n return new Date().getTime();\r\n }\r\n var startTime = now();\r\n mark(\"start\", startTime);\r\n var endTime;\r\n var period;\r\n function stop() {\r\n endTime = now();\r\n mark(\"end\", endTime);\r\n period = endTime - startTime;\r\n return period;\r\n }\r\n function mark(name, time) {\r\n var currentTime = time !== null && time !== void 0 ? time : now();\r\n var diff = 0;\r\n if (marks.length > 0) {\r\n diff = currentTime - marks[marks.length - 1].time;\r\n }\r\n marks.push({ name: name, time: currentTime, diff: diff });\r\n }\r\n var timerObj = {\r\n get startTime() {\r\n return startTime;\r\n },\r\n get endTime() {\r\n return endTime;\r\n },\r\n get period() {\r\n return period;\r\n },\r\n stop: stop,\r\n mark: mark,\r\n marks: marks\r\n };\r\n timers[timerName] = timerObj;\r\n return timerObj;\r\n}\n\nvar WebSocketConstructor = Utils.isNode() ? require(\"ws\") : window.WebSocket;\r\nvar WS = (function () {\r\n function WS(settings, logger) {\r\n this.startupTimer = timer(\"connection\");\r\n this._running = true;\r\n this._registry = lib$1();\r\n this.wsRequests = [];\r\n this.settings = settings;\r\n this.logger = logger;\r\n if (!this.settings.ws) {\r\n throw new Error(\"ws is missing\");\r\n }\r\n }\r\n WS.prototype.onMessage = function (callback) {\r\n return this._registry.add(\"onMessage\", callback);\r\n };\r\n WS.prototype.send = function (msg, options) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.waitForSocketConnection(function () {\r\n var _a;\r\n try {\r\n (_a = _this.ws) === null || _a === void 0 ? void 0 : _a.send(msg);\r\n resolve();\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n }, reject);\r\n });\r\n };\r\n WS.prototype.open = function () {\r\n var _this = this;\r\n this.logger.info(\"opening ws...\");\r\n this._running = true;\r\n return new Promise(function (resolve, reject) {\r\n _this.waitForSocketConnection(resolve, reject);\r\n });\r\n };\r\n WS.prototype.close = function () {\r\n this._running = false;\r\n if (this.ws) {\r\n this.ws.close();\r\n }\r\n return Promise.resolve();\r\n };\r\n WS.prototype.onConnectedChanged = function (callback) {\r\n return this._registry.add(\"onConnectedChanged\", callback);\r\n };\r\n WS.prototype.name = function () {\r\n return this.settings.ws;\r\n };\r\n WS.prototype.reconnect = function () {\r\n var _a;\r\n (_a = this.ws) === null || _a === void 0 ? void 0 : _a.close();\r\n var pw = new PromiseWrapper();\r\n this.waitForSocketConnection(function () {\r\n pw.resolve();\r\n });\r\n return pw.promise;\r\n };\r\n WS.prototype.waitForSocketConnection = function (callback, failed) {\r\n var _a;\r\n failed = failed !== null && failed !== void 0 ? failed : (function () { });\r\n if (!this._running) {\r\n failed(\"wait for socket on \".concat(this.settings.ws, \" failed - socket closed by user\"));\r\n return;\r\n }\r\n if (((_a = this.ws) === null || _a === void 0 ? void 0 : _a.readyState) === 1) {\r\n callback();\r\n return;\r\n }\r\n this.wsRequests.push({ callback: callback, failed: failed });\r\n if (this.wsRequests.length > 1) {\r\n return;\r\n }\r\n this.openSocket();\r\n };\r\n WS.prototype.openSocket = function (retryInterval, retriesLeft) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.startupTimer.mark(\"opening-socket\");\r\n if (retryInterval === undefined) {\r\n retryInterval = this.settings.reconnectInterval;\r\n }\r\n if (typeof retriesLeft === \"undefined\") {\r\n retriesLeft = this.settings.reconnectAttempts;\r\n }\r\n if (retriesLeft !== undefined) {\r\n if (retriesLeft === 0) {\r\n this.notifyForSocketState(\"wait for socket on \".concat(this.settings.ws, \" failed - no more retries left\"));\r\n return [2];\r\n }\r\n this.logger.debug(\"will retry \".concat(retriesLeft, \" more times (every \").concat(retryInterval, \" ms)\"));\r\n }\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4, this.initiateSocket()];\r\n case 2:\r\n _b.sent();\r\n this.startupTimer.mark(\"socket-initiated\");\r\n this.notifyForSocketState();\r\n return [3, 4];\r\n case 3:\r\n _b.sent();\r\n setTimeout(function () {\r\n var retries = retriesLeft === undefined ? undefined : retriesLeft - 1;\r\n _this.openSocket(retryInterval, retries);\r\n }, retryInterval);\r\n return [3, 4];\r\n case 4: return [2];\r\n }\r\n });\r\n });\r\n };\r\n WS.prototype.initiateSocket = function () {\r\n var _this = this;\r\n var pw = new PromiseWrapper();\r\n this.logger.debug(\"initiating ws to \".concat(this.settings.ws, \"...\"));\r\n this.ws = new WebSocketConstructor(this.settings.ws || \"\");\r\n this.ws.onerror = function (err) {\r\n var reason = \"\";\r\n try {\r\n reason = JSON.stringify(err);\r\n }\r\n catch (error) {\r\n var seen_1 = new WeakSet();\r\n var replacer = function (key, value) {\r\n if (typeof value === \"object\" && value !== null) {\r\n if (seen_1.has(value)) {\r\n return;\r\n }\r\n seen_1.add(value);\r\n }\r\n return value;\r\n };\r\n reason = JSON.stringify(err, replacer);\r\n }\r\n pw.reject(\"error\");\r\n _this.notifyStatusChanged(false, reason);\r\n };\r\n this.ws.onclose = function (err) {\r\n _this.logger.info(\"ws closed \".concat(err));\r\n pw.reject(\"closed\");\r\n _this.notifyStatusChanged(false);\r\n };\r\n this.ws.onopen = function () {\r\n var _a;\r\n _this.startupTimer.mark(\"ws-opened\");\r\n _this.logger.info(\"ws opened \".concat((_a = _this.settings.identity) === null || _a === void 0 ? void 0 : _a.application));\r\n pw.resolve();\r\n _this.notifyStatusChanged(true);\r\n };\r\n this.ws.onmessage = function (message) {\r\n _this._registry.execute(\"onMessage\", message.data);\r\n };\r\n return pw.promise;\r\n };\r\n WS.prototype.notifyForSocketState = function (error) {\r\n this.wsRequests.forEach(function (wsRequest) {\r\n if (error) {\r\n if (wsRequest.failed) {\r\n wsRequest.failed(error);\r\n }\r\n }\r\n else {\r\n wsRequest.callback();\r\n }\r\n });\r\n this.wsRequests = [];\r\n };\r\n WS.prototype.notifyStatusChanged = function (status, reason) {\r\n this._registry.execute(\"onConnectedChanged\", status, reason);\r\n };\r\n return WS;\r\n}());\n\nvar shortidExports = {};\nvar shortid$1 = {\n get exports(){ return shortidExports; },\n set exports(v){ shortidExports = v; },\n};\n\nvar libExports = {};\nvar lib = {\n get exports(){ return libExports; },\n set exports(v){ libExports = v; },\n};\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n seed = (seed * 9301 + 49297) % 233280;\n return seed/(233280.0);\n}\n\nfunction setSeed$1(_seed_) {\n seed = _seed_;\n}\n\nvar randomFromSeed$1 = {\n nextValue: getNextValue,\n seed: setSeed$1\n};\n\nvar randomFromSeed = randomFromSeed$1;\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet$2;\nvar previousSeed;\n\nvar shuffled;\n\nfunction reset() {\n shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet$2 !== ORIGINAL) {\n alphabet$2 = ORIGINAL;\n reset();\n }\n return;\n }\n\n if (_alphabet_ === alphabet$2) {\n return;\n }\n\n if (_alphabet_.length !== ORIGINAL.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n\n var unique = _alphabet_.split('').filter(function(item, ind, arr){\n return ind !== arr.lastIndexOf(item);\n });\n\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n\n alphabet$2 = _alphabet_;\n reset();\n}\n\nfunction characters(_alphabet_) {\n setCharacters(_alphabet_);\n return alphabet$2;\n}\n\nfunction setSeed(seed) {\n randomFromSeed.seed(seed);\n if (previousSeed !== seed) {\n reset();\n previousSeed = seed;\n }\n}\n\nfunction shuffle() {\n if (!alphabet$2) {\n setCharacters(ORIGINAL);\n }\n\n var sourceArray = alphabet$2.split('');\n var targetArray = [];\n var r = randomFromSeed.nextValue();\n var characterIndex;\n\n while (sourceArray.length > 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\n\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n shuffled = shuffle();\n return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\n\nfunction get () {\n return alphabet$2 || ORIGINAL;\n}\n\nvar alphabet_1 = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function(size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte = function(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\n\nvar randomByteBrowser = randomByte;\n\n// This file replaces `format.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nvar format_browser = function (random, alphabet, size) {\n // We can’t use bytes bigger than the alphabet. To make bytes values closer\n // to the alphabet, we apply bitmask on them. We look for the closest\n // `2 ** x - 1` number, which will be bigger than alphabet size. If we have\n // 30 symbols in the alphabet, we will take 31 (00011111).\n // We do not use faster Math.clz32, because it is not available in browsers.\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1;\n // Bitmask is not a perfect solution (in our example it will pass 31 bytes,\n // which is bigger than the alphabet). As a result, we will need more bytes,\n // than ID size, because we will refuse bytes bigger than the alphabet.\n\n // Every hardware random generator call is costly,\n // because we need to wait for entropy collection. This is why often it will\n // be faster to ask for few extra bytes in advance, to avoid additional calls.\n\n // Here we calculate how many random bytes should we call in advance.\n // It depends on ID length, mask / alphabet size and magic number 1.6\n // (which was selected according benchmarks).\n\n // -~f => Math.ceil(f) if n is float number\n // -~i => i + 1 if n is integer number\n var step = -~(1.6 * mask * size / alphabet.length);\n var id = '';\n\n while (true) {\n var bytes = random(step);\n // Compact alternative for `for (var i = 0; i < step; i++)`\n var i = step;\n while (i--) {\n // If random byte is bigger than alphabet even after bitmask,\n // we refuse it by `|| ''`.\n id += alphabet[bytes[i] & mask] || '';\n // More compact than `id.length + 1 === size`\n if (id.length === +size) return id\n }\n }\n};\n\nvar alphabet$1 = alphabet_1;\nvar random = randomByteBrowser;\nvar format = format_browser;\n\nfunction generate$1(number) {\n var loopCounter = 0;\n var done;\n\n var str = '';\n\n while (!done) {\n str = str + format(random, alphabet$1.get(), 1);\n done = number < (Math.pow(16, loopCounter + 1 ) );\n loopCounter++;\n }\n return str;\n}\n\nvar generate_1 = generate$1;\n\nvar generate = generate_1;\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version$1 = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version$1);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\n\nvar build_1 = build;\n\nvar alphabet = alphabet_1;\n\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6 ) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' +\n alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n ']');\n return !nonAlphabetic.test(id);\n}\n\nvar isValid = isShortId;\n\n(function (module) {\n\n\tvar alphabet = alphabet_1;\n\tvar build = build_1;\n\tvar isValid$1 = isValid;\n\n\t// if you are using cluster or multiple servers use this to make each instance\n\t// has a unique value for worker\n\t// Note: I don't know if this is automatically set when using third\n\t// party cluster solutions such as pm2.\n\tvar clusterWorkerId = 0;\n\n\t/**\n\t * Set the seed.\n\t * Highly recommended if you don't want people to try to figure out your id schema.\n\t * exposed as shortid.seed(int)\n\t * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n\t */\n\tfunction seed(seedValue) {\n\t alphabet.seed(seedValue);\n\t return module.exports;\n\t}\n\n\t/**\n\t * Set the cluster worker or machine id\n\t * exposed as shortid.worker(int)\n\t * @param workerId worker must be positive integer. Number less than 16 is recommended.\n\t * returns shortid module so it can be chained.\n\t */\n\tfunction worker(workerId) {\n\t clusterWorkerId = workerId;\n\t return module.exports;\n\t}\n\n\t/**\n\t *\n\t * sets new characters to use in the alphabet\n\t * returns the shuffled alphabet\n\t */\n\tfunction characters(newCharacters) {\n\t if (newCharacters !== undefined) {\n\t alphabet.characters(newCharacters);\n\t }\n\n\t return alphabet.shuffled();\n\t}\n\n\t/**\n\t * Generate unique id\n\t * Returns string id\n\t */\n\tfunction generate() {\n\t return build(clusterWorkerId);\n\t}\n\n\t// Export all other functions as properties of the generate function\n\tmodule.exports = generate;\n\tmodule.exports.generate = generate;\n\tmodule.exports.seed = seed;\n\tmodule.exports.worker = worker;\n\tmodule.exports.characters = characters;\n\tmodule.exports.isValid = isValid$1;\n} (lib));\n\n(function (module) {\n\tmodule.exports = libExports;\n} (shortid$1));\n\nvar shortid = /*@__PURE__*/getDefaultExportFromCjs(shortidExports);\n\nfunction domainSession (domain, connection, logger, successMessages, errorMessages) {\r\n if (domain == null) {\r\n domain = \"global\";\r\n }\r\n successMessages = successMessages || [\"success\"];\r\n errorMessages = errorMessages || [\"error\"];\r\n var isJoined = false;\r\n var tryReconnecting = false;\r\n var _latestOptions;\r\n var _connectionOn = false;\r\n var callbacks = lib$1();\r\n connection.disconnected(handleConnectionDisconnected);\r\n connection.loggedIn(handleConnectionLoggedIn);\r\n connection.on(\"success\", function (msg) { return handleSuccessMessage(msg); });\r\n connection.on(\"error\", function (msg) { return handleErrorMessage(msg); });\r\n connection.on(\"result\", function (msg) { return handleSuccessMessage(msg); });\r\n if (successMessages) {\r\n successMessages.forEach(function (sm) {\r\n connection.on(sm, function (msg) { return handleSuccessMessage(msg); });\r\n });\r\n }\r\n if (errorMessages) {\r\n errorMessages.forEach(function (sm) {\r\n connection.on(sm, function (msg) { return handleErrorMessage(msg); });\r\n });\r\n }\r\n var requestsMap = {};\r\n function join(options) {\r\n _latestOptions = options;\r\n return new Promise(function (resolve, reject) {\r\n if (isJoined) {\r\n resolve({});\r\n return;\r\n }\r\n var joinPromise;\r\n if (domain === \"global\") {\r\n joinPromise = _connectionOn ? Promise.resolve({}) : Promise.reject(\"not connected to gateway\");\r\n }\r\n else {\r\n logger.debug(\"joining domain \".concat(domain));\r\n var joinMsg = {\r\n type: \"join\",\r\n destination: domain,\r\n domain: \"global\",\r\n options: options,\r\n };\r\n joinPromise = send(joinMsg);\r\n }\r\n joinPromise\r\n .then(function () {\r\n handleJoined();\r\n resolve({});\r\n })\r\n .catch(function (err) {\r\n logger.debug(\"error joining \" + domain + \" domain: \" + JSON.stringify(err));\r\n reject(err);\r\n });\r\n });\r\n }\r\n function leave() {\r\n if (domain === \"global\") {\r\n return Promise.resolve();\r\n }\r\n logger.debug(\"stopping session \" + domain + \"...\");\r\n var leaveMsg = {\r\n type: \"leave\",\r\n destination: domain,\r\n domain: \"global\",\r\n };\r\n tryReconnecting = false;\r\n return send(leaveMsg)\r\n .then(function () {\r\n isJoined = false;\r\n callbacks.execute(\"onLeft\");\r\n })\r\n .catch(function () {\r\n isJoined = false;\r\n callbacks.execute(\"onLeft\");\r\n });\r\n }\r\n function handleJoined() {\r\n logger.debug(\"did join \" + domain);\r\n isJoined = true;\r\n var wasReconnect = tryReconnecting;\r\n tryReconnecting = false;\r\n callbacks.execute(\"onJoined\", wasReconnect);\r\n }\r\n function handleConnectionDisconnected() {\r\n _connectionOn = false;\r\n logger.debug(\"connection is down\");\r\n isJoined = false;\r\n tryReconnecting = true;\r\n callbacks.execute(\"onLeft\", { disconnected: true });\r\n }\r\n function handleConnectionLoggedIn() {\r\n _connectionOn = true;\r\n if (tryReconnecting) {\r\n logger.debug(\"connection is now up - trying to reconnect...\");\r\n join(_latestOptions);\r\n }\r\n }\r\n function onJoined(callback) {\r\n if (isJoined) {\r\n callback(false);\r\n }\r\n return callbacks.add(\"onJoined\", callback);\r\n }\r\n function onLeft(callback) {\r\n if (!isJoined) {\r\n callback();\r\n }\r\n return callbacks.add(\"onLeft\", callback);\r\n }\r\n function handleErrorMessage(msg) {\r\n if (domain !== msg.domain) {\r\n return;\r\n }\r\n var requestId = msg.request_id;\r\n if (!requestId) {\r\n return;\r\n }\r\n var entry = requestsMap[requestId];\r\n if (!entry) {\r\n return;\r\n }\r\n entry.error(msg);\r\n }\r\n function handleSuccessMessage(msg) {\r\n if (msg.domain !== domain) {\r\n return;\r\n }\r\n var requestId = msg.request_id;\r\n if (!requestId) {\r\n return;\r\n }\r\n var entry = requestsMap[requestId];\r\n if (!entry) {\r\n return;\r\n }\r\n entry.success(msg);\r\n }\r\n function getNextRequestId() {\r\n return shortid();\r\n }\r\n function send(msg, tag, options) {\r\n options = options || {};\r\n msg.request_id = msg.request_id || getNextRequestId();\r\n msg.domain = msg.domain || domain;\r\n if (!options.skipPeerId) {\r\n msg.peer_id = connection.peerId;\r\n }\r\n var requestId = msg.request_id;\r\n return new Promise(function (resolve, reject) {\r\n requestsMap[requestId] = {\r\n success: function (successMsg) {\r\n delete requestsMap[requestId];\r\n successMsg._tag = tag;\r\n resolve(successMsg);\r\n },\r\n error: function (errorMsg) {\r\n logger.warn(\"GW error - \".concat(JSON.stringify(errorMsg), \" for request \").concat(JSON.stringify(msg)));\r\n delete requestsMap[requestId];\r\n errorMsg._tag = tag;\r\n reject(errorMsg);\r\n },\r\n };\r\n connection\r\n .send(msg, options)\r\n .catch(function (err) {\r\n requestsMap[requestId].error({ err: err });\r\n });\r\n });\r\n }\r\n function sendFireAndForget(msg) {\r\n msg.request_id = msg.request_id ? msg.request_id : getNextRequestId();\r\n msg.domain = msg.domain || domain;\r\n msg.peer_id = connection.peerId;\r\n return connection.send(msg);\r\n }\r\n return {\r\n join: join,\r\n leave: leave,\r\n onJoined: onJoined,\r\n onLeft: onLeft,\r\n send: send,\r\n sendFireAndForget: sendFireAndForget,\r\n on: function (type, callback) {\r\n connection.on(type, function (msg) {\r\n if (msg.domain !== domain) {\r\n return;\r\n }\r\n try {\r\n callback(msg);\r\n }\r\n catch (e) {\r\n logger.error(\"Callback failed: \".concat(e, \" \\n \").concat(e.stack, \" \\n msg was: \").concat(JSON.stringify(msg)), e);\r\n }\r\n });\r\n },\r\n loggedIn: function (callback) { return connection.loggedIn(callback); },\r\n connected: function (callback) { return connection.connected(callback); },\r\n disconnected: function (callback) { return connection.disconnected(callback); },\r\n get peerId() {\r\n return connection.peerId;\r\n },\r\n get domain() {\r\n return domain;\r\n },\r\n };\r\n}\n\nvar GW3ProtocolImpl = (function () {\r\n function GW3ProtocolImpl(connection, settings, logger) {\r\n var _this = this;\r\n this.connection = connection;\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.protocolVersion = 3;\r\n this.datePrefix = \"#T42_DATE#\";\r\n this.datePrefixLen = this.datePrefix.length;\r\n this.dateMinLen = this.datePrefixLen + 1;\r\n this.datePrefixFirstChar = this.datePrefix[0];\r\n this.registry = lib$1();\r\n this._isLoggedIn = false;\r\n this.shouldTryLogin = true;\r\n this.initialLogin = true;\r\n this.initialLoginAttempts = 3;\r\n this.sessions = [];\r\n connection.disconnected(function () {\r\n _this.handleDisconnected();\r\n });\r\n this.ping();\r\n }\r\n Object.defineProperty(GW3ProtocolImpl.prototype, \"isLoggedIn\", {\r\n get: function () {\r\n return this._isLoggedIn;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n GW3ProtocolImpl.prototype.processStringMessage = function (message) {\r\n var _this = this;\r\n var msg = JSON.parse(message, function (key, value) {\r\n if (typeof value !== \"string\") {\r\n return value;\r\n }\r\n if (value.length < _this.dateMinLen) {\r\n return value;\r\n }\r\n if (value[0] !== _this.datePrefixFirstChar) {\r\n return value;\r\n }\r\n if (value.substring(0, _this.datePrefixLen) !== _this.datePrefix) {\r\n return value;\r\n }\r\n try {\r\n var milliseconds = parseInt(value.substring(_this.datePrefixLen, value.length), 10);\r\n if (isNaN(milliseconds)) {\r\n return value;\r\n }\r\n return new Date(milliseconds);\r\n }\r\n catch (ex) {\r\n return value;\r\n }\r\n });\r\n return {\r\n msg: msg,\r\n msgType: msg.type,\r\n };\r\n };\r\n GW3ProtocolImpl.prototype.createStringMessage = function (message) {\r\n var oldToJson = Date.prototype.toJSON;\r\n try {\r\n var datePrefix_1 = this.datePrefix;\r\n Date.prototype.toJSON = function () {\r\n return datePrefix_1 + this.getTime();\r\n };\r\n var result = JSON.stringify(message);\r\n return result;\r\n }\r\n finally {\r\n Date.prototype.toJSON = oldToJson;\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.processObjectMessage = function (message) {\r\n if (!message.type) {\r\n throw new Error(\"Object should have type property\");\r\n }\r\n return {\r\n msg: message,\r\n msgType: message.type,\r\n };\r\n };\r\n GW3ProtocolImpl.prototype.createObjectMessage = function (message) {\r\n return message;\r\n };\r\n GW3ProtocolImpl.prototype.login = function (config, reconnect) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authentication, token, e_1, _a, helloMsg, sendOptions, welcomeMsg, msg, token, _b, err_1;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n this.logger.debug(\"logging in...\");\r\n this.loginConfig = config;\r\n if (!this.loginConfig) {\r\n this.loginConfig = { username: \"\", password: \"\" };\r\n }\r\n this.shouldTryLogin = true;\r\n authentication = {};\r\n this.connection.gatewayToken = config.gatewayToken;\r\n if (!config.gatewayToken) return [3, 5];\r\n if (!reconnect) return [3, 4];\r\n _c.label = 1;\r\n case 1:\r\n _c.trys.push([1, 3, , 4]);\r\n return [4, this.getNewGWToken()];\r\n case 2:\r\n token = _c.sent();\r\n config.gatewayToken = token;\r\n return [3, 4];\r\n case 3:\r\n e_1 = _c.sent();\r\n this.logger.warn(\"failed to get GW token when reconnecting \".concat((e_1 === null || e_1 === void 0 ? void 0 : e_1.message) || e_1));\r\n return [3, 4];\r\n case 4:\r\n authentication.method = \"gateway-token\";\r\n authentication.token = config.gatewayToken;\r\n this.connection.gatewayToken = config.gatewayToken;\r\n return [3, 10];\r\n case 5:\r\n if (!(config.flowName === \"sspi\")) return [3, 9];\r\n authentication.provider = \"win\";\r\n authentication.method = \"access-token\";\r\n if (!(config.flowCallback && config.sessionId)) return [3, 7];\r\n _a = authentication;\r\n return [4, config.flowCallback(config.sessionId, null)];\r\n case 6:\r\n _a.token =\r\n (_c.sent())\r\n .data\r\n .toString(\"base64\");\r\n return [3, 8];\r\n case 7: throw new Error(\"Invalid SSPI config\");\r\n case 8: return [3, 10];\r\n case 9:\r\n if (config.token) {\r\n authentication.method = \"access-token\";\r\n authentication.token = config.token;\r\n }\r\n else if (config.username) {\r\n authentication.method = \"secret\";\r\n authentication.login = config.username;\r\n authentication.secret = config.password;\r\n }\r\n else if (config.provider) {\r\n authentication.provider = config.provider;\r\n authentication.providerContext = config.providerContext;\r\n }\r\n else {\r\n throw new Error(\"invalid auth message\" + JSON.stringify(config));\r\n }\r\n _c.label = 10;\r\n case 10:\r\n helloMsg = {\r\n type: \"hello\",\r\n identity: this.settings.identity,\r\n authentication: authentication\r\n };\r\n if (config.sessionId) {\r\n helloMsg.request_id = config.sessionId;\r\n }\r\n this.globalDomain = domainSession(\"global\", this.connection, this.logger.subLogger(\"global-domain\"), [\r\n \"welcome\",\r\n \"token\",\r\n \"authentication-request\"\r\n ]);\r\n sendOptions = { skipPeerId: true };\r\n if (this.initialLogin) {\r\n sendOptions.retryInterval = this.settings.reconnectInterval;\r\n sendOptions.maxRetries = this.settings.reconnectAttempts;\r\n }\r\n _c.label = 11;\r\n case 11:\r\n _c.trys.push([11, 19, 20, 21]);\r\n welcomeMsg = void 0;\r\n _c.label = 12;\r\n case 12:\r\n return [4, this.globalDomain.send(helloMsg, undefined, sendOptions)];\r\n case 13:\r\n msg = _c.sent();\r\n if (!(msg.type === \"authentication-request\")) return [3, 16];\r\n token = Buffer.from(msg.authentication.token, \"base64\");\r\n if (!(config.flowCallback && config.sessionId)) return [3, 15];\r\n _b = helloMsg.authentication;\r\n return [4, config.flowCallback(config.sessionId, token)];\r\n case 14:\r\n _b.token =\r\n (_c.sent())\r\n .data\r\n .toString(\"base64\");\r\n _c.label = 15;\r\n case 15:\r\n helloMsg.request_id = config.sessionId;\r\n return [3, 12];\r\n case 16:\r\n if (msg.type === \"welcome\") {\r\n welcomeMsg = msg;\r\n return [3, 18];\r\n }\r\n else if (msg.type === \"error\") {\r\n throw new Error(\"Authentication failed: \" + msg.reason);\r\n }\r\n else {\r\n throw new Error(\"Unexpected message type during authentication: \" + msg.type);\r\n }\r\n case 17: return [3, 12];\r\n case 18:\r\n this.initialLogin = false;\r\n this.logger.debug(\"login successful with peerId \" + welcomeMsg.peer_id);\r\n this.connection.peerId = welcomeMsg.peer_id;\r\n this.connection.resolvedIdentity = welcomeMsg.resolved_identity;\r\n this.connection.availableDomains = welcomeMsg.available_domains;\r\n if (welcomeMsg.options) {\r\n this.connection.token = welcomeMsg.options.access_token;\r\n this.connection.info = welcomeMsg.options.info;\r\n }\r\n this.setLoggedIn(true);\r\n return [2, welcomeMsg.resolved_identity];\r\n case 19:\r\n err_1 = _c.sent();\r\n this.logger.error(\"error sending hello message - \" + (err_1.message || err_1.msg || err_1.reason || err_1), err_1);\r\n throw err_1;\r\n case 20:\r\n if (config && config.flowCallback && config.sessionId) {\r\n config.flowCallback(config.sessionId, null);\r\n }\r\n return [7];\r\n case 21: return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.logout = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var promises;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.debug(\"logging out...\");\r\n this.shouldTryLogin = false;\r\n if (this.pingTimer) {\r\n clearTimeout(this.pingTimer);\r\n }\r\n promises = this.sessions.map(function (session) {\r\n session.leave();\r\n });\r\n return [4, Promise.all(promises)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.loggedIn = function (callback) {\r\n if (this._isLoggedIn) {\r\n callback();\r\n }\r\n return this.registry.add(\"onLoggedIn\", callback);\r\n };\r\n GW3ProtocolImpl.prototype.domain = function (domainName, domainLogger, successMessages, errorMessages) {\r\n var session = this.sessions.filter(function (s) { return s.domain === domainName; })[0];\r\n if (!session) {\r\n session = domainSession(domainName, this.connection, domainLogger, successMessages, errorMessages);\r\n this.sessions.push(session);\r\n }\r\n return session;\r\n };\r\n GW3ProtocolImpl.prototype.handleDisconnected = function () {\r\n var _this = this;\r\n this.setLoggedIn(false);\r\n var tryToLogin = this.shouldTryLogin;\r\n if (tryToLogin && this.initialLogin) {\r\n if (this.initialLoginAttempts <= 0) {\r\n return;\r\n }\r\n this.initialLoginAttempts--;\r\n }\r\n this.logger.debug(\"disconnected - will try new login?\" + this.shouldTryLogin);\r\n if (this.shouldTryLogin) {\r\n if (!this.loginConfig) {\r\n throw new Error(\"no login info\");\r\n }\r\n this.connection.login(this.loginConfig, true)\r\n .catch(function () {\r\n setTimeout(_this.handleDisconnected.bind(_this), _this.settings.reconnectInterval || 1000);\r\n });\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.setLoggedIn = function (value) {\r\n this._isLoggedIn = value;\r\n if (this._isLoggedIn) {\r\n this.registry.execute(\"onLoggedIn\");\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.ping = function () {\r\n var _this = this;\r\n if (!this.shouldTryLogin) {\r\n return;\r\n }\r\n if (this._isLoggedIn) {\r\n this.connection.send({ type: \"ping\" });\r\n }\r\n this.pingTimer = setTimeout(function () {\r\n _this.ping();\r\n }, 30 * 1000);\r\n };\r\n GW3ProtocolImpl.prototype.authToken = function () {\r\n var createTokenReq = {\r\n type: \"create-token\"\r\n };\r\n if (!this.globalDomain) {\r\n return Promise.reject(new Error(\"no global domain session\"));\r\n }\r\n return this.globalDomain.send(createTokenReq)\r\n .then(function (res) {\r\n return res.token;\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.getNewGWToken = function () {\r\n if (typeof window !== \"undefined\") {\r\n var glue42gd = window.glue42gd;\r\n if (glue42gd) {\r\n return glue42gd.getGWToken();\r\n }\r\n }\r\n return Promise.reject(new Error(\"not running in GD\"));\r\n };\r\n return GW3ProtocolImpl;\r\n}());\n\nvar MessageReplayerImpl = (function () {\r\n function MessageReplayerImpl(specs) {\r\n this.specsNames = [];\r\n this.messages = {};\r\n this.subs = {};\r\n this.subsRefCount = {};\r\n this.specs = {};\r\n for (var _i = 0, specs_1 = specs; _i < specs_1.length; _i++) {\r\n var spec = specs_1[_i];\r\n this.specs[spec.name] = spec;\r\n this.specsNames.push(spec.name);\r\n }\r\n }\r\n MessageReplayerImpl.prototype.init = function (connection) {\r\n var _this = this;\r\n this.connection = connection;\r\n for (var _i = 0, _a = this.specsNames; _i < _a.length; _i++) {\r\n var name_1 = _a[_i];\r\n var _loop_1 = function (type) {\r\n var refCount = this_1.subsRefCount[type];\r\n if (!refCount) {\r\n refCount = 0;\r\n }\r\n refCount += 1;\r\n this_1.subsRefCount[type] = refCount;\r\n if (refCount > 1) {\r\n return \"continue\";\r\n }\r\n var sub = connection.on(type, function (msg) { return _this.processMessage(type, msg); });\r\n this_1.subs[type] = sub;\r\n };\r\n var this_1 = this;\r\n for (var _b = 0, _c = this.specs[name_1].types; _b < _c.length; _b++) {\r\n var type = _c[_b];\r\n _loop_1(type);\r\n }\r\n }\r\n };\r\n MessageReplayerImpl.prototype.processMessage = function (type, msg) {\r\n if (this.isDone || !msg) {\r\n return;\r\n }\r\n for (var _i = 0, _a = this.specsNames; _i < _a.length; _i++) {\r\n var name_2 = _a[_i];\r\n if (this.specs[name_2].types.indexOf(type) !== -1) {\r\n var messages = this.messages[name_2] || [];\r\n this.messages[name_2] = messages;\r\n messages.push(msg);\r\n }\r\n }\r\n };\r\n MessageReplayerImpl.prototype.drain = function (name, callback) {\r\n var _a;\r\n if (callback) {\r\n (this.messages[name] || []).forEach(callback);\r\n }\r\n delete this.messages[name];\r\n for (var _i = 0, _b = this.specs[name].types; _i < _b.length; _i++) {\r\n var type = _b[_i];\r\n this.subsRefCount[type] -= 1;\r\n if (this.subsRefCount[type] <= 0) {\r\n (_a = this.connection) === null || _a === void 0 ? void 0 : _a.off(this.subs[type]);\r\n delete this.subs[type];\r\n delete this.subsRefCount[type];\r\n }\r\n }\r\n delete this.specs[name];\r\n if (!this.specs.length) {\r\n this.isDone = true;\r\n }\r\n };\r\n return MessageReplayerImpl;\r\n}());\n\nvar PromisePlus = function (executor, timeoutMilliseconds, timeoutMessage) {\r\n return new Promise(function (resolve, reject) {\r\n var timeout = setTimeout(function () {\r\n var message = timeoutMessage || \"Promise timeout hit: \".concat(timeoutMilliseconds);\r\n reject(message);\r\n }, timeoutMilliseconds);\r\n var providedPromise = new Promise(executor);\r\n providedPromise\r\n .then(function (result) {\r\n clearTimeout(timeout);\r\n resolve(result);\r\n })\r\n .catch(function (error) {\r\n clearTimeout(timeout);\r\n reject(error);\r\n });\r\n });\r\n};\n\nvar WebPlatformTransport = (function () {\r\n function WebPlatformTransport(settings, logger, identity) {\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.identity = identity;\r\n this.iAmConnected = false;\r\n this.parentReady = false;\r\n this.rejected = false;\r\n this.children = [];\r\n this.extContentAvailable = false;\r\n this.extContentConnecting = false;\r\n this.extContentConnected = false;\r\n this.parentInExtMode = false;\r\n this.webNamespace = \"g42_core_web\";\r\n this.parentPingTimeout = 5000;\r\n this.connectionRequestTimeout = 7000;\r\n this.defaultTargetString = \"*\";\r\n this.registry = lib$1();\r\n this.messages = {\r\n connectionAccepted: { name: \"connectionAccepted\", handle: this.handleConnectionAccepted.bind(this) },\r\n connectionRejected: { name: \"connectionRejected\", handle: this.handleConnectionRejected.bind(this) },\r\n connectionRequest: { name: \"connectionRequest\", handle: this.handleConnectionRequest.bind(this) },\r\n parentReady: {\r\n name: \"parentReady\", handle: function () {\r\n }\r\n },\r\n parentPing: { name: \"parentPing\", handle: this.handleParentPing.bind(this) },\r\n platformPing: { name: \"platformPing\", handle: this.handlePlatformPing.bind(this) },\r\n platformReady: { name: \"platformReady\", handle: this.handlePlatformReady.bind(this) },\r\n clientUnload: { name: \"clientUnload\", handle: this.handleClientUnload.bind(this) },\r\n manualUnload: { name: \"manualUnload\", handle: this.handleManualUnload.bind(this) },\r\n extConnectionResponse: { name: \"extConnectionResponse\", handle: this.handleExtConnectionResponse.bind(this) },\r\n extSetupRequest: { name: \"extSetupRequest\", handle: this.handleExtSetupRequest.bind(this) },\r\n gatewayDisconnect: { name: \"gatewayDisconnect\", handle: this.handleGatewayDisconnect.bind(this) },\r\n gatewayInternalConnect: { name: \"gatewayInternalConnect\", handle: this.handleGatewayInternalConnect.bind(this) }\r\n };\r\n this.extContentAvailable = !!window.glue42ext;\r\n this.setUpMessageListener();\r\n this.setUpUnload();\r\n this.setupPlatformUnloadListener();\r\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : undefined;\r\n }\r\n WebPlatformTransport.prototype.manualSetReadyState = function () {\r\n this.iAmConnected = true;\r\n this.parentReady = true;\r\n };\r\n Object.defineProperty(WebPlatformTransport.prototype, \"transportWindowId\", {\r\n get: function () {\r\n return this.publicWindowId;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebPlatformTransport.prototype, \"communicationId\", {\r\n get: function () {\r\n return this._communicationId;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WebPlatformTransport.prototype.sendObject = function (msg) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (this.extContentConnected) {\r\n return [2, window.postMessage({ glue42ExtOut: msg }, this.defaultTargetString)];\r\n }\r\n if (!this.port) {\r\n throw new Error(\"Cannot send message, because the port was not opened yet\");\r\n }\r\n this.port.postMessage(msg);\r\n return [2];\r\n });\r\n });\r\n };\r\n Object.defineProperty(WebPlatformTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WebPlatformTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n WebPlatformTransport.prototype.send = function () {\r\n return Promise.reject(\"not supported\");\r\n };\r\n WebPlatformTransport.prototype.onConnectedChanged = function (callback) {\r\n return this.registry.add(\"onConnectedChanged\", callback);\r\n };\r\n WebPlatformTransport.prototype.open = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.debug(\"opening a connection to the web platform gateway.\");\r\n return [4, this.connect()];\r\n case 1:\r\n _a.sent();\r\n this.notifyStatusChanged(true);\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.close = function () {\r\n var _a, _b;\r\n var message = {\r\n glue42core: {\r\n type: this.messages.gatewayDisconnect.name,\r\n data: {\r\n clientId: this.myClientId,\r\n ownWindowId: (_a = this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n (_b = this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n this.parentReady = false;\r\n this.notifyStatusChanged(false, \"manual reconnection\");\r\n return Promise.resolve();\r\n };\r\n WebPlatformTransport.prototype.name = function () {\r\n return \"web-platform\";\r\n };\r\n WebPlatformTransport.prototype.reconnect = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, this.close()];\r\n case 1:\r\n _a.sent();\r\n return [2, Promise.resolve()];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.initiateInternalConnection = function () {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.logger.debug(\"opening an internal web platform connection\");\r\n _this.port = _this.settings.port;\r\n if (_this.iAmConnected) {\r\n _this.logger.warn(\"cannot open a new connection, because this client is currently connected\");\r\n return;\r\n }\r\n _this.port.onmessage = function (event) {\r\n var _a, _b;\r\n if (_this.iAmConnected && !((_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core)) {\r\n _this.registry.execute(\"onMessage\", event.data);\r\n return;\r\n }\r\n var data = (_b = event.data) === null || _b === void 0 ? void 0 : _b.glue42core;\r\n if (!data) {\r\n return;\r\n }\r\n if (data.type === _this.messages.gatewayInternalConnect.name && data.success) {\r\n _this.publicWindowId = _this.settings.windowId;\r\n if (_this.identity && _this.publicWindowId) {\r\n _this.identity.windowId = _this.publicWindowId;\r\n _this.identity.instance = _this.publicWindowId;\r\n }\r\n resolve();\r\n }\r\n if (data.type === _this.messages.gatewayInternalConnect.name && data.error) {\r\n reject(data.error);\r\n }\r\n };\r\n _this.port.postMessage({\r\n glue42core: {\r\n type: _this.messages.gatewayInternalConnect.name\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.initiateRemoteConnection = function (target) {\r\n var _this = this;\r\n return PromisePlus(function (resolve, reject) {\r\n var _a;\r\n _this.connectionResolve = resolve;\r\n _this.connectionReject = reject;\r\n _this.myClientId = (_a = _this.myClientId) !== null && _a !== void 0 ? _a : shortid();\r\n var bridgeInstanceId = _this.getMyWindowId() || shortid();\r\n var request = {\r\n glue42core: {\r\n type: _this.messages.connectionRequest.name,\r\n clientId: _this.myClientId,\r\n clientType: \"child\",\r\n bridgeInstanceId: bridgeInstanceId,\r\n selfAssignedWindowId: _this.selfAssignedWindowId\r\n }\r\n };\r\n _this.logger.debug(\"sending connection request\");\r\n if (_this.extContentConnecting) {\r\n request.glue42core.clientType = \"child\";\r\n request.glue42core.bridgeInstanceId = _this.myClientId;\r\n request.glue42core.parentWindowId = _this.parentWindowId;\r\n return window.postMessage(request, _this.defaultTargetString);\r\n }\r\n if (!target) {\r\n throw new Error(\"Cannot send a connection request, because no glue target was specified!\");\r\n }\r\n target.postMessage(request, _this.defaultTargetString);\r\n }, this.connectionRequestTimeout, \"The connection to the target glue window timed out\");\r\n };\r\n WebPlatformTransport.prototype.isParentCheckSuccess = function (parentCheck) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, parentCheck];\r\n case 1:\r\n _a.sent();\r\n return [2, { success: true }];\r\n case 2:\r\n _a.sent();\r\n return [2, { success: false }];\r\n case 3: return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.setUpMessageListener = function () {\r\n var _this = this;\r\n if (this.settings.port) {\r\n this.logger.debug(\"skipping generic message listener, because this is an internal client\");\r\n return;\r\n }\r\n window.addEventListener(\"message\", function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (!data || _this.rejected) {\r\n return;\r\n }\r\n var allowedOrigins = _this.settings.allowedOrigins || [];\r\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\r\n _this.logger.warn(\"received a message from an origin which is not in the allowed list: \".concat(event.origin));\r\n return;\r\n }\r\n if (!_this.checkMessageTypeValid(data.type)) {\r\n _this.logger.error(\"cannot handle the incoming glue42 core message, because the type is invalid: \".concat(data.type));\r\n return;\r\n }\r\n var messageType = data.type;\r\n _this.logger.debug(\"received valid glue42core message of type: \".concat(messageType));\r\n _this.messages[messageType].handle(event);\r\n });\r\n };\r\n WebPlatformTransport.prototype.setUpUnload = function () {\r\n var _this = this;\r\n if (this.settings.port) {\r\n this.logger.debug(\"skipping unload event listener, because this is an internal client\");\r\n return;\r\n }\r\n window.addEventListener(\"beforeunload\", function () {\r\n var _a, _b;\r\n if (_this.extContentConnected) {\r\n return;\r\n }\r\n var message = {\r\n glue42core: {\r\n type: _this.messages.clientUnload.name,\r\n data: {\r\n clientId: _this.myClientId,\r\n ownWindowId: (_a = _this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n if (_this.parent) {\r\n _this.parent.postMessage(message, _this.defaultTargetString);\r\n }\r\n (_b = _this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n });\r\n };\r\n WebPlatformTransport.prototype.handlePlatformReady = function (event) {\r\n this.logger.debug(\"the web platform gave the ready signal\");\r\n this.parentReady = true;\r\n if (this.parentPingResolve) {\r\n this.parentPingResolve();\r\n delete this.parentPingResolve;\r\n }\r\n if (this.parentPingInterval) {\r\n clearInterval(this.parentPingInterval);\r\n delete this.parentPingInterval;\r\n }\r\n this.parent = event.source;\r\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : \"window\";\r\n };\r\n WebPlatformTransport.prototype.handleConnectionAccepted = function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (this.myClientId === data.clientId) {\r\n return this.handleAcceptanceOfMyRequest(data);\r\n }\r\n return this.handleAcceptanceOfGrandChildRequest(data, event);\r\n };\r\n WebPlatformTransport.prototype.handleAcceptanceOfMyRequest = function (data) {\r\n var _this = this;\r\n this.logger.debug(\"handling a connection accepted signal targeted at me.\");\r\n this.isPreferredActivated = data.isPreferredActivated;\r\n if (this.extContentConnecting) {\r\n return this.processExtContentConnection(data);\r\n }\r\n if (!data.port) {\r\n this.logger.error(\"cannot set up my connection, because I was not provided with a port\");\r\n return;\r\n }\r\n this.publicWindowId = this.getMyWindowId();\r\n if (this.identity) {\r\n this.identity.windowId = this.publicWindowId;\r\n this.identity.instance = this.identity.instance ? this.identity.instance : this.publicWindowId || shortid();\r\n }\r\n if (this.identity && data.appName) {\r\n this.identity.application = data.appName;\r\n this.identity.applicationName = data.appName;\r\n }\r\n this._communicationId = data.communicationId;\r\n this.port = data.port;\r\n this.port.onmessage = function (e) { return _this.registry.execute(\"onMessage\", e.data); };\r\n if (this.connectionResolve) {\r\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\r\n this.connectionResolve();\r\n delete this.connectionResolve;\r\n return;\r\n }\r\n this.logger.error(\"unable to call the connection resolve, because no connection promise was found\");\r\n };\r\n WebPlatformTransport.prototype.processExtContentConnection = function (data) {\r\n var _this = this;\r\n this.logger.debug(\"handling a connection accepted signal targeted at me for extension content connection.\");\r\n this.extContentConnecting = false;\r\n this.extContentConnected = true;\r\n this.publicWindowId = this.parentWindowId || this.myClientId;\r\n if (this.extContentConnecting && this.identity) {\r\n this.identity.windowId = this.publicWindowId;\r\n }\r\n if (this.identity && data.appName) {\r\n this.identity.application = data.appName;\r\n this.identity.applicationName = data.appName;\r\n }\r\n window.addEventListener(\"message\", function (event) {\r\n var _a;\r\n var extData = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42ExtInc;\r\n if (!extData) {\r\n return;\r\n }\r\n var allowedOrigins = _this.settings.allowedOrigins || [];\r\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\r\n _this.logger.warn(\"received a message from an origin which is not in the allowed list: \".concat(event.origin));\r\n return;\r\n }\r\n _this.registry.execute(\"onMessage\", extData);\r\n });\r\n if (this.connectionResolve) {\r\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\r\n this.connectionResolve();\r\n delete this.connectionResolve;\r\n return;\r\n }\r\n };\r\n WebPlatformTransport.prototype.handleAcceptanceOfGrandChildRequest = function (data, event) {\r\n if (this.extContentConnecting || this.extContentConnected) {\r\n this.logger.debug(\"cannot process acceptance of a grandchild, because I am connected to a content script\");\r\n return;\r\n }\r\n this.logger.debug(\"handling a connection accepted signal targeted at a grandchild: \".concat(data.clientId));\r\n var child = this.children.find(function (c) { return c.grandChildId === data.clientId; });\r\n if (!child) {\r\n this.logger.error(\"cannot handle connection accepted for grandchild: \".concat(data.clientId, \", because there is no grandchild with this id\"));\r\n return;\r\n }\r\n child.connected = true;\r\n this.logger.debug(\"the grandchild connection for \".concat(data.clientId, \" is set up, forwarding the success message and the gateway port\"));\r\n data.parentWindowId = this.publicWindowId;\r\n child.source.postMessage(event.data, child.origin, [data.port]);\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleConnectionRejected = function () {\r\n this.logger.debug(\"handling a connection rejection. Most likely the reason is that this window was not created by a glue API call\");\r\n if (this.connectionReject) {\r\n this.connectionReject(\"The platform connection was rejected. Most likely because this window was not created by a glue API call\");\r\n delete this.connectionReject;\r\n }\r\n };\r\n WebPlatformTransport.prototype.handleConnectionRequest = function (event) {\r\n if (this.extContentConnecting) {\r\n this.logger.debug(\"This connection request event is targeted at the extension content\");\r\n return;\r\n }\r\n var source = event.source;\r\n var data = event.data.glue42core;\r\n if (!data.clientType || data.clientType !== \"grandChild\") {\r\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source was not opened by a glue API call\");\r\n }\r\n if (!data.clientId) {\r\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source did not provide a valid id\");\r\n }\r\n if (!this.parent) {\r\n return this.rejectConnectionRequest(source, event.origin, \"Cannot forward the connection request, because no direct connection to the platform was found\");\r\n }\r\n this.logger.debug(\"handling a connection request for a grandchild: \".concat(data.clientId));\r\n this.children.push({ grandChildId: data.clientId, source: source, connected: false, origin: event.origin });\r\n this.logger.debug(\"grandchild: \".concat(data.clientId, \" is prepared, forwarding connection request to the platform\"));\r\n this.parent.postMessage(event.data, this.defaultTargetString);\r\n };\r\n WebPlatformTransport.prototype.handleParentPing = function (event) {\r\n if (!this.parentReady) {\r\n this.logger.debug(\"my parent is not ready, I am ignoring the parent ping\");\r\n return;\r\n }\r\n if (!this.iAmConnected) {\r\n this.logger.debug(\"i am not fully connected yet, I am ignoring the parent ping\");\r\n return;\r\n }\r\n var message = {\r\n glue42core: {\r\n type: this.messages.parentReady.name\r\n }\r\n };\r\n if (this.extContentConnected) {\r\n message.glue42core.extMode = { windowId: this.myClientId };\r\n }\r\n var source = event.source;\r\n this.logger.debug(\"responding to a parent ping with a ready message\");\r\n source.postMessage(message, event.origin);\r\n };\r\n WebPlatformTransport.prototype.setupPlatformUnloadListener = function () {\r\n var _this = this;\r\n this.onMessage(function (msg) {\r\n if (msg.type === \"platformUnload\") {\r\n _this.logger.debug(\"detected a web platform unload\");\r\n _this.parentReady = false;\r\n _this.notifyStatusChanged(false, \"Gateway unloaded\");\r\n }\r\n });\r\n };\r\n WebPlatformTransport.prototype.handleManualUnload = function () {\r\n var _a, _b;\r\n var message = {\r\n glue42core: {\r\n type: this.messages.clientUnload.name,\r\n data: {\r\n clientId: this.myClientId,\r\n ownWindowId: (_a = this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n if (this.extContentConnected) {\r\n return window.postMessage({ glue42ExtOut: message }, this.defaultTargetString);\r\n }\r\n (_b = this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n };\r\n WebPlatformTransport.prototype.handleClientUnload = function (event) {\r\n var data = event.data.glue42core;\r\n var clientId = data === null || data === void 0 ? void 0 : data.data.clientId;\r\n if (!clientId) {\r\n this.logger.warn(\"cannot process grand child unload, because the provided id was not valid\");\r\n return;\r\n }\r\n var foundChild = this.children.find(function (child) { return child.grandChildId === clientId; });\r\n if (!foundChild) {\r\n this.logger.warn(\"cannot process grand child unload, because this client is unaware of this grandchild\");\r\n return;\r\n }\r\n this.logger.debug(\"handling grandchild unload for id: \".concat(clientId));\r\n this.children = this.children.filter(function (child) { return child.grandChildId !== clientId; });\r\n };\r\n WebPlatformTransport.prototype.handlePlatformPing = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.notifyStatusChanged = function (status, reason) {\r\n this.iAmConnected = status;\r\n this.registry.execute(\"onConnectedChanged\", status, reason);\r\n };\r\n WebPlatformTransport.prototype.checkMessageTypeValid = function (typeToValidate) {\r\n return typeof typeToValidate === \"string\" && !!this.messages[typeToValidate];\r\n };\r\n WebPlatformTransport.prototype.rejectConnectionRequest = function (source, origin, reason) {\r\n this.rejected = true;\r\n this.logger.error(reason);\r\n var rejection = {\r\n glue42core: {\r\n type: this.messages.connectionRejected.name\r\n }\r\n };\r\n source.postMessage(rejection, origin);\r\n };\r\n WebPlatformTransport.prototype.requestConnectionPermissionFromExt = function () {\r\n var _this = this;\r\n return this.waitForContentScript()\r\n .then(function () { return PromisePlus(function (resolve, reject) {\r\n _this.extConnectionResolve = resolve;\r\n _this.extConnectionReject = reject;\r\n var message = {\r\n glue42core: {\r\n type: \"extSetupRequest\"\r\n }\r\n };\r\n _this.logger.debug(\"permission request to the extension content script was sent\");\r\n window.postMessage(message, _this.defaultTargetString);\r\n }, _this.parentPingTimeout, \"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection timed out\"); });\r\n };\r\n WebPlatformTransport.prototype.handleExtConnectionResponse = function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (!data.approved) {\r\n return this.extConnectionReject ? this.extConnectionReject(\"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection was rejected\") : undefined;\r\n }\r\n if (this.extConnectionResolve) {\r\n this.extConnectionResolve();\r\n delete this.extConnectionResolve;\r\n }\r\n this.extContentConnecting = true;\r\n this.parentType = \"extension\";\r\n this.logger.debug(\"The extension connection was approved, proceeding.\");\r\n };\r\n WebPlatformTransport.prototype.handleExtSetupRequest = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleGatewayDisconnect = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleGatewayInternalConnect = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.waitForContentScript = function () {\r\n var _a;\r\n var contentReady = !!((_a = window.glue42ext) === null || _a === void 0 ? void 0 : _a.content);\r\n if (contentReady) {\r\n return Promise.resolve();\r\n }\r\n return PromisePlus(function (resolve) {\r\n window.addEventListener(\"Glue42EXTReady\", function () {\r\n resolve();\r\n });\r\n }, this.connectionRequestTimeout, \"The content script was available, but was never heard to be ready\");\r\n };\r\n WebPlatformTransport.prototype.connect = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.settings.port) return [3, 2];\r\n return [4, this.initiateInternalConnection()];\r\n case 1:\r\n _a.sent();\r\n this.logger.debug(\"internal web platform connection completed\");\r\n return [2];\r\n case 2:\r\n this.logger.debug(\"opening a client web platform connection\");\r\n return [4, this.findParent()];\r\n case 3:\r\n _a.sent();\r\n return [4, this.initiateRemoteConnection(this.parent)];\r\n case 4:\r\n _a.sent();\r\n this.logger.debug(\"the client is connected\");\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.findParent = function () {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var connectionNotPossibleMsg, myInsideParents, myOutsideParents, uniqueParents, defaultParentCheck;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\r\n myInsideParents = this.getPossibleParentsInWindow(window);\r\n myOutsideParents = this.getPossibleParentsOutsideWindow((_a = window.top) === null || _a === void 0 ? void 0 : _a.opener, window.top);\r\n uniqueParents = new Set(__spreadArray(__spreadArray([], myInsideParents, true), myOutsideParents, true));\r\n if (!uniqueParents.size && !this.extContentAvailable) {\r\n throw new Error(connectionNotPossibleMsg);\r\n }\r\n if (!(!uniqueParents.size && this.extContentAvailable)) return [3, 2];\r\n return [4, this.requestConnectionPermissionFromExt()];\r\n case 1:\r\n _b.sent();\r\n return [2];\r\n case 2: return [4, this.isParentCheckSuccess(this.confirmParent(Array.from(uniqueParents)))];\r\n case 3:\r\n defaultParentCheck = _b.sent();\r\n if (defaultParentCheck.success) {\r\n this.logger.debug(\"The default parent was found!\");\r\n return [2];\r\n }\r\n if (!this.extContentAvailable) {\r\n throw new Error(connectionNotPossibleMsg);\r\n }\r\n return [4, this.requestConnectionPermissionFromExt()];\r\n case 4:\r\n _b.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.getPossibleParentsInWindow = function (currentWindow) {\r\n return (!currentWindow || currentWindow === currentWindow.top) ? [] : __spreadArray([currentWindow.parent], this.getPossibleParentsInWindow(currentWindow.parent), true);\r\n };\r\n WebPlatformTransport.prototype.getPossibleParentsOutsideWindow = function (opener, current) {\r\n return (!opener || !current || opener === current) ? [] : __spreadArray(__spreadArray([opener], this.getPossibleParentsInWindow(opener), true), this.getPossibleParentsOutsideWindow(opener.opener, opener), true);\r\n };\r\n WebPlatformTransport.prototype.confirmParent = function (targets) {\r\n var _this = this;\r\n var connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\r\n var parentCheck = PromisePlus(function (resolve) {\r\n _this.parentPingResolve = resolve;\r\n var message = {\r\n glue42core: {\r\n type: _this.messages.platformPing.name\r\n }\r\n };\r\n _this.parentPingInterval = setInterval(function () {\r\n targets.forEach(function (target) {\r\n target.postMessage(message, _this.defaultTargetString);\r\n });\r\n }, 1000);\r\n }, this.parentPingTimeout, connectionNotPossibleMsg);\r\n parentCheck.catch(function () {\r\n if (_this.parentPingInterval) {\r\n clearInterval(_this.parentPingInterval);\r\n delete _this.parentPingInterval;\r\n }\r\n });\r\n return parentCheck;\r\n };\r\n WebPlatformTransport.prototype.getMyWindowId = function () {\r\n var _a;\r\n if (this.parentType === \"workspace\") {\r\n return window.name.substring(0, window.name.indexOf(\"#wsp\"));\r\n }\r\n if (window !== window.top) {\r\n return;\r\n }\r\n if ((_a = window.name) === null || _a === void 0 ? void 0 : _a.includes(\"g42\")) {\r\n return window.name;\r\n }\r\n this.selfAssignedWindowId = this.selfAssignedWindowId || \"g42-\".concat(shortid());\r\n return this.selfAssignedWindowId;\r\n };\r\n return WebPlatformTransport;\r\n}());\n\nvar waitForInvocations = function (invocations, callback) {\r\n var left = invocations;\r\n return function () {\r\n left--;\r\n if (left === 0) {\r\n callback();\r\n }\r\n };\r\n};\n\nvar AsyncSequelizer = (function () {\r\n function AsyncSequelizer(minSequenceInterval) {\r\n if (minSequenceInterval === void 0) { minSequenceInterval = 0; }\r\n this.minSequenceInterval = minSequenceInterval;\r\n this.queue = [];\r\n this.isExecutingQueue = false;\r\n }\r\n AsyncSequelizer.prototype.enqueue = function (action) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.queue.push({ action: action, resolve: resolve, reject: reject });\r\n _this.executeQueue();\r\n });\r\n };\r\n AsyncSequelizer.prototype.executeQueue = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var operation, actionResult, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this.isExecutingQueue) {\r\n return [2];\r\n }\r\n this.isExecutingQueue = true;\r\n _a.label = 1;\r\n case 1:\r\n if (!this.queue.length) return [3, 7];\r\n operation = this.queue.shift();\r\n if (!operation) {\r\n this.isExecutingQueue = false;\r\n return [2];\r\n }\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4, operation.action()];\r\n case 3:\r\n actionResult = _a.sent();\r\n operation.resolve(actionResult);\r\n return [3, 5];\r\n case 4:\r\n error_1 = _a.sent();\r\n operation.reject(error_1);\r\n return [3, 5];\r\n case 5: return [4, this.intervalBreak()];\r\n case 6:\r\n _a.sent();\r\n return [3, 1];\r\n case 7:\r\n this.isExecutingQueue = false;\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n AsyncSequelizer.prototype.intervalBreak = function () {\r\n var _this = this;\r\n return new Promise(function (res) { return setTimeout(res, _this.minSequenceInterval); });\r\n };\r\n return AsyncSequelizer;\r\n}());\n\nvar Connection = (function () {\r\n function Connection(settings, logger) {\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.messageHandlers = {};\r\n this.ids = 1;\r\n this.registry = lib$1();\r\n this._connected = false;\r\n this.isTrace = false;\r\n this._swapTransport = false;\r\n this._switchInProgress = false;\r\n this._transportSubscriptions = [];\r\n this._sequelizer = new AsyncSequelizer();\r\n settings = settings || {};\r\n settings.reconnectAttempts = settings.reconnectAttempts || 10;\r\n settings.reconnectInterval = settings.reconnectInterval || 1000;\r\n if (settings.inproc) {\r\n this.transport = new InProcTransport(settings.inproc, logger.subLogger(\"inMemory\"));\r\n }\r\n else if (settings.sharedWorker) {\r\n this.transport = new SharedWorkerTransport(settings.sharedWorker, logger.subLogger(\"shared-worker\"));\r\n }\r\n else if (settings.webPlatform) {\r\n this.transport = new WebPlatformTransport(settings.webPlatform, logger.subLogger(\"web-platform\"), settings.identity);\r\n }\r\n else if (settings.ws !== undefined) {\r\n this.transport = new WS(settings, logger.subLogger(\"ws\"));\r\n }\r\n else {\r\n throw new Error(\"No connection information specified\");\r\n }\r\n this.isTrace = logger.canPublish(\"trace\");\r\n logger.debug(\"starting with \".concat(this.transport.name(), \" transport\"));\r\n this.protocol = new GW3ProtocolImpl(this, settings, logger.subLogger(\"protocol\"));\r\n var unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\r\n var unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\r\n this._transportSubscriptions.push(unsubConnectionChanged);\r\n this._transportSubscriptions.push(unsubOnMessage);\r\n this._defaultTransport = this.transport;\r\n }\r\n Object.defineProperty(Connection.prototype, \"protocolVersion\", {\r\n get: function () {\r\n var _a;\r\n return (_a = this.protocol) === null || _a === void 0 ? void 0 : _a.protocolVersion;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Connection.prototype.switchTransport = function (settings) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2, this._sequelizer.enqueue(function () { return __awaiter(_this, void 0, void 0, function () {\r\n var switchTargetTransport, verifyPromise, isSwitchSuccess;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!settings || typeof settings !== \"object\") {\r\n throw new Error(\"Cannot switch transports, because the settings are missing or invalid.\");\r\n }\r\n if (typeof settings.type === \"undefined\") {\r\n throw new Error(\"Cannot switch the transport, because the type is not defined\");\r\n }\r\n this.logger.trace(\"Starting transport switch with settings: \".concat(JSON.stringify(settings)));\r\n switchTargetTransport = settings.type === \"secondary\" ? this.getNewSecondaryTransport(settings) : this._defaultTransport;\r\n this._targetTransport = switchTargetTransport;\r\n this._targetAuth = settings.type === \"secondary\" ? this.getNewSecondaryAuth(settings) : this._defaultAuth;\r\n verifyPromise = this.verifyConnection();\r\n this._swapTransport = true;\r\n this._switchInProgress = true;\r\n this.logger.trace(\"The new transport has been set, closing the current transport\");\r\n return [4, this.transport.close()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4, verifyPromise];\r\n case 3:\r\n _a.sent();\r\n isSwitchSuccess = this.transport === switchTargetTransport;\r\n this.logger.info(\"The reconnection after the switch was completed. Was the switch a success: \".concat(isSwitchSuccess));\r\n this._switchInProgress = false;\r\n return [2, { success: isSwitchSuccess }];\r\n case 4:\r\n _a.sent();\r\n this.logger.info(\"The reconnection after the switch timed out, reverting back to the default transport.\");\r\n this.switchTransport({ type: \"default\" });\r\n this._switchInProgress = false;\r\n return [2, { success: false }];\r\n case 5: return [2];\r\n }\r\n });\r\n }); })];\r\n });\r\n });\r\n };\r\n Connection.prototype.onLibReAnnounced = function (callback) {\r\n return this.registry.add(\"libReAnnounced\", callback);\r\n };\r\n Connection.prototype.setLibReAnnounced = function (lib) {\r\n this.registry.execute(\"libReAnnounced\", lib);\r\n };\r\n Connection.prototype.send = function (message, options) {\r\n if (this.transport.sendObject &&\r\n this.transport.isObjectBasedTransport) {\r\n var msg = this.protocol.createObjectMessage(message);\r\n if (this.isTrace) {\r\n this.logger.trace(\">> \".concat(JSON.stringify(msg)));\r\n }\r\n return this.transport.sendObject(msg, options);\r\n }\r\n else {\r\n var strMessage = this.protocol.createStringMessage(message);\r\n if (this.isTrace) {\r\n this.logger.trace(\">> \".concat(strMessage));\r\n }\r\n return this.transport.send(strMessage, options);\r\n }\r\n };\r\n Connection.prototype.on = function (type, messageHandler) {\r\n type = type.toLowerCase();\r\n if (this.messageHandlers[type] === undefined) {\r\n this.messageHandlers[type] = {};\r\n }\r\n var id = this.ids++;\r\n this.messageHandlers[type][id] = messageHandler;\r\n return {\r\n type: type,\r\n id: id,\r\n };\r\n };\r\n Connection.prototype.off = function (info) {\r\n delete this.messageHandlers[info.type.toLowerCase()][info.id];\r\n };\r\n Object.defineProperty(Connection.prototype, \"isConnected\", {\r\n get: function () {\r\n return this.protocol.isLoggedIn;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Connection.prototype.connected = function (callback) {\r\n var _this = this;\r\n return this.protocol.loggedIn(function () {\r\n var currentServer = _this.transport.name();\r\n callback(currentServer);\r\n });\r\n };\r\n Connection.prototype.disconnected = function (callback) {\r\n return this.registry.add(\"disconnected\", callback);\r\n };\r\n Connection.prototype.login = function (authRequest, reconnect) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var newAuth, identity, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this._defaultAuth) {\r\n this._defaultAuth = authRequest;\r\n }\r\n if (this._swapTransport) {\r\n this.logger.trace(\"Detected a transport swap, swapping transports\");\r\n newAuth = this.transportSwap();\r\n authRequest = newAuth !== null && newAuth !== void 0 ? newAuth : authRequest;\r\n }\r\n this.logger.trace(\"Starting login for transport: \".concat(this.transport.name(), \" and auth \").concat(JSON.stringify(authRequest)));\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 4, , 5]);\r\n return [4, this.transport.open()];\r\n case 2:\r\n _a.sent();\r\n this.logger.trace(\"Transport: \".concat(this.transport.name(), \" opened, logging in\"));\r\n timer(\"connection\").mark(\"transport-opened\");\r\n return [4, this.protocol.login(authRequest, reconnect)];\r\n case 3:\r\n identity = _a.sent();\r\n this.logger.trace(\"Logged in with identity: \".concat(JSON.stringify(identity)));\r\n timer(\"connection\").mark(\"protocol-logged-in\");\r\n return [2, identity];\r\n case 4:\r\n error_2 = _a.sent();\r\n if (this._switchInProgress) {\r\n this.logger.trace(\"An error while logging in after a transport swap, preparing a default swap.\");\r\n this.prepareDefaultSwap();\r\n }\r\n throw new Error(error_2);\r\n case 5: return [2];\r\n }\r\n });\r\n });\r\n };\r\n Connection.prototype.logout = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, this.protocol.logout()];\r\n case 1:\r\n _a.sent();\r\n return [4, this.transport.close()];\r\n case 2:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Connection.prototype.loggedIn = function (callback) {\r\n return this.protocol.loggedIn(callback);\r\n };\r\n Connection.prototype.domain = function (domain, successMessages, errorMessages) {\r\n return this.protocol.domain(domain, this.logger.subLogger(\"domain=\".concat(domain)), successMessages, errorMessages);\r\n };\r\n Connection.prototype.authToken = function () {\r\n return this.protocol.authToken();\r\n };\r\n Connection.prototype.reconnect = function () {\r\n return this.transport.reconnect();\r\n };\r\n Connection.prototype.distributeMessage = function (message, type) {\r\n var _this = this;\r\n var handlers = this.messageHandlers[type.toLowerCase()];\r\n if (handlers !== undefined) {\r\n Object.keys(handlers).forEach(function (handlerId) {\r\n var handler = handlers[handlerId];\r\n if (handler !== undefined) {\r\n try {\r\n handler(message);\r\n }\r\n catch (error) {\r\n try {\r\n _this.logger.error(\"Message handler failed with \".concat(error.stack), error);\r\n }\r\n catch (loggerError) {\r\n console.log(\"Message handler failed\", error);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n };\r\n Connection.prototype.handleConnectionChanged = function (connected) {\r\n if (this._connected === connected) {\r\n return;\r\n }\r\n this._connected = connected;\r\n if (connected) {\r\n if (this.settings.replaySpecs && this.settings.replaySpecs.length) {\r\n this.replayer = new MessageReplayerImpl(this.settings.replaySpecs);\r\n this.replayer.init(this);\r\n }\r\n this.registry.execute(\"connected\");\r\n }\r\n else {\r\n this.registry.execute(\"disconnected\");\r\n }\r\n };\r\n Connection.prototype.handleTransportMessage = function (msg) {\r\n var msgObj;\r\n if (typeof msg === \"string\") {\r\n msgObj = this.protocol.processStringMessage(msg);\r\n }\r\n else {\r\n msgObj = this.protocol.processObjectMessage(msg);\r\n }\r\n if (this.isTrace) {\r\n this.logger.trace(\"<< \".concat(JSON.stringify(msgObj)));\r\n }\r\n this.distributeMessage(msgObj.msg, msgObj.msgType);\r\n };\r\n Connection.prototype.verifyConnection = function () {\r\n var _this = this;\r\n return PromisePlus(function (resolve) {\r\n var unsub;\r\n var ready = waitForInvocations(2, function () {\r\n if (unsub) {\r\n unsub();\r\n }\r\n resolve();\r\n });\r\n unsub = _this.onLibReAnnounced(function (lib) {\r\n if (lib.name === \"interop\") {\r\n return ready();\r\n }\r\n if (lib.name === \"contexts\") {\r\n return ready();\r\n }\r\n });\r\n }, 10000, \"Transport switch timed out waiting for all libraries to be re-announced\");\r\n };\r\n Connection.prototype.getNewSecondaryTransport = function (settings) {\r\n var _a;\r\n if (!((_a = settings.transportConfig) === null || _a === void 0 ? void 0 : _a.url)) {\r\n throw new Error(\"Missing secondary transport URL.\");\r\n }\r\n return new WS(Object.assign({}, this.settings, { ws: settings.transportConfig.url, reconnectAttempts: 1 }), this.logger.subLogger(\"ws-secondary\"));\r\n };\r\n Connection.prototype.getNewSecondaryAuth = function (settings) {\r\n var _a;\r\n if (!((_a = settings.transportConfig) === null || _a === void 0 ? void 0 : _a.auth)) {\r\n throw new Error(\"Missing secondary transport auth information.\");\r\n }\r\n return settings.transportConfig.auth;\r\n };\r\n Connection.prototype.transportSwap = function () {\r\n this._swapTransport = false;\r\n if (!this._targetTransport || !this._targetAuth) {\r\n this.logger.warn(\"Error while switching transports - either the target transport or auth is not defined: transport defined -> \".concat(!!this._defaultTransport, \", auth defined -> \").concat(!!this._targetAuth, \". Staying on the current one.\"));\r\n return;\r\n }\r\n this._transportSubscriptions.forEach(function (unsub) { return unsub(); });\r\n this._transportSubscriptions = [];\r\n this.transport = this._targetTransport;\r\n var unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\r\n var unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\r\n this._transportSubscriptions.push(unsubConnectionChanged);\r\n this._transportSubscriptions.push(unsubOnMessage);\r\n return this._targetAuth;\r\n };\r\n Connection.prototype.prepareDefaultSwap = function () {\r\n var _this = this;\r\n this._transportSubscriptions.forEach(function (unsub) { return unsub(); });\r\n this._transportSubscriptions = [];\r\n this.transport.close().catch(function (error) { return _this.logger.warn(\"Error closing the \".concat(_this.transport.name(), \" transport after a failed connection attempt: \").concat(JSON.stringify(error))); });\r\n this._targetTransport = this._defaultTransport;\r\n this._targetAuth = this._defaultAuth;\r\n this._swapTransport = true;\r\n };\r\n return Connection;\r\n}());\n\nvar order = [\"trace\", \"debug\", \"info\", \"warn\", \"error\", \"off\"];\r\nvar Logger = (function () {\r\n function Logger(name, parent, logFn) {\r\n this.name = name;\r\n this.parent = parent;\r\n this.subLoggers = [];\r\n this.logFn = console;\r\n this.customLogFn = false;\r\n this.name = name;\r\n if (parent) {\r\n this.path = \"\".concat(parent.path, \".\").concat(name);\r\n }\r\n else {\r\n this.path = name;\r\n }\r\n this.loggerFullName = \"[\".concat(this.path, \"]\");\r\n this.includeTimeAndLevel = !logFn;\r\n if (logFn) {\r\n this.logFn = logFn;\r\n this.customLogFn = true;\r\n }\r\n }\r\n Logger.prototype.subLogger = function (name) {\r\n var existingSub = this.subLoggers.filter(function (subLogger) {\r\n return subLogger.name === name;\r\n })[0];\r\n if (existingSub !== undefined) {\r\n return existingSub;\r\n }\r\n Object.keys(this).forEach(function (key) {\r\n if (key === name) {\r\n throw new Error(\"This sub logger name is not allowed.\");\r\n }\r\n });\r\n var sub = new Logger(name, this, this.customLogFn ? this.logFn : undefined);\r\n this.subLoggers.push(sub);\r\n return sub;\r\n };\r\n Logger.prototype.publishLevel = function (level) {\r\n var _a;\r\n if (level) {\r\n this._publishLevel = level;\r\n }\r\n return this._publishLevel || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.publishLevel());\r\n };\r\n Logger.prototype.consoleLevel = function (level) {\r\n var _a;\r\n if (level) {\r\n this._consoleLevel = level;\r\n }\r\n return this._consoleLevel || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.consoleLevel());\r\n };\r\n Logger.prototype.log = function (message, level, error) {\r\n this.publishMessage(level || \"info\", message, error);\r\n };\r\n Logger.prototype.trace = function (message) {\r\n this.log(message, \"trace\");\r\n };\r\n Logger.prototype.debug = function (message) {\r\n this.log(message, \"debug\");\r\n };\r\n Logger.prototype.info = function (message) {\r\n this.log(message, \"info\");\r\n };\r\n Logger.prototype.warn = function (message) {\r\n this.log(message, \"warn\");\r\n };\r\n Logger.prototype.error = function (message, err) {\r\n this.log(message, \"error\");\r\n };\r\n Logger.prototype.canPublish = function (level, compareWith) {\r\n var levelIdx = order.indexOf(level);\r\n var restrictionIdx = order.indexOf(compareWith || this.consoleLevel() || \"trace\");\r\n return levelIdx >= restrictionIdx;\r\n };\r\n Logger.prototype.publishMessage = function (level, message, error) {\r\n var loggerName = this.loggerFullName;\r\n if (level === \"error\" && !error) {\r\n var e = new Error();\r\n if (e.stack) {\r\n message =\r\n message +\r\n \"\\n\" +\r\n e.stack\r\n .split(\"\\n\")\r\n .slice(3)\r\n .join(\"\\n\");\r\n }\r\n }\r\n if (this.canPublish(level, this.publishLevel())) {\r\n var interop = Logger.Interop;\r\n if (interop) {\r\n try {\r\n if (interop.methods({ name: Logger.InteropMethodName }).length > 0) {\r\n interop.invoke(Logger.InteropMethodName, {\r\n msg: \"\".concat(message),\r\n logger: loggerName,\r\n level: level\r\n });\r\n }\r\n }\r\n catch (_a) {\r\n }\r\n }\r\n }\r\n if (this.canPublish(level)) {\r\n var prefix = \"\";\r\n if (this.includeTimeAndLevel) {\r\n var date = new Date();\r\n var time = \"\".concat(date.getHours(), \":\").concat(date.getMinutes(), \":\").concat(date.getSeconds(), \":\").concat(date.getMilliseconds());\r\n prefix = \"[\".concat(time, \"] [\").concat(level, \"] \");\r\n }\r\n var toPrint = \"\".concat(prefix).concat(loggerName, \": \").concat(message);\r\n switch (level) {\r\n case \"trace\":\r\n this.logFn.debug(toPrint);\r\n break;\r\n case \"debug\":\r\n if (this.logFn.debug) {\r\n this.logFn.debug(toPrint);\r\n }\r\n else {\r\n this.logFn.log(toPrint);\r\n }\r\n break;\r\n case \"info\":\r\n this.logFn.info(toPrint);\r\n break;\r\n case \"warn\":\r\n this.logFn.warn(toPrint);\r\n break;\r\n case \"error\":\r\n this.logFn.error(toPrint, error);\r\n break;\r\n }\r\n }\r\n };\r\n Logger.InteropMethodName = \"T42.AppLogger.Log\";\r\n return Logger;\r\n}());\n\nvar GW_MESSAGE_CREATE_CONTEXT = \"create-context\";\r\nvar GW_MESSAGE_ACTIVITY_CREATED = \"created\";\r\nvar GW_MESSAGE_ACTIVITY_DESTROYED = \"destroyed\";\r\nvar GW_MESSAGE_CONTEXT_CREATED = \"context-created\";\r\nvar GW_MESSAGE_CONTEXT_ADDED = \"context-added\";\r\nvar GW_MESSAGE_SUBSCRIBE_CONTEXT = \"subscribe-context\";\r\nvar GW_MESSAGE_SUBSCRIBED_CONTEXT = \"subscribed-context\";\r\nvar GW_MESSAGE_UNSUBSCRIBE_CONTEXT = \"unsubscribe-context\";\r\nvar GW_MESSAGE_DESTROY_CONTEXT = \"destroy-context\";\r\nvar GW_MESSAGE_CONTEXT_DESTROYED = \"context-destroyed\";\r\nvar GW_MESSAGE_UPDATE_CONTEXT = \"update-context\";\r\nvar GW_MESSAGE_CONTEXT_UPDATED = \"context-updated\";\r\nvar GW_MESSAGE_JOINED_ACTIVITY = \"joined\";\n\nvar ContextMessageReplaySpec = {\r\n get name() {\r\n return \"context\";\r\n },\r\n get types() {\r\n return [\r\n GW_MESSAGE_CREATE_CONTEXT,\r\n GW_MESSAGE_ACTIVITY_CREATED,\r\n GW_MESSAGE_ACTIVITY_DESTROYED,\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_CONTEXT_ADDED,\r\n GW_MESSAGE_SUBSCRIBE_CONTEXT,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\r\n GW_MESSAGE_DESTROY_CONTEXT,\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_UPDATE_CONTEXT,\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n GW_MESSAGE_JOINED_ACTIVITY\r\n ];\r\n }\r\n};\n\nvar version = \"6.2.0\";\n\nfunction prepareConfig (configuration, ext, glue42gd) {\r\n var _a, _b, _c, _d;\r\n var nodeStartingContext;\r\n if (Utils.isNode()) {\r\n var startingContextString = process.env._GD_STARTING_CONTEXT_;\r\n if (startingContextString) {\r\n try {\r\n nodeStartingContext = JSON.parse(startingContextString);\r\n }\r\n catch (_e) {\r\n }\r\n }\r\n }\r\n function getConnection() {\r\n var _a, _b, _c, _d, _e, _f;\r\n var gwConfig = configuration.gateway;\r\n var protocolVersion = (_a = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.protocolVersion) !== null && _a !== void 0 ? _a : 3;\r\n var reconnectInterval = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.reconnectInterval;\r\n var reconnectAttempts = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.reconnectAttempts;\r\n var defaultWs = \"ws://localhost:8385\";\r\n var ws = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.ws;\r\n var sharedWorker = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.sharedWorker;\r\n var inproc = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.inproc;\r\n var webPlatform = (_b = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.webPlatform) !== null && _b !== void 0 ? _b : undefined;\r\n if (glue42gd) {\r\n ws = glue42gd.gwURL;\r\n }\r\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwURL) {\r\n ws = nodeStartingContext.gwURL;\r\n }\r\n if (!ws && !sharedWorker && !inproc) {\r\n ws = defaultWs;\r\n }\r\n var instanceId;\r\n var windowId;\r\n var pid;\r\n var environment;\r\n var region;\r\n var appName = getApplication();\r\n var uniqueAppName = appName;\r\n if (typeof glue42gd !== \"undefined\") {\r\n windowId = glue42gd.windowId;\r\n pid = glue42gd.pid;\r\n if (glue42gd.env) {\r\n environment = glue42gd.env.env;\r\n region = glue42gd.env.region;\r\n }\r\n uniqueAppName = (_c = glue42gd.application) !== null && _c !== void 0 ? _c : \"glue-app\";\r\n instanceId = glue42gd.appInstanceId;\r\n }\r\n else if (Utils.isNode()) {\r\n pid = process.pid;\r\n if (nodeStartingContext) {\r\n environment = nodeStartingContext.env;\r\n region = nodeStartingContext.region;\r\n instanceId = nodeStartingContext.instanceId;\r\n }\r\n }\r\n else if (typeof (window === null || window === void 0 ? void 0 : window.glue42electron) !== \"undefined\") {\r\n windowId = window === null || window === void 0 ? void 0 : window.glue42electron.instanceId;\r\n pid = window === null || window === void 0 ? void 0 : window.glue42electron.pid;\r\n environment = window === null || window === void 0 ? void 0 : window.glue42electron.env;\r\n region = window === null || window === void 0 ? void 0 : window.glue42electron.region;\r\n uniqueAppName = (_d = window === null || window === void 0 ? void 0 : window.glue42electron.application) !== null && _d !== void 0 ? _d : \"glue-app\";\r\n instanceId = window === null || window === void 0 ? void 0 : window.glue42electron.instanceId;\r\n }\r\n else ;\r\n var replaySpecs = (_f = (_e = configuration.gateway) === null || _e === void 0 ? void 0 : _e.replaySpecs) !== null && _f !== void 0 ? _f : [];\r\n replaySpecs.push(ContextMessageReplaySpec);\r\n var identity = {\r\n application: uniqueAppName,\r\n applicationName: appName,\r\n windowId: windowId,\r\n instance: instanceId,\r\n process: pid,\r\n region: region,\r\n environment: environment,\r\n api: ext.version || version\r\n };\r\n if (configuration.identity) {\r\n identity = Object.assign(identity, configuration.identity);\r\n }\r\n return {\r\n identity: identity,\r\n reconnectInterval: reconnectInterval,\r\n ws: ws,\r\n sharedWorker: sharedWorker,\r\n webPlatform: webPlatform,\r\n inproc: inproc,\r\n protocolVersion: protocolVersion,\r\n reconnectAttempts: reconnectAttempts,\r\n replaySpecs: replaySpecs,\r\n };\r\n }\r\n function getContexts() {\r\n if (typeof configuration.contexts === \"undefined\") {\r\n return { reAnnounceKnownContexts: true };\r\n }\r\n if (typeof configuration.contexts === \"boolean\" && configuration.contexts) {\r\n return { reAnnounceKnownContexts: true };\r\n }\r\n if (typeof configuration.contexts === \"object\") {\r\n return Object.assign({}, { reAnnounceKnownContexts: true }, configuration.contexts);\r\n }\r\n return false;\r\n }\r\n function getApplication() {\r\n if (configuration.application) {\r\n return configuration.application;\r\n }\r\n if (glue42gd) {\r\n return glue42gd.applicationName;\r\n }\r\n if (typeof window !== \"undefined\" && typeof window.glue42electron !== \"undefined\") {\r\n return window.glue42electron.application;\r\n }\r\n var uid = shortid();\r\n if (Utils.isNode()) {\r\n if (nodeStartingContext) {\r\n return nodeStartingContext.applicationConfig.name;\r\n }\r\n return \"NodeJS\" + uid;\r\n }\r\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\r\n return document.title + \" (\".concat(uid, \")\");\r\n }\r\n return uid;\r\n }\r\n function getAuth() {\r\n var _a, _b, _c;\r\n if (typeof configuration.auth === \"string\") {\r\n return {\r\n token: configuration.auth\r\n };\r\n }\r\n if (configuration.auth) {\r\n return configuration.auth;\r\n }\r\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwToken) {\r\n return {\r\n gatewayToken: nodeStartingContext.gwToken\r\n };\r\n }\r\n if (((_a = configuration.gateway) === null || _a === void 0 ? void 0 : _a.webPlatform) || ((_b = configuration.gateway) === null || _b === void 0 ? void 0 : _b.inproc) || ((_c = configuration.gateway) === null || _c === void 0 ? void 0 : _c.sharedWorker)) {\r\n return {\r\n username: \"glue42\", password: \"glue42\"\r\n };\r\n }\r\n }\r\n function getLogger() {\r\n var _a, _b;\r\n var config = configuration.logger;\r\n var defaultLevel = \"warn\";\r\n if (!config) {\r\n config = defaultLevel;\r\n }\r\n var gdConsoleLevel;\r\n if (glue42gd) {\r\n gdConsoleLevel = glue42gd.consoleLogLevel;\r\n }\r\n if (typeof config === \"string\") {\r\n return { console: gdConsoleLevel !== null && gdConsoleLevel !== void 0 ? gdConsoleLevel : config, publish: defaultLevel };\r\n }\r\n return {\r\n console: (_a = gdConsoleLevel !== null && gdConsoleLevel !== void 0 ? gdConsoleLevel : config.console) !== null && _a !== void 0 ? _a : defaultLevel,\r\n publish: (_b = config.publish) !== null && _b !== void 0 ? _b : defaultLevel\r\n };\r\n }\r\n var connection = getConnection();\r\n var application = getApplication();\r\n if (typeof window !== \"undefined\") {\r\n var windowAsAny = window;\r\n var containerApplication = windowAsAny.htmlContainer ?\r\n \"\".concat(windowAsAny.htmlContainer.containerName, \".\").concat(windowAsAny.htmlContainer.application) :\r\n (_a = windowAsAny === null || windowAsAny === void 0 ? void 0 : windowAsAny.glue42gd) === null || _a === void 0 ? void 0 : _a.application;\r\n if (containerApplication) {\r\n application = containerApplication;\r\n }\r\n }\r\n return {\r\n bus: (_b = configuration.bus) !== null && _b !== void 0 ? _b : false,\r\n application: application,\r\n auth: getAuth(),\r\n logger: getLogger(),\r\n connection: connection,\r\n metrics: (_c = configuration.metrics) !== null && _c !== void 0 ? _c : true,\r\n contexts: getContexts(),\r\n version: ext.version || version,\r\n libs: (_d = ext.libs) !== null && _d !== void 0 ? _d : [],\r\n customLogger: configuration.customLogger\r\n };\r\n}\n\nvar GW3ContextData = (function () {\r\n function GW3ContextData(contextId, name, isAnnounced, activityId) {\r\n this.updateCallbacks = {};\r\n this.contextId = contextId;\r\n this.name = name;\r\n this.isAnnounced = isAnnounced;\r\n this.activityId = activityId;\r\n this.context = {};\r\n }\r\n GW3ContextData.prototype.hasCallbacks = function () {\r\n return Object.keys(this.updateCallbacks).length > 0;\r\n };\r\n GW3ContextData.prototype.getState = function () {\r\n if (this.isAnnounced && this.hasCallbacks()) {\r\n return 3;\r\n }\r\n if (this.isAnnounced) {\r\n return 2;\r\n }\r\n if (this.hasCallbacks()) {\r\n return 1;\r\n }\r\n return 0;\r\n };\r\n return GW3ContextData;\r\n}());\n\nvar lodash_clonedeepExports = {};\nvar lodash_clonedeep = {\n get exports(){ return lodash_clonedeepExports; },\n set exports(v){ lodash_clonedeepExports = v; },\n};\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n(function (module, exports) {\n\t/** Used as the size to enable large array optimizations. */\n\tvar LARGE_ARRAY_SIZE = 200;\n\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t arrayTag = '[object Array]',\n\t boolTag = '[object Boolean]',\n\t dateTag = '[object Date]',\n\t errorTag = '[object Error]',\n\t funcTag = '[object Function]',\n\t genTag = '[object GeneratorFunction]',\n\t mapTag = '[object Map]',\n\t numberTag = '[object Number]',\n\t objectTag = '[object Object]',\n\t promiseTag = '[object Promise]',\n\t regexpTag = '[object RegExp]',\n\t setTag = '[object Set]',\n\t stringTag = '[object String]',\n\t symbolTag = '[object Symbol]',\n\t weakMapTag = '[object WeakMap]';\n\n\tvar arrayBufferTag = '[object ArrayBuffer]',\n\t dataViewTag = '[object DataView]',\n\t float32Tag = '[object Float32Array]',\n\t float64Tag = '[object Float64Array]',\n\t int8Tag = '[object Int8Array]',\n\t int16Tag = '[object Int16Array]',\n\t int32Tag = '[object Int32Array]',\n\t uint8Tag = '[object Uint8Array]',\n\t uint8ClampedTag = '[object Uint8ClampedArray]',\n\t uint16Tag = '[object Uint16Array]',\n\t uint32Tag = '[object Uint32Array]';\n\n\t/**\n\t * Used to match `RegExp`\n\t * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n\t */\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n\t/** Used to match `RegExp` flags from their coerced string values. */\n\tvar reFlags = /\\w*$/;\n\n\t/** Used to detect host constructors (Safari). */\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n\t/** Used to identify `toStringTag` values supported by `_.clone`. */\n\tvar cloneableTags = {};\n\tcloneableTags[argsTag] = cloneableTags[arrayTag] =\n\tcloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n\tcloneableTags[boolTag] = cloneableTags[dateTag] =\n\tcloneableTags[float32Tag] = cloneableTags[float64Tag] =\n\tcloneableTags[int8Tag] = cloneableTags[int16Tag] =\n\tcloneableTags[int32Tag] = cloneableTags[mapTag] =\n\tcloneableTags[numberTag] = cloneableTags[objectTag] =\n\tcloneableTags[regexpTag] = cloneableTags[setTag] =\n\tcloneableTags[stringTag] = cloneableTags[symbolTag] =\n\tcloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n\tcloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n\tcloneableTags[errorTag] = cloneableTags[funcTag] =\n\tcloneableTags[weakMapTag] = false;\n\n\t/** Detect free variable `global` from Node.js. */\n\tvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n\t/** Detect free variable `self`. */\n\tvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n\t/** Used as a reference to the global object. */\n\tvar root = freeGlobal || freeSelf || Function('return this')();\n\n\t/** Detect free variable `exports`. */\n\tvar freeExports = exports && !exports.nodeType && exports;\n\n\t/** Detect free variable `module`. */\n\tvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n\t/** Detect the popular CommonJS extension `module.exports`. */\n\tvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n\t/**\n\t * Adds the key-value `pair` to `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to modify.\n\t * @param {Array} pair The key-value pair to add.\n\t * @returns {Object} Returns `map`.\n\t */\n\tfunction addMapEntry(map, pair) {\n\t // Don't return `map.set` because it's not chainable in IE 11.\n\t map.set(pair[0], pair[1]);\n\t return map;\n\t}\n\n\t/**\n\t * Adds `value` to `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to modify.\n\t * @param {*} value The value to add.\n\t * @returns {Object} Returns `set`.\n\t */\n\tfunction addSetEntry(set, value) {\n\t // Don't return `set.add` because it's not chainable in IE 11.\n\t set.add(value);\n\t return set;\n\t}\n\n\t/**\n\t * A specialized version of `_.forEach` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayEach(array, iteratee) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t while (++index < length) {\n\t if (iteratee(array[index], index, array) === false) {\n\t break;\n\t }\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Appends the elements of `values` to `array`.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {Array} values The values to append.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayPush(array, values) {\n\t var index = -1,\n\t length = values.length,\n\t offset = array.length;\n\n\t while (++index < length) {\n\t array[offset + index] = values[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * A specialized version of `_.reduce` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {boolean} [initAccum] Specify using the first element of `array` as\n\t * the initial value.\n\t * @returns {*} Returns the accumulated value.\n\t */\n\tfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t if (initAccum && length) {\n\t accumulator = array[++index];\n\t }\n\t while (++index < length) {\n\t accumulator = iteratee(accumulator, array[index], index, array);\n\t }\n\t return accumulator;\n\t}\n\n\t/**\n\t * The base implementation of `_.times` without support for iteratee shorthands\n\t * or max array length checks.\n\t *\n\t * @private\n\t * @param {number} n The number of times to invoke `iteratee`.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the array of results.\n\t */\n\tfunction baseTimes(n, iteratee) {\n\t var index = -1,\n\t result = Array(n);\n\n\t while (++index < n) {\n\t result[index] = iteratee(index);\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Gets the value at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} [object] The object to query.\n\t * @param {string} key The key of the property to get.\n\t * @returns {*} Returns the property value.\n\t */\n\tfunction getValue(object, key) {\n\t return object == null ? undefined : object[key];\n\t}\n\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t // Many host objects are `Object` objects that can coerce to strings\n\t // despite having improperly defined `toString` methods.\n\t var result = false;\n\t if (value != null && typeof value.toString != 'function') {\n\t try {\n\t result = !!(value + '');\n\t } catch (e) {}\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Converts `map` to its key-value pairs.\n\t *\n\t * @private\n\t * @param {Object} map The map to convert.\n\t * @returns {Array} Returns the key-value pairs.\n\t */\n\tfunction mapToArray(map) {\n\t var index = -1,\n\t result = Array(map.size);\n\n\t map.forEach(function(value, key) {\n\t result[++index] = [key, value];\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\n\t/**\n\t * Converts `set` to an array of its values.\n\t *\n\t * @private\n\t * @param {Object} set The set to convert.\n\t * @returns {Array} Returns the values.\n\t */\n\tfunction setToArray(set) {\n\t var index = -1,\n\t result = Array(set.size);\n\n\t set.forEach(function(value) {\n\t result[++index] = value;\n\t });\n\t return result;\n\t}\n\n\t/** Used for built-in method references. */\n\tvar arrayProto = Array.prototype,\n\t funcProto = Function.prototype,\n\t objectProto = Object.prototype;\n\n\t/** Used to detect overreaching core-js shims. */\n\tvar coreJsData = root['__core-js_shared__'];\n\n\t/** Used to detect methods masquerading as native. */\n\tvar maskSrcKey = (function() {\n\t var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n\t return uid ? ('Symbol(src)_1.' + uid) : '';\n\t}());\n\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\n\t/** Used to detect if a method is native. */\n\tvar reIsNative = RegExp('^' +\n\t funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n\t .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t);\n\n\t/** Built-in value references. */\n\tvar Buffer = moduleExports ? root.Buffer : undefined,\n\t Symbol = root.Symbol,\n\t Uint8Array = root.Uint8Array,\n\t getPrototype = overArg(Object.getPrototypeOf, Object),\n\t objectCreate = Object.create,\n\t propertyIsEnumerable = objectProto.propertyIsEnumerable,\n\t splice = arrayProto.splice;\n\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeGetSymbols = Object.getOwnPropertySymbols,\n\t nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n\t nativeKeys = overArg(Object.keys, Object);\n\n\t/* Built-in method references that are verified to be native. */\n\tvar DataView = getNative(root, 'DataView'),\n\t Map = getNative(root, 'Map'),\n\t Promise = getNative(root, 'Promise'),\n\t Set = getNative(root, 'Set'),\n\t WeakMap = getNative(root, 'WeakMap'),\n\t nativeCreate = getNative(Object, 'create');\n\n\t/** Used to detect maps, sets, and weakmaps. */\n\tvar dataViewCtorString = toSource(DataView),\n\t mapCtorString = toSource(Map),\n\t promiseCtorString = toSource(Promise),\n\t setCtorString = toSource(Set),\n\t weakMapCtorString = toSource(WeakMap);\n\n\t/** Used to convert symbols to primitives and strings. */\n\tvar symbolProto = Symbol ? Symbol.prototype : undefined,\n\t symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n\t/**\n\t * Creates a hash object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Hash(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the hash.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Hash\n\t */\n\tfunction hashClear() {\n\t this.__data__ = nativeCreate ? nativeCreate(null) : {};\n\t}\n\n\t/**\n\t * Removes `key` and its value from the hash.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Hash\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction hashDelete(key) {\n\t return this.has(key) && delete this.__data__[key];\n\t}\n\n\t/**\n\t * Gets the hash value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction hashGet(key) {\n\t var data = this.__data__;\n\t if (nativeCreate) {\n\t var result = data[key];\n\t return result === HASH_UNDEFINED ? undefined : result;\n\t }\n\t return hasOwnProperty.call(data, key) ? data[key] : undefined;\n\t}\n\n\t/**\n\t * Checks if a hash value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Hash\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction hashHas(key) {\n\t var data = this.__data__;\n\t return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n\t}\n\n\t/**\n\t * Sets the hash `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the hash instance.\n\t */\n\tfunction hashSet(key, value) {\n\t var data = this.__data__;\n\t data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n\t return this;\n\t}\n\n\t// Add methods to `Hash`.\n\tHash.prototype.clear = hashClear;\n\tHash.prototype['delete'] = hashDelete;\n\tHash.prototype.get = hashGet;\n\tHash.prototype.has = hashHas;\n\tHash.prototype.set = hashSet;\n\n\t/**\n\t * Creates an list cache object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction ListCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the list cache.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf ListCache\n\t */\n\tfunction listCacheClear() {\n\t this.__data__ = [];\n\t}\n\n\t/**\n\t * Removes `key` and its value from the list cache.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction listCacheDelete(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t return false;\n\t }\n\t var lastIndex = data.length - 1;\n\t if (index == lastIndex) {\n\t data.pop();\n\t } else {\n\t splice.call(data, index, 1);\n\t }\n\t return true;\n\t}\n\n\t/**\n\t * Gets the list cache value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction listCacheGet(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t return index < 0 ? undefined : data[index][1];\n\t}\n\n\t/**\n\t * Checks if a list cache value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf ListCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction listCacheHas(key) {\n\t return assocIndexOf(this.__data__, key) > -1;\n\t}\n\n\t/**\n\t * Sets the list cache `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the list cache instance.\n\t */\n\tfunction listCacheSet(key, value) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t data.push([key, value]);\n\t } else {\n\t data[index][1] = value;\n\t }\n\t return this;\n\t}\n\n\t// Add methods to `ListCache`.\n\tListCache.prototype.clear = listCacheClear;\n\tListCache.prototype['delete'] = listCacheDelete;\n\tListCache.prototype.get = listCacheGet;\n\tListCache.prototype.has = listCacheHas;\n\tListCache.prototype.set = listCacheSet;\n\n\t/**\n\t * Creates a map cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction MapCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the map.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf MapCache\n\t */\n\tfunction mapCacheClear() {\n\t this.__data__ = {\n\t 'hash': new Hash,\n\t 'map': new (Map || ListCache),\n\t 'string': new Hash\n\t };\n\t}\n\n\t/**\n\t * Removes `key` and its value from the map.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction mapCacheDelete(key) {\n\t return getMapData(this, key)['delete'](key);\n\t}\n\n\t/**\n\t * Gets the map value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction mapCacheGet(key) {\n\t return getMapData(this, key).get(key);\n\t}\n\n\t/**\n\t * Checks if a map value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf MapCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction mapCacheHas(key) {\n\t return getMapData(this, key).has(key);\n\t}\n\n\t/**\n\t * Sets the map `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the map cache instance.\n\t */\n\tfunction mapCacheSet(key, value) {\n\t getMapData(this, key).set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `MapCache`.\n\tMapCache.prototype.clear = mapCacheClear;\n\tMapCache.prototype['delete'] = mapCacheDelete;\n\tMapCache.prototype.get = mapCacheGet;\n\tMapCache.prototype.has = mapCacheHas;\n\tMapCache.prototype.set = mapCacheSet;\n\n\t/**\n\t * Creates a stack cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Stack(entries) {\n\t this.__data__ = new ListCache(entries);\n\t}\n\n\t/**\n\t * Removes all key-value entries from the stack.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Stack\n\t */\n\tfunction stackClear() {\n\t this.__data__ = new ListCache;\n\t}\n\n\t/**\n\t * Removes `key` and its value from the stack.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction stackDelete(key) {\n\t return this.__data__['delete'](key);\n\t}\n\n\t/**\n\t * Gets the stack value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction stackGet(key) {\n\t return this.__data__.get(key);\n\t}\n\n\t/**\n\t * Checks if a stack value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Stack\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction stackHas(key) {\n\t return this.__data__.has(key);\n\t}\n\n\t/**\n\t * Sets the stack `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the stack cache instance.\n\t */\n\tfunction stackSet(key, value) {\n\t var cache = this.__data__;\n\t if (cache instanceof ListCache) {\n\t var pairs = cache.__data__;\n\t if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n\t pairs.push([key, value]);\n\t return this;\n\t }\n\t cache = this.__data__ = new MapCache(pairs);\n\t }\n\t cache.set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `Stack`.\n\tStack.prototype.clear = stackClear;\n\tStack.prototype['delete'] = stackDelete;\n\tStack.prototype.get = stackGet;\n\tStack.prototype.has = stackHas;\n\tStack.prototype.set = stackSet;\n\n\t/**\n\t * Creates an array of the enumerable property names of the array-like `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @param {boolean} inherited Specify returning inherited property names.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction arrayLikeKeys(value, inherited) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t // Safari 9 makes `arguments.length` enumerable in strict mode.\n\t var result = (isArray(value) || isArguments(value))\n\t ? baseTimes(value.length, String)\n\t : [];\n\n\t var length = result.length,\n\t skipIndexes = !!length;\n\n\t for (var key in value) {\n\t if ((inherited || hasOwnProperty.call(value, key)) &&\n\t !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Assigns `value` to `key` of `object` if the existing value is not equivalent\n\t * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to modify.\n\t * @param {string} key The key of the property to assign.\n\t * @param {*} value The value to assign.\n\t */\n\tfunction assignValue(object, key, value) {\n\t var objValue = object[key];\n\t if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n\t (value === undefined && !(key in object))) {\n\t object[key] = value;\n\t }\n\t}\n\n\t/**\n\t * Gets the index at which the `key` is found in `array` of key-value pairs.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {*} key The key to search for.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\tfunction assocIndexOf(array, key) {\n\t var length = array.length;\n\t while (length--) {\n\t if (eq(array[length][0], key)) {\n\t return length;\n\t }\n\t }\n\t return -1;\n\t}\n\n\t/**\n\t * The base implementation of `_.assign` without support for multiple sources\n\t * or `customizer` functions.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction baseAssign(object, source) {\n\t return object && copyObject(source, keys(source), object);\n\t}\n\n\t/**\n\t * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n\t * traversed objects.\n\t *\n\t * @private\n\t * @param {*} value The value to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @param {boolean} [isFull] Specify a clone including symbols.\n\t * @param {Function} [customizer] The function to customize cloning.\n\t * @param {string} [key] The key of `value`.\n\t * @param {Object} [object] The parent object of `value`.\n\t * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n\t * @returns {*} Returns the cloned value.\n\t */\n\tfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n\t var result;\n\t if (customizer) {\n\t result = object ? customizer(value, key, object, stack) : customizer(value);\n\t }\n\t if (result !== undefined) {\n\t return result;\n\t }\n\t if (!isObject(value)) {\n\t return value;\n\t }\n\t var isArr = isArray(value);\n\t if (isArr) {\n\t result = initCloneArray(value);\n\t if (!isDeep) {\n\t return copyArray(value, result);\n\t }\n\t } else {\n\t var tag = getTag(value),\n\t isFunc = tag == funcTag || tag == genTag;\n\n\t if (isBuffer(value)) {\n\t return cloneBuffer(value, isDeep);\n\t }\n\t if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n\t if (isHostObject(value)) {\n\t return object ? value : {};\n\t }\n\t result = initCloneObject(isFunc ? {} : value);\n\t if (!isDeep) {\n\t return copySymbols(value, baseAssign(result, value));\n\t }\n\t } else {\n\t if (!cloneableTags[tag]) {\n\t return object ? value : {};\n\t }\n\t result = initCloneByTag(value, tag, baseClone, isDeep);\n\t }\n\t }\n\t // Check for circular references and return its corresponding clone.\n\t stack || (stack = new Stack);\n\t var stacked = stack.get(value);\n\t if (stacked) {\n\t return stacked;\n\t }\n\t stack.set(value, result);\n\n\t if (!isArr) {\n\t var props = isFull ? getAllKeys(value) : keys(value);\n\t }\n\t arrayEach(props || value, function(subValue, key) {\n\t if (props) {\n\t key = subValue;\n\t subValue = value[key];\n\t }\n\t // Recursively populate clone (susceptible to call stack limits).\n\t assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * The base implementation of `_.create` without support for assigning\n\t * properties to the created object.\n\t *\n\t * @private\n\t * @param {Object} prototype The object to inherit from.\n\t * @returns {Object} Returns the new object.\n\t */\n\tfunction baseCreate(proto) {\n\t return isObject(proto) ? objectCreate(proto) : {};\n\t}\n\n\t/**\n\t * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n\t * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n\t * symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Function} keysFunc The function to get the keys of `object`.\n\t * @param {Function} symbolsFunc The function to get the symbols of `object`.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n\t var result = keysFunc(object);\n\t return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n\t}\n\n\t/**\n\t * The base implementation of `getTag`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tfunction baseGetTag(value) {\n\t return objectToString.call(value);\n\t}\n\n\t/**\n\t * The base implementation of `_.isNative` without bad shim checks.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function,\n\t * else `false`.\n\t */\n\tfunction baseIsNative(value) {\n\t if (!isObject(value) || isMasked(value)) {\n\t return false;\n\t }\n\t var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n\t return pattern.test(toSource(value));\n\t}\n\n\t/**\n\t * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction baseKeys(object) {\n\t if (!isPrototype(object)) {\n\t return nativeKeys(object);\n\t }\n\t var result = [];\n\t for (var key in Object(object)) {\n\t if (hasOwnProperty.call(object, key) && key != 'constructor') {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `buffer`.\n\t *\n\t * @private\n\t * @param {Buffer} buffer The buffer to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Buffer} Returns the cloned buffer.\n\t */\n\tfunction cloneBuffer(buffer, isDeep) {\n\t if (isDeep) {\n\t return buffer.slice();\n\t }\n\t var result = new buffer.constructor(buffer.length);\n\t buffer.copy(result);\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `arrayBuffer`.\n\t *\n\t * @private\n\t * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n\t * @returns {ArrayBuffer} Returns the cloned array buffer.\n\t */\n\tfunction cloneArrayBuffer(arrayBuffer) {\n\t var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n\t new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `dataView`.\n\t *\n\t * @private\n\t * @param {Object} dataView The data view to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned data view.\n\t */\n\tfunction cloneDataView(dataView, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n\t return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n\t}\n\n\t/**\n\t * Creates a clone of `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned map.\n\t */\n\tfunction cloneMap(map, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n\t return arrayReduce(array, addMapEntry, new map.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of `regexp`.\n\t *\n\t * @private\n\t * @param {Object} regexp The regexp to clone.\n\t * @returns {Object} Returns the cloned regexp.\n\t */\n\tfunction cloneRegExp(regexp) {\n\t var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n\t result.lastIndex = regexp.lastIndex;\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned set.\n\t */\n\tfunction cloneSet(set, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n\t return arrayReduce(array, addSetEntry, new set.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of the `symbol` object.\n\t *\n\t * @private\n\t * @param {Object} symbol The symbol object to clone.\n\t * @returns {Object} Returns the cloned symbol object.\n\t */\n\tfunction cloneSymbol(symbol) {\n\t return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n\t}\n\n\t/**\n\t * Creates a clone of `typedArray`.\n\t *\n\t * @private\n\t * @param {Object} typedArray The typed array to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned typed array.\n\t */\n\tfunction cloneTypedArray(typedArray, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n\t return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n\t}\n\n\t/**\n\t * Copies the values of `source` to `array`.\n\t *\n\t * @private\n\t * @param {Array} source The array to copy values from.\n\t * @param {Array} [array=[]] The array to copy values to.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction copyArray(source, array) {\n\t var index = -1,\n\t length = source.length;\n\n\t array || (array = Array(length));\n\t while (++index < length) {\n\t array[index] = source[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Copies properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy properties from.\n\t * @param {Array} props The property identifiers to copy.\n\t * @param {Object} [object={}] The object to copy properties to.\n\t * @param {Function} [customizer] The function to customize copied values.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copyObject(source, props, object, customizer) {\n\t object || (object = {});\n\n\t var index = -1,\n\t length = props.length;\n\n\t while (++index < length) {\n\t var key = props[index];\n\n\t var newValue = customizer\n\t ? customizer(object[key], source[key], key, object, source)\n\t : undefined;\n\n\t assignValue(object, key, newValue === undefined ? source[key] : newValue);\n\t }\n\t return object;\n\t}\n\n\t/**\n\t * Copies own symbol properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy symbols from.\n\t * @param {Object} [object={}] The object to copy symbols to.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copySymbols(source, object) {\n\t return copyObject(source, getSymbols(source), object);\n\t}\n\n\t/**\n\t * Creates an array of own enumerable property names and symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction getAllKeys(object) {\n\t return baseGetAllKeys(object, keys, getSymbols);\n\t}\n\n\t/**\n\t * Gets the data for `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to query.\n\t * @param {string} key The reference key.\n\t * @returns {*} Returns the map data.\n\t */\n\tfunction getMapData(map, key) {\n\t var data = map.__data__;\n\t return isKeyable(key)\n\t ? data[typeof key == 'string' ? 'string' : 'hash']\n\t : data.map;\n\t}\n\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t var value = getValue(object, key);\n\t return baseIsNative(value) ? value : undefined;\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable symbol properties of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of symbols.\n\t */\n\tvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n\t/**\n\t * Gets the `toStringTag` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tvar getTag = baseGetTag;\n\n\t// Fallback for data views, maps, sets, and weak maps in IE 11,\n\t// for data views in Edge < 14, and promises in Node.js.\n\tif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n\t (Map && getTag(new Map) != mapTag) ||\n\t (Promise && getTag(Promise.resolve()) != promiseTag) ||\n\t (Set && getTag(new Set) != setTag) ||\n\t (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n\t getTag = function(value) {\n\t var result = objectToString.call(value),\n\t Ctor = result == objectTag ? value.constructor : undefined,\n\t ctorString = Ctor ? toSource(Ctor) : undefined;\n\n\t if (ctorString) {\n\t switch (ctorString) {\n\t case dataViewCtorString: return dataViewTag;\n\t case mapCtorString: return mapTag;\n\t case promiseCtorString: return promiseTag;\n\t case setCtorString: return setTag;\n\t case weakMapCtorString: return weakMapTag;\n\t }\n\t }\n\t return result;\n\t };\n\t}\n\n\t/**\n\t * Initializes an array clone.\n\t *\n\t * @private\n\t * @param {Array} array The array to clone.\n\t * @returns {Array} Returns the initialized clone.\n\t */\n\tfunction initCloneArray(array) {\n\t var length = array.length,\n\t result = array.constructor(length);\n\n\t // Add properties assigned by `RegExp#exec`.\n\t if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n\t result.index = array.index;\n\t result.input = array.input;\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Initializes an object clone.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneObject(object) {\n\t return (typeof object.constructor == 'function' && !isPrototype(object))\n\t ? baseCreate(getPrototype(object))\n\t : {};\n\t}\n\n\t/**\n\t * Initializes an object clone based on its `toStringTag`.\n\t *\n\t * **Note:** This function only supports cloning values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @param {string} tag The `toStringTag` of the object to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n\t var Ctor = object.constructor;\n\t switch (tag) {\n\t case arrayBufferTag:\n\t return cloneArrayBuffer(object);\n\n\t case boolTag:\n\t case dateTag:\n\t return new Ctor(+object);\n\n\t case dataViewTag:\n\t return cloneDataView(object, isDeep);\n\n\t case float32Tag: case float64Tag:\n\t case int8Tag: case int16Tag: case int32Tag:\n\t case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n\t return cloneTypedArray(object, isDeep);\n\n\t case mapTag:\n\t return cloneMap(object, isDeep, cloneFunc);\n\n\t case numberTag:\n\t case stringTag:\n\t return new Ctor(object);\n\n\t case regexpTag:\n\t return cloneRegExp(object);\n\n\t case setTag:\n\t return cloneSet(object, isDeep, cloneFunc);\n\n\t case symbolTag:\n\t return cloneSymbol(object);\n\t }\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t length = length == null ? MAX_SAFE_INTEGER : length;\n\t return !!length &&\n\t (typeof value == 'number' || reIsUint.test(value)) &&\n\t (value > -1 && value % 1 == 0 && value < length);\n\t}\n\n\t/**\n\t * Checks if `value` is suitable for use as unique object key.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n\t */\n\tfunction isKeyable(value) {\n\t var type = typeof value;\n\t return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n\t ? (value !== '__proto__')\n\t : (value === null);\n\t}\n\n\t/**\n\t * Checks if `func` has its source masked.\n\t *\n\t * @private\n\t * @param {Function} func The function to check.\n\t * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n\t */\n\tfunction isMasked(func) {\n\t return !!maskSrcKey && (maskSrcKey in func);\n\t}\n\n\t/**\n\t * Checks if `value` is likely a prototype object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n\t */\n\tfunction isPrototype(value) {\n\t var Ctor = value && value.constructor,\n\t proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n\t return value === proto;\n\t}\n\n\t/**\n\t * Converts `func` to its source code.\n\t *\n\t * @private\n\t * @param {Function} func The function to process.\n\t * @returns {string} Returns the source code.\n\t */\n\tfunction toSource(func) {\n\t if (func != null) {\n\t try {\n\t return funcToString.call(func);\n\t } catch (e) {}\n\t try {\n\t return (func + '');\n\t } catch (e) {}\n\t }\n\t return '';\n\t}\n\n\t/**\n\t * This method is like `_.clone` except that it recursively clones `value`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 1.0.0\n\t * @category Lang\n\t * @param {*} value The value to recursively clone.\n\t * @returns {*} Returns the deep cloned value.\n\t * @see _.clone\n\t * @example\n\t *\n\t * var objects = [{ 'a': 1 }, { 'b': 2 }];\n\t *\n\t * var deep = _.cloneDeep(objects);\n\t * console.log(deep[0] === objects[0]);\n\t * // => false\n\t */\n\tfunction cloneDeep(value) {\n\t return baseClone(value, true, true);\n\t}\n\n\t/**\n\t * Performs a\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * comparison between two values to determine if they are equivalent.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'a': 1 };\n\t * var other = { 'a': 1 };\n\t *\n\t * _.eq(object, object);\n\t * // => true\n\t *\n\t * _.eq(object, other);\n\t * // => false\n\t *\n\t * _.eq('a', 'a');\n\t * // => true\n\t *\n\t * _.eq('a', Object('a'));\n\t * // => false\n\t *\n\t * _.eq(NaN, NaN);\n\t * // => true\n\t */\n\tfunction eq(value, other) {\n\t return value === other || (value !== value && other !== other);\n\t}\n\n\t/**\n\t * Checks if `value` is likely an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\tfunction isArguments(value) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n\t (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t return value != null && isLength(value.length) && !isFunction(value);\n\t}\n\n\t/**\n\t * This method is like `_.isArrayLike` except that it also checks if `value`\n\t * is an object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array-like object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArrayLikeObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject('abc');\n\t * // => false\n\t *\n\t * _.isArrayLikeObject(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLikeObject(value) {\n\t return isObjectLike(value) && isArrayLike(value);\n\t}\n\n\t/**\n\t * Checks if `value` is a buffer.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.3.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n\t * @example\n\t *\n\t * _.isBuffer(new Buffer(2));\n\t * // => true\n\t *\n\t * _.isBuffer(new Uint8Array(2));\n\t * // => false\n\t */\n\tvar isBuffer = nativeIsBuffer || stubFalse;\n\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in Safari 8-9 which returns 'object' for typed array and other constructors.\n\t var tag = isObject(value) ? objectToString.call(value) : '';\n\t return tag == funcTag || tag == genTag;\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This method is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t return typeof value == 'number' &&\n\t value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t}\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\tfunction keys(object) {\n\t return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n\t}\n\n\t/**\n\t * This method returns a new empty array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {Array} Returns the new empty array.\n\t * @example\n\t *\n\t * var arrays = _.times(2, _.stubArray);\n\t *\n\t * console.log(arrays);\n\t * // => [[], []]\n\t *\n\t * console.log(arrays[0] === arrays[1]);\n\t * // => false\n\t */\n\tfunction stubArray() {\n\t return [];\n\t}\n\n\t/**\n\t * This method returns `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {boolean} Returns `false`.\n\t * @example\n\t *\n\t * _.times(2, _.stubFalse);\n\t * // => [false, false]\n\t */\n\tfunction stubFalse() {\n\t return false;\n\t}\n\n\tmodule.exports = cloneDeep;\n} (lodash_clonedeep, lodash_clonedeepExports));\n\nvar cloneDeep = lodash_clonedeepExports;\n\nfunction applyContextDelta(context, delta, logger) {\r\n try {\r\n if (logger === null || logger === void 0 ? void 0 : logger.canPublish(\"trace\")) {\r\n logger === null || logger === void 0 ? void 0 : logger.trace(\"applying context delta \".concat(JSON.stringify(delta), \" on context \").concat(JSON.stringify(context)));\r\n }\r\n if (!delta) {\r\n return context;\r\n }\r\n if (delta.reset) {\r\n context = __assign({}, delta.reset);\r\n return context;\r\n }\r\n context = deepClone(context, undefined);\r\n if (delta.commands) {\r\n for (var _i = 0, _a = delta.commands; _i < _a.length; _i++) {\r\n var command = _a[_i];\r\n if (command.type === \"remove\") {\r\n deletePath(context, command.path);\r\n }\r\n else if (command.type === \"set\") {\r\n setValueToPath(context, command.value, command.path);\r\n }\r\n }\r\n return context;\r\n }\r\n var added_1 = delta.added;\r\n var updated_1 = delta.updated;\r\n var removed = delta.removed;\r\n if (added_1) {\r\n Object.keys(added_1).forEach(function (key) {\r\n context[key] = added_1[key];\r\n });\r\n }\r\n if (updated_1) {\r\n Object.keys(updated_1).forEach(function (key) {\r\n mergeObjectsProperties(key, context, updated_1);\r\n });\r\n }\r\n if (removed) {\r\n removed.forEach(function (key) {\r\n delete context[key];\r\n });\r\n }\r\n return context;\r\n }\r\n catch (e) {\r\n logger === null || logger === void 0 ? void 0 : logger.error(\"error applying context delta \".concat(JSON.stringify(delta), \" on context \").concat(JSON.stringify(context)), e);\r\n return context;\r\n }\r\n}\r\nfunction deepClone(obj, hash) {\r\n return cloneDeep(obj);\r\n}\r\nvar mergeObjectsProperties = function (key, what, withWhat) {\r\n var right = withWhat[key];\r\n if (right === undefined) {\r\n return what;\r\n }\r\n var left = what[key];\r\n if (!left || !right) {\r\n what[key] = right;\r\n return what;\r\n }\r\n if (typeof left === \"string\" ||\r\n typeof left === \"number\" ||\r\n typeof left === \"boolean\" ||\r\n typeof right === \"string\" ||\r\n typeof right === \"number\" ||\r\n typeof right === \"boolean\" ||\r\n Array.isArray(left) ||\r\n Array.isArray(right)) {\r\n what[key] = right;\r\n return what;\r\n }\r\n what[key] = Object.assign({}, left, right);\r\n return what;\r\n};\r\nfunction deepEqual(x, y) {\r\n if (x === y) {\r\n return true;\r\n }\r\n if (!(x instanceof Object) || !(y instanceof Object)) {\r\n return false;\r\n }\r\n if (x.constructor !== y.constructor) {\r\n return false;\r\n }\r\n for (var p in x) {\r\n if (!x.hasOwnProperty(p)) {\r\n continue;\r\n }\r\n if (!y.hasOwnProperty(p)) {\r\n return false;\r\n }\r\n if (x[p] === y[p]) {\r\n continue;\r\n }\r\n if (typeof (x[p]) !== \"object\") {\r\n return false;\r\n }\r\n if (!deepEqual(x[p], y[p])) {\r\n return false;\r\n }\r\n }\r\n for (var p in y) {\r\n if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction setValueToPath(obj, value, path) {\r\n var pathArr = path.split(\".\");\r\n var i;\r\n for (i = 0; i < pathArr.length - 1; i++) {\r\n if (!obj[pathArr[i]]) {\r\n obj[pathArr[i]] = {};\r\n }\r\n if (typeof obj[pathArr[i]] !== \"object\") {\r\n obj[pathArr[i]] = {};\r\n }\r\n obj = obj[pathArr[i]];\r\n }\r\n obj[pathArr[i]] = value;\r\n}\r\nfunction isSubset(superObj, subObj) {\r\n return Object.keys(subObj).every(function (ele) {\r\n if (typeof subObj[ele] === \"object\") {\r\n return isSubset((superObj === null || superObj === void 0 ? void 0 : superObj[ele]) || {}, subObj[ele] || {});\r\n }\r\n return subObj[ele] === (superObj === null || superObj === void 0 ? void 0 : superObj[ele]);\r\n });\r\n}\r\nfunction deletePath(obj, path) {\r\n var pathArr = path.split(\".\");\r\n var i;\r\n for (i = 0; i < pathArr.length - 1; i++) {\r\n if (!obj[pathArr[i]]) {\r\n return;\r\n }\r\n obj = obj[pathArr[i]];\r\n }\r\n delete obj[pathArr[i]];\r\n}\n\nvar GW3Bridge = (function () {\r\n function GW3Bridge(config) {\r\n var _this = this;\r\n var _a;\r\n this._contextNameToData = {};\r\n this._gw3Subscriptions = [];\r\n this._nextCallbackSubscriptionNumber = 0;\r\n this._creationPromises = {};\r\n this._contextNameToId = {};\r\n this._contextIdToName = {};\r\n this._protocolVersion = undefined;\r\n this._contextsTempCache = {};\r\n this._contextsSubscriptionsCache = [];\r\n this._connection = config.connection;\r\n this._logger = config.logger;\r\n this._trackAllContexts = config.trackAllContexts;\r\n this._reAnnounceKnownContexts = config.reAnnounceKnownContexts;\r\n this._gw3Session = this._connection.domain(\"global\", [\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n ]);\r\n this._gw3Session.disconnected(this.resetState.bind(this));\r\n this._gw3Session.onJoined(function (wasReconnect) {\r\n if (!wasReconnect) {\r\n return;\r\n }\r\n if (!_this._reAnnounceKnownContexts) {\r\n return _this._connection.setLibReAnnounced({ name: \"contexts\" });\r\n }\r\n _this.reInitiateState().then(function () { return _this._connection.setLibReAnnounced({ name: \"contexts\" }); });\r\n });\r\n this.subscribeToContextCreatedMessages();\r\n this.subscribeToContextUpdatedMessages();\r\n this.subscribeToContextDestroyedMessages();\r\n (_a = this._connection.replayer) === null || _a === void 0 ? void 0 : _a.drain(ContextMessageReplaySpec.name, function (message) {\r\n var type = message.type;\r\n if (!type) {\r\n return;\r\n }\r\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\r\n type === GW_MESSAGE_CONTEXT_ADDED ||\r\n type === GW_MESSAGE_ACTIVITY_CREATED) {\r\n _this.handleContextCreatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\r\n type === GW_MESSAGE_CONTEXT_UPDATED ||\r\n type === GW_MESSAGE_JOINED_ACTIVITY) {\r\n _this.handleContextUpdatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\r\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n _this.handleContextDestroyedMessage(message);\r\n }\r\n });\r\n }\r\n Object.defineProperty(GW3Bridge.prototype, \"protocolVersion\", {\r\n get: function () {\r\n var _a;\r\n if (!this._protocolVersion) {\r\n var contextsDomainInfo = this._connection.availableDomains.find(function (d) { return d.uri === \"context\"; });\r\n this._protocolVersion = (_a = contextsDomainInfo === null || contextsDomainInfo === void 0 ? void 0 : contextsDomainInfo.version) !== null && _a !== void 0 ? _a : 1;\r\n }\r\n return this._protocolVersion;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(GW3Bridge.prototype, \"setPathSupported\", {\r\n get: function () {\r\n return this.protocolVersion >= 2;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n GW3Bridge.prototype.dispose = function () {\r\n for (var _i = 0, _a = this._gw3Subscriptions; _i < _a.length; _i++) {\r\n var sub = _a[_i];\r\n this._connection.off(sub);\r\n }\r\n this._gw3Subscriptions.length = 0;\r\n for (var contextName in this._contextNameToData) {\r\n if (this._contextNameToId.hasOwnProperty(contextName)) {\r\n delete this._contextNameToData[contextName];\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.createContext = function (name, data) {\r\n var _this = this;\r\n if (name in this._creationPromises) {\r\n return this._creationPromises[name];\r\n }\r\n this._creationPromises[name] =\r\n this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_CREATE_CONTEXT,\r\n domain: \"global\",\r\n name: name,\r\n data: data,\r\n lifetime: \"retained\",\r\n })\r\n .then(function (createContextMsg) {\r\n _this._contextNameToId[name] = createContextMsg.context_id;\r\n _this._contextIdToName[createContextMsg.context_id] = name;\r\n var contextData = _this._contextNameToData[name] || new GW3ContextData(createContextMsg.context_id, name, true, undefined);\r\n contextData.isAnnounced = true;\r\n contextData.name = name;\r\n contextData.contextId = createContextMsg.context_id;\r\n contextData.context = createContextMsg.data || deepClone(data);\r\n contextData.hasReceivedSnapshot = true;\r\n _this._contextNameToData[name] = contextData;\r\n delete _this._creationPromises[name];\r\n return createContextMsg.context_id;\r\n });\r\n return this._creationPromises[name];\r\n };\r\n GW3Bridge.prototype.all = function () {\r\n var _this = this;\r\n return Object.keys(this._contextNameToData)\r\n .filter(function (name) { return _this._contextNameToData[name].isAnnounced; });\r\n };\r\n GW3Bridge.prototype.update = function (name, delta) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, currentContext, calculatedDelta;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (delta) {\r\n delta = deepClone(delta);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, this.createContext(name, delta)];\r\n }\r\n currentContext = contextData.context;\r\n if (!!contextData.hasCallbacks()) return [3, 4];\r\n return [4, this.get(contextData.name)];\r\n case 3:\r\n currentContext = _b.sent();\r\n _b.label = 4;\r\n case 4:\r\n calculatedDelta = this.setPathSupported ?\r\n this.calculateContextDeltaV2(currentContext, delta) :\r\n this.calculateContextDeltaV1(currentContext, delta);\r\n if (!Object.keys(calculatedDelta.added).length\r\n && !Object.keys(calculatedDelta.updated).length\r\n && !calculatedDelta.removed.length\r\n && !((_a = calculatedDelta.commands) === null || _a === void 0 ? void 0 : _a.length)) {\r\n return [2, Promise.resolve()];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: calculatedDelta,\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, calculatedDelta, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.set = function (name, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (data) {\r\n data = deepClone(data);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, this.createContext(name, data)];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: { reset: data },\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, {\r\n reset: data,\r\n added: {},\r\n removed: [],\r\n updated: {}\r\n }, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.setPath = function (name, path, value) {\r\n if (!this.setPathSupported) {\r\n return Promise.reject(\"glue.contexts.setPath operation is not supported, use Glue42 3.10 or later\");\r\n }\r\n return this.setPaths(name, [{ path: path, value: value }]);\r\n };\r\n GW3Bridge.prototype.setPaths = function (name, pathValues) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, obj, _i, pathValues_1, pathValue, commands, _a, pathValues_2, pathValue;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!this.setPathSupported) {\r\n return [2, Promise.reject(\"glue.contexts.setPaths operation is not supported, use Glue42 3.10 or later\")];\r\n }\r\n if (pathValues) {\r\n pathValues = deepClone(pathValues);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n obj = {};\r\n for (_i = 0, pathValues_1 = pathValues; _i < pathValues_1.length; _i++) {\r\n pathValue = pathValues_1[_i];\r\n setValueToPath(obj, pathValue.value, pathValue.path);\r\n }\r\n return [2, this.createContext(name, obj)];\r\n }\r\n commands = [];\r\n for (_a = 0, pathValues_2 = pathValues; _a < pathValues_2.length; _a++) {\r\n pathValue = pathValues_2[_a];\r\n if (pathValue.value === null) {\r\n commands.push({ type: \"remove\", path: pathValue.path });\r\n }\r\n else {\r\n commands.push({ type: \"set\", path: pathValue.path, value: pathValue.value });\r\n }\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: { commands: commands }\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, {\r\n added: {},\r\n removed: [],\r\n updated: {},\r\n commands: commands\r\n }, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.get = function (name) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, context;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, Promise.resolve({})];\r\n }\r\n if (contextData && (!contextData.hasCallbacks() || !contextData.hasReceivedSnapshot)) {\r\n return [2, new Promise(function (resolve) {\r\n _this.subscribe(name, function (data, _d, _r, un) {\r\n _this.unsubscribe(un);\r\n resolve(data);\r\n });\r\n })];\r\n }\r\n context = (_a = contextData === null || contextData === void 0 ? void 0 : contextData.context) !== null && _a !== void 0 ? _a : {};\r\n return [2, Promise.resolve(deepClone(context))];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.subscribe = function (name, callback, subscriptionKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var thisCallbackSubscriptionNumber, contextData, hadCallbacks, clone, clone, clone;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n thisCallbackSubscriptionNumber = typeof subscriptionKey === \"undefined\" ? this._nextCallbackSubscriptionNumber : subscriptionKey;\r\n if (typeof subscriptionKey === \"undefined\") {\r\n this._nextCallbackSubscriptionNumber += 1;\r\n }\r\n if (this._contextsSubscriptionsCache.every(function (subscription) { return subscription.subKey !== _this._nextCallbackSubscriptionNumber; })) {\r\n this._contextsSubscriptionsCache.push({ contextName: name, subKey: thisCallbackSubscriptionNumber, callback: callback });\r\n }\r\n contextData = this._contextNameToData[name];\r\n if (!contextData ||\r\n !contextData.isAnnounced) {\r\n contextData = contextData || new GW3ContextData(undefined, name, false, undefined);\r\n this._contextNameToData[name] = contextData;\r\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n hadCallbacks = contextData.hasCallbacks();\r\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\r\n if (!hadCallbacks) {\r\n if (!contextData.joinedActivity) {\r\n if (contextData.context && contextData.sentExplicitSubscription) {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n return [2, this.sendSubscribe(contextData)\r\n .then(function () { return thisCallbackSubscriptionNumber; })];\r\n }\r\n else {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n }\r\n else {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.unsubscribe = function (subscriptionKey) {\r\n this._contextsSubscriptionsCache = this._contextsSubscriptionsCache.filter(function (subscription) { return subscription.subKey !== subscriptionKey; });\r\n for (var _i = 0, _a = Object.keys(this._contextNameToData); _i < _a.length; _i++) {\r\n var name_1 = _a[_i];\r\n var contextData = this._contextNameToData[name_1];\r\n if (!contextData) {\r\n return;\r\n }\r\n var hadCallbacks = contextData.hasCallbacks();\r\n delete contextData.updateCallbacks[subscriptionKey];\r\n if (contextData.isAnnounced &&\r\n hadCallbacks &&\r\n !contextData.hasCallbacks() &&\r\n contextData.sentExplicitSubscription) {\r\n this.sendUnsubscribe(contextData);\r\n }\r\n if (!contextData.isAnnounced &&\r\n !contextData.hasCallbacks()) {\r\n delete this._contextNameToData[name_1];\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.destroy = function (name) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData) {\r\n return [2, Promise.reject(\"context with \".concat(name, \" does not exist\"))];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_DESTROY_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.handleUpdated = function (contextData, delta, extraData) {\r\n var oldContext = contextData.context;\r\n contextData.context = applyContextDelta(contextData.context, delta, this._logger);\r\n contextData.hasReceivedSnapshot = true;\r\n if (this._contextNameToData[contextData.name] === contextData &&\r\n !deepEqual(oldContext, contextData.context)) {\r\n this.invokeUpdateCallbacks(contextData, delta, extraData);\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextCreatedMessages = function () {\r\n var createdMessageTypes = [\r\n GW_MESSAGE_CONTEXT_ADDED,\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_ACTIVITY_CREATED,\r\n ];\r\n for (var _i = 0, createdMessageTypes_1 = createdMessageTypes; _i < createdMessageTypes_1.length; _i++) {\r\n var createdMessageType = createdMessageTypes_1[_i];\r\n var sub = this._connection.on(createdMessageType, this.handleContextCreatedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextCreatedMessage = function (contextCreatedMsg) {\r\n var _this = this;\r\n var createdMessageType = contextCreatedMsg.type;\r\n if (createdMessageType === GW_MESSAGE_ACTIVITY_CREATED) {\r\n this._contextNameToId[contextCreatedMsg.activity_id] = contextCreatedMsg.context_id;\r\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.activity_id;\r\n }\r\n else if (createdMessageType === GW_MESSAGE_CONTEXT_ADDED) {\r\n this._contextNameToId[contextCreatedMsg.name] = contextCreatedMsg.context_id;\r\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.name;\r\n }\r\n else ;\r\n var name = this._contextIdToName[contextCreatedMsg.context_id];\r\n if (!name) {\r\n throw new Error(\"Received created event for context with unknown name: \" + contextCreatedMsg.context_id);\r\n }\r\n if (!this._contextNameToId[name]) {\r\n throw new Error(\"Received created event for context with unknown id: \" + contextCreatedMsg.context_id);\r\n }\r\n var contextData = this._contextNameToData[name];\r\n if (contextData) {\r\n if (contextData.isAnnounced) {\r\n return;\r\n }\r\n else {\r\n if (!contextData.hasCallbacks()) {\r\n throw new Error(\"Assertion failure: contextData.hasCallbacks()\");\r\n }\r\n contextData.isAnnounced = true;\r\n contextData.contextId = contextCreatedMsg.context_id;\r\n contextData.activityId = contextCreatedMsg.activity_id;\r\n if (!contextData.sentExplicitSubscription) {\r\n this.sendSubscribe(contextData);\r\n }\r\n }\r\n }\r\n else {\r\n this._contextNameToData[name] = contextData =\r\n new GW3ContextData(contextCreatedMsg.context_id, name, true, contextCreatedMsg.activity_id);\r\n if (this._trackAllContexts) {\r\n this.subscribe(name, function () { }).then(function (subKey) { return _this._systemContextsSubKey = subKey; });\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextUpdatedMessages = function () {\r\n var updatedMessageTypes = [\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_JOINED_ACTIVITY,\r\n ];\r\n for (var _i = 0, updatedMessageTypes_1 = updatedMessageTypes; _i < updatedMessageTypes_1.length; _i++) {\r\n var updatedMessageType = updatedMessageTypes_1[_i];\r\n var sub = this._connection.on(updatedMessageType, this.handleContextUpdatedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextUpdatedMessage = function (contextUpdatedMsg) {\r\n var updatedMessageType = contextUpdatedMsg.type;\r\n var contextId = contextUpdatedMsg.context_id;\r\n var contextData = this._contextNameToData[this._contextIdToName[contextId]];\r\n var justSeen = !contextData || !contextData.isAnnounced;\r\n if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\r\n if (!contextData) {\r\n contextData =\r\n this._contextNameToData[contextUpdatedMsg.activity_id] ||\r\n new GW3ContextData(contextId, contextUpdatedMsg.activity_id, true, contextUpdatedMsg.activity_id);\r\n }\r\n this._contextNameToData[contextUpdatedMsg.activity_id] = contextData;\r\n this._contextIdToName[contextId] = contextUpdatedMsg.activity_id;\r\n this._contextNameToId[contextUpdatedMsg.activity_id] = contextId;\r\n contextData.contextId = contextId;\r\n contextData.isAnnounced = true;\r\n contextData.activityId = contextUpdatedMsg.activity_id;\r\n contextData.joinedActivity = true;\r\n }\r\n else {\r\n if (!contextData || !contextData.isAnnounced) {\r\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n contextData = contextData || new GW3ContextData(contextId, contextUpdatedMsg.name, true, undefined);\r\n contextData.sentExplicitSubscription = true;\r\n this._contextNameToData[contextUpdatedMsg.name] = contextData;\r\n this._contextIdToName[contextId] = contextUpdatedMsg.name;\r\n this._contextNameToId[contextUpdatedMsg.name] = contextId;\r\n }\r\n else {\r\n this._logger.error(\"Received 'update' for unknown context: \".concat(contextId));\r\n }\r\n return;\r\n }\r\n }\r\n var oldContext = contextData.context;\r\n contextData.hasReceivedSnapshot = true;\r\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n contextData.context = contextUpdatedMsg.data || {};\r\n }\r\n else if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\r\n contextData.context = contextUpdatedMsg.context_snapshot || {};\r\n }\r\n else if (updatedMessageType === GW_MESSAGE_CONTEXT_UPDATED) {\r\n contextData.context = applyContextDelta(contextData.context, contextUpdatedMsg.delta, this._logger);\r\n }\r\n else {\r\n throw new Error(\"Unrecognized context update message \" + updatedMessageType);\r\n }\r\n if (justSeen ||\r\n !deepEqual(contextData.context, oldContext) ||\r\n updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n this.invokeUpdateCallbacks(contextData, contextUpdatedMsg.delta, { updaterId: contextUpdatedMsg.updater_id });\r\n }\r\n };\r\n GW3Bridge.prototype.invokeUpdateCallbacks = function (contextData, delta, extraData) {\r\n delta = delta || { added: {}, updated: {}, reset: {}, removed: [] };\r\n if (delta.commands) {\r\n delta.added = delta.updated = delta.reset = {};\r\n delta.removed = [];\r\n for (var _i = 0, _a = delta.commands; _i < _a.length; _i++) {\r\n var command = _a[_i];\r\n if (command.type === \"remove\") {\r\n if (command.path.indexOf(\".\") === -1) {\r\n delta.removed.push(command.path);\r\n }\r\n setValueToPath(delta.updated, null, command.path);\r\n }\r\n else if (command.type === \"set\") {\r\n setValueToPath(delta.updated, command.value, command.path);\r\n }\r\n }\r\n }\r\n for (var updateCallbackIndex in contextData.updateCallbacks) {\r\n if (contextData.updateCallbacks.hasOwnProperty(updateCallbackIndex)) {\r\n try {\r\n var updateCallback = contextData.updateCallbacks[updateCallbackIndex];\r\n updateCallback(deepClone(contextData.context), deepClone(Object.assign({}, delta.added || {}, delta.updated || {}, delta.reset || {})), delta.removed, parseInt(updateCallbackIndex, 10), extraData);\r\n }\r\n catch (err) {\r\n this._logger.debug(\"callback error: \" + JSON.stringify(err));\r\n }\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextDestroyedMessages = function () {\r\n var destroyedMessageTypes = [\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_ACTIVITY_DESTROYED,\r\n ];\r\n for (var _i = 0, destroyedMessageTypes_1 = destroyedMessageTypes; _i < destroyedMessageTypes_1.length; _i++) {\r\n var destroyedMessageType = destroyedMessageTypes_1[_i];\r\n var sub = this._connection.on(destroyedMessageType, this.handleContextDestroyedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextDestroyedMessage = function (destroyedMsg) {\r\n var destroyedMessageType = destroyedMsg.type;\r\n var contextId;\r\n var name;\r\n if (destroyedMessageType === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n name = destroyedMsg.activity_id;\r\n contextId = this._contextNameToId[name];\r\n if (!contextId) {\r\n this._logger.error(\"Received 'destroyed' for unknown activity: \".concat(destroyedMsg.activity_id));\r\n return;\r\n }\r\n }\r\n else {\r\n contextId = destroyedMsg.context_id;\r\n name = this._contextIdToName[contextId];\r\n if (!name) {\r\n this._logger.error(\"Received 'destroyed' for unknown context: \".concat(destroyedMsg.context_id));\r\n return;\r\n }\r\n }\r\n delete this._contextIdToName[contextId];\r\n delete this._contextNameToId[name];\r\n var contextData = this._contextNameToData[name];\r\n delete this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n this._logger.error(\"Received 'destroyed' for unknown context: \".concat(contextId));\r\n return;\r\n }\r\n };\r\n GW3Bridge.prototype.sendSubscribe = function (contextData) {\r\n contextData.sentExplicitSubscription = true;\r\n return this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_SUBSCRIBE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; });\r\n };\r\n GW3Bridge.prototype.sendUnsubscribe = function (contextData) {\r\n contextData.sentExplicitSubscription = false;\r\n return this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; });\r\n };\r\n GW3Bridge.prototype.calculateContextDeltaV1 = function (from, to) {\r\n var delta = { added: {}, updated: {}, removed: [], reset: undefined };\r\n if (from) {\r\n for (var _i = 0, _a = Object.keys(from); _i < _a.length; _i++) {\r\n var x = _a[_i];\r\n if (Object.keys(to).indexOf(x) !== -1\r\n && to[x] !== null\r\n && !deepEqual(from[x], to[x])) {\r\n delta.updated[x] = to[x];\r\n }\r\n }\r\n }\r\n for (var _b = 0, _c = Object.keys(to); _b < _c.length; _b++) {\r\n var x = _c[_b];\r\n if (!from || (Object.keys(from).indexOf(x) === -1)) {\r\n if (to[x] !== null) {\r\n delta.added[x] = to[x];\r\n }\r\n }\r\n else if (to[x] === null) {\r\n delta.removed.push(x);\r\n }\r\n }\r\n return delta;\r\n };\r\n GW3Bridge.prototype.calculateContextDeltaV2 = function (from, to) {\r\n var _a, _b;\r\n var delta = { added: {}, updated: {}, removed: [], reset: undefined, commands: [] };\r\n for (var _i = 0, _c = Object.keys(to); _i < _c.length; _i++) {\r\n var x = _c[_i];\r\n if (to[x] !== null) {\r\n var fromX = from ? from[x] : null;\r\n if (!deepEqual(fromX, to[x])) {\r\n (_a = delta.commands) === null || _a === void 0 ? void 0 : _a.push({ type: \"set\", path: x, value: to[x] });\r\n }\r\n }\r\n else {\r\n (_b = delta.commands) === null || _b === void 0 ? void 0 : _b.push({ type: \"remove\", path: x });\r\n }\r\n }\r\n return delta;\r\n };\r\n GW3Bridge.prototype.resetState = function () {\r\n var _this = this;\r\n for (var _i = 0, _a = this._gw3Subscriptions; _i < _a.length; _i++) {\r\n var sub = _a[_i];\r\n this._connection.off(sub);\r\n }\r\n if (this._systemContextsSubKey) {\r\n this.unsubscribe(this._systemContextsSubKey);\r\n delete this._systemContextsSubKey;\r\n }\r\n this._gw3Subscriptions = [];\r\n this._contextNameToId = {};\r\n this._contextIdToName = {};\r\n delete this._protocolVersion;\r\n this._contextsTempCache = Object.keys(this._contextNameToData).reduce(function (cacheSoFar, ctxName) {\r\n cacheSoFar[ctxName] = _this._contextNameToData[ctxName].context;\r\n return cacheSoFar;\r\n }, {});\r\n this._contextNameToData = {};\r\n };\r\n GW3Bridge.prototype.reInitiateState = function () {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _b, _c, _e, _i, ctxName, lastKnownData;\r\n var _this = this;\r\n return __generator(this, function (_f) {\r\n switch (_f.label) {\r\n case 0:\r\n this.subscribeToContextCreatedMessages();\r\n this.subscribeToContextUpdatedMessages();\r\n this.subscribeToContextDestroyedMessages();\r\n (_a = this._connection.replayer) === null || _a === void 0 ? void 0 : _a.drain(ContextMessageReplaySpec.name, function (message) {\r\n var type = message.type;\r\n if (!type) {\r\n return;\r\n }\r\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\r\n type === GW_MESSAGE_CONTEXT_ADDED ||\r\n type === GW_MESSAGE_ACTIVITY_CREATED) {\r\n _this.handleContextCreatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\r\n type === GW_MESSAGE_CONTEXT_UPDATED ||\r\n type === GW_MESSAGE_JOINED_ACTIVITY) {\r\n _this.handleContextUpdatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\r\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n _this.handleContextDestroyedMessage(message);\r\n }\r\n });\r\n return [4, Promise.all(this._contextsSubscriptionsCache.map(function (subscription) { return _this.subscribe(subscription.contextName, subscription.callback, subscription.subKey); }))];\r\n case 1:\r\n _f.sent();\r\n return [4, this.flushQueue()];\r\n case 2:\r\n _f.sent();\r\n _b = this._contextsTempCache;\r\n _c = [];\r\n for (_e in _b)\r\n _c.push(_e);\r\n _i = 0;\r\n _f.label = 3;\r\n case 3:\r\n if (!(_i < _c.length)) return [3, 7];\r\n _e = _c[_i];\r\n if (!(_e in _b)) return [3, 6];\r\n ctxName = _e;\r\n if (typeof this._contextsTempCache[ctxName] !== \"object\" || Object.keys(this._contextsTempCache[ctxName]).length === 0) {\r\n return [3, 6];\r\n }\r\n lastKnownData = this._contextsTempCache[ctxName];\r\n this._logger.info(\"Re-announcing known context: \".concat(ctxName));\r\n return [4, this.flushQueue()];\r\n case 4:\r\n _f.sent();\r\n return [4, this.update(ctxName, lastKnownData)];\r\n case 5:\r\n _f.sent();\r\n _f.label = 6;\r\n case 6:\r\n _i++;\r\n return [3, 3];\r\n case 7:\r\n this._contextsTempCache = {};\r\n this._logger.info(\"Contexts are re-announced\");\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.flushQueue = function () {\r\n return new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 0); });\r\n };\r\n return GW3Bridge;\r\n}());\n\nvar ContextsModule = (function () {\r\n function ContextsModule(config) {\r\n this._bridge = new GW3Bridge(config);\r\n }\r\n ContextsModule.prototype.all = function () {\r\n return this._bridge.all();\r\n };\r\n ContextsModule.prototype.update = function (name, data) {\r\n this.checkName(name);\r\n this.checkData(data);\r\n return this._bridge.update(name, data);\r\n };\r\n ContextsModule.prototype.set = function (name, data) {\r\n this.checkName(name);\r\n this.checkData(data);\r\n return this._bridge.set(name, data);\r\n };\r\n ContextsModule.prototype.setPath = function (name, path, data) {\r\n this.checkName(name);\r\n this.checkPath(path);\r\n var isTopLevelPath = path === \"\";\r\n if (isTopLevelPath) {\r\n this.checkData(data);\r\n return this.set(name, data);\r\n }\r\n return this._bridge.setPath(name, path, data);\r\n };\r\n ContextsModule.prototype.setPaths = function (name, paths) {\r\n this.checkName(name);\r\n if (!Array.isArray(paths)) {\r\n throw new Error(\"Please provide the paths as an array of PathValues!\");\r\n }\r\n for (var _i = 0, paths_1 = paths; _i < paths_1.length; _i++) {\r\n var _a = paths_1[_i], path = _a.path, value = _a.value;\r\n this.checkPath(path);\r\n var isTopLevelPath = path === \"\";\r\n if (isTopLevelPath) {\r\n this.checkData(value);\r\n }\r\n }\r\n return this._bridge.setPaths(name, paths);\r\n };\r\n ContextsModule.prototype.subscribe = function (name, callback) {\r\n var _this = this;\r\n this.checkName(name);\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Please provide the callback as a function!\");\r\n }\r\n return this._bridge\r\n .subscribe(name, function (data, delta, removed, key, extraData) { return callback(data, delta, removed, function () { return _this._bridge.unsubscribe(key); }, extraData); })\r\n .then(function (key) {\r\n return function () {\r\n _this._bridge.unsubscribe(key);\r\n };\r\n });\r\n };\r\n ContextsModule.prototype.get = function (name) {\r\n this.checkName(name);\r\n return this._bridge.get(name);\r\n };\r\n ContextsModule.prototype.ready = function () {\r\n return Promise.resolve(this);\r\n };\r\n ContextsModule.prototype.destroy = function (name) {\r\n this.checkName(name);\r\n return this._bridge.destroy(name);\r\n };\r\n Object.defineProperty(ContextsModule.prototype, \"setPathSupported\", {\r\n get: function () {\r\n return this._bridge.setPathSupported;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ContextsModule.prototype.checkName = function (name) {\r\n if (typeof name !== \"string\" || name === \"\") {\r\n throw new Error(\"Please provide the name as a non-empty string!\");\r\n }\r\n };\r\n ContextsModule.prototype.checkPath = function (path) {\r\n if (typeof path !== \"string\") {\r\n throw new Error(\"Please provide the path as a dot delimited string!\");\r\n }\r\n };\r\n ContextsModule.prototype.checkData = function (data) {\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Please provide the data as an object!\");\r\n }\r\n };\r\n return ContextsModule;\r\n}());\n\nfunction promisify (promise, successCallback, errorCallback) {\r\n if (typeof successCallback !== \"function\" && typeof errorCallback !== \"function\") {\r\n return promise;\r\n }\r\n if (typeof successCallback !== \"function\") {\r\n successCallback = function () { };\r\n }\r\n else if (typeof errorCallback !== \"function\") {\r\n errorCallback = function () { };\r\n }\r\n return promise.then(successCallback, errorCallback);\r\n}\n\nfunction rejectAfter(ms, promise, error) {\r\n if (ms === void 0) { ms = 0; }\r\n var timeout;\r\n var clearTimeoutIfThere = function () {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n }\r\n };\r\n promise\r\n .then(function () {\r\n clearTimeoutIfThere();\r\n })\r\n .catch(function () {\r\n clearTimeoutIfThere();\r\n });\r\n return new Promise(function (resolve, reject) {\r\n timeout = setTimeout(function () { return reject(error); }, ms);\r\n });\r\n}\n\nvar InvokeStatus;\r\n(function (InvokeStatus) {\r\n InvokeStatus[InvokeStatus[\"Success\"] = 0] = \"Success\";\r\n InvokeStatus[InvokeStatus[\"Error\"] = 1] = \"Error\";\r\n})(InvokeStatus || (InvokeStatus = {}));\r\nvar Client = (function () {\r\n function Client(protocol, repo, instance, configuration) {\r\n this.protocol = protocol;\r\n this.repo = repo;\r\n this.instance = instance;\r\n this.configuration = configuration;\r\n }\r\n Client.prototype.subscribe = function (method, options, successCallback, errorCallback, existingSub) {\r\n var _this = this;\r\n var callProtocolSubscribe = function (targetServers, stream, successProxy, errorProxy) {\r\n var _a;\r\n options.methodResponseTimeout = (_a = options.methodResponseTimeout) !== null && _a !== void 0 ? _a : options.waitTimeoutMs;\r\n _this.protocol.client.subscribe(stream, options, targetServers, successProxy, errorProxy, existingSub);\r\n };\r\n var promise = new Promise(function (resolve, reject) {\r\n var successProxy = function (sub) {\r\n resolve(sub);\r\n };\r\n var errorProxy = function (err) {\r\n reject(err);\r\n };\r\n if (!method) {\r\n reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\");\r\n return;\r\n }\r\n var methodDef;\r\n if (typeof method === \"string\") {\r\n methodDef = { name: method };\r\n }\r\n else {\r\n methodDef = method;\r\n }\r\n if (!methodDef.name) {\r\n reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\");\r\n return;\r\n }\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n var target = options.target;\r\n if (target === undefined) {\r\n target = \"best\";\r\n }\r\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\") {\r\n reject(new Error(\"\\\"\".concat(target, \"\\\" is not a valid target. Valid targets are \\\"all\\\", \\\"best\\\", or an instance.\")));\r\n return;\r\n }\r\n if (options.methodResponseTimeout === undefined) {\r\n options.methodResponseTimeout = options.method_response_timeout;\r\n if (options.methodResponseTimeout === undefined) {\r\n options.methodResponseTimeout = _this.configuration.methodResponseTimeout;\r\n }\r\n }\r\n if (options.waitTimeoutMs === undefined) {\r\n options.waitTimeoutMs = options.wait_for_method_timeout;\r\n if (options.waitTimeoutMs === undefined) {\r\n options.waitTimeoutMs = _this.configuration.waitTimeoutMs;\r\n }\r\n }\r\n var delayStep = 500;\r\n var delayTillNow = 0;\r\n var currentServers = _this.getServerMethodsByFilterAndTarget(methodDef, target);\r\n if (currentServers.length > 0) {\r\n callProtocolSubscribe(currentServers, currentServers[0].methods[0], successProxy, errorProxy);\r\n }\r\n else {\r\n var retry_1 = function () {\r\n if (!target || !(options.waitTimeoutMs)) {\r\n return;\r\n }\r\n delayTillNow += delayStep;\r\n currentServers = _this.getServerMethodsByFilterAndTarget(methodDef, target);\r\n if (currentServers.length > 0) {\r\n var streamInfo = currentServers[0].methods[0];\r\n callProtocolSubscribe(currentServers, streamInfo, successProxy, errorProxy);\r\n }\r\n else if (delayTillNow >= options.waitTimeoutMs) {\r\n var def = typeof method === \"string\" ? { name: method } : method;\r\n callProtocolSubscribe(currentServers, def, successProxy, errorProxy);\r\n }\r\n else {\r\n setTimeout(retry_1, delayStep);\r\n }\r\n };\r\n setTimeout(retry_1, delayStep);\r\n }\r\n });\r\n return promisify(promise, successCallback, errorCallback);\r\n };\r\n Client.prototype.servers = function (methodFilter) {\r\n var filterCopy = methodFilter === undefined\r\n ? undefined\r\n : __assign({}, methodFilter);\r\n return this.getServers(filterCopy).map(function (serverMethodMap) {\r\n return serverMethodMap.server.instance;\r\n });\r\n };\r\n Client.prototype.methods = function (methodFilter) {\r\n if (typeof methodFilter === \"string\") {\r\n methodFilter = { name: methodFilter };\r\n }\r\n else {\r\n methodFilter = __assign({}, methodFilter);\r\n }\r\n return this.getMethods(methodFilter);\r\n };\r\n Client.prototype.methodsForInstance = function (instance) {\r\n return this.getMethodsForInstance(instance);\r\n };\r\n Client.prototype.methodAdded = function (callback) {\r\n return this.repo.onMethodAdded(callback);\r\n };\r\n Client.prototype.methodRemoved = function (callback) {\r\n return this.repo.onMethodRemoved(callback);\r\n };\r\n Client.prototype.serverAdded = function (callback) {\r\n return this.repo.onServerAdded(callback);\r\n };\r\n Client.prototype.serverRemoved = function (callback) {\r\n return this.repo.onServerRemoved(function (server, reason) {\r\n callback(server, reason);\r\n });\r\n };\r\n Client.prototype.serverMethodAdded = function (callback) {\r\n return this.repo.onServerMethodAdded(function (server, method) {\r\n callback({ server: server, method: method });\r\n });\r\n };\r\n Client.prototype.serverMethodRemoved = function (callback) {\r\n return this.repo.onServerMethodRemoved(function (server, method) {\r\n callback({ server: server, method: method });\r\n });\r\n };\r\n Client.prototype.invoke = function (methodFilter, argumentObj, target, additionalOptions, success, error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var getInvokePromise;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n getInvokePromise = function () { return __awaiter(_this, void 0, void 0, function () {\r\n var methodDefinition, serversMethodMap, method, errorObj, timeout, additionalOptionsCopy, invokePromises, invocationMessages, results, allRejected;\r\n var _this = this;\r\n var _a, _b, _c;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n if (typeof methodFilter === \"string\") {\r\n methodDefinition = { name: methodFilter };\r\n }\r\n else {\r\n methodDefinition = __assign({}, methodFilter);\r\n }\r\n if (!methodDefinition.name) {\r\n return [2, Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\")];\r\n }\r\n if (!argumentObj) {\r\n argumentObj = {};\r\n }\r\n if (!target) {\r\n target = \"best\";\r\n }\r\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\" && target !== \"skipMine\") {\r\n return [2, Promise.reject(new Error(\"\\\"\".concat(target, \"\\\" is not a valid target. Valid targets are \\\"all\\\" and \\\"best\\\".\")))];\r\n }\r\n if (!additionalOptions) {\r\n additionalOptions = {};\r\n }\r\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\r\n additionalOptions.methodResponseTimeoutMs = additionalOptions.method_response_timeout;\r\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\r\n additionalOptions.methodResponseTimeoutMs = this.configuration.methodResponseTimeout;\r\n }\r\n }\r\n if (additionalOptions.waitTimeoutMs === undefined) {\r\n additionalOptions.waitTimeoutMs = additionalOptions.wait_for_method_timeout;\r\n if (additionalOptions.waitTimeoutMs === undefined) {\r\n additionalOptions.waitTimeoutMs = this.configuration.waitTimeoutMs;\r\n }\r\n }\r\n if (additionalOptions.waitTimeoutMs !== undefined && typeof additionalOptions.waitTimeoutMs !== \"number\") {\r\n return [2, Promise.reject(new Error(\"\\\"\".concat(additionalOptions.waitTimeoutMs, \"\\\" is not a valid number for \\\"waitTimeoutMs\\\" \")))];\r\n }\r\n if (typeof argumentObj !== \"object\") {\r\n return [2, Promise.reject(new Error(\"The method arguments must be an object. method: \".concat(methodDefinition.name)))];\r\n }\r\n serversMethodMap = this.getServerMethodsByFilterAndTarget(methodDefinition, target);\r\n if (!(serversMethodMap.length === 0)) return [3, 4];\r\n _d.label = 1;\r\n case 1:\r\n _d.trys.push([1, 3, , 4]);\r\n return [4, this.tryToAwaitForMethods(methodDefinition, target, additionalOptions)];\r\n case 2:\r\n serversMethodMap = _d.sent();\r\n return [3, 4];\r\n case 3:\r\n _d.sent();\r\n method = __assign(__assign({}, methodDefinition), { getServers: function () { return []; }, supportsStreaming: false, objectTypes: (_a = methodDefinition.objectTypes) !== null && _a !== void 0 ? _a : [], flags: (_c = (_b = methodDefinition.flags) === null || _b === void 0 ? void 0 : _b.metadata) !== null && _c !== void 0 ? _c : {} });\r\n errorObj = {\r\n method: method,\r\n called_with: argumentObj,\r\n message: \"Can not find a method matching \".concat(JSON.stringify(methodFilter), \" with server filter \").concat(JSON.stringify(target)),\r\n executed_by: undefined,\r\n returned: undefined,\r\n status: undefined,\r\n };\r\n return [2, Promise.reject(errorObj)];\r\n case 4:\r\n timeout = additionalOptions.methodResponseTimeoutMs;\r\n additionalOptionsCopy = additionalOptions;\r\n invokePromises = serversMethodMap.map(function (serversMethodPair) {\r\n var invId = shortid();\r\n var method = serversMethodPair.methods[0];\r\n var server = serversMethodPair.server;\r\n var invokePromise = _this.protocol.client.invoke(invId, method, argumentObj, server, additionalOptionsCopy);\r\n return Promise.race([\r\n invokePromise,\r\n rejectAfter(timeout, invokePromise, {\r\n invocationId: invId,\r\n message: \"Invocation timeout (\".concat(timeout, \" ms) reached for method name: \").concat(method === null || method === void 0 ? void 0 : method.name, \", target instance: \").concat(JSON.stringify(server.instance), \", options: \").concat(JSON.stringify(additionalOptionsCopy)),\r\n status: InvokeStatus.Error,\r\n })\r\n ]);\r\n });\r\n return [4, Promise.all(invokePromises)];\r\n case 5:\r\n invocationMessages = _d.sent();\r\n results = this.getInvocationResultObj(invocationMessages, methodDefinition, argumentObj);\r\n allRejected = invocationMessages.every(function (result) { return result.status === InvokeStatus.Error; });\r\n if (allRejected) {\r\n return [2, Promise.reject(results)];\r\n }\r\n return [2, results];\r\n }\r\n });\r\n }); };\r\n return [2, promisify(getInvokePromise(), success, error)];\r\n });\r\n });\r\n };\r\n Client.prototype.getInvocationResultObj = function (invocationResults, method, calledWith) {\r\n var all_return_values = invocationResults\r\n .filter(function (invokeMessage) { return invokeMessage.status === InvokeStatus.Success; })\r\n .reduce(function (allValues, currentValue) {\r\n allValues = __spreadArray(__spreadArray([], allValues, true), [\r\n {\r\n executed_by: currentValue.instance,\r\n returned: currentValue.result,\r\n called_with: calledWith,\r\n method: method,\r\n message: currentValue.message,\r\n status: currentValue.status,\r\n }\r\n ], false);\r\n return allValues;\r\n }, []);\r\n var all_errors = invocationResults\r\n .filter(function (invokeMessage) { return invokeMessage.status === InvokeStatus.Error; })\r\n .reduce(function (allErrors, currError) {\r\n allErrors = __spreadArray(__spreadArray([], allErrors, true), [\r\n {\r\n executed_by: currError.instance,\r\n called_with: calledWith,\r\n name: method.name,\r\n message: currError.message,\r\n }\r\n ], false);\r\n return allErrors;\r\n }, []);\r\n var invResult = invocationResults[0];\r\n var result = {\r\n method: method,\r\n called_with: calledWith,\r\n returned: invResult.result,\r\n executed_by: invResult.instance,\r\n all_return_values: all_return_values,\r\n all_errors: all_errors,\r\n message: invResult.message,\r\n status: invResult.status\r\n };\r\n return result;\r\n };\r\n Client.prototype.tryToAwaitForMethods = function (methodDefinition, target, additionalOptions) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n if (additionalOptions.waitTimeoutMs === 0) {\r\n reject();\r\n return;\r\n }\r\n var delayStep = 500;\r\n var delayTillNow = 0;\r\n var retry = function () {\r\n delayTillNow += delayStep;\r\n var serversMethodMap = _this.getServerMethodsByFilterAndTarget(methodDefinition, target);\r\n if (serversMethodMap.length > 0) {\r\n clearInterval(interval);\r\n resolve(serversMethodMap);\r\n }\r\n else if (delayTillNow >= (additionalOptions.waitTimeoutMs || 10000)) {\r\n clearInterval(interval);\r\n reject();\r\n return;\r\n }\r\n };\r\n var interval = setInterval(retry, delayStep);\r\n });\r\n };\r\n Client.prototype.filterByTarget = function (target, serverMethodMap) {\r\n var _this = this;\r\n if (typeof target === \"string\") {\r\n if (target === \"all\") {\r\n return __spreadArray([], serverMethodMap, true);\r\n }\r\n else if (target === \"best\") {\r\n var localMachine = serverMethodMap\r\n .find(function (s) { return s.server.instance.isLocal; });\r\n if (localMachine) {\r\n return [localMachine];\r\n }\r\n if (serverMethodMap[0] !== undefined) {\r\n return [serverMethodMap[0]];\r\n }\r\n }\r\n else if (target === \"skipMine\") {\r\n return serverMethodMap.filter(function (_a) {\r\n var server = _a.server;\r\n return server.instance.peerId !== _this.instance.peerId;\r\n });\r\n }\r\n }\r\n else {\r\n var targetArray = void 0;\r\n if (!Array.isArray(target)) {\r\n targetArray = [target];\r\n }\r\n else {\r\n targetArray = target;\r\n }\r\n var allServersMatching = targetArray.reduce(function (matches, filter) {\r\n var myMatches = serverMethodMap.filter(function (serverMethodPair) {\r\n return _this.instanceMatch(filter, serverMethodPair.server.instance);\r\n });\r\n return matches.concat(myMatches);\r\n }, []);\r\n return allServersMatching;\r\n }\r\n return [];\r\n };\r\n Client.prototype.instanceMatch = function (instanceFilter, instanceDefinition) {\r\n return this.containsProps(instanceFilter, instanceDefinition);\r\n };\r\n Client.prototype.methodMatch = function (methodFilter, methodDefinition) {\r\n return this.containsProps(methodFilter, methodDefinition);\r\n };\r\n Client.prototype.containsProps = function (filter, repoMethod) {\r\n var filterProps = Object.keys(filter)\r\n .filter(function (prop) {\r\n return filter[prop] !== undefined\r\n && filter[prop] !== null\r\n && typeof filter[prop] !== \"function\"\r\n && prop !== \"object_types\"\r\n && prop !== \"display_name\"\r\n && prop !== \"id\"\r\n && prop !== \"gatewayId\"\r\n && prop !== \"identifier\"\r\n && prop[0] !== \"_\";\r\n });\r\n return filterProps.every(function (prop) {\r\n var isMatch;\r\n var filterValue = filter[prop];\r\n var repoMethodValue = repoMethod[prop];\r\n switch (prop) {\r\n case \"objectTypes\":\r\n isMatch = (filterValue || []).every(function (filterValueEl) {\r\n return (repoMethodValue || []).includes(filterValueEl);\r\n });\r\n break;\r\n case \"flags\":\r\n isMatch = isSubset(repoMethodValue || {}, filterValue || {});\r\n break;\r\n default:\r\n isMatch = String(filterValue).toLowerCase() === String(repoMethodValue).toLowerCase();\r\n }\r\n return isMatch;\r\n });\r\n };\r\n Client.prototype.getMethods = function (methodFilter) {\r\n var _this = this;\r\n if (methodFilter === undefined) {\r\n return this.repo.getMethods();\r\n }\r\n var methods = this.repo.getMethods().filter(function (method) {\r\n return _this.methodMatch(methodFilter, method);\r\n });\r\n return methods;\r\n };\r\n Client.prototype.getMethodsForInstance = function (instanceFilter) {\r\n var _this = this;\r\n var allServers = this.repo.getServers();\r\n var matchingServers = allServers.filter(function (server) {\r\n return _this.instanceMatch(instanceFilter, server.instance);\r\n });\r\n if (matchingServers.length === 0) {\r\n return [];\r\n }\r\n var resultMethodsObject = {};\r\n if (matchingServers.length === 1) {\r\n resultMethodsObject = matchingServers[0].methods;\r\n }\r\n else {\r\n matchingServers.forEach(function (server) {\r\n Object.keys(server.methods).forEach(function (methodKey) {\r\n var method = server.methods[methodKey];\r\n resultMethodsObject[method.identifier] = method;\r\n });\r\n });\r\n }\r\n return Object.keys(resultMethodsObject)\r\n .map(function (key) {\r\n return resultMethodsObject[key];\r\n });\r\n };\r\n Client.prototype.getServers = function (methodFilter) {\r\n var _this = this;\r\n var servers = this.repo.getServers();\r\n if (methodFilter === undefined) {\r\n return servers.map(function (server) {\r\n return { server: server, methods: [] };\r\n });\r\n }\r\n return servers.reduce(function (prev, current) {\r\n var methodsForServer = Object.values(current.methods);\r\n var matchingMethods = methodsForServer.filter(function (method) {\r\n return _this.methodMatch(methodFilter, method);\r\n });\r\n if (matchingMethods.length > 0) {\r\n prev.push({ server: current, methods: matchingMethods });\r\n }\r\n return prev;\r\n }, []);\r\n };\r\n Client.prototype.getServerMethodsByFilterAndTarget = function (methodFilter, target) {\r\n var serversMethodMap = this.getServers(methodFilter);\r\n return this.filterByTarget(target, serversMethodMap);\r\n };\r\n return Client;\r\n}());\n\nvar ServerSubscription = (function () {\r\n function ServerSubscription(protocol, repoMethod, subscription) {\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n this.subscription = subscription;\r\n }\r\n Object.defineProperty(ServerSubscription.prototype, \"stream\", {\r\n get: function () {\r\n if (!this.repoMethod.stream) {\r\n throw new Error(\"no stream\");\r\n }\r\n return this.repoMethod.stream;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"arguments\", {\r\n get: function () { return this.subscription.arguments || {}; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"branchKey\", {\r\n get: function () { return this.subscription.branchKey; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"instance\", {\r\n get: function () {\r\n if (!this.subscription.instance) {\r\n throw new Error(\"no instance\");\r\n }\r\n return this.subscription.instance;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ServerSubscription.prototype.close = function () {\r\n this.protocol.server.closeSingleSubscription(this.repoMethod, this.subscription);\r\n };\r\n ServerSubscription.prototype.push = function (data) {\r\n this.protocol.server.pushDataToSingle(this.repoMethod, this.subscription, data);\r\n };\r\n return ServerSubscription;\r\n}());\n\nvar Request = (function () {\r\n function Request(protocol, repoMethod, requestContext) {\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n this.requestContext = requestContext;\r\n this.arguments = requestContext.arguments;\r\n this.instance = requestContext.instance;\r\n }\r\n Request.prototype.accept = function () {\r\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, \"\");\r\n };\r\n Request.prototype.acceptOnBranch = function (branch) {\r\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, branch);\r\n };\r\n Request.prototype.reject = function (reason) {\r\n this.protocol.server.rejectRequest(this.requestContext, this.repoMethod, reason);\r\n };\r\n return Request;\r\n}());\n\nvar ServerStreaming$1 = (function () {\r\n function ServerStreaming(protocol, server) {\r\n var _this = this;\r\n this.protocol = protocol;\r\n this.server = server;\r\n protocol.server.onSubRequest(function (rc, rm) { return _this.handleSubRequest(rc, rm); });\r\n protocol.server.onSubAdded(function (sub, rm) { return _this.handleSubAdded(sub, rm); });\r\n protocol.server.onSubRemoved(function (sub, rm) { return _this.handleSubRemoved(sub, rm); });\r\n }\r\n ServerStreaming.prototype.handleSubRequest = function (requestContext, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionRequestHandler === \"function\")) {\r\n return;\r\n }\r\n var request = new Request(this.protocol, repoMethod, requestContext);\r\n repoMethod.streamCallbacks.subscriptionRequestHandler(request);\r\n };\r\n ServerStreaming.prototype.handleSubAdded = function (subscription, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionAddedHandler === \"function\")) {\r\n return;\r\n }\r\n var sub = new ServerSubscription(this.protocol, repoMethod, subscription);\r\n repoMethod.streamCallbacks.subscriptionAddedHandler(sub);\r\n };\r\n ServerStreaming.prototype.handleSubRemoved = function (subscription, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionRemovedHandler === \"function\")) {\r\n return;\r\n }\r\n var sub = new ServerSubscription(this.protocol, repoMethod, subscription);\r\n repoMethod.streamCallbacks.subscriptionRemovedHandler(sub);\r\n };\r\n return ServerStreaming;\r\n}());\n\nvar ServerBranch = (function () {\r\n function ServerBranch(key, protocol, repoMethod) {\r\n this.key = key;\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n }\r\n ServerBranch.prototype.subscriptions = function () {\r\n var _this = this;\r\n var subList = this.protocol.server.getSubscriptionList(this.repoMethod, this.key);\r\n return subList.map(function (sub) {\r\n return new ServerSubscription(_this.protocol, _this.repoMethod, sub);\r\n });\r\n };\r\n ServerBranch.prototype.close = function () {\r\n this.protocol.server.closeAllSubscriptions(this.repoMethod, this.key);\r\n };\r\n ServerBranch.prototype.push = function (data) {\r\n this.protocol.server.pushData(this.repoMethod, data, [this.key]);\r\n };\r\n return ServerBranch;\r\n}());\n\nvar ServerStream = (function () {\r\n function ServerStream(_protocol, _repoMethod, _server) {\r\n this._protocol = _protocol;\r\n this._repoMethod = _repoMethod;\r\n this._server = _server;\r\n this.name = this._repoMethod.definition.name;\r\n }\r\n ServerStream.prototype.branches = function (key) {\r\n var _this = this;\r\n var bList = this._protocol.server.getBranchList(this._repoMethod);\r\n if (key) {\r\n if (bList.indexOf(key) > -1) {\r\n return new ServerBranch(key, this._protocol, this._repoMethod);\r\n }\r\n return undefined;\r\n }\r\n else {\r\n return bList.map(function (branchKey) {\r\n return new ServerBranch(branchKey, _this._protocol, _this._repoMethod);\r\n });\r\n }\r\n };\r\n ServerStream.prototype.branch = function (key) {\r\n return this.branches(key);\r\n };\r\n ServerStream.prototype.subscriptions = function () {\r\n var _this = this;\r\n var subList = this._protocol.server.getSubscriptionList(this._repoMethod);\r\n return subList.map(function (sub) {\r\n return new ServerSubscription(_this._protocol, _this._repoMethod, sub);\r\n });\r\n };\r\n Object.defineProperty(ServerStream.prototype, \"definition\", {\r\n get: function () {\r\n var _a;\r\n var def2 = this._repoMethod.definition;\r\n return {\r\n accepts: def2.accepts,\r\n description: def2.description,\r\n displayName: def2.displayName,\r\n name: def2.name,\r\n objectTypes: def2.objectTypes,\r\n returns: def2.returns,\r\n supportsStreaming: def2.supportsStreaming,\r\n flags: (_a = def2.flags) === null || _a === void 0 ? void 0 : _a.metadata,\r\n };\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ServerStream.prototype.close = function () {\r\n this._protocol.server.closeAllSubscriptions(this._repoMethod);\r\n this._server.unregister(this._repoMethod.definition, true);\r\n };\r\n ServerStream.prototype.push = function (data, branches) {\r\n if (typeof branches !== \"string\" && !Array.isArray(branches) && branches !== undefined) {\r\n throw new Error(\"invalid branches should be string or string array\");\r\n }\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n this._protocol.server.pushData(this._repoMethod, data, branches);\r\n };\r\n ServerStream.prototype.updateRepoMethod = function (repoMethod) {\r\n this._repoMethod = repoMethod;\r\n };\r\n return ServerStream;\r\n}());\n\nvar Server = (function () {\r\n function Server(protocol, serverRepository) {\r\n this.protocol = protocol;\r\n this.serverRepository = serverRepository;\r\n this.invocations = 0;\r\n this.currentlyUnregistering = {};\r\n this.streaming = new ServerStreaming$1(protocol, this);\r\n this.protocol.server.onInvoked(this.onMethodInvoked.bind(this));\r\n }\r\n Server.prototype.createStream = function (streamDef, callbacks, successCallback, errorCallback, existingStream) {\r\n var _this = this;\r\n var promise = new Promise(function (resolve, reject) {\r\n if (!streamDef) {\r\n reject(\"The stream name must be unique! Please, provide either a unique string for a stream name to “glue.interop.createStream()” or a “methodDefinition” object with a unique “name” property for the stream.\");\r\n return;\r\n }\r\n var streamMethodDefinition;\r\n if (typeof streamDef === \"string\") {\r\n streamMethodDefinition = { name: \"\" + streamDef };\r\n }\r\n else {\r\n streamMethodDefinition = __assign({}, streamDef);\r\n }\r\n if (!streamMethodDefinition.name) {\r\n return reject(\"The \\u201Cname\\u201D property is required for the \\u201CstreamDefinition\\u201D object and must be unique. Stream definition: \".concat(JSON.stringify(streamMethodDefinition)));\r\n }\r\n var nameAlreadyExists = _this.serverRepository.getList()\r\n .some(function (serverMethod) { return serverMethod.definition.name === streamMethodDefinition.name; });\r\n if (nameAlreadyExists) {\r\n return reject(\"A stream with the name \\\"\".concat(streamMethodDefinition.name, \"\\\" already exists! Please, provide a unique name for the stream.\"));\r\n }\r\n streamMethodDefinition.supportsStreaming = true;\r\n if (!callbacks) {\r\n callbacks = {};\r\n }\r\n if (typeof callbacks.subscriptionRequestHandler !== \"function\") {\r\n callbacks.subscriptionRequestHandler = function (request) {\r\n request.accept();\r\n };\r\n }\r\n var repoMethod = _this.serverRepository.add({\r\n definition: streamMethodDefinition,\r\n streamCallbacks: callbacks,\r\n protocolState: {},\r\n });\r\n _this.protocol.server.createStream(repoMethod)\r\n .then(function () {\r\n var streamUserObject;\r\n if (existingStream) {\r\n streamUserObject = existingStream;\r\n existingStream.updateRepoMethod(repoMethod);\r\n }\r\n else {\r\n streamUserObject = new ServerStream(_this.protocol, repoMethod, _this);\r\n }\r\n repoMethod.stream = streamUserObject;\r\n resolve(streamUserObject);\r\n })\r\n .catch(function (err) {\r\n if (repoMethod.repoId) {\r\n _this.serverRepository.remove(repoMethod.repoId);\r\n }\r\n reject(err);\r\n });\r\n });\r\n return promisify(promise, successCallback, errorCallback);\r\n };\r\n Server.prototype.register = function (methodDefinition, callback) {\r\n var _this = this;\r\n if (!methodDefinition) {\r\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\r\n }\r\n if (typeof callback !== \"function\") {\r\n return Promise.reject(\"The second parameter must be a callback function. Method: \".concat(typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name));\r\n }\r\n var wrappedCallbackFunction = function (context, resultCallback) { return __awaiter(_this, void 0, void 0, function () {\r\n var result, resultValue, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 4, , 5]);\r\n result = callback(context.args, context.instance);\r\n if (!(result && typeof result.then === \"function\")) return [3, 2];\r\n return [4, result];\r\n case 1:\r\n resultValue = _a.sent();\r\n resultCallback(undefined, resultValue);\r\n return [3, 3];\r\n case 2:\r\n resultCallback(undefined, result);\r\n _a.label = 3;\r\n case 3: return [3, 5];\r\n case 4:\r\n e_1 = _a.sent();\r\n resultCallback(e_1 !== null && e_1 !== void 0 ? e_1 : \"\", e_1 !== null && e_1 !== void 0 ? e_1 : \"\");\r\n return [3, 5];\r\n case 5: return [2];\r\n }\r\n });\r\n }); };\r\n wrappedCallbackFunction.userCallback = callback;\r\n return this.registerCore(methodDefinition, wrappedCallbackFunction);\r\n };\r\n Server.prototype.registerAsync = function (methodDefinition, callback) {\r\n var _this = this;\r\n if (!methodDefinition) {\r\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\r\n }\r\n if (typeof callback !== \"function\") {\r\n return Promise.reject(\"The second parameter must be a callback function. Method: \".concat(typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name));\r\n }\r\n var wrappedCallback = function (context, resultCallback) { return __awaiter(_this, void 0, void 0, function () {\r\n var resultCalled_1, success, error, methodResult;\r\n return __generator(this, function (_a) {\r\n try {\r\n resultCalled_1 = false;\r\n success = function (result) {\r\n if (!resultCalled_1) {\r\n resultCallback(undefined, result);\r\n }\r\n resultCalled_1 = true;\r\n };\r\n error = function (e) {\r\n if (!resultCalled_1) {\r\n if (!e) {\r\n e = \"\";\r\n }\r\n resultCallback(e, e);\r\n }\r\n resultCalled_1 = true;\r\n };\r\n methodResult = callback(context.args, context.instance, success, error);\r\n if (methodResult && typeof methodResult.then === \"function\") {\r\n methodResult\r\n .then(success)\r\n .catch(error);\r\n }\r\n }\r\n catch (e) {\r\n resultCallback(e, undefined);\r\n }\r\n return [2];\r\n });\r\n }); };\r\n wrappedCallback.userCallbackAsync = callback;\r\n return this.registerCore(methodDefinition, wrappedCallback);\r\n };\r\n Server.prototype.unregister = function (methodFilter, forStream) {\r\n if (forStream === void 0) { forStream = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodDefinition, methodToBeRemoved;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (methodFilter === undefined) {\r\n return [2, Promise.reject(\"Please, provide either a unique string for a name or an object containing a “name” property.\")];\r\n }\r\n if (!(typeof methodFilter === \"function\")) return [3, 2];\r\n return [4, this.unregisterWithPredicate(methodFilter, forStream)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n case 2:\r\n if (typeof methodFilter === \"string\") {\r\n methodDefinition = { name: methodFilter };\r\n }\r\n else {\r\n methodDefinition = methodFilter;\r\n }\r\n if (methodDefinition.name === undefined) {\r\n return [2, Promise.reject(\"Method name is required. Cannot find a method if the method name is undefined!\")];\r\n }\r\n methodToBeRemoved = this.serverRepository.getList().find(function (serverMethod) {\r\n return serverMethod.definition.name === methodDefinition.name\r\n && (serverMethod.definition.supportsStreaming || false) === forStream;\r\n });\r\n if (!methodToBeRemoved) {\r\n return [2, Promise.reject(\"Method with a name \\\"\".concat(methodDefinition.name, \"\\\" does not exist or is not registered by your application!\"))];\r\n }\r\n return [4, this.removeMethodsOrStreams([methodToBeRemoved])];\r\n case 3:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.unregisterWithPredicate = function (filterPredicate, forStream) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodsOrStreamsToRemove;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n methodsOrStreamsToRemove = this.serverRepository.getList()\r\n .filter(function (sm) { return filterPredicate(sm.definition); })\r\n .filter(function (serverMethod) {\r\n return (serverMethod.definition.supportsStreaming || false) === forStream;\r\n });\r\n if (!methodsOrStreamsToRemove || methodsOrStreamsToRemove.length === 0) {\r\n return [2, Promise.reject(\"Could not find a \".concat(forStream ? \"stream\" : \"method\", \" matching the specified condition!\"))];\r\n }\r\n return [4, this.removeMethodsOrStreams(methodsOrStreamsToRemove)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.removeMethodsOrStreams = function (methodsToRemove) {\r\n var _this = this;\r\n var methodUnregPromises = [];\r\n methodsToRemove.forEach(function (method) {\r\n var promise = _this.protocol.server.unregister(method)\r\n .then(function () {\r\n if (method.repoId) {\r\n _this.serverRepository.remove(method.repoId);\r\n }\r\n });\r\n methodUnregPromises.push(promise);\r\n _this.addAsCurrentlyUnregistering(method.definition.name, promise);\r\n });\r\n return Promise.all(methodUnregPromises);\r\n };\r\n Server.prototype.addAsCurrentlyUnregistering = function (methodName, promise) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var timeout;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n timeout = new Promise(function (resolve) { return setTimeout(resolve, 5000); });\r\n this.currentlyUnregistering[methodName] = Promise.race([promise, timeout]).then(function () {\r\n delete _this.currentlyUnregistering[methodName];\r\n });\r\n return [2];\r\n });\r\n });\r\n };\r\n Server.prototype.registerCore = function (method, theFunction) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodDefinition, unregisterInProgress, nameAlreadyExists, repoMethod;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (typeof method === \"string\") {\r\n methodDefinition = { name: \"\" + method };\r\n }\r\n else {\r\n methodDefinition = __assign({}, method);\r\n }\r\n if (!methodDefinition.name) {\r\n return [2, Promise.reject(\"Please, provide a (unique) string value for the \\u201Cname\\u201D property in the \\u201CmethodDefinition\\u201D object: \".concat(JSON.stringify(method)))];\r\n }\r\n unregisterInProgress = this.currentlyUnregistering[methodDefinition.name];\r\n if (!(typeof unregisterInProgress !== \"undefined\")) return [3, 2];\r\n return [4, unregisterInProgress];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n nameAlreadyExists = this.serverRepository.getList()\r\n .some(function (serverMethod) { return serverMethod.definition.name === methodDefinition.name; });\r\n if (nameAlreadyExists) {\r\n return [2, Promise.reject(\"A method with the name \\\"\".concat(methodDefinition.name, \"\\\" already exists! Please, provide a unique name for the method.\"))];\r\n }\r\n if (methodDefinition.supportsStreaming) {\r\n return [2, Promise.reject(\"When you create methods with \\u201Cglue.interop.register()\\u201D or \\u201Cglue.interop.registerAsync()\\u201D the property \\u201CsupportsStreaming\\u201D cannot be \\u201Ctrue\\u201D. If you want \\u201C\".concat(methodDefinition.name, \"\\u201D to be a stream, please use the \\u201Cglue.interop.createStream()\\u201D method.\"))];\r\n }\r\n repoMethod = this.serverRepository.add({\r\n definition: methodDefinition,\r\n theFunction: theFunction,\r\n protocolState: {},\r\n });\r\n return [2, this.protocol.server.register(repoMethod)\r\n .catch(function (err) {\r\n if (repoMethod === null || repoMethod === void 0 ? void 0 : repoMethod.repoId) {\r\n _this.serverRepository.remove(repoMethod.repoId);\r\n }\r\n throw err;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.onMethodInvoked = function (methodToExecute, invocationId, invocationArgs) {\r\n var _this = this;\r\n if (!methodToExecute || !methodToExecute.theFunction) {\r\n return;\r\n }\r\n methodToExecute.theFunction(invocationArgs, function (err, result) {\r\n if (err !== undefined && err !== null) {\r\n if (err.message && typeof err.message === \"string\") {\r\n err = err.message;\r\n }\r\n else if (typeof err !== \"string\") {\r\n try {\r\n err = JSON.stringify(err);\r\n }\r\n catch (unStrException) {\r\n err = \"un-stringifyable error in onMethodInvoked! Top level prop names: \".concat(Object.keys(err));\r\n }\r\n }\r\n }\r\n if (!result) {\r\n result = {};\r\n }\r\n else if (typeof result !== \"object\" || Array.isArray(result)) {\r\n result = { _value: result };\r\n }\r\n _this.protocol.server.methodInvocationResult(methodToExecute, invocationId, err, result);\r\n });\r\n };\r\n return Server;\r\n}());\n\nvar InstanceWrapper = (function () {\r\n function InstanceWrapper(API, instance, connection) {\r\n var _this = this;\r\n this.wrapped = {};\r\n this.wrapped.getMethods = function () {\r\n return API.methodsForInstance(this);\r\n };\r\n this.wrapped.getStreams = function () {\r\n return API.methodsForInstance(this).filter(function (m) { return m.supportsStreaming; });\r\n };\r\n if (instance) {\r\n this.refreshWrappedObject(instance);\r\n }\r\n if (connection) {\r\n connection.loggedIn(function () {\r\n _this.refresh(connection);\r\n });\r\n this.refresh(connection);\r\n }\r\n }\r\n InstanceWrapper.prototype.unwrap = function () {\r\n return this.wrapped;\r\n };\r\n InstanceWrapper.prototype.refresh = function (connection) {\r\n if (!connection) {\r\n return;\r\n }\r\n var resolvedIdentity = connection === null || connection === void 0 ? void 0 : connection.resolvedIdentity;\r\n var instance = Object.assign({}, resolvedIdentity !== null && resolvedIdentity !== void 0 ? resolvedIdentity : {}, { peerId: connection === null || connection === void 0 ? void 0 : connection.peerId });\r\n this.refreshWrappedObject(instance);\r\n };\r\n InstanceWrapper.prototype.refreshWrappedObject = function (resolvedIdentity) {\r\n var _this = this;\r\n var _a, _b, _c, _d;\r\n Object.keys(resolvedIdentity).forEach(function (key) {\r\n _this.wrapped[key] = resolvedIdentity[key];\r\n });\r\n this.wrapped.user = resolvedIdentity.user;\r\n this.wrapped.instance = resolvedIdentity.instance;\r\n this.wrapped.application = (_a = resolvedIdentity.application) !== null && _a !== void 0 ? _a : shortid();\r\n this.wrapped.applicationName = resolvedIdentity.applicationName;\r\n this.wrapped.pid = (_c = (_b = resolvedIdentity.pid) !== null && _b !== void 0 ? _b : resolvedIdentity.process) !== null && _c !== void 0 ? _c : Math.floor(Math.random() * 10000000000);\r\n this.wrapped.machine = resolvedIdentity.machine;\r\n this.wrapped.environment = resolvedIdentity.environment;\r\n this.wrapped.region = resolvedIdentity.region;\r\n this.wrapped.windowId = resolvedIdentity.windowId;\r\n this.wrapped.isLocal = (_d = resolvedIdentity.isLocal) !== null && _d !== void 0 ? _d : true;\r\n this.wrapped.api = resolvedIdentity.api;\r\n this.wrapped.service = resolvedIdentity.service;\r\n this.wrapped.peerId = resolvedIdentity.peerId;\r\n };\r\n return InstanceWrapper;\r\n}());\n\nvar hideMethodSystemFlags = function (method) {\r\n return __assign(__assign({}, method), { flags: method.flags.metadata || {} });\r\n};\r\nvar ClientRepository = (function () {\r\n function ClientRepository(logger, API) {\r\n this.logger = logger;\r\n this.API = API;\r\n this.servers = {};\r\n this.methodsCount = {};\r\n this.callbacks = lib$1();\r\n var peerId = this.API.instance.peerId;\r\n this.myServer = {\r\n id: peerId,\r\n methods: {},\r\n instance: this.API.instance,\r\n wrapper: this.API.unwrappedInstance,\r\n };\r\n this.servers[peerId] = this.myServer;\r\n }\r\n ClientRepository.prototype.addServer = function (info, serverId) {\r\n this.logger.debug(\"adding server \".concat(serverId));\r\n var current = this.servers[serverId];\r\n if (current) {\r\n return current.id;\r\n }\r\n var wrapper = new InstanceWrapper(this.API, info);\r\n var serverEntry = {\r\n id: serverId,\r\n methods: {},\r\n instance: wrapper.unwrap(),\r\n wrapper: wrapper,\r\n };\r\n this.servers[serverId] = serverEntry;\r\n this.callbacks.execute(\"onServerAdded\", serverEntry.instance);\r\n return serverId;\r\n };\r\n ClientRepository.prototype.removeServerById = function (id, reason) {\r\n var _this = this;\r\n var server = this.servers[id];\r\n if (!server) {\r\n this.logger.warn(\"not aware of server \".concat(id, \", my state \").concat(JSON.stringify(Object.keys(this.servers))));\r\n return;\r\n }\r\n else {\r\n this.logger.debug(\"removing server \".concat(id));\r\n }\r\n Object.keys(server.methods).forEach(function (methodId) {\r\n _this.removeServerMethod(id, methodId);\r\n });\r\n delete this.servers[id];\r\n this.callbacks.execute(\"onServerRemoved\", server.instance, reason);\r\n };\r\n ClientRepository.prototype.addServerMethod = function (serverId, method) {\r\n var _a;\r\n var server = this.servers[serverId];\r\n if (!server) {\r\n throw new Error(\"server does not exists\");\r\n }\r\n if (server.methods[method.id]) {\r\n return;\r\n }\r\n var identifier = this.createMethodIdentifier(method);\r\n var that = this;\r\n var methodDefinition = {\r\n identifier: identifier,\r\n gatewayId: method.id,\r\n name: method.name,\r\n displayName: method.display_name,\r\n description: method.description,\r\n version: method.version,\r\n objectTypes: method.object_types || [],\r\n accepts: method.input_signature,\r\n returns: method.result_signature,\r\n supportsStreaming: typeof method.flags !== \"undefined\" ? method.flags.streaming : false,\r\n flags: (_a = method.flags) !== null && _a !== void 0 ? _a : {},\r\n getServers: function () {\r\n return that.getServersByMethod(identifier);\r\n }\r\n };\r\n methodDefinition.object_types = methodDefinition.objectTypes;\r\n methodDefinition.display_name = methodDefinition.displayName;\r\n methodDefinition.version = methodDefinition.version;\r\n server.methods[method.id] = methodDefinition;\r\n var clientMethodDefinition = hideMethodSystemFlags(methodDefinition);\r\n if (!this.methodsCount[identifier]) {\r\n this.methodsCount[identifier] = 0;\r\n this.callbacks.execute(\"onMethodAdded\", clientMethodDefinition);\r\n }\r\n this.methodsCount[identifier] = this.methodsCount[identifier] + 1;\r\n this.callbacks.execute(\"onServerMethodAdded\", server.instance, clientMethodDefinition);\r\n return methodDefinition;\r\n };\r\n ClientRepository.prototype.removeServerMethod = function (serverId, methodId) {\r\n var server = this.servers[serverId];\r\n if (!server) {\r\n throw new Error(\"server does not exists\");\r\n }\r\n var method = server.methods[methodId];\r\n delete server.methods[methodId];\r\n var clientMethodDefinition = hideMethodSystemFlags(method);\r\n this.methodsCount[method.identifier] = this.methodsCount[method.identifier] - 1;\r\n if (this.methodsCount[method.identifier] === 0) {\r\n this.callbacks.execute(\"onMethodRemoved\", clientMethodDefinition);\r\n }\r\n this.callbacks.execute(\"onServerMethodRemoved\", server.instance, clientMethodDefinition);\r\n };\r\n ClientRepository.prototype.getMethods = function () {\r\n return this.extractMethodsFromServers(Object.values(this.servers)).map(hideMethodSystemFlags);\r\n };\r\n ClientRepository.prototype.getServers = function () {\r\n return Object.values(this.servers).map(this.hideServerMethodSystemFlags);\r\n };\r\n ClientRepository.prototype.onServerAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerAdded\", callback);\r\n var serversWithMethodsToReplay = this.getServers().map(function (s) { return s.instance; });\r\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, serversWithMethodsToReplay, callback);\r\n };\r\n ClientRepository.prototype.onMethodAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onMethodAdded\", callback);\r\n var methodsToReplay = this.getMethods();\r\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, methodsToReplay, callback);\r\n };\r\n ClientRepository.prototype.onServerMethodAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerMethodAdded\", callback);\r\n var unsubCalled = false;\r\n var servers = this.getServers();\r\n setTimeout(function () {\r\n servers.forEach(function (server) {\r\n var methods = server.methods;\r\n Object.keys(methods).forEach(function (methodId) {\r\n if (!unsubCalled) {\r\n callback(server.instance, methods[methodId]);\r\n }\r\n });\r\n });\r\n }, 0);\r\n return function () {\r\n unsubCalled = true;\r\n unsubscribeFunc();\r\n };\r\n };\r\n ClientRepository.prototype.onMethodRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onMethodRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.onServerRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.onServerMethodRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerMethodRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.getServerById = function (id) {\r\n return this.hideServerMethodSystemFlags(this.servers[id]);\r\n };\r\n ClientRepository.prototype.reset = function () {\r\n var _a;\r\n var _this = this;\r\n Object.keys(this.servers).forEach(function (key) {\r\n _this.removeServerById(key, \"reset\");\r\n });\r\n this.servers = (_a = {},\r\n _a[this.myServer.id] = this.myServer,\r\n _a);\r\n this.methodsCount = {};\r\n };\r\n ClientRepository.prototype.createMethodIdentifier = function (methodInfo) {\r\n var _a, _b;\r\n var accepts = (_a = methodInfo.input_signature) !== null && _a !== void 0 ? _a : \"\";\r\n var returns = (_b = methodInfo.result_signature) !== null && _b !== void 0 ? _b : \"\";\r\n return (methodInfo.name + accepts + returns).toLowerCase();\r\n };\r\n ClientRepository.prototype.getServersByMethod = function (identifier) {\r\n var allServers = [];\r\n Object.values(this.servers).forEach(function (server) {\r\n Object.values(server.methods).forEach(function (method) {\r\n if (method.identifier === identifier) {\r\n allServers.push(server.instance);\r\n }\r\n });\r\n });\r\n return allServers;\r\n };\r\n ClientRepository.prototype.returnUnsubWithDelayedReplay = function (unsubscribeFunc, collectionToReplay, callback) {\r\n var unsubCalled = false;\r\n setTimeout(function () {\r\n collectionToReplay.forEach(function (item) {\r\n if (!unsubCalled) {\r\n callback(item);\r\n }\r\n });\r\n }, 0);\r\n return function () {\r\n unsubCalled = true;\r\n unsubscribeFunc();\r\n };\r\n };\r\n ClientRepository.prototype.hideServerMethodSystemFlags = function (server) {\r\n var clientMethods = {};\r\n Object.entries(server.methods).forEach(function (_a) {\r\n var name = _a[0], method = _a[1];\r\n clientMethods[name] = hideMethodSystemFlags(method);\r\n });\r\n return __assign(__assign({}, server), { methods: clientMethods });\r\n };\r\n ClientRepository.prototype.extractMethodsFromServers = function (servers) {\r\n var methods = Object.values(servers).reduce(function (clientMethods, server) {\r\n return __spreadArray(__spreadArray([], clientMethods, true), Object.values(server.methods), true);\r\n }, []);\r\n return methods;\r\n };\r\n return ClientRepository;\r\n}());\n\nvar ServerRepository = (function () {\r\n function ServerRepository() {\r\n this.nextId = 0;\r\n this.methods = [];\r\n }\r\n ServerRepository.prototype.add = function (method) {\r\n method.repoId = String(this.nextId);\r\n this.nextId += 1;\r\n this.methods.push(method);\r\n return method;\r\n };\r\n ServerRepository.prototype.remove = function (repoId) {\r\n if (typeof repoId !== \"string\") {\r\n return new TypeError(\"Expecting a string\");\r\n }\r\n this.methods = this.methods.filter(function (m) {\r\n return m.repoId !== repoId;\r\n });\r\n };\r\n ServerRepository.prototype.getById = function (id) {\r\n if (typeof id !== \"string\") {\r\n return undefined;\r\n }\r\n return this.methods.find(function (m) {\r\n return m.repoId === id;\r\n });\r\n };\r\n ServerRepository.prototype.getList = function () {\r\n return this.methods.map(function (m) { return m; });\r\n };\r\n ServerRepository.prototype.length = function () {\r\n return this.methods.length;\r\n };\r\n ServerRepository.prototype.reset = function () {\r\n this.methods = [];\r\n };\r\n return ServerRepository;\r\n}());\n\nvar SUBSCRIPTION_REQUEST = \"onSubscriptionRequest\";\r\nvar SUBSCRIPTION_ADDED = \"onSubscriptionAdded\";\r\nvar SUBSCRIPTION_REMOVED = \"onSubscriptionRemoved\";\r\nvar ServerStreaming = (function () {\r\n function ServerStreaming(session, repository, serverRepository) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.serverRepository = serverRepository;\r\n this.ERR_URI_SUBSCRIPTION_FAILED = \"com.tick42.agm.errors.subscription.failure\";\r\n this.callbacks = lib$1();\r\n this.nextStreamId = 0;\r\n session.on(\"add-interest\", function (msg) {\r\n _this.handleAddInterest(msg);\r\n });\r\n session.on(\"remove-interest\", function (msg) {\r\n _this.handleRemoveInterest(msg);\r\n });\r\n }\r\n ServerStreaming.prototype.acceptRequestOnBranch = function (requestContext, streamingMethod, branch) {\r\n if (typeof branch !== \"string\") {\r\n branch = \"\";\r\n }\r\n if (typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\r\n throw new TypeError(\"The streaming method is missing its subscriptions.\");\r\n }\r\n if (!Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\r\n throw new TypeError(\"The streaming method is missing its branches.\");\r\n }\r\n var streamId = this.getStreamId(streamingMethod, branch);\r\n var key = requestContext.msg.subscription_id;\r\n var subscription = {\r\n id: key,\r\n arguments: requestContext.arguments,\r\n instance: requestContext.instance,\r\n branchKey: branch,\r\n streamId: streamId,\r\n subscribeMsg: requestContext.msg,\r\n };\r\n streamingMethod.protocolState.subscriptionsMap[key] = subscription;\r\n this.session.sendFireAndForget({\r\n type: \"accepted\",\r\n subscription_id: key,\r\n stream_id: streamId,\r\n });\r\n this.callbacks.execute(SUBSCRIPTION_ADDED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.rejectRequest = function (requestContext, streamingMethod, reason) {\r\n if (typeof reason !== \"string\") {\r\n reason = \"\";\r\n }\r\n this.sendSubscriptionFailed(\"Subscription rejected by user. \" + reason, requestContext.msg.subscription_id);\r\n };\r\n ServerStreaming.prototype.pushData = function (streamingMethod, data, branches) {\r\n var _this = this;\r\n if (typeof streamingMethod !== \"object\" || !Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\r\n return;\r\n }\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n if (typeof branches === \"string\") {\r\n branches = [branches];\r\n }\r\n else if (!Array.isArray(branches) || branches.length <= 0) {\r\n branches = [];\r\n }\r\n var streamIdList = streamingMethod.protocolState.branchKeyToStreamIdMap\r\n .filter(function (br) {\r\n if (!branches || branches.length === 0) {\r\n return true;\r\n }\r\n return branches.indexOf(br.key) >= 0;\r\n }).map(function (br) {\r\n return br.streamId;\r\n });\r\n streamIdList.forEach(function (streamId) {\r\n var publishMessage = {\r\n type: \"publish\",\r\n stream_id: streamId,\r\n data: data,\r\n };\r\n _this.session.sendFireAndForget(publishMessage);\r\n });\r\n };\r\n ServerStreaming.prototype.pushDataToSingle = function (method, subscription, data) {\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n var postMessage = {\r\n type: \"post\",\r\n subscription_id: subscription.id,\r\n data: data,\r\n };\r\n this.session.sendFireAndForget(postMessage);\r\n };\r\n ServerStreaming.prototype.closeSingleSubscription = function (streamingMethod, subscription) {\r\n if (streamingMethod.protocolState.subscriptionsMap) {\r\n delete streamingMethod.protocolState.subscriptionsMap[subscription.id];\r\n }\r\n var dropSubscriptionMessage = {\r\n type: \"drop-subscription\",\r\n subscription_id: subscription.id,\r\n reason: \"Server dropping a single subscription\",\r\n };\r\n this.session.sendFireAndForget(dropSubscriptionMessage);\r\n subscription.instance;\r\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.closeMultipleSubscriptions = function (streamingMethod, branchKey) {\r\n var _this = this;\r\n if (typeof streamingMethod !== \"object\" || typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\r\n return;\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return;\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var subscriptionsToClose = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n if (typeof branchKey === \"string\") {\r\n subscriptionsToClose = subscriptionsToClose.filter(function (sub) {\r\n return sub.branchKey === branchKey;\r\n });\r\n }\r\n subscriptionsToClose.forEach(function (subscription) {\r\n delete subscriptionsMap[subscription.id];\r\n var drop = {\r\n type: \"drop-subscription\",\r\n subscription_id: subscription.id,\r\n reason: \"Server dropping all subscriptions on stream_id: \" + subscription.streamId,\r\n };\r\n _this.session.sendFireAndForget(drop);\r\n });\r\n };\r\n ServerStreaming.prototype.getSubscriptionList = function (streamingMethod, branchKey) {\r\n if (typeof streamingMethod !== \"object\") {\r\n return [];\r\n }\r\n var subscriptions = [];\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return [];\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var allSubscriptions = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n if (typeof branchKey !== \"string\") {\r\n subscriptions = allSubscriptions;\r\n }\r\n else {\r\n subscriptions = allSubscriptions.filter(function (sub) {\r\n return sub.branchKey === branchKey;\r\n });\r\n }\r\n return subscriptions;\r\n };\r\n ServerStreaming.prototype.getBranchList = function (streamingMethod) {\r\n if (typeof streamingMethod !== \"object\") {\r\n return [];\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return [];\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var allSubscriptions = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n var result = [];\r\n allSubscriptions.forEach(function (sub) {\r\n var branch = \"\";\r\n if (typeof sub === \"object\" && typeof sub.branchKey === \"string\") {\r\n branch = sub.branchKey;\r\n }\r\n if (result.indexOf(branch) === -1) {\r\n result.push(branch);\r\n }\r\n });\r\n return result;\r\n };\r\n ServerStreaming.prototype.onSubAdded = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_ADDED, callback);\r\n };\r\n ServerStreaming.prototype.onSubRequest = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REQUEST, callback);\r\n };\r\n ServerStreaming.prototype.onSubRemoved = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REMOVED, callback);\r\n };\r\n ServerStreaming.prototype.handleRemoveInterest = function (msg) {\r\n var streamingMethod = this.serverRepository.getById(msg.method_id);\r\n if (typeof msg.subscription_id !== \"string\" ||\r\n typeof streamingMethod !== \"object\") {\r\n return;\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return;\r\n }\r\n if (typeof streamingMethod.protocolState.subscriptionsMap[msg.subscription_id] !== \"object\") {\r\n return;\r\n }\r\n var subscription = streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\r\n delete streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\r\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.onSubscriptionLifetimeEvent = function (eventName, handlerFunc) {\r\n this.callbacks.add(eventName, handlerFunc);\r\n };\r\n ServerStreaming.prototype.getNextStreamId = function () {\r\n return this.nextStreamId++ + \"\";\r\n };\r\n ServerStreaming.prototype.handleAddInterest = function (msg) {\r\n var caller = this.repository.getServerById(msg.caller_id);\r\n var instance = caller.instance;\r\n var requestContext = {\r\n msg: msg,\r\n arguments: msg.arguments_kv || {},\r\n instance: instance,\r\n };\r\n var streamingMethod = this.serverRepository.getById(msg.method_id);\r\n if (streamingMethod === undefined) {\r\n var errorMsg = \"No method with id \" + msg.method_id + \" on this server.\";\r\n this.sendSubscriptionFailed(errorMsg, msg.subscription_id);\r\n return;\r\n }\r\n if (streamingMethod.protocolState.subscriptionsMap &&\r\n streamingMethod.protocolState.subscriptionsMap[msg.subscription_id]) {\r\n this.sendSubscriptionFailed(\"A subscription with id \" + msg.subscription_id + \" already exists.\", msg.subscription_id);\r\n return;\r\n }\r\n this.callbacks.execute(SUBSCRIPTION_REQUEST, requestContext, streamingMethod);\r\n };\r\n ServerStreaming.prototype.sendSubscriptionFailed = function (reason, subscriptionId) {\r\n var errorMessage = {\r\n type: \"error\",\r\n reason_uri: this.ERR_URI_SUBSCRIPTION_FAILED,\r\n reason: reason,\r\n request_id: subscriptionId,\r\n };\r\n this.session.sendFireAndForget(errorMessage);\r\n };\r\n ServerStreaming.prototype.getStreamId = function (streamingMethod, branchKey) {\r\n if (typeof branchKey !== \"string\") {\r\n branchKey = \"\";\r\n }\r\n if (!streamingMethod.protocolState.branchKeyToStreamIdMap) {\r\n throw new Error(\"streaming \".concat(streamingMethod.definition.name, \" method without protocol state\"));\r\n }\r\n var needleBranch = streamingMethod.protocolState.branchKeyToStreamIdMap.filter(function (branch) {\r\n return branch.key === branchKey;\r\n })[0];\r\n var streamId = (needleBranch ? needleBranch.streamId : undefined);\r\n if (typeof streamId !== \"string\" || streamId === \"\") {\r\n streamId = this.getNextStreamId();\r\n streamingMethod.protocolState.branchKeyToStreamIdMap.push({ key: branchKey, streamId: streamId });\r\n }\r\n return streamId;\r\n };\r\n return ServerStreaming;\r\n}());\n\nvar ServerProtocol = (function () {\r\n function ServerProtocol(session, clientRepository, serverRepository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.clientRepository = clientRepository;\r\n this.serverRepository = serverRepository;\r\n this.logger = logger;\r\n this.callbacks = lib$1();\r\n this.streaming = new ServerStreaming(session, clientRepository, serverRepository);\r\n this.session.on(\"invoke\", function (msg) { return _this.handleInvokeMessage(msg); });\r\n }\r\n ServerProtocol.prototype.createStream = function (repoMethod) {\r\n repoMethod.protocolState.subscriptionsMap = {};\r\n repoMethod.protocolState.branchKeyToStreamIdMap = [];\r\n return this.register(repoMethod, true);\r\n };\r\n ServerProtocol.prototype.register = function (repoMethod, isStreaming) {\r\n var _this = this;\r\n var _a;\r\n var methodDef = repoMethod.definition;\r\n var flags = Object.assign({}, { metadata: (_a = methodDef.flags) !== null && _a !== void 0 ? _a : {} }, { streaming: isStreaming || false });\r\n var registerMsg = {\r\n type: \"register\",\r\n methods: [{\r\n id: repoMethod.repoId,\r\n name: methodDef.name,\r\n display_name: methodDef.displayName,\r\n description: methodDef.description,\r\n version: methodDef.version,\r\n flags: flags,\r\n object_types: methodDef.objectTypes || methodDef.object_types,\r\n input_signature: methodDef.accepts,\r\n result_signature: methodDef.returns,\r\n restrictions: undefined,\r\n }],\r\n };\r\n return this.session.send(registerMsg, { methodId: repoMethod.repoId })\r\n .then(function () {\r\n _this.logger.debug(\"registered method \" + repoMethod.definition.name + \" with id \" + repoMethod.repoId);\r\n })\r\n .catch(function (msg) {\r\n _this.logger.warn(\"failed to register method \".concat(repoMethod.definition.name, \" with id \").concat(repoMethod.repoId, \" - \").concat(JSON.stringify(msg)));\r\n throw msg;\r\n });\r\n };\r\n ServerProtocol.prototype.onInvoked = function (callback) {\r\n this.callbacks.add(\"onInvoked\", callback);\r\n };\r\n ServerProtocol.prototype.methodInvocationResult = function (method, invocationId, err, result) {\r\n var msg;\r\n if (err || err === \"\") {\r\n msg = {\r\n type: \"error\",\r\n request_id: invocationId,\r\n reason_uri: \"agm.errors.client_error\",\r\n reason: err,\r\n context: result,\r\n peer_id: undefined,\r\n };\r\n }\r\n else {\r\n msg = {\r\n type: \"yield\",\r\n invocation_id: invocationId,\r\n peer_id: this.session.peerId,\r\n result: result,\r\n request_id: undefined,\r\n };\r\n }\r\n this.session.sendFireAndForget(msg);\r\n };\r\n ServerProtocol.prototype.unregister = function (method) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var msg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n msg = {\r\n type: \"unregister\",\r\n methods: [method.repoId],\r\n };\r\n return [4, this.session.send(msg)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n ServerProtocol.prototype.getBranchList = function (method) {\r\n return this.streaming.getBranchList(method);\r\n };\r\n ServerProtocol.prototype.getSubscriptionList = function (method, branchKey) {\r\n return this.streaming.getSubscriptionList(method, branchKey);\r\n };\r\n ServerProtocol.prototype.closeAllSubscriptions = function (method, branchKey) {\r\n this.streaming.closeMultipleSubscriptions(method, branchKey);\r\n };\r\n ServerProtocol.prototype.pushData = function (method, data, branches) {\r\n this.streaming.pushData(method, data, branches);\r\n };\r\n ServerProtocol.prototype.pushDataToSingle = function (method, subscription, data) {\r\n this.streaming.pushDataToSingle(method, subscription, data);\r\n };\r\n ServerProtocol.prototype.closeSingleSubscription = function (method, subscription) {\r\n this.streaming.closeSingleSubscription(method, subscription);\r\n };\r\n ServerProtocol.prototype.acceptRequestOnBranch = function (requestContext, method, branch) {\r\n this.streaming.acceptRequestOnBranch(requestContext, method, branch);\r\n };\r\n ServerProtocol.prototype.rejectRequest = function (requestContext, method, reason) {\r\n this.streaming.rejectRequest(requestContext, method, reason);\r\n };\r\n ServerProtocol.prototype.onSubRequest = function (callback) {\r\n this.streaming.onSubRequest(callback);\r\n };\r\n ServerProtocol.prototype.onSubAdded = function (callback) {\r\n this.streaming.onSubAdded(callback);\r\n };\r\n ServerProtocol.prototype.onSubRemoved = function (callback) {\r\n this.streaming.onSubRemoved(callback);\r\n };\r\n ServerProtocol.prototype.handleInvokeMessage = function (msg) {\r\n var invocationId = msg.invocation_id;\r\n var callerId = msg.caller_id;\r\n var methodId = msg.method_id;\r\n var args = msg.arguments_kv;\r\n var methodList = this.serverRepository.getList();\r\n var method = methodList.filter(function (m) {\r\n return m.repoId === methodId;\r\n })[0];\r\n if (method === undefined) {\r\n return;\r\n }\r\n var client = this.clientRepository.getServerById(callerId).instance;\r\n var invocationArgs = { args: args, instance: client };\r\n this.callbacks.execute(\"onInvoked\", method, invocationId, invocationArgs);\r\n };\r\n return ServerProtocol;\r\n}());\n\nvar UserSubscription = (function () {\r\n function UserSubscription(repository, subscriptionData) {\r\n this.repository = repository;\r\n this.subscriptionData = subscriptionData;\r\n }\r\n Object.defineProperty(UserSubscription.prototype, \"requestArguments\", {\r\n get: function () {\r\n return this.subscriptionData.params.arguments || {};\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"servers\", {\r\n get: function () {\r\n var _this = this;\r\n return this.subscriptionData.trackedServers\r\n .filter(function (pair) { return pair.subscriptionId; })\r\n .map(function (pair) { return _this.repository.getServerById(pair.serverId).instance; });\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"serverInstance\", {\r\n get: function () {\r\n return this.servers[0];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"stream\", {\r\n get: function () {\r\n return this.subscriptionData.method;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n UserSubscription.prototype.onData = function (dataCallback) {\r\n if (typeof dataCallback !== \"function\") {\r\n throw new TypeError(\"The data callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onData.push(dataCallback);\r\n if (this.subscriptionData.handlers.onData.length === 1 && this.subscriptionData.queued.data.length > 0) {\r\n this.subscriptionData.queued.data.forEach(function (dataItem) {\r\n dataCallback(dataItem);\r\n });\r\n }\r\n };\r\n UserSubscription.prototype.onClosed = function (closedCallback) {\r\n if (typeof closedCallback !== \"function\") {\r\n throw new TypeError(\"The callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onClosed.push(closedCallback);\r\n };\r\n UserSubscription.prototype.onFailed = function (callback) {\r\n };\r\n UserSubscription.prototype.onConnected = function (callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new TypeError(\"The callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onConnected.push(callback);\r\n };\r\n UserSubscription.prototype.close = function () {\r\n this.subscriptionData.close();\r\n };\r\n UserSubscription.prototype.setNewSubscription = function (newSub) {\r\n this.subscriptionData = newSub;\r\n };\r\n return UserSubscription;\r\n}());\n\nvar TimedCache = (function () {\r\n function TimedCache(config) {\r\n this.config = config;\r\n this.cache = [];\r\n this.timeoutIds = [];\r\n }\r\n TimedCache.prototype.add = function (element) {\r\n var _this = this;\r\n var id = shortid();\r\n this.cache.push({ id: id, element: element });\r\n var timeoutId = setTimeout(function () {\r\n var elementIdx = _this.cache.findIndex(function (entry) { return entry.id === id; });\r\n if (elementIdx < 0) {\r\n return;\r\n }\r\n _this.cache.splice(elementIdx, 1);\r\n }, this.config.ELEMENT_TTL_MS);\r\n this.timeoutIds.push(timeoutId);\r\n };\r\n TimedCache.prototype.flush = function () {\r\n var elements = this.cache.map(function (entry) { return entry.element; });\r\n this.timeoutIds.forEach(function (id) { return clearInterval(id); });\r\n this.cache = [];\r\n this.timeoutIds = [];\r\n return elements;\r\n };\r\n return TimedCache;\r\n}());\n\nvar STATUS_AWAITING_ACCEPT = \"awaitingAccept\";\r\nvar STATUS_SUBSCRIBED = \"subscribed\";\r\nvar ERR_MSG_SUB_FAILED = \"Subscription failed.\";\r\nvar ERR_MSG_SUB_REJECTED = \"Subscription rejected.\";\r\nvar ON_CLOSE_MSG_SERVER_INIT = \"ServerInitiated\";\r\nvar ON_CLOSE_MSG_CLIENT_INIT = \"ClientInitiated\";\r\nvar ClientStreaming = (function () {\r\n function ClientStreaming(session, repository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.logger = logger;\r\n this.subscriptionsList = {};\r\n this.timedCache = new TimedCache({ ELEMENT_TTL_MS: 10000 });\r\n this.subscriptionIdToLocalKeyMap = {};\r\n this.nextSubLocalKey = 0;\r\n this.handleErrorSubscribing = function (errorResponse) {\r\n var tag = errorResponse._tag;\r\n var subLocalKey = tag.subLocalKey;\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (typeof pendingSub !== \"object\") {\r\n return;\r\n }\r\n pendingSub.trackedServers = pendingSub.trackedServers.filter(function (server) {\r\n return server.serverId !== tag.serverId;\r\n });\r\n if (pendingSub.trackedServers.length <= 0) {\r\n clearTimeout(pendingSub.timeoutId);\r\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\r\n var reason = (typeof errorResponse.reason === \"string\" && errorResponse.reason !== \"\") ?\r\n ' Publisher said \"' + errorResponse.reason + '\".' :\r\n \" No reason given.\";\r\n var callArgs = typeof pendingSub.params.arguments === \"object\" ?\r\n JSON.stringify(pendingSub.params.arguments) :\r\n \"{}\";\r\n pendingSub.error({\r\n message: ERR_MSG_SUB_REJECTED + reason + \" Called with:\" + callArgs,\r\n called_with: pendingSub.params.arguments,\r\n method: pendingSub.method,\r\n });\r\n }\r\n else if (pendingSub.status === STATUS_SUBSCRIBED) {\r\n _this.callOnClosedHandlers(pendingSub);\r\n }\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n };\r\n this.handleSubscribed = function (msg) {\r\n var subLocalKey = msg._tag.subLocalKey;\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (typeof pendingSub !== \"object\") {\r\n return;\r\n }\r\n var serverId = msg._tag.serverId;\r\n var acceptingServer = pendingSub.trackedServers\r\n .filter(function (server) {\r\n return server.serverId === serverId;\r\n })[0];\r\n if (typeof acceptingServer !== \"object\") {\r\n return;\r\n }\r\n acceptingServer.subscriptionId = msg.subscription_id;\r\n _this.subscriptionIdToLocalKeyMap[msg.subscription_id] = subLocalKey;\r\n var isFirstResponse = (pendingSub.status === STATUS_AWAITING_ACCEPT);\r\n pendingSub.status = STATUS_SUBSCRIBED;\r\n if (isFirstResponse) {\r\n var reconnect = false;\r\n var sub = pendingSub.subscription;\r\n if (sub) {\r\n sub.setNewSubscription(pendingSub);\r\n pendingSub.success(sub);\r\n reconnect = true;\r\n }\r\n else {\r\n sub = new UserSubscription(_this.repository, pendingSub);\r\n pendingSub.subscription = sub;\r\n pendingSub.success(sub);\r\n }\r\n for (var _i = 0, _a = pendingSub.handlers.onConnected; _i < _a.length; _i++) {\r\n var handler = _a[_i];\r\n try {\r\n handler(sub.serverInstance, reconnect);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n }\r\n };\r\n this.handleEventData = function (msg) {\r\n var subLocalKey = _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n if (typeof subLocalKey === \"undefined\") {\r\n return;\r\n }\r\n var subscription = _this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n var trackedServersFound = subscription.trackedServers.filter(function (server) {\r\n return server.subscriptionId === msg.subscription_id;\r\n });\r\n if (trackedServersFound.length !== 1) {\r\n return;\r\n }\r\n var isPrivateData = msg.oob;\r\n var sendingServerId = trackedServersFound[0].serverId;\r\n var receivedStreamData = function () {\r\n return {\r\n data: msg.data,\r\n server: _this.repository.getServerById(sendingServerId).instance,\r\n requestArguments: subscription.params.arguments,\r\n message: undefined,\r\n private: isPrivateData,\r\n };\r\n };\r\n var onDataHandlers = subscription.handlers.onData;\r\n var queuedData = subscription.queued.data;\r\n if (onDataHandlers.length > 0) {\r\n onDataHandlers.forEach(function (callback) {\r\n if (typeof callback === \"function\") {\r\n callback(receivedStreamData());\r\n }\r\n });\r\n }\r\n else {\r\n queuedData.push(receivedStreamData());\r\n }\r\n };\r\n this.handleSubscriptionCancelled = function (msg) {\r\n var subLocalKey = _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n if (typeof subLocalKey === \"undefined\") {\r\n return;\r\n }\r\n var subscription = _this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n var expectedNewLength = subscription.trackedServers.length - 1;\r\n subscription.trackedServers = subscription.trackedServers.filter(function (server) {\r\n if (server.subscriptionId === msg.subscription_id) {\r\n subscription.queued.closers.push(server.serverId);\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n if (subscription.trackedServers.length !== expectedNewLength) {\r\n return;\r\n }\r\n if (subscription.trackedServers.length <= 0) {\r\n _this.timedCache.add(subscription);\r\n clearTimeout(subscription.timeoutId);\r\n _this.callOnClosedHandlers(subscription);\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n delete _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n };\r\n session.on(\"subscribed\", this.handleSubscribed);\r\n session.on(\"event\", this.handleEventData);\r\n session.on(\"subscription-cancelled\", this.handleSubscriptionCancelled);\r\n }\r\n ClientStreaming.prototype.subscribe = function (streamingMethod, params, targetServers, success, error, existingSub) {\r\n var _this = this;\r\n if (targetServers.length === 0) {\r\n error({\r\n method: streamingMethod,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" No available servers matched the target params.\",\r\n });\r\n return;\r\n }\r\n var subLocalKey = this.getNextSubscriptionLocalKey();\r\n var pendingSub = this.registerSubscription(subLocalKey, streamingMethod, params, success, error, params.methodResponseTimeout || 10000, existingSub);\r\n if (typeof pendingSub !== \"object\") {\r\n error({\r\n method: streamingMethod,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" Unable to register the user callbacks.\",\r\n });\r\n return;\r\n }\r\n targetServers.forEach(function (target) {\r\n var serverId = target.server.id;\r\n var method = target.methods.find(function (m) { return m.name === streamingMethod.name; });\r\n if (!method) {\r\n _this.logger.error(\"can not find method \".concat(streamingMethod.name, \" for target \").concat(target.server.id));\r\n return;\r\n }\r\n pendingSub.trackedServers.push({\r\n serverId: serverId,\r\n subscriptionId: undefined,\r\n });\r\n var msg = {\r\n type: \"subscribe\",\r\n server_id: serverId,\r\n method_id: method.gatewayId,\r\n arguments_kv: params.arguments,\r\n };\r\n _this.session.send(msg, { serverId: serverId, subLocalKey: subLocalKey })\r\n .then(function (m) { return _this.handleSubscribed(m); })\r\n .catch(function (err) { return _this.handleErrorSubscribing(err); });\r\n });\r\n };\r\n ClientStreaming.prototype.drainSubscriptions = function () {\r\n var existing = Object.values(this.subscriptionsList);\r\n this.subscriptionsList = {};\r\n this.subscriptionIdToLocalKeyMap = {};\r\n return existing;\r\n };\r\n ClientStreaming.prototype.drainSubscriptionsCache = function () {\r\n return this.timedCache.flush();\r\n };\r\n ClientStreaming.prototype.getNextSubscriptionLocalKey = function () {\r\n var current = this.nextSubLocalKey;\r\n this.nextSubLocalKey += 1;\r\n return current;\r\n };\r\n ClientStreaming.prototype.registerSubscription = function (subLocalKey, method, params, success, error, timeout, existingSub) {\r\n var _this = this;\r\n var subsInfo = {\r\n localKey: subLocalKey,\r\n status: STATUS_AWAITING_ACCEPT,\r\n method: method,\r\n params: params,\r\n success: success,\r\n error: error,\r\n trackedServers: [],\r\n handlers: {\r\n onData: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onData) || [],\r\n onClosed: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onClosed) || [],\r\n onConnected: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onConnected) || [],\r\n },\r\n queued: {\r\n data: [],\r\n closers: [],\r\n },\r\n timeoutId: undefined,\r\n close: function () { return _this.closeSubscription(subLocalKey); },\r\n subscription: existingSub === null || existingSub === void 0 ? void 0 : existingSub.subscription\r\n };\r\n if (!existingSub) {\r\n if (params.onData) {\r\n subsInfo.handlers.onData.push(params.onData);\r\n }\r\n if (params.onClosed) {\r\n subsInfo.handlers.onClosed.push(params.onClosed);\r\n }\r\n if (params.onConnected) {\r\n subsInfo.handlers.onConnected.push(params.onConnected);\r\n }\r\n }\r\n this.subscriptionsList[subLocalKey] = subsInfo;\r\n subsInfo.timeoutId = setTimeout(function () {\r\n if (_this.subscriptionsList[subLocalKey] === undefined) {\r\n return;\r\n }\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\r\n error({\r\n method: method,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" Subscription attempt timed out after \" + timeout + \" ms.\",\r\n });\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n else if (pendingSub.status === STATUS_SUBSCRIBED && pendingSub.trackedServers.length > 0) {\r\n pendingSub.trackedServers = pendingSub.trackedServers.filter(function (server) {\r\n return (typeof server.subscriptionId !== \"undefined\");\r\n });\r\n delete pendingSub.timeoutId;\r\n if (pendingSub.trackedServers.length <= 0) {\r\n _this.callOnClosedHandlers(pendingSub);\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n }\r\n }, timeout);\r\n return subsInfo;\r\n };\r\n ClientStreaming.prototype.callOnClosedHandlers = function (subscription, reason) {\r\n var closersCount = subscription.queued.closers.length;\r\n var closingServerId = (closersCount > 0) ? subscription.queued.closers[closersCount - 1] : null;\r\n var closingServer;\r\n if (closingServerId !== undefined && typeof closingServerId === \"string\") {\r\n closingServer = this.repository.getServerById(closingServerId).instance;\r\n }\r\n subscription.handlers.onClosed.forEach(function (callback) {\r\n if (typeof callback !== \"function\") {\r\n return;\r\n }\r\n callback({\r\n message: reason || ON_CLOSE_MSG_SERVER_INIT,\r\n requestArguments: subscription.params.arguments || {},\r\n server: closingServer,\r\n stream: subscription.method,\r\n });\r\n });\r\n };\r\n ClientStreaming.prototype.closeSubscription = function (subLocalKey) {\r\n var _this = this;\r\n var subscription = this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n subscription.trackedServers.forEach(function (server) {\r\n if (typeof server.subscriptionId === \"undefined\") {\r\n return;\r\n }\r\n subscription.queued.closers.push(server.serverId);\r\n _this.session.sendFireAndForget({\r\n type: \"unsubscribe\",\r\n subscription_id: server.subscriptionId,\r\n reason_uri: \"\",\r\n reason: ON_CLOSE_MSG_CLIENT_INIT,\r\n });\r\n delete _this.subscriptionIdToLocalKeyMap[server.subscriptionId];\r\n });\r\n subscription.trackedServers = [];\r\n this.callOnClosedHandlers(subscription, ON_CLOSE_MSG_CLIENT_INIT);\r\n delete this.subscriptionsList[subLocalKey];\r\n };\r\n return ClientStreaming;\r\n}());\n\nvar ClientProtocol = (function () {\r\n function ClientProtocol(session, repository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.logger = logger;\r\n session.on(\"peer-added\", function (msg) { return _this.handlePeerAdded(msg); });\r\n session.on(\"peer-removed\", function (msg) { return _this.handlePeerRemoved(msg); });\r\n session.on(\"methods-added\", function (msg) { return _this.handleMethodsAddedMessage(msg); });\r\n session.on(\"methods-removed\", function (msg) { return _this.handleMethodsRemovedMessage(msg); });\r\n this.streaming = new ClientStreaming(session, repository, logger);\r\n }\r\n ClientProtocol.prototype.subscribe = function (stream, options, targetServers, success, error, existingSub) {\r\n this.streaming.subscribe(stream, options, targetServers, success, error, existingSub);\r\n };\r\n ClientProtocol.prototype.invoke = function (id, method, args, target) {\r\n var _this = this;\r\n var serverId = target.id;\r\n var methodId = method.gatewayId;\r\n var msg = {\r\n type: \"call\",\r\n server_id: serverId,\r\n method_id: methodId,\r\n arguments_kv: args,\r\n };\r\n return this.session.send(msg, { invocationId: id, serverId: serverId })\r\n .then(function (m) { return _this.handleResultMessage(m); })\r\n .catch(function (err) { return _this.handleInvocationError(err); });\r\n };\r\n ClientProtocol.prototype.drainSubscriptions = function () {\r\n return this.streaming.drainSubscriptions();\r\n };\r\n ClientProtocol.prototype.drainSubscriptionsCache = function () {\r\n return this.streaming.drainSubscriptionsCache();\r\n };\r\n ClientProtocol.prototype.handlePeerAdded = function (msg) {\r\n var newPeerId = msg.new_peer_id;\r\n var remoteId = msg.identity;\r\n var isLocal = msg.meta ? msg.meta.local : true;\r\n var pid = Number(remoteId.process);\r\n var serverInfo = {\r\n machine: remoteId.machine,\r\n pid: isNaN(pid) ? remoteId.process : pid,\r\n instance: remoteId.instance,\r\n application: remoteId.application,\r\n applicationName: remoteId.applicationName,\r\n environment: remoteId.environment,\r\n region: remoteId.region,\r\n user: remoteId.user,\r\n windowId: remoteId.windowId,\r\n peerId: newPeerId,\r\n api: remoteId.api,\r\n isLocal: isLocal\r\n };\r\n this.repository.addServer(serverInfo, newPeerId);\r\n };\r\n ClientProtocol.prototype.handlePeerRemoved = function (msg) {\r\n var removedPeerId = msg.removed_id;\r\n var reason = msg.reason;\r\n this.repository.removeServerById(removedPeerId, reason);\r\n };\r\n ClientProtocol.prototype.handleMethodsAddedMessage = function (msg) {\r\n var _this = this;\r\n var serverId = msg.server_id;\r\n var methods = msg.methods;\r\n methods.forEach(function (method) {\r\n _this.repository.addServerMethod(serverId, method);\r\n });\r\n };\r\n ClientProtocol.prototype.handleMethodsRemovedMessage = function (msg) {\r\n var _this = this;\r\n var serverId = msg.server_id;\r\n var methodIdList = msg.methods;\r\n var server = this.repository.getServerById(serverId);\r\n var serverMethodKeys = Object.keys(server.methods);\r\n serverMethodKeys.forEach(function (methodKey) {\r\n var method = server.methods[methodKey];\r\n if (methodIdList.indexOf(method.gatewayId) > -1) {\r\n _this.repository.removeServerMethod(serverId, methodKey);\r\n }\r\n });\r\n };\r\n ClientProtocol.prototype.handleResultMessage = function (msg) {\r\n var invocationId = msg._tag.invocationId;\r\n var result = msg.result;\r\n var serverId = msg._tag.serverId;\r\n var server = this.repository.getServerById(serverId);\r\n return {\r\n invocationId: invocationId,\r\n result: result,\r\n instance: server.instance,\r\n status: InvokeStatus.Success,\r\n message: \"\"\r\n };\r\n };\r\n ClientProtocol.prototype.handleInvocationError = function (msg) {\r\n this.logger.debug(\"handle invocation error \".concat(JSON.stringify(msg)));\r\n if (\"_tag\" in msg) {\r\n var invocationId = msg._tag.invocationId;\r\n var serverId = msg._tag.serverId;\r\n var server = this.repository.getServerById(serverId);\r\n var message = msg.reason;\r\n var context_1 = msg.context;\r\n return {\r\n invocationId: invocationId,\r\n result: context_1,\r\n instance: server.instance,\r\n status: InvokeStatus.Error,\r\n message: message\r\n };\r\n }\r\n else {\r\n return {\r\n invocationId: \"\",\r\n message: msg.message,\r\n status: InvokeStatus.Error,\r\n error: msg\r\n };\r\n }\r\n };\r\n return ClientProtocol;\r\n}());\n\nfunction gW3ProtocolFactory (instance, connection, clientRepository, serverRepository, libConfig, interop) {\r\n var logger = libConfig.logger.subLogger(\"gw3-protocol\");\r\n var resolveReadyPromise;\r\n var readyPromise = new Promise(function (resolve) {\r\n resolveReadyPromise = resolve;\r\n });\r\n var session = connection.domain(\"agm\", [\"subscribed\"]);\r\n var server = new ServerProtocol(session, clientRepository, serverRepository, logger.subLogger(\"server\"));\r\n var client = new ClientProtocol(session, clientRepository, logger.subLogger(\"client\"));\r\n function handleReconnect() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reconnectionPromises, existingSubscriptions, _loop_1, _i, existingSubscriptions_1, sub, registeredMethods, _loop_2, _a, registeredMethods_1, method;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n logger.info(\"reconnected - will replay registered methods and subscriptions\");\r\n client.drainSubscriptionsCache().forEach(function (sub) {\r\n var methodInfo = sub.method;\r\n var params = Object.assign({}, sub.params);\r\n logger.info(\"trying to soft-re-subscribe to method \".concat(methodInfo.name, \", with params: \").concat(JSON.stringify(params)));\r\n interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(function () { return logger.info(\"soft-subscribing to method \".concat(methodInfo.name, \" DONE\")); }).catch(function (error) { return logger.warn(\"subscribing to method \".concat(methodInfo.name, \" failed: \").concat(JSON.stringify(error), \"}\")); });\r\n });\r\n reconnectionPromises = [];\r\n existingSubscriptions = client.drainSubscriptions();\r\n _loop_1 = function (sub) {\r\n var methodInfo = sub.method;\r\n var params = Object.assign({}, sub.params);\r\n logger.info(\"trying to re-subscribe to method \".concat(methodInfo.name, \", with params: \").concat(JSON.stringify(params)));\r\n reconnectionPromises.push(interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(function () { return logger.info(\"subscribing to method \".concat(methodInfo.name, \" DONE\")); }));\r\n };\r\n for (_i = 0, existingSubscriptions_1 = existingSubscriptions; _i < existingSubscriptions_1.length; _i++) {\r\n sub = existingSubscriptions_1[_i];\r\n _loop_1(sub);\r\n }\r\n registeredMethods = serverRepository.getList();\r\n serverRepository.reset();\r\n _loop_2 = function (method) {\r\n var def = method.definition;\r\n logger.info(\"re-publishing method \".concat(def.name));\r\n if (method.stream) {\r\n reconnectionPromises.push(interop.server.createStream(def, method.streamCallbacks, undefined, undefined, method.stream).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n else if (method.theFunction && method.theFunction.userCallback) {\r\n reconnectionPromises.push(interop.register(def, method.theFunction.userCallback).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n else if (method.theFunction && method.theFunction.userCallbackAsync) {\r\n reconnectionPromises.push(interop.registerAsync(def, method.theFunction.userCallbackAsync).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n logger.info(\"re-publishing method \".concat(def.name, \" DONE\"));\r\n };\r\n for (_a = 0, registeredMethods_1 = registeredMethods; _a < registeredMethods_1.length; _a++) {\r\n method = registeredMethods_1[_a];\r\n _loop_2(method);\r\n }\r\n return [4, Promise.all(reconnectionPromises)];\r\n case 1:\r\n _b.sent();\r\n logger.info(\"Interop is re-announced\");\r\n return [2];\r\n }\r\n });\r\n });\r\n }\r\n function handleInitialJoin() {\r\n if (resolveReadyPromise) {\r\n resolveReadyPromise({\r\n client: client,\r\n server: server,\r\n });\r\n resolveReadyPromise = undefined;\r\n }\r\n }\r\n session.onJoined(function (reconnect) {\r\n clientRepository.addServer(instance, connection.peerId);\r\n if (reconnect) {\r\n handleReconnect().then(function () { return connection.setLibReAnnounced({ name: \"interop\" }); }).catch(function (error) { return logger.warn(\"Error while re-announcing interop: \".concat(JSON.stringify(error))); });\r\n }\r\n else {\r\n handleInitialJoin();\r\n }\r\n });\r\n session.onLeft(function () {\r\n clientRepository.reset();\r\n });\r\n session.join();\r\n return readyPromise;\r\n}\n\nvar Interop = (function () {\r\n function Interop(configuration) {\r\n var _this = this;\r\n if (typeof configuration === \"undefined\") {\r\n throw new Error(\"configuration is required\");\r\n }\r\n if (typeof configuration.connection === \"undefined\") {\r\n throw new Error(\"configuration.connections is required\");\r\n }\r\n var connection = configuration.connection;\r\n if (typeof configuration.methodResponseTimeout !== \"number\") {\r\n configuration.methodResponseTimeout = 30 * 1000;\r\n }\r\n if (typeof configuration.waitTimeoutMs !== \"number\") {\r\n configuration.waitTimeoutMs = 30 * 1000;\r\n }\r\n this.unwrappedInstance = new InstanceWrapper(this, undefined, connection);\r\n this.instance = this.unwrappedInstance.unwrap();\r\n this.clientRepository = new ClientRepository(configuration.logger.subLogger(\"cRep\"), this);\r\n this.serverRepository = new ServerRepository();\r\n var protocolPromise;\r\n if (connection.protocolVersion === 3) {\r\n protocolPromise = gW3ProtocolFactory(this.instance, connection, this.clientRepository, this.serverRepository, configuration, this);\r\n }\r\n else {\r\n throw new Error(\"protocol \".concat(connection.protocolVersion, \" not supported\"));\r\n }\r\n this.readyPromise = protocolPromise.then(function (protocol) {\r\n _this.protocol = protocol;\r\n _this.client = new Client(_this.protocol, _this.clientRepository, _this.instance, configuration);\r\n _this.server = new Server(_this.protocol, _this.serverRepository);\r\n return _this;\r\n });\r\n }\r\n Interop.prototype.ready = function () {\r\n return this.readyPromise;\r\n };\r\n Interop.prototype.serverRemoved = function (callback) {\r\n return this.client.serverRemoved(callback);\r\n };\r\n Interop.prototype.serverAdded = function (callback) {\r\n return this.client.serverAdded(callback);\r\n };\r\n Interop.prototype.serverMethodRemoved = function (callback) {\r\n return this.client.serverMethodRemoved(callback);\r\n };\r\n Interop.prototype.serverMethodAdded = function (callback) {\r\n return this.client.serverMethodAdded(callback);\r\n };\r\n Interop.prototype.methodRemoved = function (callback) {\r\n return this.client.methodRemoved(callback);\r\n };\r\n Interop.prototype.methodAdded = function (callback) {\r\n return this.client.methodAdded(callback);\r\n };\r\n Interop.prototype.methodsForInstance = function (instance) {\r\n return this.client.methodsForInstance(instance);\r\n };\r\n Interop.prototype.methods = function (methodFilter) {\r\n return this.client.methods(methodFilter);\r\n };\r\n Interop.prototype.servers = function (methodFilter) {\r\n return this.client.servers(methodFilter);\r\n };\r\n Interop.prototype.subscribe = function (method, options, successCallback, errorCallback) {\r\n return this.client.subscribe(method, options, successCallback, errorCallback);\r\n };\r\n Interop.prototype.createStream = function (streamDef, callbacks, successCallback, errorCallback) {\r\n return this.server.createStream(streamDef, callbacks, successCallback, errorCallback);\r\n };\r\n Interop.prototype.unregister = function (methodFilter) {\r\n return this.server.unregister(methodFilter);\r\n };\r\n Interop.prototype.registerAsync = function (methodDefinition, callback) {\r\n return this.server.registerAsync(methodDefinition, callback);\r\n };\r\n Interop.prototype.register = function (methodDefinition, callback) {\r\n return this.server.register(methodDefinition, callback);\r\n };\r\n Interop.prototype.invoke = function (methodFilter, argumentObj, target, additionalOptions, success, error) {\r\n return this.client.invoke(methodFilter, argumentObj, target, additionalOptions, success, error);\r\n };\r\n Interop.prototype.waitForMethod = function (name) {\r\n var pw = new PromiseWrapper();\r\n var unsubscribe = this.client.methodAdded(function (m) {\r\n if (m.name === name) {\r\n unsubscribe();\r\n pw.resolve(m);\r\n }\r\n });\r\n return pw.promise;\r\n };\r\n return Interop;\r\n}());\n\nvar successMessages = [\"subscribed\", \"success\"];\r\nvar MessageBus = (function () {\r\n function MessageBus(connection, logger) {\r\n var _this = this;\r\n this.publish = function (topic, data, options) {\r\n var _a = options || {}, routingKey = _a.routingKey, target = _a.target;\r\n var args = _this.removeEmptyValues({\r\n type: \"publish\",\r\n topic: topic,\r\n data: data,\r\n peer_id: _this.peerId,\r\n routing_key: routingKey,\r\n target_identity: target\r\n });\r\n _this.session.send(args);\r\n };\r\n this.subscribe = function (topic, callback, options) {\r\n return new Promise(function (resolve, reject) {\r\n var _a = options || {}, routingKey = _a.routingKey, target = _a.target;\r\n var args = _this.removeEmptyValues({\r\n type: \"subscribe\",\r\n topic: topic,\r\n peer_id: _this.peerId,\r\n routing_key: routingKey,\r\n source: target\r\n });\r\n _this.session.send(args)\r\n .then(function (response) {\r\n var subscription_id = response.subscription_id;\r\n _this.subscriptions.push({ subscription_id: subscription_id, topic: topic, callback: callback, source: target });\r\n resolve({\r\n unsubscribe: function () {\r\n _this.session.send({ type: \"unsubscribe\", subscription_id: subscription_id, peer_id: _this.peerId });\r\n _this.subscriptions = _this.subscriptions.filter(function (s) { return s.subscription_id !== subscription_id; });\r\n return Promise.resolve();\r\n }\r\n });\r\n })\r\n .catch(function (error) { return reject(error); });\r\n });\r\n };\r\n this.watchOnEvent = function () {\r\n _this.session.on(\"event\", function (args) {\r\n var data = args.data, subscription_id = args.subscription_id;\r\n var source = args[\"publisher-identity\"];\r\n var subscription = _this.subscriptions.find(function (s) { return s.subscription_id === subscription_id; });\r\n if (subscription) {\r\n if (!subscription.source) {\r\n subscription.callback(data, subscription.topic, source);\r\n }\r\n else {\r\n if (_this.keysMatch(subscription.source, source)) {\r\n subscription.callback(data, subscription.topic, source);\r\n }\r\n }\r\n }\r\n });\r\n };\r\n this.connection = connection;\r\n this.logger = logger;\r\n this.peerId = connection.peerId;\r\n this.subscriptions = [];\r\n this.session = connection.domain(\"bus\", successMessages);\r\n this.readyPromise = this.session.join();\r\n this.readyPromise.then(function () {\r\n _this.watchOnEvent();\r\n });\r\n }\r\n MessageBus.prototype.ready = function () {\r\n return this.readyPromise;\r\n };\r\n MessageBus.prototype.removeEmptyValues = function (obj) {\r\n var cleaned = {};\r\n Object.keys(obj).forEach(function (key) {\r\n if (obj[key] !== undefined && obj[key] !== null) {\r\n cleaned[key] = obj[key];\r\n }\r\n });\r\n return cleaned;\r\n };\r\n MessageBus.prototype.keysMatch = function (obj1, obj2) {\r\n var keysObj1 = Object.keys(obj1);\r\n var allMatch = true;\r\n keysObj1.forEach(function (key) {\r\n if (obj1[key] !== obj2[key]) {\r\n allMatch = false;\r\n }\r\n });\r\n return allMatch;\r\n };\r\n return MessageBus;\r\n}());\n\nvar IOConnectCoreFactory = function (userConfig, ext) {\r\n var _a, _b;\r\n var iodesktop = typeof window === \"object\" ? ((_a = window.iodesktop) !== null && _a !== void 0 ? _a : window.glue42gd) : undefined;\r\n var preloadPromise = typeof window === \"object\" ? ((_b = window.gdPreloadPromise) !== null && _b !== void 0 ? _b : Promise.resolve()) : Promise.resolve();\r\n var glueInitTimer = timer(\"glue\");\r\n userConfig = userConfig || {};\r\n ext = ext || {};\r\n var internalConfig = prepareConfig(userConfig, ext, iodesktop);\r\n var _connection;\r\n var _interop;\r\n var _logger;\r\n var _metrics;\r\n var _contexts;\r\n var _bus;\r\n var _allowTrace;\r\n var libs = {};\r\n function registerLib(name, inner, t) {\r\n _allowTrace = _logger.canPublish(\"trace\");\r\n if (_allowTrace) {\r\n _logger.trace(\"registering \".concat(name, \" module\"));\r\n }\r\n var done = function () {\r\n inner.initTime = t.stop();\r\n inner.initEndTime = t.endTime;\r\n inner.marks = t.marks;\r\n if (_allowTrace) {\r\n _logger.trace(\"\".concat(name, \" is ready - \").concat(t.endTime - t.startTime));\r\n }\r\n };\r\n inner.initStartTime = t.startTime;\r\n if (inner.ready) {\r\n inner.ready().then(function () {\r\n done();\r\n });\r\n }\r\n else {\r\n done();\r\n }\r\n if (!Array.isArray(name)) {\r\n name = [name];\r\n }\r\n name.forEach(function (n) {\r\n libs[n] = inner;\r\n IOConnectCoreFactory[n] = inner;\r\n });\r\n }\r\n function setupConnection() {\r\n var initTimer = timer(\"connection\");\r\n _connection = new Connection(internalConfig.connection, _logger.subLogger(\"connection\"));\r\n var authPromise = Promise.resolve(internalConfig.auth);\r\n if (internalConfig.connection && !internalConfig.auth) {\r\n if (iodesktop) {\r\n authPromise = iodesktop.getGWToken()\r\n .then(function (token) {\r\n return {\r\n gatewayToken: token\r\n };\r\n });\r\n }\r\n else if (typeof window !== \"undefined\" && (window === null || window === void 0 ? void 0 : window.glue42electron)) {\r\n if (typeof window.glue42electron.gwToken === \"string\") {\r\n authPromise = Promise.resolve({\r\n gatewayToken: window.glue42electron.gwToken\r\n });\r\n }\r\n }\r\n else {\r\n authPromise = Promise.reject(\"You need to provide auth information\");\r\n }\r\n }\r\n return authPromise\r\n .then(function (authConfig) {\r\n initTimer.mark(\"auth-promise-resolved\");\r\n var authRequest;\r\n if (Object.prototype.toString.call(authConfig) === \"[object Object]\") {\r\n authRequest = authConfig;\r\n }\r\n else {\r\n throw new Error(\"Invalid auth object - \" + JSON.stringify(authConfig));\r\n }\r\n return _connection.login(authRequest);\r\n })\r\n .then(function () {\r\n registerLib(\"connection\", _connection, initTimer);\r\n return internalConfig;\r\n })\r\n .catch(function (e) {\r\n if (_connection) {\r\n _connection.logout();\r\n }\r\n throw e;\r\n });\r\n }\r\n function setupLogger() {\r\n var _a;\r\n var initTimer = timer(\"logger\");\r\n _logger = new Logger(\"\".concat((_a = internalConfig.connection.identity) === null || _a === void 0 ? void 0 : _a.application), undefined, internalConfig.customLogger);\r\n _logger.consoleLevel(internalConfig.logger.console);\r\n _logger.publishLevel(internalConfig.logger.publish);\r\n if (_logger.canPublish(\"debug\")) {\r\n _logger.debug(\"initializing glue...\");\r\n }\r\n registerLib(\"logger\", _logger, initTimer);\r\n return Promise.resolve(undefined);\r\n }\r\n function setupMetrics() {\r\n var _a, _b, _c, _d, _e;\r\n var initTimer = timer(\"metrics\");\r\n var config = internalConfig.metrics;\r\n var metricsPublishingEnabledFunc = iodesktop === null || iodesktop === void 0 ? void 0 : iodesktop.getMetricsPublishingEnabled;\r\n var identity = internalConfig.connection.identity;\r\n var canUpdateMetric = metricsPublishingEnabledFunc ? metricsPublishingEnabledFunc : function () { return true; };\r\n var disableAutoAppSystem = (_a = (typeof config !== \"boolean\" && config.disableAutoAppSystem)) !== null && _a !== void 0 ? _a : false;\r\n _metrics = metrics({\r\n connection: config ? _connection : undefined,\r\n logger: _logger.subLogger(\"metrics\"),\r\n canUpdateMetric: canUpdateMetric,\r\n system: \"Glue42\",\r\n service: (_c = (_b = identity === null || identity === void 0 ? void 0 : identity.service) !== null && _b !== void 0 ? _b : iodesktop === null || iodesktop === void 0 ? void 0 : iodesktop.applicationName) !== null && _c !== void 0 ? _c : internalConfig.application,\r\n instance: (_e = (_d = identity === null || identity === void 0 ? void 0 : identity.instance) !== null && _d !== void 0 ? _d : identity === null || identity === void 0 ? void 0 : identity.windowId) !== null && _e !== void 0 ? _e : shortid(),\r\n disableAutoAppSystem: disableAutoAppSystem,\r\n pagePerformanceMetrics: typeof config !== \"boolean\" ? config === null || config === void 0 ? void 0 : config.pagePerformanceMetrics : undefined\r\n });\r\n registerLib(\"metrics\", _metrics, initTimer);\r\n return Promise.resolve();\r\n }\r\n function setupInterop() {\r\n var initTimer = timer(\"interop\");\r\n var agmConfig = {\r\n connection: _connection,\r\n logger: _logger.subLogger(\"interop\"),\r\n };\r\n _interop = new Interop(agmConfig);\r\n Logger.Interop = _interop;\r\n registerLib([\"interop\", \"agm\"], _interop, initTimer);\r\n return Promise.resolve();\r\n }\r\n function setupContexts() {\r\n var hasActivities = (internalConfig.activities && _connection.protocolVersion === 3);\r\n var needsContexts = internalConfig.contexts || hasActivities;\r\n if (needsContexts) {\r\n var initTimer = timer(\"contexts\");\r\n _contexts = new ContextsModule({\r\n connection: _connection,\r\n logger: _logger.subLogger(\"contexts\"),\r\n trackAllContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.trackAllContexts : false,\r\n reAnnounceKnownContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.reAnnounceKnownContexts : false\r\n });\r\n registerLib(\"contexts\", _contexts, initTimer);\r\n return _contexts;\r\n }\r\n else {\r\n var replayer = _connection.replayer;\r\n if (replayer) {\r\n replayer.drain(ContextMessageReplaySpec.name);\r\n }\r\n }\r\n }\r\n function setupBus() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var initTimer;\r\n return __generator(this, function (_a) {\r\n if (!internalConfig.bus) {\r\n return [2, Promise.resolve()];\r\n }\r\n initTimer = timer(\"bus\");\r\n _bus = new MessageBus(_connection, _logger.subLogger(\"bus\"));\r\n registerLib(\"bus\", _bus, initTimer);\r\n return [2, Promise.resolve()];\r\n });\r\n });\r\n }\r\n function setupExternalLibs(externalLibs) {\r\n try {\r\n externalLibs.forEach(function (lib) {\r\n setupExternalLib(lib.name, lib.create);\r\n });\r\n return Promise.resolve();\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n function setupExternalLib(name, createCallback) {\r\n var initTimer = timer(name);\r\n var lib = createCallback(libs);\r\n if (lib) {\r\n registerLib(name, lib, initTimer);\r\n }\r\n }\r\n function waitForLibs() {\r\n var libsReadyPromises = Object.keys(libs).map(function (key) {\r\n var lib = libs[key];\r\n return lib.ready ?\r\n lib.ready() : Promise.resolve();\r\n });\r\n return Promise.all(libsReadyPromises);\r\n }\r\n function constructGlueObject() {\r\n var feedbackFunc = function (feedbackInfo) {\r\n if (!_interop) {\r\n return;\r\n }\r\n _interop.invoke(\"T42.ACS.Feedback\", feedbackInfo, \"best\");\r\n };\r\n var info = {\r\n coreVersion: version,\r\n version: internalConfig.version\r\n };\r\n glueInitTimer.stop();\r\n var glue = {\r\n feedback: feedbackFunc,\r\n info: info,\r\n logger: _logger,\r\n interop: _interop,\r\n agm: _interop,\r\n connection: _connection,\r\n metrics: _metrics,\r\n contexts: _contexts,\r\n bus: _bus,\r\n version: internalConfig.version,\r\n userConfig: userConfig,\r\n done: function () {\r\n _logger === null || _logger === void 0 ? void 0 : _logger.info(\"done called by user...\");\r\n return _connection.logout();\r\n }\r\n };\r\n glue.performance = {\r\n get glueVer() {\r\n return internalConfig.version;\r\n },\r\n get glueConfig() {\r\n return JSON.stringify(userConfig);\r\n },\r\n get browser() {\r\n return window.performance.timing.toJSON();\r\n },\r\n get memory() {\r\n return window.performance.memory;\r\n },\r\n get initTimes() {\r\n var all = getAllTimers();\r\n return Object.keys(all).map(function (key) {\r\n var t = all[key];\r\n return {\r\n name: key,\r\n duration: t.endTime - t.startTime,\r\n marks: t.marks,\r\n startTime: t.startTime,\r\n endTime: t.endTime\r\n };\r\n });\r\n }\r\n };\r\n Object.keys(libs).forEach(function (key) {\r\n var lib = libs[key];\r\n glue[key] = lib;\r\n });\r\n glue.config = {};\r\n Object.keys(internalConfig).forEach(function (k) {\r\n glue.config[k] = internalConfig[k];\r\n });\r\n if (ext && ext.extOptions) {\r\n Object.keys(ext.extOptions).forEach(function (k) {\r\n glue.config[k] = ext === null || ext === void 0 ? void 0 : ext.extOptions[k];\r\n });\r\n }\r\n if (ext === null || ext === void 0 ? void 0 : ext.enrichGlue) {\r\n ext.enrichGlue(glue);\r\n }\r\n if (iodesktop && iodesktop.updatePerfData) {\r\n iodesktop.updatePerfData(glue.performance);\r\n }\r\n if (glue.agm) {\r\n var deprecatedDecorator = function (fn, wrong, proper) {\r\n return function () {\r\n glue.logger.warn(\"glue.js - 'glue.agm.\".concat(wrong, \"' method is deprecated, use 'glue.interop.\").concat(proper, \"' instead.\"));\r\n return fn.apply(glue.agm, arguments);\r\n };\r\n };\r\n var agmAny = glue.agm;\r\n agmAny.method_added = deprecatedDecorator(glue.agm.methodAdded, \"method_added\", \"methodAdded\");\r\n agmAny.method_removed = deprecatedDecorator(glue.agm.methodRemoved, \"method_removed\", \"methodRemoved\");\r\n agmAny.server_added = deprecatedDecorator(glue.agm.serverAdded, \"server_added\", \"serverAdded\");\r\n agmAny.server_method_aded = deprecatedDecorator(glue.agm.serverMethodAdded, \"server_method_aded\", \"serverMethodAdded\");\r\n agmAny.server_method_removed = deprecatedDecorator(glue.agm.serverMethodRemoved, \"server_method_removed\", \"serverMethodRemoved\");\r\n }\r\n return glue;\r\n }\r\n function registerInstanceIfNeeded() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var RegisterInstanceMethodName, isMethodAvailable, error_1, typedError;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n RegisterInstanceMethodName = \"T42.ACS.RegisterInstance\";\r\n if (!(Utils.isNode() && typeof process.env._GD_STARTING_CONTEXT_ === \"undefined\" && typeof (userConfig === null || userConfig === void 0 ? void 0 : userConfig.application) !== \"undefined\")) return [3, 4];\r\n isMethodAvailable = _interop.methods({ name: RegisterInstanceMethodName }).length > 0;\r\n if (!isMethodAvailable) return [3, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4, _interop.invoke(RegisterInstanceMethodName, { appName: userConfig === null || userConfig === void 0 ? void 0 : userConfig.application, pid: process.pid })];\r\n case 2:\r\n _a.sent();\r\n return [3, 4];\r\n case 3:\r\n error_1 = _a.sent();\r\n typedError = error_1;\r\n _logger.error(\"Cannot register as an instance: \".concat(JSON.stringify(typedError.message)));\r\n return [3, 4];\r\n case 4: return [2];\r\n }\r\n });\r\n });\r\n }\r\n return preloadPromise\r\n .then(setupLogger)\r\n .then(setupConnection)\r\n .then(function () { return Promise.all([setupMetrics(), setupInterop(), setupContexts(), setupBus()]); })\r\n .then(function () { return _interop.readyPromise; })\r\n .then(function () { return registerInstanceIfNeeded(); })\r\n .then(function () {\r\n return setupExternalLibs(internalConfig.libs || []);\r\n })\r\n .then(waitForLibs)\r\n .then(constructGlueObject)\r\n .catch(function (err) {\r\n return Promise.reject({\r\n err: err,\r\n libs: libs\r\n });\r\n });\r\n};\r\nif (typeof window !== \"undefined\") {\r\n window.IOConnectCore = IOConnectCoreFactory;\r\n}\r\nIOConnectCoreFactory.version = version;\r\nIOConnectCoreFactory.default = IOConnectCoreFactory;\n\nexport { IOConnectCoreFactory as default };\n//# sourceMappingURL=core.es.js.map\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { createFactoryFunction } from \"./web\";\nimport createIoConnectCore from \"@interopio/core\";\nimport { version } from \"../package.json\";\n\nconst iOConnectBrowserFactory = createFactoryFunction(createIoConnectCore);\n\n// attach to window object\nif (typeof window !== \"undefined\") {\n const windowAny = window as any;\n\n windowAny.IOBrowser = iOConnectBrowserFactory;\n\n delete windowAny.GlueCore;\n delete windowAny.IOConnectCore;\n}\n\nconst legacyGlobal = (window as any).glue42gd || (window as any).glue42core;\nconst ioGlobal = (window as any).iodesktop || (window as any).iobrowser;\n\nif (!legacyGlobal && !ioGlobal) {\n (window as any).iobrowser = { webStarted: false };\n}\n\n(iOConnectBrowserFactory as any).version = version;\n\nexport default iOConnectBrowserFactory;\n"],"names":["ok","err","asPromise","withDefault","withException","map","map2","mapError","andThen","__assign","__rest","isEqual","isJsonArray","isJsonObject","typeString","expectedGot","printPath","prependAt","Decoder","string","number","boolean","anyJson","constant","object","array","optional","oneOf","nonEmptyStringDecoder","nonNegativeNumberDecoder","intentDefinitionDecoder","IoC","operations","createRegistry","lib","CallbackRegistryFactory","PromisePlus","seed","getNextValue","setSeed","randomFromSeed","require$$0","ORIGINAL","alphabet","previousSeed","shuffled","reset","setCharacters","characters","shuffle","getShuffled","lookup","get","alphabet_1","crypto","randomByte","randomByteBrowser","format_browser","random","require$$1","format","require$$2","generate","generate_1","REDUCE_TIME","version","counter","previousSeconds","build","build_1","isShortId","isValid","shortid","__awaiter","createIoConnectCore"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,MAAM,aAAa,GAAG;AAClB,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,OAAO,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;AAC5B,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,IAAI;CAClB,CAAC;AAGK,MAAM,WAAW,GAAG,CAAC,MAAgC,KAAkB;;AAC1E,IAAA,MAAM,kBAAkB,GAAG,CAAC,EAAC,CAAA,EAAA,GAAA,MAAC,MAAc,KAAA,IAAA,IAAd,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAU,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAA,CAAC;AAEzE,IAAA,MAAM,QAAQ,GAAiB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAEhG,IAAI,QAAQ,CAAC,YAAY,EAAE;QACvB,QAAQ,CAAC,MAAM,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,YAAY,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,MAAM,CAAC;AAC3D,KAAA;AAED,IAAA,OAAO,QAAQ,CAAC;AACpB,CAAC;;ACpBM,MAAM,cAAc,GAAG,MAAW;IACrC,MAAM,yBAAyB,GAAI,MAAc,CAAC,UAAU,IAAK,MAAc,CAAC,SAAS,CAAC;AAE1F,IAAA,IAAI,yBAAyB,IAAI,yBAAyB,CAAC,UAAU,EAAE;AACnE,QAAA,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;AACvF,KAAA;IAED,IAAI,CAAC,yBAAyB,EAAE;QAE3B,MAAc,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACjD,OAAO;AACV,KAAA;AAED,IAAA,yBAAyB,CAAC,UAAU,GAAG,IAAI,CAAC;AAChD,CAAC;;ACVM,MAAM,UAAU,GAAG,CAAC,MAAgC,KAA0B;;AACjF,IAAA,MAAM,gBAAgB,GAAG;AACrB,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,CAAA,EAAA,GAAA,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE;AAClC,QAAA,MAAM,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,mCAAI,MAAM;KAChD,CAAC;IAEF,MAAM,eAAe,GAAI,MAAc,CAAC,SAAS,IAAK,MAAc,CAAC,IAAI,CAAC;AAE1E,IAAA,OAAO,eAAe,CAAC,gBAAgB,CAAC,CAAC;AAC7C,CAAC;;AClBD;AACA;AACA;AACA;AACA;AACA,IAAIA,IAAE,GAAG,UAAU,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAKtE;AACA;AACA;AACA;AACA;AACA,IAAIC,KAAG,GAAG,UAAU,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAKrE;AACA;AACA;AACA;AACA,IAAIC,WAAS,GAAG,UAAU,CAAC,EAAE;AAC7B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIC,aAAW,GAAG,UAAU,YAAY,EAAE,CAAC,EAAE;AAC7C,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC;AACnD,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAIC,eAAa,GAAG,UAAU,CAAC,EAAE;AACjC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AACvB,QAAQ,OAAO,CAAC,CAAC,MAAM,CAAC;AACxB,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC;AACtB,KAAK;AACL,CAAC,CAAC;AAOF;AACA;AACA;AACA,IAAIC,KAAG,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC1B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAGL,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA,IAAIM,MAAI,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;AAChC,IAAI,OAAO,EAAE,CAAC,EAAE,KAAK,KAAK,GAAG,EAAE;AAC/B,QAAQ,EAAE,CAAC,EAAE,KAAK,KAAK,GAAG,EAAE;AAC5B,YAAYN,IAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAIO,UAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC/B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,GAAGN,KAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,IAAIO,SAAO,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC9B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC,CAAC;AAiBF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIC,UAAQ,GAAG,WAAW;AAC1B,IAAIA,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK,CAAC;AACN,IAAI,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC,CAAC;AACF;AACA,SAASC,QAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACvF,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;AACvE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChF,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,SAAS;AACT,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD;AACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE;AACvB,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE;AACnC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,CAAC,KAAK,QAAQ,EAAE;AACjC;AACA,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAC9B,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACnC,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;AACvC,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,gBAAgB,IAAI,CAACA,SAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1C,oBAAoB,OAAO,KAAK,CAAC;AACjC,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT;AACA,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACnD,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,YAAY,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,CAACA,SAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClD,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,CAAC;AAUD;AACA;AACA;AACA,IAAIC,aAAW,GAAG,UAAU,IAAI,EAAE,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AAClE,IAAIC,cAAY,GAAG,UAAU,IAAI,EAAE;AACnC,IAAI,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAACD,aAAW,CAAC,IAAI,CAAC,CAAC;AAC3E,CAAC,CAAC;AACF,IAAIE,YAAU,GAAG,UAAU,IAAI,EAAE;AACjC,IAAI,QAAQ,OAAO,IAAI;AACvB,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,UAAU,CAAC;AAC9B,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,UAAU,CAAC;AAC9B,QAAQ,KAAK,SAAS;AACtB,YAAY,OAAO,WAAW,CAAC;AAC/B,QAAQ,KAAK,WAAW;AACxB,YAAY,OAAO,WAAW,CAAC;AAC/B,QAAQ,KAAK,QAAQ;AACrB,YAAY,IAAI,IAAI,YAAY,KAAK,EAAE;AACvC,gBAAgB,OAAO,UAAU,CAAC;AAClC,aAAa;AACb,iBAAiB,IAAI,IAAI,KAAK,IAAI,EAAE;AACpC,gBAAgB,OAAO,MAAM,CAAC;AAC9B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,WAAW,CAAC;AACnC,aAAa;AACb,QAAQ;AACR,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxC,KAAK;AACL,CAAC,CAAC;AACF,IAAIC,aAAW,GAAG,UAAU,QAAQ,EAAE,GAAG,EAAE;AAC3C,IAAI,OAAO,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAGD,YAAU,CAAC,GAAG,CAAC,CAAC;AAC/D,CAAC,CAAC;AACF,IAAIE,WAAS,GAAG,UAAU,KAAK,EAAE;AACjC,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,QAAQ,OAAO,IAAI,KAAK,QAAQ,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtH,CAAC,CAAC;AACF,IAAIC,WAAS,GAAG,UAAU,KAAK,EAAE,EAAE,EAAE;AACrC,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,GAAGP,QAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,IAAI,QAAQD,UAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE;AACxD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIS,SAAO,kBAAkB,YAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,OAAO,CAAC,MAAM,EAAE;AAC7B,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE;AACnC,YAAY,OAAOX,UAAQ,CAAC,UAAU,KAAK,EAAE,EAAE,QAAQ;AACvD,gBAAgB,IAAI,EAAE,cAAc;AACpC,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,EAAE,EAAE,OAAO,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;AAC9C,gBAAgB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;AAC5C,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,SAAS,CAAC;AACV;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,EAAE,OAAOL,WAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACjF;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,EAAE,OAAOE,eAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;AAChC,YAAY,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAOC,KAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvF,SAAS,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE;AACpC,YAAY,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC/C,gBAAgB,OAAOG,SAAO,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACvG,aAAa,CAAC,CAAC;AACf,SAAS,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;AACnD,YAAY,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE,EAAE,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;AACnI,SAAS,CAAC;AACV,KAAK;AACL;AACA;AACA;AACA,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY;AACjC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,IAAI,KAAK,QAAQ;AAC3C,kBAAkBR,IAAE,CAAC,IAAI,CAAC;AAC1B,kBAAkBC,KAAG,CAAC,EAAE,OAAO,EAAEc,aAAW,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAClE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY;AACjC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,IAAI,KAAK,QAAQ;AAC3C,kBAAkBf,IAAE,CAAC,IAAI,CAAC;AAC1B,kBAAkBC,KAAG,CAAC,EAAE,OAAO,EAAEc,aAAW,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAClE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,YAAY;AAClC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,IAAI,KAAK,SAAS;AAC5C,kBAAkBf,IAAE,CAAC,IAAI,CAAC;AAC1B,kBAAkBC,KAAG,CAAC,EAAE,OAAO,EAAEc,aAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACnE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAOJ,SAAO,CAAC,IAAI,EAAE,KAAK,CAAC;AACvC,kBAAkBX,IAAE,CAAC,KAAK,CAAC;AAC3B,kBAAkBC,KAAG,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1G,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,MAAM,GAAG,UAAU,QAAQ,EAAE;AACzC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAIY,cAAY,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;AAChD,gBAAgB,IAAI,GAAG,GAAG,EAAE,CAAC;AAC7B,gBAAgB,KAAK,IAAI,GAAG,IAAI,QAAQ,EAAE;AAC1C,oBAAoB,IAAI,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACtD,wBAAwB,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,wBAAwB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AAC3C;AACA,4BAA4B,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;AACxD,gCAAgC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACpD,6BAA6B;AAC7B,yBAAyB;AACzB,6BAA6B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AAC1D,4BAA4B,OAAOZ,KAAG,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,GAAG,GAAG,mCAAmC,EAAE,CAAC,CAAC;AAC7G,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,OAAOA,KAAG,CAACgB,WAAS,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,OAAOjB,IAAE,CAAC,GAAG,CAAC,CAAC;AAC/B,aAAa;AACb,iBAAiB,IAAIa,cAAY,CAAC,IAAI,CAAC,EAAE;AACzC,gBAAgB,OAAOb,IAAE,CAAC,IAAI,CAAC,CAAC;AAChC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAOC,KAAG,CAAC,EAAE,OAAO,EAAEc,aAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACxE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,GAAG,UAAU,OAAO,EAAE;AACvC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAIH,aAAW,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE;AAC9C,gBAAgB,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AACpD,oBAAoB,OAAOL,UAAQ,CAAC,UAAU,MAAM,EAAE,EAAE,OAAOU,WAAS,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvH,iBAAiB,CAAC;AAClB,gBAAgB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACxD,oBAAoB,OAAOX,MAAI,CAAC,UAAU,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnH,iBAAiB,EAAEN,IAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,aAAa;AACb,iBAAiB,IAAIY,aAAW,CAAC,IAAI,CAAC,EAAE;AACxC,gBAAgB,OAAOZ,IAAE,CAAC,IAAI,CAAC,CAAC;AAChC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAOC,KAAG,CAAC,EAAE,OAAO,EAAEc,aAAW,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACvE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,GAAG,UAAU,QAAQ,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAIH,aAAW,CAAC,IAAI,CAAC,EAAE;AACnC,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;AACrD,oBAAoB,OAAOX,KAAG,CAAC;AAC/B,wBAAwB,OAAO,EAAE,6BAA6B,GAAG,QAAQ,CAAC,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAAC,MAAM;AACvH,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,GAAG,EAAE,CAAC;AAChC,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,oBAAoB,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,oBAAoB,IAAI,GAAG,CAAC,EAAE,EAAE;AAChC,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;AAC/C,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,OAAOA,KAAG,CAACgB,WAAS,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACxE,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,OAAOjB,IAAE,CAAC,MAAM,CAAC,CAAC;AAClC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAOC,KAAG,CAAC,EAAE,OAAO,EAAEc,aAAW,CAAC,oBAAoB,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACnG,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE;AACtC,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvE,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,YAAY,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE;AAC7C,QAAQ,IAAI,EAAE,GAAG,EAAE,CAAC;AACpB,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACvC,SAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,OAAO,EAAE,EAAE,OAAOT,MAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAEN,IAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1I,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,YAAY,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAOA,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAChG;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,WAAW,GAAG,YAAY;AACtC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAOA,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACjE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,OAAO,EAAE;AACtC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAIa,cAAY,CAAC,IAAI,CAAC,EAAE;AACpC,gBAAgB,IAAI,GAAG,GAAG,EAAE,CAAC;AAC7B,gBAAgB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AACtC,oBAAoB,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAClD,wBAAwB,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,wBAAwB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AAC3C,4BAA4B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAChD,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,OAAOZ,KAAG,CAACgB,WAAS,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,OAAOjB,IAAE,CAAC,GAAG,CAAC,CAAC;AAC/B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAOC,KAAG,CAAC,EAAE,OAAO,EAAEc,aAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACxE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,QAAQ,GAAG,UAAU,OAAO,EAAE;AAC1C,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,QAAQ,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,GAAGf,IAAE,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACrI,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,KAAK,GAAG,YAAY;AAChC,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,QAAQ,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACzC,SAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC;AAC5B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtD,gBAAgB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjD,gBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AACnC,oBAAoB,OAAO,CAAC,CAAC;AAC7B,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACxC,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,UAAU,GAAG,MAAM;AACnC,iBAAiB,GAAG,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,UAAU,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;AACvG,iBAAiB,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,YAAY,OAAOC,KAAG,CAAC;AACvB,gBAAgB,OAAO,EAAE,mEAAmE,GAAG,UAAU,GAAG,KAAK;AACjH,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,WAAW,GAAG,UAAU,YAAY,EAAE,OAAO,EAAE;AAC3D,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAOD,IAAE,CAACG,aAAW,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;AAChD,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC;AAClC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,gBAAgB,IAAI,UAAU,KAAK,SAAS,EAAE;AAC9C,oBAAoB,OAAOF,KAAG,CAAC;AAC/B,wBAAwB,EAAE,EAAEe,WAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,wBAAwB,OAAO,EAAE,qBAAqB;AACtD,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,qBAAqB,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAACH,cAAY,CAAC,UAAU,CAAC,EAAE;AACpF,oBAAoB,OAAOZ,KAAG,CAAC;AAC/B,wBAAwB,EAAE,EAAEe,WAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,wBAAwB,OAAO,EAAED,aAAW,CAAC,WAAW,EAAE,UAAU,CAAC;AACrE,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,qBAAqB,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAACH,aAAW,CAAC,UAAU,CAAC,EAAE;AACnF,oBAAoB,OAAOX,KAAG,CAAC;AAC/B,wBAAwB,EAAE,EAAEe,WAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,wBAAwB,OAAO,EAAED,aAAW,CAAC,UAAU,EAAE,UAAU,CAAC;AACpE,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAOR,UAAQ,CAAC,UAAU,KAAK,EAAE;AAC7C,gBAAgB,OAAO,UAAU,KAAK,SAAS;AAC/C,sBAAsB,EAAE,EAAE,EAAES,WAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE;AAC9E,sBAAsBC,WAAS,CAACD,WAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AACzD,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3C,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,UAAU,UAAU,EAAE;AAC5C,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAOhB,IAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,YAAY,EAAE;AAC3C,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAOC,KAAG,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACvF,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,SAAS,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACjF,KAAK,CAAC;AACN,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC,EAAE,CAAC,CAAC;AACL;AACA;AACA;AACA,IAAIkB,QAAM,GAAGD,SAAO,CAAC,MAAM,CAAC;AAC5B;AACA,IAAIE,QAAM,GAAGF,SAAO,CAAC,MAAM,CAAC;AAC5B;AACA,IAAIG,SAAO,GAAGH,SAAO,CAAC,OAAO,CAAC;AAC9B;AACA,IAAII,SAAO,GAAGJ,SAAO,CAAC,OAAO,CAAC;AAC9B;AACkBA,SAAO,CAAC,YAAY;AACtC;AACA,IAAIK,UAAQ,GAAGL,SAAO,CAAC,QAAQ,CAAC;AAChC;AACA,IAAIM,QAAM,GAAGN,SAAO,CAAC,MAAM,CAAC;AAC5B;AACA,IAAIO,OAAK,GAAGP,SAAO,CAAC,KAAK,CAAC;AAC1B;AACYA,SAAO,CAAC,MAAM;AAC1B;AACWA,SAAO,CAAC,KAAK;AACxB;AACA,IAAIQ,UAAQ,GAAGR,SAAO,CAAC,QAAQ,CAAC;AAChC;AACA,IAAIS,OAAK,GAAGT,SAAO,CAAC,KAAK,CAAC;AAC1B;AACYA,SAAO,CAAC,MAAM;AAC1B;AACmBA,SAAO,CAAC,aAAa;AACxC;AACoBA,SAAO,CAAC,YAAY;AACxC;AACcA,SAAO,CAAC,QAAQ;AAC9B;AACcA,SAAO,CAAC,QAAQ;AAC9B;AACWA,SAAO,CAAC,KAAK;AACxB;AACA,IAAI,IAAI,GAAGA,SAAO,CAAC,IAAI;;AClzBvB,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC3G,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;AAClQ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,EAAE,GAAG,UAAU,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACtE;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,GAAG,UAAU,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACrE;AACA;AACA;AACA;AACA,IAAI,SAAS,GAAG,UAAU,CAAC,EAAE;AAC7B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,GAAG,UAAU,YAAY,EAAE,CAAC,EAAE;AAC7C,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC;AACnD,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE;AACjC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AACvB,QAAQ,OAAO,CAAC,CAAC,MAAM,CAAC;AACxB,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC;AACtB,KAAK;AACL,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAI,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC1B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA,IAAI,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;AAChC,IAAI,OAAO,EAAE,CAAC,EAAE,KAAK,KAAK,GAAG,EAAE;AAC/B,QAAQ,EAAE,CAAC,EAAE,KAAK,KAAK,GAAG,EAAE;AAC5B,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAI,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC/B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC9B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIT,UAAQ,GAAG,WAAW;AAC1B,IAAIA,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK,CAAC;AACN,IAAI,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC,CAAC;AACF;AACA,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACvF,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;AACvE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChF,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,SAAS;AACT,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD;AACA,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE;AACvB,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE;AACnC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,CAAC,KAAK,QAAQ,EAAE;AACjC;AACA,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAC9B,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACnC,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;AACvC,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,gBAAgB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1C,oBAAoB,OAAO,KAAK,CAAC;AACjC,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT;AACA,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACnD,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,YAAY,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClD,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA,IAAI,WAAW,GAAG,UAAU,IAAI,EAAE,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AAClE,IAAI,YAAY,GAAG,UAAU,IAAI,EAAE;AACnC,IAAI,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3E,CAAC,CAAC;AACF,IAAI,UAAU,GAAG,UAAU,IAAI,EAAE;AACjC,IAAI,QAAQ,OAAO,IAAI;AACvB,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,UAAU,CAAC;AAC9B,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,UAAU,CAAC;AAC9B,QAAQ,KAAK,SAAS;AACtB,YAAY,OAAO,WAAW,CAAC;AAC/B,QAAQ,KAAK,WAAW;AACxB,YAAY,OAAO,WAAW,CAAC;AAC/B,QAAQ,KAAK,QAAQ;AACrB,YAAY,IAAI,IAAI,YAAY,KAAK,EAAE;AACvC,gBAAgB,OAAO,UAAU,CAAC;AAClC,aAAa;AACb,iBAAiB,IAAI,IAAI,KAAK,IAAI,EAAE;AACpC,gBAAgB,OAAO,MAAM,CAAC;AAC9B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,WAAW,CAAC;AACnC,aAAa;AACb,QAAQ;AACR,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxC,KAAK;AACL,CAAC,CAAC;AACF,IAAI,WAAW,GAAG,UAAU,QAAQ,EAAE,GAAG,EAAE;AAC3C,IAAI,OAAO,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAC/D,CAAC,CAAC;AACF,IAAI,SAAS,GAAG,UAAU,KAAK,EAAE;AACjC,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,QAAQ,OAAO,IAAI,KAAK,QAAQ,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtH,CAAC,CAAC;AACF,IAAI,SAAS,GAAG,UAAU,KAAK,EAAE,EAAE,EAAE;AACrC,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,IAAI,QAAQA,UAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE;AACxD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,kBAAkB,YAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,OAAO,CAAC,MAAM,EAAE;AAC7B,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE;AACnC,YAAY,OAAO,QAAQ,CAAC,UAAU,KAAK,EAAE,EAAE,QAAQ;AACvD,gBAAgB,IAAI,EAAE,cAAc;AACpC,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,EAAE,EAAE,OAAO,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;AAC9C,gBAAgB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;AAC5C,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,SAAS,CAAC;AACV;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,EAAE,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACjF;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,EAAE,OAAO,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;AAChC,YAAY,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvF,SAAS,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE;AACpC,YAAY,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC/C,gBAAgB,OAAO,OAAO,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACvG,aAAa,CAAC,CAAC;AACf,SAAS,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;AACnD,YAAY,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE,EAAE,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;AACnI,SAAS,CAAC;AACV,KAAK;AACL;AACA;AACA;AACA,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY;AACjC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,IAAI,KAAK,QAAQ;AAC3C,kBAAkB,EAAE,CAAC,IAAI,CAAC;AAC1B,kBAAkB,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAClE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY;AACjC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,IAAI,KAAK,QAAQ;AAC3C,kBAAkB,EAAE,CAAC,IAAI,CAAC;AAC1B,kBAAkB,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAClE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,YAAY;AAClC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,IAAI,KAAK,SAAS;AAC5C,kBAAkB,EAAE,CAAC,IAAI,CAAC;AAC1B,kBAAkB,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACnE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;AACvC,kBAAkB,EAAE,CAAC,KAAK,CAAC;AAC3B,kBAAkB,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1G,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,MAAM,GAAG,UAAU,QAAQ,EAAE;AACzC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;AAChD,gBAAgB,IAAI,GAAG,GAAG,EAAE,CAAC;AAC7B,gBAAgB,KAAK,IAAI,GAAG,IAAI,QAAQ,EAAE;AAC1C,oBAAoB,IAAI,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACtD,wBAAwB,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,wBAAwB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AAC3C;AACA,4BAA4B,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;AACxD,gCAAgC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACpD,6BAA6B;AAC7B,yBAAyB;AACzB,6BAA6B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AAC1D,4BAA4B,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,GAAG,GAAG,mCAAmC,EAAE,CAAC,CAAC;AAC7G,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AAC/B,aAAa;AACb,iBAAiB,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;AACzC,gBAAgB,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAChC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACxE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,GAAG,UAAU,OAAO,EAAE;AACvC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE;AAC9C,gBAAgB,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AACpD,oBAAoB,OAAO,QAAQ,CAAC,UAAU,MAAM,EAAE,EAAE,OAAO,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvH,iBAAiB,CAAC;AAClB,gBAAgB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACxD,oBAAoB,OAAO,IAAI,CAAC,UAAU,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnH,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,aAAa;AACb,iBAAiB,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;AACxC,gBAAgB,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAChC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACvE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,GAAG,UAAU,QAAQ,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;AACnC,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;AACrD,oBAAoB,OAAO,GAAG,CAAC;AAC/B,wBAAwB,OAAO,EAAE,6BAA6B,GAAG,QAAQ,CAAC,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAAC,MAAM;AACvH,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,GAAG,EAAE,CAAC;AAChC,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,oBAAoB,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,oBAAoB,IAAI,GAAG,CAAC,EAAE,EAAE;AAChC,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;AAC/C,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACxE,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;AAClC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,oBAAoB,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACnG,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE;AACtC,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvE,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,YAAY,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE;AAC7C,QAAQ,IAAI,EAAE,GAAG,EAAE,CAAC;AACpB,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACvC,SAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1I,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,YAAY,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAChG;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,WAAW,GAAG,YAAY;AACtC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACjE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,OAAO,EAAE;AACtC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;AACpC,gBAAgB,IAAI,GAAG,GAAG,EAAE,CAAC;AAC7B,gBAAgB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AACtC,oBAAoB,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAClD,wBAAwB,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,wBAAwB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AAC3C,4BAA4B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAChD,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AAC/B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACxE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,QAAQ,GAAG,UAAU,OAAO,EAAE;AAC1C,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,QAAQ,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACrI,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,KAAK,GAAG,YAAY;AAChC,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,QAAQ,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACzC,SAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC;AAC5B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtD,gBAAgB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjD,gBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AACnC,oBAAoB,OAAO,CAAC,CAAC;AAC7B,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACxC,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,UAAU,GAAG,MAAM;AACnC,iBAAiB,GAAG,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,UAAU,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;AACvG,iBAAiB,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,YAAY,OAAO,GAAG,CAAC;AACvB,gBAAgB,OAAO,EAAE,mEAAmE,GAAG,UAAU,GAAG,KAAK;AACjH,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,WAAW,GAAG,UAAU,YAAY,EAAE,OAAO,EAAE;AAC3D,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;AAChD,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC;AAClC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,gBAAgB,IAAI,UAAU,KAAK,SAAS,EAAE;AAC9C,oBAAoB,OAAO,GAAG,CAAC;AAC/B,wBAAwB,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,wBAAwB,OAAO,EAAE,qBAAqB;AACtD,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,qBAAqB,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;AACpF,oBAAoB,OAAO,GAAG,CAAC;AAC/B,wBAAwB,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,wBAAwB,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC;AACrE,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,qBAAqB,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;AACnF,oBAAoB,OAAO,GAAG,CAAC;AAC/B,wBAAwB,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,wBAAwB,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC;AACpE,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,QAAQ,CAAC,UAAU,KAAK,EAAE;AAC7C,gBAAgB,OAAO,UAAU,KAAK,SAAS;AAC/C,sBAAsB,EAAE,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE;AAC9E,sBAAsB,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AACzD,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3C,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,UAAU,UAAU,EAAE;AAC5C,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,YAAY,EAAE;AAC3C,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACvF,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,SAAS,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACjF,KAAK,CAAC;AACN,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC,EAAE,CAAC,CAAC;AACL;AACA;AACA;AACA,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC5B;AACA,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC5B;AACA,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC9B;AACA,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC9B;AACA,OAAO,CAAC,WAAW,CAAC;AACpB;AACA,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChC;AACA,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC5B;AACA,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC1B;AACA,OAAO,CAAC,KAAK,CAAC;AACd;AACA,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACxB;AACA,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChC;AACA,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC1B;AACA,OAAO,CAAC,KAAK,CAAC;AACd;AACA,OAAO,CAAC,YAAY,CAAC;AACrB;AACA,OAAO,CAAC,WAAW,CAAC;AACpB;AACA,OAAO,CAAC,OAAO,CAAC;AAChB;AACA,OAAO,CAAC,OAAO,CAAC;AAChB;AACA,OAAO,CAAC,IAAI,CAAC;AACb;AACA,OAAO,CAAC,IAAI,CAAC;AACb;AACA,MAAMmB,uBAAqB,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAC;AACjG,MAAMC,0BAAwB,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,EAAE,gCAAgC,CAAC,CAAC;AACrG;AACA,MAAMC,yBAAuB,GAAG,MAAM,CAAC;AACvC,IAAI,IAAI,EAAEF,uBAAqB;AAC/B,IAAI,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AACnC,IAAI,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,IAAI,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AACpC,CAAC,CAAC,CAAC;AACH,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAClI,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,IAAI,GAAG,EAAEA,uBAAqB;AAC9B,CAAC,CAAC,CAAC;AACH,MAAM,aAAa,GAAG,MAAM,CAAC;AAC7B,IAAI,GAAG,EAAEA,uBAAqB;AAC9B,IAAI,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACzC,IAAI,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACzC,CAAC,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,IAAI,GAAG,EAAEA,uBAAqB;AAC9B,IAAI,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACzC,IAAI,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACzC,IAAI,KAAK,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC1C,CAAC,CAAC,CAAC;AACH,MAAM,yBAAyB,GAAG,MAAM,CAAC;AACzC,IAAI,QAAQ,EAAE,KAAK,CAACA,uBAAqB,CAAC;AAC1C,IAAI,WAAW,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAChD,IAAI,UAAU,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC/C,IAAI,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;AACrC,CAAC,CAAC,CAAC;AACH,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,IAAI,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACzD,IAAI,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAACA,uBAAqB,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AACH,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,IAAI,UAAU,EAAE,QAAQ,CAAC,KAAK,CAACA,uBAAqB,CAAC,CAAC;AACtD,IAAI,UAAU,EAAE,QAAQ,CAAC,KAAK,CAACA,uBAAqB,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,IAAI,IAAI,EAAEA,uBAAqB;AAC/B,IAAI,WAAW,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAChD,IAAI,UAAU,EAAE,QAAQ,CAAC,KAAK,CAACA,uBAAqB,CAAC,CAAC;AACtD,IAAI,UAAU,EAAE,QAAQ,CAAC,KAAK,CAACA,uBAAqB,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AACH,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,IAAI,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACvC,IAAI,YAAY,EAAE,QAAQ,CAAC,oBAAoB,CAAC;AAChD,IAAI,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AACH,MAAM,+BAA+B,GAAG,MAAM,CAAC;AAC/C,IAAI,GAAG,EAAEA,uBAAqB;AAC9B,IAAI,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC3B,IAAI,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC5B,IAAI,KAAK,EAAE,QAAQ,CAACC,0BAAwB,CAAC;AAC7C,IAAI,MAAM,EAAE,QAAQ,CAACA,0BAAwB,CAAC;AAC9C,CAAC,CAAC,CAAC;AACH,MAAM,iCAAiC,GAAG,MAAM,CAAC;AACjD,IAAI,IAAI,EAAE,QAAQ,CAACD,uBAAqB,CAAC;AACzC,IAAI,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,4BAA4B,CAAC,CAAC;AACpG,IAAI,KAAK,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC1C,IAAI,OAAO,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC5C,IAAI,gBAAgB,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;AACzC,IAAI,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC5B,IAAI,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC/B,IAAI,OAAO,EAAE,QAAQ,CAAC,+BAA+B,CAAC;AACtD,IAAI,OAAO,EAAE,QAAQ,CAAC,KAAK,CAACE,yBAAuB,CAAC,CAAC;AACrD,IAAI,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC/B,CAAC,CAAC,CAAC;AACH,MAAM,2BAA2B,GAAG,KAAK,CAAC,MAAM,CAAC;AACjD,IAAI,QAAQ,EAAE,KAAK,CAAC,iCAAiC,EAAE,OAAO,EAAE,CAAC;AACjE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AACf,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,IAAI,IAAI,EAAEF,uBAAqB;AAC/B,IAAI,KAAK,EAAEA,uBAAqB;AAChC,IAAI,KAAK,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC1C,IAAI,OAAO,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC5C,IAAI,QAAQ,EAAEA,uBAAqB;AACnC,IAAI,YAAY,EAAEA,uBAAqB;AACvC,IAAI,OAAO,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC5C,IAAI,WAAW,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAChD,IAAI,YAAY,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACjD,IAAI,YAAY,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACjD,IAAI,SAAS,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC9C,IAAI,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,CAACA,uBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,IAAI,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,IAAI,YAAY,EAAE,OAAO,EAAE;AAC3B,IAAI,OAAO,EAAE,QAAQ,CAAC,KAAK,CAACE,yBAAuB,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AACH,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAC5C,IAAI,KAAK,EAAE,QAAQ,CAACF,uBAAqB,CAAC;AAC1C,IAAI,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACzC,IAAI,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACvC,IAAI,OAAO,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC5C,IAAI,KAAK,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC1C,IAAI,OAAO,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC5C,IAAI,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACzC,IAAI,WAAW,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAChD,IAAI,UAAU,EAAE,QAAQ,CAAC,KAAK,CAACA,uBAAqB,CAAC,CAAC;AACtD,IAAI,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACzC,IAAI,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACrD,IAAI,YAAY,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACjD,IAAI,YAAY,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACjD,IAAI,QAAQ,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC7C,IAAI,SAAS,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC9C,IAAI,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5C,IAAI,aAAa,EAAE,QAAQ,CAAC,2BAA2B,CAAC;AACxD,IAAI,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACvC,CAAC,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,IAAI,KAAK,EAAEA,uBAAqB;AAChC,IAAI,IAAI,EAAEA,uBAAqB;AAC/B,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,OAAO,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC5C,IAAI,KAAK,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC1C,IAAI,OAAO,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC5C,IAAI,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACzC,IAAI,WAAW,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAChD,IAAI,UAAU,EAAE,QAAQ,CAAC,KAAK,CAACA,uBAAqB,CAAC,CAAC;AACtD,IAAI,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACzC,IAAI,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACrD,IAAI,YAAY,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACjD,IAAI,YAAY,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACjD,IAAI,QAAQ,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC7C,IAAI,SAAS,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC9C,IAAI,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5C,IAAI,aAAa,EAAE,QAAQ,CAAC,2BAA2B,CAAC;AACxD,IAAI,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACvC,IAAI,iBAAiB,EAAE,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AACH,MAAM,qBAAqB,GAAG,KAAK,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;AAC9E;AACA,MAAM,gCAAgC,GAAG,CAAC,KAAK,KAAK;AACpD,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACrG,CAAC,CAAC;AACF;AACA,MAAM,WAAW,CAAC;AAClB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,2BAA2B,GAAG;AAC3C,YAAY,GAAG,EAAE,QAAQ;AACzB,YAAY,MAAM,EAAE,KAAK;AACzB,YAAY,MAAM,EAAE,QAAQ;AAC5B,YAAY,YAAY,EAAE,WAAW;AACrC,YAAY,KAAK,EAAE,QAAQ;AAC3B,SAAS,CAAC;AACV,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO;AACf,YAAY,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9D,YAAY,yBAAyB,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChF,YAAY,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5E,SAAS,CAAC;AACV,KAAK;AACL,IAAI,gBAAgB,CAAC,UAAU,EAAE;AACjC,QAAQ,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;AAC3B,YAAY,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,gCAAgC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;AAChG,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE;AACpD,YAAY,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACpD,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,QAAQ,EAAE;AACjC,YAAY,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACpD,SAAS;AACT,QAAQ,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC;AAC9E,KAAK;AACL,IAAI,yBAAyB,CAAC,UAAU,EAAE;AAC1C,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACtE,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACjE,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;AAC3B,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,oBAAoB,EAAE,gCAAgC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/H,SAAS;AACT,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,+BAA+B,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACzF,QAAQ,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC;AACxE,QAAQ,IAAI,mBAAmB,GAAG;AAClC,YAAY,IAAI,EAAE,UAAU,CAAC,KAAK;AAClC,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,aAAa;AACzB,YAAY,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,KAAK,KAAK;AACzG,sBAAsB,cAAc,CAAC,OAAO;AAC5C,sBAAsB,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;AAC/F,YAAY,KAAK,EAAE,UAAU,CAAC,KAAK;AACnC,YAAY,OAAO,EAAE,UAAU,CAAC,OAAO;AACvC,YAAY,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,OAAO,CAAC;AACjE,YAAY,OAAO,EAAE,UAAU,CAAC,WAAW;AAC3C,YAAY,IAAI,EAAE,OAAO,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS;AAC5H,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE;AAC/F,YAAY,MAAM,SAAS,GAAG,iCAAiC,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxG,YAAY,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;AAC/B,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,oBAAoB,EAAE,gCAAgC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACnI,aAAa;AACb,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACvD,gBAAgB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;AACxE,aAAa;AACb,YAAY,mBAAmB,GAAG,IAAI,CAAC,gCAAgC,CAAC,mBAAmB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AAC/G,SAAS;AACT,QAAQ,OAAO,mBAAmB,CAAC;AACnC,KAAK;AACL,IAAI,uBAAuB,CAAC,UAAU,EAAE;AACxC,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACvB,QAAQ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACtE,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACjE,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;AAC3B,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,oBAAoB,EAAE,gCAAgC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/H,SAAS;AACT,QAAQ,IAAI,OAAO,KAAK,KAAK,EAAE;AAC/B,YAAY,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAChD,YAAY,OAAO;AACnB,gBAAgB,IAAI,EAAE,gBAAgB,CAAC,KAAK;AAC5C,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,OAAO,EAAE;AACzB,oBAAoB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;AACzD,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,gBAAgB,CAAC,OAAO;AACjD,gBAAgB,KAAK,EAAE,gBAAgB,CAAC,KAAK;AAC7C,gBAAgB,OAAO,EAAE,gBAAgB,CAAC,OAAO;AACjD,gBAAgB,OAAO,EAAE,gBAAgB,CAAC,WAAW;AACrD,gBAAgB,IAAI,EAAE,CAAC,EAAE,GAAG,gBAAgB,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;AACnG,gBAAgB,OAAO,EAAE,gBAAgB,CAAC,OAAO;AACjD,gBAAgB,gBAAgB,EAAE;AAClC,oBAAoB,YAAY,EAAE,gBAAgB,CAAC,YAAY;AAC/D,oBAAoB,MAAM,EAAE,gBAAgB,CAAC,MAAM;AACnD,oBAAoB,YAAY,EAAE,gBAAgB,CAAC,YAAY;AAC/D,oBAAoB,YAAY,EAAE,gBAAgB,CAAC,YAAY;AAC/D,oBAAoB,SAAS,EAAE,gBAAgB,CAAC,SAAS;AACzD,oBAAoB,KAAK,EAAE,gBAAgB,CAAC,KAAK;AACjD,oBAAoB,YAAY,EAAE,gBAAgB,CAAC,YAAY;AAC/D,iBAAiB;AACjB,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAC5C,QAAQ,IAAI,iBAAiB,GAAG;AAChC,YAAY,IAAI,EAAE,gBAAgB,CAAC,KAAK;AACxC,YAAY,IAAI,EAAE,IAAI,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACzE,YAAY,OAAO,EAAE,gBAAgB,CAAC,OAAO;AAC7C,YAAY,OAAO,EAAE,gBAAgB,CAAC,OAAO;AAC7C,YAAY,KAAK,EAAE,gBAAgB,CAAC,KAAK;AACzC,YAAY,OAAO,EAAE,gBAAgB,CAAC,OAAO;AAC7C,YAAY,OAAO,EAAE,gBAAgB,CAAC,WAAW;AACjD,YAAY,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,KAAK,CAAC;AACrE,YAAY,OAAO,EAAE,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,CAAC;AACzE,YAAY,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC;AAClG,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE;AACrG,YAAY,IAAI,OAAO,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE;AACzI,gBAAgB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;AACxE,aAAa;AACb,YAAY,iBAAiB,GAAG,IAAI,CAAC,kCAAkC,CAAC,iBAAiB,EAAE,CAAC,EAAE,GAAG,gBAAgB,CAAC,aAAa,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpL,SAAS;AACT,QAAQ,OAAO,iBAAiB,CAAC;AACjC,KAAK;AACL,IAAI,+BAA+B,CAAC,UAAU,EAAE,OAAO,EAAE;AACzD,QAAQ,IAAI,OAAO,KAAK,KAAK,EAAE;AAC/B,YAAY,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3H,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxJ,KAAK;AACL,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE;AAChC,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,IAAI,GAAG,CAAC;AAChB,QAAQ,IAAI,OAAO,KAAK,KAAK,EAAE;AAC/B,YAAY,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnE,YAAY,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC;AACpH,SAAS;AACT,aAAa;AACb,YAAY,GAAG,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;AACxF,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC7C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,wCAAwC,EAAE,OAAO,KAAK,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACjJ,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,IAAI,6BAA6B,CAAC,UAAU,EAAE;AAC9C,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC;AAChK,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK;AACxE,YAAY,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,UAAU,CAAC;AACxD,YAAY,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,UAAU,CAAC,CAAC;AACnE,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,qBAAqB,CAAC,UAAU,EAAE,OAAO,EAAE;AAC/C,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,QAAQ,IAAI,OAAO,KAAK,KAAK,EAAE;AAC/B,YAAY,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;AACtL,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC;AAChL,KAAK;AACL,IAAI,gCAAgC,CAAC,WAAW,EAAE,sBAAsB,EAAE;AAC1E,QAAQ,IAAI,yBAAyB,GAAG,WAAW,CAAC;AACpD,QAAQ,IAAI,sBAAsB,CAAC,OAAO,EAAE;AAC5C,YAAY,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,aAAa,CAAC,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;AACxH,YAAY,yBAAyB,CAAC,aAAa,GAAG,OAAO,CAAC;AAC9D,YAAY,yBAAyB,CAAC,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC;AACvE,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE;AAC3D,YAAY,yBAAyB,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,yBAAyB,CAAC,cAAc,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAC/J,SAAS;AACT,QAAQ,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,yBAAyB,CAAC,EAAE,sBAAsB,CAAC,CAAC;AACxH,QAAQ,OAAO,yBAAyB,CAAC,OAAO,CAAC;AACjD,QAAQ,OAAO,yBAAyB,CAAC,OAAO,CAAC;AACjD,QAAQ,OAAO,yBAAyB,CAAC;AACzC,KAAK;AACL,IAAI,kCAAkC,CAAC,MAAM,EAAE,iBAAiB,EAAE;AAClE,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACjK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;AACtD,YAAY,SAAS,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACzF,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,CAAC;AACD;AACA,MAAM,UAAU,GAAG;AACnB,IAAI,MAAM,EAAE;AACZ,+BAAQA,uBAAqB;AAC7B,kCAAQC,0BAAwB;AAChC,KAAK;AACL,IAAI,IAAI,EAAE;AACV,QAAQ,qBAAqB;AAC7B,QAAQ,mBAAmB;AAC3B,QAAQ,mBAAmB;AAC3B,KAAK;AACL,CAAC,CAAC;AACF;AACA,IAAI,cAAc,CAAC;AACnB,CAAC,UAAU,cAAc,EAAE;AAC3B,IAAI,cAAc,CAAC,gBAAgB,CAAC,GAAG,4DAA4D,CAAC;AACpG,IAAI,cAAc,CAAC,oBAAoB,CAAC,GAAG,0BAA0B,CAAC;AACtE,IAAI,cAAc,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;AAClD,IAAI,cAAc,CAAC,kBAAkB,CAAC,GAAG,oBAAoB,CAAC;AAC9D,IAAI,cAAc,CAAC,mBAAmB,CAAC,GAAG,4BAA4B,CAAC;AACvE,IAAI,cAAc,CAAC,6BAA6B,CAAC,GAAG,8BAA8B,CAAC;AACnF,IAAI,cAAc,CAAC,wBAAwB,CAAC,GAAG,wCAAwC,CAAC;AACxF,IAAI,cAAc,CAAC,sBAAsB,CAAC,GAAG,iCAAiC,CAAC;AAC/E,IAAI,cAAc,CAAC,kBAAkB,CAAC,GAAG,+BAA+B,CAAC;AACzE,IAAI,cAAc,CAAC,2BAA2B,CAAC,GAAG,+CAA+C,CAAC;AAClG,IAAI,cAAc,CAAC,0BAA0B,CAAC,GAAG,yGAAyG,CAAC;AAC3J,CAAC,EAAE,cAAc,KAAK,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5C;YACA,MAAM,GAAG,CAAC;AACV,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;AACpC,QAAQ,IAAI,CAAC,OAAO,GAAG;AACvB,YAAY,OAAO,EAAE,cAAc;AACnC,SAAS,CAAC;AACV,KAAK;AACL,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACzB,YAAY,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC;AACnD,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;AAC5B,KAAK;AACL,EAAC;AACD;AACA,MAAM,GAAG,GAAG,IAAIE,KAAG,EAAE,CAAC;AACT,GAAG,CAAC,KAAK;AACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AACf,GAAG,CAAC;;ACtnCZ,MAAM,qBAAqB,GAAoBZ,QAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAC;AAClH,MAAM,wBAAwB,GAAoBC,QAAM,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,EAAE,gCAAgC,CAAC,CAAC;AACtH,MAAM,6BAA6B,GAAgCM,UAAQ,CAAC,qBAAqB,CAAC,CAAC;AAEnG,MAAM,gBAAgB,GAAwBC,OAAK,CACtDJ,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,YAAY,CAAC,EACtBA,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,eAAe,CAAC,EACzBA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,WAAW,CAAC,EACrBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,OAAO,CAAC,CACpB,CAAC;AAEK,MAAM,2BAA2B,GAAkCI,OAAK,CAC3EJ,UAAQ,CAAC,YAAY,CAAC,EACtBA,UAAQ,CAAC,aAAa,CAAC,EACvBA,UAAQ,CAAC,aAAa,CAAC,EACvBA,UAAQ,CAAC,eAAe,CAAC,EACzBA,UAAQ,CAAC,WAAW,CAAC,EACrBA,UAAQ,CAAC,gBAAgB,CAAC,EAC1BA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,YAAY,CAAC,EACtBA,UAAQ,CAAC,OAAO,CAAC,EACjBA,UAAQ,CAAC,OAAO,CAAC,EACjBA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,aAAa,CAAC,EACvBA,UAAQ,CAAC,YAAY,CAAC,CACzB,CAAC;AAEK,MAAM,+BAA+B,GAAsCI,OAAK,CACnFJ,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,yBAAyB,CAAC,EACnCA,UAAQ,CAAC,iBAAiB,CAAC,EAC3BA,UAAQ,CAAC,iBAAiB,CAAC,EAC3BA,UAAQ,CAAC,kBAAkB,CAAC,EAC5BA,UAAQ,CAAC,cAAc,CAAC,EACxBA,UAAQ,CAAC,OAAO,CAAC,CACpB,CAAC;AAEK,MAAM,4BAA4B,GAAmCI,OAAK,CAC7EJ,UAAQ,CAAC,aAAa,CAAC,EACvBA,UAAQ,CAAC,eAAe,CAAC,EACzBA,UAAQ,CAAC,eAAe,CAAC,EACzBA,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,mBAAmB,CAAC,EAC7BA,UAAQ,CAAC,0BAA0B,CAAC,EACpCA,UAAQ,CAAC,sBAAsB,CAAC,EAChCA,UAAQ,CAAC,yBAAyB,CAAC,EACnCA,UAAQ,CAAC,kBAAkB,CAAC,EAC5BA,UAAQ,CAAC,kBAAkB,CAAC,EAC5BA,UAAQ,CAAC,oBAAoB,CAAC,CACjC,CAAC;AAEK,MAAM,kCAAkC,GAAyCI,OAAK,CACzFJ,UAAQ,CAAC,mBAAmB,CAAC,EAC7BA,UAAQ,CAAC,mBAAmB,CAAC,EAC7BA,UAAQ,CAAC,kBAAkB,CAAC,EAC5BA,UAAQ,CAAC,mBAAmB,CAAC,EAC7BA,UAAQ,CAAC,eAAe,CAAC,EACzBA,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,oBAAoB,CAAC,EAC9BA,UAAQ,CAAC,oBAAoB,CAAC,EAC9BA,UAAQ,CAAC,OAAO,CAAC,EACjBA,UAAQ,CAAC,OAAO,CAAC,EACjBA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,WAAW,CAAC,EACrBA,UAAQ,CAAC,kBAAkB,CAAC,EAC5BA,UAAQ,CAAC,sBAAsB,CAAC,EAChCA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,mBAAmB,CAAC,EAC7BA,UAAQ,CAAC,aAAa,CAAC,CAC1B,CAAC;AAEK,MAAM,2BAA2B,GAAkCI,OAAK,CAC3EJ,UAAQ,CAAC,gBAAgB,CAAC,EAC1BA,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,kBAAkB,CAAC,CAC/B,CAAC;AAEK,MAAM,8BAA8B,GAAwDI,OAAK,CACpGJ,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,OAAO,CAAC,EACjBA,UAAQ,CAAC,QAAQ,CAAC,CACrB,CAAC;AAEK,MAAM,mBAAmB,GAA6CC,QAAM,CAAC;IAChF,GAAG,EAAEJ,QAAM,EAAE;IACb,IAAI,EAAEA,QAAM,EAAE;AACd,IAAA,KAAK,EAAE,wBAAwB;AAC/B,IAAA,MAAM,EAAE,wBAAwB;AACnC,CAAA,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAA2DM,UAAQ,CAACF,QAAM,CAAC;AAC7G,IAAA,GAAG,EAAEE,UAAQ,CAACN,QAAM,EAAE,CAAC;AACvB,IAAA,IAAI,EAAEM,UAAQ,CAACN,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEM,UAAQ,CAAC,wBAAwB,CAAC;AACzC,IAAA,MAAM,EAAEA,UAAQ,CAAC,wBAAwB,CAAC;AAC1C,IAAA,OAAO,EAAEA,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC5B,IAAA,UAAU,EAAEI,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,IAAA,iBAAiB,EAAEA,UAAQ,CAAC,8BAA8B,CAAC;AAC3D,IAAA,QAAQ,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACzC,IAAA,iBAAiB,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACrD,CAAA,CAAC,CAAC,CAAC;AAEG,MAAM,uBAAuB,GAA8BF,QAAM,CAAC;AACrE,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,GAAG,EAAE,qBAAqB;AAC1B,IAAA,OAAO,EAAE,yBAAyB;AACrC,CAAA,CAAC,CAAC;AAEI,MAAM,kBAAkB,GAAyBA,QAAM,CAAC;AAC3D,IAAA,QAAQ,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,CAAA,CAAC,CAAC;AAEI,MAAM,qBAAqB,GAA4BF,QAAM,CAAC;AACjE,IAAA,QAAQ,EAAE,qBAAqB;AAC/B,IAAA,IAAI,EAAE,qBAAqB;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAAiCA,QAAM,CAAC;AACpE,IAAA,QAAQ,EAAE,qBAAqB;AAClC,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAA0BA,QAAM,CAAC;AAC7D,IAAA,OAAO,EAAEC,OAAK,CAAC,qBAAqB,CAAC;IACrC,gBAAgB,EAAEJ,SAAO,EAAE;AAC9B,CAAA,CAAC,CAAC;AAGI,MAAM,wBAAwB,GAA+BG,QAAM,CAAC;AACvE,IAAA,QAAQ,EAAE,qBAAqB;IAC/B,KAAK,EAAEL,QAAM,EAAE;AAClB,CAAA,CAAC,CAAC;AAEI,MAAM,qBAAqB,GAA4BK,QAAM,CAAC;AACjE,IAAA,QAAQ,EAAE,qBAAqB;IAC/B,QAAQ,EAAEH,SAAO,EAAE;AACtB,CAAA,CAAC,CAAC;AAEI,MAAM,6BAA6B,GAAoCG,QAAM,CAAC;AACjF,IAAA,QAAQ,EAAE,qBAAqB;AAC/B,IAAA,GAAG,EAAEE,UAAQ,CAACN,QAAM,EAAE,CAAC;AACvB,IAAA,IAAI,EAAEM,UAAQ,CAACN,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEM,UAAQ,CAAC,wBAAwB,CAAC;AACzC,IAAA,MAAM,EAAEA,UAAQ,CAAC,wBAAwB,CAAC;AAC1C,IAAA,QAAQ,EAAEA,UAAQ,CAACL,SAAO,EAAE,CAAC;AAChC,CAAA,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAAgCG,QAAM,CAAC;AACzE,IAAA,QAAQ,EAAE,qBAAqB;IAC/B,MAAM,EAAEA,QAAM,CAAC;QACX,GAAG,EAAEJ,QAAM,EAAE;QACb,IAAI,EAAEA,QAAM,EAAE;AACd,QAAA,KAAK,EAAE,wBAAwB;AAC/B,QAAA,MAAM,EAAE,wBAAwB;KACnC,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,8BAA8B,GAAqCI,QAAM,CAAC;IACnF,MAAM,EAAEA,QAAM,CAAC;QACX,GAAG,EAAEJ,QAAM,EAAE;QACb,IAAI,EAAEA,QAAM,EAAE;AACd,QAAA,KAAK,EAAE,wBAAwB;AAC/B,QAAA,MAAM,EAAE,wBAAwB;KACnC,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,sBAAsB,GAA6BI,QAAM,CAAC;AACnE,IAAA,QAAQ,EAAE,qBAAqB;AAC/B,IAAA,GAAG,EAAE,qBAAqB;AAC7B,CAAA,CAAC,CAAC;AAEI,MAAM,UAAU,GAAqBF,SAAO,EAAE,CAAC;AAE/C,MAAM,aAAa,GAAsDE,QAAM,CAAC;AACnF,IAAA,GAAG,EAAEE,UAAQ,CAACN,QAAM,EAAE,CAAC;AACvB,IAAA,IAAI,EAAEM,UAAQ,CAACN,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEM,UAAQ,CAAC,wBAAwB,CAAC;AACzC,IAAA,MAAM,EAAEA,UAAQ,CAAC,wBAAwB,CAAC;AAC7C,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAA0BF,QAAM,CAAC;AAC7D,IAAA,EAAE,EAAE,qBAAqB;AACzB,IAAA,eAAe,EAAE,qBAAqB;AACzC,CAAA,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAA2DA,QAAM,CAAC;AACpG,IAAA,GAAG,EAAE,qBAAqB;AAC1B,IAAA,GAAG,EAAEE,UAAQ,CAACN,QAAM,EAAE,CAAC;AACvB,IAAA,IAAI,EAAEM,UAAQ,CAACN,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEM,UAAQ,CAAC,wBAAwB,CAAC;AACzC,IAAA,MAAM,EAAEA,UAAQ,CAAC,wBAAwB,CAAC;AAC7C,CAAA,CAAC,CAAC;AAEI,MAAM,uBAAuB,GAAgDF,QAAM,CAAC;AACvF,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,WAAW,EAAEE,UAAQ,CAACP,QAAM,EAAE,CAAC;IAC/B,QAAQ,EAAEO,UAAQ,CAACD,OAAK,CAACN,QAAM,EAAE,CAAC,CAAC;AACnC,IAAA,YAAY,EAAEO,UAAQ,CAACF,QAAM,EAAE,CAAC;AACnC,CAAA,CAAC,CAAC;AAE8DA,QAAM,CAAC;AACpE,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,KAAK,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACtC,IAAA,OAAO,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACxC,IAAA,KAAK,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACtC,IAAA,QAAQ,EAAE,qBAAqB;AAC/B,IAAA,YAAY,EAAE,qBAAqB;AACnC,IAAA,OAAO,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACxC,IAAA,WAAW,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,IAAA,YAAY,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC7C,IAAA,YAAY,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC7C,IAAA,SAAS,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC1C,IAAA,MAAM,EAAEA,UAAQ,CAACD,OAAK,CAACD,QAAM,CAAC,EAAE,GAAG,EAAEE,UAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,IAAA,KAAK,EAAEA,UAAQ,CAACD,OAAK,CAACD,QAAM,CAAC,EAAE,IAAI,EAAEE,UAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,YAAY,EAAEJ,SAAO,EAAE;AACvB,IAAA,OAAO,EAAEI,UAAQ,CAACD,OAAK,CAAC,uBAAuB,CAAC,CAAC;AACpD,CAAA,EAAE;AAEI,MAAM,4BAA4B,GAAoDD,QAAM,CAAC;AAChG,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,4BAA4B,CAAC;AACtF,IAAA,KAAK,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACtC,IAAA,OAAO,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACxC,IAAA,gBAAgB,EAAEA,UAAQ,CAACJ,SAAO,EAAE,CAAC;AACrC,IAAA,IAAI,EAAEI,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,OAAO,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AAC3B,IAAA,OAAO,EAAE,yBAAyB;AAClC,IAAA,OAAO,EAAEO,UAAQ,CAACD,OAAK,CAAC,uBAAuB,CAAC,CAAC;AACjD,IAAA,MAAM,EAAEC,UAAQ,CAACL,SAAO,EAAE,CAAC;IAC3B,IAAI,EAAEK,UAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACpD,CAAA,CAAC,CAAC;AAEI,MAAM,gCAAgC,GAAqEC,OAAK,CACnH,4BAA4B,EAC5B,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EACjC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CACpC,CAAC;AAEsEH,QAAM,CAAC;AAC3E,IAAA,WAAW,EAAEC,OAAK,CAAC,gCAAgC,CAAC;AACpD,IAAA,IAAI,EAAEE,OAAK,CACPJ,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,OAAO,CAAC,CACpB;AACJ,CAAA,EAAE;AAEI,MAAM,sBAAsB,GAA6BC,QAAM,CAAC;AACnE,IAAA,IAAI,EAAE,qBAAqB;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAiCA,QAAM,CAAC;AAC3E,IAAA,WAAW,EAAEC,OAAK,CAAC,4BAA4B,CAAC;AACnD,CAAA,CAAC,CAAC;AAEI,MAAM,sBAAsB,GAA6BD,QAAM,CAAC;AACnE,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,4BAA4B,CAAC;AACtF,IAAA,SAAS,EAAEC,OAAK,CAAC,mBAAmB,CAAC;AACrC,IAAA,cAAc,EAAEC,UAAQ,CAACJ,SAAO,EAAE,CAAC;AACnC,IAAA,KAAK,EAAEI,UAAQ,CAAC,qBAAqB,CAAC;AACtC,IAAA,OAAO,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACxC,IAAA,IAAI,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACrC,IAAA,OAAO,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAiCF,QAAM,CAAC;AAC3E,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,4BAA4B,CAAC;IACtF,cAAc,EAAEF,SAAO,EAAE;AACzB,IAAA,KAAK,EAAEI,UAAQ,CAAC,qBAAqB,CAAC;AACtC,IAAA,OAAO,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACxC,IAAA,IAAI,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACrC,IAAA,OAAO,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,CAAA,CAAC,CAAC;AAEI,MAAM,8BAA8B,GAAqCF,QAAM,CAAC;AACnF,IAAA,SAAS,EAAEC,OAAK,CAAC,0BAA0B,CAAC;AAC5C,IAAA,WAAW,EAAEA,OAAK,CAAC,0BAA0B,CAAC;AAC9C,IAAA,WAAW,EAAEA,OAAK,CAAC,0BAA0B,CAAC;AACjD,CAAA,CAAC,CAAC;AAEI,MAAM,sBAAsB,GAA6BD,QAAM,CAAC;AACnE,IAAA,IAAI,EAAEC,OAAK,CAAC,sBAAsB,CAAC;AACnC,IAAA,gBAAgB,EAAEC,UAAQ,CAAC,qBAAqB,CAAC;AACpD,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAA+BF,QAAM,CAAC;AACvE,IAAA,EAAE,EAAE,qBAAqB;AAC5B,CAAA,CAAC,CAAC;AAEI,MAAM,6BAA6B,GAAoCA,QAAM,CAAC;AACjF,IAAA,IAAI,EAAE,qBAAqB;IAC3B,eAAe,EAAEH,SAAO,EAAE;AAC1B,IAAA,EAAE,EAAEK,UAAQ,CAAC,qBAAqB,CAAC;AACnC,IAAA,OAAO,EAAEA,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC5B,IAAA,GAAG,EAAEI,UAAQ,CAACN,QAAM,EAAE,CAAC;AACvB,IAAA,IAAI,EAAEM,UAAQ,CAACN,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEM,UAAQ,CAAC,wBAAwB,CAAC;AACzC,IAAA,MAAM,EAAEA,UAAQ,CAAC,wBAAwB,CAAC;AAC1C,IAAA,UAAU,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,IAAA,iBAAiB,EAAEA,UAAQ,CAAC,8BAA8B,CAAC;AAC3D,IAAA,cAAc,EAAEA,UAAQ,CAACL,SAAO,EAAE,CAAC;AACnC,IAAA,iBAAiB,EAAEK,UAAQ,CAAC,qBAAqB,CAAC;AAClD,IAAA,SAAS,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC7C,CAAA,CAAC,CAAC;AAEI,MAAM,iBAAiB,GAAiDC,OAAK,CAChFJ,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,oBAAoB,CAAC,EAC9BA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,WAAW,CAAC,CACxB,CAAC;AAEK,MAAM,oBAAoB,GAAoDI,OAAK,CACtFJ,UAAQ,CAAC,aAAa,CAAC,EACvBA,UAAQ,CAAC,UAAU,CAAC,CACvB,CAAC;AAEK,MAAM,2BAA2B,GAA2DC,QAAM,CAAC;AACtG,IAAA,OAAO,EAAEE,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC5B,IAAA,MAAM,EAAE,mBAAmB;IAC3B,UAAU,EAAEE,QAAM,CAAC;AACf,QAAA,IAAI,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACrC,QAAA,GAAG,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACpC,QAAA,OAAO,EAAEA,UAAQ,CAACJ,SAAO,EAAE,CAAC;KAC/B,CAAC;AACF,IAAA,WAAW,EAAEI,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,IAAA,YAAY,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC7C,IAAA,UAAU,EAAE,qBAAqB;AACjC,IAAA,WAAW,EAAEA,UAAQ,CAACL,SAAO,EAAE,CAAC;AAChC,IAAA,QAAQ,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;IAC7B,eAAe,EAAEG,QAAM,CAAC;AACpB,QAAA,OAAO,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACxC,QAAA,WAAW,EAAEA,UAAQ,CAACN,QAAM,EAAE,CAAC;KAClC,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,4BAA4B,GAAsDI,QAAM,CAAC;AAClG,IAAA,IAAI,EAAED,UAAQ,CAAC,QAAQ,CAAC;AACxB,IAAA,aAAa,EAAEG,UAAQ,CAAC,oBAAoB,CAAC;AAC7C,IAAA,WAAW,EAAE,qBAAqB;AAClC,IAAA,KAAK,EAAE,2BAA2B;AACrC,CAAA,CAAC,CAAC;AAEI,MAAM,uBAAuB,GAAkDF,QAAM,CAAC;AACzF,IAAA,IAAI,EAAED,UAAQ,CAAC,QAAQ,CAAC;IACxB,MAAM,EAAEC,QAAM,CAAC;AACX,QAAA,OAAO,EAAE,qBAAqB;AAC9B,QAAA,GAAG,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACpC,QAAA,KAAK,EAAEA,UAAQ,CAACP,QAAM,EAAE,CAAC;AACzB,QAAA,YAAY,EAAEO,UAAQ,CAACL,SAAO,EAAE,CAAC;AACjC,QAAA,YAAY,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AACjC,QAAA,eAAe,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AACpC,QAAA,WAAW,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;KACnC,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,sBAAsB,GAAiDG,QAAM,CAAC;AACvF,IAAA,IAAI,EAAED,UAAQ,CAAC,OAAO,CAAC;IACvB,MAAM,EAAED,SAAO,EAAE;AACjB,IAAA,QAAQ,EAAEG,OAAK,CAACE,OAAK,CACjB,uBAAuB,CAC1B,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,uBAAuB,GAAkDH,QAAM,CAAC;AACzF,IAAA,IAAI,EAAED,UAAQ,CAAC,QAAQ,CAAC;IACxB,MAAM,EAAED,SAAO,EAAE;IACjB,QAAQ,EAAEG,OAAK,CAACE,OAAK,CACjB,sBAAsB,EACtB,uBAAuB,EACvB,IAAI,CAAC,MAAM,uBAAuB,CAAC,EAEnC,IAAI,CAAC,MAAM,oBAAoB,CAAC,CACnC,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,oBAAoB,GAA+CH,QAAM,CAAC;AACnF,IAAA,IAAI,EAAED,UAAQ,CAAC,KAAK,CAAC;IACrB,MAAM,EAAED,SAAO,EAAE;AACjB,IAAA,QAAQ,EAAEG,OAAK,CAACE,OAAK,CACjB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,IAAI,CAAC,MAAM,oBAAoB,CAAC,CACnC,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,oCAAoC,GAA+DH,QAAM,CAAC;IACnH,MAAM,EAAEF,SAAO,EAAE;IACjB,OAAO,EAAEA,SAAO,EAAE;AAClB,IAAA,QAAQ,EAAEG,OAAK,CAACE,OAAK,CACjB,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,CAC1B,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,+BAA+B,GAAoDH,QAAM,CAAC;AACnG,IAAA,IAAI,EAAED,UAAQ,CAAC,WAAW,CAAC;AAC3B,IAAA,WAAW,EAAEG,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,IAAA,KAAK,EAAE,oCAAoC;AAC9C,CAAA,CAAC,CAAC;AAEI,MAAM,mCAAmC,GAAmEF,QAAM,CAAC;AACtH,IAAA,MAAM,EAAE,mBAAmB;AAC3B,IAAA,UAAU,EAAE,qBAAqB;AACjC,IAAA,iBAAiB,EAAE,wBAAwB;AAC3C,IAAA,UAAU,EAAEC,OAAK,CAAC,oCAAoC,CAAC;AACvD,IAAA,WAAW,EAAEC,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,IAAA,YAAY,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC7C,IAAA,OAAO,EAAEA,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC/B,CAAA,CAAC,CAAC;AAEI,MAAM,8BAA8B,GAA8DE,QAAM,CAAC;AAC5G,IAAA,IAAI,EAAED,UAAQ,CAAmB,gBAAgB,CAAC;AAClD,IAAA,WAAW,EAAE,qBAAqB;AAClC,IAAA,aAAa,EAAEG,UAAQ,CAAC,oBAAoB,CAAC;AAC7C,IAAA,KAAK,EAAE,mCAAmC;AAC7C,CAAA,CAAC,CAAC;AAEI,MAAM,iBAAiB,GAA6CF,QAAM,CAAC;AAC9E,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,IAAI,EAAE,iBAAiB;IACvB,UAAU,EAAEC,OAAK,CAACE,OAAK,CACnB,4BAA4B,EAC5B,+BAA+B,EAC/B,8BAA8B,CACjC,CAAC;AACF,IAAA,OAAO,EAAED,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC5B,IAAA,QAAQ,EAAEI,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC7B,IAAA,OAAO,EAAEI,UAAQ,CAACN,QAAM,EAAE,CAAC;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,uBAAuB,GAAuDI,QAAM,CAAC;AAC9F,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,OAAO,EAAEE,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC5B,IAAA,QAAQ,EAAEI,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC7B,IAAA,SAAS,EAAEI,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AACjD,IAAA,eAAe,EAAEC,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AAC1D,CAAA,CAAC,CAAC;AAEI,MAAM,qBAAqB,GAAqDD,QAAM,CAAC;AAC1F,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,OAAO,EAAEE,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC5B,IAAA,oBAAoB,EAAEI,UAAQ,CAACL,SAAO,EAAE,CAAC;AACzC,IAAA,OAAO,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC5B,IAAA,OAAO,EAAEK,UAAQ,CAAC,wBAAwB,CAAC;AAC9C,CAAA,CAAC,CAAC;AAEI,MAAM,oBAAoB,GAAoDF,QAAM,CAAC;AACxF,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,OAAO,EAAEE,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC5B,IAAA,QAAQ,EAAEI,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAChC,CAAA,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAAgCE,QAAM,CAAC;AACzE,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,IAAI,EAAE,iBAAiB;AAC1B,CAAA,CAAC,CAAC;AAEI,MAAM,uBAAuB,GAA8BA,QAAM,CAAC;AACrE,IAAA,MAAM,EAAE,uBAAuB;AAClC,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAiCA,QAAM,CAAC;AAC3E,IAAA,MAAM,EAAE,qBAAqB;AAChC,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAiCA,QAAM,CAAC;AAC3E,IAAA,IAAI,EAAE,iBAAiB;AAC1B,CAAA,CAAC,CAAC;AAEI,MAAM,2BAA2B,GAAkCA,QAAM,CAAC;AAC7E,IAAA,OAAO,EAAEC,OAAK,CAAC,iBAAiB,CAAC;AACpC,CAAA,CAAC,CAAC;AAEI,MAAM,iBAAiB,GAAiCE,OAAK,CAChEJ,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,OAAO,CAAC,CACpB,CAAC;AAEK,MAAM,0BAA0B,GAAiCC,QAAM,CAAC;AAC3E,IAAA,OAAO,EAAEC,OAAK,CAAC,iBAAiB,CAAC;AACjC,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,kBAAkB,EAAEC,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC1C,CAAA,CAAC,CAAC;AAEI,MAAM,gCAAgC,GAAuCG,QAAM,CAAC;AACvF,IAAA,SAAS,EAAEC,OAAK,CAAC,oBAAoB,CAAC;AACzC,CAAA,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAAgCD,QAAM,CAAC;AACzE,IAAA,MAAM,EAAE,iBAAiB;AAC5B,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAwCA,QAAM,CAAC;AAClF,IAAA,MAAM,EAAEE,UAAQ,CAAC,iBAAiB,CAAC;AACtC,CAAA,CAAC,CAAC;AAEI,MAAM,6BAA6B,GAAoCF,QAAM,CAAC;AACjF,IAAA,IAAI,EAAE,qBAAqB;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,4BAA4B,GAAmCG,OAAK,CAC7EJ,UAAQ,CAAC,YAAY,CAAC,EACtBA,UAAQ,CAAC,YAAY,CAAC,EACtBA,UAAQ,CAAC,aAAa,CAAC,EACvBA,UAAQ,CAAC,OAAO,CAAC,EACjBA,UAAQ,CAAC,gBAAgB,CAAC,CAC7B,CAAC;AAEK,MAAM,oBAAoB,GAAoDC,QAAM,CAAC;AACxF,IAAA,eAAe,EAAE,qBAAqB;AACtC,IAAA,gBAAgB,EAAEE,UAAQ,CAACP,QAAM,EAAE,CAAC;AACpC,IAAA,sBAAsB,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AAC1C,IAAA,eAAe,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACnC,IAAA,IAAI,EAAEQ,OAAK,CAAqBJ,UAAQ,CAAC,KAAK,CAAC,EAAEA,UAAQ,CAAC,UAAU,CAAC,CAAC;AACtE,IAAA,WAAW,EAAEG,UAAQ,CAACP,QAAM,EAAE,CAAC;AAC/B,IAAA,YAAY,EAAEO,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AACpD,IAAA,UAAU,EAAEC,UAAQ,CAACP,QAAM,EAAE,CAAC;AAC9B,IAAA,aAAa,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACjC,IAAA,UAAU,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACjC,CAAA,CAAC,CAAC;AAEyCK,QAAM,CAAC;IAC/C,eAAe,EAAEL,QAAM,EAAE;AACzB,IAAA,eAAe,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACnC,IAAA,UAAU,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACjC,CAAA,EAAE;AAEI,MAAM,6BAA6B,GAAoCK,QAAM,CAAC;AACjF,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,OAAO,EAAE,oBAAoB;AAChC,CAAA,CAAC,CAAC;AAEH,MAAM,aAAa,GAA6CA,QAAM,CAAC;AACnE,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,QAAQ,EAAEC,OAAK,CAAC,oBAAoB,CAAC;AACxC,CAAA,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAwEE,OAAK,CAClGJ,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,OAAO,CAAC,EACjBC,QAAM,CAAC;AACH,IAAA,GAAG,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACpC,IAAA,QAAQ,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,CAAA,CAAC,CACL,CAAC;AAEF,MAAM,oBAAoB,GAAoDF,QAAM,CAAC;AACjF,IAAA,IAAI,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACrC,IAAA,IAAI,EAAEA,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC5B,CAAA,CAAC,CAAC;AAEI,MAAM,cAAc,GAA+CG,OAAK,CAAC,aAAa,CAAC,CAAC;AAExF,MAAM,qBAAqB,GAA4BD,QAAM,CAAC;AACjE,IAAA,OAAO,EAAE,cAAc;AAC1B,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAAmDA,QAAM,CAAC;AACtF,IAAA,IAAI,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACrC,IAAA,WAAW,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,IAAA,UAAU,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC9C,CAAA,CAAC,CAAC;AAEI,MAAM,iBAAiB,GAA4DC,OAAK,CAC3F,qBAAqB,EACrB,mBAAmB,CACtB,CAAC;AAEK,MAAM,0BAA0B,GAAiCH,QAAM,CAAC;AAC3E,IAAA,MAAM,EAAEE,UAAQ,CAAC,mBAAmB,CAAC;AACxC,CAAA,CAAC,CAAC;AAEI,MAAM,oBAAoB,GAAoDF,QAAM,CAAC;AACxF,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,MAAM,EAAEE,UAAQ,CAAC,mBAAmB,CAAC;AACrC,IAAA,OAAO,EAAEA,UAAQ,CAAC,oBAAoB,CAAC;AACvC,IAAA,OAAO,EAAEA,UAAQ,CAAC,yBAAyB,CAAC;AAC5C,IAAA,QAAQ,EAAEA,UAAQ,CAACD,OAAK,CAAC,oBAAoB,CAAC,CAAC;AAC/C,IAAA,OAAO,EAAEC,UAAQ,CAAC,wBAAwB,CAAC;AAC3C,IAAA,4BAA4B,EAAEA,UAAQ,CAACL,SAAO,EAAE,CAAC;AACpD,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAA6DM,OAAK,CAC9F,qBAAqB,EACrB,oBAAoB,CACvB,CAAC;AAEK,MAAM,qBAAqB,GAA4BH,QAAM,CAAC;IACjE,OAAO,EAAEH,SAAO,EAAE;AAClB,IAAA,OAAO,EAAE,qBAAqB;IAC9B,mBAAmB,EAAED,QAAM,EAAE;AAChC,CAAA,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAA6CI,QAAM,CAAC;AACtF,IAAA,aAAa,EAAE,oBAAoB;AACnC,IAAA,cAAc,EAAE,qBAAqB;AACxC,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAAmDA,QAAM,CAAC;AACtF,IAAA,OAAO,EAAE,oBAAoB;AAC7B,IAAA,OAAO,EAAE,oBAAoB;IAC7B,MAAM,EAAEF,SAAO,EAAE;AACpB,CAAA,CAAC,CAAC;AAEI,MAAM,qBAAqB,GAAoDE,QAAM,CAAC;AACzF,IAAA,KAAK,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACtC,IAAA,YAAY,EAAEA,UAAQ,CAACL,SAAO,EAAE,CAAC;AACjC,IAAA,OAAO,EAAEK,UAAQ,CAAC,wBAAwB,CAAC;AAC3C,IAAA,MAAM,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACvC,IAAA,YAAY,EAAEA,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AACpD,IAAA,UAAU,EAAEC,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,IAAA,gBAAgB,EAAEA,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AAC3D,CAAA,CAAC,CAAC;AAEI,MAAM,2BAA2B,GAA2DD,QAAM,CAAC;AACtG,IAAA,QAAQ,EAAEC,OAAK,CAAC,oBAAoB,CAAC;AACxC,CAAA,CAAC,CAAC;AAEI,MAAM,uCAAuC,GAA8CD,QAAM,CAAC;AACrG,IAAA,qBAAqB,EAAE,qBAAqB;AAC5C,IAAA,cAAc,EAAE,qBAAqB;AACxC,CAAA,CAAC,CAAC;AAEI,MAAM,+BAA+B,GAA+DA,QAAM,CAAC;AAC9G,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,YAAY,EAAEE,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AACpD,IAAA,WAAW,EAAEC,UAAQ,CAACP,QAAM,EAAE,CAAC;AAC/B,IAAA,IAAI,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,WAAW,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AAC/B,IAAA,UAAU,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACjC,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAAwEQ,OAAK,CAC9G,qBAAqB,EACrB,+BAA+B,CAClC,CAAC;AAEK,MAAM,iBAAiB,GAAiDH,QAAM,CAAC;AAClF,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,YAAY,EAAEE,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AACpD,IAAA,WAAW,EAAEC,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,IAAA,WAAW,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,IAAA,IAAI,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACrC,IAAA,UAAU,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC9C,CAAA,CAAC,CAAC;AAEI,MAAM,uBAAuB,GAAuDF,QAAM,CAAC;AAC9F,IAAA,OAAO,EAAEC,OAAK,CAAC,iBAAiB,CAAC;AACpC,CAAA,CAAC,CAAC;AAEI,MAAM,kBAAkB,GAAG,CAAC,YAAsB,KAAqB;AAC1E,IAAA,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,+BAA+B,CAAC,CAAC;AACvG,CAAC,CAAC;AAEK,MAAM,4BAA4B,GAAkED,QAAM,CAAC;AAC9G,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,SAAS,EAAEE,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC9B,IAAA,MAAM,EAAEI,UAAQ,CAACC,OAAK,CAClBJ,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,MAAM,CAAC,CACnB,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,+BAA+B,GAA+DC,QAAM,CAAC;IAC9G,MAAM,EAAEL,QAAM,EAAE;AAChB,IAAA,KAAK,EAAE,qBAAqB;AAC5B,IAAA,IAAI,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,OAAO,EAAEO,UAAQ,CAAC,4BAA4B,CAAC;AAClD,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAAkDC,OAAK,CACxFJ,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,cAAc,CAAC,EACxBA,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,OAAO,CAAC,EACjBA,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,YAAY,CAAC,CACzB,CAAC;AAEK,MAAM,qCAAqC,GAA4CC,QAAM,CAAC;IACjG,KAAK,EAAEJ,QAAM,EAAE;AAClB,CAAA,CAAC,CAAC;AAEI,MAAM,6BAA6B,GAAmEI,QAAM,CAAC;AAChH,IAAA,KAAK,EAAEE,UAAQ,CAACP,QAAM,EAAE,CAAC;AACzB,IAAA,IAAI,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,IAAI,EAAEO,UAAQ,CAACJ,SAAO,EAAE,CAAC;IACzB,GAAG,EAAEI,UAAQ,CAACC,OAAK,CACfJ,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,KAAK,CAAC,CAClB,CAAC;AACF,IAAA,IAAI,EAAEG,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACzB,IAAA,IAAI,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,QAAQ,EAAEO,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC7B,IAAA,kBAAkB,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AACvC,IAAA,MAAM,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC3B,IAAA,GAAG,EAAEK,UAAQ,CAACP,QAAM,EAAE,CAAC;AACvB,IAAA,SAAS,EAAEO,UAAQ,CAAC,wBAAwB,CAAC;IAC7C,OAAO,EAAEA,UAAQ,CAACD,OAAK,CAACL,QAAM,EAAE,CAAC,CAAC;AACrC,CAAA,CAAC,CAAC;AAEI,MAAM,gCAAgC,GAAyDI,QAAM,CAAC;AACzG,IAAA,KAAK,EAAE,qBAAqB;AAC5B,IAAA,YAAY,EAAEE,UAAQ,CAAC,4BAA4B,CAAC;AACpD,IAAA,OAAO,EAAEA,UAAQ,CAACD,OAAK,CAAC,+BAA+B,CAAC,CAAC;AACzD,IAAA,2BAA2B,EAAEC,UAAQ,CAACL,SAAO,EAAE,CAAC;AAChD,IAAA,KAAK,EAAEK,UAAQ,CAACP,QAAM,EAAE,CAAC;AACzB,IAAA,IAAI,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,IAAI,EAAEO,UAAQ,CAACJ,SAAO,EAAE,CAAC;IACzB,GAAG,EAAEI,UAAQ,CAACC,OAAK,CACfJ,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,KAAK,CAAC,CAClB,CAAC;AACF,IAAA,IAAI,EAAEG,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACzB,IAAA,IAAI,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,QAAQ,EAAEO,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC7B,IAAA,kBAAkB,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AACvC,IAAA,MAAM,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC3B,IAAA,GAAG,EAAEK,UAAQ,CAACP,QAAM,EAAE,CAAC;AACvB,IAAA,SAAS,EAAEO,UAAQ,CAAC,wBAAwB,CAAC;IAC7C,OAAO,EAAEA,UAAQ,CAACD,OAAK,CAACL,QAAM,EAAE,CAAC,CAAC;AAClC,IAAA,QAAQ,EAAEM,UAAQ,CAACC,OAAK,CACpBJ,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,UAAU,CAAC,CACvB,CAAC;AACF,IAAA,SAAS,EAAEG,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC9B,IAAA,WAAW,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AAChC,IAAA,KAAK,EAAEK,UAAQ,CAAC,wBAAwB,CAAC;AAC5C,CAAA,CAAC,CAAC;AAEI,MAAM,kCAAkC,GAAyCF,QAAM,CAAC;AAC3F,IAAA,EAAE,EAAE,qBAAqB;AACzB,IAAA,KAAK,EAAE,wBAAwB;AAClC,CAAA,CAAC,CAAC;AAEI,MAAM,qBAAqB,GAAsDA,QAAM,CAAC;AAC3F,IAAA,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAEA,QAAM,CAAC;AACT,QAAA,KAAK,EAAE,qBAAqB;KAC/B,CAAC;AACF,IAAA,IAAI,EAAEE,UAAQ,CAACF,QAAM,EAAE,CAAC;AAC3B,CAAA,CAAC,CAAC;AAGI,MAAM,wBAAwB,GAA+BA,QAAM,CAAC;AACvE,IAAA,QAAQ,EAAE,gCAAgC;AAC1C,IAAA,EAAE,EAAE,qBAAqB;AAC5B,CAAA,CAAC,CAAC;AAEI,MAAM,8BAA8B,GAAqCA,QAAM,CAAC;AACnF,IAAA,QAAQ,EAAE,gCAAgC;AAC7C,CAAA,CAAC,CAAC;AAEI,MAAM,8BAA8B,GAAqCA,QAAM,CAAC;IACnF,iBAAiB,EAAEH,SAAO,EAAE;AAC/B,CAAA,CAAC,CAAC;AAEI,MAAM,4BAA4B,GAAmCG,QAAM,CAAC;AAC/E,IAAA,UAAU,EAAEG,OAAK,CACbJ,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,QAAQ,CAAC,CACrB;AACJ,CAAA,CAAC,CAAC;AAEI,MAAM,+BAA+B,GAAsCC,QAAM,CAAC;AACrF,IAAA,UAAU,EAAE,6BAA6B;AACzC,IAAA,MAAM,EAAEE,UAAQ,CAACP,QAAM,EAAE,CAAC;AAC1B,IAAA,EAAE,EAAEO,UAAQ,CAAC,qBAAqB,CAAC;AACtC,CAAA,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAA+DF,QAAM,CAAC;AACxG,IAAA,OAAO,EAAEE,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AAC/C,IAAA,OAAO,EAAEC,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AAClD,CAAA,CAAC,CAAC;AAEI,MAAM,iCAAiC,GAA0DD,QAAM,CAAC;AAC3G,IAAA,MAAM,EAAEE,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC3B,IAAA,YAAY,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AACjC,IAAA,YAAY,EAAEK,UAAQ,CAAC,yBAAyB,CAAC;AACpD,CAAA,CAAC,CAAC;AAEI,MAAM,yCAAyC,GAAgDF,QAAM,CAAC;AACzG,IAAA,aAAa,EAAE,iCAAiC;AACnD,CAAA,CAAC,CAAC;AAEI,MAAM,+CAA+C,GAAsDA,QAAM,CAAC;IACrH,aAAa,EAAEA,QAAM,CAAC;QAClB,MAAM,EAAEH,SAAO,EAAE;QACjB,YAAY,EAAEA,SAAO,EAAE;QACvB,YAAY,EAAEG,QAAM,CAAC;AACjB,YAAA,OAAO,EAAEC,OAAK,CAAC,qBAAqB,CAAC;AACrC,YAAA,OAAO,EAAEA,OAAK,CAAC,qBAAqB,CAAC;SACxC,CAAC;KACL,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,gCAAgC,GAAuCD,QAAM,CAAC;AACvF,IAAA,UAAU,EAAEG,OAAK,CACbJ,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,WAAW,CAAC,CACxB;AACD,IAAA,UAAU,EAAE,qBAAqB;AACjC,IAAA,OAAO,EAAEG,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC/B,CAAA,CAAC,CAAC;AAEI,MAAM,gCAAgC,GAAuCE,QAAM,CAAC;AACvF,IAAA,aAAa,EAAEE,UAAQ,CAACJ,SAAO,EAAE,CAAC;AACrC,CAAA,CAAC,CAAC;AAEI,MAAM,4BAA4B,GAAmCE,QAAM,CAAC;AAC/E,IAAA,KAAK,EAAEG,OAAK,CACRJ,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,SAAS,CAAC,CACtB;AACJ,CAAA,CAAC,CAAC;AAEI,MAAM,+BAA+B,GAAsCC,QAAM,CAAC;IACrF,WAAW,EAAEH,SAAO,EAAE;AACzB,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAAiCG,QAAM,CAAC;AACpE,IAAA,MAAM,EAAE,qBAAqB;AAChC,CAAA,CAAC,CAAC;AAEI,MAAM,2BAA2B,GAAkCA,QAAM,CAAC;IAC7E,WAAW,EAAEH,SAAO,EAAE;AACzB,CAAA,CAAC,CAAC;AAEI,MAAM,2BAA2B,GAAkCG,QAAM,CAAC;AAC7E,IAAA,SAAS,EAAE,qBAAqB;AACnC,CAAA,CAAC,CAAC;AAEI,MAAM,iCAAiC,GAAwCA,QAAM,CAAC;AACzF,IAAA,MAAM,EAAE,mBAAmB;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,YAAY,GAA2CA,QAAM,CAAC;AACvE,IAAA,WAAW,EAAE,qBAAqB;AAClC,IAAA,IAAI,EAAE,qBAAqB;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAiCA,QAAM,CAAC;AAC3E,IAAA,KAAK,EAAE,YAAY;AACtB,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAA+BA,QAAM,CAAC;AACvE,IAAA,MAAM,EAAEC,OAAK,CAAC,YAAY,CAAC;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAA+BD,QAAM,CAAC;AACvE,IAAA,IAAI,EAAE,qBAAqB;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAA6DA,QAAM,CAAC;AACrG,IAAA,EAAE,EAAE,qBAAqB;AACzB,IAAA,KAAK,EAAE,qBAAqB;AAC5B,IAAA,YAAY,EAAEE,UAAQ,CAAC,4BAA4B,CAAC;AACpD,IAAA,OAAO,EAAEA,UAAQ,CAACD,OAAK,CAAC,+BAA+B,CAAC,CAAC;AACzD,IAAA,2BAA2B,EAAEC,UAAQ,CAACL,SAAO,EAAE,CAAC;AAChD,IAAA,KAAK,EAAEK,UAAQ,CAACP,QAAM,EAAE,CAAC;AACzB,IAAA,IAAI,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,IAAI,EAAEO,UAAQ,CAACJ,SAAO,EAAE,CAAC;IACzB,GAAG,EAAEI,UAAQ,CAACC,OAAK,CACfJ,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,KAAK,CAAC,CAClB,CAAC;AACF,IAAA,IAAI,EAAEG,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACzB,IAAA,IAAI,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,QAAQ,EAAEO,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC7B,IAAA,kBAAkB,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AACvC,IAAA,MAAM,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC3B,IAAA,GAAG,EAAEK,UAAQ,CAACP,QAAM,EAAE,CAAC;AACvB,IAAA,SAAS,EAAEO,UAAQ,CAAC,wBAAwB,CAAC;IAC7C,OAAO,EAAEA,UAAQ,CAACD,OAAK,CAACL,QAAM,EAAE,CAAC,CAAC;AAClC,IAAA,QAAQ,EAAEM,UAAQ,CAACC,OAAK,CACpBJ,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,UAAU,CAAC,CACvB,CAAC;AACF,IAAA,SAAS,EAAEG,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC9B,IAAA,WAAW,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AAChC,IAAA,KAAK,EAAEK,UAAQ,CAAC,wBAAwB,CAAC;AAC5C,CAAA,CAAC,CAAC;AAEI,MAAM,6BAA6B,GAAoCF,QAAM,CAAC;AACjF,IAAA,YAAY,EAAE,wBAAwB;AACzC,CAAA,CAAC,CAAC;AAEI,MAAM,2BAA2B,GAAkCA,QAAM,CAAC;AAC7E,IAAA,aAAa,EAAEC,OAAK,CAAC,wBAAwB,CAAC;AACjD,CAAA,CAAC,CAAC;AAEI,MAAM,+BAA+B,GAAsCD,QAAM,CAAC;AACrF,IAAA,EAAE,EAAE,qBAAqB;AAC5B,CAAA,CAAC,CAAC;AAEI,MAAM,gCAAgC,GAAiCA,QAAM,CAAC;AACjF,IAAA,OAAO,EAAE,qBAAqB;AACjC,CAAA,CAAC,CAAC;AAEI,MAAM,kCAAkC,GAAoCA,QAAM,CAAC;AACtF,IAAA,SAAS,EAAEC,OAAK,CAAC,qBAAqB,CAAC;AAC1C,CAAA,CAAC,CAAC;AAEI,MAAM,6BAA6B,GAAmCE,OAAK,CAC9EJ,UAAQ,CAAC,YAAY,CAAC,EACtBA,UAAQ,CAAC,cAAc,CAAC,EACxBA,UAAQ,CAAC,uBAAuB,CAAC,EACjCA,UAAQ,CAAC,0BAA0B,CAAC,EACpCA,UAAQ,CAAC,aAAa,CAAC,CAC1B,CAAC;AAEK,MAAM,wBAAwB,GAA2BC,QAAM,CAAC;AACnE,IAAA,OAAO,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,CAAA,CAAC,CAAC;AAEI,MAAM,8BAA8B,GAA+DF,QAAM,CAAC;AAC7G,IAAA,WAAW,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,IAAA,QAAQ,EAAEA,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AAChD,IAAA,SAAS,EAAEC,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AACpD,CAAA,CAAC,CAAC;AAEI,MAAM,qCAAqC,GAA4CD,QAAM,CAAC;AACjG,IAAA,MAAM,EAAEE,UAAQ,CAAC,8BAA8B,CAAC;AACnD,CAAA,CAAC,CAAC;AAEI,MAAM,qCAAqC,GAAuCF,QAAM,CAAC;AAC5F,IAAA,qBAAqB,EAAEC,OAAK,CAACD,QAAM,CAAC;AAChC,QAAA,WAAW,EAAE,qBAAqB;AAClC,QAAA,OAAO,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACxC,QAAA,QAAQ,EAAE,qBAAqB;AAClC,KAAA,CAAC,CAAC;AACN,CAAA,CAAC,CAAC;AACI,MAAM,8BAA8B,GAAGA,UAAQ,CAACJ,SAAO,EAAE,CAAC,CAAC;AAE3D,MAAM,8BAA8B,GAA6EI,UAAQ,CAACF,QAAM,CAAC;AACpI,IAAA,GAAG,EAAEE,UAAQ,CAACN,QAAM,EAAE,CAAC;AACvB,IAAA,IAAI,EAAEM,UAAQ,CAACN,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEM,UAAQ,CAAC,wBAAwB,CAAC;AACzC,IAAA,MAAM,EAAEA,UAAQ,CAAC,wBAAwB,CAAC;AAC1C,IAAA,UAAU,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,IAAA,iBAAiB,EAAEA,UAAQ,CAAC,8BAA8B,CAAC;AAC3D,IAAA,eAAe,EAAEA,UAAQ,CAACL,SAAO,EAAE,CAAC;AACpC,IAAA,SAAS,EAAEK,UAAQ,CAAC,qBAAqB,CAAC;AAC1C,IAAA,OAAO,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,CAAA,CAAC,CAAC,CAAC;AAEG,MAAM,sBAAsB,GAA6BF,QAAM,CAAC;AACnE,IAAA,OAAO,EAAE,qBAAqB;AAC9B,IAAA,QAAQ,EAAE,qBAAqB;AAClC,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAiCA,QAAM,CAAC;AAC3E,IAAA,OAAO,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAiCC,OAAK,CACzEJ,UAAQ,CAAC,OAAO,CAAC,EACjBA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,cAAc,CAAC,EACxBA,UAAQ,CAAC,YAAY,CAAC,CACzB,CAAC;AAEK,MAAM,qBAAqB,GAAmDC,QAAM,CAAC;AACxF,IAAA,GAAG,EAAE,qBAAqB;IAC1B,IAAI,EAAEA,QAAM,EAAE;AACd,IAAA,UAAU,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AAC9C,CAAA,CAAC,CAAC;AAEI,MAAM,sBAAsB,GAA6BF,QAAM,CAAC;AACnE,IAAA,GAAG,EAAE,qBAAqB;AAC7B,CAAA,CAAC,CAAC;AAEI,MAAM,qBAAqB,GAA8DA,QAAM,CAAC;AACnG,IAAA,KAAK,EAAE,qBAAqB;AAC/B,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAA8DA,QAAM,CAAC;AACtG,IAAA,GAAG,EAAEC,OAAK,CAAC,qBAAqB,CAAC;AACpC,CAAA,CAAC,CAAC;AAEI,MAAM,sBAAsB,GAAwCD,QAAM,CAAC;AAC9E,IAAA,GAAG,EAAE,qBAAqB;IAC1B,IAAI,EAAEA,QAAM,EAAE;AACjB,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAA+BA,QAAM,CAAC;IACvE,QAAQ,EAAEA,QAAM,CAAC;AACb,QAAA,GAAG,EAAE,qBAAqB;KAC7B,CAAC;AACL,CAAA,CAAC;;ACzgCK,MAAMQ,YAAU,GAAuD;AAC1E,IAAA,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE,aAAa,EAAE,qBAAqB,EAAE;AAC9G,IAAA,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB,EAAE;IACzG,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE;IACxE,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE;AAC1E,IAAA,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,yBAAyB,EAAE;AAC5G,IAAA,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,8BAA8B,EAAE;AAC3H,IAAA,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,sBAAsB,EAAE;IACnG,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,6BAA6B,EAAE;IAC9E,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE;IAC1D,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE;AAC1D,IAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,wBAAwB,EAAE;IACzG,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,wBAAwB,EAAE;IACrE,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE;AACxE,IAAA,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,0BAA0B,EAAE;CAClH;;;;;;ACxBD,SAASC,gBAAc,CAAC,OAAO,EAAE;AACjC,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa;AACxC,WAAW,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU;AACtD,WAAW,OAAO,CAAC,aAAa,KAAK,KAAK;AAC1C,WAAW,OAAO,CAAC,aAAa,KAAK,QAAQ;AAC7C,WAAW,OAAO,CAAC,aAAa,KAAK,OAAO,EAAE;AAC9C,QAAQ,MAAM,IAAI,KAAK,CAAC,iIAAiI,GAAG,OAAO,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC;AAC1M,KAAK;AACL,IAAI,IAAI,iBAAiB,GAAG,OAAO,IAAI,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;AAC5G,IAAI,IAAI,SAAS,GAAG,EAAE,CAAC;AACvB,IAAI,SAAS,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE;AACpD,QAAQ,IAAI,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAY,eAAe,GAAG,EAAE,CAAC;AACjC,YAAY,SAAS,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;AAC7C,SAAS;AACT,QAAQ,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,QAAQ,IAAI,kBAAkB,EAAE;AAChC,YAAY,UAAU,CAAC,YAAY;AACnC,gBAAgB,kBAAkB,CAAC,OAAO,CAAC,UAAU,cAAc,EAAE;AACrE,oBAAoB,IAAI,EAAE,CAAC;AAC3B,oBAAoB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC1G,wBAAwB,IAAI;AAC5B,4BAA4B,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AAC/D,gCAAgC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAC1E,6BAA6B;AAC7B,iCAAiC;AACjC,gCAAgC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AAC5E,6BAA6B;AAC7B,yBAAyB;AACzB,wBAAwB,OAAO,GAAG,EAAE;AACpC,4BAA4B,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACnD,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,aAAa,EAAE,CAAC,CAAC,CAAC;AAClB,SAAS;AACT,QAAQ,OAAO,YAAY;AAC3B,YAAY,IAAI,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,SAAS,EAAE;AAC5B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;AACxE,gBAAgB,IAAI,EAAE,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,EAAE;AACrE,oBAAoB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,CAAC;AAC3B,aAAa,EAAE,EAAE,CAAC,CAAC;AACnB,YAAY,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,gBAAgB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACtC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC3C,aAAa;AACb,SAAS,CAAC;AACV,KAAK;AACL,IAAI,SAAS,OAAO,CAAC,GAAG,EAAE;AAC1B,QAAQ,IAAI,YAAY,GAAG,EAAE,CAAC;AAC9B,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,IAAI,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9D,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG,EAAE,CAAC;AACzB,QAAQ,eAAe,CAAC,OAAO,CAAC,UAAU,QAAQ,EAAE;AACpD,YAAY,IAAI;AAChB,gBAAgB,IAAI,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACrE,gBAAgB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrC,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxC,gBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACvC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,SAAS,YAAY,CAAC,iBAAiB,EAAE,GAAG,EAAE;AAClD,QAAQ,IAAI,QAAQ,GAAG,iBAAiB,YAAY,KAAK,GAAG,iBAAiB,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAC7G,QAAQ,IAAI,iBAAiB,EAAE;AAC/B,YAAY,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACxC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,GAAG,GAAG,qDAAqD,GAAG,GAAG,GAAG,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC/G,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,QAAQ,OAAO,CAAC,aAAa;AACzC,gBAAgB,KAAK,KAAK;AAC1B,oBAAoB,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9C,gBAAgB,KAAK,QAAQ;AAC7B,oBAAoB,OAAO;AAC3B,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACzC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,SAAS,KAAK,GAAG;AACrB,QAAQ,SAAS,GAAG,EAAE,CAAC;AACvB,KAAK;AACL,IAAI,SAAS,QAAQ,CAAC,GAAG,EAAE;AAC3B,QAAQ,IAAI,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,GAAG,EAAE,GAAG;AAChB,QAAQ,OAAO,EAAE,OAAO;AACxB,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,QAAQ,EAAE,QAAQ;AAC1B,KAAK,CAAC;AACN,CAAC;AAEDA,gBAAc,CAAC,OAAO,GAAGA,gBAAc,CAAC;IACxCC,KAAc,GAAGD,gBAAc;;MCzGlB,cAAc,CAAA;AAMvB,IAAA,WAAA,CAA6B,GAAW,EAAmB,KAAa,EAAmB,OAAmB,EAAA;QAAjF,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;QAAmB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QAAmB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QAL7F,IAAQ,CAAA,QAAA,GAAqBE,KAAuB,EAAE,CAAC;QAMpE,IAAI,CAAC,QAAQ,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,EAAE,EAAE,CAAC;KAC5C;AAED,IAAA,IAAW,EAAE,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;KAC3B;AAED,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;KAC7B;IAEM,KAAK,GAAA;QACR,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,SAAA;KACJ;AAEM,IAAA,qBAAqB,CAAC,QAAiB,EAAA;AAC1C,QAAA,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;KAClD;IAEY,KAAK,GAAA;;AAEd,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC;YAEvI,IAAI,CAAC,EAAE,GAAG;gBACN,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBACtC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5C,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBACtC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClD,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9C,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;aACzC,CAAC;YAEF,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB,CAAA,CAAA;AAAA,KAAA;IAEa,MAAM,GAAA;;YAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAuC,SAAS,EAAEH,YAAU,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAClI,OAAO,MAAM,CAAC,GAAG,CAAC;SACrB,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,cAAc,CAAC,QAA8D,EAAA;AACjF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;AAC5G,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;KACtD;AAEa,IAAA,UAAU,CAAC,SAAmD,EAAA;;YACxE,MAAM,YAAY,GAAG,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAE/D,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAE5F,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAA+B,SAAS,EAAEA,YAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAErG,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB,CAAA,CAAA;AAAA,KAAA;IAEa,QAAQ,CAAC,KAAc,EAAE,MAAe,EAAA;;YAClD,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBAC/D,OAAO,IAAI,CAAC,EAAE,CAAC;AAClB,aAAA;AAED,YAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAC9B,gBAAA,wBAAwB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACpD,aAAA;AAED,YAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC/B,gBAAA,wBAAwB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACrD,aAAA;YAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAEhG,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAA+B,SAAS,EAAEA,YAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAErG,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB,CAAA,CAAA;AAAA,KAAA;IAEa,MAAM,CAAC,GAAY,EAAE,IAAa,EAAA;;YAC5C,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;gBAC3D,OAAO,IAAI,CAAC,EAAE,CAAC;AAClB,aAAA;AAED,YAAA,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AAC5B,gBAAAZ,QAAM,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAClC,aAAA;AAED,YAAA,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;AAC7B,gBAAAA,QAAM,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACnC,aAAA;YAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAE5F,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAA+B,SAAS,EAAEY,YAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAErG,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB,CAAA,CAAA;AAAA,KAAA;IAEa,KAAK,GAAA;;AACf,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;gBAC1B,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACnC,aAAA;AAAM,iBAAA;gBACH,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAA4B,SAAS,EAAEA,YAAU,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1G,aAAA;YAED,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB,CAAA,CAAA;AAAA,KAAA;IAEa,KAAK,GAAA;;YACf,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAA4B,SAAS,EAAEA,YAAU,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAEvG,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB,CAAA,CAAA;AAAA,KAAA;IAEa,QAAQ,GAAA;;YAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAyC,SAAS,EAAEA,YAAU,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAEtI,OAAO,MAAM,CAAC,KAAK,CAAC;SACvB,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,QAAQ,CAAC,KAAa,EAAA;;YAChC,MAAM,GAAG,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAE1D,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAA0B,SAAS,EAAEA,YAAU,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAEpH,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB,CAAA,CAAA;AAAA,KAAA;IAEa,SAAS,GAAA;;YACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAA0C,SAAS,EAAEA,YAAU,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAExI,OAAO,MAAM,CAAC,MAAM,CAAC;SACxB,CAAA,CAAA;AAAA,KAAA;IAEa,UAAU,GAAA;;AACpB,YAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7D,YAAA,OAAO,GAAG,CAAC;SACd,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,aAAa,CAAC,OAAY,EAAA;;YACpC,MAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAEjD,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEzD,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,UAAU,CAAC,OAAY,EAAA;;YACjC,MAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAEjD,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEtD,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,gBAAgB,CAAC,QAA4E,EAAA;AACjG,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;AAC5G,SAAA;AAED,QAAA,MAAM,eAAe,GAAG,CAAC,IAAS,KAAU;AACxC,YAAA,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5B,SAAC,CAAC;QAEF,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;KAChE;IAEa,UAAU,GAAA;;AACpB,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAA2C,SAAS,EAAEA,YAAU,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtL,OAAO,MAAM,CAAC,OAAiB,CAAC;SACnC,CAAA,CAAA;AAAA,KAAA;AACJ;;AC1MM,MAAM,gBAAgB,GAAuD;AAChF,IAAA,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,2BAA2B,EAAE,aAAa,EAAE,2BAA2B,EAAE;AAChI,IAAA,6BAA6B,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,aAAa,EAAE,iCAAiC,EAAE,WAAW,EAAE,mBAAmB,EAAE;CAC/J;;ACNM,MAAM,WAAW,GAAG,CAAI,OAAyB,EAAE,mBAA2B,EAAE,cAAuB,KAAgB;IAC1H,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,KAAI;QAEtC,IAAI,aAAa,GAAG,IAAI,CAAC;AAEzB,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAK;YAC5B,IAAI,CAAC,aAAa,EAAE;gBAChB,OAAO;AACV,aAAA;YACD,aAAa,GAAG,KAAK,CAAC;AACtB,YAAA,MAAM,OAAO,GAAG,cAAc,IAAI,CAAwB,qBAAA,EAAA,mBAAmB,EAAE,CAAC;YAEhF,MAAM,CAAC,OAAO,CAAC,CAAC;SACnB,EAAE,mBAAmB,CAAC,CAAC;AAExB,QAAA,OAAO,EAAE;AACJ,aAAA,IAAI,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,CAAC,aAAa,EAAE;gBAChB,OAAO;AACV,aAAA;YACD,aAAa,GAAG,KAAK,CAAC;YACtB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,CAAC;AACpB,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;YACb,IAAI,CAAC,aAAa,EAAE;gBAChB,OAAO;AACV,aAAA;YACD,aAAa,GAAG,KAAK,CAAC;YACtB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,CAAC;AAClB,SAAC,CAAC,CAAC;AACX,KAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEK,MAAMI,aAAW,GAAG,CAAI,QAAgG,EAAE,mBAA2B,EAAE,cAAuB,KAAgB;IAEjM,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,KAAI;AACtC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAK;AAE5B,YAAA,MAAM,OAAO,GAAG,cAAc,IAAI,CAAwB,qBAAA,EAAA,mBAAmB,EAAE,CAAC;YAEhF,MAAM,CAAC,OAAO,CAAC,CAAC;SACnB,EAAE,mBAAmB,CAAC,CAAC;AAExB,QAAA,MAAM,eAAe,GAAG,IAAI,OAAO,CAAI,QAAQ,CAAC,CAAC;QAEjD,eAAe;AACV,aAAA,IAAI,CAAC,CAAC,MAAM,KAAI;YACb,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,CAAC;AACpB,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;YACb,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,CAAC;AAClB,SAAC,CAAC,CAAC;AACX,KAAC,CAAC,CAAC;AAEP,CAAC;;MC1CY,iBAAiB,CAAA;AAA9B,IAAA,WAAA,GAAA;QAGqB,IAAQ,CAAA,QAAA,GAAqBD,KAAuB,EAAE,CAAC;QAKhE,IAAoB,CAAA,oBAAA,GAAuB,EAAE,CAAC;KAqYzD;IA9XgB,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;;YAEpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;AAElE,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AAEzD,YAAA,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;YAEzC,IAAI,CAAC,2BAA2B,EAAE,CAAC;AAEnC,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,YAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACzB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAkB,CAAC;AAE/D,YAAA,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,kBAAkB,CAAC;YAEjD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA6B,0BAAA,EAAA,IAAI,CAAC,cAAc,CAAwE,sEAAA,CAAA,CAAC,CAAC;AAE5I,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAExD,MAAM,IAAI,CAAC,oBAAoB,CAAC;AAEhC,YAAA,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAErC,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iGAAiG,CAAC,CAAC;AAErH,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAExB,YAAA,QAAiC,CAAC,OAAO,GAAG,GAAG,CAAC;SACpD,CAAA,CAAA;AAAA,KAAA;IAEM,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAE/B,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,OAAO;AACV,SAAA;QAED,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC5D,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC9D;AAGY,IAAA,mBAAmB,CAAC,IAAS,EAAA;;YACtC,MAAM,IAAI,CAAC,oBAAoB,CAAC;YAEhC,MAAM,aAAa,GAAG,2BAA2B,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEnF,YAAA,MAAM,SAAS,GAAGH,YAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;gBACpB,OAAO;AACV,aAAA;AAED,YAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,IAAI,CAAC;YAEnC,IAAI,SAAS,CAAC,WAAW,EAAE;gBACvB,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,aAAA;AAED,YAAA,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SACjD,CAAA,CAAA;AAAA,KAAA;AAGa,IAAA,IAAI,CAAC,IAAY,EAAE,GAAW,EAAE,OAA2C,EAAA;;AACrF,YAAA,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC7C,YAAA,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAE5C,MAAM,QAAQ,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAErE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAmC,SAAS,EAAEA,YAAU,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAEnJ,OAAO,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;SAC1D,CAAA,CAAA;AAAA,KAAA;IAEO,IAAI,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC;KACxE;AAEM,IAAA,QAAQ,CAAC,EAAU,EAAA;;AACtB,QAAA,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAE3C,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC;KACpF;IAEO,KAAK,GAAA;QACT,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YAChD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;SACvD,CAAC;KACL;IAEO,2BAA2B,GAAA;AAC/B,QAAAA,YAAU,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxE,QAAAA,YAAU,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,QAAAA,YAAU,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvE,QAAAA,YAAU,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/D,QAAAA,YAAU,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpE,QAAAA,YAAU,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7D,QAAAA,YAAU,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD,QAAAA,YAAU,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjE,QAAAA,YAAU,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7D,QAAAA,YAAU,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACpE;IAEM,EAAE,GAAA;QACL,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;KACrC;AAEO,IAAA,aAAa,CAAC,QAA8D,EAAA;AAChF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;AACzG,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;KACtD;AAEO,IAAA,eAAe,CAAC,QAA8D,EAAA;AAClF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;AAC3G,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;KACxD;AAEO,IAAA,gBAAgB,CAAC,QAA8D,EAAA;AACnF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;AAC7G,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;KAC1D;AAEO,IAAA,iBAAiB,CAAC,QAA8D,EAAA;AACpF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;AAC9G,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;KAC3D;IAEa,QAAQ,GAAA;;YAClB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA4B,SAAS,EAAEA,YAAU,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AAE7I,YAAA,OAAO,YAAY,CAAC;SACvB,CAAA,CAAA;AAAA,KAAA;IAEa,oBAAoB,GAAA;;YAE9B,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AAE5D,YAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AAEzC,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAGjE,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,EAAE;AAC/C,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAE9E,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC;gBAEzE,IAAI,CAAC,QAAQ,EAAE;AACX,oBAAA,MAAM,IAAI,KAAK,CAAC,oGAAoG,CAAC,CAAC;AACzH,iBAAA;AAED,gBAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAEvF,gBAAA,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC;AAE3B,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChD,aAAA;AAED,YAAA,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO;AAC3C,iBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,cAAc,CAAC;iBACjD,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAC3D,CAAC;AAEF,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;YAEzF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;SACrD,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,sBAAsB,CAAC,SAAyB,EAAA;;YAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC;YAE7G,IAAI,CAAC,eAAe,EAAE;gBAClB,OAAO;AACV,aAAA;YAED,eAAe,CAAC,KAAK,CAAC,qBAAqB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEhE,YAAA,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;YAEnF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;SAC5D,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,iBAAiB,CAAC,IAAoB,EAAA;;AAChD,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACjF,OAAO;AACV,aAAA;AAED,YAAA,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACpF,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAEpD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC;SAClE,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,mBAAmB,CAAC,IAAoB,EAAA;;YAClD,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE9E,IAAI,CAAC,OAAO,EAAE;gBACV,OAAO;AACV,aAAA;YAED,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;AAE5F,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAEtB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;SACxD,CAAA,CAAA;AAAA,KAAA;IAEa,eAAe,GAAA;;YAEzB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACpC,gBAAA,MAAM,IAAI,KAAK,CAAC,6GAA6G,CAAC,CAAC;AAClI,aAAA;YAGD,OAAO;AACH,gBAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAAC,EAAG,CAAC,EAAE;AACtD,gBAAA,MAAM,EAAE;oBACJ,GAAG,EAAE,MAAM,CAAC,SAAS;oBACrB,IAAI,EAAE,MAAM,CAAC,UAAU;oBACvB,KAAK,EAAE,MAAM,CAAC,UAAU;oBACxB,MAAM,EAAE,MAAM,CAAC,WAAW;AAC7B,iBAAA;aACJ,CAAC;SACL,CAAA,CAAA;AAAA,KAAA;IAEa,cAAc,GAAA;;AAExB,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACV,gBAAA,MAAM,IAAI,KAAK,CAAC,4GAA4G,CAAC,CAAC;AACjI,aAAA;YAED,OAAO;AACH,gBAAA,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE;gBACpB,KAAK,EAAE,QAAQ,CAAC,KAAK;aACxB,CAAC;SACL,CAAA,CAAA;AAAA,KAAA;IAEa,YAAY,GAAA;;AAEtB,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACV,gBAAA,MAAM,IAAI,KAAK,CAAC,0GAA0G,CAAC,CAAC;AAC/H,aAAA;YAED,OAAO;AACH,gBAAA,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE;AACpB,gBAAA,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;aAC5B,CAAC;SACL,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,gBAAgB,CAAC,MAA8B,EAAA;;AAEzD,YAAA,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,GAAG,MAAM,CAAC,GAAG;AACzD,gBAAA,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;AAE3C,YAAA,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,GAAG,MAAM,CAAC,IAAI;AAC5D,gBAAA,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;AAE5C,YAAA,MAAM,YAAY,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM;AAClE,gBAAA,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;AAE7C,YAAA,MAAM,WAAW,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,GAAG,MAAM,CAAC,KAAK;AAC/D,gBAAA,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;AAE5C,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACnE,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEzE,YAAA,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAClC,YAAA,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;SAC3C,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,cAAc,CAAC,MAAyB,EAAA;;AAClD,YAAA,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;SACjC,CAAA,CAAA;AAAA,KAAA;IAEa,uBAAuB,GAAA;;YAEjC,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;gBAC3F,OAAO;AACV,aAAA;YAED,IAAI;AACA,gBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA6C,SAAS,EAAE,gBAAgB,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;AAChJ,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sHAAsH,CAAC,CAAC;gBACzI,OAAO;AACV,aAAA;AAED,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGrC,YAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAErC,IAAI,CAAC,QAAQ,EAAE;AAEX,gBAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACzC,aAAA;YAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC/B,CAAA,CAAA;AAAA,KAAA;IAEO,iBAAiB,GAAA;AACrB,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAErC,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;KACtC;AAEO,IAAA,kBAAkB,CAAC,QAAgB,EAAA;AAEvC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;AAE/F,QAAA,IAAI,WAAW,EAAE;YACb,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC3C,SAAA;AAED,QAAA,OAAOI,aAAW,CAAqC,CAAC,OAAO,KAAI;YAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,KAAI;AACnD,gBAAA,IAAI,WAAW,CAAC,EAAE,KAAK,QAAQ,EAAE;AAC7B,oBAAA,WAAW,EAAE,CAAC;oBACd,OAAO,CAAC,WAAW,CAAC,CAAC;AACxB,iBAAA;AACL,aAAC,CAAC,CAAC;AACP,SAAC,EAAE,KAAK,EAAE,yBAAyB,QAAQ,CAAA,gBAAA,CAAkB,CAAC,CAAC;KAClE;AAEa,IAAA,mBAAmB,CAAC,QAAiB,EAAA;;;AAE/C,YAAA,MAAM,SAAS,GAAmB;AAC9B,gBAAA,QAAQ,EAAE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,EAAE,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,KAAI,CAAA,OAAA,EAAU,IAAI,CAAC,UAAU,CAAE,CAAA;gBACpD,QAAQ;aACX,CAAC;YAEF,IAAI,IAAI,CAAC,EAAE,EAAE;AACT,gBAAA,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,QAAQ,CAAC;AAChC,aAAA;AAED,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAuB,SAAS,EAAEJ,YAAU,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;;AAC9F,KAAA;IAEO,oBAAoB,GAAA;QAExB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3D,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACtE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzD,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC3D;IAEa,gBAAgB,GAAA;;AAE1B,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACV,gBAAA,MAAM,IAAI,KAAK,CAAC,8GAA8G,CAAC,CAAC;AACnI,aAAA;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC;AAE7C,YAAA,OAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GACQ,OAAO,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAChC,CAAA;SACL,CAAA,CAAA;AAAA,KAAA;AACJ;;AC/ZM,MAAM,0BAA0B,GAAG,0BAA0B,CAAC;AAE9D,MAAM,yBAAyB,GAAG,yBAAyB,CAAC;AAE5D,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;AAEvD,MAAM,wBAAwB,GAAG,6BAA6B;;MCExD,UAAU,CAAA;IAMnB,WAA6B,CAAA,QAA2B,EAAmB,eAAuB,EAAA;QAArE,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;QAAmB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAQ;QALjF,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;KAKqD;AAEtG,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;KACjC;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;KAClD;IAEY,IAAI,GAAA;;AACb,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;SACjE,CAAA,CAAA;AAAA,KAAA;AAEY,IAAA,KAAK,CAAC,WAAmD,EAAA;;AAClE,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAE/B,MAAM,OAAO,CAAC,GAAG,CAAC;AACd,gBAAA,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC;AAChD,gBAAA,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC;AAClD,aAAA,CAAC,CAAC;AAGH,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;YAEtC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AAC5B,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,yBAAyB,EAAE,QAAQ,GAAG,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,SAAS,CAAC;AACjI,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,KAAK,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5I,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AAEf,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;SAClE,CAAA,CAAA;AAAA,KAAA;AAEM,IAAA,kBAAkB,CAAC,QAAgB,EAAA;AACtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QAElG,OAAO;AACH,YAAA,WAAW,EAAE,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,WAAW;AAChC,YAAA,eAAe,EAAE,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,eAAe;AACxC,YAAA,MAAM,EAAE,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,MAAM;AACtB,YAAA,QAAQ,EAAE,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,QAAQ;AAC1B,YAAA,QAAQ,EAAE,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,QAAQ;SAC7B,CAAC;KACL;IAGY,IAAI,CAAoB,MAAkB,EAAE,SAA0B,EAAE,aAAuB,EAAE,OAAyC,EAAE,UAAgD,EAAA;;YAErM,IAAI,SAAS,CAAC,WAAW,EAAE;gBACvB,IAAI;AACA,oBAAA,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACzD,iBAAA;AAAC,gBAAA,OAAO,KAAU,EAAE;oBACjB,MAAM,IAAI,KAAK,CAAC,CAAA,oDAAA,EAAuD,KAAK,CAAC,OAAO,CAAoB,iBAAA,EAAA,SAAS,CAAC,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAE,CAAA,CAAC,CAAC;AACvK,iBAAA;AACJ,aAAA;YAED,MAAM,kBAAkB,GAAG,CAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,qBAAqB;AACxD,gBAAA,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,WAAW;AACnE,gBAAA,IAAI,CAAC;YAET,IAAI,CAAC,kBAAkB,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,CAA8B,2BAAA,EAAA,SAAS,CAAC,IAAI,CAAgB,aAAA,EAAA,MAAM,CAA2E,yEAAA,CAAA,CAAC,CAAC;AAClK,aAAA;YAED,IAAI;AACA,gBAAA,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;gBAE9F,IAAI,SAAS,CAAC,aAAa,EAAE;AACzB,oBAAA,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;AAC7D,iBAAA;AAED,gBAAA,OAAO,eAAe,CAAC;AAE1B,aAAA;AAAC,YAAA,OAAO,KAAU,EAAE;gBACjB,IAAI,KAAK,CAAC,IAAI,EAAE;oBACZ,MAAM,IAAI,KAAK,CAAC,CAAA,oDAAA,EAAuD,KAAK,CAAC,OAAO,CAAoB,iBAAA,EAAA,SAAS,CAAC,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAE,CAAA,CAAC,CAAC;AACvK,iBAAA;AACD,gBAAA,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAClC,aAAA;SACJ,CAAA,CAAA;AAAA,KAAA;IAEY,wBAAwB,GAAA;;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,KAAK,wBAAwB,CAAC,CAAC;YAEhH,IAAI,CAAC,YAAY,EAAE;AACf,gBAAA,MAAM,IAAI,KAAK,CAAC,uKAAuK,CAAC,CAAC;AAC5L,aAAA;AAED,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,wBAAwB,EAAE,IAAI,CAAC,eAAe,GAAG,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,SAAS,CAAC,CAAC;SACvJ,CAAA,CAAA;AAAA,KAAA;IAEa,uBAAuB,CAAC,MAAkB,EAAE,SAA0B,EAAA;;YAChF,IAAI;gBACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAA6C,MAAM,EAAE,gBAAgB,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AAEnJ,gBAAA,OAAO,MAAM,CAAC;AACjB,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACZ,gBAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACjC,aAAA;SACJ,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,eAAe,CAAC,IAAY,EAAA;AAChC,QAAA,OAAOI,aAAW,CAAO,CAAC,OAAO,KAAI;AAEjC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AAC9D,gBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC;AAEvC,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe;oBACpC,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,eAAe,CAAC;AAC9E,oBAAA,IAAI,CAAC;gBAET,OAAO,SAAS,IAAI,WAAW,CAAC;AACpC,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,SAAS,EAAE;gBACX,OAAO,OAAO,EAAE,CAAC;AACpB,aAAA;AAED,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,KAAI;AAC3D,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAE3B,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe;AACpC,oBAAA,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,eAAe;AACxC,oBAAA,IAAI,CAAC;AAET,gBAAA,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,WAAW,EAAE;AACrC,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,OAAO,EAAE,CAAC;AACb,iBAAA;AACL,aAAC,CAAC,CAAC;SAEN,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAA4E,yEAAA,EAAA,IAAI,CAAE,CAAA,CAAC,CAAC;KACxH;AAGO,IAAA,qBAAqB,CAAC,IAAS,EAAE,OAA8B,EAAE,KAAqD,EAAA;QAC1H,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAEvD,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE;AAClB,YAAA,IAAI,KAAK,EAAE;AACP,gBAAA,KAAK,CAAC,CAAA,wEAAA,EAA2E,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAE,CAAA,CAAC,CAAC;AAC1H,aAAA;YACD,OAAO;AACV,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AAEnC,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;aACnB,mBAAmB,CAAC,IAAI,CAAC;AACzB,aAAA,IAAI,CAAC,CAAC,cAAuB,KAAI;AAC9B,YAAA,IAAI,OAAO,EAAE;gBACT,OAAO,CAAC,cAAc,CAAC,CAAC;AAC3B,aAAA;AACL,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,GAAgC,KAAI;AACxC,YAAA,IAAI,KAAK,EAAE;gBACP,KAAK,CAAC,GAAG,CAAC,CAAC;AACd,aAAA;AACD,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtB,SAAC,CAAC,CAAC;KACV;AAGa,IAAA,eAAe,CAAC,MAAc,EAAE,SAA0B,EAAE,IAAS,EAAE,OAAyC,EAAA;;AAE1H,YAAA,MAAM,WAAW,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;AAGhE,YAAA,IAAI,gBAA6D,CAAC;AAElE,YAAA,MAAM,gBAAgB,GAAG,CAAA,4DAAA,EAA+D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAE9J,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;YAEtC,IAAI;AAEA,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,oBAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,iBAAA;AAED,gBAAA,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,0BAA0B,EAAE,WAAW,EAAE,QAAQ,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC;gBAEnK,IAAI,CAAC,gBAAgB,EAAE;AACnB,oBAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;AACnF,iBAAA;AAED,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;AACvG,oBAAA,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;AAC9F,iBAAA;AAEJ,aAAA;AAAC,YAAA,OAAO,KAAU,EAAE;gBACjB,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;oBAEtD,MAAM,sBAAsB,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;oBAC3D,MAAM,IAAI,KAAK,CAAC,CAAA,EAAG,gBAAgB,CAAsB,mBAAA,EAAA,sBAAsB,CAAE,CAAA,CAAC,CAAC;AAEtF,iBAAA;gBAED,MAAM,IAAI,KAAK,CAAC,CAAG,EAAA,gBAAgB,CAAsB,mBAAA,EAAA,KAAK,CAAC,OAAO,CAAE,CAAA,CAAC,CAAC;AAC7E,aAAA;YAED,OAAO,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;SACzD,CAAA,CAAA;AAAA,KAAA;AACJ;;ACvNM,MAAMJ,YAAU,GAA2D;AAC9E,IAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,sBAAsB,EAAE;IACtG,uBAAuB,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,8BAA8B,EAAE;IACzG,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE;IAC9E,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE;AAC9E,IAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,6BAA6B,EAAE,aAAa,EAAE,mBAAmB,EAAE;IAC9H,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,wBAAwB,EAAE;AAC7E,IAAA,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;IAC/D,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,0BAA0B,EAAE;AACrE,IAAA,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;CAC3B;;MCDY,oBAAoB,CAAA;AAAjC,IAAA,WAAA,GAAA;QAGY,IAAyB,CAAA,yBAAA,GAAG,KAAK,CAAC;QAClC,IAAkB,CAAA,kBAAA,GAAG,EAAE,CAAC;QACf,IAAQ,CAAA,QAAA,GAAqBG,KAAuB,EAAE,CAAC;QAIhE,IAAY,CAAA,YAAA,GAA8C,EAAE,CAAC;QAC7D,IAAS,CAAA,SAAA,GAA2C,EAAE,CAAC;KA4WlE;IAtWU,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;IAEY,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;;YACpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;AAEpE,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAE5D,YAAA,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;YAEzC,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,YAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACzB,YAAA,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,kBAAkB,CAAC;AACjD,YAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;AAE/C,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAExD,MAAM,IAAI,CAAC,oBAAoB,CAAC;AAEhC,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oGAAoG,CAAC,CAAC;AAExH,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAExB,YAAA,QAAiC,CAAC,UAAU,GAAG,GAAG,CAAC;SACvD,CAAA,CAAA;AAAA,KAAA;AAEY,IAAA,mBAAmB,CAAC,IAAS,EAAA;;YACtC,MAAM,IAAI,CAAC,oBAAoB,CAAC;YAEhC,MAAM,aAAa,GAAG,+BAA+B,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEvF,YAAA,MAAM,SAAS,GAAGH,YAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;gBACpB,OAAO;AACV,aAAA;AAED,YAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,IAAI,CAAC;YAEnC,IAAI,SAAS,CAAC,WAAW,EAAE;gBACvB,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,aAAA;AAED,YAAA,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SACjD,CAAA,CAAA;AAAA,KAAA;AAEM,IAAA,iBAAiB,CAAC,QAAiE,EAAA;AACtF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;KAC1E;AAEM,IAAA,iBAAiB,CAAC,QAAiE,EAAA;AACtF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;KAC1D;AAEY,IAAA,gBAAgB,CAAC,OAAe,EAAE,OAAgB,EAAE,OAA6D,EAAA;;;YAC1H,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;AAErD,YAAA,IAAI,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,SAAS,KAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBAC7D,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,EAA0B,OAAO,CAAC,SAAS,CAAkB,gBAAA,CAAA,CAAC,CAAC;AAClF,aAAA;AAKD,YAAA,MAAM,YAAY,GAA2B;AACzC,gBAAA,IAAI,EAAE,OAAO;gBACb,eAAe,EAAE,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI;gBACjD,OAAO;AACP,gBAAA,GAAG,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,GAAG;AACjB,gBAAA,IAAI,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,IAAI;AACnB,gBAAA,KAAK,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK;AACrB,gBAAA,MAAM,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,MAAM;AACvB,gBAAA,UAAU,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,UAAU;AAC/B,gBAAA,iBAAiB,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,iBAAiB;AAC7C,gBAAA,EAAE,EAAG,OAAe,KAAA,IAAA,IAAf,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAU,OAAO;AAC7B,gBAAA,cAAc,EAAG,OAAe,KAAA,IAAA,IAAf,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAU,QAAQ;AAC1C,gBAAA,iBAAiB,EAAG,OAAe,KAAA,IAAA,IAAf,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAU,iBAAiB;AACtD,gBAAA,SAAS,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,SAAS;aAChC,CAAC;AAEF,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAuC,YAAY,EAAEA,YAAU,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;YAEzI,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,eAAe,CAA4C,CAAC;YAE5H,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;;AAClD,KAAA;AAEM,IAAA,cAAc,CAAC,IAAY,EAAA;QAC9B,MAAM,YAAY,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAElE,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,YAAY,CAA4C,CAAC;KAChH;IAEM,YAAY,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;KACjC;IAEO,KAAK,GAAA;AACT,QAAA,MAAM,GAAG,GAAoC;YACzC,UAAU,EAAE,IAAI,CAAC,EAAqD;AACtE,YAAA,QAAQ,EAAE;gBACN,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,aAAA;YACD,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3C,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7C,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YACvC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACtC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YACpD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;SACvD,CAAC;AAEF,QAAA,OAAO,GAAG,CAAC;KACd;IAEO,sBAAsB,GAAA;AAC1B,QAAAA,YAAU,CAAC,uBAAuB,CAAC,OAAO,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3F,QAAAA,YAAU,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClF,QAAAA,YAAU,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrF;AAEa,IAAA,6BAA6B,CAAC,IAA6B,EAAA;;AACrE,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC7E,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,UAAU,CAAC,QAA+D,EAAA;AAC9E,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;AAC7E,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;KAC9E;AAEO,IAAA,YAAY,CAAC,QAA+D,EAAA;AAChF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC/E,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;KAC7D;AAEO,IAAA,YAAY,CAAC,QAA+D,EAAA;AAChF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC/E,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;KAC7D;AAEa,IAAA,6BAA6B,CAAC,OAA4B,EAAA;;AAEpE,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC5D,OAAO;AACV,aAAA;AAED,YAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAEzD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;YAE9F,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AAEjC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;SACnD,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,+BAA+B,CAAC,OAA4B,EAAA;;YACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;YAEjF,IAAI,QAAQ,GAAG,CAAC,EAAE;gBACd,OAAO;AACV,aAAA;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAExC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAEtC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;SACrD,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,+BAA+B,CAAC,OAA4B,EAAA;;YACtE,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;YAEvE,IAAI,CAAC,GAAG,EAAE;AACN,gBAAA,OAAO,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;AACtD,aAAA;AAED,YAAA,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,KAAe,CAAC;AACpC,YAAA,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,OAAiB,CAAC;AACxC,YAAA,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAc,CAAC;AAClC,YAAA,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,OAAiB,CAAC;AACxC,YAAA,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;YAE5C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;SACrD,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,4BAA4B,CAAC,YAA0B,EAAA;;AACjE,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,EAAE;gBACpE,OAAO;AACV,aAAA;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,eAAe,CAAC,CAAC;YAE/F,IAAI,CAAC,WAAW,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,CAAA,qBAAA,EAAwB,YAAY,CAAC,EAAE,CAAiE,+DAAA,CAAA,CAAC,CAAC;AAC7H,aAAA;AAED,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AAEnE,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,YAAA,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAErC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;SACvD,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,4BAA4B,CAAC,YAA0B,EAAA;;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;AAEtE,YAAA,IAAI,QAAQ,EAAE;gBACV,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;gBAChF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACrC,aAAA;AAED,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;AAE/G,YAAA,IAAI,WAAW,EAAE;gBACb,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;gBAC3F,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAChD,aAAA;YAED,IAAI,CAAC,QAAQ,EAAE;gBACX,OAAO;AACV,aAAA;YAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;SACvD,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,MAAM,CAAC,WAAqD,EAAE,IAAA,GAA4B,SAAS,EAAA;;AAC7G,YAAA,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAEzC,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AAC7B,gBAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;AACzE,aAAA;AAED,YAAA,IAAI,WAAW,CAAC,MAAM,GAAG,KAAK,EAAE;AAC5B,gBAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,aAAA;YAED,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAwB,CAAC,KAAK,EAAE,UAAU,KAAI;gBAEhF,MAAM,YAAY,GAAG,gCAAgC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAEtE,gBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE;AAClB,oBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC5F,iBAAA;AAAM,qBAAA;AACH,oBAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,iBAAA;AAED,gBAAA,OAAO,KAAK,CAAC;aAChB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;AAE/B,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;AAE5G,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA4B,YAAY,EAAEA,YAAU,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,uBAAuB,EAAE,eAAe,EAAE,CAAC,CAAC;YAE3K,OAAO;AACH,gBAAA,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC;gBACtD,MAAM,EAAE,WAAW,CAAC,OAAO;aAC9B,CAAC;SACL,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,MAAM,CAAC,IAAY,EAAA;;AAC7B,YAAA,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAE7C,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAwB,YAAY,EAAEA,YAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;SACzJ,CAAA,CAAA;AAAA,KAAA;IAEa,KAAK,GAAA;;YACf,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAa,YAAY,EAAEA,YAAU,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,uBAAuB,EAAE,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;SAC9I,CAAA,CAAA;AAAA,KAAA;IAEa,MAAM,GAAA;;YAEhB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA4B,YAAY,EAAEA,YAAU,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,uBAAuB,EAAE,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;YAE5K,OAAO,QAAQ,CAAC,WAAW,CAAC;SAC/B,CAAA,CAAA;AAAA,KAAA;IAEM,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;KACpC;AAEa,IAAA,kBAAkB,CAAC,gBAAwB,EAAA;;YACrD,IAAI;gBACA,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACxD,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAwB,qBAAA,EAAA,IAAI,CAAC,EAAE,CAAA,wBAAA,EAA2B,gBAAgB,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;AAC5I,aAAA;SACJ,CAAA,CAAA;AAAA,KAAA;IAEa,oBAAoB,GAAA;;AAC9B,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA+B,YAAY,EAAEA,YAAU,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;AAEvM,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;AAE1F,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAE/G,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAyC,CAAC,cAAc,EAAE,GAAG,KAAI;gBAEtG,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;AAEtC,gBAAA,OAAO,cAAc,CAAC;aACzB,EAAE,EAAE,CAAC,CAAC;AAEP,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAEhC,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,6CAAA,EAAgD,IAAI,CAAC,EAAE,GAAG,OAAO,GAAG,GAAG,CAAA,eAAA,CAAiB,CAAC,CAAC;AAE5G,YAAA,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AACjF,YAAA,MAAM,OAAO,GAAG,mBAAmB,GAAG,mBAAmB,CAAC,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEhG,YAAA,IAAI,OAAO,EAAE;AACT,gBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC1C,aAAA;SACJ,CAAA,CAAA;AAAA,KAAA;IAEO,cAAc,GAAA;AAClB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE;YACjC,MAAM,aAAa,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC;AAE5F,YAAA,IAAI,aAAa,EAAE;AACf,gBAAA,OAAO,aAAa,CAAC;AACxB,aAAA;AACJ,SAAA;AAGD,QAAA,OAAO,SAAS,CAAC;KACpB;AACJ;;MCpYY,aAAa,CAAA;AAItB,IAAA,WAAA,CAA6B,IAAkB,EAAmB,MAAkB,EAAmB,WAAoD,EAAA;QAA9H,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAc;QAAmB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;QAAmB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAyC;QACvJ,IAAI,CAAC,QAAQ,GAAG,CAAiB,cAAA,EAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA,CAAE,CAAC;KACnD;IAEM,KAAK,GAAA;AACR,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEzD,QAAA,MAAM,GAAG,GAAyC;AAC9C,YAAA,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YAChB,GAAG;YACH,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;SACzC,CAAC;QAEF,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;IAGa,UAAU,GAAA;;AACpB,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACpD,CAAA,CAAA;AAAA,KAAA;IAEa,IAAI,GAAA;;YACd,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA0B,YAAY,EAAEA,YAAU,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;SAChH,CAAA,CAAA;AAAA,KAAA;AACJ;;MC7BY,gBAAgB,CAAA;AAGzB,IAAA,WAAA,CACqB,IAAyB,EACzB,SAAiD,EACjD,UAAgC,EAAA;QAFhC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAqB;QACzB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAwC;QACjD,IAAU,CAAA,UAAA,GAAV,UAAU,CAAsB;KAChD;IAEE,KAAK,GAAA;AACR,QAAA,MAAM,GAAG,GAA4C;AACjD,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;AACpB,YAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAe;AAChC,YAAA,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAiB;AACpC,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAc;AAC9B,YAAA,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAiB;AACpC,YAAA,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;YACxC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YACpD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;SACvD,CAAC;AAEF,QAAA,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;QAEd,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;AAEO,IAAA,iBAAiB,CAAC,QAAiE,EAAA;AAEvF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,SAAA;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,QAAQ,KAAI;YAClD,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC9C,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,iBAAiB,CAAC,QAAiE,EAAA;AACvF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,SAAA;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,QAAQ,KAAI;YAClD,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC9C,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAEa,KAAK,CAAC,OAAa,EAAE,OAA6D,EAAA;;YAC5F,MAAM,eAAe,GAAG,8BAA8B,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACjF,MAAM,eAAe,GAAG,8BAA8B,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAEjF,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;SAC7F,CAAA,CAAA;AAAA,KAAA;AACJ;;AC1DM,MAAMA,YAAU,GAAwD;IAC3E,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE;IACpE,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE;IACxE,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE;AACxE,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAE,aAAa,EAAE,0BAA0B,EAAE;AACvG,IAAA,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE,aAAa,EAAE,gCAAgC,EAAE;AACpH,IAAA,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE,aAAa,EAAE,2BAA2B,EAAE;IAC/G,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;IACnE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;AAClE,IAAA,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,EAAE,aAAa,EAAE,yBAAyB,EAAE;IACtG,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,0BAA0B,EAAE;AACrE,IAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,gCAAgC,EAAE,aAAa,EAAE,gCAAgC,EAAE;IAChJ,wBAAwB,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,aAAa,EAAE,4BAA4B,EAAE;IAC3G,uBAAuB,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,aAAa,EAAE,+BAA+B,EAAE;IAC5G,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,aAAa,EAAE,+BAA+B,EAAE;IACtG,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,aAAa,EAAE,0BAA0B,EAAE;IACzF,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,6BAA6B,EAAE;AAC1F,IAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE;CACrD;;MCXY,iBAAiB,CAAA;AAA9B,IAAA,WAAA,GAAA;QACqB,IAA6B,CAAA,6BAAA,GAAG,MAAM,CAAC;QACvC,IAAQ,CAAA,QAAA,GAAqBG,KAAuB,EAAE,CAAC;KA8Q3E;IAxQU,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;KACzB;IAEY,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;;YACpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;AAElE,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AAEzD,YAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAEzB,YAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;YAE/C,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAEzB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yFAAyF,CAAC,CAAC;AAE5G,YAAA,QAAiC,CAAC,OAAO,GAAG,GAAG,CAAC;SACpD,CAAA,CAAA;AAAA,KAAA;AAEY,IAAA,mBAAmB,CAAC,IAAS,EAAA;;YACtC,MAAM,aAAa,GAAG,4BAA4B,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEpF,YAAA,MAAM,SAAS,GAAGH,YAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;gBACpB,OAAO;AACV,aAAA;AAED,YAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,IAAI,CAAC;YAEnC,IAAI,SAAS,CAAC,WAAW,EAAE;gBACvB,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,aAAA;AAED,YAAA,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SACjD,CAAA,CAAA;AAAA,KAAA;IAEO,KAAK,GAAA;AACT,QAAA,MAAM,GAAG,GAAiC;YACtC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,eAAe,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YACzD,6BAA6B,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YACvE,4BAA4B,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;YACrE,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YACxD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;SACzD,CAAC;AAEF,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC7B;IAEO,sBAAsB,GAAA;AAC1B,QAAAA,YAAU,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/D,QAAAA,YAAU,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,QAAAA,YAAU,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,QAAAA,YAAU,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5E;IAEa,GAAG,CAAC,IAAY,EAAE,IAAyC,EAAA;;AACrE,YAAA,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC7C,YAAA,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiD,SAAS,EAAEA,YAAU,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAEjI,OAAO,MAAM,CAAC,MAAM,CAAC;SACxB,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,MAAM,CAAC,IAAyC,EAAA;;AAC1D,YAAA,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAEzC,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiD,SAAS,EAAEA,YAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAE9H,OAAO,MAAM,CAAC,SAAS,CAAC;SAC3B,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,MAAM,CAAC,IAAyC,EAAA;;AAC1D,YAAA,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAEzC,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA4C,SAAS,EAAEA,YAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAEzH,OAAO,MAAM,CAAC,OAAO,CAAC;SACzB,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,MAAM,CAAC,OAA0C,EAAE,IAAA,GAA4B,SAAS,EAAA;;AAClG,YAAA,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAEzC,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACzB,gBAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;AACrE,aAAA;AAED,YAAA,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,EAAE;AACvB,gBAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;AACnF,aAAA;YAED,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAoB,CAAC,KAAK,EAAE,MAAM,KAAI;gBAEpE,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAEnD,IAAI,YAAY,CAAC,EAAE,EAAE;AACjB,oBAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAuB,oBAAA,EAAA,MAAM,CAAC,IAAI,CAAA,qCAAA,EAAwC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;AACpI,iBAAA;AAED,gBAAA,OAAO,KAAK,CAAC;AAEjB,aAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAElB,YAAA,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAE9H,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA4B,SAAS,EAAEA,YAAU,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;SACvH,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,IAAI,CAAC,MAAiD,EAAA;;AAChE,YAAA,uBAAuB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEjD,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAuC,SAAS,EAAEA,YAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAExH,OAAO,UAAU,CAAC,MAAM,CAAC;SAC5B,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,OAAO,CAAC,OAAgD,EAAA;;AAClE,YAAA,qBAAqB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAGhD,YAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,6BAA6B,CAAC;YAErG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA4B,SAAS,EAAEA,YAAU,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,CAAC,CAAC;SACzJ,CAAA,CAAA;AAAA,KAAA;IAEa,MAAM,CAAC,IAAyC,EAAE,IAAY,EAAA;;AACxE,YAAA,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACzC,YAAA,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAE7C,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA2B,SAAS,EAAEA,YAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;SAClG,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,iBAAiB,CAAC,MAAiC,EAAA;;YAC7D,MAAM,QAAQ,GAA8B,EAAE,CAAC;YAE/C,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAC9B,IAAI;oBACA,MAAM,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;oBAEnE,QAAQ,CAAC,aAAa,GAAG,qBAAqB,KAAA,IAAA,IAArB,qBAAqB,KAArB,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qBAAqB,CAAE,aAAa,CAAC;AACjE,iBAAA;AAAC,gBAAA,OAAO,KAAK,EAAE;AACZ,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAA+E,4EAAA,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;AAC5H,iBAAA;AACJ,aAAA;AAED,YAAA,OAAO,QAAQ,CAAC;SACnB,CAAA,CAAA;AAAA,KAAA;IAEa,wBAAwB,GAAA;;AAClC,YAAA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA8B,SAAS,EAAEA,YAAU,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;AAErI,YAAA,OAAO,aAAa,CAAC;SACxB,CAAA,CAAA;AAAA,KAAA;IAEa,uBAAuB,GAAA;;YAEjC,MAAM,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,EAAE,KAAK,CAAC;YAEnE,IAAI,YAAY,KAAK,QAAQ,EAAE;AAC3B,gBAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC;AACvC,aAAA;YAED,IAAI,YAAY,KAAK,SAAS,EAAE;AAC5B,gBAAA,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;AACtC,aAAA;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC;YAE7C,MAAM,eAAe,GAAI,MAAc,CAAC,UAAU,IAAK,MAAc,CAAC,SAAS,CAAC;AAEhF,YAAA,MAAM,iBAAiB,GAAG,eAAe,CAAC,eAAe,CAAC;YAE1D,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,iBAAiB,EAAE;AACpD,gBAAA,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC;AACjH,aAAA;YAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiC,SAAS,EAAEA,YAAU,CAAC,uBAAuB,EAAE,SAAS,EAAE,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC,CAAC;AAE5K,YAAA,OAAO,EAAE,iBAAiB,EAAE,aAAa,CAAC,WAAW,EAAE,CAAC;SAC3D,CAAA,CAAA;AAAA,KAAA;IAEa,oBAAoB,GAAA;;AAC9B,YAAA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiC,SAAS,EAAEA,YAAU,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;AAEpI,YAAA,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,WAAW,EAAE,CAAC;SACnD,CAAA,CAAA;AAAA,KAAA;IAEa,gBAAgB,GAAA;;YAC1B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAmC,SAAS,EAAEA,YAAU,CAAC,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;YAE9K,OAAO,aAAa,CAAC,MAAM,CAAC;SAC/B,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,gBAAgB,CAAC,IAAY,EAAA;;AACvC,YAAA,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAE7C,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA+B,SAAS,EAAEA,YAAU,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;SACtJ,CAAA,CAAA;AAAA,KAAA;IAEa,kBAAkB,GAAA;;YAC5B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAa,SAAS,EAAEA,YAAU,CAAC,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;SACvI,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,OAAO,CAAC,QAA2D,EAAA;AAEvE,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAO,GAAC,CAAC,CAAC;AACvG,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAO,GAAC,CAAC,CAAC;AAE1G,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,YAAU,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACnE;AAEO,IAAA,SAAS,CAAC,QAA2D,EAAA;AACzE,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,YAAU,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACrE;AAEO,IAAA,SAAS,CAAC,QAA2D,EAAA;AACzE,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,YAAU,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACrE;AAEO,IAAA,wBAAwB,CAAC,QAA8G,EAAA;AAC3I,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,sGAAsG,CAAC,CAAC;AAC3H,SAAA;QAED,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,MAAM,IAAI,KAAK,CAAC,sKAAsK,CAAC,CAAC;AAC3L,SAAA;AAED,QAAA,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC;AAExC,QAAA,OAAO,MAAK;YACR,OAAO,IAAI,CAAC,uBAAuB,CAAC;AACxC,SAAC,CAAC;KACL;AAEa,IAAA,aAAa,CAAC,MAAuC,EAAA;;AAC/D,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAU,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SAC9D,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,eAAe,CAAC,MAAuC,EAAA;;AACjE,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAU,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SAChE,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,eAAe,CAAC,MAAuC,EAAA;;AACjE,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAU,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SAChE,CAAA,CAAA;AAAA,KAAA;AACJ;;ACrRM,MAAMA,YAAU,GAA8D;AACjF,IAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,wBAAwB,EAAE,aAAa,EAAC,8BAA8B,EAAE;IACrI,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,aAAa,EAAE,8BAA8B,EAAE;IAC/F,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,+BAA+B,EAAE;IAC5F,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,+BAA+B,EAAE;IAC9F,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,aAAa,EAAE,4BAA4B,EAAE;IACrF,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,2BAA2B,EAAE;IAClE,kBAAkB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,6BAA6B,EAAE;IAC9F,kBAAkB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,+BAA+B,EAAE;AAChG,IAAA,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AACxB,IAAA,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AACxB,IAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;AAC9B,IAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;IAC9B,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,yCAAyC,EAAE;IACxF,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,aAAa,EAAE,+CAA+C,EAAE;IAC9G,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,aAAa,EAAE,+CAA+C,EAAE;IACtH,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,kCAAkC,EAAE;IAC/E,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,aAAa,EAAE,qCAAqC,EAAE;IACtG,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,kCAAkC,EAAE;CAC1F;;;;;;;;;;;;;;AC3BD;AACA;AACA;AACA,IAAIK,MAAI,GAAG,CAAC,CAAC;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,cAAY,GAAG;AACxB,IAAID,MAAI,GAAG,CAACA,MAAI,GAAG,IAAI,GAAG,KAAK,IAAI,MAAM,CAAC;AAC1C,IAAI,OAAOA,MAAI,EAAE,QAAQ,CAAC,CAAC;AAC3B,CAAC;AACD;AACA,SAASE,SAAO,CAAC,MAAM,EAAE;AACzB,IAAIF,MAAI,GAAG,MAAM,CAAC;AAClB,CAAC;AACD;AACA,IAAAG,gBAAc,GAAG;AACjB,IAAI,SAAS,EAAEF,cAAY;AAC3B,IAAI,IAAI,EAAEC,SAAO;AACjB,CAAC;;ACtBD,IAAIC,gBAAc,GAAGC,gBAAoC,CAAC;AAC1D;AACA,IAAIC,UAAQ,GAAG,kEAAkE,CAAC;AAClF,IAAIC,UAAQ,CAAC;AACb,IAAIC,cAAY,CAAC;AACjB;AACA,IAAIC,UAAQ,CAAC;AACb;AACA,SAASC,OAAK,GAAG;AACjB,IAAID,UAAQ,GAAG,KAAK,CAAC;AACrB,CAAC;AACD;AACA,SAASE,eAAa,CAAC,UAAU,EAAE;AACnC,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,IAAIJ,UAAQ,KAAKD,UAAQ,EAAE;AACnC,YAAYC,UAAQ,GAAGD,UAAQ,CAAC;AAChC,YAAYI,OAAK,EAAE,CAAC;AACpB,SAAS;AACT,QAAQ,OAAO;AACf,KAAK;AACL;AACA,IAAI,IAAI,UAAU,KAAKH,UAAQ,EAAE;AACjC,QAAQ,OAAO;AACf,KAAK;AACL;AACA,IAAI,IAAI,UAAU,CAAC,MAAM,KAAKD,UAAQ,CAAC,MAAM,EAAE;AAC/C,QAAQ,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAGA,UAAQ,CAAC,MAAM,GAAG,oCAAoC,GAAG,UAAU,CAAC,MAAM,GAAG,eAAe,GAAG,UAAU,CAAC,CAAC;AAC5K,KAAK;AACL;AACA,IAAI,IAAI,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;AACrE,OAAO,OAAO,GAAG,KAAK,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC5C,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE;AACvB,QAAQ,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAGA,UAAQ,CAAC,MAAM,GAAG,wDAAwD,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjK,KAAK;AACL;AACA,IAAIC,UAAQ,GAAG,UAAU,CAAC;AAC1B,IAAIG,OAAK,EAAE,CAAC;AACZ,CAAC;AACD;AACA,SAASE,YAAU,CAAC,UAAU,EAAE;AAChC,IAAID,eAAa,CAAC,UAAU,CAAC,CAAC;AAC9B,IAAI,OAAOJ,UAAQ,CAAC;AACpB,CAAC;AACD;AACA,SAASJ,SAAO,CAAC,IAAI,EAAE;AACvB,IAAIC,gBAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAI,IAAII,cAAY,KAAK,IAAI,EAAE;AAC/B,QAAQE,OAAK,EAAE,CAAC;AAChB,QAAQF,cAAY,GAAG,IAAI,CAAC;AAC5B,KAAK;AACL,CAAC;AACD;AACA,SAASK,SAAO,GAAG;AACnB,IAAI,IAAI,CAACN,UAAQ,EAAE;AACnB,QAAQI,eAAa,CAACL,UAAQ,CAAC,CAAC;AAChC,KAAK;AACL;AACA,IAAI,IAAI,WAAW,GAAGC,UAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACzC,IAAI,IAAI,WAAW,GAAG,EAAE,CAAC;AACzB,IAAI,IAAI,CAAC,GAAGH,gBAAc,CAAC,SAAS,EAAE,CAAC;AACvC,IAAI,IAAI,cAAc,CAAC;AACvB;AACA,IAAI,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,QAAQ,CAAC,GAAGA,gBAAc,CAAC,SAAS,EAAE,CAAC;AACvC,QAAQ,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAC5D,QAAQ,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,KAAK;AACL,IAAI,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC;AACD;AACA,SAASU,aAAW,GAAG;AACvB,IAAI,IAAIL,UAAQ,EAAE;AAClB,QAAQ,OAAOA,UAAQ,CAAC;AACxB,KAAK;AACL,IAAIA,UAAQ,GAAGI,SAAO,EAAE,CAAC;AACzB,IAAI,OAAOJ,UAAQ,CAAC;AACpB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAASM,QAAM,CAAC,KAAK,EAAE;AACvB,IAAI,IAAI,gBAAgB,GAAGD,aAAW,EAAE,CAAC;AACzC,IAAI,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AACD;AACA,SAASE,KAAG,IAAI;AAChB,EAAE,OAAOT,UAAQ,IAAID,UAAQ,CAAC;AAC9B,CAAC;AACD;AACA,IAAAW,YAAc,GAAG;AACjB,IAAI,GAAG,EAAED,KAAG;AACZ,IAAI,UAAU,EAAEJ,YAAU;AAC1B,IAAI,IAAI,EAAET,SAAO;AACjB,IAAI,MAAM,EAAEY,QAAM;AAClB,IAAI,QAAQ,EAAED,aAAW;AACzB,CAAC;;ACpGD,IAAII,QAAM,GAAG,OAAO,MAAM,KAAK,QAAQ,KAAK,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC9E;AACA,IAAIC,YAAU,CAAC;AACf;AACA,IAAI,CAACD,QAAM,IAAI,CAACA,QAAM,CAAC,eAAe,EAAE;AACxC,IAAIC,YAAU,GAAG,SAAS,IAAI,EAAE;AAChC,QAAQ,IAAI,KAAK,GAAG,EAAE,CAAC;AACvB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;AACvC,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AACxD,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK,CAAC;AACN,CAAC,MAAM;AACP,IAAIA,YAAU,GAAG,SAAS,IAAI,EAAE;AAChC,QAAQ,OAAOD,QAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,KAAK,CAAC;AACN,CAAC;AACD;AACA,IAAAE,mBAAc,GAAGD,YAAU;;ACpB3B;AACA;AACA;AACA,IAAAE,gBAAc,GAAG,UAAU,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAC;AACpD,EAAE,IAAI,EAAE,GAAG,GAAE;AACb;AACA,EAAE,OAAO,IAAI,EAAE;AACf,IAAI,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,EAAC;AAC5B;AACA,IAAI,IAAI,CAAC,GAAG,KAAI;AAChB,IAAI,OAAO,CAAC,EAAE,EAAE;AAChB;AACA;AACA,MAAM,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,GAAE;AAC3C;AACA,MAAM,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE;AACxC,KAAK;AACL,GAAG;AACH;;ACrCA,IAAId,UAAQ,GAAGF,YAAqB,CAAC;AACrC,IAAIiB,QAAM,GAAGC,mBAA+B,CAAC;AAC7C,IAAIC,QAAM,GAAGC,gBAAwB,CAAC;AACtC;AACA,SAASC,UAAQ,CAAC,MAAM,EAAE;AAC1B,IAAI,IAAI,WAAW,GAAG,CAAC,CAAC;AACxB,IAAI,IAAI,IAAI,CAAC;AACb;AACA,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,GAAG,GAAG,GAAG,GAAGF,QAAM,CAACF,QAAM,EAAEf,UAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACtD,QAAQ,IAAI,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,GAAG,CAAC,EAAE,EAAE,CAAC;AAC1D,QAAQ,WAAW,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD;AACA,IAAAoB,YAAc,GAAGD,UAAQ;;AClBzB,IAAIA,UAAQ,GAAGrB,YAAqB,CAAC;AAErC;AACA;AACA;AACA;AACA,IAAIuB,aAAW,GAAG,aAAa,CAAC;AAChC;AACA;AACA;AACA,IAAIC,SAAO,GAAG,CAAC,CAAC;AAChB;AACA;AACA,IAAIC,SAAO,CAAC;AACZ;AACA;AACA,IAAIC,iBAAe,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA,SAASC,OAAK,CAAC,eAAe,EAAE;AAChC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB;AACA,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAGJ,aAAW,IAAI,KAAK,CAAC,CAAC;AACjE;AACA,IAAI,IAAI,OAAO,KAAKG,iBAAe,EAAE;AACrC,QAAQD,SAAO,EAAE,CAAC;AAClB,KAAK,MAAM;AACX,QAAQA,SAAO,GAAG,CAAC,CAAC;AACpB,QAAQC,iBAAe,GAAG,OAAO,CAAC;AAClC,KAAK;AACL;AACA,IAAI,GAAG,GAAG,GAAG,GAAGL,UAAQ,CAACG,SAAO,CAAC,CAAC;AAClC,IAAI,GAAG,GAAG,GAAG,GAAGH,UAAQ,CAAC,eAAe,CAAC,CAAC;AAC1C,IAAI,IAAII,SAAO,GAAG,CAAC,EAAE;AACrB,QAAQ,GAAG,GAAG,GAAG,GAAGJ,UAAQ,CAACI,SAAO,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,GAAG,GAAG,GAAG,GAAGJ,UAAQ,CAAC,OAAO,CAAC,CAAC;AAClC,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD;AACA,IAAAO,SAAc,GAAGD,OAAK;;AC5CtB,IAAIzB,UAAQ,GAAGF,YAAqB,CAAC;AACrC;AACA,SAAS6B,WAAS,CAAC,EAAE,EAAE;AACvB,IAAI,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG;AACzD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL;AACA,IAAI,IAAI,aAAa,GAAG,IAAI,MAAM,CAAC,IAAI;AACvC,MAAM3B,UAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC;AAC5D,IAAI,GAAG,CAAC,CAAC;AACT,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnC,CAAC;AACD;AACA,IAAA4B,SAAc,GAAGD,WAAS;;;ACb1B;CACA,IAAI,QAAQ,GAAG7B,YAAqB,CAAC;CACrC,IAAI,KAAK,GAAGkB,SAAkB,CAAC;CAC/B,IAAI,OAAO,GAAGE,SAAqB,CAAC;AACpC;AACA;AACA;AACA;AACA;AACA,CAAA,IAAI,eAAe,GAA0C,CAAC,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,IAAI,CAAC,SAAS,EAAE;AACzB,KAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7B,KAAI,OAAO,MAAM,CAAC,OAAO,CAAC;EACzB;AACD;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,MAAM,CAAC,QAAQ,EAAE;KACtB,eAAe,GAAG,QAAQ,CAAC;AAC/B,KAAI,OAAO,MAAM,CAAC,OAAO,CAAC;EACzB;AACD;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,UAAU,CAAC,aAAa,EAAE;AACnC,KAAI,IAAI,aAAa,KAAK,SAAS,EAAE;AACrC,SAAQ,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;MACtC;AACL;AACA,KAAI,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;EAC9B;AACD;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,QAAQ,GAAG;AACpB,GAAE,OAAO,KAAK,CAAC,eAAe,CAAC,CAAC;EAC/B;AACD;AACA;AACA,CAAA,MAAA,CAAA,OAAA,GAAiB,QAAQ,CAAC;AAC1B,CAAA,MAAA,CAAA,OAAA,CAAA,QAAA,GAA0B,QAAQ,CAAC;AACnC,CAAA,MAAA,CAAA,OAAA,CAAA,IAAA,GAAsB,IAAI,CAAC;AAC3B,CAAA,MAAA,CAAA,OAAA,CAAA,MAAA,GAAwB,MAAM,CAAC;AAC/B,CAAA,MAAA,CAAA,OAAA,CAAA,UAAA,GAA4B,UAAU,CAAC;AACvC,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,GAAyB,OAAO,CAAA;;;;AC5DhC,CAAA,MAAA,CAAA,OAAA,GAAiBpB,YAAsB,CAAA;;;;;MCc1B,uBAAuB,CAAA;AAApC,IAAA,WAAA,GAAA;QACqB,IAAQ,CAAA,QAAA,GAAqBN,KAAuB,EAAE,CAAC;QAIhE,IAAa,CAAA,aAAA,GAAqE,EAAE,CAAC;KAyRhG;IArRU,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;KACzB;IAEY,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;;YACpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;AAExE,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;AAE/D,YAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAEzB,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAEzB,IAAI,CAAC,qBAAqB,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;AAEtD,YAAA,IAAI,CAAC,qBAAqB,GAAG,GAAG,CAAC,iBAAiB,CAAC;AAEnD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAEzB,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAE5B,YAAA,QAAiC,CAAC,aAAa,GAAG,GAAG,CAAC;AAEvD,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAChD,CAAA,CAAA;AAAA,KAAA;AAEY,IAAA,mBAAmB,CAAC,IAAS,EAAA;;YACtC,MAAM,aAAa,GAAG,kCAAkC,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAE1F,YAAA,MAAM,SAAS,GAAGH,YAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;gBACpB,OAAO;AACV,aAAA;AAGD,YAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,IAAI,CAAC;YAEnC,IAAI,SAAS,CAAC,WAAW,EAAE;gBACvB,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,aAAA;AAED,YAAA,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SACjD,CAAA,CAAA;AAAA,KAAA;IAEO,KAAK,GAAA;AACT,QAAA,MAAM,GAAG,GAAuC;YAC5C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YACpD,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9D,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1D,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;SACjD,CAAC;AAEF,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC7B;IAEa,aAAa,GAAA;;AAEvB,YAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA8B,eAAe,EAAEA,YAAU,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YAE9H,OAAO,WAAW,CAAC,UAAU,CAAC;SACjC,CAAA,CAAA;AAAA,KAAA;IAEa,iBAAiB,GAAA;;AAE3B,YAAA,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAgC,eAAe,EAAEA,YAAU,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;YAEzI,OAAO,gBAAgB,CAAC,iBAAiB,CAAC;SAC7C,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,KAAK,CAAC,OAAoD,EAAA;;YACpE,MAAM,QAAQ,GAAG,gCAAgC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAE5E,YAAA,QAAQ,CAAC,SAAS,GAAG,OAAO,QAAQ,CAAC,SAAS,KAAK,SAAS,GAAG,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;AACzF,YAAA,QAAQ,CAAC,WAAW,GAAG,OAAO,QAAQ,CAAC,WAAW,KAAK,SAAS,GAAG,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;AAE/F,YAAA,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAEzD,IAAI,CAAC,iBAAiB,EAAE;AACpB,gBAAA,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;AAC1G,aAAA;AAED,YAAA,MAAM,EAAE,GAAG8B,yBAAQ,EAAE,CAAC;YAEtB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA6C,eAAe,EAAE9B,YAAU,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAExJ,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAE1E,YAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC;AAEtC,YAAA,OAAO,YAAY,CAAC;SACvB,CAAA,CAAA;AAAA,KAAA;IAEa,IAAI,GAAA;;YACd,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA6B,eAAe,EAAEA,YAAU,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;YAEnK,OAAO,cAAc,CAAC,aAAa,CAAC;SACvC,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,QAAQ,CAAC,QAAiF,EAAA;AAC9F,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AACnE,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;KAC7D;AAEO,IAAA,QAAQ,CAAC,QAA0D,EAAA;AACvE,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AACnE,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;KAC7D;IAEa,KAAK,CAAC,EAAU,EAAE,MAAe,EAAA;;AAC3C,YAAA,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAE3C,YAAA,IAAI,MAAM,EAAE;AACR,gBAAA,qBAAqB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClD,aAAA;YAED,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAgC,eAAe,EAAEA,YAAU,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;SACxJ,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,KAAK,CAAC,EAAU,EAAA;;AAC1B,YAAA,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAE3C,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiC,eAAe,EAAEA,YAAU,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;SACjJ,CAAA,CAAA;AAAA,KAAA;IAEa,QAAQ,GAAA;;YAClB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAa,eAAe,EAAEA,YAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;SACnI,CAAA,CAAA;AAAA,KAAA;IAEa,QAAQ,GAAA;;YAClB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAa,eAAe,EAAEA,YAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;SACnI,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,SAAS,CAAC,MAAoD,EAAA;;YACxE,MAAM,cAAc,GAAG,iCAAiC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAElF,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA2C,eAAe,EAAEA,YAAU,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;SAC1L,CAAA,CAAA;AAAA,KAAA;IAEa,gBAAgB,GAAA;;YAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiD,eAAe,EAAEA,YAAU,CAAC,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;YAE7L,OAAO,QAAQ,CAAC,aAAa,CAAC;SACjC,CAAA,CAAA;AAAA,KAAA;IAEa,SAAS,GAAA;;YACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiD,eAAe,EAAEA,YAAU,CAAC,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAE7L,YAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC;SAC9C,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,SAAS,CAAC,MAAyD,EAAA;;YAC7E,MAAM,cAAc,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAE1E,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA2C,eAAe,EAAEA,YAAU,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAEzM,YAAA,OAAO,cAAc,CAAC;SACzB,CAAA,CAAA;AAAA,KAAA;IAEa,QAAQ,CAAC,EAAU,EAAE,KAA2C,EAAA;;AAC1E,YAAA,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAC3C,YAAA,wBAAwB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAEjD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAoC,eAAe,EAAEA,YAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;SAC9J,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,sBAAsB,CAAC,QAAwE,EAAA;AACnG,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,6FAA6F,CAAC,CAAC;AAClH,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,8BAA8B,EAAE,QAAQ,CAAC,CAAC;KACtE;AAEO,IAAA,oBAAoB,CAAC,QAA4C,EAAA;AACrE,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,oGAAoG,CAAC,CAAC;AACzH,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,oCAAoC,EAAE,QAAQ,CAAC,CAAC;KAC5E;AAEO,IAAA,cAAc,CAAC,QAA8F,EAAA;AACjH,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;AACnH,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAC;KACpE;IAEO,qBAAqB,GAAA;AACzB,QAAAA,YAAU,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7E,QAAAA,YAAU,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/E,QAAAA,YAAU,CAAC,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjF,QAAAA,YAAU,CAAC,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjF,QAAAA,YAAU,CAAC,oBAAoB,CAAC,OAAO,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrF,QAAAA,YAAU,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChF,QAAAA,YAAU,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACnF;AAEa,IAAA,0BAA0B,CAAC,IAA8C,EAAA;;YACnF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,8BAA8B,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SAC7E,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,wBAAwB,CAAC,IAAoC,EAAA;;YACvE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oCAAoC,EAAE,IAAI,CAAC,CAAC;SACrE,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,8BAA8B,CAAC,IAAiC,EAAA;;AAC1E,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAClF,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,sBAAsB,CAAC,IAA8B,EAAA;;AAE/D,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;gBACV,OAAO;AACV,aAAA;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjD,YAAA,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,EAAE;gBACrC,YAAY,CAAC,MAAM,EAAE,CAAC;AACzB,aAAA;SACJ,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,uBAAuB,CAAC,IAA8B,EAAA;;;AAEhE,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,KAAI,CAAA,EAAA,GAAA,IAAI,CAAC,qBAAqB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAA,EAAE;AAC1D,gBAAA,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,QAAgC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACnG,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,MAAM,KAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,qBAAqB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAA,EAAE;gBAChH,MAAM,YAAY,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,qBAAqB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAsD,CAAC;gBAE1K,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAgC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAChF,aAAA;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;gBACV,OAAO;AACV,aAAA;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEjD,YAAA,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,EAAE;gBACtC,YAAY,CAAC,OAAO,EAAE,CAAC;gBACvB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtC,aAAA;;AAEJ,KAAA;AAEa,IAAA,wBAAwB,CAAC,IAA4B,EAAA;;YAC/D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SACnE,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,wBAAwB,CAAC,IAA8B,EAAA;;YACjE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;SACtD,CAAA,CAAA;AAAA,KAAA;AACJ;;ACvSM,MAAMA,YAAU,GAAwD;IAC3E,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE;AACxE,IAAA,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,0BAA0B,EAAE,aAAa,EAAE,qBAAqB,EAAE;AACjH,IAAA,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,mBAAmB,EAAE;AAC3G,IAAA,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,aAAa,EAAE,mBAAmB,EAAE;AACpG,IAAA,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,uCAAuC,EAAE,aAAa,EAAE,2BAA2B,EAAE;AAC5I,IAAA,mBAAmB,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,uBAAuB,EAAE;CAClI;;ACbM,MAAM,iCAAiC,GAAG,sBAAsB,CAAC;AAEjE,MAAM,+BAA+B,GAAG,+BAA+B,CAAC;AAExE,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AAEpD,MAAM,iCAAiC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEpD,MAAM,mCAAmC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEtD,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAGpC,MAAM,qBAAqB,GAAG,UAAU,CAAC;AAEzC,MAAM,+BAA+B,GAAG,EAAE,GAAG,IAAI;;MCH3C,iBAAiB,CAAA;AAA9B,IAAA,WAAA,GAAA;AAKY,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAE9B,IAAoB,CAAA,oBAAA,GAAG,IAAI,CAAC;QAI5B,IAAwB,CAAA,wBAAA,GAAoB,EAAE,CAAC;KA0V1D;IAxVgB,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;;YACpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;AAElE,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AAEzD,YAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAEzB,YAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AAEhC,YAAA,IAAI,CAAC,uBAAuB,GAAG,GAAG,CAAC,mBAAmB,CAAC;AAEvD,YAAA,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAEjD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAEzB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yFAAyF,CAAC,CAAC;AAE5G,YAAA,QAAiC,CAAC,OAAO,GAAG,GAAG,CAAC;SACpD,CAAA,CAAA;AAAA,KAAA;IAEM,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;AACnC,QAAA,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;KACtC;AAEY,IAAA,mBAAmB,CAAC,IAAS,EAAA;;YACtC,MAAM,aAAa,GAAG,4BAA4B,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEpF,YAAA,MAAM,SAAS,GAAGA,YAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;gBACpB,OAAO;AACV,aAAA;AAED,YAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,IAAI,CAAC;YAEnC,IAAI,SAAS,CAAC,WAAW,EAAE;gBACvB,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,aAAA;AAED,YAAA,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SACjD,CAAA,CAAA;AAAA,KAAA;IAEO,KAAK,GAAA;AACT,QAAA,MAAM,GAAG,GAAiC;YACtC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YACpD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;SAClD,CAAC;AAEF,QAAA,OAAO,GAAG,CAAC;KACd;AAEa,IAAA,KAAK,CAAC,OAAwD,EAAA;;YACxE,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAE7E,YAAA,MAAM,aAAa,GAA2C,OAAO,sBAAsB,KAAK,QAAQ;AACpG,kBAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE;kBAClC,sBAAsB,CAAC;YAE7B,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAEjD,YAAA,MAAM,uBAAuB,GAAG,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,0BAA0B,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;AAEtH,YAAA,MAAM,yBAAyB,GAAG,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;AAEzE,YAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE;gBACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAG,EAAA,yBAAyB,CAAC,MAAM,CAAgC,8BAAA,CAAA,CAAC,CAAC;AAEtF,gBAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5F,aAAA;AAED,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,uCAAA,EAA0C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAmC,gCAAA,EAAA,IAAI,CAAC,6BAA6B,CAAA,EAAA,CAAI,CAAC,CAAC;AAG9J,YAAA,MAAM,uBAAuB,GAAG,aAAa,CAAC,4BAA4B;AACtE,kBAAE,qBAAqB;AACvB,kBAAE,CAAC,aAAa,CAAC,OAAO,IAAI,IAAI,CAAC,6BAA6B,IAAI,mCAAmC,CAAC;YAE1G,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAyE,SAAS,EAAEA,YAAU,CAAC,KAAK,EAAE,uBAAuB,EAAE,EAAE,uBAAuB,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAE3O,YAAA,OAAO,QAAQ,CAAC;SACnB,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,0BAA0B,CAAC,MAAsC,EAAA;;QACrE,IAAI,MAAM,CAAC,aAAa,EAAE;YACtB,OAAO;gBACH,OAAO,EAAE,QAAO,CAAA,EAAA,GAAA,MAAM,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,CAAA,KAAK,SAAS,GAAG,CAAA,EAAA,GAAA,MAAM,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,GAAG,IAAI,CAAC,oBAAoB;gBACjI,OAAO,EAAE,IAAI,CAAC,sBAAsB;gBACpC,mBAAmB,EAAE,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,KAAI,+BAA+B;aACxF,CAAC;AACL,SAAA;AAID,QAAA,MAAM,mBAAmB,GAAG,CAAA,MAAA,MAAM,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,4BAA4B,IAAG,qBAAqB,GAAG,IAAI,CAAC,6BAA6B,CAAC;QAE5I,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,oBAAoB;YAClC,OAAO,EAAE,IAAI,CAAC,sBAAsB;YACpC,mBAAmB;SACtB,CAAC;KACL;IAEa,yBAAyB,GAAA;;YACnC,IAAI;gBACA,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA6C,SAAS,EAAE,gBAAgB,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;gBAE/J,OAAO;AACH,oBAAA,SAAS,EAAE,WAAW;oBACtB,MAAM,EAAE,WAAW,GAAG,EAAE,GAAG,kFAAkF;iBAChH,CAAC;AACL,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;gBACZ,OAAO;AACH,oBAAA,SAAS,EAAE,KAAK;AAChB,oBAAA,MAAM,EAAE,yFAAyF;iBACpG,CAAC;AACL,aAAA;SACJ,CAAA,CAAA;AAAA,KAAA;IAEa,GAAG,GAAA;;YACb,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAEjD,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAuB,SAAS,EAAEA,YAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAEzG,OAAO,MAAM,CAAC,OAAO,CAAC;SACzB,CAAA,CAAA;AAAA,KAAA;IAEO,iBAAiB,CAAC,MAAkE,EAAE,OAAiE,EAAA;AAC3J,QAAA,wBAAwB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClD,QAAA,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;AAClG,SAAA;AAGD,QAAA,IAAI,eAA8B,CAAC;AAGnC,QAAA,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACvE,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAE3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAEzD,QAAA,IAAI,iBAAiB,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,CAAA,oBAAA,CAAsB,CAAC,CAAC;AACnF,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAE/B,QAAA,MAAM,MAAM,GAAG;YACX,WAAW,EAAE,MAAW;AACpB,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAElC,eAAe;AACV,qBAAA,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/C,qBAAA,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,UAAU,CAAA,qBAAA,EAAwB,GAAG,CAAE,CAAA,CAAC,CAAC,CAAC;aAC3H;SACJ,CAAC;QAEF,IAAI,UAAU,GAAsE,EAAE,CAAC;AAEvF,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAE5B,YAAA,MAA4B,IAAI,GAAKtB,QAAA,CAAA,MAAM,EAArC,CAAA,QAAA,CAA4B,EAAU;YAC5C,UAAU,GAAG,IAAI,CAAC;AACrB,SAAA;QAED,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,IAAqB,KAAI;YACnH,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;gBAE1B,MAAuB,IAAI,GAAAA,QAAA,CAAK,IAAI,EAApC,CAA6B,kBAAA,CAAA,EAAQ;AAE3C,gBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACxB,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,eAAe,CAAC,KAAK,CAAC,GAAG,IAAG;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAElC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAsC,mCAAA,EAAA,UAAU,CAAwB,qBAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAC;AACpG,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC;KACjB;IAEa,QAAQ,CAAC,MAAkE,EAAE,OAA0G,EAAA;;AACjM,YAAA,wBAAwB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAElD,YAAA,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;AAC/B,gBAAA,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;AAClG,aAAA;YAED,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAEjD,YAAA,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACvE,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAE3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAEzD,YAAA,IAAI,iBAAiB,EAAE;AACnB,gBAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,CAAA,oBAAA,CAAsB,CAAC,CAAC;AACnF,aAAA;AACD,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAE/B,IAAI,UAAU,GAAsE,EAAE,CAAC;AAEvF,YAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAE5B,gBAAA,MAA4B,IAAI,GAAKA,QAAA,CAAA,MAAM,EAArC,CAAA,QAAA,CAA4B,EAAU;gBAC5C,UAAU,GAAG,IAAI,CAAC;AACrB,aAAA;YAED,IAAI;gBACA,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,IAAqB,KAAI;oBACvG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;wBAChC,MAAM,EAAE,gBAAgB,EAAA,GAAc,IAAI,EAAb,IAAI,GAAAA,QAAA,CAAK,IAAI,EAApC,CAA6B,kBAAA,CAAA,CAAO,CAAC;wBAE3C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,KAAK,gBAAgB,CAAC,CAAC;AAE7F,wBAAA,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAChC,qBAAA;AACL,iBAAC,CAAC,CAAC;AACN,aAAA;AAAC,YAAA,OAAO,GAAG,EAAE;AACV,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAElC,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,mCAAA,EAAsC,UAAU,CAAwB,qBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC,CAAC;AAClH,aAAA;YAED,OAAO;gBACH,WAAW,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;aACxD,CAAC;SACL,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,IAAI,CAAC,YAA6D,EAAA;;YAC5E,IAAI,IAAI,GAAoC,SAAS,CAAC;AAEtD,YAAA,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;gBACrC,MAAM,eAAe,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AAEzE,gBAAA,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;AACrC,oBAAA,IAAI,GAAG;AACH,wBAAA,MAAM,EAAE;AACJ,4BAAA,IAAI,EAAE,eAAe;AACxB,yBAAA;qBACJ,CAAC;AACL,iBAAA;AAAM,qBAAA,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;AAC5C,oBAAA,IAAI,GAAG;AACH,wBAAA,MAAM,EAAE,eAAe;qBAC1B,CAAC;AACL,iBAAA;AACJ,aAAA;YAED,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAEjD,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAkD,SAAS,EAAEsB,YAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAE/H,OAAO,MAAM,CAAC,OAAO,CAAC;SACzB,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,+BAA+B,CAAC,OAAgC,EAAA;;AACpE,QAAA,IAAI,CAAC,oBAAoB,GAAG,QAAO,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,uBAAuB,CAAA,KAAK,SAAS;AACrF,cAAE,OAAO,CAAC,OAAO,CAAC,uBAAuB;cACvC,IAAI,CAAC;AAEX,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,sBAAsB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,yBAAyB,CAAC;AAEnG,QAAA,IAAI,CAAC,6BAA6B,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,uBAAuB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,iCAAiC,CAAC;KACtH;AAEO,IAAA,0BAA0B,CAAC,eAA8B,EAAA;AAC7D,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,KAAK,eAAe,CAAC,CAAC;KAChH;AAEO,IAAA,sBAAsB,CAAC,UAAkB,EAAA;AAC7C,QAAA,OAAO,CAAG,EAAA,iCAAiC,CAAG,EAAA,UAAU,EAAE,CAAC;KAC9D;AAEO,IAAA,iBAAiB,CAAC,UAAkB,EAAA;AACxC,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAElC,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAG3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAA6B,CAAC;AAE1F,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEtD,iBAAiB;aACZ,IAAI,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;AACvD,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,GAAG,KAAI;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAwC,qCAAA,EAAA,UAAU,CAAwB,qBAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAC;AAEnG,YAAA,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;KACV;AAEa,IAAA,cAAc,CAAC,aAAqD,EAAA;;AAC9E,YAAA,qBAAqB,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAEtD,YAAA,IAAI,CAAC,gCAAgC,CAAC,aAAa,CAAC,CAAC;YAErD,IAAI,aAAa,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC1D,gBAAA,MAAM,IAAI,KAAK,CAAC,kGAAkG,CAAC,CAAC;AACvH,aAAA;YAED,MAAM,uBAAuB,GAAG,CAAC,aAAa,CAAC,OAAO,IAAI,+BAA+B,IAAI,mCAAmC,CAAC;AAEjI,YAAA,MAAM,uCAAuC,GAAqC,EAAE,qBAAqB,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,0BAA0B,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;AAE/L,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAkF,SAAS,EAAEA,YAAU,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,uBAAuB,EAAE,aAAa,EAAE,uBAAuB,EAAE,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAE5S,YAAA,OAAO,MAAM,CAAC;SACjB,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,gCAAgC,CAAC,MAA8C,EAAA;QACnF,MAAM,QAAQ,GAAG,sHAAsH,CAAC;QAExI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AAE7B,YAAA,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC7B,SAAA;QAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;QAEtE,MAAM,yBAAyB,GAAG,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAZ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAY,CAAE,MAAM,CAAC;QACvD,MAAM,6BAA6B,GAAG,gBAAgB,KAAA,IAAA,IAAhB,gBAAgB,KAAhB,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gBAAgB,CAAE,MAAM,CAAC;QAE/D,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,CAAC,yBAAyB,IAAI,CAAC,6BAA6B,EAAE;AACxF,YAAA,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC7B,SAAA;KACJ;AAEa,IAAA,mBAAmB,CAAC,OAA+C,EAAA;;AAC7E,YAAA,oBAAoB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAE/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAoF,SAAS,EAAEA,YAAU,CAAC,mBAAmB,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAEzN,YAAA,OAAO,MAAM,CAAC;SACjB,CAAA,CAAA;AAAA,KAAA;AACJ;;ACjXM,MAAM,sBAAsB,GAA8D;AAC7F,IAAA,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;AAC1C,IAAA,sBAAsB,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE;AAC1D,IAAA,uBAAuB,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE;AAC5D,IAAA,mBAAmB,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE;AACpD,IAAA,2BAA2B,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE;AACpE,IAAA,mBAAmB,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE;AACpD,IAAA,wBAAwB,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE;AAC9D,IAAA,2BAA2B,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE;AACpE,IAAA,gCAAgC,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE;CACjF,CAAC;AAEK,MAAM,wBAAwB,GAAG,cAAc,CAAC;AAEhD,MAAM,cAAc,GAAG,kBAAkB;;ACVzC,MAAMA,YAAU,GAAwD;IAC3E,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE;IACtE,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,wBAAwB,EAAE;AAC/E,IAAA,qBAAqB,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,gCAAgC,EAAE,aAAa,EAAE,kCAAkC,EAAE;AAC1J,IAAA,wBAAwB,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,WAAW,EAAE,qCAAqC,EAAE,aAAa,EAAE,qCAAqC,EAAE;IACxK,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE;CAC5E;;MCMY,kBAAkB,CAAA;AAA/B,IAAA,WAAA,GAAA;QACqB,IAAQ,CAAA,QAAA,GAAqBG,KAAuB,EAAE,CAAC;QASvD,IAAqB,CAAA,qBAAA,GAAG,eAAe,CAAC;QACxC,IAAO,CAAA,OAAA,GAAG,MAAM,CAAC;QACjB,IAAU,CAAA,UAAA,GAAG,SAAS,CAAC;AAsShC,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,QAAmG,EAAG,SAAiB,KAAI;AAClJ,YAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AACd,iBAAA,IAAI,CAAC,CAAC,cAAwD,KAAI;AAC/D,gBAAA,IAAI,OAAO,cAAc,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;oBACpF,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAEhE,oBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,KAAI;AAC3E,wBAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,KAAA,IAAA,IAAT,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,CAAE,SAAS,CAAC,CAAC;AAC1D,qBAAC,CAAC,CAAC;AACN,iBAAA;AAGD,gBAAA,OAAO,SAAS,CAAC;AACrB,aAAC,CAAC;AACD,iBAAA,IAAI,CAAC,CAAC,EAA4B,KAAI;AACnC,gBAAA,IAAI,EAAE,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;AAChC,oBAAA,EAAE,EAAE,CAAC;AACR,iBAAA;AACL,aAAC,CAAC;AACD,iBAAA,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,SAAC,CAAC;KAwCL;IAhWU,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;KACzB;IAEO,sBAAsB,GAAA;AAC1B,QAAAH,YAAU,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,QAAAA,YAAU,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACtE;IAEY,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;;YACpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAEnE,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;AAE1D,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAElC,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,YAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAEzB,YAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;AAE/C,YAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;AAE/C,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0FAA0F,CAAC,CAAC;AAE9G,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAExB,YAAA,QAAiC,CAAC,QAAQ,GAAG,GAAG,CAAC;SACrD,CAAA,CAAA;AAAA,KAAA;AAEY,IAAA,mBAAmB,CAAC,IAAS,EAAA;;YACtC,MAAM,aAAa,GAAG,6BAA6B,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAErF,YAAA,MAAM,SAAS,GAAGA,YAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,YAAA,IAAG,CAAC,SAAS,CAAC,OAAO,EAAE;gBACnB,OAAO;AACV,aAAA;AAED,YAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,IAAI,CAAC;YAEnC,IAAI,SAAS,CAAC,WAAW,EAAE;gBACvB,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,aAAA;AAED,YAAA,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SACjD,CAAA,CAAA;AAAA,KAAA;IAEY,IAAI,GAAA;;AACb,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAE/C,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAEpG,YAAA,OAAO,eAAe,CAAC;SAC1B,CAAA,CAAA;AAAA,KAAA;IAEM,EAAE,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;KACzB;IAEa,kBAAkB,GAAA;;AAC5B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAE1B,OAAO,OAAO,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;SACrC,CAAA,CAAA;AAAA,KAAA;IAEY,IAAI,CAAC,IAAY,EAAE,QAAiB,EAAA;;AAC7C,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC/C,kBAAkB,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACxD,YAAA,6BAA6B,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAEzD,YAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;AAC1D,gBAAA,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACpC,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAwB,UAAU,EAAEA,YAAU,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9J,aAAA;SACJ,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,iBAAiB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAmB,EAAA;QAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KACvC;AAEM,IAAA,SAAS,CAAC,QAAmC,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KACjC;IAEY,KAAK,GAAA;;AACd,YAAA,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;SAChC,CAAA,CAAA;AAAA,KAAA;IAEO,KAAK,GAAA;AACT,QAAA,MAAM,GAAG,GAAkC;YACvC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YACxD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;SACjE,CAAC;AAEF,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC7B;AAEO,IAAA,iBAAiB,CAAC,WAAmB,EAAA;AACzC,QAAA,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAG,EAAA,WAAW,EAAE,CAAC;KACxD;IAEO,kBAAkB,GAAA;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAEzC,MAAM,mBAAmB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAErH,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,kBAAkB,KAAK,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,CAAC;AAEjI,QAAA,OAAO,YAAY,CAAC;KACvB;IAEO,WAAW,GAAA;QACf,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,eAAe,EAAE,CAAC;AAEvB,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AACpC,SAAA;KACJ;AAEa,IAAA,eAAe,CAAC,IAAa,EAAA;;YACvC,IAAI,CAAC,WAAW,EAAE,CAAC;AAGnB,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAG/B,YAAA,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;gBAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAEjD,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,KAAI;oBACjG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,KAAT,IAAA,IAAA,SAAS,uBAAT,SAAS,CAAE,SAAS,CAAC,CAAC;AACrF,iBAAC,CAAC,CAAC;AACN,aAAA;YAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAE7C,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;SAC3E,CAAA,CAAA;AAAA,KAAA;IAEa,UAAU,CAAC,IAAY,EAAE,IAAS,EAAA;;YAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAExC,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;AAChC,gBAAA,MAAM,UAAU,GAA0C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;oBACpF,OAAO;wBACH,IAAI,EAAE,CAAQ,KAAA,EAAA,GAAG,CAAE,CAAA;AACnB,wBAAA,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;qBACnB,CAAC;AACN,iBAAC,CAAC,CAAC;AAEH,gBAAA,IAAI,QAAQ,EAAE;AACV,oBAAA,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;AAC7D,iBAAA;gBAED,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACzD,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,QAAQ,EAAE;AACV,oBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC;AACnC,iBAAA;AAGD,gBAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACrD,aAAA;SACJ,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,WAAW,CAAC,IAAS,EAAA;QACzB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAW,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAE3F,QAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,OAAO;AACV,SAAA;AAED,QAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;AAC9E,SAAA;AAED,QAAA,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACxD;AAEO,IAAA,SAAS,CAAC,QAAmG,EAAA;AACjH,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;AACrG,SAAA;AAED,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAEtC,QAAA,IAAI,cAAc,EAAE;AAChB,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AAClD,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KACpD;IAEa,YAAY,CAAC,IAAY,EAAE,QAAmG,EAAA;;AACxI,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC/C,kBAAkB,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACxD,YAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,gBAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAA,kDAAA,CAAoD,CAAC,CAAC;AAC5G,aAAA;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAEjD,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,KAAI;AAC3E,gBAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,KAAA,IAAA,IAAT,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,CAAE,SAAS,CAAC,CAAC;AAC1D,aAAC,CAAC,CAAC;SACN,CAAA,CAAA;AAAA,KAAA;IAEO,OAAO,CAAC,IAAS,EAAE,IAAa,EAAA;AACpC,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;AAC7F,SAAA;AACD,QAAA,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;AAC7B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC/C,kBAAkB,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAExD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtC,SAAA;AAED,QAAA,IAAI,OAAO,IAAI,CAAC,kBAAkB,KAAK,WAAW,EAAE;AAChD,YAAA,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;AAClF,SAAA;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;KACzD;IAEY,GAAG,GAAA;;AACZ,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAE/C,YAAA,OAAO,YAAY,CAAC;SACvB,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,GAAG,CAAC,IAAY,EAAA;;AAC1B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC/C,kBAAkB,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAExD,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAEjD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAE5D,IAAI,cAAc,CAAC,gBAAgB,EAAE;gBAC3B,MAAuB,IAAI,GAAAtB,QAAA,CAAI,cAAc,EAA7C,CAA4B,kBAAA,CAAA,EAAkB;AAEpD,gBAAA,OAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAY,IAAI,CAAG,CAAA;AACtB,aAAA;AAED,YAAA,OAAO,cAAc,CAAC;SACzB,CAAA,CAAA;AAAA,KAAA;IAEO,OAAO,GAAA;QACX,OAAO,IAAI,CAAC,kBAA4B,CAAC;KAC5C;AAEO,IAAA,OAAO,CAAC,QAAmC,EAAA;AAC/C,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;AAC5G,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KACvD;AAEa,IAAA,GAAG,CAAC,IAA8C,EAAA;;YAC5D,MAAM,cAAc,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAEpE,YAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAE1F,YAAA,IAAI,yBAAyB,EAAE;AAC3B,gBAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;AACzE,aAAA;AAED,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiD,UAAU,EAAEsB,YAAU,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAE1H,YAAA,OAAO,cAAc,CAAC;SACzB,CAAA,CAAA;AAAA,KAAA;IAwBa,KAAK,GAAA;;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC1B,OAAO;AACV,aAAA;YAED,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SAC5C,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,mBAAmB,CAAC,OAAe,EAAA;;AAC7C,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC/C,kBAAkB,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAE3D,YAAA,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA8C,UAAU,EAAEA,YAAU,CAAC,qBAAqB,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;YAEjM,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAuC,CAAC,OAAO,EAAE,QAAQ,KAAI;gBACxF,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAEzD,gBAAA,OAAO,MAAM,GAAG,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;aAClD,EAAE,EAAE,CAAC,CAAC;AAEP,YAAA,OAAO,MAAM,CAAC;SACjB,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,sBAAsB,CAAC,MAA0D,EAAA;;AAC3F,YAAA,MAAM,aAAa,GAAmC,MAAM,KAAK,SAAS;kBACpE,EAAE,MAAM,EAAE,8BAA8B,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;kBACnE,EAAE,CAAC;YAET,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAwE,UAAU,EAAEA,YAAU,CAAC,wBAAwB,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAE5O,YAAA,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAkD,CAAC,mBAAmB,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAI;gBACrJ,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAEzD,OAAO,MAAM,GAAG,CAAC,GAAG,mBAAmB,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,mBAAmB,CAAC;aACpG,EAAE,EAAE,CAAC,CAAC;AAEP,YAAA,OAAO,MAAM,CAAC;SACjB,CAAA,CAAA;AAAA,KAAA;AACJ;;AC3XM,MAAMA,YAAU,GAAuD;IAC1E,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE;IACrE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE;AACvD,IAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;CACjD;;MCFY,gBAAgB,CAAA;IAIZ,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;;AACpD,YAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACzB,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YAEf,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,YAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;SAC/B,CAAA,CAAA;AAAA,KAAA;AAEY,IAAA,mBAAmB,CAAC,IAAS,EAAA;;YACtC,MAAM,aAAa,GAAG,2BAA2B,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEnF,YAAA,MAAM,SAAS,GAAGA,YAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;gBACpB,OAAO;AACV,aAAA;AAED,YAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,IAAI,CAAC;YAEnC,IAAI,SAAS,CAAC,WAAW,EAAE;gBACvB,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,aAAA;AAED,YAAA,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SACjD,CAAA,CAAA;AAAA,KAAA;IAEa,uBAAuB,GAAA;;AAEjC,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,sBAAsB,GAAG,UAAU,CAAC,sBAAsB,EAAE,GAAG,IAAI,CAAC,CAAC;AAE5I,YAAA,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC;AAE9C,YAAA,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAEjC,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SAE5B,CAAA,CAAA;AAAA,KAAA;IAEa,cAAc,GAAA;;AAExB,YAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAY,QAAQ,EAAEA,YAAU,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAGtG,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAY,QAAQ,EAAEA,YAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAExF,MAAM,eAAe,GAAI,MAAc,CAAC,UAAU,IAAK,MAAc,CAAC,SAAS,CAAC;AAEhF,YAAA,MAAM,mBAAmB,GAAI,MAAc,CAAC,UAAU,GAAG,YAAY,GAAG,WAAW,CAAC;AAGpF,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;YAG3E,MAAc,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACnE,CAAA,CAAA;AAAA,KAAA;IAEO,sBAAsB,GAAA;AAC1B,QAAAA,YAAU,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjF;AACJ;;MCnEY,YAAY,CAAA;IA2BrB,WAAY,CAAA,MAAmD,EAAE,EAAU,EAAA;AAzBpE,QAAA,IAAA,CAAA,OAAO,GAAc,MAAK,GAAI,CAAC;AAC/B,QAAA,IAAA,CAAA,MAAM,GAAc,MAAK,GAAI,CAAC;AAyBjC,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACpD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACxC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC;AACtE,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACtC,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;KAC7B;AAEJ;;ACrD+EL,OAAK,CACjFJ,UAAQ,CAAC,aAAa,CAAC,EACzB;AAEK,MAAM,sBAAsB,GAA6BC,QAAM,CAAC;IACnE,MAAM,EAAEA,QAAM,CAAC;QACX,MAAM,EAAEH,SAAO,EAAE;KACpB,CAAC;AACL,CAAA,CAAC;;ACLK,MAAMW,YAAU,GAA0D;IAC7E,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,sBAAsB,EAAE;CAC9E;;MCGY,aAAa,CAAA;AAA1B,IAAA,WAAA,GAAA;QAQY,IAAQ,CAAA,QAAA,GAA+C,EAAE,CAAC;QAC1D,IAAU,CAAA,UAAA,GAAmB,EAAE,CAAC;AAEvB,QAAA,IAAA,CAAA,eAAe,GAAmF;AAC/G,YAAA,6BAA6B,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,MAAM,EAAE,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrI,YAAA,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACxF,CAAC;KAsFL;IApFU,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACxB;IAEY,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;;YAEpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;AAEpE,YAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,cAAc,CAAC;AAEnC,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAE3D,YAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACzB,YAAA,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,kBAAkB,CAAC;AACjD,YAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,CAAC;YAG7C,IAAI;AACA,gBAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACrC,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;gBAIZ,OAAO;AACV,aAAA;YAED,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;AAErD,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACrG,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AAChE,gBAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;AAChG,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACvC,CAAA,CAAA;AAAA,KAAA;AAEY,IAAA,mBAAmB,CAAC,CAAM,EAAA;;SAEtC,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,oBAAoB,CAAC,OAAY,EAAA;QAErC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE;YACjD,OAAO;AACV,SAAA;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE3D,IAAI,CAAC,YAAY,EAAE;YACf,OAAO;AACV,SAAA;AAED,QAAA,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAChC;IAEa,oBAAoB,GAAA;;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAEnD,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAwC,WAAW,EAAEA,YAAU,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAE9I,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;SAClG,CAAA,CAAA;AAAA,KAAA;IAEa,mCAAmC,GAAA;;;YAC7C,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC,MAAM,CAAA,EAAE;AAC7B,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAA4B,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACjI,aAAA;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC,CAAC;YAEtG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAA4B,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;;AAClK,KAAA;AAEa,IAAA,mBAAmB,CAAC,OAAyB,EAAA;;AACvD,YAAA,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE;AAC/B,gBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;gBACtC,OAAO;AACV,aAAA;YAED,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACpD,CAAA,CAAA;AAAA,KAAA;AACJ;;MCtGY,gBAAgB,CAAA;AAMzB,IAAA,WAAA,CAA6B,MAAoB,EAAA;QAApB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAc;QAJhC,IAAQ,CAAA,QAAA,GAAqBG,KAAuB,EAAE,CAAC;QACvD,IAAe,CAAA,eAAA,GAAG,QAAQ,CAAC;AAK3B,QAAA,IAAA,CAAA,MAAM,GAA6F;AAChH,YAAA,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrF,YAAA,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5E,YAAA,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAClF,CAAC;KANoD;IAQ/C,IAAI,GAAA;QACP,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;KACzE;AAEM,IAAA,KAAK,CAAC,IAA0B,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAEM,IAAA,kBAAkB,CAAI,OAAU,EAAA;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;KAClD;AAEM,IAAA,gBAAgB,CAAC,QAAgC,EAAA;QACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;KACrD;IAEO,uBAAuB,GAAA;QAE3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpD,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;KACtE;AAEO,IAAA,aAAa,CAAC,KAAY,EAAA;;AAC9B,QAAA,MAAM,IAAI,GAAI,KAAqB,CAAC,MAAM,CAAC;AAE3C,QAAA,MAAM,SAAS,GAAG,CAAA,EAAA,GAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAC;QAEnD,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO;AACV,SAAA;AAED,QAAA,MAAM,WAAW,GAAW,SAAS,CAAC,KAAK,CAAC;QAE5C,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE9C,IAAI,CAAC,YAAY,EAAE;YACf,OAAO;AACV,SAAA;AAED,QAAA,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KAC1C;IAEO,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KAChC;IAEO,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,wGAAwG,EAAE,CAAC,CAAC;YAChK,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KACnE;IAEO,mBAAmB,GAAA;QACvB,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAEO,IAAA,gBAAgB,CAAC,OAAY,EAAA;QACjC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;KACjD;AAEO,IAAA,IAAI,CAAC,SAAiB,EAAE,SAAkC,EAAE,OAAa,EAAA;QAC7E,MAAM,OAAO,GAAuB,EAAE,CAAC;QACvC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAEnD,QAAA,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAEzE,QAAA,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC/B;AACJ;;MC5FY,6BAA6B,CAAA;AAStC,IAAA,WAAA,CAA6B,QAA2B,EAAA;QAA3B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;QAPvC,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAC3B,IAAgB,CAAA,gBAAA,GAA0C,EAAE,CAAC;QAGtE,IAAgB,CAAA,gBAAA,GAAG,CAAC,CAAC;AAIzB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;KACvF;IAEM,IAAI,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE;YACtC,OAAO;AACV,SAAA;QAED,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACzC;AAEY,IAAA,KAAK,CAAC,UAAwB,EAAA;;YACvC,IAAI,UAAU,CAAC,kBAAkB,EAAE;AAC/B,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gGAAgG,CAAC,CAAC;gBACpH,OAAO;AACV,aAAA;AAED,YAAA,MAAM,qBAAqB,GAAI,IAAI,CAAC,QAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,wBAAwB,CAAC;YAE9G,IAAI,CAAC,qBAAqB,EAAE;AACxB,gBAAA,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAC;AACvI,aAAA;YAED,IAAI,CAAE,IAAI,CAAC,QAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,oBAAoB,EAAE;AACnE,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qHAAqH,CAAC,CAAC;gBACzI,OAAO;AACV,aAAA;YAED,IAAI,CAAC,oBAAoB,GAAI,IAAI,CAAC,QAAgB,CAAC,UAAU,CAAC,SAAS,CAAC;AAExE,YAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAEpH,YAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,gCAAgC,EAAE,CAAC;AAErE,YAAA,MAAM,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;SACnD,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,wBAAwB,CAAC,GAAoB,EAAA;AACjD,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YACzB,OAAO;AACV,SAAA;AAED,QAAA,MAAM,qBAAqB,GAAI,IAAI,CAAC,QAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,wBAAwB,CAAC;AAE9G,QAAA,MAAM,IAAI,GAAI,GAAW,CAAC,IAAI,CAAC;AAC/B,QAAA,MAAM,IAAI,GAAI,GAAW,CAAC,IAAI,CAAC;AAC/B,QAAA,MAAM,aAAa,GAAI,GAAW,CAAC,aAAa,CAAC;AAEjD,QAAA,IAAI,IAAI,KAAK,sBAAsB,CAAC,sBAAsB,CAAC,IAAI,EAAE;YAC7D,OAAO,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACjE,SAAA;QAED,IAAI,IAAI,KAAK,sBAAsB,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC/E,YAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACtC,SAAA;AAED,QAAA,IAAI,IAAI,KAAK,sBAAsB,CAAC,2BAA2B,CAAC,IAAI,EAAE;YAClE,OAAO,IAAI,CAAC,iCAAiC,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACtE,SAAA;AAED,QAAA,IAAI,IAAI,KAAK,sBAAsB,CAAC,mBAAmB,CAAC,IAAI,EAAE;AAC1D,YAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;AACxD,SAAA;AAED,QAAA,IAAI,IAAI,KAAK,sBAAsB,CAAC,wBAAwB,CAAC,IAAI,EAAE;YAC/D,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACnE,SAAA;KAEJ;IAEa,uBAAuB,GAAA;;YACjC,IAAI;AACA,gBAAA,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;AAC7C,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA+D,4DAAA,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;gBAC1G,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAExB,gBAAA,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE;AAC3B,oBAAA,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACzC,iBAAA;AAED,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+HAA+H,CAAC,CAAC;AACrJ,aAAA;AAED,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+FAA+F,CAAC,CAAC;AAEnH,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAE1B,YAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;AAElC,YAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,gCAAgC,EAAE,CAAC;AAErE,YAAA,MAAM,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;SAEnD,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,oBAAoB,CAAC,MAAsB,EAAA;;AACrD,YAAA,MAAM,sBAAsB,GAAY,IAAI,CAAC,QAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AAE1F,YAAA,IAAI,sBAAsB,KAAK,MAAM,CAAC,aAAa,EAAE;AACjD,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iHAAiH,CAAC,CAAC;gBACrI,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mGAAmG,sBAAsB,CAAA,6BAAA,EAAgC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC,CAAC;AAErM,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAEtE,IAAI,CAAC,YAAY,EAAE,CAAC;AAEpB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAmD,gDAAA,EAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC,CAAC;SAClG,CAAA,CAAA;AAAA,KAAA;IAEa,gCAAgC,GAAA;;AAE1C,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;AAE7E,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAiB,sBAAsB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAEzG,YAAA,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;AAE1F,YAAA,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC;AAE9C,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAgD,6CAAA,EAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA,CAAE,CAAC,CAAC;AAEpG,YAAA,OAAO,cAAc,CAAC;SACzB,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,cAAc,CAAI,SAA2B,EAAA;QACjD,MAAM,WAAW,GAAmB,EAAoB,CAAC;AAEzD,QAAA,MAAM,aAAa,GAAG2B,yBAAQ,EAAE,CAAC;QAEjC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,KAAI;YAEvD,IAAI,eAAe,GAAG,IAAI,CAAC;AAE3B,YAAA,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,KAAU;gBAC9B,eAAe,GAAG,KAAK,CAAC;AACxB,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBAC5C,OAAO,CAAC,IAAI,CAAC,CAAC;AAClB,aAAC,CAAC;AAEF,YAAA,WAAW,CAAC,IAAI,GAAG,CAAC,MAAM,KAAU;gBAChC,eAAe,GAAG,KAAK,CAAC;AACxB,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBAC5C,MAAM,CAAC,MAAM,CAAC,CAAC;AACnB,aAAC,CAAC;YAEF,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,eAAe,EAAE;oBAClB,OAAO;AACV,iBAAA;gBAED,eAAe,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAA8B,2BAAA,EAAA,SAAS,CAAa,WAAA,CAAA,CAAC,CAAC;AACvE,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAC5C,gBAAA,MAAM,CAAC,CAAA,2BAAA,EAA8B,SAAS,CAAA,WAAA,CAAa,CAAC,CAAC;AACjE,aAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;AAEH,QAAA,WAAW,CAAC,IAAI,GAAG,eAAe,CAAC;AAEnC,QAAA,WAAW,CAAC,EAAE,GAAG,aAAa,CAAC;AAE/B,QAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC;AAEnD,QAAA,OAAO,WAAW,CAAC;KACtB;AAEO,IAAA,mBAAmB,CAAC,IAAsB,EAAE,aAAqB,EAAE,IAAU,EAAA;AACjF,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,oCAAA,EAAuC,IAAI,CAAS,MAAA,EAAA,aAAa,CAAc,WAAA,EAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC,CAAC;AACzH,QAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;AACjC,YAAA,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE;AAC5C,SAAA,CAAC,CAAC;KACN;IAEO,4BAA4B,CAAC,IAAS,EAAE,aAAqB,EAAA;AACjE,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,aAAa,CAAA,WAAA,EAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC,CAAC;QACrH,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC;AACxD,aAAA,IAAI,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAmD,gDAAA,EAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC,CAAC;YAC/F,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9H,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzB,YAAA,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACrH,SAAC,CAAC,CAAC;KACV;IAEO,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gHAAgH,CAAC,CAAC;QACpI,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAClC;IAEO,iCAAiC,CAAC,IAAS,EAAE,aAAqB,EAAA;AACtE,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+DAA+D,aAAa,CAAA,WAAA,EAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC,CAAC;AACpI,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAgC,CAAC;QAE7D,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAEzD,WAAW,KAAA,IAAA,IAAX,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,IAAI,CAAC,cAAc,CAAC,CAAC;KACrC;AAEO,IAAA,yBAAyB,CAAC,aAAqB,EAAA;AACnD,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,2BAA2B,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;KACzH;IAEO,8BAA8B,CAAC,IAAS,EAAE,aAAqB,EAAA;AACnE,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAErB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAuC,oCAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAC;AAEhE,QAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC;AAC7B,aAAA,IAAI,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAqB,kBAAA,EAAA,GAAG,CAAc,YAAA,CAAA,CAAC,CAAC;AAC1D,YAAA,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,gCAAgC,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AAClH,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAqB,kBAAA,EAAA,GAAG,CAAkB,gBAAA,CAAA,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,gCAAgC,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACrH,SAAC,CAAC,CAAC;KACV;AAEO,IAAA,wBAAwB,CAAC,GAAW,EAAA;AAExC,QAAA,OAAO,IAAI,OAAO,CAAoB,CAAC,OAAO,KAAI;AAC9C,YAAA,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;AAE9B,YAAA,EAAE,CAAC,OAAO,GAAG,MAAY,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAElD,YAAA,EAAE,CAAC,MAAM,GAAG,MAAW;gBACnB,EAAE,CAAC,KAAK,EAAE,CAAC;AACX,gBAAA,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5B,aAAC,CAAC;AAEN,SAAC,CAAC,CAAC;KAEN;IAEO,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,CAAC;KACnD;AACJ;;MCxPY,mBAAmB,CAAA;IAK5B,WACI,CAAA,MAAmC,EAClB,MAAkB,EAClB,OAA8B,EAC9B,oBAA0C,EAC1C,iBAAoC,EAAA;QAHpC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;QAClB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAuB;QAC9B,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QAPjD,IAA+B,CAAA,+BAAA,GAA6D,EAAE,CAAC;QASnG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;KAC9C;IAEY,KAAK,CAAC,uBAAwD,EAAE,YAAuI,EAAA;;;AAChN,YAAA,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,uBAAuB,CAAC;YAElE,MAAM,MAAM,GAAG,CAAC,MAAM,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC;YAE/G,IAAI,CAAC,MAAM,EAAE;gBACT,MAAM,IAAI,KAAK,CAAC,CAAA,iBAAA,EAAoB,aAAa,CAAC,MAAM,CAAY,UAAA,CAAA,CAAC,CAAC;AACzE,aAAA;AAED,YAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;YAEnG,IAAI,CAAC,IAAI,EAAE;gBACP,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC,CAA6C,0CAAA,EAAA,MAAM,CAAE,CAAA,CAAC,CAAC;AAE1E,gBAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAChD,aAAA;YAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,CAAC;AAEpF,YAAA,OAAO,YAAY,CAAC;;AACvB,KAAA;AAEO,IAAA,eAAe,CAAC,UAAuC,EAAA;AAC3D,QAAA,OAAO,UAAU,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;KAC5D;AAEa,IAAA,0BAA0B,CAAC,uBAAwD,EAAA;;AAC7F,YAAA,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,uBAAuB,CAAC;YAElE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAqC,kCAAA,EAAA,cAAc,CAAC,OAAO,CAAe,aAAA,CAAA,CAAC,CAAC;AAE9F,YAAA,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAE/D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA6B,0BAAA,EAAA,kBAAkB,CAAE,CAAA,CAAC,CAAC;YAErE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;YAE/G,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAqC,kCAAA,EAAA,gBAAgB,CAAC,EAAE,CAAS,OAAA,CAAA,CAAC,CAAC;YAErF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAEvE,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,KAAK;AACjC,kBAAE,EAAE,GAAG,EAAE,OAAO,CAAC,eAAe,EAAE;kBAChC,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;AAEvC,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAsC,mCAAA,EAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC,CAAC;YAElF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,aAAa,CAAA,EAAA,EAAE,MAAM,EAAA,CAAA,CAAG,CAAC;AAEhF,YAAA,OAAO,YAAY,CAAC;SACvB,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,sBAAsB,CAAC,UAAkB,EAAA;;;YACnD,IAAI;AACA,gBAAA,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;AAE3F,gBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC,CAAoC,iCAAA,EAAA,MAAM,CAAK,EAAA,EAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA,CAAE,CAAC,CAAC;AAE7F,gBAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;AAEtC,gBAAA,OAAO,OAAO,CAAC;AAElB,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;AAEtC,gBAAA,MAAM,IAAI,KAAK,CAAC,KAAe,CAAC,CAAC;AACpC,aAAA;;AACJ,KAAA;AAEO,IAAA,iBAAiB,CAAC,UAAkD,EAAA;AACxE,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAgF,SAAS,EAAE9B,YAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;KACzJ;IAEa,sBAAsB,GAAA;;AAChC,YAAA,MAAM,UAAU,GAAG,+BAA+B,GAAGwC,SAAO,EAAE,CAAC;AAE/D,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAEjF,YAAA,OAAO,UAAU,CAAC;SACrB,CAAA,CAAA;AAAA,KAAA;IAEa,6BAA6B,CAAC,uBAAwD,EAAE,UAAkB,EAAA;;AACpH,YAAA,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,uBAAuB,CAAC;YAElE,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AAEvE,YAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEpD,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA,cAAA,EAAiB,YAAY,CAAA,CAAE,CAAC,CAAC;YAE7H,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YAE1H,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAqC,kCAAA,EAAA,QAAQ,CAAC,EAAE,CAAS,OAAA,CAAA,CAAC,CAAC;AAE7E,YAAA,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;AAE1C,YAAA,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,cAAc,CAAC,mBAAmB,CAAC,CAAC;AAE9G,YAAA,OAAO,QAAQ,CAAC;SACnB,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,4BAA4B,CAAC,UAAkB,EAAA;;YACzD,MAAM,aAAa,GAAG,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC;YAEvE,IAAI,CAAC,aAAa,EAAE;gBAChB,OAAO;AACV,aAAA;AAGD,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAA6B,CAAC;AAExG,YAAA,iBAAiB,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAE5D,YAAA,OAAO,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC;SAC3D,CAAA,CAAA;AAAA,KAAA;IAEO,iBAAiB,CAAC,UAAkD,EAAE,UAAkB,EAAA;QAC5F,OAAO;AACH,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAS;YACzC,UAAU;SACb,CAAC;KACL;IAEa,iBAAiB,GAAA;;AAC3B,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAE5C,OAAO;AACH,gBAAA,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,uBAAuB,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG;AAC/D,gBAAA,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,sBAAsB,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI;AAC/D,gBAAA,KAAK,EAAE,sBAAsB;AAC7B,gBAAA,MAAM,EAAE,uBAAuB;aAClC,CAAC;SACL,CAAA,CAAA;AAAA,KAAA;IAEa,eAAe,GAAA;;AACzB,YAAA,MAAM,MAAM,GAAG,CAAA,MAAM,IAAI,CAAC,uBAAuB,EAAE,MAAI,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAA,CAAC;AAE/F,YAAA,IAAI,MAAM,EAAE;AACR,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA4C,yCAAA,EAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC,CAAC;AAExF,gBAAA,OAAO,MAAM,CAAC;AACjB,aAAA;AAED,YAAA,MAAM,aAAa,GAAoC;AACnD,gBAAA,GAAG,EAAG,MAAc,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC;AACzC,gBAAA,IAAI,EAAG,MAAc,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC;AAC3C,gBAAA,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;AAC1B,gBAAA,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;aAC/B,CAAC;AAEF,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA6D,0DAAA,EAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA,CAAE,CAAC,CAAC;AAEhH,YAAA,OAAO,aAAa,CAAC;SACxB,CAAA,CAAA;AAAA,KAAA;IAEa,uBAAuB,GAAA;;YACjC,IAAI;AACA,gBAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC;AAErE,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAyD,sDAAA,EAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA,CAAE,CAAC,CAAC;AAE7G,gBAAA,OAAO,cAAc,CAAC;AACzB,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAoC,iCAAA,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;AAClF,aAAA;AAGD,YAAA,OAAO,SAAS,CAAC;SACpB,CAAA,CAAA;AAAA,KAAA;IAEa,0BAA0B,GAAA;;YACpC,IAAI;AACA,gBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA6C,YAA0B,EAAE,gBAAgB,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,+BAA+B,EAAE,CAAC,CAAC;AAEhL,gBAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAkD,YAA0B,EAAE,gBAAgB,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAEvN,gBAAA,MAAM,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC;AAEhD,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAyE,sEAAA,EAAA,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA,CAAE,CAAC,CAAC;AAEhI,gBAAA,OAAO,iBAAiB,CAAC;AAC5B,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAoD,iDAAA,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;AAClG,aAAA;AAGD,YAAA,OAAO,SAAS,CAAC;SACpB,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,0BAA0B,CAAC,QAA8C,EAAA;AAC7E,QAAA,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;QAEjC,MAAM,KAAK,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC,IAA0C,KAAI;AACvF,YAAA,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,EAAE;gBACzB,OAAO;AACV,aAAA;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEpE,IAAI,CAAC,aAAa,EAAE;gBAChB,OAAO,KAAK,EAAE,CAAC;AAClB,aAAA;AAED,YAAA,aAAa,CAAC,MAAM,CAAC,CAAA,8BAAA,EAAiC,aAAa,CAAC,MAAM,CAAA,gBAAA,EAAmB,WAAW,CAAC,IAAI,CAAA,uCAAA,CAAyC,CAAC,CAAC;AAExJ,YAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAE3C,YAAA,KAAK,EAAE,CAAC;AACZ,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,qBAAqB,CAAC,MAAc,EAAE,UAAkB,EAAE,UAAkB,EAAE,OAAe,EAAA;AACjG,QAAA,IAAI,OAAO,GAA2C,MAAK,GAAI,CAAC;AAChE,QAAA,IAAI,MAAM,GAA6B,MAAK,GAAI,CAAC;QAEjD,MAAM,OAAO,GAAGpC,aAAW,CAAyB,CAAC,GAAG,EAAE,GAAG,KAAI;YAC7D,OAAO,GAAG,GAAG,CAAC;YACd,MAAM,GAAG,GAAG,CAAC;SAChB,EAAE,OAAO,EAAE,CAAA,WAAA,EAAc,OAAO,CAA8D,2DAAA,EAAA,MAAM,CAAE,CAAA,CAAC,CAAC;AAEzG,QAAA,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;KACvG;IAEO,uBAAuB,CAAC,IAAS,EAAE,QAA2C,EAAA;QAClF,MAAM,QAAQ,GAAG,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEzD,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAErC,IAAI,QAAQ,CAAC,EAAE,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,iCAAA,EAAoC,UAAU,CAA2B,wBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC,CAAC;AAE9H,YAAA,OAAO,IAAI,CAAC,+BAA+B,CAAC,UAAW,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrF,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,iCAAA,EAAoC,UAAU,CAAqC,kCAAA,EAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;AAEvI,QAAA,IAAI,CAAC,+BAA+B,CAAC,UAAW,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAEjF,QAAA,IAAI,CAAC,oBAAoB,CAAC,UAAW,CAAC,CAAC;KAC1C;AAEO,IAAA,oBAAoB,CAAC,UAAkB,EAAA;QAC3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,IAA0C,KAAK,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QAE/I,IAAI,CAAC,gBAAgB,EAAE;YACnB,OAAO;AACV,SAAA;AAED,QAAA,gBAAgB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;KAChE;IAEO,kCAAkC,CAAC,MAAuC,EAAE,OAA+C,EAAA;AAE/H,QAAA,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE;AACpC,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QAED,OAAO,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;KACtF;AAEO,IAAA,6BAA6B,CAAC,MAAuC,EAAE,aAAqD,EAAE,cAA8B,EAAA;AAChK,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YACzB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,oEAAoE,EAAE,CAAC;AACxG,SAAA;AAED,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAE5F,IAAI,CAAC,kBAAkB,EAAE;AACrB,YAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA,sBAAA,EAAyB,cAAc,CAAC,OAAO,CAAA,UAAA,CAAY,EAAE,CAAC;AAC/F,SAAA;QAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAE7F,IAAI,CAAC,qBAAqB,EAAE;YACxB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC;AACxE,SAAA;AAED,QAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;KACzB;AACJ;;AC/SM,MAAMJ,YAAU,GAAuD;IAC1E,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,0BAA0B,EAAE;IAC7E,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,wBAAwB,EAAE;IAC/D,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;CACpE;;MCIY,gBAAgB,CAAA;AAA7B,IAAA,WAAA,GAAA;QAIqB,IAAQ,CAAA,QAAA,GAAqBG,KAAuB,EAAE,CAAC;QAEhE,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;KAuH/B;IArHgB,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;;YACpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;AAEjE,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;AAExD,YAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAEzB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAExB,YAAA,QAAiC,CAAC,MAAM,GAAG,GAAG,CAAC;AAEhD,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;SACzC,CAAA,CAAA;AAAA,KAAA;IAEM,sBAAsB,GAAA;;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AACzB,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,EAAE,CAAC;QAEjC,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;IAEY,mBAAmB,GAAA;;SAE/B,CAAA,CAAA;AAAA,KAAA;IAEO,KAAK,GAAA;AACT,QAAA,MAAM,GAAG,GAAgC;YACrC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACtC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;SACvC,CAAC;AAEF,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC7B;IAEa,UAAU,GAAA;;YAEpB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA4B,QAAQ,EAAEH,YAAU,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;YAEjK,OAAO,cAAc,CAAC,KAAK,CAAC;SAC/B,CAAA,CAAA;AAAA,KAAA;IAEa,IAAI,GAAA;;YACd,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA0B,QAAQ,EAAEA,YAAU,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;YAEzJ,OAAO,cAAc,CAAC,MAAM,CAAC;SAChC,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,MAAM,CAAC,IAAY,EAAA;;AAC7B,YAAA,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAE7C,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA0B,QAAQ,EAAEA,YAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;SACtI,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,SAAS,CAAC,QAAuD,EAAA;;AAE3E,YAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,gBAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;AACrE,aAAA;AAED,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB;AACpC,gBAAA,OAAO,CAAC,OAAO,EAAE;gBACjB,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAEtC,YAAA,MAAM,QAAQ,CAAC;YAEf,EAAE,IAAI,CAAC,eAAe,CAAC;AACvB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YAEjE,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SAC3C,CAAA,CAAA;AAAA,KAAA;IAEa,0BAA0B,GAAA;;YACpC,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,OAAO;AACV,aAAA;YAED,IAAI,CAAC,kBAAkB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC;YAEvE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;AACpC,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;gBAE5B,MAAM,UAAU,GAAG,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAE7D,gBAAA,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE;AAChB,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0DAA0D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;oBAC/G,OAAO;AACV,iBAAA;AAED,gBAAA,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;gBAEvC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;AACjE,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAK;AAClC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;AAC1G,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACtB,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;gBACzB,OAAO,IAAI,CAAC,kBAAkB,CAAC;AACnC,aAAC,CAAC,CAAC;SAEN,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,UAAU,CAAC,aAAkC,EAAA;;AACjD,QAAA,aAAa,EAAE,CAAC;QAChB,EAAE,IAAI,CAAC,eAAe,CAAC;QAEvB,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,OAAO;AACV,SAAA;AAED,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,EAAE,CAAC;QAEjC,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AACJ;;MCzIY,wBAAwB,CAAA;AAArC,IAAA,WAAA,GAAA;AACY,QAAA,IAAA,CAAA,cAAc,GAAY,MAAM,CAAC,cAAc,CAAC;KAiC3D;AA/BG,IAAA,IAAY,aAAa,GAAA;AACrB,QAAA,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;KAClE;AAEM,IAAA,SAAS,CAAC,MAA4B,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEhC,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,KAAI;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAEpD,IAAI,CAAC,IAAI,EAAE;AACP,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;AACxE,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAY,eAAe,GAAA;AACvB,QAAA,OAAO,CAAqB,kBAAA,EAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;KAC/C;IAEM,aAAa,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAW,CAAC,CAAC;KAClF;IAEM,aAAa,CAAsC,IAA4B,EAAE,GAAQ,EAAA;AAC5F,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAErC,QAAA,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAEpB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;KAC9E;AACJ;;AC/BM,MAAM,UAAU,GAAsD;IACzE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE;AAC7D,IAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;AAC9B,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,aAAa,EAAE,qBAAqB,EAAE;IAC/F,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,wBAAwB,EAAE;IACnE,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE;IACzD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;IAC/D,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,qBAAqB,EAAE;IAC1E,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,wBAAwB,EAAE;CAC9E;;MCCY,eAAe,CAAA;AAA5B,IAAA,WAAA,GAAA;QAMqB,IAAQ,CAAA,QAAA,GAAqBG,KAAuB,EAAE,CAAC;KAkL3E;IAhLU,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;KACzB;IAEY,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;;YACpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;AAEhE,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAEvD,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,YAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAEzB,YAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAEzB,YAAA,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC,oBAAoB,CAAC;YAErD,IAAI;gBACA,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA0B,OAAO,EAAE,UAAU,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEjK,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC;AACzD,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;gBAC5F,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uFAAuF,CAAC,CAAC;AAE3G,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAExB,YAAA,QAAiC,CAAC,KAAK,GAAG,GAAG,CAAC;SAClD,CAAA,CAAA;AAAA,KAAA;AAEY,IAAA,mBAAmB,CAAC,IAAS,EAAA;;YACtC,MAAM,aAAa,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAElF,YAAA,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;gBACpB,OAAO;AACV,aAAA;AAED,YAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,IAAI,CAAC;YAEnC,IAAI,SAAS,CAAC,WAAW,EAAE;gBACvB,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,aAAA;AAED,YAAA,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SACjD,CAAA,CAAA;AAAA,KAAA;IAEO,sBAAsB,GAAA;AAC1B,QAAA,UAAU,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrE;IAEO,KAAK,GAAA;AACT,QAAA,MAAM,GAAG,GAA+B;YACpC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;SACvC,CAAC;AAEF,QAAA,OAAO,GAAG,CAAC;KACd;IAEa,KAAK,GAAA;;AACf,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AAEhC,YAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC5B,CAAA,CAAA;AAAA,KAAA;IAEa,QAAQ,GAAA;;YAClB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAa,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAG,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;SAC5H,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,QAAQ,CAAC,GAAW,EAAA;;YAC9B,MAAM,WAAW,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAEhE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAwB,OAAO,EAAE,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;SAC9I,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,GAAG,CAAC,GAAY,EAAA;;YAC1B,MAAM,WAAW,GAAG,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAE1H,YAAA,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAoE,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAEvM,YAAA,OAAO,KAAK,CAAC;SAChB,CAAA,CAAA;AAAA,KAAA;IAEa,MAAM,GAAA;;YAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAyD,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAEjL,YAAA,OAAO,MAAM,CAAC;SACjB,CAAA,CAAA;AAAA,KAAA;IAEa,GAAG,CAAC,IAAS,EAAE,OAAyB,EAAA;;;YAClD,MAAM,eAAe,GAAGT,UAAQ,CAAC,sBAAsB,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACnF,YAAA,MAAM,GAAG,GAAG,CAAA,EAAA,GAAA,eAAe,aAAf,eAAe,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAf,eAAe,CAAE,GAAG,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,YAAY,EAAE,CAAC;YAExD,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;;AAChC,KAAA;IAEa,MAAM,CAAC,GAAW,EAAE,IAAS,EAAA;;YACvC,MAAM,WAAW,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAChE,MAAM,YAAY,GAAGF,QAAM,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAErD,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAmC,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;SAC3K,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,SAAS,CAAC,QAAgE,EAAA;AAC9E,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEhC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KAC3C;IAEO,YAAY,CAAC,GAAW,EAAE,QAAgE,EAAA;QAC9F,MAAM,WAAW,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC;QACjE,MAAM,UAAU,GAAG,WAAW,KAAK,IAAI,CAAC,eAAe,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAEhI,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAA,eAAA,CAAiB,CAAC,CAAC;AACnE,SAAA;AAED,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;AAClG,SAAA;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAE7D,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAErC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;KACvD;IAEa,MAAM,CAAC,IAAS,EAAE,OAAyB,EAAA;;;YACrD,MAAM,eAAe,GAAGE,UAAQ,CAAC,sBAAsB,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACnF,YAAA,MAAM,GAAG,GAAG,CAAA,EAAA,GAAA,eAAe,aAAf,eAAe,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAf,eAAe,CAAE,GAAG,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,YAAY,EAAE,CAAC;YAExD,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;;AACnC,KAAA;IAEa,SAAS,CAAC,GAAW,EAAE,IAAS,EAAA;;YAC1C,MAAM,WAAW,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAChE,MAAM,YAAY,GAAGF,QAAM,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAErD,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAmC,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;SAC9K,CAAA,CAAA;AAAA,KAAA;IAEO,YAAY,GAAA;;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAe,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,CAAC,EAAE,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,CAAC,IAAI,CAAC;QAEzH,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;AACvG,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KACpB;AAEO,IAAA,kBAAkB,CAAC,GAAW,EAAA;QAClC,OAAO,CAAA,cAAA,EAAiB,GAAG,CAAA,CAAE,CAAC;KACjC;IAEa,eAAe,CAAC,EAAE,KAAK,EAAoD,EAAA;;YACrF,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE3D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;SACjD,CAAA,CAAA;AAAA,KAAA;AACJ;;MC7KY,GAAG,CAAA;AAAhB,IAAA,WAAA,GAAA;AAqBW,QAAA,IAAA,CAAA,WAAW,GAA2C;YACzD,OAAO,EAAE,IAAI,CAAC,iBAAiB;YAC/B,UAAU,EAAE,IAAI,CAAC,oBAAoB;YACrC,OAAO,EAAE,IAAI,CAAC,iBAAiB;YAC/B,aAAa,EAAE,IAAI,CAAC,uBAAuB;YAC3C,OAAO,EAAE,IAAI,CAAC,iBAAiB;YAC/B,QAAQ,EAAE,IAAI,CAAC,kBAAkB;YACjC,MAAM,EAAE,IAAI,CAAC,gBAAgB;YAC7B,SAAS,EAAE,IAAI,CAAC,mBAAmB;YACnC,MAAM,EAAE,IAAI,CAAC,gBAAgB;YAC7B,KAAK,EAAE,IAAI,CAAC,eAAe;SAC9B,CAAC;KA+KL;AA7KG,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE;AAClC,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAC7D,SAAA;QAED,OAAO,IAAI,CAAC,0BAA0B,CAAC;KAC1C;AAED,IAAA,IAAW,oBAAoB,GAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE;AACrC,YAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,oBAAoB,EAAE,CAAC;AACnE,SAAA;QAED,OAAO,IAAI,CAAC,6BAA6B,CAAC;KAC7C;AAED,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE;AAClC,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAC7D,SAAA;QAED,OAAO,IAAI,CAAC,0BAA0B,CAAC;KAC1C;AAED,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;AACjC,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAC3D,SAAA;QAED,OAAO,IAAI,CAAC,yBAAyB,CAAC;KACzC;AAED,IAAA,IAAW,uBAAuB,GAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,gCAAgC,EAAE;AACxC,YAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI,uBAAuB,EAAE,CAAC;AACzE,SAAA;QAED,OAAO,IAAI,CAAC,gCAAgC,CAAC;KAChD;AAED,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE;AAClC,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAC7D,SAAA;QAED,OAAO,IAAI,CAAC,0BAA0B,CAAC;KAC1C;AAED,IAAA,IAAW,mBAAmB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;AACpC,YAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC9K,SAAA;QAED,OAAO,IAAI,CAAC,4BAA4B,CAAC;KAC5C;AAED,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;AACjC,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAC3D,SAAA;QAED,OAAO,IAAI,CAAC,yBAAyB,CAAC;KACzC;AAED,IAAA,IAAW,kBAAkB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE;AACnC,YAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAC/D,SAAA;QAED,OAAO,IAAI,CAAC,2BAA2B,CAAC;KAC3C;AAED,IAAA,IAAW,eAAe,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAChC,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,eAAe,EAAE,CAAC;AACzD,SAAA;QAED,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,mBAAmB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC5B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,aAAa,EAAE,CAAC;AACnD,SAAA;QAED,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9D,SAAA;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED,IAAA,IAAW,MAAM,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC/E,SAAA;QAED,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,6BAA6B,GAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE;YACtC,IAAI,CAAC,8BAA8B,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3F,SAAA;QAED,OAAO,IAAI,CAAC,8BAA8B,CAAC;KAC9C;AAED,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC1B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,wBAAwB,EAAE,CAAC;AAC5D,SAAA;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAEM,IAAA,UAAU,CAAC,QAA2B,EAAA;AACzC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,IAAI,CAAC,eAAe,GAAI,QAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC;QAE7E,MAAM,eAAe,GAAI,MAAc,CAAC,UAAU,IAAK,MAAc,CAAC,SAAS,CAAC;AAEhF,QAAA,IAAI,CAAC,gBAAgB,GAAI,QAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,eAAe,IAAI,eAAe,CAAC,eAAe,CAAC;KACrH;AAEM,IAAA,YAAY,CAAC,MAAoB,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;KAC5B;IAEY,cAAc,CAAC,EAAU,EAAE,IAAY,EAAA;;AAEhD,YAAA,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAExD,YAAA,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;AAEhC,YAAA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;SAC7B,CAAA,CAAA;AAAA,KAAA;IAEM,iBAAiB,CAAC,MAAmD,EAAE,EAAU,EAAA;AACpF,QAAA,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;KACvC;IAEY,gBAAgB,CAAC,GAAwB,EAAE,oBAAoC,EAAA;;AAExF,YAAA,MAAM,WAAW,GAAG,CAAC,IAAI,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC;YAEvF,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;YAE5G,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AAEzC,YAAA,OAAO,WAAW,CAAC;SACtB,CAAA,CAAA;AAAA,KAAA;IAEM,aAAa,CAAC,YAA0B,EAAE,GAA4C,EAAA;AACzF,QAAA,OAAO,CAAC,IAAI,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;KACtE;AACJ;;;;AC3NM,MAAM,qBAAqB,GAAG,CAAC,mBAAiD,KAAqC;IAExH,OAAO,CAAO,UAAoC,KAA0DiD,WAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACxG,QAAA,IAAI,MAAM,CAAC,QAAQ,IAAK,MAAc,CAAC,SAAS,EAAE;AAC9C,YAAA,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;AACjC,SAAA;AAED,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AAEtB,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AAEvC,QAAA,cAAc,EAAE,CAAC;QAEjB,MAAM,IAAI,GAAG,MAAM,WAAW,CAAuB,MAAM,mBAAmB,CAAC,MAAM,EAAE,WAAER,SAAO,EAAE,CAAkC,EAAE,KAAK,EAAE,gEAAgE,CAAC,CAAC;QAE/M,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;AAE5D,QAAA,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAErB,QAAA,GAAG,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAkB,EAAE,CAAC,CAAC;QAExF,MAAM,GAAG,CAAC,6BAA6B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEtD,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAExC,QAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAEzB,QAAA,MAAM,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;AAE1E,QAAA,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAEnG,QAAA,MAAM,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QAEpF,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAEzE,QAAA,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAE3C,QAAA,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAEjC,QAAA,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;AAEpE,QAAA,OAAO,IAAI,CAAC;AAChB,KAAC,CAAA,CAAC;AACN,CAAC;;ACzDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;AACnC,IAAI,aAAa,GAAG,MAAM,CAAC,cAAc;AACzC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;AACpF,QAAQ,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1G,IAAI,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,CAAC,CAAC;AACF;AACA,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;AACzB,IAAI,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI;AAC7C,QAAQ,MAAM,IAAI,SAAS,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC;AAClG,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,IAAI,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;AAC3C,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACzF,CAAC;AACD;AACA,IAAI,QAAQ,GAAG,WAAW;AAC1B,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK,CAAC;AACN,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC,CAAC;AACF;AACA,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AACtD,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACA,SAAS,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;AACpC,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrH,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7J,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACtE,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE;AACtB,QAAQ,IAAI,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;AACtE,QAAQ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI;AACtD,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACzK,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACpD,YAAY,QAAQ,EAAE,CAAC,CAAC,CAAC;AACzB,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM;AAC9C,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACxE,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AACjE,gBAAgB,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;AACjE,gBAAgB;AAChB,oBAAoB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE;AAChI,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAC1G,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;AACzF,oBAAoB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;AACvF,oBAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAC1C,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;AAC3C,aAAa;AACb,YAAY,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACvC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAClE,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzF,KAAK;AACL,CAAC;AACD;AACA,SAAS,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AACvC,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACzF,QAAQ,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;AAChC,YAAY,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAS;AACT,KAAK;AACL,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,CAAC;AACD;AACA,IAAI,WAAW,GAAG;AAClB,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,SAAS,EAAE,CAAC;AAChB,IAAI,MAAM,EAAE,CAAC;AACb,CAAC,CAAC;AACF;AACA,SAAS,oBAAoB,CAAC,MAAM,EAAE;AACtC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,SAAS,EAAE;AAC/C,QAAQ,OAAO,WAAW,CAAC;AAC3B,KAAK;AACL,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,EAAE;AACjD,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,EAAE;AACjD,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,EAAE;AACjD,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC;AACD,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE;AACpC,QAAQ,OAAO,WAAW,CAAC;AAC3B,KAAK;AACL,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACxC,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACxC,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACxC,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,CAAC;AACD,SAAS,eAAe,CAAC,MAAM,EAAE;AACjC,IAAI,IAAI,iBAAiB,GAAG,EAAE,CAAC;AAC/B,IAAI,IAAI,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC5C,IAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC3B,QAAQ,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,GAAG,EAAE;AAC3E,YAAY,IAAI,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,YAAY,IAAI,SAAS,KAAK,QAAQ,EAAE;AACxC,gBAAgB,IAAI,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACzE,gBAAgB,IAAI,CAAC,GAAG,CAAC,GAAG;AAC5B,oBAAoB,IAAI,EAAE,QAAQ;AAClC,oBAAoB,WAAW,EAAE,EAAE;AACnC,oBAAoB,OAAO,EAAE,EAAE;AAC/B,oBAAoB,SAAS,EAAE,SAAS;AACxC,iBAAiB,CAAC;AAClB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,GAAG,CAAC,GAAG;AAC5B,oBAAoB,IAAI,EAAE,SAAS;AACnC,oBAAoB,WAAW,EAAE,EAAE;AACnC,oBAAoB,OAAO,EAAE,EAAE;AAC/B,iBAAiB,CAAC;AAClB,aAAa;AACb,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS,EAAE,EAAE,CAAC,CAAC;AACf,QAAQ,iBAAiB,CAAC,SAAS,GAAG,MAAM,CAAC;AAC7C,KAAK;AACL,IAAI,iBAAiB,CAAC,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5F,IAAI,iBAAiB,CAAC,IAAI,GAAG,IAAI,CAAC;AAClC,IAAI,iBAAiB,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACvD,IAAI,iBAAiB,CAAC,OAAO,GAAG,EAAE,CAAC;AACnC,IAAI,OAAO,iBAAiB,CAAC;AAC7B,CAAC;AACD,SAAS,qBAAqB,CAAC,MAAM,EAAE;AACvC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,GAAG,EAAE;AAC3D,QAAQ,IAAI,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC/B,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG;AACxB,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,WAAW,EAAE,EAAE;AAC/B,gBAAgB,OAAO,EAAE,EAAE;AAC3B,gBAAgB,SAAS,EAAE,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7D,aAAa,CAAC;AACd,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG;AACxB,gBAAgB,IAAI,EAAE,IAAI;AAC1B,gBAAgB,WAAW,EAAE,EAAE;AAC/B,gBAAgB,OAAO,EAAE,EAAE;AAC3B,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AACD,SAAS,mBAAmB,CAAC,IAAI,EAAE;AACnC,IAAI,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC3E,QAAQ,OAAO,GAAG,GAAG,IAAI,CAAC;AAC1B,KAAK;AACL,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,CAAC;AACD,SAAS,oBAAoB,CAAC,MAAM,EAAE;AACtC,IAAI,IAAI,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC5C,IAAI,IAAI,IAAI,KAAK,WAAW,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1B,KAAK;AACL,SAAS;AACT,QAAQ,OAAO,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpD,KAAK;AACL,CAAC;AACD,SAAS,sBAAsB,CAAC,MAAM,EAAE;AACxC,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACpC,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,GAAG,EAAE;AAC3D,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAChC,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE;AACrE,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACtD,SAAS;AACT,aAAa,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE;AAC7C,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAClD,SAAS;AACT,aAAa,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE;AAChD,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;AACzC,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AACD,SAAS,OAAO,CAAC,GAAG,EAAE;AACtB,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,SAAS,EAAE;AACjD,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AACtF,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AACD,SAAS,eAAe,CAAC,GAAG,EAAE;AAC9B,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS;AACT,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,CAAC,CAAC;AACtB,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AACjC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACV,CAAC;AACD,SAAS,oBAAoB,CAAC,GAAG,EAAE;AACnC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AACrC,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,QAAQ,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,YAAY,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC;AAC9D,SAAS;AACT,aAAa;AACb,YAAY,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;AACpE,SAAS;AACT,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;AAC1B,QAAQ,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AACzC,KAAK;AACL,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,CAAC;AACD,SAAS,4BAA4B,CAAC,MAAM,EAAE;AAC9C,IAAI,IAAI,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1D,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC1C,IAAI,IAAI,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AAC/C,IAAI,IAAI,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACrD,IAAI,OAAO;AACX,QAAQ,WAAW,EAAE,aAAa;AAClC,QAAQ,KAAK,EAAE,YAAY,CAAC,KAAK;AACjC,KAAK,CAAC;AACN,CAAC;AACD;AACA,SAAS,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE;AAClC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AACvD,QAAQ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,IAAI,WAAW,CAAC;AACpB,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,IAAI,GAAG,UAAU,IAAI,EAAE;AAC/B,QAAQ,IAAI,mBAAmB,CAAC;AAChC,QAAQ,WAAW,GAAG,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE;AACrD,YAAY,mBAAmB,GAAG,OAAO,CAAC;AAC1C,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/C,QAAQ,OAAO,CAAC,QAAQ,CAAC,UAAU,SAAS,EAAE;AAC9C,YAAY,IAAI,CAAC,SAAS,IAAI,mBAAmB,EAAE;AACnD,gBAAgB,mBAAmB,EAAE,CAAC;AACtC,gBAAgB,mBAAmB,GAAG,SAAS,CAAC;AAChD,aAAa;AACb,YAAY,IAAI,eAAe,GAAG;AAClC,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,SAAS,EAAE;AAC3B,oBAAoB,WAAW,EAAE;AACjC,wBAAwB,IAAI,EAAE,QAAQ;AACtC,wBAAwB,WAAW,EAAE,EAAE;AACvC,qBAAqB;AACrB,oBAAoB,KAAK,EAAE;AAC3B,wBAAwB,IAAI,EAAE,QAAQ;AACtC,wBAAwB,WAAW,EAAE,EAAE;AACvC,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,WAAW,EAAE,cAAc;AAC3C,gBAAgB,OAAO,EAAE,EAAE;AAC3B,aAAa,CAAC;AACd,YAAY,IAAI,oBAAoB,GAAG;AACvC,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,OAAO,EAAE,CAAC,eAAe,CAAC;AAC1C,aAAa,CAAC;AACd,YAAY,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC/C,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,UAAU,CAAC,IAAI,CAAC,CAAC;AACjC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,CAAC,IAAI,CAAC;AACrB,YAAY,MAAM,EAAE,MAAM,CAAC,MAAM;AACjC,YAAY,OAAO,EAAE,MAAM,CAAC,OAAO;AACnC,YAAY,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACrC,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,IAAI,UAAU,GAAG,UAAU,IAAI,EAAE;AACrC,QAAQ,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,KAAK,CAAC;AACN,IAAI,IAAI,YAAY,GAAG,UAAU,MAAM,EAAE;AACzC,QAAQ,YAAY,CAAC,MAAM,CAAC,CAAC;AAC7B,QAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC5C,YAAY,YAAY,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE;AAChD,YAAY,YAAY,CAAC,EAAE,CAAC,CAAC;AAC7B,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,IAAI,YAAY,GAAG,UAAU,MAAM,EAAE,EAAE,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AAC/F,QAAQ,IAAI,MAAM,EAAE,gBAAgB,CAAC;AACrC,QAAQ,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AAC/C,YAAY,QAAQ,EAAE,CAAC,KAAK;AAC5B,gBAAgB,KAAK,CAAC;AACtB,oBAAoB,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;AACrD,wBAAwB,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,qBAAqB;AACrB,oBAAoB,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAC5C,gBAAgB,KAAK,CAAC;AACtB,oBAAoB,EAAE,CAAC,IAAI,EAAE,CAAC;AAC9B,oBAAoB,MAAM,GAAG;AAC7B,wBAAwB,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;AACvG,wBAAwB,IAAI,EAAE,QAAQ;AACtC,wBAAwB,SAAS,EAAE;AACnC,4BAA4B,WAAW,EAAE;AACzC,gCAAgC,IAAI,EAAE,QAAQ;AAC9C,gCAAgC,WAAW,EAAE,EAAE;AAC/C,6BAA6B;AAC7B,4BAA4B,KAAK,EAAE;AACnC,gCAAgC,IAAI,EAAE,QAAQ;AAC9C,gCAAgC,WAAW,EAAE,EAAE;AAC/C,6BAA6B;AAC7B,yBAAyB;AACzB,wBAAwB,WAAW,EAAE,cAAc;AACnD,wBAAwB,OAAO,EAAE,EAAE;AACnC,qBAAqB,CAAC;AACtB,oBAAoB,gBAAgB,GAAG;AACvC,wBAAwB,IAAI,EAAE,QAAQ;AACtC,wBAAwB,OAAO,EAAE,CAAC,MAAM,CAAC;AACzC,qBAAqB,CAAC;AACtB,oBAAoB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACnD,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC,EAAE,CAAC;AACV,IAAI,IAAI,YAAY,GAAG,UAAU,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AACtG,QAAQ,IAAI,oBAAoB,EAAE,QAAQ,EAAE,UAAU,CAAC;AACvD,QAAQ,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AAC/C,YAAY,QAAQ,EAAE,CAAC,KAAK;AAC5B,gBAAgB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAChD,gBAAgB,KAAK,CAAC;AACtB,oBAAoB,EAAE,CAAC,IAAI,EAAE,CAAC;AAC9B,oBAAoB,oBAAoB,GAAG;AAC3C,wBAAwB,IAAI,EAAE,SAAS;AACvC,wBAAwB,MAAM,EAAE,CAAC;AACjC,gCAAgC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;AAC/G,gCAAgC,KAAK,EAAE;AACvC,oCAAoC,WAAW,EAAE,KAAK,CAAC,WAAW;AAClE,oCAAoC,KAAK,EAAE,KAAK,CAAC,KAAK;AACtD,iCAAiC;AACjC,gCAAgC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;AACrD,6BAA6B,CAAC;AAC9B,qBAAqB,CAAC;AACtB,oBAAoB,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACvD,oBAAoB,QAAQ,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACpE,oBAAoB,UAAU,GAAG;AACjC,wBAAwB,IAAI,EAAE,SAAS;AACvC,wBAAwB,OAAO,EAAE,UAAU,CAAC,MAAM;AAClD,wBAAwB,MAAM,EAAE,CAAC;AACjC,gCAAgC,IAAI,EAAE,QAAQ;AAC9C,gCAAgC,KAAK,EAAE;AACvC,oCAAoC,WAAW,EAAE,QAAQ,CAAC,WAAW;AACrE,oCAAoC,KAAK,EAAE,QAAQ,CAAC,KAAK;AACzD,iCAAiC;AACjC,gCAAgC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;AACrD,6BAA6B,CAAC;AAC9B,qBAAqB,CAAC;AACtB,oBAAoB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7C,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC,EAAE,CAAC;AACV,IAAI,IAAI,YAAY,GAAG,UAAU,MAAM,EAAE,EAAE,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AAC/F,QAAQ,IAAI,WAAW,EAAE,CAAC,EAAE,gBAAgB,CAAC;AAC7C,QAAQ,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AAC/C,YAAY,QAAQ,EAAE,CAAC,KAAK;AAC5B,gBAAgB,KAAK,CAAC;AACtB,oBAAoB,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AACtD,oBAAoB,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAC5C,gBAAgB,KAAK,CAAC;AACtB,oBAAoB,EAAE,CAAC,IAAI,EAAE,CAAC;AAC9B,oBAAoB,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;AACrD,oBAAoB,gBAAgB,GAAG;AACvC,wBAAwB,IAAI,EAAE,QAAQ;AACtC,wBAAwB,OAAO,EAAE,CAAC,CAAC,CAAC;AACpC,qBAAqB,CAAC;AACtB,oBAAoB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACnD,oBAAoB,IAAI,OAAO,WAAW,CAAC,KAAK,KAAK,WAAW,EAAE;AAClE,wBAAwB,gBAAgB,CAAC,WAAW,CAAC,CAAC;AACtD,qBAAqB;AACrB,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC,EAAE,CAAC;AACV,IAAI,IAAI,YAAY,GAAG,UAAU,MAAM,EAAE,EAAE,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AAC/F,QAAQ,IAAI,WAAW,CAAC;AACxB,QAAQ,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AAC/C,YAAY,QAAQ,EAAE,CAAC,KAAK;AAC5B,gBAAgB,KAAK,CAAC;AACtB,oBAAoB,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AACtD,oBAAoB,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAC5C,gBAAgB,KAAK,CAAC;AACtB,oBAAoB,EAAE,CAAC,IAAI,EAAE,CAAC;AAC9B,oBAAoB,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAClD,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC,EAAE,CAAC;AACV,IAAI,IAAI,gBAAgB,GAAG,UAAU,MAAM,EAAE;AAC7C,QAAQ,IAAI,SAAS,EAAE,EAAE;AACzB,YAAY,IAAI,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACrD,YAAY,IAAI,iBAAiB,GAAG;AACpC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,MAAM,EAAE,CAAC;AACzB,wBAAwB,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;AAC5F,wBAAwB,KAAK,EAAE,KAAK;AACpC,wBAAwB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;AAC7C,qBAAqB,CAAC;AACtB,aAAa,CAAC;AACd,YAAY,OAAO,OAAO,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,IAAI,WAAW,GAAG,UAAU,MAAM,EAAE;AACxC,QAAQ,IAAI,WAAW,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC/C,QAAQ,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE;AACvE,YAAY,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3D,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC;AAC3B,KAAK,CAAC;AACN,IAAI,IAAI,SAAS,GAAG,YAAY;AAChC,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI;AACZ,YAAY,IAAI,IAAI,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,IAAI,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;AACrH,YAAY,OAAO,IAAI,EAAE,CAAC;AAC1B,SAAS;AACT,QAAQ,OAAO,EAAE,EAAE;AACnB,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,KAAK,CAAC;AACN,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,YAAY,EAAE,YAAY;AAClC,QAAQ,YAAY,EAAE,YAAY;AAClC,QAAQ,YAAY,EAAE,YAAY;AAClC,QAAQ,YAAY,EAAE,YAAY;AAClC,KAAK,CAAC;AACN,CAAC;AACD;AACA,IAAI,OAAO,GAAG;AACd,IAAI,QAAQ,EAAE,UAAU,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE;AACvD,QAAQ,IAAI,UAAU,KAAK,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AACnE,YAAY,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC3D,YAAY,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC9C,SAAS;AACT,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACjE,YAAY,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACjD,SAAS;AACT,KAAK;AACL,CAAC,CAAC;AACF;AACA,IAAI,UAAU,IAAI,YAAY;AAC9B,IAAI,SAAS,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;AACpE,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACvB,QAAQ,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;AACpC,QAAQ,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;AAClD,QAAQ,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE;AACxD,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;AACnF,SAAS;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE,IAAI;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE;AACtD,QAAQ,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAClF,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE,IAAI;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,QAAQ,EAAE;AACtD,QAAQ,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;AAC9B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK,CAAC;AACN,IAAI,OAAO,UAAU,CAAC;AACtB,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,YAAY,IAAI,UAAU,MAAM,EAAE;AACtC,IAAI,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACpC,IAAI,SAAS,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;AAChE,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;AACnG,KAAK;AACL,IAAI,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,GAAG,EAAE;AACxD,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;AACtC,KAAK,CAAC;AACN,IAAI,YAAY,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AACnD,QAAQ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5B,KAAK,CAAC;AACN,IAAI,YAAY,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AACnD,QAAQ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,KAAK,CAAC;AACN,IAAI,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,GAAG,EAAE;AACxD,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC,KAAK,CAAC;AACN,IAAI,OAAO,YAAY,CAAC;AACxB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACf;AACA,IAAI,YAAY,IAAI,UAAU,MAAM,EAAE;AACtC,IAAI,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACpC,IAAI,SAAS,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;AAChE,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;AACnG,KAAK;AACL,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,QAAQ,EAAE;AACxD,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnC,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK,CAAC;AACN,IAAI,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,MAAM,EAAE;AAC3D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC5D,YAAY,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;AAClD,gBAAgB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3C,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,YAAY,CAAC;AACxB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACf;AACA,IAAI,YAAY,IAAI,UAAU,MAAM,EAAE;AACtC,IAAI,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACpC,IAAI,SAAS,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;AAChE,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;AACnG,KAAK;AACL,IAAI,OAAO,YAAY,CAAC;AACxB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACf;AACA,IAAI,eAAe,IAAI,UAAU,MAAM,EAAE;AACzC,IAAI,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AACvC,IAAI,SAAS,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;AACnE,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;AACtG,KAAK;AACL,IAAI,eAAe,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY;AAChD,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAChC,KAAK,CAAC;AACN,IAAI,OAAO,eAAe,CAAC;AAC3B,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACf;AACA,SAAS,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;AAC3D,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,IAAI,UAAU,GAAG,QAAQ,CAAC;AAC9B,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,YAAY,GAAG,WAAW,IAAI,EAAE,CAAC;AACzC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,OAAO,GAAG,MAAM,CAAC;AACzB,IAAI,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AACnC,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;AACpB,IAAI,IAAI,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AAC/C,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,IAAI,IAAI,WAAW,GAAG,EAAE,CAAC;AACzB,IAAI,IAAI,QAAQ,GAAG,EAAE,CAAC;AACtB,IAAI,SAAS,SAAS,CAAC,UAAU,EAAE,iBAAiB,EAAE;AACtD,QAAQ,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACpD,YAAY,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;AACvF,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAY,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC;AACnF,QAAQ,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClC,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,gBAAgB,EAAE;AAC/C,QAAQ,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;AACjE,QAAQ,UAAU,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,SAAS,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE;AAC7C,QAAQ,OAAO,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,SAAS,EAAE,EAAE,OAAO,IAAI,YAAY,CAAC,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9J,KAAK;AACL,IAAI,SAAS,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE;AAC7C,QAAQ,OAAO,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,SAAS,EAAE,EAAE,OAAO,IAAI,YAAY,CAAC,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9J,KAAK;AACL,IAAI,SAAS,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE;AAC7C,QAAQ,OAAO,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,SAAS,EAAE,EAAE,OAAO,IAAI,YAAY,CAAC,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9J,KAAK;AACL,IAAI,SAAS,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE;AAChD,QAAQ,OAAO,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,SAAS,EAAE,EAAE,OAAO,IAAI,eAAe,CAAC,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACpK,KAAK;AACL,IAAI,SAAS,kBAAkB,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AACjF,QAAQ,IAAI,SAAS,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACrC,QAAQ,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;AAC9C,YAAY,SAAS,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AAC/C,SAAS;AACT,aAAa;AACb,YAAY,SAAS,GAAG,YAAY,CAAC;AACrC,SAAS;AACT,QAAQ,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,cAAc,EAAE,EAAE,OAAO,cAAc,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrH,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAY,IAAI,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvC,YAAY,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;AAChD,gBAAgB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,0CAA0C,CAAC,CAAC,CAAC;AACtH,aAAa;AACb,YAAY,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAC9C,gBAAgB,QAAQ;AACxB,qBAAqB,MAAM,CAAC,KAAK,CAAC;AAClC,qBAAqB,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;AAC5C,aAAa;AACb,YAAY,OAAO,QAAQ,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAC7C,QAAQ,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,SAAS,UAAU,CAAC,cAAc,EAAE;AACxC,QAAQ,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACvD,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS;AACT,QAAQ,IAAI,IAAI,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACvC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,SAAS,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AAC7C,QAAQ,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE;AACvE,KAAK;AACL,IAAI,SAAS,iBAAiB,GAAG;AACjC,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,YAAY,QAAQ,CAAC,IAAI,CAAC;AAC1B,gBAAgB,IAAI,EAAE,KAAK;AAC3B,gBAAgB,IAAI,EAAE,KAAK;AAC3B,gBAAgB,KAAK,EAAE,MAAM,CAAC,KAAK;AACnC,gBAAgB,WAAW,EAAE,MAAM,CAAC,WAAW;AAC/C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,WAAW,CAAC,OAAO,CAAC,UAAU,iBAAiB,EAAE;AACzD,YAAY,IAAI,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;AAC/D,YAAY,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,gBAAgB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACtD,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,EAAE,GAAG;AACb,QAAQ,IAAI,IAAI,GAAG;AACnB,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,WAAW,GAAG;AAC1B,YAAY,OAAO,YAAY,CAAC;AAChC,SAAS;AACT,QAAQ,IAAI,IAAI,GAAG;AACnB,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG;AACrB,YAAY,OAAO,OAAO,CAAC;AAC3B,SAAS;AACT,QAAQ,IAAI,EAAE,KAAK;AACnB,QAAQ,EAAE,EAAE,EAAE;AACd,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,IAAI,UAAU,GAAG;AACzB,YAAY,OAAO,WAAW,CAAC;AAC/B,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG;AACtB,YAAY,OAAO,QAAQ,CAAC;AAC5B,SAAS;AACT,QAAQ,SAAS,EAAE,SAAS;AAC5B,QAAQ,QAAQ,EAAE,YAAY;AAC9B,YAAY,OAAO,MAAM,CAAC;AAC1B,SAAS;AACT,QAAQ,QAAQ,EAAE,QAAQ;AAC1B,QAAQ,YAAY,EAAE,YAAY;AAClC,QAAQ,eAAe,EAAE,eAAe;AACxC,QAAQ,YAAY,EAAE,YAAY;AAClC,QAAQ,YAAY,EAAE,YAAY;AAClC,QAAQ,iBAAiB,EAAE,iBAAiB;AAC5C,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAChC,IAAI,OAAO,EAAE,CAAC;AACd,CAAC;AACD;AACA,IAAI,UAAU,IAAI,YAAY;AAC9B,IAAI,SAAS,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE;AAC3C,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/C,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC;AACnG,KAAK;AACL,IAAI,UAAU,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,UAAU,EAAE,cAAc,EAAE;AAClF,QAAQ,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;AAC9C,YAAY,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,IAAI,cAAc,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AAC/D,YAAY,IAAI,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AACpE,YAAY,IAAI,oBAAoB,GAAG,UAAU,CAAC,EAAE;AACpD,gBAAgB,IAAI,EAAE,CAAC;AACvB,gBAAgB,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;AAC/B,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AACtC,gBAAgB,IAAI,SAAS,GAAG,MAAM,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACtH,gBAAgB,aAAa,CAAC,YAAY,CAAC,kBAAkB,EAAE;AAC/D,oBAAoB,IAAI,EAAE,OAAO;AACjC,oBAAoB,SAAS,EAAE,IAAI,IAAI,EAAE;AACzC,oBAAoB,MAAM,EAAE;AAC5B,wBAAwB,SAAS,EAAE,SAAS;AAC5C,wBAAwB,EAAE,EAAE,MAAM,CAAC,EAAE;AACrC,wBAAwB,IAAI,EAAE,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,GAAG;AACtE,wBAAwB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;AAC/C,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,aAAa,CAAC;AACd,YAAY,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE;AAC/C,gBAAgB,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrC,gBAAgB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;AAC1C,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,QAAQ,CAAC,gBAAgB,EAAE;AAC3C,gBAAgB,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;AACzE,aAAa;AACb,iBAAiB;AACjB,gBAAgB,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AACtE,aAAa;AACb,SAAS;AACT,QAAQ,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;AACtE,QAAQ,IAAI,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAChE,QAAQ,IAAI,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACnE,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC3C,YAAY,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE;AACxD,gBAAgB,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACpD,gBAAgB,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3C,aAAa;AACb,YAAY,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE;AACxD,gBAAgB,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC9D,aAAa;AACb,SAAS;AACT,KAAK,CAAC;AACN,IAAI,OAAO,UAAU,CAAC;AACtB,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,YAAY,IAAI,YAAY;AAChC,IAAI,SAAS,YAAY,GAAG;AAC5B,KAAK;AACL,IAAI,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,IAAI,EAAE;AAClD,KAAK,CAAC;AACN,IAAI,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,MAAM,EAAE;AAC5D,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,MAAM,EAAE,KAAK,EAAE;AACnE,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,MAAM,EAAE;AAC5D,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,MAAM,EAAE;AAC5D,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,OAAO,YAAY,CAAC;AACxB,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,WAAW,IAAI,YAAY;AAC/B,IAAI,SAAS,WAAW,CAAC,GAAG,EAAE,qBAAqB,EAAE,eAAe,EAAE;AACtE,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACvB,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AAC3B,QAAQ,IAAI,CAAC,qBAAqB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC/C,QAAQ,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC;AACzC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,KAAK,IAAI,IAAI,qBAAqB,KAAK,KAAK,CAAC,GAAG,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AAC7J,QAAQ,IAAI,CAAC,eAAe,GAAG,eAAe,KAAK,IAAI,IAAI,eAAe,KAAK,KAAK,CAAC,GAAG,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AAC/H,QAAQ,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAClC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,mDAAmD,CAAC,CAAC;AAC7G,KAAK;AACL,IAAI,WAAW,CAAC,SAAS,CAAC,kBAAkB,GAAG,YAAY;AAC3D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,UAAU,CAAC,YAAY;AAC/B,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC;AAC5B,YAAY,WAAW,CAAC,YAAY;AACpC,gBAAgB,KAAK,CAAC,OAAO,EAAE,CAAC;AAChC,aAAa,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;AACtC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACvC,KAAK,CAAC;AACN,IAAI,WAAW,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAChD,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,aAAa,EAAE,CAAC;AACjC,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC;AAClC,SAAS;AACT,QAAQ,OAAO,EAAE,EAAE;AACnB,SAAS;AACT,KAAK,CAAC;AACN,IAAI,WAAW,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;AACtD,QAAQ,IAAI,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;AAC/C,QAAQ,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;AAC1D,YAAY,eAAe,EAAE,MAAM,CAAC,eAAe;AACnD,YAAY,cAAc,EAAE,MAAM,CAAC,cAAc;AACjD,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK,CAAC;AACN,IAAI,WAAW,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;AACvD,QAAQ,IAAI,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;AACzD,QAAQ,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AACjD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC;AAC3C,QAAQ,IAAI,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAClF,QAAQ,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;AAC7E,KAAK,CAAC;AACN,IAAI,OAAO,WAAW,CAAC;AACvB,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,OAAO,IAAI,UAAU,OAAO,EAAE;AAClC,IAAI,IAAI,QAAQ,CAAC;AACjB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE;AACvE,QAAQ,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AACtC,KAAK;AACL,SAAS;AACT,QAAQ,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACjD,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;AAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;AACvC,QAAQ,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,IAAI,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AACxC,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAClD,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,CAAC,CAAC;AACH,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE;AAC/B,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC;AACf,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACvC,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,IAAI,UAAU,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC;AAClN,IAAI,IAAI,UAAU,EAAE;AACpB,QAAQ,MAAM,GAAG,UAAU,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE;AACxE,QAAQ,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;AACnF,KAAK;AACL,CAAC;AACD,SAAS,aAAa,CAAC,MAAM,EAAE;AAC/B,IAAI,IAAI,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACxD,IAAI,IAAI,GAAG,GAAG;AACd,QAAQ,IAAI,EAAE,UAAU;AACxB,KAAK,CAAC;AACN,IAAI,IAAI,aAAa,CAAC;AACtB,IAAI,IAAI,iBAAiB,GAAG,UAAU,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;AAC7D,QAAQ,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,EAAE,EAAE;AACxD,YAAY,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACjD,SAAS;AACT,aAAa,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,EAAE,EAAE;AACjE,YAAY,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACnD,SAAS;AACT,aAAa,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,EAAE,EAAE;AACnE,YAAY,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACpD,SAAS;AACT,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B,YAAY,aAAa,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAChH,SAAS;AACT,aAAa;AACb,YAAY,aAAa,CAAC,MAAM,CAAC;AACjC,gBAAgB,IAAI,EAAE,IAAI;AAC1B,gBAAgB,MAAM,EAAE,MAAM;AAC9B,gBAAgB,OAAO,EAAE,OAAO;AAChC,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,aAAa,GAAG,iBAAiB,CAAC;AAC7C,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD;AACA,IAAI,cAAc,GAAG,OAAO,UAAU,KAAK,WAAW,GAAG,UAAU,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,OAAO,IAAI,KAAK,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;AAChM;AACA,SAAS,uBAAuB,EAAE,CAAC,EAAE;AACrC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACnG,CAAC;AACD;AACA,SAAS,cAAc,CAAC,OAAO,EAAE;AACjC,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa;AACxC,WAAW,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU;AACtD,WAAW,OAAO,CAAC,aAAa,KAAK,KAAK;AAC1C,WAAW,OAAO,CAAC,aAAa,KAAK,QAAQ;AAC7C,WAAW,OAAO,CAAC,aAAa,KAAK,OAAO,EAAE;AAC9C,QAAQ,MAAM,IAAI,KAAK,CAAC,iIAAiI,GAAG,OAAO,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC;AAC1M,KAAK;AACL,IAAI,IAAI,iBAAiB,GAAG,OAAO,IAAI,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;AAC5G,IAAI,IAAI,SAAS,GAAG,EAAE,CAAC;AACvB,IAAI,SAAS,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE;AACpD,QAAQ,IAAI,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAY,eAAe,GAAG,EAAE,CAAC;AACjC,YAAY,SAAS,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;AAC7C,SAAS;AACT,QAAQ,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,QAAQ,IAAI,kBAAkB,EAAE;AAChC,YAAY,UAAU,CAAC,YAAY;AACnC,gBAAgB,kBAAkB,CAAC,OAAO,CAAC,UAAU,cAAc,EAAE;AACrE,oBAAoB,IAAI,EAAE,CAAC;AAC3B,oBAAoB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC1G,wBAAwB,IAAI;AAC5B,4BAA4B,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AAC/D,gCAAgC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAC1E,6BAA6B;AAC7B,iCAAiC;AACjC,gCAAgC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AAC5E,6BAA6B;AAC7B,yBAAyB;AACzB,wBAAwB,OAAO,GAAG,EAAE;AACpC,4BAA4B,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACnD,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,aAAa,EAAE,CAAC,CAAC,CAAC;AAClB,SAAS;AACT,QAAQ,OAAO,YAAY;AAC3B,YAAY,IAAI,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,SAAS,EAAE;AAC5B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;AACxE,gBAAgB,IAAI,EAAE,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,EAAE;AACrE,oBAAoB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,CAAC;AAC3B,aAAa,EAAE,EAAE,CAAC,CAAC;AACnB,YAAY,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,gBAAgB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACtC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC3C,aAAa;AACb,SAAS,CAAC;AACV,KAAK;AACL,IAAI,SAAS,OAAO,CAAC,GAAG,EAAE;AAC1B,QAAQ,IAAI,YAAY,GAAG,EAAE,CAAC;AAC9B,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,IAAI,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9D,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG,EAAE,CAAC;AACzB,QAAQ,eAAe,CAAC,OAAO,CAAC,UAAU,QAAQ,EAAE;AACpD,YAAY,IAAI;AAChB,gBAAgB,IAAI,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACrE,gBAAgB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrC,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxC,gBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACvC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,SAAS,YAAY,CAAC,iBAAiB,EAAE,GAAG,EAAE;AAClD,QAAQ,IAAI,QAAQ,GAAG,iBAAiB,YAAY,KAAK,GAAG,iBAAiB,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAC7G,QAAQ,IAAI,iBAAiB,EAAE;AAC/B,YAAY,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACxC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,GAAG,GAAG,qDAAqD,GAAG,GAAG,GAAG,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC/G,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,QAAQ,OAAO,CAAC,aAAa;AACzC,gBAAgB,KAAK,KAAK;AAC1B,oBAAoB,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9C,gBAAgB,KAAK,QAAQ;AAC7B,oBAAoB,OAAO;AAC3B,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACzC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,SAAS,KAAK,GAAG;AACrB,QAAQ,SAAS,GAAG,EAAE,CAAC;AACvB,KAAK;AACL,IAAI,SAAS,QAAQ,CAAC,GAAG,EAAE;AAC3B,QAAQ,IAAI,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,GAAG,EAAE,GAAG;AAChB,QAAQ,OAAO,EAAE,OAAO;AACxB,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,QAAQ,EAAE,QAAQ;AAC1B,KAAK,CAAC;AACN,CAAC;AACD,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC;AACxC,IAAI,KAAK,GAAG,cAAc,CAAC;AAC3B;AACA,IAAI,eAAe,IAAI,YAAY;AACnC,IAAI,SAAS,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC/C,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,EAAE,CAAC;AAChC,QAAQ,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;AAClC,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,OAAO,EAAE,OAAO,EAAE;AACpD,YAAY,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1C,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,MAAM,EAAE;AAClC,YAAY,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAClC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,wBAAwB,EAAE;AAC/E,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE,IAAI;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,eAAe,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE;AAC1D,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC9C,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACnD,SAAS;AACT,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,IAAI,EAAE;AACrD,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC/C,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,QAAQ,EAAE;AAC9D,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACxD,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,QAAQ,EAAE;AACvE,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvB,QAAQ,OAAO,YAAY,GAAG,CAAC;AAC/B,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AAClD,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACjD,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACjD,QAAQ,OAAO,WAAW,CAAC;AAC3B,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AACtD,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,GAAG,EAAE;AAC9D,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAChD,KAAK,CAAC;AACN,IAAI,OAAO,eAAe,CAAC;AAC3B,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,qBAAqB,IAAI,YAAY;AACzC,IAAI,SAAS,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE;AACvD,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,EAAE,CAAC;AAChC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,EAAE;AAClD,YAAY,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC,SAAS,CAAC;AACV,KAAK;AACL,IAAI,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,SAAS,EAAE,wBAAwB,EAAE;AACrF,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE,IAAI;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,qBAAqB,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE;AAChE,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1C,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,qBAAqB,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,IAAI,EAAE;AAC3D,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC/C,KAAK,CAAC;AACN,IAAI,qBAAqB,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,QAAQ,EAAE;AACpE,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACxD,KAAK,CAAC;AACN,IAAI,qBAAqB,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,QAAQ,EAAE;AAC7E,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvB,QAAQ,OAAO,YAAY,GAAG,CAAC;AAC/B,KAAK,CAAC;AACN,IAAI,qBAAqB,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AACxD,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,qBAAqB,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACvD,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,qBAAqB,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACvD,QAAQ,OAAO,eAAe,CAAC;AAC/B,KAAK,CAAC;AACN,IAAI,qBAAqB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AAC5D,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,qBAAqB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,GAAG,EAAE;AACpE,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAChD,KAAK,CAAC;AACN,IAAI,OAAO,qBAAqB,CAAC;AACjC,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,KAAK,IAAI,YAAY;AACzB,IAAI,SAAS,KAAK,GAAG;AACrB,KAAK;AACL,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY;AAC/B,QAAQ,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,WAAW,EAAE;AAClD,YAAY,OAAO,KAAK,CAAC,OAAO,CAAC;AACjC,SAAS;AACT,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC3C,YAAY,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAClC,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,kBAAkB,CAAC;AAClG,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAClC,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC;AAC7B,KAAK,CAAC;AACN,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,cAAc,IAAI,YAAY;AAClC,IAAI,SAAS,cAAc,GAAG;AAC9B,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC9B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AAC9D,YAAY,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE;AACzC,gBAAgB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;AACtC,gBAAgB,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3B,aAAa,CAAC;AACd,YAAY,KAAK,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE;AAC1C,gBAAgB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;AACtC,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,aAAa,CAAC;AACd,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,cAAc,CAAC,KAAK,GAAG,UAAU,IAAI,EAAE;AAC3C,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACrF,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE;AAC7D,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;AAClD,SAAS;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE,IAAI;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,cAAc,CAAC;AAC1B,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,MAAM,GAAG,EAAE,CAAC;AAChB,SAAS,YAAY,GAAG;AACxB,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,KAAK,EAAE,SAAS,EAAE;AAC3B,IAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AACrC,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;AACnB,IAAI,SAAS,GAAG,GAAG;AACnB,QAAQ,OAAO,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;AAC1B,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC7B,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,SAAS,IAAI,GAAG;AACpB,QAAQ,OAAO,GAAG,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC7B,QAAQ,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AACrC,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,SAAS,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;AAC9B,QAAQ,IAAI,WAAW,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;AAC1E,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC;AACrB,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAY,IAAI,GAAG,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,SAAS;AACT,QAAQ,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,IAAI,SAAS,GAAG;AACxB,YAAY,OAAO,SAAS,CAAC;AAC7B,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG;AACtB,YAAY,OAAO,OAAO,CAAC;AAC3B,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG;AACrB,YAAY,OAAO,MAAM,CAAC;AAC1B,SAAS;AACT,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,KAAK,EAAE,KAAK;AACpB,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;AACjC,IAAI,OAAO,QAAQ,CAAC;AACpB,CAAC;AACD;AACA,IAAI,oBAAoB,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7E,IAAI,EAAE,IAAI,YAAY;AACtB,IAAI,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE;AAClC,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC;AACjC,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC/B,YAAY,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AAC7C,SAAS;AACT,KAAK;AACL,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,QAAQ,EAAE;AACjD,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK,CAAC;AACN,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,OAAO,EAAE;AAChD,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AACtD,YAAY,KAAK,CAAC,uBAAuB,CAAC,YAAY;AACtD,gBAAgB,IAAI,EAAE,CAAC;AACvB,gBAAgB,IAAI;AACpB,oBAAoB,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtF,oBAAoB,OAAO,EAAE,CAAC;AAC9B,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,EAAE;AAC1B,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,iBAAiB;AACjB,aAAa,EAAE,MAAM,CAAC,CAAC;AACvB,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACpC,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC7B,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AACtD,YAAY,KAAK,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC3D,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AACrC,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC9B,QAAQ,IAAI,IAAI,CAAC,EAAE,EAAE;AACrB,YAAY,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;AAC5B,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,EAAE,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,QAAQ,EAAE;AAC1D,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;AAClE,KAAK,CAAC;AACN,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACpC,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAChC,KAAK,CAAC;AACN,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AACzC,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;AACvE,QAAQ,IAAI,EAAE,GAAG,IAAI,cAAc,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,uBAAuB,CAAC,YAAY;AACjD,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC;AACzB,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,EAAE,CAAC,OAAO,CAAC;AAC1B,KAAK,CAAC;AACN,IAAI,EAAE,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,QAAQ,EAAE,MAAM,EAAE;AACvE,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,MAAM,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,MAAM,IAAI,YAAY,GAAG,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAY,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,iCAAiC,CAAC,CAAC,CAAC;AACtG,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,MAAM,CAAC,EAAE;AACvF,YAAY,QAAQ,EAAE,CAAC;AACvB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AACrE,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1B,KAAK,CAAC;AACN,IAAI,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,aAAa,EAAE,WAAW,EAAE;AACpE,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AAC3D,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC;AAC7B,YAAY,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AACnD,gBAAgB,QAAQ,EAAE,CAAC,KAAK;AAChC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACjE,wBAAwB,IAAI,aAAa,KAAK,SAAS,EAAE;AACzD,4BAA4B,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC5E,yBAAyB;AACzB,wBAAwB,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;AAChE,4BAA4B,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC1E,yBAAyB;AACzB,wBAAwB,IAAI,WAAW,KAAK,SAAS,EAAE;AACvD,4BAA4B,IAAI,WAAW,KAAK,CAAC,EAAE;AACnD,gCAAgC,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,gCAAgC,CAAC,CAAC,CAAC;AAC5I,gCAAgC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3C,6BAA6B;AAC7B,4BAA4B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;AACtI,yBAAyB;AACzB,wBAAwB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;AACrC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClD,wBAAwB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AAC1D,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,wBAAwB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACnE,wBAAwB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACpD,wBAAwB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,wBAAwB,UAAU,CAAC,YAAY;AAC/C,4BAA4B,IAAI,OAAO,GAAG,WAAW,KAAK,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,CAAC,CAAC;AAClG,4BAA4B,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AACrE,yBAAyB,EAAE,aAAa,CAAC,CAAC;AAC1C,wBAAwB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,oBAAoB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACvC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,EAAE,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;AAC9C,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,EAAE,GAAG,IAAI,cAAc,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/E,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACnE,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,UAAU,GAAG,EAAE;AACzC,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC;AAC5B,YAAY,IAAI;AAChB,gBAAgB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7C,aAAa;AACb,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,IAAI,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;AAC3C,gBAAgB,IAAI,QAAQ,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE;AACrD,oBAAoB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACrE,wBAAwB,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC/C,4BAA4B,OAAO;AACnC,yBAAyB;AACzB,wBAAwB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1C,qBAAqB;AACrB,oBAAoB,OAAO,KAAK,CAAC;AACjC,iBAAiB,CAAC;AAClB,gBAAgB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACvD,aAAa;AACb,YAAY,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/B,YAAY,KAAK,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACrD,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,UAAU,GAAG,EAAE;AACzC,YAAY,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,YAAY,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChC,YAAY,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC7C,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,YAAY;AACrC,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACjD,YAAY,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AACvI,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC;AACzB,YAAY,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC5C,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,UAAU,OAAO,EAAE;AAC/C,YAAY,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/D,SAAS,CAAC;AACV,QAAQ,OAAO,EAAE,CAAC,OAAO,CAAC;AAC1B,KAAK,CAAC;AACN,IAAI,EAAE,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,KAAK,EAAE;AACzD,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,SAAS,EAAE;AACrD,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,IAAI,SAAS,CAAC,MAAM,EAAE;AACtC,oBAAoB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5C,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,SAAS,CAAC,QAAQ,EAAE,CAAC;AACrC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC7B,KAAK,CAAC;AACN,IAAI,EAAE,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,MAAM,EAAE,MAAM,EAAE;AACjE,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACrE,KAAK,CAAC;AACN,IAAI,OAAO,EAAE,CAAC;AACd,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,cAAc,GAAG,EAAE,CAAC;AACxB,IAAI,SAAS,GAAG;AAChB,EAAE,IAAI,OAAO,EAAE,EAAE,OAAO,cAAc,CAAC,EAAE;AACzC,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC,EAAE;AACvC,CAAC,CAAC;AACF;AACA,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB,IAAI,GAAG,GAAG;AACV,EAAE,IAAI,OAAO,EAAE,EAAE,OAAO,UAAU,CAAC,EAAE;AACrC,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE;AACnC,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA,IAAI,IAAI,GAAG,CAAC,CAAC;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,GAAG;AACxB,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,IAAI,MAAM,CAAC;AAC1C,IAAI,OAAO,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC3B,CAAC;AACD;AACA,SAAS,SAAS,CAAC,MAAM,EAAE;AAC3B,IAAI,IAAI,GAAG,MAAM,CAAC;AAClB,CAAC;AACD;AACA,IAAI,gBAAgB,GAAG;AACvB,IAAI,SAAS,EAAE,YAAY;AAC3B,IAAI,IAAI,EAAE,SAAS;AACnB,CAAC,CAAC;AACF;AACA,IAAI,cAAc,GAAG,gBAAgB,CAAC;AACtC;AACA,IAAI,QAAQ,GAAG,kEAAkE,CAAC;AAClF,IAAI,UAAU,CAAC;AACf,IAAI,YAAY,CAAC;AACjB;AACA,IAAI,QAAQ,CAAC;AACb;AACA,SAAS,KAAK,GAAG;AACjB,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,CAAC;AACD;AACA,SAAS,aAAa,CAAC,UAAU,EAAE;AACnC,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,IAAI,UAAU,KAAK,QAAQ,EAAE;AACrC,YAAY,UAAU,GAAG,QAAQ,CAAC;AAClC,YAAY,KAAK,EAAE,CAAC;AACpB,SAAS;AACT,QAAQ,OAAO;AACf,KAAK;AACL;AACA,IAAI,IAAI,UAAU,KAAK,UAAU,EAAE;AACnC,QAAQ,OAAO;AACf,KAAK;AACL;AACA,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;AAC/C,QAAQ,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,QAAQ,CAAC,MAAM,GAAG,oCAAoC,GAAG,UAAU,CAAC,MAAM,GAAG,eAAe,GAAG,UAAU,CAAC,CAAC;AAC5K,KAAK;AACL;AACA,IAAI,IAAI,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;AACrE,OAAO,OAAO,GAAG,KAAK,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC5C,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE;AACvB,QAAQ,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,QAAQ,CAAC,MAAM,GAAG,wDAAwD,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjK,KAAK;AACL;AACA,IAAI,UAAU,GAAG,UAAU,CAAC;AAC5B,IAAI,KAAK,EAAE,CAAC;AACZ,CAAC;AACD;AACA,SAAS,UAAU,CAAC,UAAU,EAAE;AAChC,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;AAC9B,IAAI,OAAO,UAAU,CAAC;AACtB,CAAC;AACD;AACA,SAAS,OAAO,CAAC,IAAI,EAAE;AACvB,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAI,IAAI,YAAY,KAAK,IAAI,EAAE;AAC/B,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,YAAY,GAAG,IAAI,CAAC;AAC5B,KAAK;AACL,CAAC;AACD;AACA,SAAS,OAAO,GAAG;AACnB,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChC,KAAK;AACL;AACA,IAAI,IAAI,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAI,IAAI,WAAW,GAAG,EAAE,CAAC;AACzB,IAAI,IAAI,CAAC,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC;AACvC,IAAI,IAAI,cAAc,CAAC;AACvB;AACA,IAAI,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,QAAQ,CAAC,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC;AACvC,QAAQ,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAC5D,QAAQ,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,KAAK;AACL,IAAI,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC;AACD;AACA,SAAS,WAAW,GAAG;AACvB,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,IAAI,QAAQ,GAAG,OAAO,EAAE,CAAC;AACzB,IAAI,OAAO,QAAQ,CAAC;AACpB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC,KAAK,EAAE;AACvB,IAAI,IAAI,gBAAgB,GAAG,WAAW,EAAE,CAAC;AACzC,IAAI,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AACD;AACA,SAAS,GAAG,IAAI;AAChB,EAAE,OAAO,UAAU,IAAI,QAAQ,CAAC;AAChC,CAAC;AACD;AACA,IAAI,UAAU,GAAG;AACjB,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,QAAQ,EAAE,WAAW;AACzB,CAAC,CAAC;AACF;AACA,IAAI,MAAM,GAAG,OAAO,MAAM,KAAK,QAAQ,KAAK,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC9E;AACA,IAAI,UAAU,CAAC;AACf;AACA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AACxC,IAAI,UAAU,GAAG,SAAS,IAAI,EAAE;AAChC,QAAQ,IAAI,KAAK,GAAG,EAAE,CAAC;AACvB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;AACvC,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AACxD,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK,CAAC;AACN,CAAC,MAAM;AACP,IAAI,UAAU,GAAG,SAAS,IAAI,EAAE;AAChC,QAAQ,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,KAAK,CAAC;AACN,CAAC;AACD;AACA,IAAI,iBAAiB,GAAG,UAAU,CAAC;AACnC;AACA;AACA;AACA;AACA,IAAI,cAAc,GAAG,UAAU,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;AACvD;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrD,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACd;AACA,EAAE,OAAO,IAAI,EAAE;AACf,IAAI,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACjB,IAAI,OAAO,CAAC,EAAE,EAAE;AAChB;AACA;AACA,MAAM,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC5C;AACA,MAAM,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE;AACxC,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF;AACA,IAAI,UAAU,GAAG,UAAU,CAAC;AAC5B,IAAI,MAAM,GAAG,iBAAiB,CAAC;AAC/B,IAAI,MAAM,GAAG,cAAc,CAAC;AAC5B;AACA,SAAS,UAAU,CAAC,MAAM,EAAE;AAC5B,IAAI,IAAI,WAAW,GAAG,CAAC,CAAC;AACxB,IAAI,IAAI,IAAI,CAAC;AACb;AACA,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACxD,QAAQ,IAAI,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,GAAG,CAAC,EAAE,EAAE,CAAC;AAC1D,QAAQ,WAAW,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD;AACA,IAAI,UAAU,GAAG,UAAU,CAAC;AAC5B;AACA,IAAI,QAAQ,GAAG,UAAU,CAAC;AAC1B;AACA;AACA;AACA;AACA,IAAI,WAAW,GAAG,aAAa,CAAC;AAChC;AACA;AACA;AACA,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB;AACA;AACA,IAAI,OAAO,CAAC;AACZ;AACA;AACA,IAAI,eAAe,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,CAAC,eAAe,EAAE;AAChC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB;AACA,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,IAAI,KAAK,CAAC,CAAC;AACjE;AACA,IAAI,IAAI,OAAO,KAAK,eAAe,EAAE;AACrC,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK,MAAM;AACX,QAAQ,OAAO,GAAG,CAAC,CAAC;AACpB,QAAQ,eAAe,GAAG,OAAO,CAAC;AAClC,KAAK;AACL;AACA,IAAI,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;AACpC,IAAI,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;AAC1C,IAAI,IAAI,OAAO,GAAG,CAAC,EAAE;AACrB,QAAQ,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClC,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD;AACA,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB;AACA,IAAI,QAAQ,GAAG,UAAU,CAAC;AAC1B;AACA,SAAS,SAAS,CAAC,EAAE,EAAE;AACvB,IAAI,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG;AACzD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL;AACA,IAAI,IAAI,aAAa,GAAG,IAAI,MAAM,CAAC,IAAI;AACvC,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC;AAC5D,IAAI,GAAG,CAAC,CAAC;AACT,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnC,CAAC;AACD;AACA,IAAI,OAAO,GAAG,SAAS,CAAC;AACxB;AACA,CAAC,UAAU,MAAM,EAAE;AACnB;AACA,CAAC,IAAI,QAAQ,GAAG,UAAU,CAAC;AAC3B,CAAC,IAAI,KAAK,GAAG,OAAO,CAAC;AACrB,CAAC,IAAI,SAAS,GAAG,OAAO,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,eAAe,GAAG,CAAC,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE;AAC1B,KAAK,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9B,KAAK,OAAO,MAAM,CAAC,OAAO,CAAC;AAC3B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE;AAC3B,KAAK,eAAe,GAAG,QAAQ,CAAC;AAChC,KAAK,OAAO,MAAM,CAAC,OAAO,CAAC;AAC3B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,aAAa,EAAE;AACpC,KAAK,IAAI,aAAa,KAAK,SAAS,EAAE;AACtC,SAAS,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC5C,MAAM;AACN;AACA,KAAK,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAChC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,GAAG;AACrB,GAAG,OAAO,KAAK,CAAC,eAAe,CAAC,CAAC;AACjC,EAAE;AACF;AACA;AACA,CAAC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;AAC3B,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACpC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AAC5B,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;AAChC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;AACxC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;AACpC,CAAC,EAAE,GAAG,CAAC,EAAE;AACT;AACA,CAAC,UAAU,MAAM,EAAE;AACnB,CAAC,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC;AAC7B,CAAC,EAAE,SAAS,CAAC,EAAE;AACf;AACA,IAAI,OAAO,gBAAgB,uBAAuB,CAAC,cAAc,CAAC,CAAC;AACnE;AACA,SAAS,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE;AACpF,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;AACxB,QAAQ,MAAM,GAAG,QAAQ,CAAC;AAC1B,KAAK;AACL,IAAI,eAAe,GAAG,eAAe,IAAI,CAAC,SAAS,CAAC,CAAC;AACrD,IAAI,aAAa,GAAG,aAAa,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/C,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC;AACzB,IAAI,IAAI,eAAe,GAAG,KAAK,CAAC;AAChC,IAAI,IAAI,cAAc,CAAC;AACvB,IAAI,IAAI,aAAa,GAAG,KAAK,CAAC;AAC9B,IAAI,IAAI,SAAS,GAAG,KAAK,EAAE,CAAC;AAC5B,IAAI,UAAU,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC;AAC1D,IAAI,UAAU,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;AAClD,IAAI,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,GAAG,EAAE,EAAE,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACnF,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG,EAAE,EAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/E,IAAI,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,GAAG,EAAE,EAAE,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAClF,IAAI,IAAI,eAAe,EAAE;AACzB,QAAQ,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE;AAC9C,YAAY,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACpF,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,IAAI,aAAa,EAAE;AACvB,QAAQ,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE;AAC5C,YAAY,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAClF,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,IAAI,WAAW,GAAG,EAAE,CAAC;AACzB,IAAI,SAAS,IAAI,CAAC,OAAO,EAAE;AAC3B,QAAQ,cAAc,GAAG,OAAO,CAAC;AACjC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AACtD,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,OAAO,CAAC,EAAE,CAAC,CAAC;AAC5B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,WAAW,CAAC;AAC5B,YAAY,IAAI,MAAM,KAAK,QAAQ,EAAE;AACrC,gBAAgB,WAAW,GAAG,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAC/G,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/D,gBAAgB,IAAI,OAAO,GAAG;AAC9B,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,WAAW,EAAE,MAAM;AACvC,oBAAoB,MAAM,EAAE,QAAQ;AACpC,oBAAoB,OAAO,EAAE,OAAO;AACpC,iBAAiB,CAAC;AAClB,gBAAgB,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,aAAa;AACb,YAAY,WAAW;AACvB,iBAAiB,IAAI,CAAC,YAAY;AAClC,gBAAgB,YAAY,EAAE,CAAC;AAC/B,gBAAgB,OAAO,CAAC,EAAE,CAAC,CAAC;AAC5B,aAAa,CAAC;AACd,iBAAiB,KAAK,CAAC,UAAU,GAAG,EAAE;AACtC,gBAAgB,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5F,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,SAAS,KAAK,GAAG;AACrB,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE;AACjC,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAC3D,QAAQ,IAAI,QAAQ,GAAG;AACvB,YAAY,IAAI,EAAE,OAAO;AACzB,YAAY,WAAW,EAAE,MAAM;AAC/B,YAAY,MAAM,EAAE,QAAQ;AAC5B,SAAS,CAAC;AACV,QAAQ,eAAe,GAAG,KAAK,CAAC;AAChC,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAa,IAAI,CAAC,YAAY;AAC9B,YAAY,QAAQ,GAAG,KAAK,CAAC;AAC7B,YAAY,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxC,SAAS,CAAC;AACV,aAAa,KAAK,CAAC,YAAY;AAC/B,YAAY,QAAQ,GAAG,KAAK,CAAC;AAC7B,YAAY,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,SAAS,YAAY,GAAG;AAC5B,QAAQ,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;AAC3C,QAAQ,QAAQ,GAAG,IAAI,CAAC;AACxB,QAAQ,IAAI,YAAY,GAAG,eAAe,CAAC;AAC3C,QAAQ,eAAe,GAAG,KAAK,CAAC;AAChC,QAAQ,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,SAAS,4BAA4B,GAAG;AAC5C,QAAQ,aAAa,GAAG,KAAK,CAAC;AAC9B,QAAQ,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;AAC3C,QAAQ,QAAQ,GAAG,KAAK,CAAC;AACzB,QAAQ,eAAe,GAAG,IAAI,CAAC;AAC/B,QAAQ,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,SAAS,wBAAwB,GAAG;AACxC,QAAQ,aAAa,GAAG,IAAI,CAAC;AAC7B,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;AAC1E,YAAY,IAAI,CAAC,cAAc,CAAC,CAAC;AACjC,SAAS;AACT,KAAK;AACL,IAAI,SAAS,QAAQ,CAAC,QAAQ,EAAE;AAChC,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,SAAS,MAAM,CAAC,QAAQ,EAAE;AAC9B,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAY,QAAQ,EAAE,CAAC;AACvB,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACrC,QAAQ,IAAI,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE;AACnC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC;AACvC,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzB,KAAK;AACL,IAAI,SAAS,oBAAoB,CAAC,GAAG,EAAE;AACvC,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE;AACnC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC;AACvC,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,SAAS,gBAAgB,GAAG;AAChC,QAAQ,OAAO,OAAO,EAAE,CAAC;AACzB,KAAK;AACL,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;AACrC,QAAQ,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAChC,QAAQ,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,gBAAgB,EAAE,CAAC;AAC9D,QAAQ,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC;AAC1C,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACjC,YAAY,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;AAC5C,SAAS;AACT,QAAQ,IAAI,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC;AACvC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AACtD,YAAY,WAAW,CAAC,SAAS,CAAC,GAAG;AACrC,gBAAgB,OAAO,EAAE,UAAU,UAAU,EAAE;AAC/C,oBAAoB,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;AAClD,oBAAoB,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;AAC1C,oBAAoB,OAAO,CAAC,UAAU,CAAC,CAAC;AACxC,iBAAiB;AACjB,gBAAgB,KAAK,EAAE,UAAU,QAAQ,EAAE;AAC3C,oBAAoB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7H,oBAAoB,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;AAClD,oBAAoB,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;AACxC,oBAAoB,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrC,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,UAAU;AACtB,iBAAiB,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;AACnC,iBAAiB,KAAK,CAAC,UAAU,GAAG,EAAE;AACtC,gBAAgB,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAC3D,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,SAAS,iBAAiB,CAAC,GAAG,EAAE;AACpC,QAAQ,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,GAAG,gBAAgB,EAAE,CAAC;AAC9E,QAAQ,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC;AAC1C,QAAQ,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;AACxC,QAAQ,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,QAAQ,EAAE,QAAQ;AAC1B,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,iBAAiB,EAAE,iBAAiB;AAC5C,QAAQ,EAAE,EAAE,UAAU,IAAI,EAAE,QAAQ,EAAE;AACtC,YAAY,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,GAAG,EAAE;AAC/C,gBAAgB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE;AAC3C,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,IAAI;AACpB,oBAAoB,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClC,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,EAAE;AAC1B,oBAAoB,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzI,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,QAAQ,EAAE,UAAU,QAAQ,EAAE,EAAE,OAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC/E,QAAQ,SAAS,EAAE,UAAU,QAAQ,EAAE,EAAE,OAAO,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE;AACjF,QAAQ,YAAY,EAAE,UAAU,QAAQ,EAAE,EAAE,OAAO,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE;AACvF,QAAQ,IAAI,MAAM,GAAG;AACrB,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC;AACrC,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG;AACrB,YAAY,OAAO,MAAM,CAAC;AAC1B,SAAS;AACT,KAAK,CAAC;AACN,CAAC;AACD;AACA,IAAI,eAAe,IAAI,YAAY;AACnC,IAAI,SAAS,eAAe,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC3D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;AACvC,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACpD,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACjD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,EAAE,CAAC;AAChC,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACnC,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,QAAQ,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;AACtC,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,QAAQ,UAAU,CAAC,YAAY,CAAC,YAAY;AAC5C,YAAY,KAAK,CAAC,kBAAkB,EAAE,CAAC;AACvC,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE;AACnE,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,OAAO,IAAI,CAAC,WAAW,CAAC;AACpC,SAAS;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE,IAAI;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,eAAe,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,OAAO,EAAE;AACxE,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,EAAE,KAAK,EAAE;AAC5D,YAAY,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3C,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE;AACjD,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,mBAAmB,EAAE;AACxD,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,KAAK,CAAC,UAAU,EAAE;AAC9E,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI;AAChB,gBAAgB,IAAI,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AACpG,gBAAgB,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;AACzC,oBAAoB,OAAO,KAAK,CAAC;AACjC,iBAAiB;AACjB,gBAAgB,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,aAAa;AACb,YAAY,OAAO,EAAE,EAAE;AACvB,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO;AACf,YAAY,GAAG,EAAE,GAAG;AACpB,YAAY,OAAO,EAAE,GAAG,CAAC,IAAI;AAC7B,SAAS,CAAC;AACV,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,OAAO,EAAE;AACvE,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC9C,QAAQ,IAAI;AACZ,YAAY,IAAI,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;AAC/C,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAChD,gBAAgB,OAAO,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACrD,aAAa,CAAC;AACd,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjD,YAAY,OAAO,MAAM,CAAC;AAC1B,SAAS;AACT,gBAAgB;AAChB,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;AAC9C,SAAS;AACT,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,OAAO,EAAE;AACxE,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AAC3B,YAAY,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,OAAO;AACf,YAAY,GAAG,EAAE,OAAO;AACxB,YAAY,OAAO,EAAE,OAAO,CAAC,IAAI;AACjC,SAAS,CAAC;AACV,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,OAAO,EAAE;AACvE,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,MAAM,EAAE,SAAS,EAAE;AACnE,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AAC3D,YAAY,IAAI,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC;AACzG,YAAY,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AACnD,gBAAgB,QAAQ,EAAE,CAAC,KAAK;AAChC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AAC3D,wBAAwB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAClD,wBAAwB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC/C,4BAA4B,IAAI,CAAC,WAAW,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC9E,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACnD,wBAAwB,cAAc,GAAG,EAAE,CAAC;AAC5C,wBAAwB,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAC3E,wBAAwB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChE,wBAAwB,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtD,wBAAwB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;AACrC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClD,wBAAwB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AACzD,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,KAAK,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AAC1C,wBAAwB,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;AACpD,wBAAwB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AACxC,wBAAwB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC;AAC7J,wBAAwB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,cAAc,CAAC,MAAM,GAAG,eAAe,CAAC;AAChE,wBAAwB,cAAc,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AACnE,wBAAwB,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAC3E,wBAAwB,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,IAAI,EAAE,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,wBAAwB,cAAc,CAAC,QAAQ,GAAG,KAAK,CAAC;AACxD,wBAAwB,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC;AAC/D,wBAAwB,IAAI,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtF,wBAAwB,EAAE,GAAG,cAAc,CAAC;AAC5C,wBAAwB,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;AAChF,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,KAAK;AAChC,4BAA4B,CAAC,EAAE,CAAC,IAAI,EAAE;AACtC,iCAAiC,IAAI;AACrC,iCAAiC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACpD,wBAAwB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,oBAAoB,KAAK,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACnE,oBAAoB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3C,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,IAAI,MAAM,CAAC,KAAK,EAAE;AAC1C,4BAA4B,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC;AACnE,4BAA4B,cAAc,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAChE,yBAAyB;AACzB,6BAA6B,IAAI,MAAM,CAAC,QAAQ,EAAE;AAClD,4BAA4B,cAAc,CAAC,MAAM,GAAG,QAAQ,CAAC;AAC7D,4BAA4B,cAAc,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AACnE,4BAA4B,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;AACpE,yBAAyB;AACzB,6BAA6B,IAAI,MAAM,CAAC,QAAQ,EAAE;AAClD,4BAA4B,cAAc,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACtE,4BAA4B,cAAc,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACpF,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7F,yBAAyB;AACzB,wBAAwB,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;AACtC,oBAAoB,KAAK,EAAE;AAC3B,wBAAwB,QAAQ,GAAG;AACnC,4BAA4B,IAAI,EAAE,OAAO;AACzC,4BAA4B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAC5D,4BAA4B,cAAc,EAAE,cAAc;AAC1D,yBAAyB,CAAC;AAC1B,wBAAwB,IAAI,MAAM,CAAC,SAAS,EAAE;AAC9C,4BAA4B,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;AACnE,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE;AAC7H,4BAA4B,SAAS;AACrC,4BAA4B,OAAO;AACnC,4BAA4B,wBAAwB;AACpD,yBAAyB,CAAC,CAAC;AAC3B,wBAAwB,WAAW,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC3D,wBAAwB,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/C,4BAA4B,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AACxF,4BAA4B,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AACrF,yBAAyB;AACzB,wBAAwB,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;AACtC,oBAAoB,KAAK,EAAE;AAC3B,wBAAwB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACvD,wBAAwB,UAAU,GAAG,KAAK,CAAC,CAAC;AAC5C,wBAAwB,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;AACtC,oBAAoB,KAAK,EAAE;AAC3B,wBAAwB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;AAC7F,oBAAoB,KAAK,EAAE;AAC3B,wBAAwB,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AACxC,wBAAwB,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,wBAAwB,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrF,wBAAwB,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAChF,wBAAwB,IAAI,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvF,wBAAwB,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC;AACrD,wBAAwB,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AACjF,oBAAoB,KAAK,EAAE;AAC3B,wBAAwB,EAAE,CAAC,KAAK;AAChC,4BAA4B,CAAC,EAAE,CAAC,IAAI,EAAE;AACtC,iCAAiC,IAAI;AACrC,iCAAiC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACpD,wBAAwB,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;AACtC,oBAAoB,KAAK,EAAE;AAC3B,wBAAwB,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;AAC/D,wBAAwB,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,oBAAoB,KAAK,EAAE;AAC3B,wBAAwB,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;AACpD,4BAA4B,UAAU,GAAG,GAAG,CAAC;AAC7C,4BAA4B,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3C,yBAAyB;AACzB,6BAA6B,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;AACvD,4BAA4B,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AACpF,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,MAAM,IAAI,KAAK,CAAC,iDAAiD,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1G,yBAAyB;AACzB,oBAAoB,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5C,oBAAoB,KAAK,EAAE;AAC3B,wBAAwB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAClD,wBAAwB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AAChG,wBAAwB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;AACpE,wBAAwB,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,UAAU,CAAC,iBAAiB,CAAC;AACxF,wBAAwB,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,UAAU,CAAC,iBAAiB,CAAC;AACxF,wBAAwB,IAAI,UAAU,CAAC,OAAO,EAAE;AAChD,4BAA4B,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;AACpF,4BAA4B,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3E,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC/C,wBAAwB,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACjE,oBAAoB,KAAK,EAAE;AAC3B,wBAAwB,KAAK,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AAC1C,wBAAwB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3I,wBAAwB,MAAM,KAAK,CAAC;AACpC,oBAAoB,KAAK,EAAE;AAC3B,wBAAwB,IAAI,MAAM,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,SAAS,EAAE;AAC/E,4BAA4B,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACxE,yBAAyB;AACzB,wBAAwB,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,oBAAoB,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACxC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AACnD,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AAC3D,YAAY,IAAI,QAAQ,CAAC;AACzB,YAAY,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AACnD,gBAAgB,QAAQ,EAAE,CAAC,KAAK;AAChC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC5D,wBAAwB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AACpD,wBAAwB,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5C,4BAA4B,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzD,yBAAyB;AACzB,wBAAwB,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE;AACxE,4BAA4B,OAAO,CAAC,KAAK,EAAE,CAAC;AAC5C,yBAAyB,CAAC,CAAC;AAC3B,wBAAwB,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1D,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,wBAAwB,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,QAAQ,EAAE;AAC7D,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,QAAQ,EAAE,CAAC;AACvB,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE;AAC3G,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChG,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,OAAO,GAAG,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;AAC/G,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,kBAAkB,GAAG,YAAY;AAC/D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC;AAC7C,QAAQ,IAAI,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;AAC7C,YAAY,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,EAAE;AAChD,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AACtF,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnC,gBAAgB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACjD,aAAa;AACb,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;AACzD,iBAAiB,KAAK,CAAC,YAAY;AACnC,gBAAgB,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC;AAC3G,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE;AAC7D,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACjC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAChD,SAAS;AACT,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACjD,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAClC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AACnD,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,YAAY;AAChD,YAAY,KAAK,CAAC,IAAI,EAAE,CAAC;AACzB,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;AACtB,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AACtD,QAAQ,IAAI,cAAc,GAAG;AAC7B,YAAY,IAAI,EAAE,cAAc;AAChC,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAChC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;AACzE,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACrD,aAAa,IAAI,CAAC,UAAU,GAAG,EAAE;AACjC,YAAY,OAAO,GAAG,CAAC,KAAK,CAAC;AAC7B,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;AAC1D,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC3C,YAAY,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3C,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC7C,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC9D,KAAK,CAAC;AACN,IAAI,OAAO,eAAe,CAAC;AAC3B,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,mBAAmB,IAAI,YAAY;AACvC,IAAI,SAAS,mBAAmB,CAAC,KAAK,EAAE;AACxC,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACvB,QAAQ,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC/B,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACxB,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACrE,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AACnC,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACzC,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,SAAS;AACT,KAAK;AACL,IAAI,mBAAmB,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,UAAU,EAAE;AAC/D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACrE,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAChC,YAAY,IAAI,OAAO,GAAG,UAAU,IAAI,EAAE;AAC1C,gBAAgB,IAAI,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACzD,gBAAgB,IAAI,CAAC,QAAQ,EAAE;AAC/B,oBAAoB,QAAQ,GAAG,CAAC,CAAC;AACjC,iBAAiB;AACjB,gBAAgB,QAAQ,IAAI,CAAC,CAAC;AAC9B,gBAAgB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;AACrD,gBAAgB,IAAI,QAAQ,GAAG,CAAC,EAAE;AAClC,oBAAoB,OAAO,UAAU,CAAC;AACtC,iBAAiB;AACjB,gBAAgB,IAAI,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1G,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AACxC,aAAa,CAAC;AACd,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC;AAC9B,YAAY,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAClF,gBAAgB,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAClC,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,aAAa;AACb,SAAS;AACT,KAAK,CAAC;AACN,IAAI,mBAAmB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE,GAAG,EAAE;AACxE,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE;AACjC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACrE,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAChC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC/D,gBAAgB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAC3D,gBAAgB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AACjD,gBAAgB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,aAAa;AACb,SAAS;AACT,KAAK,CAAC;AACN,IAAI,mBAAmB,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,IAAI,EAAE,QAAQ,EAAE;AACpE,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnC,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AAC5E,YAAY,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC9C,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpG,gBAAgB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,gBAAgB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC/C,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAChC,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAC/B,SAAS;AACT,KAAK,CAAC;AACN,IAAI,OAAO,mBAAmB,CAAC;AAC/B,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,WAAW,GAAG,UAAU,QAAQ,EAAE,mBAAmB,EAAE,cAAc,EAAE;AAC3E,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AAClD,QAAQ,IAAI,OAAO,GAAG,UAAU,CAAC,YAAY;AAC7C,YAAY,IAAI,OAAO,GAAG,cAAc,IAAI,uBAAuB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAChG,YAAY,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5B,SAAS,EAAE,mBAAmB,CAAC,CAAC;AAChC,QAAQ,IAAI,eAAe,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpD,QAAQ,eAAe;AACvB,aAAa,IAAI,CAAC,UAAU,MAAM,EAAE;AACpC,YAAY,YAAY,CAAC,OAAO,CAAC,CAAC;AAClC,YAAY,OAAO,CAAC,MAAM,CAAC,CAAC;AAC5B,SAAS,CAAC;AACV,aAAa,KAAK,CAAC,UAAU,KAAK,EAAE;AACpC,YAAY,YAAY,CAAC,OAAO,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP,CAAC,CAAC;AACF;AACA,IAAI,oBAAoB,IAAI,YAAY;AACxC,IAAI,SAAS,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC9D,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAClC,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACzC,QAAQ,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAC1C,QAAQ,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACzC,QAAQ,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AACrC,QAAQ,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC;AAC3C,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACtC,QAAQ,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;AAC7C,QAAQ,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC;AACvC,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,EAAE,CAAC;AAChC,QAAQ,IAAI,CAAC,QAAQ,GAAG;AACxB,YAAY,kBAAkB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAChH,YAAY,kBAAkB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAChH,YAAY,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC7G,YAAY,WAAW,EAAE;AACzB,gBAAgB,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY;AACzD,iBAAiB;AACjB,aAAa;AACb,YAAY,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACxF,YAAY,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC9F,YAAY,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACjG,YAAY,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC9F,YAAY,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC9F,YAAY,qBAAqB,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACzH,YAAY,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACvG,YAAY,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC7G,YAAY,sBAAsB,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,EAAE,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5H,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;AACtD,QAAQ,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACpC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,2BAA2B,EAAE,CAAC;AAC3C,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,WAAW,GAAG,SAAS,CAAC;AACjF,KAAK;AACL,IAAI,oBAAoB,CAAC,SAAS,CAAC,mBAAmB,GAAG,YAAY;AACrE,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAChC,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,mBAAmB,EAAE;AAC/E,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,OAAO,IAAI,CAAC,cAAc,CAAC;AACvC,SAAS;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE,IAAI;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,EAAE;AAC7E,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC;AACzC,SAAS;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE,IAAI;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,oBAAoB,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE;AAC/D,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AAC3D,YAAY,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AACnD,gBAAgB,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC9C,oBAAoB,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACpG,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AAChC,oBAAoB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAChG,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC3C,gBAAgB,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3B,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS,EAAE,wBAAwB,EAAE;AACpF,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE,IAAI;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,oBAAoB,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,QAAQ,EAAE;AACnE,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACxD,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACtD,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC/C,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,QAAQ,EAAE;AAC5E,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;AACjE,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACtD,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AAC3D,YAAY,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AACnD,gBAAgB,QAAQ,EAAE,CAAC,KAAK;AAChC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;AAC/F,wBAAwB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACnD,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,wBAAwB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACvD,wBAAwB,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AACvD,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,IAAI,OAAO,GAAG;AACtB,YAAY,UAAU,EAAE;AACxB,gBAAgB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI;AAC1D,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,QAAQ,EAAE,IAAI,CAAC,UAAU;AAC7C,oBAAoB,WAAW,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ;AACtG,iBAAiB;AACjB,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACtF,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAC/D,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACtD,QAAQ,OAAO,cAAc,CAAC;AAC9B,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AAC3D,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AAC3D,YAAY,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AACnD,gBAAgB,QAAQ,EAAE,CAAC,KAAK;AAChC,oBAAoB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACrD,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,wBAAwB,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AACtD,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,0BAA0B,GAAG,YAAY;AAC5E,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AACtD,YAAY,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;AAC9E,YAAY,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC7C,YAAY,IAAI,KAAK,CAAC,YAAY,EAAE;AACpC,gBAAgB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;AAC9G,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE;AACpD,gBAAgB,IAAI,EAAE,EAAE,EAAE,CAAC;AAC3B,gBAAgB,IAAI,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE;AACnH,oBAAoB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AACpE,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC;AAChG,gBAAgB,IAAI,CAAC,IAAI,EAAE;AAC3B,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9F,oBAAoB,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACnE,oBAAoB,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,cAAc,EAAE;AAChE,wBAAwB,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC;AACvE,wBAAwB,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC;AACvE,qBAAqB;AACrB,oBAAoB,OAAO,EAAE,CAAC;AAC9B,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AAC5F,oBAAoB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;AACnC,gBAAgB,UAAU,EAAE;AAC5B,oBAAoB,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI;AACpE,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,MAAM,EAAE;AAChF,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,OAAO,WAAW,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AACtD,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC;AAC9C,YAAY,KAAK,CAAC,gBAAgB,GAAG,MAAM,CAAC;AAC5C,YAAY,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;AAClG,YAAY,IAAI,gBAAgB,GAAG,KAAK,CAAC,aAAa,EAAE,IAAI,OAAO,EAAE,CAAC;AACtE,YAAY,IAAI,OAAO,GAAG;AAC1B,gBAAgB,UAAU,EAAE;AAC5B,oBAAoB,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI;AAC/D,oBAAoB,QAAQ,EAAE,KAAK,CAAC,UAAU;AAC9C,oBAAoB,UAAU,EAAE,OAAO;AACvC,oBAAoB,gBAAgB,EAAE,gBAAgB;AACtD,oBAAoB,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;AACpE,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAC7D,YAAY,IAAI,KAAK,CAAC,oBAAoB,EAAE;AAC5C,gBAAgB,OAAO,CAAC,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC;AACxD,gBAAgB,OAAO,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC;AACvE,gBAAgB,OAAO,CAAC,UAAU,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;AACzE,gBAAgB,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAC9E,aAAa;AACb,YAAY,IAAI,CAAC,MAAM,EAAE;AACzB,gBAAgB,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;AAC3G,aAAa;AACb,YAAY,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACnE,SAAS,EAAE,IAAI,CAAC,wBAAwB,EAAE,oDAAoD,CAAC,CAAC;AAChG,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,WAAW,EAAE;AACjF,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AAC3D,YAAY,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AACnD,gBAAgB,QAAQ,EAAE,CAAC,KAAK;AAChC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClD,wBAAwB,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAChD,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,wBAAwB,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AACtD,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,wBAAwB,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD,oBAAoB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACvC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,oBAAoB,GAAG,YAAY;AACtE,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAChC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;AACvG,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,KAAK,EAAE;AAC5D,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,IAAI,IAAI,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC;AAC5F,YAAY,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE;AACzC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;AACrE,YAAY,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACjF,gBAAgB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,sEAAsE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/H,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACzD,gBAAgB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,+EAA+E,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtI,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;AACxC,YAAY,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AAClG,YAAY,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtD,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;AAC7D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAChC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;AACpG,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,YAAY;AAC5D,YAAY,IAAI,EAAE,EAAE,EAAE,CAAC;AACvB,YAAY,IAAI,KAAK,CAAC,mBAAmB,EAAE;AAC3C,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,OAAO,GAAG;AAC1B,gBAAgB,UAAU,EAAE;AAC5B,oBAAoB,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI;AAC1D,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,QAAQ,EAAE,KAAK,CAAC,UAAU;AAClD,wBAAwB,WAAW,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ;AAC3G,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,IAAI,KAAK,CAAC,MAAM,EAAE;AAC9B,gBAAgB,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAC7E,aAAa;AACb,YAAY,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC3F,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,KAAK,EAAE;AAC1E,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;AACpE,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAChC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,YAAY,OAAO,IAAI,CAAC,iBAAiB,CAAC;AAC1C,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACrC,YAAY,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACnD,YAAY,OAAO,IAAI,CAAC,kBAAkB,CAAC;AAC3C,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACnC,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,WAAW,GAAG,QAAQ,CAAC;AAChF,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,KAAK,EAAE;AAC/E,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC;AACxF,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,QAAQ,EAAE;AAC/C,YAAY,OAAO,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,mCAAmC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrE,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAU,IAAI,EAAE;AACjF,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAC9D,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,OAAO,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACxB,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;AACrG,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACnD,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;AACzD,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,IAAI,OAAO,EAAE,CAAC;AACxH,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC3C,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;AACrD,YAAY,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;AACzD,SAAS;AACT,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;AACrD,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACnG,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC1F,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,YAAY,OAAO,IAAI,CAAC,iBAAiB,CAAC;AAC1C,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;AAC5G,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAU,IAAI,EAAE;AACjF,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wFAAwF,CAAC,CAAC;AACpH,QAAQ,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAC1C,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACxC,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC;AACrE,QAAQ,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACxD,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;AACzD,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC3C,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;AACrD,YAAY,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;AACzD,SAAS;AACT,QAAQ,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,KAAK,EAAE;AAC5D,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,IAAI,OAAO,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;AACjG,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;AACrE,YAAY,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACjF,gBAAgB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,sEAAsE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/H,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACzD,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC1F,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,YAAY,OAAO,IAAI,CAAC,iBAAiB,CAAC;AAC1C,YAAY,OAAO;AACnB,SAAS;AACT,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,mCAAmC,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE;AAChG,QAAQ,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACnE,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uFAAuF,CAAC,CAAC;AACvH,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpH,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClG,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,+CAA+C,CAAC,CAAC,CAAC;AAC3J,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;AAC/B,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,iEAAiE,CAAC,CAAC,CAAC;AACrJ,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AAClD,QAAQ,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,QAAQ,OAAO;AACf,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,wBAAwB,GAAG,YAAY;AAC1E,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gHAAgH,CAAC,CAAC;AAC5I,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAY,IAAI,CAAC,gBAAgB,CAAC,0GAA0G,CAAC,CAAC;AAC9I,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC;AACzC,SAAS;AACT,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,KAAK,EAAE;AAC9E,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;AACpG,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,YAAY,EAAE;AAClE,YAAY,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,sFAAsF,CAAC,CAAC;AAC9J,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAY,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,+EAA+E,CAAC,CAAC;AACvJ,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAY,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,+FAA+F,CAAC,CAAC;AACvK,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpG,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACpH,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,6DAA6D,CAAC,CAAC,CAAC;AAC/H,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACtE,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,KAAK,EAAE;AACvE,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;AACvF,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAChC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;AAC7F,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG;AACtB,YAAY,UAAU,EAAE;AACxB,gBAAgB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI;AACpD,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,OAAO,CAAC,UAAU,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACvE,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;AAC9E,QAAQ,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAClD,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,2BAA2B,GAAG,YAAY;AAC7E,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,EAAE;AACtC,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE;AAC/C,gBAAgB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACrE,gBAAgB,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;AAC1C,gBAAgB,KAAK,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;AACrE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,kBAAkB,GAAG,YAAY;AACpE,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,IAAI,OAAO,GAAG;AACtB,YAAY,UAAU,EAAE;AACxB,gBAAgB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI;AACrD,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,QAAQ,EAAE,IAAI,CAAC,UAAU;AAC7C,oBAAoB,WAAW,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ;AACtG,iBAAiB;AACjB,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC3F,SAAS;AACT,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACtF,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,KAAK,EAAE;AACzE,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;AACzC,QAAQ,IAAI,QAAQ,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtF,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;AACzG,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1G,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;AACrH,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClF,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3G,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,kBAAkB,GAAG,YAAY;AACpE,QAAQ,OAAO;AACf,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,MAAM,EAAE,MAAM,EAAE;AACnF,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;AACnC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACpE,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,cAAc,EAAE;AACrF,QAAQ,OAAO,OAAO,cAAc,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACrF,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AAC/F,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC7B,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAClC,QAAQ,IAAI,SAAS,GAAG;AACxB,YAAY,UAAU,EAAE;AACxB,gBAAgB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI;AAC3D,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC9C,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,kCAAkC,GAAG,YAAY;AACpF,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,OAAO,IAAI,CAAC,oBAAoB,EAAE;AAC1C,aAAa,IAAI,CAAC,YAAY,EAAE,OAAO,WAAW,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AAC9E,YAAY,KAAK,CAAC,oBAAoB,GAAG,OAAO,CAAC;AACjD,YAAY,KAAK,CAAC,mBAAmB,GAAG,MAAM,CAAC;AAC/C,YAAY,IAAI,OAAO,GAAG;AAC1B,gBAAgB,UAAU,EAAE;AAC5B,oBAAoB,IAAI,EAAE,iBAAiB;AAC3C,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;AAC9F,YAAY,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACnE,SAAS,EAAE,KAAK,CAAC,iBAAiB,EAAE,wIAAwI,CAAC,CAAC,EAAE,CAAC,CAAC;AAClL,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAU,KAAK,EAAE;AAClF,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC;AACxF,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAY,OAAO,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,2IAA2I,CAAC,GAAG,SAAS,CAAC;AAChO,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACxC,YAAY,OAAO,IAAI,CAAC,oBAAoB,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACzC,QAAQ,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;AACtC,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;AAChF,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;AACvE,QAAQ,OAAO;AACf,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,uBAAuB,GAAG,YAAY;AACzE,QAAQ,OAAO;AACf,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,4BAA4B,GAAG,YAAY;AAC9E,QAAQ,OAAO;AACf,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,oBAAoB,GAAG,YAAY;AACtE,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;AACvG,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,UAAU,OAAO,EAAE;AAC9C,YAAY,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,YAAY;AAClE,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa,CAAC,CAAC;AACf,SAAS,EAAE,IAAI,CAAC,wBAAwB,EAAE,mEAAmE,CAAC,CAAC;AAC/G,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AACzD,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AAC3D,YAAY,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AACnD,gBAAgB,QAAQ,EAAE,CAAC,KAAK;AAChC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,wBAAwB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;AACtE,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,wBAAwB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;AACxF,wBAAwB,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;AACtF,wBAAwB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACtD,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,wBAAwB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/E,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,wBAAwB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACrE,wBAAwB,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;AAC5D,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AAC3D,YAAY,IAAI,wBAAwB,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,CAAC;AAC/G,YAAY,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AACnD,gBAAgB,QAAQ,EAAE,CAAC,KAAK;AAChC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,wBAAwB,GAAG,sFAAsF,CAAC;AAC1I,wBAAwB,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAClF,wBAAwB,gBAAgB,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9J,wBAAwB,aAAa,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;AACjI,wBAAwB,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC9E,4BAA4B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AACtE,yBAAyB;AACzB,wBAAwB,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9F,wBAAwB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,kCAAkC,EAAE,CAAC,CAAC;AAC9E,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,wBAAwB,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,oBAAoB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACjH,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,kBAAkB,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AACvD,wBAAwB,IAAI,kBAAkB,CAAC,OAAO,EAAE;AACxD,4BAA4B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;AAC/E,4BAA4B,OAAO,CAAC,CAAC,CAAC,CAAC;AACvC,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACvD,4BAA4B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AACtE,yBAAyB;AACzB,wBAAwB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,kCAAkC,EAAE,CAAC,CAAC;AAC9E,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,wBAAwB,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,0BAA0B,GAAG,UAAU,aAAa,EAAE;AACzF,QAAQ,OAAO,CAAC,CAAC,aAAa,IAAI,aAAa,KAAK,aAAa,CAAC,GAAG,IAAI,EAAE,GAAG,aAAa,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;AACjL,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,+BAA+B,GAAG,UAAU,MAAM,EAAE,OAAO,EAAE;AAChG,QAAQ,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,MAAM,KAAK,OAAO,IAAI,EAAE,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3N,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,OAAO,EAAE;AACtE,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,wBAAwB,GAAG,sFAAsF,CAAC;AAC9H,QAAQ,IAAI,WAAW,GAAG,WAAW,CAAC,UAAU,OAAO,EAAE;AACzD,YAAY,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC;AAC9C,YAAY,IAAI,OAAO,GAAG;AAC1B,gBAAgB,UAAU,EAAE;AAC5B,oBAAoB,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI;AAC1D,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,KAAK,CAAC,kBAAkB,GAAG,WAAW,CAAC,YAAY;AAC/D,gBAAgB,OAAO,CAAC,OAAO,CAAC,UAAU,MAAM,EAAE;AAClD,oBAAoB,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAC3E,iBAAiB,CAAC,CAAC;AACnB,aAAa,EAAE,IAAI,CAAC,CAAC;AACrB,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAAC;AAC7D,QAAQ,WAAW,CAAC,KAAK,CAAC,YAAY;AACtC,YAAY,IAAI,KAAK,CAAC,kBAAkB,EAAE;AAC1C,gBAAgB,aAAa,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AACxD,gBAAgB,OAAO,KAAK,CAAC,kBAAkB,CAAC;AAChD,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,WAAW,CAAC;AAC3B,KAAK,CAAC;AACN,IAAI,oBAAoB,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;AAC/D,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,WAAW,EAAE;AAC7C,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACzE,SAAS;AACT,QAAQ,IAAI,MAAM,KAAK,MAAM,CAAC,GAAG,EAAE;AACnC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACxF,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC;AAC/B,SAAS;AACT,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1F,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC;AACzC,KAAK,CAAC;AACN,IAAI,OAAO,oBAAoB,CAAC;AAChC,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,kBAAkB,GAAG,UAAU,WAAW,EAAE,QAAQ,EAAE;AAC1D,IAAI,IAAI,IAAI,GAAG,WAAW,CAAC;AAC3B,IAAI,OAAO,YAAY;AACvB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,IAAI,KAAK,CAAC,EAAE;AACxB,YAAY,QAAQ,EAAE,CAAC;AACvB,SAAS;AACT,KAAK,CAAC;AACN,CAAC,CAAC;AACF;AACA,IAAI,eAAe,IAAI,YAAY;AACnC,IAAI,SAAS,eAAe,CAAC,mBAAmB,EAAE;AAClD,QAAQ,IAAI,mBAAmB,KAAK,KAAK,CAAC,EAAE,EAAE,mBAAmB,GAAG,CAAC,CAAC,EAAE;AACxE,QAAQ,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;AACvD,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACtC,KAAK;AACL,IAAI,eAAe,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,MAAM,EAAE;AAC1D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AACtD,YAAY,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AACnF,YAAY,KAAK,CAAC,YAAY,EAAE,CAAC;AACjC,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;AACzD,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AAC3D,YAAY,IAAI,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC;AACjD,YAAY,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AACnD,gBAAgB,QAAQ,EAAE,CAAC,KAAK;AAChC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACnD,4BAA4B,OAAO,CAAC,CAAC,CAAC,CAAC;AACvC,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACrD,wBAAwB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;AACrC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,wBAAwB,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACvD,wBAAwB,IAAI,CAAC,SAAS,EAAE;AACxC,4BAA4B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC1D,4BAA4B,OAAO,CAAC,CAAC,CAAC,CAAC;AACvC,yBAAyB;AACzB,wBAAwB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;AACrC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClD,wBAAwB,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;AACvD,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,YAAY,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AACjD,wBAAwB,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACxD,wBAAwB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AAC5C,wBAAwB,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClD,wBAAwB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,oBAAoB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AAC7D,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,wBAAwB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACtD,wBAAwB,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;AAC1D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,GAAG,EAAE,EAAE,OAAO,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC;AAClG,KAAK,CAAC;AACN,IAAI,OAAO,eAAe,CAAC;AAC3B,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,UAAU,IAAI,YAAY;AAC9B,IAAI,SAAS,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC1C,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAClC,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,EAAE,CAAC;AAChC,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAChC,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AACpC,QAAQ,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACvC,QAAQ,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;AACjD,QAAQ,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;AAClC,QAAQ,QAAQ,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,IAAI,EAAE,CAAC;AACtE,QAAQ,QAAQ,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,IAAI,IAAI,CAAC;AACxE,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;AAC7B,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AAChG,SAAS;AACT,aAAa,IAAI,QAAQ,CAAC,YAAY,EAAE;AACxC,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAqB,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;AACjH,SAAS;AACT,aAAa,IAAI,QAAQ,CAAC,WAAW,EAAE;AACvC,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACjI,SAAS;AACT,aAAa,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE;AAC5C,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,SAAS;AACT,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACnE,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAClD,QAAQ,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1F,QAAQ,IAAI,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChH,QAAQ,IAAI,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9F,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1D,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;AAChD,KAAK;AACL,IAAI,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,iBAAiB,EAAE;AACnE,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC;AAChG,SAAS;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE,IAAI;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,UAAU,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,QAAQ,EAAE;AAC/D,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AAC3D,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC;AAC7B,YAAY,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AACnD,gBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AACtH,wBAAwB,IAAI,qBAAqB,EAAE,aAAa,EAAE,eAAe,CAAC;AAClF,wBAAwB,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AAC/D,4BAA4B,QAAQ,EAAE,CAAC,KAAK;AAC5C,gCAAgC,KAAK,CAAC;AACtC,oCAAoC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AACnF,wCAAwC,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;AAClI,qCAAqC;AACrC,oCAAoC,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;AAC9E,wCAAwC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;AACxH,qCAAqC;AACrC,oCAAoC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpI,oCAAoC,qBAAqB,GAAG,QAAQ,CAAC,IAAI,KAAK,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC7J,oCAAoC,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC;AAClF,oCAAoC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,KAAK,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AAC9I,oCAAoC,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5E,oCAAoC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC/D,oCAAoC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAClE,oCAAoC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACvH,oCAAoC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;AACvE,gCAAgC,KAAK,CAAC;AACtC,oCAAoC,EAAE,CAAC,IAAI,EAAE,CAAC;AAC9C,oCAAoC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;AACjD,gCAAgC,KAAK,CAAC;AACtC,oCAAoC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9D,oCAAoC,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AAC9D,gCAAgC,KAAK,CAAC;AACtC,oCAAoC,EAAE,CAAC,IAAI,EAAE,CAAC;AAC9C,oCAAoC,eAAe,GAAG,IAAI,CAAC,SAAS,KAAK,qBAAqB,CAAC;AAC/F,oCAAoC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6EAA6E,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AAC5J,oCAAoC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACnE,oCAAoC,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;AAC7E,gCAAgC,KAAK,CAAC;AACtC,oCAAoC,EAAE,CAAC,IAAI,EAAE,CAAC;AAC9C,oCAAoC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;AAC9I,oCAAoC,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;AAC9E,oCAAoC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACnE,oCAAoC,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,gCAAgC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACnD,6BAA6B;AAC7B,yBAAyB,CAAC,CAAC;AAC3B,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,QAAQ,EAAE;AAChE,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AAC7D,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,GAAG,EAAE;AAC5D,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;AACrD,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,OAAO,EAAE,OAAO,EAAE;AAC5D,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU;AACrC,YAAY,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE;AACnD,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACjE,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9B,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrE,aAAa;AACb,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3D,SAAS;AACT,aAAa;AACb,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACxE,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9B,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5D,aAAa;AACb,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC5D,SAAS;AACT,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,UAAU,IAAI,EAAE,cAAc,EAAE;AAC9D,QAAQ,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;AACtD,YAAY,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC5C,SAAS;AACT,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC;AACxD,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,EAAE,EAAE,EAAE;AAClB,SAAS,CAAC;AACV,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE;AAC/C,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtE,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,aAAa,EAAE;AAC/D,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC5C,SAAS;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE,IAAI;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,QAAQ,EAAE;AACzD,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY;AAClD,YAAY,IAAI,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACvD,YAAY,QAAQ,CAAC,aAAa,CAAC,CAAC;AACpC,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,QAAQ,EAAE;AAC5D,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAC3D,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,WAAW,EAAE,SAAS,EAAE;AACnE,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AAC3D,YAAY,IAAI,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC3C,YAAY,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AACnD,gBAAgB,QAAQ,EAAE,CAAC,KAAK;AAChC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAChD,4BAA4B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAC5D,yBAAyB;AACzB,wBAAwB,IAAI,IAAI,CAAC,cAAc,EAAE;AACjD,4BAA4B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;AAChG,4BAA4B,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3D,4BAA4B,WAAW,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,OAAO,GAAG,WAAW,CAAC;AACzG,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5J,wBAAwB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;AACrC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClD,wBAAwB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1D,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,wBAAwB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;AAC9G,wBAAwB,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACrE,wBAAwB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;AAChF,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,QAAQ,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AAC7C,wBAAwB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxG,wBAAwB,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACvE,wBAAwB,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC7C,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AAC5C,wBAAwB,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpD,4BAA4B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;AAC7H,4BAA4B,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACtD,yBAAyB;AACzB,wBAAwB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AACjD,oBAAoB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACvC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC9C,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;AAC3D,YAAY,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AACnD,gBAAgB,QAAQ,EAAE,CAAC,KAAK;AAChC,oBAAoB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/D,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,wBAAwB,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3D,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClC,wBAAwB,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,QAAQ,EAAE;AACxD,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAChD,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE;AACpF,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;AAC7H,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AACjD,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;AACzC,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY;AACjD,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;AAC1C,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,OAAO,EAAE,IAAI,EAAE;AACtE,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAChE,QAAQ,IAAI,QAAQ,KAAK,SAAS,EAAE;AACpC,YAAY,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,SAAS,EAAE;AAC/D,gBAAgB,IAAI,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;AAClD,gBAAgB,IAAI,OAAO,KAAK,SAAS,EAAE;AAC3C,oBAAoB,IAAI;AACxB,wBAAwB,OAAO,CAAC,OAAO,CAAC,CAAC;AACzC,qBAAqB;AACrB,oBAAoB,OAAO,KAAK,EAAE;AAClC,wBAAwB,IAAI;AAC5B,4BAA4B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1G,yBAAyB;AACzB,wBAAwB,OAAO,WAAW,EAAE;AAC5C,4BAA4B,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AACzE,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,SAAS,EAAE;AACxE,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AAC3C,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AACpC,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE;AAC/E,gBAAgB,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACnF,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,aAAa;AACb,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC/C,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAClD,SAAS;AACT,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,GAAG,EAAE;AACjE,QAAQ,IAAI,MAAM,CAAC;AACnB,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACrC,YAAY,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC7D,SAAS;AACT,aAAa;AACb,YAAY,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC7D,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,SAAS;AACT,QAAQ,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3D,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;AACxD,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,OAAO,WAAW,CAAC,UAAU,OAAO,EAAE;AAC9C,YAAY,IAAI,KAAK,CAAC;AACtB,YAAY,IAAI,KAAK,GAAG,kBAAkB,CAAC,CAAC,EAAE,YAAY;AAC1D,gBAAgB,IAAI,KAAK,EAAE;AAC3B,oBAAoB,KAAK,EAAE,CAAC;AAC5B,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa,CAAC,CAAC;AACf,YAAY,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC,UAAU,GAAG,EAAE;AAC1D,gBAAgB,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;AAC5C,oBAAoB,OAAO,KAAK,EAAE,CAAC;AACnC,iBAAiB;AACjB,gBAAgB,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE;AAC7C,oBAAoB,OAAO,KAAK,EAAE,CAAC;AACnC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,EAAE,KAAK,EAAE,yEAAyE,CAAC,CAAC;AAC7F,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,QAAQ,EAAE;AACxE,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE;AAC5F,YAAY,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,OAAO,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;AAC3J,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,QAAQ,EAAE;AACnE,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7F,YAAY,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;AAC7E,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC;AAC7C,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;AACrD,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACzD,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8GAA8G,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAC,CAAC;AAChQ,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC/C,QAAQ,IAAI,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChH,QAAQ,IAAI,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9F,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1D,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,SAAS,CAAC,kBAAkB,GAAG,YAAY;AAC1D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,gDAAgD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1N,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACvD,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;AAC7C,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACnC,KAAK,CAAC;AACN,IAAI,OAAO,UAAU,CAAC;AACtB,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/D,IAAI,MAAM,IAAI,YAAY;AAC1B,IAAI,SAAS,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;AACzC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjE,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B,SAAS;AACT,QAAQ,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACzD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,CAAC,KAAK,CAAC;AAC1C,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC/B,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,SAAS;AACT,KAAK;AACL,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,IAAI,EAAE;AACjD,QAAQ,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,SAAS,EAAE;AACtE,YAAY,OAAO,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC;AAC3C,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACd,QAAQ,IAAI,WAAW,KAAK,SAAS,EAAE;AACvC,YAAY,OAAO,WAAW,CAAC;AAC/B,SAAS;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;AACjD,YAAY,IAAI,GAAG,KAAK,IAAI,EAAE;AAC9B,gBAAgB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;AACxE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;AACpF,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE;AACrD,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AACvC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;AACjH,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE;AACrD,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AACvC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;AACjH,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;AAC5D,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC7D,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,OAAO,EAAE;AAChD,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACnC,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,OAAO,EAAE;AAChD,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACnC,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,OAAO,EAAE;AAC/C,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAClC,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,OAAO,EAAE;AAC/C,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAClC,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,OAAO,EAAE,GAAG,EAAE;AACrD,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACnC,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,WAAW,EAAE;AAChE,QAAQ,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAQ,IAAI,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,OAAO,CAAC,CAAC;AAC1F,QAAQ,OAAO,QAAQ,IAAI,cAAc,CAAC;AAC1C,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;AACvE,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC;AAC7C,QAAQ,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC;AAChC,YAAY,IAAI,CAAC,CAAC,KAAK,EAAE;AACzB,gBAAgB,OAAO;AACvB,oBAAoB,OAAO;AAC3B,wBAAwB,IAAI;AAC5B,wBAAwB,CAAC,CAAC,KAAK;AAC/B,6BAA6B,KAAK,CAAC,IAAI,CAAC;AACxC,6BAA6B,KAAK,CAAC,CAAC,CAAC;AACrC,6BAA6B,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE;AACzD,YAAY,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzC,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,IAAI;AACpB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACxF,wBAAwB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE;AACjE,4BAA4B,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;AACnD,4BAA4B,MAAM,EAAE,UAAU;AAC9C,4BAA4B,KAAK,EAAE,KAAK;AACxC,yBAAyB,CAAC,CAAC;AAC3B,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,EAAE;AAC3B,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACpC,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC;AAC5B,YAAY,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1C,gBAAgB,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACtC,gBAAgB,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AACxJ,gBAAgB,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACrE,aAAa;AACb,YAAY,IAAI,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrF,YAAY,QAAQ,KAAK;AACzB,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9C,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAC1C,wBAAwB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAClD,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAChD,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,MAAM;AAC3B,oBAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7C,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,MAAM;AAC3B,oBAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7C,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACrD,oBAAoB,MAAM;AAC1B,aAAa;AACb,SAAS;AACT,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,iBAAiB,GAAG,mBAAmB,CAAC;AACnD,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,yBAAyB,GAAG,gBAAgB,CAAC;AACjD,IAAI,2BAA2B,GAAG,SAAS,CAAC;AAC5C,IAAI,6BAA6B,GAAG,WAAW,CAAC;AAChD,IAAI,0BAA0B,GAAG,iBAAiB,CAAC;AACnD,IAAI,wBAAwB,GAAG,eAAe,CAAC;AAC/C,IAAI,4BAA4B,GAAG,mBAAmB,CAAC;AACvD,IAAI,6BAA6B,GAAG,oBAAoB,CAAC;AACzD,IAAI,8BAA8B,GAAG,qBAAqB,CAAC;AAC3D,IAAI,0BAA0B,GAAG,iBAAiB,CAAC;AACnD,IAAI,4BAA4B,GAAG,mBAAmB,CAAC;AACvD,IAAI,yBAAyB,GAAG,gBAAgB,CAAC;AACjD,IAAI,0BAA0B,GAAG,iBAAiB,CAAC;AACnD,IAAI,0BAA0B,GAAG,QAAQ,CAAC;AAC1C;AACA,IAAI,wBAAwB,GAAG;AAC/B,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO;AACf,YAAY,yBAAyB;AACrC,YAAY,2BAA2B;AACvC,YAAY,6BAA6B;AACzC,YAAY,0BAA0B;AACtC,YAAY,wBAAwB;AACpC,YAAY,4BAA4B;AACxC,YAAY,6BAA6B;AACzC,YAAY,8BAA8B;AAC1C,YAAY,0BAA0B;AACtC,YAAY,4BAA4B;AACxC,YAAY,yBAAyB;AACrC,YAAY,0BAA0B;AACtC,YAAY,0BAA0B;AACtC,SAAS,CAAC;AACV,KAAK;AACL,CAAC,CAAC;AACF;AACA,IAAI,OAAO,GAAG,OAAO,CAAC;AACtB;AACA,SAAS,aAAa,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE;AACtD,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACvB,IAAI,IAAI,mBAAmB,CAAC;AAC5B,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;AACxB,QAAQ,IAAI,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;AACtE,QAAQ,IAAI,qBAAqB,EAAE;AACnC,YAAY,IAAI;AAChB,gBAAgB,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACxE,aAAa;AACb,YAAY,OAAO,EAAE,EAAE;AACvB,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,SAAS,aAAa,GAAG;AAC7B,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACnC,QAAQ,IAAI,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC;AAC7C,QAAQ,IAAI,eAAe,GAAG,CAAC,EAAE,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrJ,QAAQ,IAAI,iBAAiB,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC;AAC/G,QAAQ,IAAI,iBAAiB,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC;AAC/G,QAAQ,IAAI,SAAS,GAAG,qBAAqB,CAAC;AAC9C,QAAQ,IAAI,EAAE,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;AACjF,QAAQ,IAAI,YAAY,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC;AACrG,QAAQ,IAAI,MAAM,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;AACzF,QAAQ,IAAI,WAAW,GAAG,CAAC,EAAE,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;AACrJ,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;AAChC,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,KAAK,EAAE;AAChF,YAAY,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAC3C,SAAS;AACT,QAAQ,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,EAAE;AAC7C,YAAY,EAAE,GAAG,SAAS,CAAC;AAC3B,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC;AACvB,QAAQ,IAAI,QAAQ,CAAC;AACrB,QAAQ,IAAI,GAAG,CAAC;AAChB,QAAQ,IAAI,WAAW,CAAC;AACxB,QAAQ,IAAI,MAAM,CAAC;AACnB,QAAQ,IAAI,OAAO,GAAG,cAAc,EAAE,CAAC;AACvC,QAAQ,IAAI,aAAa,GAAG,OAAO,CAAC;AACpC,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AAC7C,YAAY,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACzC,YAAY,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AAC/B,YAAY,IAAI,QAAQ,CAAC,GAAG,EAAE;AAC9B,gBAAgB,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/C,gBAAgB,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7C,aAAa;AACb,YAAY,aAAa,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;AACpG,YAAY,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC;AAChD,SAAS;AACT,aAAa,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;AACjC,YAAY,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AAC9B,YAAY,IAAI,mBAAmB,EAAE;AACrC,gBAAgB,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC;AACtD,gBAAgB,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC;AACpD,gBAAgB,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC;AAC5D,aAAa;AACb,SAAS;AACT,aAAa,IAAI,QAAQ,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,WAAW,EAAE;AACjH,YAAY,QAAQ,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC;AACxG,YAAY,GAAG,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC;AAC5F,YAAY,WAAW,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC;AACpG,YAAY,MAAM,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;AAClG,YAAY,aAAa,GAAG,CAAC,EAAE,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;AACjK,YAAY,UAAU,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC;AAC1G,SAAS;AACT,aAAa,CAAC;AACd,QAAQ,IAAI,WAAW,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,aAAa,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACtJ,QAAQ,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AACnD,QAAQ,IAAI,QAAQ,GAAG;AACvB,YAAY,WAAW,EAAE,aAAa;AACtC,YAAY,eAAe,EAAE,OAAO;AACpC,YAAY,QAAQ,EAAE,QAAQ;AAC9B,YAAY,QAAQ,EAAE,UAAU;AAChC,YAAY,OAAO,EAAE,GAAG;AACxB,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,WAAW,EAAE,WAAW;AACpC,YAAY,GAAG,EAAE,GAAG,CAAC,OAAO,IAAI,OAAO;AACvC,SAAS,CAAC;AACV,QAAQ,IAAI,aAAa,CAAC,QAAQ,EAAE;AACpC,YAAY,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;AACvE,SAAS;AACT,QAAQ,OAAO;AACf,YAAY,QAAQ,EAAE,QAAQ;AAC9B,YAAY,iBAAiB,EAAE,iBAAiB;AAChD,YAAY,EAAE,EAAE,EAAE;AAClB,YAAY,YAAY,EAAE,YAAY;AACtC,YAAY,WAAW,EAAE,WAAW;AACpC,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,eAAe,EAAE,eAAe;AAC5C,YAAY,iBAAiB,EAAE,iBAAiB;AAChD,YAAY,WAAW,EAAE,WAAW;AACpC,SAAS,CAAC;AACV,KAAK;AACL,IAAI,SAAS,WAAW,GAAG;AAC3B,QAAQ,IAAI,OAAO,aAAa,CAAC,QAAQ,KAAK,WAAW,EAAE;AAC3D,YAAY,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,OAAO,aAAa,CAAC,QAAQ,KAAK,SAAS,IAAI,aAAa,CAAC,QAAQ,EAAE;AACnF,YAAY,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,OAAO,aAAa,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACxD,YAAY,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChG,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,SAAS,cAAc,GAAG;AAC9B,QAAQ,IAAI,aAAa,CAAC,WAAW,EAAE;AACvC,YAAY,OAAO,aAAa,CAAC,WAAW,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,OAAO,QAAQ,CAAC,eAAe,CAAC;AAC5C,SAAS;AACT,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,WAAW,EAAE;AAC3F,YAAY,OAAO,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,GAAG,GAAG,OAAO,EAAE,CAAC;AAC5B,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;AAC5B,YAAY,IAAI,mBAAmB,EAAE;AACrC,gBAAgB,OAAO,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAClE,aAAa;AACb,YAAY,OAAO,QAAQ,GAAG,GAAG,CAAC;AAClC,SAAS;AACT,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AAC9E,YAAY,OAAO,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,IAAI,SAAS,OAAO,GAAG;AACvB,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACvB,QAAQ,IAAI,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE;AACpD,YAAY,OAAO;AACnB,gBAAgB,KAAK,EAAE,aAAa,CAAC,IAAI;AACzC,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,IAAI,aAAa,CAAC,IAAI,EAAE;AAChC,YAAY,OAAO,aAAa,CAAC,IAAI,CAAC;AACtC,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,OAAO,EAAE;AAClF,YAAY,OAAO;AACnB,gBAAgB,YAAY,EAAE,mBAAmB,CAAC,OAAO;AACzD,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,IAAI,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,MAAM,CAAC,EAAE,GAAG,aAAa,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,aAAa,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE;AACxQ,YAAY,OAAO;AACnB,gBAAgB,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;AACtD,aAAa,CAAC;AACd,SAAS;AACT,KAAK;AACL,IAAI,SAAS,SAAS,GAAG;AACzB,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;AACnB,QAAQ,IAAI,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;AAC1C,QAAQ,IAAI,YAAY,GAAG,MAAM,CAAC;AAClC,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,MAAM,GAAG,YAAY,CAAC;AAClC,SAAS;AACT,QAAQ,IAAI,cAAc,CAAC;AAC3B,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,cAAc,GAAG,QAAQ,CAAC,eAAe,CAAC;AACtD,SAAS;AACT,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACxC,YAAY,OAAO,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,KAAK,CAAC,GAAG,cAAc,GAAG,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACtI,SAAS;AACT,QAAQ,OAAO;AACf,YAAY,OAAO,EAAE,CAAC,EAAE,GAAG,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,KAAK,CAAC,GAAG,cAAc,GAAG,MAAM,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,YAAY;AAChK,YAAY,OAAO,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,YAAY;AACxF,SAAS,CAAC;AACV,KAAK;AACL,IAAI,IAAI,UAAU,GAAG,aAAa,EAAE,CAAC;AACrC,IAAI,IAAI,WAAW,GAAG,cAAc,EAAE,CAAC;AACvC,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACvC,QAAQ,IAAI,WAAW,GAAG,MAAM,CAAC;AACjC,QAAQ,IAAI,oBAAoB,GAAG,WAAW,CAAC,aAAa;AAC5D,YAAY,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC;AACjH,YAAY,CAAC,EAAE,GAAG,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;AACtJ,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,WAAW,GAAG,oBAAoB,CAAC;AAC/C,SAAS;AACT,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,GAAG,EAAE,CAAC,EAAE,GAAG,aAAa,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK;AAC5E,QAAQ,WAAW,EAAE,WAAW;AAChC,QAAQ,IAAI,EAAE,OAAO,EAAE;AACvB,QAAQ,MAAM,EAAE,SAAS,EAAE;AAC3B,QAAQ,UAAU,EAAE,UAAU;AAC9B,QAAQ,OAAO,EAAE,CAAC,EAAE,GAAG,aAAa,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI;AACnF,QAAQ,QAAQ,EAAE,WAAW,EAAE;AAC/B,QAAQ,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,OAAO;AACvC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;AACjE,QAAQ,YAAY,EAAE,aAAa,CAAC,YAAY;AAChD,KAAK,CAAC;AACN,CAAC;AACD;AACA,IAAI,cAAc,IAAI,YAAY;AAClC,IAAI,SAAS,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE;AACtE,QAAQ,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAClC,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACvC,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,cAAc,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;AACxD,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5D,KAAK,CAAC;AACN,IAAI,cAAc,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;AACpD,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACrD,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACjC,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK,CAAC;AACN,IAAI,OAAO,cAAc,CAAC;AAC1B,CAAC,EAAE,CAAC,CAAC;AACL;AACA,IAAI,uBAAuB,GAAG,EAAE,CAAC;AACjC,IAAI,gBAAgB,GAAG;AACvB,EAAE,IAAI,OAAO,EAAE,EAAE,OAAO,uBAAuB,CAAC,EAAE;AAClD,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,uBAAuB,GAAG,CAAC,CAAC,EAAE;AAChD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;AAC5B;AACA,CAAC,IAAI,gBAAgB,GAAG,GAAG,CAAC;AAC5B;AACA;AACA,CAAC,IAAI,cAAc,GAAG,2BAA2B,CAAC;AAClD;AACA;AACA,CAAC,IAAI,gBAAgB,GAAG,gBAAgB,CAAC;AACzC;AACA;AACA,CAAC,IAAI,OAAO,GAAG,oBAAoB;AACnC,KAAK,QAAQ,GAAG,gBAAgB;AAChC,KAAK,OAAO,GAAG,kBAAkB;AACjC,KAAK,OAAO,GAAG,eAAe;AAC9B,KAAK,QAAQ,GAAG,gBAAgB;AAChC,KAAK,OAAO,GAAG,mBAAmB;AAClC,KAAK,MAAM,GAAG,4BAA4B;AAC1C,KAAK,MAAM,GAAG,cAAc;AAC5B,KAAK,SAAS,GAAG,iBAAiB;AAClC,KAAK,SAAS,GAAG,iBAAiB;AAClC,KAAK,UAAU,GAAG,kBAAkB;AACpC,KAAK,SAAS,GAAG,iBAAiB;AAClC,KAAK,MAAM,GAAG,cAAc;AAC5B,KAAK,SAAS,GAAG,iBAAiB;AAClC,KAAK,SAAS,GAAG,iBAAiB;AAClC,KAAK,UAAU,GAAG,kBAAkB,CAAC;AACrC;AACA,CAAC,IAAI,cAAc,GAAG,sBAAsB;AAC5C,KAAK,WAAW,GAAG,mBAAmB;AACtC,KAAK,UAAU,GAAG,uBAAuB;AACzC,KAAK,UAAU,GAAG,uBAAuB;AACzC,KAAK,OAAO,GAAG,oBAAoB;AACnC,KAAK,QAAQ,GAAG,qBAAqB;AACrC,KAAK,QAAQ,GAAG,qBAAqB;AACrC,KAAK,QAAQ,GAAG,qBAAqB;AACrC,KAAK,eAAe,GAAG,4BAA4B;AACnD,KAAK,SAAS,GAAG,sBAAsB;AACvC,KAAK,SAAS,GAAG,sBAAsB,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,YAAY,GAAG,qBAAqB,CAAC;AAC1C;AACA;AACA,CAAC,IAAI,OAAO,GAAG,MAAM,CAAC;AACtB;AACA;AACA,CAAC,IAAI,YAAY,GAAG,6BAA6B,CAAC;AAClD;AACA;AACA,CAAC,IAAI,QAAQ,GAAG,kBAAkB,CAAC;AACnC;AACA;AACA,CAAC,IAAI,aAAa,GAAG,EAAE,CAAC;AACxB,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC;AACjD,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC;AAC3D,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC;AAChD,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC;AACtD,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC;AACjD,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;AAChD,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC;AACpD,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;AACjD,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC;AACpD,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,eAAe,CAAC;AACzD,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;AAC5D,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC;AACjD,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;AACnC;AACA;AACA,CAAC,IAAI,UAAU,GAAG,OAAO,cAAc,IAAI,QAAQ,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,MAAM,IAAI,cAAc,CAAC;AAC5H;AACA;AACA,CAAC,IAAI,QAAQ,GAAG,OAAO,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC;AAClF;AACA;AACA,CAAC,IAAI,IAAI,GAAG,UAAU,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;AAChE;AACA;AACA,CAAC,IAAI,WAAW,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC;AAC3D;AACA;AACA,CAAC,IAAI,UAAU,GAAG,WAAW,IAAI,QAAQ,IAAI,QAAQ,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC;AAC9F;AACA;AACA,CAAC,IAAI,aAAa,GAAG,UAAU,IAAI,UAAU,CAAC,OAAO,KAAK,WAAW,CAAC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE;AACjC;AACA,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,GAAG,OAAO,GAAG,CAAC;AACd,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;AAClC;AACA,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAClB,GAAG,OAAO,GAAG,CAAC;AACd,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE;AACrC,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACzC;AACA,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC5B,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,EAAE;AACzD,OAAO,MAAM;AACb,MAAM;AACN,IAAI;AACJ,GAAG,OAAO,KAAK,CAAC;AAChB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE;AACnC,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM;AAC7B,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC7B;AACA,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC5B,KAAK,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3C,IAAI;AACJ,GAAG,OAAO,KAAK,CAAC;AAChB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE;AAC/D,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACzC;AACA,GAAG,IAAI,SAAS,IAAI,MAAM,EAAE;AAC5B,KAAK,WAAW,GAAG,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AAClC,IAAI;AACJ,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC5B,KAAK,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACrE,IAAI;AACJ,GAAG,OAAO,WAAW,CAAC;AACtB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE;AACjC,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB;AACA,GAAG,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE;AACvB,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrC,IAAI;AACJ,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;AAChC,GAAG,OAAO,MAAM,IAAI,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACnD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,KAAK,EAAE;AAC9B;AACA;AACA,GAAG,IAAI,MAAM,GAAG,KAAK,CAAC;AACtB,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,CAAC,QAAQ,IAAI,UAAU,EAAE;AAC7D,KAAK,IAAI;AACT,OAAO,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;AAC/B,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE;AACnB,IAAI;AACJ,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,GAAG,EAAE;AAC1B,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC;AACA,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE,GAAG,EAAE;AACpC,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACpC,IAAI,CAAC,CAAC;AACN,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE;AACnC,GAAG,OAAO,SAAS,GAAG,EAAE;AACxB,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,IAAI,CAAC;AACL,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,GAAG,EAAE;AAC1B,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC;AACA,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE;AAC/B,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,CAAC,CAAC;AACN,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA,CAAC,IAAI,UAAU,GAAG,KAAK,CAAC,SAAS;AACjC,KAAK,SAAS,GAAG,QAAQ,CAAC,SAAS;AACnC,KAAK,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;AACpC;AACA;AACA,CAAC,IAAI,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC7C;AACA;AACA,CAAC,IAAI,UAAU,IAAI,WAAW;AAC9B,GAAG,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AAC5F,GAAG,OAAO,GAAG,IAAI,gBAAgB,GAAG,GAAG,IAAI,EAAE,CAAC;AAC9C,EAAE,EAAE,CAAC,CAAC;AACN;AACA;AACA,CAAC,IAAI,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC;AACvC;AACA;AACA,CAAC,IAAI,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC;AAC3C;AACA;AACA,CAAC,IAAI,UAAU,GAAG,MAAM,CAAC,GAAG;AAC5B,GAAG,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;AAClE,IAAI,OAAO,CAAC,wDAAwD,EAAE,OAAO,CAAC,GAAG,GAAG;AACpF,EAAE,CAAC;AACH;AACA;AACA,CAAC,IAAI,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS;AACrD,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM;AACzB,KAAK,UAAU,GAAG,IAAI,CAAC,UAAU;AACjC,KAAK,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC;AAC1D,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM;AACjC,KAAK,oBAAoB,GAAG,WAAW,CAAC,oBAAoB;AAC5D,KAAK,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AAChC;AACA;AACA,CAAC,IAAI,gBAAgB,GAAG,MAAM,CAAC,qBAAqB;AACpD,KAAK,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC,QAAQ,GAAG,SAAS;AAC1D,KAAK,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/C;AACA;AACA,CAAC,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC;AAC3C,KAAK,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;AACjC,KAAK,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;AACzC,KAAK,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;AACjC,KAAK,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;AACzC,KAAK,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAChD;AACA;AACA,CAAC,IAAI,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC;AAC5C,KAAK,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC;AAClC,KAAK,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC;AAC1C,KAAK,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC;AAClC,KAAK,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3C;AACA;AACA,CAAC,IAAI,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC,SAAS,GAAG,SAAS;AACxD,KAAK,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE;AACxB,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C;AACA,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC5B,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,GAAG;AACtB,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,GAAG,EAAE;AAC1B,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE;AACvB,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC5B,GAAG,IAAI,YAAY,EAAE;AACrB,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,KAAK,OAAO,MAAM,KAAK,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC;AAC3D,IAAI;AACJ,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACjE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE;AACvB,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC5B,GAAG,OAAO,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAClF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AAC9B,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC5B,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,KAAK,KAAK,SAAS,IAAI,cAAc,GAAG,KAAK,CAAC;AAC9E,GAAG,OAAO,IAAI,CAAC;AACf,EAAE;AACF;AACA;AACA,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC;AAClC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;AACvC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC;AAC9B,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC;AAC9B,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,OAAO,EAAE;AAC7B,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C;AACA,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC5B,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,cAAc,GAAG;AAC3B,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACtB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE;AAC/B,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;AAC3B,OAAO,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACvC;AACA,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE;AAClB,KAAK,OAAO,KAAK,CAAC;AAClB,IAAI;AACJ,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACnC,GAAG,IAAI,KAAK,IAAI,SAAS,EAAE;AAC3B,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,IAAI,MAAM;AACV,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACjC,IAAI;AACJ,GAAG,OAAO,IAAI,CAAC;AACf,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,GAAG,EAAE;AAC5B,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;AAC3B,OAAO,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACvC;AACA,GAAG,OAAO,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,GAAG,EAAE;AAC5B,GAAG,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE;AACnC,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;AAC3B,OAAO,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACvC;AACA,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE;AAClB,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7B,IAAI,MAAM;AACV,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC5B,IAAI;AACJ,GAAG,OAAO,IAAI,CAAC;AACf,EAAE;AACF;AACA;AACA,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,cAAc,CAAC;AAC5C,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC;AACjD,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC;AACxC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC;AACxC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,OAAO,EAAE;AAC5B,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C;AACA,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC5B,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,aAAa,GAAG;AAC1B,GAAG,IAAI,CAAC,QAAQ,GAAG;AACnB,KAAK,MAAM,EAAE,IAAI,IAAI;AACrB,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,SAAS,CAAC;AAClC,KAAK,QAAQ,EAAE,IAAI,IAAI;AACvB,IAAI,CAAC;AACL,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,cAAc,CAAC,GAAG,EAAE;AAC9B,GAAG,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE;AAC3B,GAAG,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE;AAC3B,GAAG,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;AAClC,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACzC,GAAG,OAAO,IAAI,CAAC;AACf,EAAE;AACF;AACA;AACA,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,aAAa,CAAC;AAC1C,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC;AAC/C,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW,CAAC;AACtC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW,CAAC;AACtC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW,CAAC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,KAAK,CAAC,OAAO,EAAE;AACzB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AAC1C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,GAAG;AACvB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC;AACjC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE;AAC3B,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;AACvC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE;AACxB,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE;AACxB,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE;AAC/B,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC7B,GAAG,IAAI,KAAK,YAAY,SAAS,EAAE;AACnC,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC;AAChC,KAAK,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAC,EAAE;AACxD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAChC,OAAO,OAAO,IAAI,CAAC;AACnB,MAAM;AACN,KAAK,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjD,IAAI;AACJ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACzB,GAAG,OAAO,IAAI,CAAC;AACf,EAAE;AACF;AACA;AACA,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC;AACpC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;AACzC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;AAChC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;AAChC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;AAC1C;AACA;AACA,GAAG,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC;AACrD,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC;AACtC,OAAO,EAAE,CAAC;AACV;AACA,GAAG,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM;AAC7B,OAAO,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;AAC9B;AACA,GAAG,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;AAC1B,KAAK,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;AACtD,SAAS,EAAE,WAAW,KAAK,GAAG,IAAI,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;AACtE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,MAAM;AACN,IAAI;AACJ,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;AAC1C,GAAG,IAAI,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B,GAAG,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACjE,QAAQ,KAAK,KAAK,SAAS,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE;AAClD,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACzB,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE;AACnC,GAAG,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC7B,GAAG,OAAO,MAAM,EAAE,EAAE;AACpB,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACpC,OAAO,OAAO,MAAM,CAAC;AACrB,MAAM;AACN,IAAI;AACJ,GAAG,OAAO,CAAC,CAAC,CAAC;AACb,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE;AACrC,GAAG,OAAO,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;AAC3E,GAAG,IAAI,MAAM,CAAC;AACd,GAAG,IAAI,UAAU,EAAE;AACnB,KAAK,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AACjF,IAAI;AACJ,GAAG,IAAI,MAAM,KAAK,SAAS,EAAE;AAC7B,KAAK,OAAO,MAAM,CAAC;AACnB,IAAI;AACJ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACzB,KAAK,OAAO,KAAK,CAAC;AAClB,IAAI;AACJ,GAAG,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,GAAG,IAAI,KAAK,EAAE;AACd,KAAK,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AACpC,KAAK,IAAI,CAAC,MAAM,EAAE;AAClB,OAAO,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,MAAM;AACN,IAAI,MAAM;AACV,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,SAAS,MAAM,GAAG,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,CAAC;AAClD;AACA,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1B,OAAO,OAAO,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzC,MAAM;AACN,KAAK,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,OAAO,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE;AACpE,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;AAChC,SAAS,OAAO,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC;AACpC,QAAQ;AACR,OAAO,MAAM,GAAG,eAAe,CAAC,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;AACrD,OAAO,IAAI,CAAC,MAAM,EAAE;AACpB,SAAS,OAAO,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9D,QAAQ;AACR,MAAM,MAAM;AACZ,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;AAChC,SAAS,OAAO,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC;AACpC,QAAQ;AACR,OAAO,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC9D,MAAM;AACN,IAAI;AACJ;AACA,GAAG,KAAK,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;AAChC,GAAG,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAClC,GAAG,IAAI,OAAO,EAAE;AAChB,KAAK,OAAO,OAAO,CAAC;AACpB,IAAI;AACJ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5B;AACA,GAAG,IAAI,CAAC,KAAK,EAAE;AACf,KAAK,IAAI,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1D,IAAI;AACJ,GAAG,SAAS,CAAC,KAAK,IAAI,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,EAAE;AACrD,KAAK,IAAI,KAAK,EAAE;AAChB,OAAO,GAAG,GAAG,QAAQ,CAAC;AACtB,OAAO,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7B,MAAM;AACN;AACA,KAAK,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAClG,IAAI,CAAC,CAAC;AACN,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,KAAK,EAAE;AAC5B,GAAG,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACrD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE;AACxD,GAAG,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjC,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5E,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,KAAK,EAAE;AAC5B,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,KAAK,EAAE;AAC9B,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC5C,KAAK,OAAO,KAAK,CAAC;AAClB,IAAI;AACJ,GAAG,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,UAAU,GAAG,YAAY,CAAC;AACxF,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,MAAM,EAAE;AAC3B,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;AAC7B,KAAK,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/B,IAAI;AACJ,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC;AACnB,GAAG,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;AACnC,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,aAAa,EAAE;AACnE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,MAAM;AACN,IAAI;AACJ,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE;AACtC,GAAG,IAAI,MAAM,EAAE;AACf,KAAK,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AAC3B,IAAI;AACJ,GAAG,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtD,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvB,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,gBAAgB,CAAC,WAAW,EAAE;AACxC,GAAG,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACpE,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AAC3D,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC1C,GAAG,IAAI,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC7E,GAAG,OAAO,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AACrF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;AAC3C,GAAG,IAAI,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAC3E,GAAG,OAAO,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;AAC/D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE;AAC9B,GAAG,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5E,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACvC,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;AAC3C,GAAG,IAAI,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAC3E,GAAG,OAAO,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;AAC/D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE;AAC9B,GAAG,OAAO,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;AAClE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE;AAC9C,GAAG,IAAI,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;AACjF,GAAG,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AACvF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE;AACnC,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC9B;AACA,GAAG,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACpC,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC5B,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI;AACJ,GAAG,OAAO,KAAK,CAAC;AAChB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE;AACxD,GAAG,MAAM,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC;AAC3B;AACA,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC7B;AACA,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC5B,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5B;AACA,KAAK,IAAI,QAAQ,GAAG,UAAU;AAC9B,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;AAClE,SAAS,SAAS,CAAC;AACnB;AACA,KAAK,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,KAAK,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;AAC/E,IAAI;AACJ,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE;AACtC,GAAG,OAAO,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACzD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,MAAM,EAAE;AAC7B,GAAG,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AACnD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC3B,GAAG,OAAO,SAAS,CAAC,GAAG,CAAC;AACxB,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AACvD,OAAO,IAAI,CAAC,GAAG,CAAC;AAChB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE;AACjC,GAAG,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACrC,GAAG,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS,CAAC;AAClD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,UAAU,GAAG,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,MAAM,GAAG,UAAU,CAAC;AACzB;AACA;AACA;AACA,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW;AACzE,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC;AACvC,MAAM,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,UAAU,CAAC;AACzD,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC;AACvC,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,UAAU,CAAC,EAAE;AACrD,GAAG,MAAM,GAAG,SAAS,KAAK,EAAE;AAC5B,KAAK,IAAI,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5C,SAAS,IAAI,GAAG,MAAM,IAAI,SAAS,GAAG,KAAK,CAAC,WAAW,GAAG,SAAS;AACnE,SAAS,UAAU,GAAG,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AACxD;AACA,KAAK,IAAI,UAAU,EAAE;AACrB,OAAO,QAAQ,UAAU;AACzB,SAAS,KAAK,kBAAkB,EAAE,OAAO,WAAW,CAAC;AACrD,SAAS,KAAK,aAAa,EAAE,OAAO,MAAM,CAAC;AAC3C,SAAS,KAAK,iBAAiB,EAAE,OAAO,UAAU,CAAC;AACnD,SAAS,KAAK,aAAa,EAAE,OAAO,MAAM,CAAC;AAC3C,SAAS,KAAK,iBAAiB,EAAE,OAAO,UAAU,CAAC;AACnD,QAAQ;AACR,MAAM;AACN,KAAK,OAAO,MAAM,CAAC;AACnB,IAAI,CAAC;AACL,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,cAAc,CAAC,KAAK,EAAE;AAChC,GAAG,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM;AAC5B,OAAO,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1C;AACA;AACA,GAAG,IAAI,MAAM,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;AACrF,KAAK,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAChC,KAAK,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAChC,IAAI;AACJ,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE;AAClC,GAAG,OAAO,CAAC,OAAO,MAAM,CAAC,WAAW,IAAI,UAAU,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC1E,OAAO,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACvC,OAAO,EAAE,CAAC;AACV,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE;AACzD,GAAG,IAAI,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,GAAG,QAAQ,GAAG;AACd,KAAK,KAAK,cAAc;AACxB,OAAO,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACvC;AACA,KAAK,KAAK,OAAO,CAAC;AAClB,KAAK,KAAK,OAAO;AACjB,OAAO,OAAO,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAChC;AACA,KAAK,KAAK,WAAW;AACrB,OAAO,OAAO,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5C;AACA,KAAK,KAAK,UAAU,CAAC,CAAC,KAAK,UAAU,CAAC;AACtC,KAAK,KAAK,OAAO,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,KAAK,QAAQ,CAAC;AAChD,KAAK,KAAK,QAAQ,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,KAAK,SAAS;AACxE,OAAO,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9C;AACA,KAAK,KAAK,MAAM;AAChB,OAAO,OAAO,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAClD;AACA,KAAK,KAAK,SAAS,CAAC;AACpB,KAAK,KAAK,SAAS;AACnB,OAAO,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B;AACA,KAAK,KAAK,SAAS;AACnB,OAAO,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAClC;AACA,KAAK,KAAK,MAAM;AAChB,OAAO,OAAO,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAClD;AACA,KAAK,KAAK,SAAS;AACnB,OAAO,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAClC,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;AACjC,GAAG,MAAM,GAAG,MAAM,IAAI,IAAI,GAAG,gBAAgB,GAAG,MAAM,CAAC;AACvD,GAAG,OAAO,CAAC,CAAC,MAAM;AAClB,MAAM,OAAO,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC;AACtD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,KAAK,EAAE;AAC3B,GAAG,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;AAC3B,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,SAAS;AACxF,QAAQ,KAAK,KAAK,WAAW;AAC7B,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC;AACxB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,IAAI,EAAE;AACzB,GAAG,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,IAAI,CAAC,CAAC;AAC/C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,KAAK,EAAE;AAC7B,GAAG,IAAI,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,WAAW;AACxC,OAAO,KAAK,GAAG,CAAC,OAAO,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC;AAC5E;AACA,GAAG,OAAO,KAAK,KAAK,KAAK,CAAC;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,IAAI,EAAE;AACzB,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE;AACrB,KAAK,IAAI;AACT,OAAO,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE;AACnB,KAAK,IAAI;AACT,OAAO,QAAQ,IAAI,GAAG,EAAE,EAAE;AAC1B,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE;AACnB,IAAI;AACJ,GAAG,OAAO,EAAE,CAAC;AACb,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,KAAK,EAAE;AAC3B,GAAG,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE;AAC3B,GAAG,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC;AAClE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,KAAK,EAAE;AAC7B;AACA,GAAG,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC1E,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC;AAC5F,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,KAAK,EAAE;AAC7B,GAAG,OAAO,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACnC,GAAG,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AACpD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,QAAQ,GAAG,cAAc,IAAI,SAAS,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,KAAK,EAAE;AAC5B;AACA;AACA,GAAG,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAC/D,GAAG,OAAO,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,CAAC;AAC1C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,KAAK,EAAE;AAC1B,GAAG,OAAO,OAAO,KAAK,IAAI,QAAQ;AAClC,KAAK,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,gBAAgB,CAAC;AAC/D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,KAAK,EAAE;AAC1B,GAAG,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;AAC3B,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC;AAC9D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,KAAK,EAAE;AAC9B,GAAG,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;AAC9C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE;AACvB,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,GAAG;AACtB,GAAG,OAAO,EAAE,CAAC;AACb,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,GAAG;AACtB,GAAG,OAAO,KAAK,CAAC;AAChB,EAAE;AACF;AACA,CAAC,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;AAC5B,CAAC,EAAE,gBAAgB,EAAE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"} \ No newline at end of file diff --git a/browser-client-vanilla-js/readme.md b/browser-client-vanilla-js/readme.md new file mode 100644 index 0000000..2090320 --- /dev/null +++ b/browser-client-vanilla-js/readme.md @@ -0,0 +1 @@ +## IO.Connect Browser Client Vanilla JS Template \ No newline at end of file diff --git a/browser-platform-dev-react-seed/.gitignore b/browser-platform-dev-react-seed/.gitignore new file mode 100644 index 0000000..d5dcfd5 --- /dev/null +++ b/browser-platform-dev-react-seed/.gitignore @@ -0,0 +1,28 @@ +node_modules/* +*.tgz +.idea/ +.vscode/ +.history/ +*.swp +dist/* +build/* +coverage/* +.DS_Store +.cache +.eslintcache +.parcel-cache + +yarn.lock +*.log +.changelog/* +lerna-debug.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +react-client/node_modules/* +react-client/build/* +workspace-platform/node_modules/* +workspace-platform/build/* + +workspace-platform/src/config.json \ No newline at end of file diff --git a/browser-platform-dev-react-seed/gulpfile.js b/browser-platform-dev-react-seed/gulpfile.js new file mode 100644 index 0000000..f7ec208 --- /dev/null +++ b/browser-platform-dev-react-seed/gulpfile.js @@ -0,0 +1,87 @@ +const { series, parallel } = require("gulp"); +const spawn = require("child_process").spawn; +const copyFile = require("node:fs/promises").copyFile; +const rimraf = require("rimraf"); +const path = require("path"); + +const clientsSources = ["workspace-platform/", "react-client/"]; +const builtClients = ["intents-resolver-ui/"]; + +const originalStdoutWrite = process.stdout.write.bind(process.stdout); + +process.stdout.write = (chunk, encoding, callback) => { + if (chunk === '\x1B[2J\x1B[0f' || chunk === '\x1B[2J\x1B[3J\x1B[H') { + return; + } + + return originalStdoutWrite(chunk, encoding, callback); +}; + + +const installAllDeps = (client) => async () => { + return new Promise((resolve, reject) => { + console.log(`Installing dependencies in ${client}`); + + spawn("npm", ["install"], { cwd: `${client}`, stdio: "inherit", shell: true }).on("close", resolve).on("error", reject); + }); +}; + +const clearNodeModules = (client) => () => { + return new Promise((resolve, reject) => { + + const node_modulesPath = path.join(__dirname, client, "node_modules", "*"); + + console.log(`Deleting: ${node_modulesPath}`); + + rimraf(node_modulesPath, (err) => { + + if (err) { + return reject(err); + } + + console.log(`Deleted: ${node_modulesPath}`); + + resolve() + }); + }); +}; + +const buildProdApp = (client) => async () => { + return new Promise((resolve, reject) => { + console.log(`Building prod bundle of ${client}`); + + const child = spawn("npm", ["run", "build"], { cwd: `${client}`, shell: true }).on("close", resolve).on("error", reject); + + child.stdout.on('data', process.stdout.write); + }); +}; + +const startApp = (client) => async () => { + return new Promise((resolve, reject) => { + console.log(`Starting ${client}`); + + const child = spawn("npm", ["start"], { cwd: `${client}`, shell: true }).on("close", resolve).on("error", reject); + + child.stdout.on('data', process.stdout.write); + }); +}; + +const startBuildClient = (client) => async () => { + return new Promise((resolve, reject) => { + console.log(`Starting ${client}`); + + spawn("http-server", [`${client}`, "-p", "4221"], { stdio: "inherit", shell: true }).on("close", resolve).on("error", reject); + }); +}; + +exports.bootstrap = series( + parallel(clientsSources.map((client) => clearNodeModules(client))), + parallel(clientsSources.map((client) => installAllDeps(client))), +); + +exports.build = parallel(clientsSources.map((client) => buildProdApp(client))); + +exports.start = parallel( + ...clientsSources.map((client) => startApp(client)), + ...builtClients.map((client) => startBuildClient(client)) +); diff --git a/browser-platform-dev-react-seed/intents-resolver-ui/asset-manifest.json b/browser-platform-dev-react-seed/intents-resolver-ui/asset-manifest.json new file mode 100644 index 0000000..4dc242a --- /dev/null +++ b/browser-platform-dev-react-seed/intents-resolver-ui/asset-manifest.json @@ -0,0 +1,15 @@ +{ + "files": { + "main.css": "./static/css/main.20e683fe.css", + "main.js": "./static/js/main.37f9cff4.js", + "static/js/787.17e09523.chunk.js": "./static/js/787.17e09523.chunk.js", + "index.html": "./index.html", + "main.20e683fe.css.map": "./static/css/main.20e683fe.css.map", + "main.37f9cff4.js.map": "./static/js/main.37f9cff4.js.map", + "787.17e09523.chunk.js.map": "./static/js/787.17e09523.chunk.js.map" + }, + "entrypoints": [ + "static/css/main.20e683fe.css", + "static/js/main.37f9cff4.js" + ] +} \ No newline at end of file diff --git a/browser-platform-dev-react-seed/intents-resolver-ui/favicon.ico b/browser-platform-dev-react-seed/intents-resolver-ui/favicon.ico new file mode 100644 index 0000000..3e9951d Binary files /dev/null and b/browser-platform-dev-react-seed/intents-resolver-ui/favicon.ico differ diff --git a/browser-platform-dev-react-seed/intents-resolver-ui/index.html b/browser-platform-dev-react-seed/intents-resolver-ui/index.html new file mode 100644 index 0000000..cbb7c81 --- /dev/null +++ b/browser-platform-dev-react-seed/intents-resolver-ui/index.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/browser-platform-dev-react-seed/intents-resolver-ui/manifest.json b/browser-platform-dev-react-seed/intents-resolver-ui/manifest.json new file mode 100644 index 0000000..e212ad1 --- /dev/null +++ b/browser-platform-dev-react-seed/intents-resolver-ui/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "io.Connect Intents Resolver UI", + "name": "io.Connect Intents Resolver UI", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} \ No newline at end of file diff --git a/browser-platform-dev-react-seed/intents-resolver-ui/robots.txt b/browser-platform-dev-react-seed/intents-resolver-ui/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/browser-platform-dev-react-seed/intents-resolver-ui/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/browser-platform-dev-react-seed/intents-resolver-ui/static/css/main.20e683fe.css b/browser-platform-dev-react-seed/intents-resolver-ui/static/css/main.20e683fe.css new file mode 100644 index 0000000..fbc6c95 --- /dev/null +++ b/browser-platform-dev-react-seed/intents-resolver-ui/static/css/main.20e683fe.css @@ -0,0 +1,12 @@ +body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--t42-font-family:"Montserrat","Helvetica Neue",Arial,sans-serif;--t42-font-size:0.75rem;--bs-gutter-x:0.938rem;--primary:#1c89ea;--secondary:#616161;--success:#43a047;--info:#616161;--warning:#f9a825;--danger:#ff511f;--light:#616161;--dark:#616161;--white:#fff}.dark{--t42-bg-light-base:0,0%;--t42-bg-light-l:18%;--t42-bg-light:45,45,45;--t42-bg-mid:37,37,37;--t42-bg-dark:30,30,30;--t42-content-color-base:0,0%;--t42-content-color:#bababa;--t42-content-color-l:73%;--t42-content-color-muted:hsl(var(--t42-content-color-base),63%);--t42-content-color-disabled:hsl(var(--t42-content-color-base),43%);--t42-color-opacity-025:hsla(var(--t42-content-color-base),100%,0.025);--t42-color-opacity-05:hsla(var(--t42-content-color-base),100%,0.05);--t42-color-opacity-10:hsla(var(--t42-content-color-base),100%,0.1);--t42-color-opacity-20:hsla(var(--t42-content-color-base),100%,0.2);--t42-color-opacity-30:hsla(var(--t42-content-color-base),100%,0.3);--t42-link-color:hsl(var(--t42-content-color-base),100%);--t42-shadow:0 0 12px 0 hsla(var(--t42-content-color-base),0%,0.15);--t42-border:0.0625rem solid var(--t42-color-opacity-10);--t42-logo-icon:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNzAuMSAxMTcuOCI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE2Ny43IDUzLjIgMTE2LjggMi4zYTcuOSA3LjkgMCAwIDAtNS42LTIuMyA4LjEgOC4xIDAgMCAwLTUuNyAyLjNsLTkuOSAxMGExLjkgMS45IDAgMCAwIDAgMi44bDcgNy4xYTIuMSAyLjEgMCAwIDAgMi45IDBsNC4zLTQuM2ExLjkgMS45IDAgMCAxIDIuOCAwbDM5LjYgMzkuNmExLjkgMS45IDAgMCAxIDAgMi44bC0zOS42IDM5LjZhMS45IDEuOSAwIDAgMS0yLjggMEw3MC4yIDYwLjNhMS45IDEuOSAwIDAgMSAwLTIuOGw0LTRhMi4xIDIuMSAwIDAgMCAwLTIuOWwtNy4xLTdhMS45IDEuOSAwIDAgMC0yLjggMGwtOS43IDkuNmE4IDggMCAwIDAgMCAxMS4zbDUwLjkgNTAuOWE4LjIgOC4yIDAgMCAwIDUuNyAyLjQgOCA4IDAgMCAwIDUuNi0yLjRsNTAuOS01MC45YTcuOSA3LjkgMCAwIDAgMC0xMS4zWiIvPjxwYXRoIGZpbGw9IiMxYzg5ZWEiIGQ9Im0yLjMgNjQuNSA1MC45IDUwLjlhOC4yIDguMiAwIDAgMCA1LjcgMi40IDggOCAwIDAgMCA1LjYtMi40bDEwLTkuOWEyLjEgMi4xIDAgMCAwIDAtMi45bC03LjEtN2ExLjkgMS45IDAgMCAwLTIuOCAwbC00LjMgNC4zYTEuOSAxLjkgMCAwIDEtMi44IDBMMTcuOSA2MC4zYTEuOSAxLjkgMCAwIDEgMC0yLjhsMzkuNi0zOS42YTEuOSAxLjkgMCAwIDEgMi44IDBsMzkuNiAzOS42YTEuOSAxLjkgMCAwIDEgMCAyLjhsLTQgNGExLjkgMS45IDAgMCAwIDAgMi44bDcgNy4xYTIuMSAyLjEgMCAwIDAgMi45IDBsOS42LTkuN2E3LjkgNy45IDAgMCAwIDAtMTEuM0w2NC41IDIuM0E3LjkgNy45IDAgMCAwIDU4LjkgMGE4LjEgOC4xIDAgMCAwLTUuNyAyLjNMMi4zIDUzLjJhOCA4IDAgMCAwIDAgMTEuM1oiLz48L3N2Zz4=);--t42-icon-color:var(--t42-link-color);--t42-list-group-hover-bg-special:hsla(var(--t42-content-color-base),100%,0.065);--backdrop-filter:blur(5px) saturate(200%);--accordion-filter:invert(1) brightness(1);--filter-close:invert(1);--t42-body:rgb(var(--t42-bg-dark));--pink:#00aac8;--t42-link-hover-color:hsl(var(--t42-bg-light-base),100%);--t42-link-hover-bg:var(--t42-color-opacity-05);--t42-link-active-bg:var(--t42-color-opacity-10);--t42-input-bg:rgb(var(--t42-bg-dark));--t42-input-disabled-bg:Hsla(var(--t42-content-color-base),100%,0.075);--t42-tooltip-bg:rgba(var(--t42-bg-dark),0.85);--t42-modal-bg:rgba(var(--t42-bg-light),0.75);--t42-table-active-bg:#ffffff1a;--t42-select-indicator:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiNFRUUiIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTIuNSA1LjVjLjQtLjQgMS0uNSAxLjYgMEw4IDkuMmwzLjktMy43Yy41LS41IDEuMS0uNCAxLjYgMCAuNC40LjQgMS4yIDAgMS42LS40LjQtNC43IDQuNS00LjcgNC41LS4yLjItLjUuMy0uOC4zcy0uNi0uMS0uOC0uM2MwIDAtNC4zLTQuMS00LjctNC41cy0uNC0xLjIgMC0xLjZ6Ii8+PC9zdmc+)}.light{--t42-bg-light-base:0,0%;--t42-bg-light-l:100%;--t42-bg-light:255,255,255;--t42-bg-mid:250,250,250;--t42-bg-dark:245,245,245;--t42-content-color-base:0,0%;--t42-content-color:#757575;--t42-content-color-l:46%;--t42-content-color-muted:hsl(var(--t42-content-color-base),66%);--t42-color-opacity-025:hsla(var(--t42-content-color-base),0%,0.025);--t42-color-opacity-05:hsla(var(--t42-content-color-base),0%,0.05);--t42-color-opacity-10:hsla(var(--t42-content-color-base),0%,0.075);--t42-color-opacity-30:hsla(var(--t42-content-color-base),0%,0.1);--t42-color-opacity-20:hsla(var(--t42-content-color-base),0%,0.2);--t42-link-color:hsl(var(--t42-content-color-base),5%);--t42-shadow:0 0 12px 0 hsla(var(--t42-content-color-base),0%,0.05);--t42-border:0.0625rem solid var(--t42-color-opacity-10);--t42-logo-icon:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNzAuMSAxMTcuOCI+PHBhdGggZmlsbD0iIzYwNjM2OSIgZD0iTTE2Ny43IDUzLjIgMTE2LjggMi4zYTcuOSA3LjkgMCAwIDAtNS42LTIuMyA4LjEgOC4xIDAgMCAwLTUuNyAyLjNsLTkuOSAxMGExLjkgMS45IDAgMCAwIDAgMi44bDcgNy4xYTIuMSAyLjEgMCAwIDAgMi45IDBsNC4zLTQuM2ExLjkgMS45IDAgMCAxIDIuOCAwbDM5LjYgMzkuNmExLjkgMS45IDAgMCAxIDAgMi44bC0zOS42IDM5LjZhMS45IDEuOSAwIDAgMS0yLjggMEw3MC4yIDYwLjNhMS45IDEuOSAwIDAgMSAwLTIuOGw0LTRhMi4xIDIuMSAwIDAgMCAwLTIuOWwtNy4xLTdhMS45IDEuOSAwIDAgMC0yLjggMGwtOS43IDkuNmE4IDggMCAwIDAgMCAxMS4zbDUwLjkgNTAuOWE4LjIgOC4yIDAgMCAwIDUuNyAyLjQgOCA4IDAgMCAwIDUuNi0yLjRsNTAuOS01MC45YTcuOSA3LjkgMCAwIDAgMC0xMS4zWiIvPjxwYXRoIGZpbGw9IiMxYzg5ZWEiIGQ9Im0yLjMgNjQuNSA1MC45IDUwLjlhOC4yIDguMiAwIDAgMCA1LjcgMi40IDggOCAwIDAgMCA1LjYtMi40bDEwLTkuOWEyLjEgMi4xIDAgMCAwIDAtMi45bC03LjEtN2ExLjkgMS45IDAgMCAwLTIuOCAwbC00LjMgNC4zYTEuOSAxLjkgMCAwIDEtMi44IDBMMTcuOSA2MC4zYTEuOSAxLjkgMCAwIDEgMC0yLjhsMzkuNi0zOS42YTEuOSAxLjkgMCAwIDEgMi44IDBsMzkuNiAzOS42YTEuOSAxLjkgMCAwIDEgMCAyLjhsLTQgNGExLjkgMS45IDAgMCAwIDAgMi44bDcgNy4xYTIuMSAyLjEgMCAwIDAgMi45IDBsOS42LTkuN2E3LjkgNy45IDAgMCAwIDAtMTEuM0w2NC41IDIuM0E3LjkgNy45IDAgMCAwIDU4LjkgMGE4LjEgOC4xIDAgMCAwLTUuNyAyLjNMMi4zIDUzLjJhOCA4IDAgMCAwIDAgMTEuM1oiLz48L3N2Zz4=);--t42-icon-color:Hsl(var(--t42-content-color-base),38%);--t42-list-group-hover-bg-special:hsla(var(--t42-content-color-base),95%,0.065);--backdrop-filter:blur(5px) saturate(200%);--accordion-filter:brightness(0%);--filter-close:invert(0);--t42-body:rgb(var(--t42-bg-mid));--t42-link-hover-color:hsl(var(--t42-bg-light-base),0%);--t42-link-hover-bg:hsl(var(--t42-content-color-base),95%);--t42-link-active-bg:hsl(var(--t42-content-color-base),90%);--t42-input-bg:rgb(var(--t42-bg-light));--t42-input-disabled-bg:var(--t42-color-opacity-10);--t42-tooltip-bg:rgba(var(--t42-bg-light),0.95);--t42-modal-bg:rgba(var(--t42-bg-light),0.95);--t42-table-active-bg:rgba(0,0,0,.025);--t42-select-indicator:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiM2MTYxNjEiIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTIuNSA1LjVjLjQtLjQgMS0uNSAxLjYgMEw4IDkuMmwzLjktMy43Yy41LS41IDEuMS0uNCAxLjYgMCAuNC40LjQgMS4yIDAgMS42LS40LjQtNC43IDQuNS00LjcgNC41LS4yLjItLjUuMy0uOC4zcy0uNi0uMS0uOC0uM2MwIDAtNC4zLTQuMS00LjctNC41cy0uNC0xLjIgMC0xLjZ6Ii8+PC9zdmc+)}*,:after,:before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);background-color:#fff;background-color:var(--bs-body-bg);color:#212529;color:var(--bs-body-color);font-family:var(--bs-body-font-family);font-size:.75rem;font-size:var(--bs-body-font-size);font-weight:400;font-weight:var(--bs-body-font-weight);line-height:1.5;line-height:var(--bs-body-line-height);margin:0;text-align:var(--bs-body-text-align)}hr{background-color:currentColor;border:0;color:inherit;margin:1rem 0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{color:var(--t42-link-color);font-weight:500;line-height:1.2;margin-bottom:.5rem;margin-top:0}h1{font-size:calc(1.26563rem + .1875vw)}@media (min-width:1200px){h1{font-size:1.40625rem}}h2{font-size:1.125rem}h3{font-size:.98475rem}h4{font-size:.84375rem}h5{font-size:.75rem}h6{font-size:.7035rem}p{margin-bottom:1rem;margin-top:0}abbr[data-bs-original-title],abbr[title]{cursor:help;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit;margin-bottom:1rem}ol,ul{padding-left:2rem}dl,ol,ul{margin-bottom:1rem;margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{background-color:#1c89ea;padding:.2rem .2rem 0}sub,sup{font-size:.75em;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--t42-link-color);text-decoration:underline}a:hover{color:var(--t42-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{direction:ltr;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--bs-font-monospace);font-size:1em;unicode-bidi:bidi-override}pre{color:var(--t42-content-color);display:block;margin-bottom:1rem;margin-top:0;overflow:auto}pre,pre code{font-size:inherit}pre code{color:inherit;word-break:normal}code{word-wrap:break-word;color:#469eb9;font-size:inherit}a>code{color:inherit}kbd{background-color:#212529;border-radius:.25rem;color:#fff;font-size:inherit;padding:.2rem .4rem}kbd kbd{font-size:1em;font-weight:700;padding:0}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{border-collapse:collapse;caption-side:bottom}caption{color:var(--t42-content-color-muted);padding-bottom:.25rem;padding-top:.25rem;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border:0 solid;border-color:inherit}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{border-style:none;padding:0}textarea{resize:vertical}fieldset{border:0;margin:0;min-width:0;padding:0}legend{float:left;font-size:calc(1.275rem + .3vw);line-height:inherit;margin-bottom:.5rem;padding:0;width:100%}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}output{display:inline-block}iframe{border:0}summary{cursor:pointer;display:list-item}progress{vertical-align:initial}[hidden]{display:none!important}body{background-color:var(--t42-body);color:var(--t42-content-color);font-family:Montserrat,Helvetica Neue,Arial,sans-serif;font-family:var(--t42-font-family)}a:focus,button:focus,div:focus,span:focus{outline:0}a{text-decoration:none}dt{font-weight:400}::selection{background-color:#1c89ea;background-color:var(--primary);color:#fff;color:var(--white)}::-webkit-scrollbar{height:4px;width:4px}::-webkit-scrollbar-track{background:#0000;border-radius:.25rem}::-webkit-scrollbar-thumb{background:var(--t42-color-opacity-10);border-radius:.25rem}::-webkit-resizer,::-webkit-scrollbar-corner{background:#0000}::-webkit-scrollbar-thumb:window-inactive{background:#0000}::-webkit-scrollbar-thumb:active,::-webkit-scrollbar-thumb:hover{background:Hsla(var(--t42-content-color-base),100%,.05)}.accordion-button{align-items:center;background-color:Rgb(var(--t42-bg-mid));border:0;border-radius:0;color:var(--t42-link-color);display:flex;font-size:.75rem;overflow-anchor:none;padding:1rem 1.25rem;position:relative;text-align:left;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease;width:100%}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){background-color:Rgb(var(--t42-bg-mid));box-shadow:inset 0 -1px 0 var(--t42-color-opacity-10);color:var(--t42-link-color)}.accordion-button:not(.collapsed):after{transform:rotate(-180deg)}.accordion-button:after,.accordion-button:not(.collapsed):after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var(--t42-link-color)'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E")}.accordion-button:after{background-repeat:no-repeat;background-size:1.25rem;content:"";flex-shrink:0;height:1.25rem;margin-left:auto;transition:transform .2s ease-in-out;width:1.25rem}@media (prefers-reduced-motion:reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{border-color:#1c89ea;box-shadow:0 0 0 0 #1c89ea40;outline:0;z-index:3}.accordion-header{margin-bottom:0}.accordion-item{background-color:Rgb(var(--t42-bg-mid));border:1px solid var(--t42-color-opacity-10)}.accordion-item:first-of-type,.accordion-item:first-of-type .accordion-button{border-top-left-radius:0;border-top-right-radius:0}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type,.accordion-item:last-of-type .accordion-button.collapsed,.accordion-item:last-of-type .accordion-collapse{border-bottom-left-radius:0;border-bottom-right-radius:0}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-left:0;border-radius:0;border-right:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.accordion-button:after,.accordion-button:not(.collapsed):after{filter:var(--accordion-filter)}.accordion-button.disabled,.accordion-button:disabled{color:var(--t42-content-color-disabled)}.accordion-button.disabled:after,.accordion-button:disabled:after{opacity:.25}.alert{border:1px solid #0000;border-radius:0;margin-bottom:.5rem;padding:.75rem .875rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:2.625rem}.alert-dismissible .btn-close{padding:.9375rem .875rem;position:absolute;right:0;top:0;z-index:2}.alert-primary{background-color:#d2e7fb;border-color:#bbdcf9;color:#11528c}.alert-primary .alert-link{color:#0e4270}.alert-secondary{background-color:#dfdfdf;border-color:#d0d0d0;color:#3a3a3a}.alert-secondary .alert-link{color:#2e2e2e}.alert-success{background-color:#d9ecda;border-color:#c7e3c8;color:#28602b}.alert-success .alert-link{color:#204d22}.alert-info{background-color:#daecf1;border-color:#c8e2ea;color:#2a5f6f}.alert-info .alert-link{color:#224c59}.alert-warning{background-color:#feeed3;border-color:#fde5be;color:#64430f}.alert-warning .alert-link{color:#50360c}.alert-danger{background-color:#ffdcd2;border-color:#ffcbbc;color:#993113}.alert-danger .alert-link{color:#7a270f}.alert-light{background-color:#dfdfdf;border-color:#d0d0d0;color:#3a3a3a}.alert-light .alert-link{color:#2e2e2e}.alert-dark{background-color:#dfdfdf;border-color:#d0d0d0;color:#3a3a3a}.alert-dark .alert-link{color:#2e2e2e}.alert{align-items:center;-webkit-backdrop-filter:var(--backdrop-filter);backdrop-filter:var(--backdrop-filter);background-color:Rgba(var(--t42-bg-light),.75);background-repeat:no-repeat;background-size:100%;border:.0625rem solid var(--t42-color-opacity-10);display:flex;overflow:hidden;position:relative;transition-duration:.25s;transition-property:border-color;transition-timing-function:cubic-bezier(.45,0,.15,1);z-index:10000}.alert,.alert h5{color:var(--t42-content-color)}.alert h5,.alert p{margin-bottom:0}.alert-link{color:var(--t42-link-color);font-weight:400}.alert-dismissible .close{background-color:var(--t42-color-opacity-05);border:0;border-radius:50%;color:var(--t42-content-color);font-size:1rem;font-weight:700;height:1.5rem;line-height:1;opacity:.5;padding:0;position:absolute;right:.75rem;top:50%;transform:translateY(-50%);transition-duration:.25s;transition-property:border-color;transition-timing-function:cubic-bezier(.45,0,.15,1);width:1.5rem}.alert-dismissible .close:before{position:relative;top:-1px}.alert-dismissible .close:hover{opacity:1}.alert:before{background-color:var(--t42-icon-color);content:"";height:1.25rem;margin-right:.875rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;width:1.25rem;z-index:1}.alert:after{animation:color-pulse 3s infinite;border-radius:50%;content:"";height:1px;left:0;opacity:1;position:absolute;top:0;width:1px;z-index:-1}.alert-dark:hover,.alert-info:hover,.alert-light:hover,.alert-primary:hover,.alert-secondary:hover{border-color:#616161}.alert-dark:after,.alert-info:after,.alert-light:after,.alert-primary:after,.alert-secondary:after{background:#616161;background:radial-gradient(circle,#ffffff59 0,#616161bf 60%,#616161 75%,#616161 100%)}.alert-dark:before,.alert-info:before,.alert-light:before,.alert-primary:before,.alert-secondary:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M260.6 484.4q0-4.1-4.6-4.1-16.9 0-29.2-12.3T215 438.8q0-4.6-4.6-4.6t-4.6 4.6q0 21 14.8 35.8t35.3 14.3q4.6 0 4.6-4.6zm233-82q0 14.8-10.8 25.6t-25.6 10.8h-128q0 30.2-21.5 51.7T256 512t-51.7-21.5-21.5-51.7h-128q-14.8 0-25.6-10.8t-10.8-25.6q14.3-12.3 26.1-25.1T68.6 343t21.5-45.6 13.8-58.9 5.6-74.2q0-43 33.8-80.4t87.6-45.6q-2.6-5.1-2.6-10.8 0-11.8 8.2-19.5T256-.2 275.5 8t8.2 19.5q0 5.6-2.6 10.8 54.3 8.2 87.6 45.6t33.8 80.4q0 39.9 5.6 74.2t14.3 58.9 21 45.6 24.6 34.3 25.6 25.1z'/%3E%3C/svg%3E")}.alert-success:hover{border-color:#43a047}.alert-success:after{background:#43a047;background:radial-gradient(circle,#ffffff59 0,#43a047bf 60%,#43a047 75%,#43a047 100%)}.alert-success:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M477.4 152.8q0 11.3-8.2 19.5L223.4 418.1q-8.2 7.7-19.5 7.7t-19.5-7.7L42.1 275.8q-7.7-8.2-7.7-19.5t7.7-19.5L81 197.9q8.2-8.2 19.5-8.2t19.5 8.2l84 84.5L391.4 94.5q8.2-8.2 19.5-8.2t19.5 8.2l38.9 38.9q8.2 7.7 8.2 19.5z'/%3E%3C/svg%3E")}.alert-warning:hover{border-color:#f9a825}.alert-warning:after{background:#f9a825;background:radial-gradient(circle,#ffffff59 0,#f9a825bf 60%,#f9a825 75%,#f9a825 100%)}.alert-warning:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M292.4 410.9v-54.3q0-4.1-2.6-6.7t-6.1-2.6h-55.3q-3.6 0-6.1 2.6t-2.6 6.7v54.3q0 4.1 2.6 6.7t6.1 3.1h55.3q3.6 0 6.1-3.1t2.6-6.7zm-.6-106.5 5.1-131.6q0-3.1-2.6-5.1-3.6-3.1-7.2-3.1h-62.5q-3.1 0-7.2 3.1-2.6 2-2.6 6.1l4.6 130.6q0 2.6 3.1 4.6t6.7 1.5h52.7q4.1 0 7.2-1.5t2.6-4.6zm-3.5-267.3 219.1 402.4q10.2 17.9-.5 35.8-4.6 8.7-13.3 13.3t-17.9 5.1H36.4q-9.2 0-17.9-5.1T5.2 475.3q-10.8-17.9-.5-35.8L224.3 37.1q4.6-8.7 13.3-13.8t18.4-5.1 18.4 5.1 13.8 13.8z'/%3E%3C/svg%3E")}.alert-danger:hover{border-color:#ff511f}.alert-danger:after{background:#ff511f;background:radial-gradient(circle,#ffffff59 0,#ff511fbf 60%,#ff511f 75%,#ff511f 100%)}.alert-danger:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 402 512'%3E%3Cpath d='M370.728 359.68q0 11.264-7.68 19.456l-38.912 38.912q-8.192 7.68-19.456 7.68t-19.456-7.68l-83.968-84.48-83.968 84.48q-8.192 7.68-19.456 7.68t-19.456-7.68l-38.912-38.912q-8.192-8.192-8.192-19.456t8.192-19.456l83.968-83.968-83.968-83.968q-8.192-8.192-8.192-19.456t8.192-19.456l38.912-38.912q8.192-8.192 19.456-8.192t19.456 8.192l83.968 83.968 83.968-83.968q8.192-8.192 19.456-8.192t19.456 8.192l38.912 38.912q7.68 7.68 7.68 19.456t-7.68 19.456l-83.968 83.968 83.968 83.968q7.68 7.68 7.68 19.456z'/%3E%3C/svg%3E")}@keyframes color-pulse{0%{opacity:1;transform:scale(1)}50%{opacity:0;transform:scale(250)}to{opacity:0}}.badge{border-radius:1rem;color:#fff;display:inline-block;font-size:.75em;font-weight:300;line-height:1;padding:.2rem .5rem;text-align:center;vertical-align:initial;white-space:nowrap}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge{-webkit-backdrop-filter:var(--backdrop-filter);backdrop-filter:var(--backdrop-filter);border:var(--t42-border);color:var(--t42-link-color)}.badge.bg-primary{background-color:#1c89ea26!important;border:.0625rem solid #1c89ea}.badge.bg-secondary{background-color:#61616126!important;border:.0625rem solid #616161}.badge.bg-success{background-color:#43a04726!important;border:.0625rem solid #43a047}.badge.bg-info{background-color:#469eb926!important;border:.0625rem solid #469eb9}.badge.bg-warning{background-color:#f9a82526!important;border:.0625rem solid #f9a825}.badge.bg-danger{background-color:#ff511f26!important;border:.0625rem solid #ff511f}.badge.bg-dark,.badge.bg-light{background-color:#61616126!important;border:.0625rem solid #616161}button .badge{border:.0625rem solid var(--t42-color-opacity-30)}button:hover .badge{color:#fff;color:var(--white)}.btn-close{background:#0000 url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var(--t42-content-color)'%3E%3Cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3E%3C/svg%3E") 50%/1em auto no-repeat;border:0;border-radius:.25rem;box-sizing:initial;height:1em;opacity:.5;padding:0;width:1em}.btn-close,.btn-close:hover{color:var(--t42-content-color)}.btn-close:hover{opacity:.75;text-decoration:none}.btn-close:focus{box-shadow:0 0 0 0 #1c89ea40;opacity:1;outline:0}.btn-close.disabled,.btn-close:disabled{opacity:.25;pointer-events:none;-webkit-user-select:none;user-select:none}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.btn{background-color:initial;border:1px solid #0000;border-radius:0;color:#212529;cursor:pointer;display:inline-block;font-size:.75rem;font-weight:400;line-height:1.875rem;padding:0 .875rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-user-select:none;user-select:none;vertical-align:middle}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{box-shadow:0 0 0 0 #1c89ea40;outline:0}.btn.disabled,.btn:disabled,fieldset:disabled .btn{opacity:.35;pointer-events:none}.btn-primary{background-color:#1c89ea;border-color:#1c89ea;color:#000}.btn-check:focus+.btn-primary,.btn-primary:focus,.btn-primary:hover{background-color:#3e9bed;border-color:#3395ec;color:#000}.btn-check:focus+.btn-primary,.btn-primary:focus{box-shadow:0 0 0 0 #1874c780}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{background-color:#49a1ee;border-color:#3395ec;color:#000}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 0 #1874c780}.btn-primary.disabled,.btn-primary:disabled{background-color:#1c89ea;border-color:#1c89ea;color:#000}.btn-secondary{background-color:#616161;border-color:#616161;color:#fff}.btn-check:focus+.btn-secondary,.btn-secondary:focus,.btn-secondary:hover{background-color:#525252;border-color:#4e4e4e;color:#fff}.btn-check:focus+.btn-secondary,.btn-secondary:focus{box-shadow:0 0 0 0 #79797980}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{background-color:#4e4e4e;border-color:#494949;color:#fff}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 0 #79797980}.btn-secondary.disabled,.btn-secondary:disabled{background-color:#616161;border-color:#616161;color:#fff}.btn-success{background-color:#43a047;border-color:#43a047;color:#000}.btn-check:focus+.btn-success,.btn-success:focus,.btn-success:hover{background-color:#5fae63;border-color:#56aa59;color:#000}.btn-check:focus+.btn-success,.btn-success:focus{box-shadow:0 0 0 0 #39883c80}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{background-color:#69b36c;border-color:#56aa59;color:#000}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 0 #39883c80}.btn-success.disabled,.btn-success:disabled{background-color:#43a047;border-color:#43a047;color:#000}.btn-info{background-color:#469eb9;border-color:#469eb9;color:#000}.btn-check:focus+.btn-info,.btn-info:focus,.btn-info:hover{background-color:#62adc4;border-color:#59a8c0;color:#000}.btn-check:focus+.btn-info,.btn-info:focus{box-shadow:0 0 0 0 #3c869d80}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{background-color:#6bb1c7;border-color:#59a8c0;color:#000}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 0 #3c869d80}.btn-info.disabled,.btn-info:disabled{background-color:#469eb9;border-color:#469eb9;color:#000}.btn-warning{background-color:#f9a825;border-color:#f9a825;color:#000}.btn-check:focus+.btn-warning,.btn-warning:focus,.btn-warning:hover{background-color:#fab546;border-color:#fab13b;color:#000}.btn-check:focus+.btn-warning,.btn-warning:focus{box-shadow:0 0 0 0 #d48f1f80}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{background-color:#fab951;border-color:#fab13b;color:#000}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 0 #d48f1f80}.btn-warning.disabled,.btn-warning:disabled{background-color:#f9a825;border-color:#f9a825;color:#000}.btn-danger{background-color:#ff511f;border-color:#ff511f;color:#000}.btn-check:focus+.btn-danger,.btn-danger:focus,.btn-danger:hover{background-color:#ff6b41;border-color:#ff6235;color:#000}.btn-check:focus+.btn-danger,.btn-danger:focus{box-shadow:0 0 0 0 #d9451a80}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{background-color:#ff744c;border-color:#ff6235;color:#000}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 0 #d9451a80}.btn-danger.disabled,.btn-danger:disabled{background-color:#ff511f;border-color:#ff511f;color:#000}.btn-light{background-color:#616161;border-color:#616161;color:#fff}.btn-check:focus+.btn-light,.btn-light:focus,.btn-light:hover{background-color:#525252;border-color:#4e4e4e;color:#fff}.btn-check:focus+.btn-light,.btn-light:focus{box-shadow:0 0 0 0 #79797980}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{background-color:#4e4e4e;border-color:#494949;color:#fff}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 0 #79797980}.btn-dark,.btn-light.disabled,.btn-light:disabled{background-color:#616161;border-color:#616161;color:#fff}.btn-check:focus+.btn-dark,.btn-dark:focus,.btn-dark:hover{background-color:#525252;border-color:#4e4e4e;color:#fff}.btn-check:focus+.btn-dark,.btn-dark:focus{box-shadow:0 0 0 0 #79797980}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{background-color:#4e4e4e;border-color:#494949;color:#fff}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 0 #79797980}.btn-dark.disabled,.btn-dark:disabled{background-color:#616161;border-color:#616161;color:#fff}.btn-outline-primary{border-color:#1c89ea;color:#1c89ea}.btn-outline-primary:hover{background-color:#1c89ea;border-color:#1c89ea;color:#000}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 0 #1c89ea80}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{background-color:#1c89ea;border-color:#1c89ea;color:#000}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 0 #1c89ea80}.btn-outline-primary.disabled,.btn-outline-primary:disabled{background-color:initial;color:#1c89ea}.btn-outline-secondary{border-color:#616161;color:#616161}.btn-outline-secondary:hover{background-color:#616161;border-color:#616161;color:#fff}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 0 #61616180}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{background-color:#616161;border-color:#616161;color:#fff}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 0 #61616180}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{background-color:initial;color:#616161}.btn-outline-success{border-color:#43a047;color:#43a047}.btn-outline-success:hover{background-color:#43a047;border-color:#43a047;color:#000}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 0 #43a04780}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{background-color:#43a047;border-color:#43a047;color:#000}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 0 #43a04780}.btn-outline-success.disabled,.btn-outline-success:disabled{background-color:initial;color:#43a047}.btn-outline-info{border-color:#469eb9;color:#469eb9}.btn-outline-info:hover{background-color:#469eb9;border-color:#469eb9;color:#000}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 0 #469eb980}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{background-color:#469eb9;border-color:#469eb9;color:#000}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 0 #469eb980}.btn-outline-info.disabled,.btn-outline-info:disabled{background-color:initial;color:#469eb9}.btn-outline-warning{border-color:#f9a825;color:#f9a825}.btn-outline-warning:hover{background-color:#f9a825;border-color:#f9a825;color:#000}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 0 #f9a82580}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{background-color:#f9a825;border-color:#f9a825;color:#000}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 0 #f9a82580}.btn-outline-warning.disabled,.btn-outline-warning:disabled{background-color:initial;color:#f9a825}.btn-outline-danger{border-color:#ff511f;color:#ff511f}.btn-outline-danger:hover{background-color:#ff511f;border-color:#ff511f;color:#000}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 0 #ff511f80}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{background-color:#ff511f;border-color:#ff511f;color:#000}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 0 #ff511f80}.btn-outline-danger.disabled,.btn-outline-danger:disabled{background-color:initial;color:#ff511f}.btn-outline-light{border-color:#616161;color:#616161}.btn-outline-light:hover{background-color:#616161;border-color:#616161;color:#fff}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 0 #61616180}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{background-color:#616161;border-color:#616161;color:#fff}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 0 #61616180}.btn-outline-light.disabled,.btn-outline-light:disabled{background-color:initial;color:#616161}.btn-outline-dark{border-color:#616161;color:#616161}.btn-outline-dark:hover{background-color:#616161;border-color:#616161;color:#fff}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 0 #61616180}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{background-color:#616161;border-color:#616161;color:#fff}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 0 #61616180}.btn-outline-dark.disabled,.btn-outline-dark:disabled{background-color:initial;color:#616161}.btn-link{color:var(--t42-link-color);font-weight:400;text-decoration:underline}.btn-link:hover{color:var(--t42-link-hover-color)}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-group-sm>.btn,.btn-lg,.btn-sm{border-radius:0;font-size:.75rem;padding:0 .875rem}.btn-group,.btn-group-vertical{display:inline-flex;position:relative;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{flex:1 1 auto;position:relative}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-bottom-left-radius:0;border-top-left-radius:0}.dropdown-toggle-split{padding-left:.65625rem;padding-right:.65625rem}.dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-left:.65625rem;padding-right:.65625rem}.btn-group-vertical{align-items:flex-start;flex-direction:column;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-left-radius:0;border-bottom-right-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}button,button:focus{outline:none}.btn{transition-duration:.25s;transition-property:background-color,border-color;transition-timing-function:cubic-bezier(.45,0,.15,1)}.btn,.btn.disabled,.btn:disabled{color:var(--t42-link-color);cursor:default}.btn:not(.disabled):not(:disabled).active,.btn:not(.disabled):not(:disabled):hover{-webkit-backdrop-filter:var(--backdrop-filter);backdrop-filter:var(--backdrop-filter);border-color:var(--t42-color-opacity-30);color:#fff;color:var(--white)}.btn:active,.btn:focus{color:#fff;color:var(--white)}.btn-primary,.btn-primary.disabled,.btn-primary:disabled{background-color:#1c89ea0d}.btn-primary:not(.disabled):not(:disabled).active,.btn-primary:not(.disabled):not(:disabled):hover{background-color:#1c89ea}.btn-primary:not(.disabled):not(:disabled).btn-icon.active,.btn-primary:not(.disabled):not(:disabled).btn-icon:focus,.btn-primary:not(.disabled):not(:disabled).btn-icon:hover{color:#fff;color:var(--white)}.btn-primary.dropdown-toggle.active,.btn-primary.dropdown-toggle:active,.btn-primary.dropdown-toggle:focus{background-color:#1c89ea;border-color:var(--t42-color-opacity-30)}.btn-secondary,.btn-secondary.disabled,.btn-secondary:disabled{background-color:#6161610d}.btn-secondary:not(.disabled):not(:disabled).active,.btn-secondary:not(.disabled):not(:disabled):hover{background-color:#616161}.btn-secondary:not(.disabled):not(:disabled).btn-icon.active,.btn-secondary:not(.disabled):not(:disabled).btn-icon:focus,.btn-secondary:not(.disabled):not(:disabled).btn-icon:hover{color:#fff;color:var(--white)}.btn-secondary.dropdown-toggle.active,.btn-secondary.dropdown-toggle:active,.btn-secondary.dropdown-toggle:focus{background-color:#616161;border-color:var(--t42-color-opacity-30)}.btn-success,.btn-success.disabled,.btn-success:disabled{background-color:#43a0470d}.btn-success:not(.disabled):not(:disabled).active,.btn-success:not(.disabled):not(:disabled):hover{background-color:#43a047}.btn-success:not(.disabled):not(:disabled).btn-icon.active,.btn-success:not(.disabled):not(:disabled).btn-icon:focus,.btn-success:not(.disabled):not(:disabled).btn-icon:hover{color:#fff;color:var(--white)}.btn-success.dropdown-toggle.active,.btn-success.dropdown-toggle:active,.btn-success.dropdown-toggle:focus{background-color:#43a047;border-color:var(--t42-color-opacity-30)}.btn-info,.btn-info.disabled,.btn-info:disabled{background-color:#469eb90d}.btn-info:not(.disabled):not(:disabled).active,.btn-info:not(.disabled):not(:disabled):hover{background-color:#469eb9}.btn-info:not(.disabled):not(:disabled).btn-icon.active,.btn-info:not(.disabled):not(:disabled).btn-icon:focus,.btn-info:not(.disabled):not(:disabled).btn-icon:hover{color:#fff;color:var(--white)}.btn-info.dropdown-toggle.active,.btn-info.dropdown-toggle:active,.btn-info.dropdown-toggle:focus{background-color:#469eb9;border-color:var(--t42-color-opacity-30)}.btn-warning,.btn-warning.disabled,.btn-warning:disabled{background-color:#f9a8250d}.btn-warning:not(.disabled):not(:disabled).active,.btn-warning:not(.disabled):not(:disabled):hover{background-color:#f9a825}.btn-warning:not(.disabled):not(:disabled).btn-icon.active,.btn-warning:not(.disabled):not(:disabled).btn-icon:focus,.btn-warning:not(.disabled):not(:disabled).btn-icon:hover{color:#fff;color:var(--white)}.btn-warning.dropdown-toggle.active,.btn-warning.dropdown-toggle:active,.btn-warning.dropdown-toggle:focus{background-color:#f9a825;border-color:var(--t42-color-opacity-30)}.btn-danger,.btn-danger.disabled,.btn-danger:disabled{background-color:#ff511f0d}.btn-danger:not(.disabled):not(:disabled).active,.btn-danger:not(.disabled):not(:disabled):hover{background-color:#ff511f}.btn-danger:not(.disabled):not(:disabled).btn-icon.active,.btn-danger:not(.disabled):not(:disabled).btn-icon:focus,.btn-danger:not(.disabled):not(:disabled).btn-icon:hover{color:#fff;color:var(--white)}.btn-danger.dropdown-toggle.active,.btn-danger.dropdown-toggle:active,.btn-danger.dropdown-toggle:focus{background-color:#ff511f;border-color:var(--t42-color-opacity-30)}.btn-light,.btn-light.disabled,.btn-light:disabled{background-color:#6161610d}.btn-light:not(.disabled):not(:disabled).active,.btn-light:not(.disabled):not(:disabled):hover{background-color:#616161}.btn-light:not(.disabled):not(:disabled).btn-icon.active,.btn-light:not(.disabled):not(:disabled).btn-icon:focus,.btn-light:not(.disabled):not(:disabled).btn-icon:hover{color:#fff;color:var(--white)}.btn-light.dropdown-toggle.active,.btn-light.dropdown-toggle:active,.btn-light.dropdown-toggle:focus{background-color:#616161;border-color:var(--t42-color-opacity-30)}.btn-dark,.btn-dark.disabled,.btn-dark:disabled{background-color:#6161610d}.btn-dark:not(.disabled):not(:disabled).active,.btn-dark:not(.disabled):not(:disabled):hover{background-color:#616161}.btn-dark:not(.disabled):not(:disabled).btn-icon.active,.btn-dark:not(.disabled):not(:disabled).btn-icon:focus,.btn-dark:not(.disabled):not(:disabled).btn-icon:hover{color:#fff;color:var(--white)}.btn-dark.dropdown-toggle.active,.btn-dark.dropdown-toggle:active,.btn-dark.dropdown-toggle:focus{background-color:#616161;border-color:var(--t42-color-opacity-30)}.btn-link{-webkit-backdrop-filter:none;backdrop-filter:none;text-decoration:none}.btn-link:not(.disabled):not(:disabled).active,.btn-link:not(.disabled):not(:disabled):focus,.btn-link:not(.disabled):not(:disabled):hover{border-color:#0000;color:var(--t42-link-color);text-decoration:underline}.btn-icon:not(.disabled):not(:disabled).active,.btn-icon:not(.disabled):not(:disabled):focus,.btn-icon:not(.disabled):not(:disabled):hover{color:var(--t42-link-color)}.btn-icon-action{border-radius:50%;display:flex;font-size:.75rem;height:1rem;justify-content:center;padding:0;transition:all .2s ease-in-out;width:1rem}@media (prefers-reduced-motion:reduce){.btn-icon-action{transition:none}}.btn-icon-action:not(.disabled):not(:disabled).active,.btn-icon-action:not(.disabled):not(:disabled):focus,.btn-icon-action:not(.disabled):not(:disabled):hover{background-color:Rgb(var(--t42-bg-light));border-color:#0000;box-shadow:var(--t42-shadow)}.btn-icon-action-right{position:absolute;right:.25rem}.btn-icon-action-show-hover{transition:all .2s ease-in-out}@media (prefers-reduced-motion:reduce){.btn-icon-action-show-hover{transition:none}}.btn-icon-action-show-hover .btn-icon-action{opacity:0}.btn-icon-action-show-hover:not(.disabled):not(:disabled):hover .btn-icon-action{opacity:1}.btn-close{filter:var(--filter-close);height:1rem;width:1rem}.breadcrumb{background-color:#0000;display:flex;flex-wrap:wrap;list-style:none;margin-bottom:.5rem;padding:0}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{color:#6c757d;content:"/";content:var(--bs-breadcrumb-divider,"/");float:left;padding-right:.5rem}.breadcrumb-item.active{color:var(--t42-link-color)}.breadcrumb-item{font-size:83.3%}.breadcrumb-item.active{text-decoration:underline}.breadcrumb-item+.breadcrumb-item{padding-left:0}.breadcrumb-item+.breadcrumb-item:before{background-color:var(--t42-content-color);content:"";height:.75rem;left:.063rem;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M339.2 256.3c0 2.4-.9 4.4-2.6 6.1L203 396c-1.7 1.7-3.8 2.6-6.1 2.6-2.4 0-4.6-.9-6.7-2.6l-14.3-14.3c-2-2-3.1-4.3-3.1-6.7s1-4.6 3.1-6.7l112.1-112-112.1-112.7c-2-1.7-3.1-3.8-3.1-6.1s1-4.6 3.1-6.7l14.3-14.3c1.7-2 3.9-3.1 6.7-3.1s4.8 1 6.1 3.1l133.6 133.1c1.7 1.7 2.6 3.9 2.6 6.7z'/%3E%3C/svg%3E");position:relative;top:.063rem;width:.75rem}pre{border:.0625rem solid var(--t42-color-opacity-10)}.card{word-wrap:break-word;background-clip:initial;background-color:Rgba(var(--t42-bg-light),.75);border:1px solid var(--t42-color-opacity-10);border-radius:0;display:flex;flex-direction:column;min-width:0;position:relative}.card>hr{margin-left:0;margin-right:0}.card>.list-group{border-bottom:inherit;border-top:inherit}.card>.list-group:first-child{border-top-left-radius:0;border-top-right-radius:0;border-top-width:0}.card>.list-group:last-child{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-width:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1.25rem}.card-header{background-color:#0000;border-bottom:1px solid var(--t42-color-opacity-10);color:var(--t42-link-color);margin-bottom:0;padding:.625rem 1.25rem}.card-header:first-child{border-radius:0 0 0 0}.card-footer{background-color:#0000;border-top:1px solid var(--t42-color-opacity-10);color:var(--t42-link-color);padding:.625rem 1.25rem}.card-footer:last-child{border-radius:0 0 0 0}.card-header-tabs{border-bottom:0;margin-bottom:-.625rem;margin-left:-.625rem;margin-right:-.625rem}.card-header-tabs .nav-link.active{background-color:Rgba(var(--t42-bg-light),.75);border-bottom-color:Rgba(var(--t42-bg-light),.75)}.card-header-pills{margin-left:-.625rem;margin-right:-.625rem}.card-img-overlay{border-radius:0;bottom:0;left:0;padding:1rem;position:absolute;right:0;top:0}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:0;border-top-right-radius:0}.card-img,.card-img-bottom{border-bottom-left-radius:0;border-bottom-right-radius:0}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0;margin-bottom:0}.card-group>.card+.card{border-left:0;margin-left:0}.card-group>.card:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card{-webkit-backdrop-filter:var(--backdrop-filter);backdrop-filter:var(--backdrop-filter);box-shadow:var(--t42-shadow)}.card .card-header{border-bottom-width:0}.card .card-subtitle{font-size:83.3%;margin-bottom:.5rem}.card.bg-primary{background-color:initial!important}.card.bg-primary .card-header{background-color:Rgba(var(--t42-bg-mid),.75)}.card.bg-primary .card-body{background-color:Rgba(var(--t42-bg-light),.75)}.card.bg-secondary{background-color:initial!important}.card.bg-secondary .card-header{background-color:Rgba(var(--t42-bg-light),.75)}.card.bg-secondary .card-body{background-color:Rgba(var(--t42-bg-mid),.75)}.card:not(.bg-primary):not(.bg-secondary) .card-header+.card-body{padding-top:0}.card-header-tabs{margin-bottom:0}.accordion .card:first-of-type,.accordion .card:not(:first-of-type):not(:last-of-type){border-bottom:var(--t42-border);margin-bottom:.5rem}.accordion .card-header{padding:0;position:relative}.accordion .card-header .btn-link{line-height:1.4;overflow:hidden;padding:.75rem 2rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.accordion .card-header .btn-link:before{background-color:var(--t42-content-color);content:"";display:inline-block;height:.75rem;-webkit-mask-image:var(--t42-select-indicator);position:absolute;transform:translateX(-1rem) translateY(.063rem) rotate(-90deg);transition-duration:.25s;transition-property:transform;transition-timing-function:cubic-bezier(.45,0,.15,1);width:.75rem}.accordion .card-header .btn-link:hover{-webkit-backdrop-filter:none;backdrop-filter:none}.accordion .card-header .btn-link.collapsed:before{transform:translateX(-1rem) translateY(.063rem)}.accordion .card-header .btn-link.disabled:before,.accordion .card-header .btn-link:disabled:before{opacity:.35}.accordion .card-body{padding:0 1.25rem 1.25rem}.accordion .bg-primary .card-body,.accordion .bg-secondary .card-body{padding:1.25rem}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{border-bottom:0;border-left:.3em solid #0000;border-right:.3em solid #0000;border-top:.3em solid;display:inline-block;margin-left:.255em;vertical-align:0}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{background-clip:padding-box;background-color:Rgba(var(--t42-bg-light),.75);border:1px solid var(--t42-color-opacity-10);border-radius:0;color:var(--t42-content-color);display:none;font-size:.75rem;list-style:none;margin:0;min-width:10rem;padding:0;position:absolute;text-align:left;z-index:1000}.dropdown-menu[data-bs-popper]{left:0;margin-top:.125rem;top:100%}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{left:auto;right:0}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{left:auto;right:0}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{left:auto;right:0}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{left:auto;right:0}}.dropup .dropdown-menu[data-bs-popper]{bottom:100%;margin-bottom:.125rem;margin-top:0;top:auto}.dropup .dropdown-toggle:after{border-bottom:.3em solid;border-left:.3em solid #0000;border-right:.3em solid #0000;border-top:0;display:inline-block;margin-left:.255em;vertical-align:0}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{left:100%;margin-left:.125rem;margin-top:0;right:auto;top:0}.dropend .dropdown-toggle:after{border-bottom:.3em solid #0000;border-left:.3em solid;border-right:0;border-top:.3em solid #0000;content:"";display:inline-block;margin-left:.255em}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{left:auto;margin-right:.125rem;margin-top:0;right:100%;top:0}.dropstart .dropdown-toggle:after{content:"";display:inline-block;display:none;margin-left:.255em;vertical-align:0}.dropstart .dropdown-toggle:before{border-bottom:.3em solid #0000;border-right:.3em solid;border-top:.3em solid #0000;content:"";display:inline-block;margin-right:.255em}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{border-top:1px solid var(--t42-color-opacity-10);height:0;margin:0;overflow:hidden}.dropdown-item{background-color:initial;border:0;clear:both;color:var(--t42-content-color);display:block;font-weight:400;padding:.375rem 1rem;text-align:inherit;text-decoration:none;white-space:nowrap;width:100%}.dropdown-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.dropdown-item:last-child{border-bottom-left-radius:0;border-bottom-right-radius:0}.dropdown-item:focus,.dropdown-item:hover{background-color:var(--t42-link-hover-bg);color:var(--t42-link-hover-color)}.dropdown-item.active,.dropdown-item:active{background-color:var(--t42-link-active-bg);color:var(--t42-link-hover-color);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{background-color:initial;color:#adb5bd;pointer-events:none}.dropdown-menu.show{display:block}.dropdown-header{color:#484848;display:block;font-size:.65625rem;margin-bottom:0;padding:0 1rem;white-space:nowrap}.dropdown-item-text{color:var(--t42-content-color);display:block;padding:.375rem 1rem}.dropdown-menu-dark{background-color:#343a40;border-color:var(--t42-color-opacity-10);color:#dee2e6}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{background-color:#ffffff26;color:#fff}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{background-color:var(--t42-link-active-bg);color:var(--t42-link-hover-color)}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:var(--t42-color-opacity-10)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.dropdown-menu{-webkit-backdrop-filter:var(--backdrop-filter);backdrop-filter:var(--backdrop-filter);display:block;opacity:0;transition-duration:.25s;transition-property:opacity,visability;transition-timing-function:cubic-bezier(.45,0,.15,1);visibility:hidden}.dropdown-menu.show{opacity:1;visibility:visible}.dropdown-toggle:after{background-color:var(--t42-link-color);border:0;content:"";height:.5rem;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M480.768 186.88 268.8 398.336q-5.12 5.632-12.8 5.632t-12.8-5.632L31.232 186.88q-5.632-5.632-5.632-13.312t5.632-12.8l47.616-47.104q5.12-5.632 12.8-5.632t12.8 5.632L256 265.216l151.552-151.552q5.632-5.632 12.8-5.632t13.312 5.632l47.104 47.104q5.632 5.632 5.632 12.8t-5.632 13.312z'/%3E%3C/svg%3E");position:relative;width:.5rem}.dropdown-toggle.show:after{color:#fff;color:var(--white)}.dropup .dropdown-toggle:after{background-color:var(--t42-link-color);border:0;content:"";height:.5rem;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='m480.768 351.488-47.104 47.104q-5.632 5.12-13.312 5.12t-12.8-5.12L256 246.528 104.448 398.592q-5.632 5.12-12.8 5.12t-12.8-5.12l-47.616-47.104q-5.632-5.632-5.632-13.312t5.632-12.8L243.2 113.408q5.632-5.12 12.8-5.12t12.8 5.12l211.968 211.968q5.632 5.632 5.632 12.8t-5.632 13.312z'/%3E%3C/svg%3E");position:relative;top:.188rem;width:.5rem}.form-label{margin-bottom:.5rem}.col-form-label{font-size:inherit;line-height:1.875rem;margin-bottom:0;padding-bottom:1px;padding-top:1px}.col-form-label-lg,.col-form-label-sm{font-size:.75rem;padding-bottom:1px;padding-top:1px}.form-text{color:var(--t42-content-color-muted);font-size:.875em;margin-top:.25rem}.form-control{-webkit-appearance:none;appearance:none;background-clip:padding-box;background-color:var(--t42-input-bg);border:1px solid var(--t42-color-opacity-10);border-radius:0;color:var(--t42-link-color);display:block;font-size:.75rem;font-weight:400;line-height:1.875rem;padding:0 .875rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:100%}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{background-color:var(--t42-input-bg);border-color:#1c89ea;box-shadow:0 0 0 0 #1c89ea40;color:var(--t42-link-color);outline:0}.form-control::-webkit-date-and-time-value{height:1.875rem}.form-control::placeholder{color:var(--t42-content-color-muted);opacity:1}.form-control:disabled,.form-control[readonly]{background-color:var(--t42-input-disabled-bg);opacity:1}.form-control::file-selector-button{background-color:#e9ecef;border:0 solid;border-color:inherit;border-inline-end-width:1px;border-radius:0;color:var(--t42-link-color);margin:0 -.875rem;margin-inline-end:.875rem;padding:0 .875rem;pointer-events:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{background-color:#e9ecef;border:0 solid;border-color:inherit;border-inline-end-width:1px;border-radius:0;color:var(--t42-link-color);margin:0 -.875rem;margin-inline-end:.875rem;padding:0 .875rem;pointer-events:none;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{background-color:initial;border:solid #0000;border-width:1px 0;color:var(--t42-content-color);display:block;line-height:1.875rem;margin-bottom:0;padding:0;width:100%}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-left:0;padding-right:0}.form-control-sm{border-radius:0;font-size:.75rem;min-height:2rem;padding:0 .875rem}.form-control-sm::file-selector-button{margin:0 -.875rem;margin-inline-end:.875rem;padding:0 .875rem}.form-control-sm::-webkit-file-upload-button{margin:0 -.875rem;margin-inline-end:.875rem;padding:0 .875rem}.form-control-lg{border-radius:0;font-size:.75rem;min-height:2rem;padding:0 .875rem}.form-control-lg::file-selector-button{margin:0 -.875rem;margin-inline-end:.875rem;padding:0 .875rem}.form-control-lg::-webkit-file-upload-button{margin:0 -.875rem;margin-inline-end:.875rem;padding:0 .875rem}textarea.form-control,textarea.form-control-lg,textarea.form-control-sm{min-height:2rem}.form-control-color{height:auto;padding:0;width:3rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border-radius:0;height:1.875rem}.form-control-color::-webkit-color-swatch{border-radius:0;height:1.875rem}.form-select{-moz-padding-start:calc(.875rem - 3px);-webkit-appearance:none;appearance:none;background-color:var(--t42-input-bg);background-image:var(--t42-select-indicator);background-position:right .5rem center;background-repeat:no-repeat;background-size:1rem;border:1px solid var(--t42-color-opacity-10);border-radius:0;color:var(--t42-link-color);display:block;font-size:.75rem;font-weight:400;line-height:1.875rem;padding:0 2.625rem 0 .875rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:100%}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#1c89ea;box-shadow:0 0 0 0 #1c89ea40;outline:0}.form-select[multiple],.form-select[size]:not([size="1"]){background-image:none;padding-right:.875rem}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:#0000;text-shadow:0 0 0 var(--t42-link-color)}.form-select-lg,.form-select-sm{border-radius:0;font-size:.75rem;padding-bottom:0;padding-left:.875rem;padding-top:0}.form-check{display:block;margin-bottom:0;min-height:1.125rem;padding-left:1.25rem}.form-check .form-check-input{float:left;margin-left:-1.25rem}.form-check-input{color-adjust:exact;-webkit-appearance:none;appearance:none;background-color:var(--t42-input-bg);background-position:50%;background-repeat:no-repeat;background-size:contain;border:1px solid #00000040;height:1em;margin-top:.25em;-webkit-print-color-adjust:exact;vertical-align:top;width:1em}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#1c89ea;box-shadow:0 0 0 0 #1c89ea40;outline:0}.form-check-input:checked{background-color:#1c89ea;border-color:#1c89ea}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='2' fill='%23fff'/%3E%3C/svg%3E")}.form-check-input[type=checkbox]:indeterminate{background-color:#1c89ea;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3E%3C/svg%3E");border-color:#1c89ea}.form-check-input:disabled{filter:none;opacity:.5;pointer-events:none}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='rgba(0,0,0,0.25)'/%3E%3C/svg%3E");background-position:0;border-radius:2em;margin-left:-2.5em;transition:background-position .15s ease-in-out;width:2em}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%231c89ea'/%3E%3C/svg%3E")}.form-switch .form-check-input:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E");background-position:100%}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{clip:rect(0,0,0,0);pointer-events:none;position:absolute}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{filter:none;opacity:.35;pointer-events:none}.form-range{-webkit-appearance:none;appearance:none;background-color:initial;height:1rem;padding:0;width:100%}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 0 #1c89ea40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 0 #1c89ea40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:#1c89ea;border:0;border-radius:1rem;height:1rem;margin-top:-.25rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:1rem}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#bbdcf9}.form-range::-webkit-slider-runnable-track{background-color:#dee2e6;border-color:#0000;border-radius:1rem;color:#0000;cursor:pointer;height:.5rem;width:100%}.form-range::-moz-range-thumb{appearance:none;background-color:#1c89ea;border:0;border-radius:1rem;height:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:1rem}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#bbdcf9}.form-range::-moz-range-track{background-color:#dee2e6;border-color:#0000;border-radius:1rem;color:#0000;cursor:pointer;height:.5rem;width:100%}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{border:1px solid #0000;height:100%;left:0;padding:1rem .875rem;pointer-events:none;position:absolute;top:0;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .875rem}.form-floating>.form-control::placeholder{color:#0000}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-bottom:.625rem;padding-top:1.625rem}.form-floating>.form-control:-webkit-autofill{padding-bottom:.625rem;padding-top:1.625rem}.form-floating>.form-select{padding-bottom:.625rem;padding-top:1.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{align-items:stretch;display:flex;flex-wrap:wrap;position:relative;width:100%}.input-group>.form-control,.input-group>.form-select{flex:1 1 auto;min-width:0;position:relative;width:1%}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{align-items:center;background-color:#e9ecef;border:1px solid var(--t42-color-opacity-10);color:var(--t42-content-color);display:flex;font-weight:400;line-height:1.875rem;text-align:center;white-space:nowrap}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-text{border-radius:0;font-size:.75rem;padding:0 .875rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3.5rem}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-bottom-right-radius:0;border-top-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.valid-feedback{color:#43a047;display:none;font-size:.7rem;margin-top:.5rem;width:100%}.valid-tooltip{background-color:#43a047;border-radius:0;color:#000;display:none;font-size:.65625rem;margin-top:.1rem;max-width:100%;padding:.25rem 1rem;position:absolute;top:100%;z-index:5}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%2343a047' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1rem 1rem;border-color:#43a047;padding-right:2rem}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#43a047;box-shadow:0 0 0 0 #43a04740}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{background-position:top .5rem right .5rem;padding-right:2rem}.form-select.is-valid,.was-validated .form-select:valid{border-color:#43a047}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{background-image:var(--t42-select-indicator),url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%2343a047' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-position:right .5rem center,right 1.75rem center;background-size:1rem,1rem;padding-right:3.5rem}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#43a047;box-shadow:0 0 0 0 #43a04740}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#43a047}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#43a047}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 0 #43a04740}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#43a047}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{color:#ff511f;display:none;font-size:.7rem;margin-top:.5rem;width:100%}.invalid-tooltip{background-color:#ff511f;border-radius:0;color:#000;display:none;font-size:.65625rem;margin-top:.1rem;max-width:100%;padding:.25rem 1rem;position:absolute;top:100%;z-index:5}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23ff511f'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23ff511f' stroke='none'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1rem 1rem;border-color:#ff511f;padding-right:2rem}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#ff511f;box-shadow:0 0 0 0 #ff511f40}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{background-position:top .5rem right .5rem;padding-right:2rem}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#ff511f}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{background-image:var(--t42-select-indicator),url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23ff511f'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23ff511f' stroke='none'/%3E%3C/svg%3E");background-position:right .5rem center,right 1.75rem center;background-size:1rem,1rem;padding-right:3.5rem}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#ff511f;box-shadow:0 0 0 0 #ff511f40}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#ff511f}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#ff511f}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 0 #ff511f40}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#ff511f}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}input{background-color:var(--t42-input-bg)}input[type=date]::-webkit-calendar-picker-indicator,input[type=datetime-local]::-webkit-calendar-picker-indicator,input[type=month]::-webkit-calendar-picker-indicator,input[type=number]::-webkit-calendar-picker-indicator,input[type=time]::-webkit-calendar-picker-indicator,input[type=week]::-webkit-calendar-picker-indicator{background:#0000}input[type=date]::-webkit-inner-spin-button,input[type=datetime-local]::-webkit-inner-spin-button,input[type=month]::-webkit-inner-spin-button,input[type=number]::-webkit-inner-spin-button,input[type=time]::-webkit-inner-spin-button,input[type=week]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none}input[type=color],input[type=range]{border:0;padding:0}form div[class^=col]{position:relative}.form-check-label input[type=checkbox],.form-check-label input[type=radio]{margin-left:-1.2rem;margin-top:.125rem;opacity:1}.form-check .form-check-input:disabled{opacity:0}.form-check-label{margin-bottom:0}.form-check-inline .form-check-label{padding-left:.25rem}.form-check-inline input[type=radio]:checked+label:after{left:-1rem}.form-control{background-color:initial;transition-duration:.25s;transition-property:border;transition-timing-function:cubic-bezier(.45,0,.15,1)}.form-control.disabled,.form-control:disabled,.form-control[readonly]{cursor:default;opacity:.65}.form-control.is-invalid,.form-control.is-valid{border-color:var(--t42-color-opacity-10)}.form-control.is-invalid:focus,.form-control.is-valid:focus{border-color:#1c89ea;border-color:var(--primary);box-shadow:none}.form-control[type=file]{opacity:0}.form-text{color:#616161;color:var(--secondary)}.form-control-plaintext:focus{outline:0}select{-webkit-appearance:none;appearance:none;background-image:var(--t42-select-indicator);background-position:right .5rem center;background-repeat:no-repeat;background-size:1rem;cursor:pointer}select[multiple]{background-image:none;padding:0}select[multiple] option{padding:0 .875rem}select[multiple] option:checked{background-color:#1c89ea;background-color:var(--primary)}select:disabled{border-color:#0000;cursor:default;opacity:.65}textarea,textarea.form-control{max-height:180px;min-height:90px;padding-bottom:5px;padding-top:5px}textarea.form-control:disabled,textarea:disabled{border-color:#0000}input[type=range]{-webkit-appearance:none;appearance:none;width:100%}input[type=range]:focus{background-color:initial;outline:none}input[type=range]:focus::-ms-fill-lower,input[type=range]:focus::-ms-fill-upper{background:#1c89ea;background:var(--primary)}input[type=range]::-webkit-slider-runnable-track{background:var(--t42-color-opacity-10);border:0;border-radius:0;box-shadow:none;cursor:pointer;height:.0625rem;width:100%}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#1c89ea;background:var(--primary);border:0;border-radius:50%;box-shadow:none;cursor:pointer;height:12px;margin-top:-5px;width:12px}input[type=range]:focus::-webkit-slider-runnable-track{background:var(--t42-color-opacity-10)}input[type=range]::-moz-range-track{background:var(--t42-color-opacity-10);border:0;border-radius:0;box-shadow:none;cursor:pointer;height:2px;width:100%}input[type=range]::-moz-range-thumb{background:#1c89ea;background:var(--primary);border:0;border-radius:50px;box-shadow:none;cursor:pointer;height:12px;width:12px}input[type=range]::-ms-track{background:#0000;border-color:#0000;color:#0000;cursor:pointer;height:2px;width:100%}input[type=range]::-ms-fill-lower,input[type=range]::-ms-fill-upper{background:#1c89ea;background:var(--primary);border:0;border-radius:0;box-shadow:none}input[type=range]::-ms-thumb{background:#1c89ea;background:var(--primary);border:0;border-radius:50px;box-shadow:none;cursor:pointer;height:12px;width:12px}input[type=checkbox]{opacity:0}input[type=checkbox]+label{color:var(--t42-content-color-muted);cursor:pointer;position:relative;-webkit-user-select:none;user-select:none}input[type=checkbox]+label:before{border:.0625rem solid var(--t42-content-color-muted);border-radius:0;cursor:pointer;left:-1.25rem;pointer-events:all;top:.0625rem;transition-duration:.25s;transition-property:background-color,border-color;transition-timing-function:cubic-bezier(.45,0,.15,1)}input[type=checkbox]+label:after,input[type=checkbox]+label:before{content:"";display:block;height:.875rem;position:absolute;width:.875rem}input[type=checkbox]+label:after{background-image:none;left:-1.188rem;-webkit-mask-repeat:no-repeat;-webkit-mask-size:.75rem;top:.125rem}input[type=checkbox].indeterminate+label:before,input[type=checkbox]:indeterminate+label:before{background-color:#1c89ea;background-color:var(--primary);border-color:var(--t42-color-opacity-30)}input[type=checkbox].indeterminate+label:after,input[type=checkbox]:indeterminate+label:after{background-color:#fff;background-color:var(--white);height:.188rem;left:-1.063rem;top:.375rem;width:.5rem}input[type=checkbox].disabled+label,input[type=checkbox]:checked.disabled+label,input[type=checkbox]:checked:disabled+label,input[type=checkbox]:disabled+.form-check-label,input[type=checkbox]:disabled+label,input[type=checkbox]:indeterminate.disabled+label,input[type=checkbox]:indeterminate:disabled+label{color:var(--t42-content-color-disabled)}input[type=checkbox].disabled+label:before,input[type=checkbox]:checked.disabled+label:before,input[type=checkbox]:checked:disabled+label:before,input[type=checkbox]:disabled+label:before,input[type=checkbox]:indeterminate.disabled+label:before,input[type=checkbox]:indeterminate:disabled+label:before{background-color:var(--t42-color-opacity-10);border-color:#0000}input[type=checkbox]:checked+label:before{background-color:#1c89ea;background-color:var(--primary);border-color:var(--t42-color-opacity-30)}input[type=checkbox]:checked+label:after{background-color:var(--t42-link-color);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M212.486 435.149c-11.605 0-21.163-4.779-28.672-14.336l-92.16-120.832c-5.461-8.192-7.51-17.067-6.144-26.624s5.803-17.408 13.312-23.552 16.213-8.533 26.112-7.168c9.899 1.365 17.92 6.144 24.064 14.336l60.416 78.848L360.966 93.133c5.461-8.192 12.8-13.312 22.016-15.36s18.261-.683 27.136 4.096c8.192 5.461 13.312 12.8 15.36 22.016s.683 18.261-4.096 27.136l-179.2 286.72c-6.827 10.923-16.384 16.384-28.672 16.384l-1.024 1.024z'/%3E%3C/svg%3E")}input[type=radio]{opacity:0}input[type=radio]+label{color:var(--t42-content-color-muted);cursor:pointer;position:relative;-webkit-user-select:none;user-select:none}input[type=radio]+label:before{border:.0625rem solid var(--t42-content-color-muted);cursor:pointer;height:.875rem;left:-1.25rem;pointer-events:all;top:.0625rem;width:.875rem}input[type=radio]+label:after,input[type=radio]+label:before{border-radius:50%;content:"";display:block;position:absolute;transition-duration:.25s;transition-property:background-color,border;transition-timing-function:cubic-bezier(.45,0,.15,1)}input[type=radio]+label:after{background-image:none;color:#fff;color:var(--white);height:.375rem;left:-1rem;opacity:0;top:.313rem;transform:scale(0);width:.375rem}input[type=radio]+label:focus{border-color:#1c89ea;border-color:var(--primary)}input[type=radio].disabled+label,input[type=radio]:checked.disabled+label,input[type=radio]:checked:disabled+label,input[type=radio]:disabled+.form-check-label,input[type=radio]:disabled+label{color:var(--t42-content-color-disabled)}input[type=radio].disabled+label:before,input[type=radio]:checked.disabled+label:before,input[type=radio]:checked:disabled+label:before,input[type=radio]:disabled+label:before{background-color:var(--t42-color-opacity-10);border-color:#0000}input[type=radio]:checked+label:before{background-color:#1c89ea;background-color:var(--primary);border-color:var(--t42-color-opacity-30)}input[type=radio]:checked+label:after{background-color:#fff;background-color:var(--white);opacity:1;transform:scale(1)}.custom-control{padding-left:1.25rem}.custom-control .custom-control-input:checked~.custom-control-label:before{border-color:var(--t42-color-opacity-30)}.custom-select,.form-select{background-color:initial;background-image:var(--t42-select-indicator);background-position:right .5rem center;background-repeat:no-repeat;background-size:1rem;max-height:2rem}.custom-select option,.custom-select:focus,.form-select option,.form-select:focus{background-color:var(--t42-input-bg)}.custom-select:disabled option,.form-select:disabled option{background-color:initial}.custom-radio .custom-control-label{color:var(--t42-content-color-muted);-webkit-user-select:none;user-select:none}.custom-radio .custom-control-label:after{background:none}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:none}.custom-checkbox .custom-control-label{color:var(--t42-content-color-muted);-webkit-user-select:none;user-select:none}.custom-checkbox .custom-control-label:after{background:none}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:none}.custom-checkbox .custom-control-input:disabled .custom-control-label:after,.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:after,.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:after{opacity:.4}.custom-checkbox .custom-control-input:disabled~.custom-control-label:before{border-color:#0000}.switch{align-items:center;cursor:pointer;display:inline-block;height:.875rem;margin-bottom:0;padding-left:2rem;position:relative}.switch.disabled{color:var(--t42-content-color-disabled)}.switch .slider{border:1px solid var(--t42-content-color-muted);bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;transition:.4s;width:1.75rem}.switch .slider:before{background-color:var(--t42-content-color-muted);bottom:.125rem;content:"";height:.5rem;left:.125rem;position:absolute;transition:.4s;width:.5rem}.switch input{height:0;opacity:0;width:0}.switch input:checked+.slider{background-color:#1c89ea;background-color:var(--primary);border:var(--t42-border)}.switch input:checked+.slider:before{background-color:#fff;background-color:var(--white);transform:translateX(.875rem)}.switch input:focus+.slider{box-shadow:0 0 1px #2196f3}.switch input:disabled+.slider{background-color:var(--t42-color-opacity-10);border:var(--t42-border)}.switch input:disabled+.slider:before{background-color:var(--t42-color-opacity-20)}.input-group-prepend .input-group-text{border-right:0;justify-content:center}.input-group-append .input-group-text{border-left:0;justify-content:center}.input-group-append .custom-control,.input-group-prepend .custom-control{margin-bottom:0;padding-left:.875rem}.input-group-append .custom-control-label,.input-group-prepend .custom-control-label{left:0;min-height:.875rem;min-width:.875rem;position:absolute}.input-group-append .custom-control-label:before,.input-group-prepend .custom-control-label:before{left:0}.input-group-append .custom-control-label:after,.input-group-prepend .custom-control-label:after{left:.25rem}.input-group-append .custom-checkbox .custom-control-label:after,.input-group-prepend .custom-checkbox .custom-control-label:after{left:.125rem}.custom-file{margin-bottom:1rem}.custom-file-input,.form-control[type=file]{z-index:1}.custom-file-input:focus~.custom-file-label,.form-control[type=file]:focus~.custom-file-label{background-color:var(--t42-input-bg)}.custom-file-label,.input-group-text{background-color:initial}.custom-file-label:after,.input-group-text:after{background-color:Rgba(--secondary,.05);cursor:pointer;transition-duration:.25s;transition-property:background-color;transition-timing-function:cubic-bezier(.45,0,.15,1)}.custom-file-label:hover:after,.input-group-text:hover:after{background-color:#616161;background-color:var(--secondary);color:#fff;color:var(--white)}.form-control[type=file]+.input-group-text{border:var(--t42-border);color:var(--t42-content-color-muted);height:2rem;left:0;z-index:1}.form-control[type=file]+.input-group-text,.form-control[type=file]+.input-group-text:after{padding:.375rem .875rem;position:absolute;right:0;top:0;transition-duration:.25s;transition-property:background-color,color;transition-timing-function:cubic-bezier(.45,0,.15,1)}.form-control[type=file]+.input-group-text:after{border-left:inherit;bottom:0;color:var(--t42-link-color);content:"Browse";cursor:pointer;display:block;height:100%;line-height:1.5;z-index:3}.form-control[type=file]+.input-group-text:hover{background-color:var(--t42-input-bg)}.form-control[type=file]+.input-group-text:hover:after{background-color:#616161;background-color:var(--secondary);color:#fff;color:var(--white)}.custom-switch{padding-left:2rem}.custom-switch .custom-control-label:before{left:-2rem}.custom-switch .custom-control-label:after{height:.5rem;left:-1.813rem;top:.25rem;width:.5rem}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;background-color:var(--white);content:""}.custom-switch .custom-control-input:not(:disabled):active~.custom-control-label:before{background-color:#1c89ea;background-color:var(--primary);border-color:var(--t42-color-opacity-30)}.invalid-feedback,.invalid-tooltip,.valid-feedback,.valid-tooltip,.warning-feedback,.warning-tooltip{bottom:-1rem;color:var(--t42-content-color);font-size:.7rem;margin-top:0;overflow:hidden;position:absolute;text-overflow:ellipsis;white-space:nowrap;width:calc(100% - 1.875rem)}.invalid-tooltip,.valid-tooltip,.warning-tooltip{color:var(--t42-content-color-muted)}.custom-checkbox label+div,.custom-radio label+div,.form-check label+div{transform:translateX(-1.25rem);width:calc(100% + 1.25rem)}.form-group{margin-bottom:1rem}label{margin-bottom:.5rem}.form-row{display:flex;flex-wrap:wrap;margin-left:-.5rem;margin-right:-.5rem}.form-row>.col,.form-row>[class*=col-]{padding-left:.5rem;padding-right:.5rem}.form-inline{align-items:center;display:flex;flex-flow:row wrap}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{justify-content:center}.form-inline .form-group,.form-inline label{align-items:center;display:flex;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .form-control{display:inline-block;vertical-align:middle;width:auto}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .form-select,.form-inline .input-group{width:auto}.form-inline .form-check{align-items:center;display:flex;justify-content:center;padding-left:0;width:auto}.form-inline .form-check-input{flex-shrink:0;margin-left:0;margin-top:0;position:relative}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}/*! + * Bootstrap Grid v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--bs-blue:#1c89ea;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#fd397a;--bs-red:#ff511f;--bs-orange:#fd7e14;--bs-yellow:#f9a825;--bs-green:#43a047;--bs-teal:#616161;--bs-cyan:#469eb9;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#1c89ea;--bs-secondary:#616161;--bs-success:#43a047;--bs-info:#469eb9;--bs-warning:#f9a825;--bs-danger:#ff511f;--bs-light:#616161;--bs-dark:#616161;--bs-primary-rgb:28,137,234;--bs-secondary-rgb:97,97,97;--bs-success-rgb:67,160,71;--bs-info-rgb:70,158,185;--bs-warning-rgb:249,168,37;--bs-danger-rgb:255,81,31;--bs-light-rgb:97,97,97;--bs-dark-rgb:97,97,97;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg,#ffffff26,#fff0);--bs-body-font-family:Montserrat,Helvetica Neue,Arial,sans-serif;--bs-body-font-size:.75rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{margin-left:auto;margin-right:auto;padding-left:.938rem;padding-left:var(--bs-gutter-x,.75rem);padding-right:.938rem;padding-right:var(--bs-gutter-x,.75rem);width:100%}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-left:-.469rem;margin-left:calc(var(--bs-gutter-x)*-.5);margin-right:-.469rem;margin-right:calc(var(--bs-gutter-x)*-.5);margin-top:calc(var(--bs-gutter-y)*-1)}.row>*{box-sizing:border-box;flex-shrink:0;margin-top:var(--bs-gutter-y);max-width:100%;padding-left:.469rem;padding-left:calc(var(--bs-gutter-x)*.5);padding-right:.469rem;padding-right:calc(var(--bs-gutter-x)*.5);width:100%}.col{flex:1 0}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333%}.col-2{flex:0 0 auto;width:16.66667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333%}.col-5{flex:0 0 auto;width:41.66667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333%}.col-8{flex:0 0 auto;width:66.66667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333%}.col-11{flex:0 0 auto;width:91.66667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:.25rem}.g-1,.gy-1{--bs-gutter-y:.25rem}.g-2,.gx-2{--bs-gutter-x:.5rem}.g-2,.gy-2{--bs-gutter-y:.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333%}.col-sm-2{flex:0 0 auto;width:16.66667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333%}.col-sm-5{flex:0 0 auto;width:41.66667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333%}.col-sm-8{flex:0 0 auto;width:66.66667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333%}.col-sm-11{flex:0 0 auto;width:91.66667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333%}.col-md-2{flex:0 0 auto;width:16.66667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333%}.col-md-5{flex:0 0 auto;width:41.66667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333%}.col-md-8{flex:0 0 auto;width:66.66667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333%}.col-md-11{flex:0 0 auto;width:91.66667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333%}.col-lg-2{flex:0 0 auto;width:16.66667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333%}.col-lg-5{flex:0 0 auto;width:41.66667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333%}.col-lg-8{flex:0 0 auto;width:66.66667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333%}.col-lg-11{flex:0 0 auto;width:91.66667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333%}.col-xl-2{flex:0 0 auto;width:16.66667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333%}.col-xl-5{flex:0 0 auto;width:41.66667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333%}.col-xl-8{flex:0 0 auto;width:66.66667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333%}.col-xl-11{flex:0 0 auto;width:91.66667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333%}.col-xxl-2{flex:0 0 auto;width:16.66667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333%}.col-xxl-5{flex:0 0 auto;width:41.66667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333%}.col-xxl-8{flex:0 0 auto;width:66.66667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333%}.col-xxl-11{flex:0 0 auto;width:91.66667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333%}.offset-xxl-2{margin-left:16.66667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333%}.offset-xxl-5{margin-left:41.66667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333%}.offset-xxl-8{margin-left:66.66667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333%}.offset-xxl-11{margin-left:91.66667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-bottom:0!important;margin-top:0!important}.my-sm-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-sm-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-sm-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-sm-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-sm-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-sm-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-bottom:0!important;padding-top:0!important}.py-sm-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-sm-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-sm-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-sm-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-sm-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-bottom:0!important;margin-top:0!important}.my-md-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-md-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-md-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-md-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-md-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-md-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-bottom:0!important;padding-top:0!important}.py-md-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-md-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-md-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-md-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-md-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-bottom:0!important;margin-top:0!important}.my-lg-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-lg-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-lg-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-lg-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-lg-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-lg-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-bottom:0!important;padding-top:0!important}.py-lg-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-lg-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-lg-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-lg-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-lg-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-bottom:0!important;margin-top:0!important}.my-xl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-bottom:0!important;padding-top:0!important}.py-xl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xl-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-bottom:0!important;margin-top:0!important}.my-xxl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xxl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xxl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xxl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xxl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xxl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-bottom:0!important;padding-top:0!important}.py-xxl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xxl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xxl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xxl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xxl-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}}.row{--bs-gutter-x:1.875rem}.img-fluid,.img-thumbnail{height:auto;max-width:100%}.img-thumbnail{background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;padding:.25rem}.figure{display:inline-block}.figure-img{line-height:1;margin-bottom:.5rem}.figure-caption{color:#6c757d;font-size:.875em}.list-group{border-radius:0;display:flex;flex-direction:column;margin-bottom:0;padding-left:0}.list-group-numbered{counter-reset:section;list-style-type:none}.list-group-numbered>li:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{color:var(--t42-content-color);text-align:inherit;width:100%}.list-group-item-action:focus,.list-group-item-action:hover{background-color:var(--t42-link-hover-bg);color:var(--t42-link-hover-color);text-decoration:none;z-index:1}.list-group-item-action:active{background-color:var(--t42-link-active-bg);color:var(--t42-link-hover-color)}.list-group-item{background-color:Rgb(var(--t42-bg-mid));border:1px solid #0000;color:inherit;display:block;padding:.75rem 1.25rem;position:relative;text-decoration:none}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{background-color:#0000;color:var(--t42-content-color-disabled);pointer-events:none}.list-group-item.active{background-color:var(--t42-link-active-bg);border-color:#0000;color:var(--t42-link-hover-color);z-index:2}.list-group-item+.list-group-item.active{border-top-width:1px;margin-top:-1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child,.list-group-horizontal>.list-group-item:last-child{border-bottom-left-radius:0;border-top-right-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-left-width:0;border-top-width:1px}.list-group-horizontal>.list-group-item+.list-group-item.active{border-left-width:1px;margin-left:-1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child,.list-group-horizontal-sm>.list-group-item:last-child{border-bottom-left-radius:0;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-left-width:0;border-top-width:1px}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{border-left-width:1px;margin-left:-1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child,.list-group-horizontal-md>.list-group-item:last-child{border-bottom-left-radius:0;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-left-width:0;border-top-width:1px}.list-group-horizontal-md>.list-group-item+.list-group-item.active{border-left-width:1px;margin-left:-1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child,.list-group-horizontal-lg>.list-group-item:last-child{border-bottom-left-radius:0;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-left-width:0;border-top-width:1px}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{border-left-width:1px;margin-left:-1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child,.list-group-horizontal-xl>.list-group-item:last-child{border-bottom-left-radius:0;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-left-width:0;border-top-width:1px}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{border-left-width:1px;margin-left:-1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child,.list-group-horizontal-xxl>.list-group-item:last-child{border-bottom-left-radius:0;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-left-width:0;border-top-width:1px}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{border-left-width:1px;margin-left:-1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{background-color:#d2e7fb;color:#11528c}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{background-color:#bdd0e2;color:#11528c}.list-group-item-primary.list-group-item-action.active{background-color:#11528c;border-color:#11528c;color:#fff}.list-group-item-secondary{background-color:#dfdfdf;color:#3a3a3a}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{background-color:#c9c9c9;color:#3a3a3a}.list-group-item-secondary.list-group-item-action.active{background-color:#3a3a3a;border-color:#3a3a3a;color:#fff}.list-group-item-success{background-color:#d9ecda;color:#28602b}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{background-color:#c3d4c4;color:#28602b}.list-group-item-success.list-group-item-action.active{background-color:#28602b;border-color:#28602b;color:#fff}.list-group-item-info{background-color:#daecf1;color:#2a5f6f}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{background-color:#c4d4d9;color:#2a5f6f}.list-group-item-info.list-group-item-action.active{background-color:#2a5f6f;border-color:#2a5f6f;color:#fff}.list-group-item-warning{background-color:#feeed3;color:#64430f}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{background-color:#e5d6be;color:#64430f}.list-group-item-warning.list-group-item-action.active{background-color:#64430f;border-color:#64430f;color:#fff}.list-group-item-danger{background-color:#ffdcd2;color:#993113}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{background-color:#e6c6bd;color:#993113}.list-group-item-danger.list-group-item-action.active{background-color:#993113;border-color:#993113;color:#fff}.list-group-item-light{background-color:#dfdfdf;color:#3a3a3a}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{background-color:#c9c9c9;color:#3a3a3a}.list-group-item-light.list-group-item-action.active{background-color:#3a3a3a;border-color:#3a3a3a;color:#fff}.list-group-item-dark{background-color:#dfdfdf;color:#3a3a3a}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{background-color:#c9c9c9;color:#3a3a3a}.list-group-item-dark.list-group-item-action.active{background-color:#3a3a3a;border-color:#3a3a3a;color:#fff}.list-unstyled{list-style:none;padding-left:0}.list-group{box-shadow:var(--t42-shadow)}.list-group-item{-webkit-backdrop-filter:var(--backdrop-filter);backdrop-filter:var(--backdrop-filter);border:0;border-bottom:var(--t42-border);margin-bottom:0;transition-duration:.25s;transition-property:color;transition-timing-function:cubic-bezier(.45,0,.15,1)}.list-group-item:last-child{border-bottom:#0000}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{border-top-width:0;margin-top:0}.list-group-item-action{background-image:linear-gradient(45deg,#0000 0,#0000 50%,var(--t42-list-group-hover-bg-special) 50%);background-repeat:no-repeat;background-size:400%;transition-duration:.25s;transition-duration:.45s;transition-property:background,color;transition-timing-function:cubic-bezier(.45,0,.15,1)}.list-group-item-action:focus,.list-group-item-action:hover{background-position:99%}.list-group-item-action.active:hover{background-color:var(--t42-color-opacity-05)}.modal{display:none;height:100%;left:0;outline:0;overflow-x:hidden;overflow-y:auto;position:fixed;top:0;width:100%;z-index:1055}.modal-dialog{margin:.5rem;pointer-events:none;position:relative;width:auto}.modal.fade .modal-dialog{transform:translateY(-50px);transition:transform .3s ease-out}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{align-items:center;display:flex;min-height:calc(100% - 1rem)}.modal-content{background-clip:padding-box;background-color:var(--t42-modal-bg);border:.0625rem solid var(--t42-color-opacity-10);border-radius:0;display:flex;flex-direction:column;outline:0;pointer-events:auto;position:relative;width:100%}.modal-backdrop{background-color:#000;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:1050}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{align-items:center;border-bottom:.0625rem solid #0000;border-top-left-radius:0;border-top-right-radius:0;display:flex;flex-shrink:0;justify-content:space-between;padding:1rem}.modal-header .btn-close{margin:-.5rem -.5rem -.5rem auto;padding:.5rem}.modal-title{line-height:1.5;margin-bottom:0}.modal-body{flex:1 1 auto;padding:1rem;position:relative}.modal-footer{align-items:center;border-bottom-left-radius:0;border-bottom-right-radius:0;border-top:.0625rem solid #0000;display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;padding:.75rem}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{margin:1.75rem auto;max-width:500px}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen-sm-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen-md-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen-lg-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen-xl-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{height:100%;margin:0;max-width:none;width:100vw}.modal-fullscreen-xxl-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.modal{-webkit-backdrop-filter:var(--backdrop-filter);backdrop-filter:var(--backdrop-filter)}.modal .btn-close{background-size:.75rem;filter:var(--filter-close);font-size:1.25rem}.modal-content{background:linear-gradient(to bottom right,Rgba(var(--t42-bg-light),.75) 0,Rgba(var(--t42-bg-dark),.75) 100%);border-top:0;box-shadow:var(--t42-shadow)}.modal-content:before{background:linear-gradient(90deg,#1c89ea,#1c89ea80);content:"";display:block;height:.0625rem}.modal-body{padding:0 1rem}.modal-body p:last-child{margin-bottom:0}.modal-sm .modal-footer{flex-direction:column}.modal-sm .modal-footer .btn{width:100%}.modal-sm .modal-footer .btn:not(:last-of-type){margin-bottom:.5rem}.modal-fill-in{background-color:Rgba(var(--t42-bg-light),.75)}.modal-fill-in.modal-dialog{align-content:center;align-items:center;display:flex;flex-flow:column nowrap;height:100%;justify-content:center;margin:0 auto;max-width:100%;width:auto}.modal-fill-in .modal-content{-webkit-backdrop-filter:none;backdrop-filter:none;background:#0000;background-color:initial;border-color:#0000;box-shadow:none;display:flex;max-width:600px;pointer-events:auto}.modal-fill-in .modal-content:before{display:none}.modal-fill-in:before{background:linear-gradient(90deg,#1c89ea,#1c89ea80);content:"";display:block;height:.0625rem;left:0;position:fixed;right:0;top:0}.modal-fill-in.modal-lg .modal-content{max-width:800px}.modal-fill-in.modal-sm .modal-content{max-width:300px}.nav{display:flex;flex-wrap:wrap;list-style:none;margin-bottom:0;padding-left:0}.nav-link{color:var(--t42-link-color);display:block;padding:.45rem 1rem;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--t42-link-hover-color)}.nav-link.disabled{color:var(--t42-content-color-disabled);cursor:default;pointer-events:none}.nav-tabs{border-bottom:.0625rem solid var(--t42-color-opacity-10)}.nav-tabs .nav-link{background:none;border:.0625rem solid #0000;border-top-left-radius:0;border-top-right-radius:0;margin-bottom:-.0625rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#0000 #0000 var(--t42-color-opacity-10);isolation:isolate}.nav-tabs .nav-link.disabled{background-color:initial;border-color:#0000;color:var(--t42-content-color-disabled)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{background-color:var(--t42-link-active-bg);border-color:#0000 #0000 #1c89ea;color:var(--t42-link-hover-color)}.nav-tabs .dropdown-menu{border-top-left-radius:0;border-top-right-radius:0;margin-top:-.0625rem}.nav-pills .nav-link{background:none;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{background-color:var(--t42-link-active-bg);color:var(--t42-link-hover-color)}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-link{border:.0625rem solid #0000;margin-right:3px;transition-duration:.25s;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.45,0,.15,1)}.nav-link:not(.disabled):not(:disabled).active,.nav-link:not(.disabled):not(:disabled):active,.nav-link:not(.disabled):not(:disabled):focus,.nav-link:not(.disabled):not(:disabled):hover{background-color:var(--t42-link-hover-bg);border-color:var(--t42-color-opacity-10);color:var(--t42-link-color)}.nav-link.dropdown-toggle:after{right:-.125rem}.navbar-nav .nav-item{bottom:-1px}.navbar-nav .nav-item .nav-link{border-bottom:0}.navbar-nav .nav-item:not(.disabled):not(:disabled).active .nav-link,.navbar-nav .nav-item:not(.disabled):not(:disabled):active .nav-link,.navbar-nav .nav-item:not(.disabled):not(:disabled):focus .nav-link,.navbar-nav .nav-item:not(.disabled):not(:disabled):hover .nav-link{border-color:var(--t42-color-opacity-10)}.nav.flex-column .nav-link{margin-bottom:3px}.nav-tabs .nav-link{align-items:center;display:flex;height:2rem;position:relative}.nav-tabs .nav-link:before{background-color:#1c89ea;background-color:var(--primary);bottom:-2px;content:"";height:0;left:-1px;position:absolute;transition-duration:.25s;transition-property:height;transition-timing-function:cubic-bezier(.45,0,.15,1);width:calc(100% + 2px)}.nav-tabs .nav-link.active:before{height:3px}.nav-tabs .nav-link.active:hover:before{height:0}.nav-tabs .nav-link .btn-close{height:.5rem;width:.5rem}.nav-tabs .nav-item{margin-right:0}.nav-tabs .dropdown.show .dropdown-toggle{border-color:#0000}.nav-tabs.flex-column .nav-link.active:hover:before{width:0}.nav-tabs.flex-column .nav-link:before{background-color:#1c89ea;background-color:var(--primary);content:"";height:100%;margin-left:0;top:-1px;transition-duration:.25s;transition-property:width;transition-timing-function:cubic-bezier(.45,0,.15,1);width:0}.nav-tabs.flex-column .nav-link.active:before{height:calc(100% + 2px);width:3px}.nav-pills .nav-link{border:1px solid #0000;border-radius:1rem;overflow:hidden;padding:.25rem 1rem;text-overflow:ellipsis;white-space:nowrap;width:100%}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{border-color:#0000;position:relative}.nav-pills .nav-item{margin-right:3px}.nav-pills .nav-item:last-child{margin-right:0}.nav-pills .nav-link.active:not(.dropdown-toggle),.nav-pills .show>.nav-link:not(.dropdown-toggle){padding:.25rem 1.75rem .25rem 1rem}.nav-pills .nav-link.active:not(.dropdown-toggle):before,.nav-pills .show>.nav-link:not(.dropdown-toggle):before{background-color:#1c89ea;background-color:var(--primary);border-radius:50%;content:"";height:8px;position:absolute;right:10px;top:50%;transform:translateY(-50%);transition-duration:.25s;transition-property:right;transition-timing-function:cubic-bezier(.45,0,.15,1);width:8px}.nav-pills .nav-link.active:not(.dropdown-toggle):hover:before,.nav-pills .show>.nav-link:not(.dropdown-toggle):hover:before{right:-10px}.nav-justified .nav-item .nav-link:before{left:-1px;margin-left:0;right:1px}.tab-content{padding-top:.5rem}.nav-action-buttons .nav-link{padding:.45rem 1.5rem .45rem 1rem;position:relative}.nav-action-buttons .icon-cancel:before{background-color:var(--t42-content-color);content:"";display:block;height:1rem;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M366.854 336.384c6.144 6.144 9.216 13.483 9.216 22.016s-3.072 15.872-9.216 22.016c-6.144 5.461-13.483 8.192-22.016 8.192-8.533 0-15.872-2.73-22.016-8.192l-67.584-77.824-67.584 77.824c-6.144 5.461-13.483 8.192-22.016 8.192-8.533 0-15.872-2.73-22.016-8.192-5.461-6.144-8.192-13.483-8.192-22.016s2.73-15.872 8.192-22.016l70.656-79.872-70.656-80.896c-5.461-6.144-8.192-13.483-8.192-22.016 0-8.533 2.73-15.872 8.192-22.016 6.144-5.461 13.483-8.192 22.016-8.192 8.533 0 15.872 2.73 22.016 8.192l67.584 77.824 67.584-77.824c6.144-5.461 13.483-8.192 22.016-8.192 8.533 0 15.872 2.73 22.016 8.192 6.144 6.144 9.216 13.483 9.216 22.016 0 8.533-3.072 15.872-9.216 22.016l-70.656 80.896 70.656 79.872z'/%3E%3C/svg%3E");width:1rem}.navbar{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;padding:0 .875rem;position:relative}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{align-items:center;display:flex;flex-wrap:inherit;justify-content:space-between}.navbar-brand{font-size:1.25rem;margin-right:1rem;padding-bottom:.075rem;padding-top:.075rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;list-style:none;margin-bottom:0;padding-left:0}.navbar-nav .nav-link{padding-left:0;padding-right:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-bottom:.45rem;padding-top:.45rem}.navbar-collapse{align-items:center;flex-basis:100%;flex-grow:1}.navbar-toggler{background-color:initial;border:1px solid #0000;border-radius:0;font-size:.9375rem;line-height:1;padding:0;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{box-shadow:0 0 0 0;outline:0;text-decoration:none}.navbar-toggler-icon{background-position:50%;background-repeat:no-repeat;background-size:100%;display:inline-block;height:1.5em;vertical-align:middle;width:1.5em}.navbar-nav-scroll{max-height:75vh;max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler,.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{background-color:initial;border-left:0;border-right:0;bottom:0;flex-grow:1;position:inherit;transform:none;transition:none;visibility:visible!important;z-index:1000}.navbar-expand-sm .offcanvas-bottom,.navbar-expand-sm .offcanvas-top{border-bottom:0;border-top:0;height:auto}.navbar-expand-sm .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler,.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{background-color:initial;border-left:0;border-right:0;bottom:0;flex-grow:1;position:inherit;transform:none;transition:none;visibility:visible!important;z-index:1000}.navbar-expand-md .offcanvas-bottom,.navbar-expand-md .offcanvas-top{border-bottom:0;border-top:0;height:auto}.navbar-expand-md .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler,.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{background-color:initial;border-left:0;border-right:0;bottom:0;flex-grow:1;position:inherit;transform:none;transition:none;visibility:visible!important;z-index:1000}.navbar-expand-lg .offcanvas-bottom,.navbar-expand-lg .offcanvas-top{border-bottom:0;border-top:0;height:auto}.navbar-expand-lg .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler,.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{background-color:initial;border-left:0;border-right:0;bottom:0;flex-grow:1;position:inherit;transform:none;transition:none;visibility:visible!important;z-index:1000}.navbar-expand-xl .offcanvas-bottom,.navbar-expand-xl .offcanvas-top{border-bottom:0;border-top:0;height:auto}.navbar-expand-xl .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler,.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{background-color:initial;border-left:0;border-right:0;bottom:0;flex-grow:1;position:inherit;transform:none;transition:none;visibility:visible!important;z-index:1000}.navbar-expand-xxl .offcanvas-bottom,.navbar-expand-xxl .offcanvas-top{border-bottom:0;border-top:0;height:auto}.navbar-expand-xxl .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler,.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{background-color:initial;border-left:0;border-right:0;bottom:0;flex-grow:1;position:inherit;transform:none;transition:none;visibility:visible!important;z-index:1000}.navbar-expand .offcanvas-bottom,.navbar-expand .offcanvas-top{border-bottom:0;border-top:0;height:auto}.navbar-expand .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}.navbar-light .navbar-brand{color:var(--t42-link-color)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:var(--t42-link-hover-color)}.navbar-light .navbar-nav .nav-link{color:var(--t42-link-color)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:var(--t42-link-hover-color)}.navbar-light .navbar-nav .nav-link.disabled{color:var(--t42-content-color-disabled)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:var(--t42-link-hover-color)}.navbar-light .navbar-toggler{border-color:#0000001a;color:var(--t42-link-color)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='var(--t42-link-color)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:var(--t42-link-color)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:var(--t42-link-hover-color)}.navbar-dark .navbar-brand{color:var(--t42-link-color)}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:var(--t42-link-hover-color)}.navbar-dark .navbar-nav .nav-link{color:var(--t42-link-color)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:var(--t42-link-hover-color)}.navbar-dark .navbar-nav .nav-link.disabled{color:var(--t42-content-color-disabled)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:var(--t42-link-hover-color)}.navbar-dark .navbar-toggler{border-color:#ffffff1a;color:var(--t42-link-color)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='var(--t42-link-color)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:var(--t42-link-color)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:var(--t42-link-hover-color)}.navbar{-webkit-backdrop-filter:var(--backdrop-filter);backdrop-filter:var(--backdrop-filter);background-color:Rgba(var(--t42-bg-mid),.75);border-bottom:var(--t42-border)}.navbar-dark{background-color:Rgba(var(--t42-bg-dark),.75)}.navbar-light{background-color:Rgba(var(--t42-bg-light),.75)}.navbar .nav-item{position:relative}.navbar .nav-item.show.active .nav-link:not(.disabled):not(:disabled),.navbar .nav-item.show:active .nav-link:not(.disabled):not(:disabled),.navbar .nav-item.show:focus .nav-link:not(.disabled):not(:disabled),.navbar .nav-item:not(.disabled):not(:disabled).active .nav-link:not(.disabled):not(:disabled),.navbar .nav-item:not(.disabled):not(:disabled):active .nav-link:not(.disabled):not(:disabled),.navbar .nav-item:not(.disabled):not(:disabled):focus .nav-link:not(.disabled):not(:disabled){background-color:var(--t42-color-opacity-10);color:var(--t42-link-color)}.navbar .nav-item.show:hover .nav-link:not(.disabled):not(:disabled),.navbar .nav-item:not(.disabled):not(:disabled):hover .nav-link:not(.disabled):not(:disabled){background-color:var(--t42-color-opacity-05);color:var(--t42-link-color)}.navbar .nav-link{padding-left:.875rem;padding-right:.875rem}.navbar .btn-group{border-left:var(--t42-border);height:100%;padding-left:.875rem}.pagination{display:flex;list-style:none;padding-left:0}.page-link{background-color:#0000;border:0 solid #0000;color:var(--t42-content-color);display:block;position:relative;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{background-color:var(--t42-link-hover-bg);border-color:#dee2e6;color:var(--t42-link-hover-color);z-index:2}.page-link:focus{background-color:#0000;box-shadow:0 0 0 0 #1c89ea40;color:var(--t42-link-hover-color);outline:0;z-index:3}.page-item:not(:first-child) .page-link{margin-left:0}.page-item.active .page-link{background-color:#1c89ea;background-color:var(--primary);border-color:#1c89ea;border-color:var(--primary);color:#fff;color:var(--white);z-index:3}.page-item.disabled .page-link{background-color:#0000;border-color:#dee2e6;color:var(--t42-content-color-disabled);pointer-events:none}.page-link{padding:.125rem .5rem}.page-item:first-child .page-link{border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.page-item:last-child .page-link{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.pagination-lg .page-link{font-size:.9375rem;padding:.75rem 1.5rem}.pagination-lg .page-item:first-child .page-link{border-bottom-left-radius:1rem;border-top-left-radius:1rem}.pagination-lg .page-item:last-child .page-link{border-bottom-right-radius:1rem;border-top-right-radius:1rem}.pagination-sm .page-link{font-size:.65625rem;padding:.25rem .5rem}.pagination-sm .page-item:first-child .page-link{border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.pagination-sm .page-item:last-child .page-link{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.page-link{align-items:center;border-radius:.25rem;display:flex;justify-content:center;min-height:1.5rem;min-width:1.5rem;overflow:hidden;transition-duration:.25s;transition-property:background-color,color;transition-timing-function:cubic-bezier(.45,0,.15,1)}.page-link[aria-label=Next],.page-link[aria-label=Previous]{padding:0}.page-link[aria-label=Next] span{transform:rotate(-90deg)}.page-link[aria-label=Next] span,.page-link[aria-label=Previous] span{background:var(--t42-select-indicator) center center/1rem 1rem no-repeat}.page-link[aria-label=Previous] span{transform:rotate(90deg)}.page-link>span{clip:auto;font-size:0;height:100%;min-height:1rem;width:100%}.pagination-lg .page-link[aria-label=Next],.pagination-lg .page-link[aria-label=Previous]{padding:.75rem 1.5rem}.page-item{margin-right:8px}.page-item:first-child .page-link>span:not(.sr-only):before,.page-item:last-child .page-link>span:not(.sr-only):before{top:-.125rem}.page-item.active .page-link:hover,.page-item:active .page-link:hover{background-color:var(--t42-color-opacity-05)}.page-item.active.disabled .page-link{background-color:var(--t42-color-opacity-10)}.popover{word-wrap:break-word;background-clip:padding-box;background-color:Rgba(var(--t42-bg-dark),.75);border:1px solid var(--t42-color-opacity-10);border-radius:0;display:block;font-family:Montserrat,Helvetica Neue,Arial,sans-serif;font-size:.65625rem;font-style:normal;font-weight:400;left:0;letter-spacing:normal;line-break:auto;line-height:1.5;max-width:276px;position:absolute;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;top:0;white-space:normal;word-break:normal;word-spacing:normal;z-index:1070}.popover .popover-arrow{display:block;height:.5rem;position:absolute;width:1rem}.popover .popover-arrow:after,.popover .popover-arrow:before{border-color:#0000;border-style:solid;content:"";display:block;position:absolute}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:before{border-top-color:var(--t42-color-opacity-10);border-width:.5rem .5rem 0;bottom:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-top>.popover-arrow:after{border-top-color:var(--t42-color-opacity-10);border-width:.5rem .5rem 0;bottom:1px}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{height:1rem;left:calc(-.5rem - 1px);width:.5rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:before{border-right-color:var(--t42-color-opacity-10);border-width:.5rem .5rem .5rem 0;left:0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-end>.popover-arrow:after{border-right-color:var(--t42-color-opacity-10);border-width:.5rem .5rem .5rem 0;left:1px}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:before{border-bottom-color:var(--t42-color-opacity-10);border-width:0 .5rem .5rem;top:0}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:after{border-bottom-color:var(--t42-color-opacity-10);border-width:0 .5rem .5rem;top:1px}.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{border-bottom:1px solid rgba(var(--t42-bg-mid),.75);content:"";display:block;left:50%;margin-left:-.5rem;position:absolute;top:0;width:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{height:1rem;right:calc(-.5rem - 1px);width:.5rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:before{border-left-color:var(--t42-color-opacity-10);border-width:.5rem 0 .5rem .5rem;right:0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-start>.popover-arrow:after{border-left-color:var(--t42-color-opacity-10);border-width:.5rem 0 .5rem .5rem;right:1px}.popover-header{background-color:Rgba(var(--t42-bg-mid),.75);border-bottom:1px solid var(--t42-color-opacity-10);border-top-left-radius:0;border-top-right-radius:0;color:var(--t42-link-color);font-size:.75rem;margin-bottom:0;padding:.55rem 1rem}.popover-header:empty{display:none}.popover-body{color:var(--t42-content-color);padding:1rem}.popover{-webkit-backdrop-filter:var(--backdrop-filter);backdrop-filter:var(--backdrop-filter)}@keyframes progress-bar-stripes{0%{background-position-x:1.063rem}}.progress{background-color:Rgb(var(--t42-bg-mid));border-radius:0;font-size:.6rem;height:1.063rem}.progress,.progress-bar{display:flex;overflow:hidden}.progress-bar{background-color:#1c89ea;color:#fff;flex-direction:column;justify-content:center;text-align:center;transition:width .6s ease;white-space:nowrap}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,#ffffff26 25%,#0000 0,#0000 50%,#ffffff26 0,#ffffff26 75%,#0000 0,#0000);background-size:1.063rem 1.063rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.progress{border:var(--t42-border)}.table{--bs-table-bg:#0000;--bs-table-accent-bg:#0000;--bs-table-striped-color:var(--t42-content-color);--bs-table-striped-bg:#0000000d;--bs-table-active-color:var(--t42-content-color);--bs-table-active-bg:#0000001a;--bs-table-hover-color:var(--t42-link-color);--bs-table-hover-bg:rgba(0,0,0,.075);border-color:var(--t42-color-opacity-10);color:var(--t42-content-color);margin-bottom:1rem;vertical-align:top;width:100%}.table>:not(caption)>*>*{background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg);padding:.25rem .313rem}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:first-child){border-top:2px solid}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#d2e7fb;--bs-table-striped-bg:#c8dbee;--bs-table-striped-color:#000;--bs-table-active-bg:#bdd0e2;--bs-table-active-color:#000;--bs-table-hover-bg:#c2d6e8;--bs-table-hover-color:#000;border-color:#bdd0e2;color:#000}.table-secondary{--bs-table-bg:#dfdfdf;--bs-table-striped-bg:#d4d4d4;--bs-table-striped-color:#000;--bs-table-active-bg:#c9c9c9;--bs-table-active-color:#000;--bs-table-hover-bg:#cecece;--bs-table-hover-color:#000;border-color:#c9c9c9;color:#000}.table-success{--bs-table-bg:#d9ecda;--bs-table-striped-bg:#cee0cf;--bs-table-striped-color:#000;--bs-table-active-bg:#c3d4c4;--bs-table-active-color:#000;--bs-table-hover-bg:#c9daca;--bs-table-hover-color:#000;border-color:#c3d4c4;color:#000}.table-info{--bs-table-bg:#daecf1;--bs-table-striped-bg:#cfe0e5;--bs-table-striped-color:#000;--bs-table-active-bg:#c4d4d9;--bs-table-active-color:#000;--bs-table-hover-bg:#cadadf;--bs-table-hover-color:#000;border-color:#c4d4d9;color:#000}.table-warning{--bs-table-bg:#feeed3;--bs-table-striped-bg:#f1e2c8;--bs-table-striped-color:#000;--bs-table-active-bg:#e5d6be;--bs-table-active-color:#000;--bs-table-hover-bg:#ebdcc3;--bs-table-hover-color:#000;border-color:#e5d6be;color:#000}.table-danger{--bs-table-bg:#ffdcd2;--bs-table-striped-bg:#f2d1c8;--bs-table-striped-color:#000;--bs-table-active-bg:#e6c6bd;--bs-table-active-color:#000;--bs-table-hover-bg:#ecccc2;--bs-table-hover-color:#000;border-color:#e6c6bd;color:#000}.table-dark,.table-light{--bs-table-bg:#616161;--bs-table-striped-bg:dimgray;--bs-table-striped-color:#fff;--bs-table-active-bg:#717171;--bs-table-active-color:#fff;--bs-table-hover-bg:#6d6d6d;--bs-table-hover-color:#fff;border-color:#717171;color:#fff}.table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}@media (max-width:575.98px){.table-responsive-sm{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:767.98px){.table-responsive-md{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:991.98px){.table-responsive-lg{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:1199.98px){.table-responsive-xl{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:1399.98px){.table-responsive-xxl{-webkit-overflow-scrolling:touch;overflow-x:auto}}.table>:not(:first-child){border-width:0}.table td,.table th{vertical-align:middle;white-space:nowrap}.table a{border-bottom:.063rem dashed #616161;border-bottom:.063rem dashed var(--dark);color:var(--t42-content-color);transition-duration:.25s;transition-property:border;transition-timing-function:cubic-bezier(.45,0,.15,1)}.table a:hover{border-bottom-color:var(--t42-content-color);border-bottom-style:solid;color:var(--t42-link-color);text-decoration:none}.table thead th{border-width:1px 0;color:Hsl(var(--t42-content-color-base),calc(var(--t42-content-color-l) - 20%));font-size:83.3%;font-weight:400;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.table td{position:relative}.table td .btn,.table td .btn-group-lg>.btn,.table td .btn-group-sm>.btn,.table td .btn-lg,.table td .btn-sm{line-height:1.25rem}.table td .btn-icon i{position:relative;top:.0625rem}.table tr td:first-child,.table tr th:first-child{padding-left:.5rem}.table tr td:last-child,.table tr th:last-child{padding-right:.5rem}.table-hover tbody tr:hover{background-color:var(--t42-table-active-bg)}.table-hover tbody tr:hover a{border-bottom-color:var(--t42-content-color);color:var(--t42-link-color)}.table-responsive{border:0}.tooltip{word-wrap:break-word;display:block;font-family:Montserrat,Helvetica Neue,Arial,sans-serif;font-size:.65625rem;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;margin:0;opacity:0;position:absolute;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;z-index:1080}.tooltip.show{opacity:1}.tooltip .tooltip-arrow{display:block;height:.4rem;position:absolute;width:.8rem}.tooltip .tooltip-arrow:before{border-color:#0000;border-style:solid;content:"";position:absolute}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,.bs-tooltip-top .tooltip-arrow:before{border-top-color:var(--t42-tooltip-bg);border-width:.4rem .4rem 0;top:-1px}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{height:.8rem;left:0;width:.4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,.bs-tooltip-end .tooltip-arrow:before{border-right-color:var(--t42-tooltip-bg);border-width:.4rem .4rem .4rem 0;right:-1px}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,.bs-tooltip-bottom .tooltip-arrow:before{border-bottom-color:var(--t42-tooltip-bg);border-width:0 .4rem .4rem;bottom:-1px}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{height:.8rem;right:0;width:.4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,.bs-tooltip-start .tooltip-arrow:before{border-left-color:var(--t42-tooltip-bg);border-width:.4rem 0 .4rem .4rem;left:-1px}.tooltip-inner{background-color:var(--t42-tooltip-bg);border-radius:0;color:var(--t42-content-color);max-width:200px;padding:.25rem 1rem;text-align:center}.tooltip .tooltip-inner{border:var(--t42-border);box-shadow:var(--t42-shadow)}.bs-tooltip-auto[data-popper-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:1px}.bs-tooltip-auto[data-popper-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{border-top-color:var(--t42-color-opacity-10)}.bs-tooltip-auto[data-popper-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:1px}.bs-tooltip-auto[data-popper-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{border-bottom-color:var(--t42-color-opacity-10)}.bs-tooltip-right .arrow{left:1px}.bs-tooltip-right .arrow:before{border-right-color:var(--t42-color-opacity-10)}.bs-tooltip-left .arrow{right:1px}.bs-tooltip-left .arrow:before{border-left-color:var(--t42-color-opacity-10)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{height:auto;transition:width .35s ease;width:0}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.mark,mark{color:#fff;color:var(--white)}pre{background-color:var(--t42-bg-dark)}.blockquote,blockquote{background-color:Rgb(var(--t42-bg-dark));border-left:.25rem solid #616161;border-left:.25rem solid var(--secondary);padding:1rem 1rem .01rem}.blockquote-footer{color:var(--t42-content-color-muted);font-size:.875em;margin-left:1.25rem;margin-top:-2rem}.clearfix:after{clear:both;content:"";display:block}.link-primary{color:#1c89ea}.link-primary:focus,.link-primary:hover{color:#49a1ee}.link-secondary{color:#616161}.link-secondary:focus,.link-secondary:hover{color:#4e4e4e}.link-success{color:#43a047}.link-success:focus,.link-success:hover{color:#69b36c}.link-info{color:#469eb9}.link-info:focus,.link-info:hover{color:#6bb1c7}.link-warning{color:#f9a825}.link-warning:focus,.link-warning:hover{color:#fab951}.link-danger{color:#ff511f}.link-danger:focus,.link-danger:hover{color:#ff744c}.link-light{color:#616161}.link-light:focus,.link-light:hover{color:#4e4e4e}.link-dark{color:#616161}.link-dark:focus,.link-dark:hover{color:#4e4e4e}.ratio{position:relative;width:100%}.ratio:before{content:"";display:block;padding-top:var(--bs-aspect-ratio)}.ratio>*{height:100%;left:0;position:absolute;top:0;width:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.85714%}.fixed-top{top:0}.fixed-bottom,.fixed-top{left:0;position:fixed;right:0;z-index:1030}.fixed-bottom{bottom:0}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.hstack{align-items:center;flex-direction:row}.hstack,.vstack{align-self:stretch;display:flex}.vstack{flex:1 1 auto;flex-direction:column}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){clip:rect(0,0,0,0)!important;border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.stretched-link:after{bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:1}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{align-self:stretch;background-color:currentColor;display:inline-block;min-height:1em;opacity:.25;width:1px}.align-baseline{vertical-align:initial!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem #00000026!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-secondary{border-color:#616161!important}.border-info{border-color:#469eb9!important}.border-dark,.border-light{border-color:#616161!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-bottom:0!important;margin-top:0!important}.my-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-bottom:0!important;padding-top:0!important}.py-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important;font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.26563rem + .1875vw)!important}.fs-2{font-size:1.125rem!important}.fs-3{font-size:.98475rem!important}.fs-4{font-size:.84375rem!important}.fs-5{font-size:.75rem!important}.fs-6{font-size:.7035rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(28,137,234,var(--bs-text-opacity))!important;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(97,97,97,var(--bs-text-opacity))!important;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(67,160,71,var(--bs-text-opacity))!important;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(70,158,185,var(--bs-text-opacity))!important;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(249,168,37,var(--bs-text-opacity))!important;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(255,81,31,var(--bs-text-opacity))!important;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(97,97,97,var(--bs-text-opacity))!important;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(97,97,97,var(--bs-text-opacity))!important;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(0,0,0,var(--bs-text-opacity))!important;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(255,255,255,var(--bs-text-opacity))!important;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(33,37,41,var(--bs-text-opacity))!important;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--t42-content-color-muted)!important}.text-black-50{--bs-text-opacity:1;color:#00000080!important}.text-white-50{--bs-text-opacity:1;color:#ffffff80!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:.25}.text-opacity-50{--bs-text-opacity:.5}.text-opacity-75{--bs-text-opacity:.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(28,137,234,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(97,97,97,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(67,160,71,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(70,158,185,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(249,168,37,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(255,81,31,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(97,97,97,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(97,97,97,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(0,0,0,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(255,255,255,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(255,255,255,var(--bs-bg-opacity))!important;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:#0000!important}.bg-opacity-10{--bs-bg-opacity:.1}.bg-opacity-25{--bs-bg-opacity:.25}.bg-opacity-50{--bs-bg-opacity:.5}.bg-opacity-75{--bs-bg-opacity:.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:linear-gradient(180deg,#ffffff26,#fff0)!important;background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1,.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:1rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-end,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-end{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-start{border-bottom-left-radius:.25rem!important}.rounded-start{border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-bottom:0!important;margin-top:0!important}.my-sm-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-sm-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-sm-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-sm-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-sm-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-sm-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-bottom:0!important;padding-top:0!important}.py-sm-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-sm-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-sm-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-sm-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-sm-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-bottom:0!important;margin-top:0!important}.my-md-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-md-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-md-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-md-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-md-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-md-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-bottom:0!important;padding-top:0!important}.py-md-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-md-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-md-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-md-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-md-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-bottom:0!important;margin-top:0!important}.my-lg-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-lg-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-lg-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-lg-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-lg-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-lg-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-bottom:0!important;padding-top:0!important}.py-lg-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-lg-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-lg-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-lg-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-lg-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-bottom:0!important;margin-top:0!important}.my-xl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-bottom:0!important;padding-top:0!important}.py-xl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xl-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-bottom:0!important;margin-top:0!important}.my-xxl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xxl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xxl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xxl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xxl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xxl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-bottom:0!important;padding-top:0!important}.py-xxl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xxl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xxl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xxl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xxl-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:1.40625rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}body{background-size:cover}.bg-light{background-color:Rgb(var(--t42-bg-light))!important}.bg-dark{background-color:Rgb(var(--t42-bg-dark))!important}.bg-base{background-color:Rgb(var(--t42-bg-mid))!important}.border{border:.0625rem solid var(--t42-color-opacity-10)!important}.border-primary{border-color:#1c89ea!important}.border-dark,.border-info,.border-light,.border-secondary,.border-white{border-color:var(--t42-color-opacity-10)!important}.border-success{border-color:#43a047!important}.border-danger{border-color:#ff511f!important}.border-warning{border-color:#f9a825!important}.pl-0{padding-left:0}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:1rem}.pl-4{padding-left:1.5rem}.pl-5{padding-left:3rem}.pl-auto{padding-left:auto}.pr-0{padding-right:0}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:1rem}.pr-4{padding-right:1.5rem}.pr-5{padding-right:3rem}.pr-auto{padding-right:auto}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:1rem}.ml-4{margin-left:1.5rem}.ml-5{margin-left:3rem}.ml-auto{margin-left:auto}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:1rem}.mr-4{margin-right:1.5rem}.mr-5{margin-right:3rem}.mr-auto{margin-right:auto}@keyframes spinner-border{to{transform:rotate(1turn)}}.spinner-border{animation:spinner-border .75s linear infinite;border:.25em solid;border-radius:50%;border-right:.25em solid #0000;display:inline-block;height:2rem;vertical-align:-.125em;width:2rem}.spinner-border-sm{border-width:.2em;height:1rem;width:1rem}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{animation:spinner-grow .75s linear infinite;background-color:currentColor;border-radius:50%;display:inline-block;height:2rem;opacity:0;vertical-align:-.125em;width:2rem}.spinner-grow-sm{height:1rem;width:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.tick42-loader,.tick42-loader.active:after,.tick42-loader.active:before{bottom:0;left:0;position:absolute;right:0;top:0}.tick42-loader{background:var(--t42-logo-icon) no-repeat 50% 40%;background-size:50%;border-radius:.25rem;box-shadow:inset 0 0 0 .0625rem rgba(#1c89ea,.1);box-shadow:inset 0 0 0 .0625rem rgba(var(--primary),.1);color:#1c89ea;color:var(--primary);height:200px;margin:auto;width:200px}.tick42-loader.active:after,.tick42-loader.active:before{animation:clipMe 8s linear infinite;border-radius:.375rem;box-shadow:inset 0 0 0 2px;content:"";margin:-5%;z-index:-1}.tick42-loader.active:before{animation-delay:-4s}.tick42-loader.active .tick42-loader-text{bottom:.5rem;color:var(--t42-content-color-muted);height:3.5rem;margin:0 auto;overflow:hidden;padding:0 .833rem;position:absolute;text-align:center;text-overflow:ellipsis;width:100%}@keyframes clipMe{0%,to{clip:rect(0,220px,2px,0)}25%{clip:rect(0,2px,220px,0)}50%{clip:rect(218px,220px,220px,0)}75%{clip:rect(0,220px,220px,218px)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.tick42-spinner{animation-duration:3s;animation-iteration-count:infinite;animation-name:spin;animation-timing-function:linear;display:inline-block}@font-face{font-family:Montserrat;font-style:normal;font-weight:400;src:url(data:font/ttf;base64,AAEAAAARAQAABAAQR0RFRrFss1wAAmssAAACfkdQT1N2Wb7+AAJtrAABFy5HU1VCjJZZRgADhNwAAC8mT1MvMlYMpE4AAfmwAAAAYGNtYXBfILVpAAH6EAAACuRjdnQgMKUWggACEzwAAADkZnBnbU0kjnwAAgT0AAANbWdhc3AAAAAQAAJrJAAAAAhnbHlmzhsdpQAAARwAAct0aGVhZA5QtXgAAduUAAAANmhoZWEG0AwiAAH5jAAAACRobXR4v8HBsgAB28wAAB3AbG9jYfsbiDIAAcywAAAO4m1heHAIxQ5XAAHMkAAAACBuYW1lKqFFSQACFCAAAAHucG9zdFa6PIcAAhYQAABVE3ByZXDNS6zAAAISZAAAANUAAgAoAAACIwK8AAMABwApQCYAAAACAwACZQQBAwEBA1UEAQMDAV0AAQMBTQQEBAcEBxIREAUNFysTIREhJREhESgB+/4FAav+pQK8/URGAjD90AAAAv//AAAC3QK8AAcACgArQCgJAQQCAUoFAQQAAAEEAGYAAgJCSwMBAQFDAUwICAgKCAoREREQBgoYKyUhByMBMwEjJwMDAif+jE1nAT1jAT5pcJeXr68CvP1E/wFX/qn/////AAAC3QN3ACIABAAAAAMHEgKaAAD/////AAAC3QN3ACIABAAAAAMHGQKaAAD/////AAAC3QPhACIABAAAACcHMQKaAJYBBwcuApoBEQARsQIBsJawMyuxAwG4ARGwMysA//////88At0DdwAiAAQAAAAjBv8CmgAAAAMHGQKaAAD/////AAAC3QPhACIABAAAACcHMQKaAJYBBwctApoBEQARsQIBsJawMyuxAwG4ARGwMysA/////wAAAt0D7QAiAAQAAAAnBzECmgCWAQcHNAKaAP4AELECAbCWsDMrsQMBsP6wMyv/////AAAC3QPgACIABAAAACcHMQKaAJYBBwcyApoBEQARsQIBsJawMyuxAwG4ARGwMysA/////wAAAt0DdwAiAAQAAAADBxcCmgAA/////wAAAt0DdwAiAAQAAAADBxYCmgAA/////wAAAt0DvgAiAAQAAAAnBy8CmgCWAQcHLgNCAO4AELECAbCWsDMrsQMBsO6wMyv//////zwC3QN3ACIABAAAACMG/wKaAAAAAwcWApoAAP////8AAALdA74AIgAEAAAAJwcvApoAlgEHBy0DQgDuABCxAgGwlrAzK7EDAbDusDMr/////wAAAt0D0wAiAAQAAAAnBy8CmgCWAQcHNAMcAOQAELECAbCWsDMrsQMBsOSwMyv/////AAAC3QPmACIABAAAACcHLwKaAJYBBwcyApoBFwARsQIBsJawMyuxAwG4ARewMysA/////wAAAt0DdwAiAAQAAAADByMCmgAA/////wAAAt0DbQAiAAQAAAADBwoCmgAA//////88At0CvAAiAAQAAAADBv8CmgAA/////wAAAt0DdwAiAAQAAAADBxACmgAA/////wAAAt0DuwAiAAQAAAADByICmgAA/////wAAAt0DfQAiAAQAAAADByQCmgAA/////wAAAt0DVAAiAAQAAAADBx4CmgAA//////8gAvMCvAAiAAQAAAADBwMECAAA/////wAAAt0D1gAiAAQAAAEHBvACmgCqAAixAgKwqrAzK/////8AAALdBB0AIgAEAAABBwbxApoAqgAIsQICsKqwMyv/////AAAC3QN3ACIABAAAAAMHGgKaAAAAAv//AAAD3wK8AA8AEwBEQEEABQAGCQUGZQsBCQABBwkBZQgBBAQDXQADA0JLCgEHBwBdAgEAAEMATBAQAAAQExATEhEADwAPEREREREREQwKGyslFSE1IQcjASEVIRUhFSEVJxEjAwPf/gT+6mdnAaECMf51AV/+oWMU01dXr68CvFfXVeKoAWb+mv////8AAAPfA3cAIgAeAAAAAwcSA0AAAAADAGkAAALDArwADgAXAB8APEA5DgEEAgFKAAIABAUCBGUGAQMDAV0AAQFCSwcBBQUAXQAAAEMATBgYDw8YHxgeHRsPFw8WJyEkCAoXKwAWFRQGIyERITIWFRQGBwEVMzI2NTQmIxI2NTQjIxUzAn1GiYP+sgE6eIMzK/6NzU1TU01uVqvm5gFaWURbYgK8YFU3UBUBAOA5Nzc5/eY4PHXpAAABADD/+AKtAsQAGwAuQCsYFwsKBAIBAUoAAQEAXwAAAEhLAAICA18EAQMDSQNMAAAAGwAaJiQmBQoXKwQmJjU0NjYzMhYXByYjIgYGFRQWFjMyNxcGBiMBOalgYKppUogwQU92Tn5HR35OdVBBMIlSCF2jZmajXTc2P1NGe0xMe0ZUPzY4//8AMP/4Aq0DdwAiACEAAAADBxICxwAA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BwcDUQBzAAixAQGwc7AzK///AGn/LwLDArwAIgBSAAAAAwcEAsEAAP//AGkAAALDA3cAIgBSAAAAAwcXAsEAAP//AGkAAALDA3cAIgBSAAAAAwcWAsEAAP//AGn/PALDArwAIgBSAAAAAwb/AsEAAAABAGkAAADNArwAAwATQBAAAABCSwABAUMBTBEQAgoWKxMzESNpZGQCvP1EAAIAV//4Am0CvAAPABMAM0AwAwEABAIBAgACSgAEBAFdAwEBAUJLAAAAAl8FAQICSQJMAAATEhEQAA8ADhMlBgoWKwQmJzcWFjMyNjURMxEUBiMDMxEjAQN8MCcsaDdeYmSeiORkZAgmIVAeIG5vAY7+d5miAsT+eQD//wBQAAABUgN3ACIAWAAAAAMHEgHHAAD////5AAABPQN3ACIAWAAAAAMHGQHHAAD////oAAABTgN3ACIAWAAAAAMHFgHHAAD///+uAAABGwN3ACIAWAAAAAMHIwHHAAD//wALAAABKwNtACIAWAAAAAMHCgHHAAD//wAPAAABOQP0ACIAWAAAACcHKwHHAJYBBwcuAccBJAARsQECsJawMyuxAwG4ASSwMysA//8AYAAAANYDfQAiAFgAAAADBw4BxwAA//8AaP88AM4CvAAiAFgAAAADBv8BxwAA////5AAAAOYDdwAiAFgAAAADBxABxwAA//8APwAAAQADuwAiAFgAAAADByIBxwAA////+QAAAT0DfQAiAFgAAAADByQBxwAA//8AFgAAASADVAAiAFgAAAADBygBxwAA//8ATv8gAPECvAAiAFgAAAADByoB+AAA////8wAAAUMDdwAiAFgAAAADBxoBxwAAAAH/9//4AZ4CvAAQACxAKQMCAgABAUoAAQECXQACAkJLAAAAA18EAQMDSQNMAAAAEAAPERMkBQoXKxYmJzcWMzI2NREjNSERFAYjhGwhOjpYOz39AWBvbAg1MERTSEYBiVf+JXR1////9//4AaIDdwAiAGgAAAADBxYCGwAAAAEAaQAAAs4CvAALAB9AHAkGAQMAAQFKAgEBAUJLAwEAAEMATBISERIEChgrAQcVIxEzEQEzAQEjAU2AZGQBfHL+1QE+dQE3grUCvP55AYf+xf5///8AaQAAAs4DdwAiAGoAAAADBxcCowAA//8Aaf75As4CvAAiAGoAAAADBwECowAA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KAcKGSsBERQGBwYVFBYzMjY3FwYjIiY1NDcmJjURMxEUMzI2NRECs15XkCIcECEMEygyOEBFf41kxWBmArz+cnaSHjNJGBwJCDEYNy5DMQifjgGO/nbhb3IBigD//wBj//gCswPWACIAxwAAAQcG8AK4AKoACLEBArCqsDMr//8AY//4ArMDdwAiAMcAAAADBxoCuAAA//8AY//4ArMD9AAiAMcAAAAnBzICuACWAQcHLgK4ASQAEbEBAbCWsDMrsQIBuAEksDMrAAAB//8AAALJArwABgAhQB4FAQABAUoDAgIBAUJLAAAAQwBMAAAABgAGEREEChYrAQEjATMTEwLJ/s1j/sxs/P4CvP1EArz9wQI/AAEAIAAABEYCvAAMACdAJAsIAwMAAgFKBQQDAwICQksBAQAAQwBMAAAADAAMEhESEQYKGCsBAyMDAyMDMxMTMxMTBEbqab+/a+pnvcVcwcECvP1EAi/90QK8/ccCOf3EAjz//wAgAAAERgN3ACIA4AAAAAMHEgNgAAD//wAgAAAERgN3ACIA4AAAAAMHFgNgAAD//wAgAAAERgNtACIA4AAAAAMHCgNgAAD//wAgAAAERgN3ACIA4AAAAAMHEANgAAAAAQANAAAClAK8AAsAJkAjCgcEAQQAAQFKAgEBAUJLBAMCAABDAEwAAAALAAsSEhIFChcrIQMDIwEDMxMTMwMBAiHSz3MBB/dyxMJt9wEJASH+3wFnAVX+8wEN/q7+lgAAAf/8AAACiwK8AAgAHUAaBgMAAwABAUoCAQEBQksAAABDAEwSEhEDChcrJRUjNQEzExMzAXVj/upr4OFj8vL0Acj+jwFx/////AAAAosDdwAiAOYAAAADBxICcAAA/////AAAAosDdwAiAOYAAAADBxYCcAAA/////AAAAosDbQAiAOYAAAADBwoCcAAA/////AAAAosDfQAiAOYAAAADBw4CcAAA/////P88AosCvAAiAOYAAAADBv8CcAAA/////AAAAosDdwAiAOYAAAADBxACcAAA/////AAAAosDuwAiAOYAAAADByICcAAA/////AAAAosDVAAiAOYAAAADBx4CcAAA/////AAAAosDdwAiAOYAAAADBxoCcAAAAAEAKwAAAnQCvAAJAC9ALAgBAQIDAQADAkoAAQECXQACAkJLBAEDAwBdAAAAQwBM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AfIAxAAIsQEBsMSwMyv//wBb/y8CUgLmACIB2AAAAAMHBAKDAAD////YAAACUgO1ACIB2AAAAQcG7QG3ANQACLEBAbDUsDMr////2AAAAlIDoQAiAdgAAAEHBxYBtwAqAAixAQGwKrAzK///AFv/PAJSAuYAIgHYAAAAAwb/AoMAAP//AEoAAADMAvUAIgHfAAAAAwcpAbcAAAABAFsAAAC7AhIAAwATQBAAAABFSwABAUMBTBEQAgoWKxMzESNbYGACEv3u//8AQAAAAUIC4QAiAd8AAAADBucBtwAA//8AAgAAARQC4QAiAd8AAAADBzcBtwAA////8QAAASUC4QAiAd8AAAADBzYBtwAA////ngAAAQsC4QAiAd8AAAADBvsBtwAA//8AEgAAAQQC1gAiAd8AAAADBzUBtwAA/////wAAASkDXgAiAd8AAAAjBysBtwAAAQcHLgG3AI4ACLEDAbCOsDMr//8AUAAAAMYC5wAiAd8AAAADBuMBtwAA//8ASv88AMwC9QAiAd8AAAAjBykBtwAAAAMG/wG3AAD////UAAAA1gLhACIB3wAAAAMG5QG3AAD//wAvAAAA8AMlACIB3wAAAAMG+gG3AAD//wACAAABFALnACIB3wAAAAMHOgG3AAD//wBK/zgB6AL1ACIB3wAAACMHKQG3AAAAIwHwARcAAAADBykC0wAA//8ABgAAARACvgAiAd8AAAADBzkBtwAA//8APP8gAN8C9QAiAd8AAAAjBykBtwAAAAMHKgHmAAD////8AAABGgLhACIB3wAAAAMHOAG3AAD///+k/zgA0QL1ACIB8AAAAAMHKQG8AAAAAf+k/zgAwAISAA4AKUAmAwEAAQIBAgACSgABAUVLAAAAAmADAQICTQJMAAAADgANEyQEChYrBiYnNxYzMjY1ETMRFAYjDDwUHx4wJilgWFHIEBBKGS8uAiz91lJe////pP84ASoC4QAiAfAAAAADBzYBvAAAAAEAWwAAAmYC5gALACNAIAkGAQMAAgFKAAEBREsAAgJFSwMBAABDAEwSEhESBAoYKyUHFSMRMxEBMwcTIwEpbmBgASF03/V292aRAub+JAEI2/7J////2AAAAmYDtQAiAfIAAAEHBu0BtwDUAAixAQGw1LAzK///AFv++QJmAuYAIgHyAAAAAwcBAmUAAAABAFsAAAJm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yNQBDP70/////wAAAmgDBwAiAt8AAAEHBucCXwAmAAixAgGwJrAzK/////8AAAJoAwcAIgLfAAABBwbvAl8AJgAIsQIBsCawMyv/////AAACaANxACIC3wAAACcHMQJfACYBBwcuAl8AoQAQsQIBsCawMyuxAwGwobAzK///////PAJoAwcAIgLfAAAAIwb/Al8AAAEHBu8CXwAmAAixAwGwJrAzK/////8AAAJoA3EAIgLfAAAAJwcxAl8AJgEHBy0CXwChABCxAgGwJrAzK7EDAbChsDMr/////wAAAmgDfQAiAt8AAAAnBzECXwAmAQcHNAJfAI4AELECAbAmsDMrsQMBsI6wMyv/////AAACaANwACIC3wAAACcHMQJfACYBBwcyAl8AoQAQsQIBsCawMyuxAwGwobAzK/////8AAAJoAwcAIgLfAAABBwbtAl8AJgAIsQIBsCawMyv/////AAACaAMHACIC3wAAAQcG7AJfACYACLECAbAmsDMr/////wAAAnkDTgAiAt8AAAAnBy8CXwAmAQcHLgMHAH4AELECAbAmsDMrsQMBsH6wMyv//////zwCaAMHACIC3wAAACMG/wJfAAABBwbsAl8AJgAIsQMBsCawMyv/////AAACaANOACIC3wAAACcHLwJfACYBBwctAwcAfgAQsQIBsCawMyuxAwGwfrAzK/////8AAAJoA2MAIgLfAAAAJwcvAl8AJgEHBzQC4QB0ABCxAgGwJrAzK7EDAbB0sDMr/////wAAAmgDdgAiAt8AAAAnBy8CXwAmAQcHMgJfAKcAELECAbAmsDMrsQMBsKewMyv/////AAACaAMHACIC3wAAAQcG+wJfACYACLECArAmsDMr/////wAAAmgC/QAiAt8AAAEHBt8CXwAmAAixAgKwJrAzK///////PAJoAjgAIgLfAAAAAwb/Al8AAP////8AAAJoAwcAIgLfAAABBwblAl8AJgAIsQIBsCawMyv/////AAACaANLACIC3wAAAQcG+gJfACYACLECAbAmsDMr/////wAAAmgDDQAiAt8AAAEHBvwCXwAmAAixAgGwJrAzK/////8AAAJoAuQAIgLfAAABBwb2Al8AJgAIsQIBsCawMyv//////yACfgI4ACIC3wAAAAMHAwOTAAD/////AAACaANSACIC3wAAAQcG8AJf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VAD////w/zgCNgISAAICbwYA////8P84AjYC4QAiAm8GAAADB1gB8AAAAAMAK/8+AvoC5gARABgAHgA3QDQeAQAGAUoABAMEgwgBBwcDXwUBAwMiSwAGBgBfAgEAACFLAAEBJAFMFhEUEREUERERCQcdKyQGBxUjNSYmNTQ2NzUzFRYWFQQWFxEGBhUENTQmJxEC+qSVXpWjopZelaT9kG1sbWwCEW5sj44Iu7sIjXx7igjPzwiLelVgBwF0B15TrKxUXQf+iwD//wAJAAACFQISAAICbvsAAAEAKgAAAgQCEgARAC9ALBABAwIDAQEDAkoAAwABAAMBZwUEAgICIksAAAAhAEwAAAARABEjEyIRBgcYKwERIzUGIyImNTUzFRQWMzI3NQIEYFZVY2xgRT5GUQIS/e7WKFxcrKY3OCPyAAABAF3/gQKTAhIACwApQCYAAAMAUgQBAgIiSwYFAgMDAV4AAQEhAUwAAAALAAsREREREQcHGSslFSM1IREzESERMxECk1v+JWABImBU038CEv5CAb7+QgAAAQBdAAADUAISAAsAJUAiBgUDAwEBIksEAQICAF4AAAAhAEwAAAALAAsREREREQcHGSsBESERMxEzETMRMxEDUP0NYOpg6QIS/e4CEv5CAb7+QgG+AP//AF3/jwOfAhIAIgUmAAAAAwdaArIAAAABAF3/gQIoAhIACwBGS7AKUFhAGAABAAABbwUBAwMiSwAEBABeAgEAACEATBtAFwABAAGEBQEDAyJLAAQEAF4CAQAAIQBMWUAJEREREREQBgcaKyEjFSM1IxEzESERMwIot1u5YAELYH9/AhL+QgG+AAACAF3//gIhAhIACgATADBALQUBAgADBAIDZQABASJLBgEEBABeAAAAIQBMCwsAAAsTCxIRDwAKAAkRJAcHFisAFhUUBicnETMVFxI2NTQmJycVFwG3anNr5mCVKkNBQ35+AV1aUlZdAQECErMB/uk2NTQwAQLQAQACAAQAAAJhAhIADAAVADZAMwYBAwAEBQMEZQABAQJdAAICIksHAQUFAF0AAAAhAEwNDQAADRUNFBMRAAwACxERJAgHFysAFhUUBiMjESM1IRUzEjY1NCYjIxUzAfhpc2nfogECkCpAPz98fAFfW1JVXQG+VLP+6jY1MzHPAAADAF3//gLJAhIACgAOABcANkAz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hAMBAgIBXQABASEBTAAAAAUABRERBAcWKzcVIzUjNfpccVfwmVcAAQA6/2cA2wBXAAUAH0AcAAABAIQDAQICAV0AAQEhAUwAAAAFAAUREQQHFis3FSM1IzXbXURX8JlXAAEAQP+PANoAUgAFADxLsApQWEASAAABAQBvAwECAgFdAAEBIQFMG0ARAAABAIQDAQICAV0AAQEhAUxZQAsAAAAFAAUREQQHFis3FSM1IzXaV0NSw3FSAP///jICWf92A0sAIgcxAAABBgcuAHsACLEBAbB7sDMr///+MgJZ/3YDSwAiBzEAAAEGBy0AewAIsQEBsHuwMyv///4yAln/dgNXACIHMQAAAQYHNABoAAixAQGwaLAzK////i8CWf95A0oAIgcxAAABBgcyAHsACLEBAbB7sDMr///+IQJfABoDKAAiBy8AAAEHBy4AqABYAAixAQGwWLAzK////iECX//BAygAIgcvAAABBwctAKgAWAAIsQEBsFiwMyv///4hAl//pAM9ACIHLwAAAQcHNACCAE4ACLEBAbBOsDMr///+IQJf/4cDUAAiBy8AAAEHBzIAAACBAAixAQGwgbAzK////jIC7/92A+EAJwcxAAAAlgEHBy4AAAERABGxAAGwlrAzK7EBAbgBEbAzKwD///4yAu//dgPhACcHMQAAAJYBBwctAAABEQARsQABsJawMyuxAQG4ARGwMysA///+MgLv/3YD7QAnBzEAAACWAQcHNAAAAP4AELEAAbCWsDMrsQEBsP6wMyv///4vAu//eQPgACcHMQAAAJYBBwcyAAABEQARsQABsJawMyuxAQG4ARGwMysA///+IQL1ABoDvgAnBy8AAACWAQcHLgCoAO4AELEAAbCWsDMrsQEBsO6wMyv///4hAvX/wQO+ACcHLwAAAJYBBwctAKgA7gAQsQABsJawMyuxAQGw7rAzK////iEC9f+kA9MAJwcvAAAAlgEHBzQAggDkABCxAAGwlrAzK7EBAbDksDMr///+IQL1/4cD5gAnBy8AAACWAQcHMgAAARcAEbEAAbCWsDMrsQEBuAEXsDMrAAABAF//ZwC8ABcAAwAYQBUAAQAAAVUAAQEAXQAAAQBNERACBxYrFyM1M7xdXZmwAAABAF7/jwC5ABUAAwAYQBUAAQAAAVUAAQEAXQAAAQBNERACBxYrFyM1M7lb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UXdRg1GUUaVRtlHHUdhR6VICUhtSgFKLUp9SsFLJUuJS+1NDU3xTuVQOVFFUYlRzVH9UkFScVK1UuVUPVSBVOVVBVVJVa1V3VYhVlFWlVbFVxlZEVmNWdFaFVpFWnVauVrpWxlb0VwVXFlcnVzhXSVdaV2ZXd1eIV5lXslfHV+BX+VgSWCNYNFhFWF5YrFi9WM5Y51kLWTxZTVleWW9ZgFmtWdBZ4VnyWgNaFFogWjFaQlpTWmRaklqjWrRaxVrRWw1bHlsvW0hbXVt2W49bqFu5W8pb41v4XBFcKlxDXFRcZVxxXIJck1ykXLVcwVzSXONc9F1ZXWpdf13WXedd+F4JXh5eL15IXl1edl6PXqheuV7KXtte5174XwlfGl8rX0RfXV/pX/pgSGCBYOJg82EEYRVhJmE3YUhhXGGGYY5hn2HtYf5iD2IgYjFiSmJWYmdieGKJYsVi1mLiYvNjKGM5Y0VjpmOyY/dkCGQZZCVkNmRCZKJkrmS6ZMtlFmVAZVFlYmVuZXpli2WXZaNl7WX+Zg9mIGYxZkJmU2ZfZnBmgWaSZqtmwGbZZvJnC2ccZy1nPmdXZ2NndGeFZ55n5mf3aAhoGWgqaHVohmiXaKhouWjKaNto7Gj9aQ5pSWlaaWtpfGmIad9qH2onamJqr2rNatlq+ms7a0NrT2tba5tr+WwfbCtsN2yNbLtsx20hbVVtXW1lbYltkW2Zbblt8m3+blBugG62buJvDm8ab0Fvem+4b8Rv0HAxcDlwSXCYcK5wunDCcQBxc3G1ciRybXK4csxzGXNJc5hzpHOwc7xz+nQ3dGt0d3SDdNZ04nWZdaV1sXW5dc112XYNdhl2XXaTdp93B3cTdxt3J3dud6x34XggeF54anh2eH54injheO14+XkFeVF5XXlpeXV5iXmhea15uXnFedF53Xnoefh6RnqQesh7I3txe3l7qnvzfEF8f3yLfMJ85n05fWN9b317fYd9j33Ufdx96H30ffx+CH6nfrN+6380fzx/RH9Qf5p/5IA1gKOBM4GugbaCDoIagiaCMoI6gkaCUoJegmqCdoKCgo6CloLvgveDXYOng8SD1oQHhEeET4RbhGeEo4T+hSSFMIU8hZKFvYXJhhiGS4ZxhnmGnYalhq2GzYbVhuGHMIc4h22HmYfEh9CICYhFiISIyYjViTKJOolKiZaJoomuibqKAYqKisiLJouKi9uL44wxjF+MrYy5jRaNIo1djZ6Nz43bjeeN845FjtOO347rjw6PIo8uj2KPbo+vj7eP95BZkGWQbZB5kL6ROJF6ka2R6pImkjKSPpJGklKSpJKwkrySyJMRkx2TKZM1k4eTk5Ofk6uTt5PDk8+T2pPmlDWUepSylQqVXJVklZWV35ZXlpmWpZcDl1qXYpell/6YBpgSmB6YT5hymHqYgpiKmL+Yy5ktmTmZgZnPmkaabpp6moaamJrymv6bBpsSmyabLps2mz6bSptWm16bapvom/ScRJxMnFScYJyonPadXp3GnkCemJ6knrCeuJ7EnxOfH58rnzefQ59Pn1ufZ5+/n+agMqB0oLCgwaDJoQqhKaFpobKh5aItoo+izaM4o5mj36P9pD2kiKS+pQelD6VSpVqlaKV3pYallaWkpbOlwqXRpeCl76X+pkCmaKaopvCnI6drp82oC6h2qNipHqlFqYWpzqoDqkyqVKqXqp+rA6sRqx+rLas7q0mrV6tlq3OrgauPq8mr76wtrHOso6zlrTytd63Xri+uPq5krqKu6K73rzqvSa+Fr5Svo6+yr8Gv0K/fr+6v/bAMsBuwKrA5sFGwYbBxsIGwkbChsLGwwbDRsOGxFrExsVaxe7GNsbqxyrH5siiylLK2swuzZLNws4ezmbOws8yz57QMtBm0PrRVtHq0vrUFtSW1SLVrtZG1nrWrtbi1xbXStd+1+LYRtiq2MrZLtlO2W7ZotnW2graOtpq2ubbbtue287b/tya3Ubd+t5O3qLe1t8K38bgiuC64OrhZuHu4nbjxuUi5VLlguWy5eLmfucq597oNuiq6Oro6ujq6Oro6ujq6OrqWuuG7c7vfvFG8371Jvbq98r5UvsO+/79Xv6C/28BIwFjA5cErwXzBwsHswizCuML4wwDDRcNNw3XDjsOrw/XEJ8SBxJfErsTYxQTFOsW+xjLGUMayxybHacdxx3nHnMfVyATIDMhvyR7J/sodyjXKW8p0ypPKq8rUyuzLHss8y1vLfsuly8vL3sv6zBTMKsxUzGbMdsyOzJ7MxMzczQLNGs3KzjjOY87iz2TP6tAx0HnQj9Cx0QbRK9Fi0cvSU9J60pHSsdK+03fT5dQk1DXURtRX1IHUktSs1L3U1tTn1PjVHtU11VrVf9WP1cHWA9ZI1rzWzdbe1u/XDdce1y/XQNd115vXydf22CLYS9iJ2LnY+dkx2WHZftmc2brZzNnm2iHaONpP2mbajNqj2rna0Nrl2vzbE9s121bbd9uO27zcLNxD3FrccdyL3KLcudzQ3QHdI91N3Wfded2P3andzN4L3lPehN6k3sTe5t8I3zLfld+53+rgMuBU4Hzg8uEJ4S/hU+Ft4Yrhl+Gj4cDh2eH24ibiVOJu4oripuKv4rjiweLK4tPi3OLl4u7i9+MA4wnjEuMb4zTjTeNk45LjwOPs5AnkJuRS5GLkcuSC5JLko+S05MXk1uTt5QTlGuUx5UflXeVz5YrlouW6AAAAAQAAAAczM3QVnhxfDzz1AAcD6AAAAADWC/5GAAAAANYeQAX8uP75Bk0EHQAAAAcAAgAAAAAAAAJLACgAAAAAAQ0AAAENAAAC3P//Atz//wLc//8C3P//Atz//wLc//8C3P//Atz//wLc//8C3P//Atz//wLc//8C3P//Atz//wLc//8C3P//Atz//wLc//8C3P//Atz//wLc//8C3P//Atz//wLc//8C3P//Atz//wQX//8EF///AvUAaQLTADAC0wAwAtMAMALTADAC0wAwAtMAMALTADADOgBpBa4AaQNCAAsDOgBpA0IACwM6AGkDOgBpBUMAaQKeAGkCngBpAp4AaQKeAGkCngBpAp4AaQKeAGkCngBpAp4AaQKeAGkCngBpAp4AaQKeAGkCngBpAp4AaQKeAGkCngBpAp4AaQKeAGkCngBpAp4AaQKeAGkCngBpAm8AHwJvAB8CewBpAwQAMAMEADADBAAwAwQAMAMEADADBAAwAwQAMAMnADADLABpAzwACQMsAGkDLABpAywAaQMsAGkBNgBpAtAAVwE2AFABNv/5ATb/6AE2/64BNgALATYADwE2AGABNgBoATb/5AE2AD8BNv/5ATYAFgE2AE4BNv/zAgH/9wIB//cCzwBpAs8AaQLPAGkCUgBpBFMAaQJSAFACUgBpAlIAaQJSAGkCUgBpA24AaQJSAGkCWgAJA7sAaQO7AGkDLABpBS0AaQMsAGkDLABpAywAaQMsAGkDLABpAywAaQRIAGkDLABpAywAaQNIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADAEZgAwAtIAaQLSAGkDSAAwAtcAaQLXAGkC1wBpAtcAaQLXAGkC1wBpAtcAaQLXAGkCbQApAm0AKQJtACkBAgBQAm0AKQJtACkCbQApAm0AKQJtACkCbQApAm0AKQJtACkC+wBjAzEAMAJLAAQCSwAEAksABAJLAAQCSwAEAksABAJLAAQDFwBjAxcAYwMXAGMDFwBjAxcAYwMXAGMDFwBjAxcAYwMXAGMDFwBjAx8AYwMfAGMDHwBjAx8AYwMfAGMDHwBjAxcAYwMXAGMDFwBjAxcAYwMXAGMDFwBjAxcAYwMXAGMCyP//BGYAIARmACAEZgAgBGYAIARmACACoQANAof//AKH//wCh//8Aof//AKH//wCh//8Aof//AKH//wCh//8Aof//AKRACsCkQArApEAKwKRACsCkQArAtAAVwMgAGMDIABjAyAAYwMgAGMDIABjAyAAYwMgAGMDIABjAyAAYwMgAGMDIABjAyAAYwMgAGMDIABjAyAAYwMgAGMDIABjAyAAYwMgAGMDIABjAyAAYwMgAGMDIABjAyAAYwMgAGMDIABjBDIAWgQyAFoFrgBpBU0AaQKEADMChAAzAoQAMwKEADMChAAzAoQAMwKEADMChAAzAoQAMwKEADMChAAzAoQAMwKEADMChAAzAoQAMwKEADMChAAzAoQAMwKEADMChAAzAoQAMwKEADMChAAzAl4AYwMEADADBAAwAwQAMAMEADADBAAwAwQAMAMEADADLAAwAcgAKwLQAFcByAArAtAAVwHIACsByAArAcj/+AHIACsByAArAcgAKwHIACsByAArAcgAKwHIACsByAArAcgAKwHIACsB///3Af//9wRvAGkEywBpBMsAaQMeAGkFHQBpAx4AaQMeAGkDHgBpAx4AaQMeAGkDHgBpBDoAaQMeAGkDHgBpA0gAMAMxAEUCVv/8Alb//AJW//wCVv/8Alb//AJW//wCVv/8AxoAYwMaAGMDGgBjAxoAYwMaAGMDGgBjAxoAYwMaAGMDGgBjAxoAYwMaAGMDGgBjAxoAYwMaAGMDGgBjAxoAYwMaAGMDGgBjAxoAYwMaAGMDGgBjAxoAYwMaAGMDGgBjBKYAYwSmAGMEpgBjBKYAYwSmAGMDEwBeAxMAXgMTAF4DEwBeAxMAXgMTAF4DEwBeAxMAXgMTAF4DEwBeApsAMAKbADACmwAwApsAMAKbADACVgAyAlYAMgJWADICVgAyAlYAMgJWADICVgAyAlYAMgJWADICVgAyAlYAMgJWADICVgAyAlYAMgJWADICVgAyAlYAMgJWADICVgAyAlYAMgJWADICVgAyAlYAMgJWADICVgAyAlYAMgPdADID3QAyAqoAWwI7ACoCOwAqAjsAKgI7ACoCOwAqAjsAKgI7ACoCqgAqAoAAKgKqACoCqgAqAqoAKgKqACoEuwAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAg//7AIP/+wBYQAPArIAKgKyACoCsgAqArIAKgKyACoCsgAqArIAKgK6ACoCqQBbAqkAAAKpAFsCqf/YAqn/2AKpAFsBFwBKARcAWwEXAEABFwACARf/8QEX/54BFwASARf//wEXAFABFwBKARf/1AEXAC8BFwACAjMASgEXAAYBFwA8ARf//AEc/6QBHP+kARz/pAJoAFsCaP/YAmgAWwJeAFsBFwBbARcAQAEXAFsBFwBYAVoAWwEXAFgCMwBbARf/6AEn//kEIQBbBCEAWwKpAFsCqQBbAwIANQKpAFsCqQBbAqkAWwKpAFsCqQBbA8UAWwKpAFsCqQBbAnsAKgJ7ACoCewAqAnsAKgJ7ACoCewAqAnsAKgJ7ACoCewAqAnsAKgJ7ACoCewAqAnsAKgJ7ACoCewAqAnsAKgJ7ACoCewAqAnsAKgJ7ACoCewAqAn8AKgJ7ACoCewAqAnsAKgJ7ACoCewAqAnsAKgJ7ACoCewAqAnsAKgJ7ACoCewAqAnsAKgQrACoCqgBbAqoAWwKqACoBmgBbAZoAWwGaADcBmgBYAZr//QGaAFgBmgBIAZr/6AH1ABgB9QAYAfUAGAD/AFAB9QAYAfUAGAH1ABgB9QAYAfUAGAH1ABgB9QAYAfUAGAKkAFsBMgAZAZ4ADwGoABQBngAPAZ4ADwGeAA8BngAJAZ4ADwGeAA8CpQBWAqUAVgKlAFYCpQBWAqUAVgKlAFYCpQBWAqUAVgKlAFYCpQBWAq0AVgKtAFYCrQBWAq0AVgKtAFYCrQBWAqUAVgKlAFYCpQBWAqUAVgKlAFYCpQBWAqUAVgKlAFYCL//+A4MABgODAAYDgwAGA4MABgODAAYCKAAOAi//6gIv/+oCL//qAi//6gIv/+oCL//qAi//6gIv/+oCL//qAi//6gIJACgCCQAoAgkAKAIJACgCCQAoAjIASAKqACoCqgAqAqoAKgKqACoCqgAqAqoAKgKqACoCqgAqAqoAKgKqACoCqgAqAqoAKgKqACoCqgAqAqoAKgKqACoCqgAqAqoAKgKqACoCqgAqAqoAKgKqACoCqgAqAqoAKgKqACoCqgAqA90AMgPdADIEvQAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAArAVMAWwFBAFsBQQBAAUEAWwFBAFsBbQBbAUEAWwI1AFsBQQApAUH/8QQ6ACoBiwBWAZUADAGLAFYBiwBWAYsAVgGL//YBiwBWAYsASAPZAFYD2QBWA9kAVgPZAFYD2QBWAqUAVAKlAFQCpQBUAqUAVAKlAFQCpQBUAqUAVAKlAFQCpQBUAhMALQITAC0CEwAtAhMALQITAC0EsQAEAsgADwJ4AA8CugBbAosADwJn//8CZ///Amf//wJn//8CZ///Amf//wJn//8CZ///Amf//wJn//8CZ///Amf//wJn//8CZ///Amf//wJn//8CZ///Amf//wJn//8CZ///Amf//wJn//8CZ///Amf//wJn//8CZ///A2z//wNs//8ChABhAmEALAJhACwCYQAsAmEALAJhACwCYQAsAmEALAK+AGEC0gAgAr4AYQLSACACvgBhAr4AYQTOAGECOgBhAjoAYQI6AGECOgBhAjoAYQI6AGECOgBhAjoAYQI6AGECOgBhAjoAYQI6AEMCOgBhAjoAYQI6AGECOgBhAjoAYQI6AGECOgBhAjoAYQI6AGECOgBhAjoAYQKcACwCMAAlAjAAJQIgAGECjgAsAo4ALAKOACwCjgAsAo4ALAKOACwCjgAsAq8ALAK7AGEC4wAiArsAYQK7AGECuwBhArsAYQEiAGEBIgBhASIARgJQAEEBIgAIASL/9wEi/6QBIgAYASIABQEiAFYBIgBeASL/2gEiADUBIgAIAm8ATAEiAAwBIgBDASIAAgHB//wBwf/8AmwAYQJsAGECbABhAmwAYQH7AGEB+wBHAfsAYQH7AGEB+wBhAfsAYQO8AGEB+wBhAfv/+AMyAGEDMgBhArsAYQK7AGECuwBhArsAYQK7AGECuwBhArsAYQR8AGECuwBhArsAYQLCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwDqwAsAm8AYQJvAGECwgAsAnYAYQJ2AGECdgBhAnYAYQJ2AFQCdgBhAnYAYQJ2AGECEwAlAhMAJQITACUA/wBQAhMAJQITACUCEwAlAhMAJQITACUCEwAlAhMAJQITACUCigBbAe0ABAHtAAQB7QAEAe0ABAHtAAQB7QAEAe0ABAHtAAQCqABbAqgAWwKoAFsCqABbAqgAWwKoAFsCqABbAqgAWwKoAFsCqABbArAAWwKwAFsCsABbArAAWwKwAFsCsABbAqgAWwKoAFsCqABbAqgAWwKoAFsCqABbAqgAWwKoAFsCaQAIA70AIgO9ACIDvQAiA70AIgO9ACICPAAMAjkAAgI5AAICOQACAjkAAgI5AAICOQACAjkAAgI5AAICOQACAjkAAgIrACkCKwApAisAKQIrACkCKwApAq8AWwKvAFsCrwBbAq8AWwKvAFsCrwBbAq8AWwKvAFsCrwBbAq8AWwKvAFsCrwBbAq8AWwKvAFsCrwBbAq8AWwKvAFsCrwBbAq8AWwKvAFsCrwBbAq8AWwKvAFsCrwBbAq8AWwKvAFsDmQBVA5kAVQToAGECJwAqAicAKgInACoCJwAqAicAKgInACoCJwAqAicAKgInACoCJwAqAicAKgInACoCJwAqAicAKgInACoCJwAqAicAKgInACoCJwAqAicAKgInACoCJwAqAicAKgKcADkCCABbAo4ALAKOACwCjgAsAo4ALAKOACwCjgAsAo4ALAK0ACwBqgA5AaoAOQGqADkCbwBBAaoAOQGqADkBqv/pAaoAOQGqADkBqgA5AaoAHwGqADkBqgA5Am8ATAGqADkBqgA5AaoAOQHB//wBwf/8A7wAYQQAAGEEAABhAq4AYQKuAGECrgBhAq4AYQKuAGECrgBhAq4AYQRvAGECrgBhAq4AYQLCACwB9//8Aff//AH3//wB9//8Aff//AH3//wB9//8Aff//AKuAFsCrgBbAq4AWwKuAFsCrgBbAq4AWwKuAFsCrgBbAq4AWwKuAFsCtgBbArYAWwK2AFsCtgBbArYAWwK2AFsCrgBbAq4AWwKuAFsCrgBbAq4AWwKuAFsCrgBbAq4AWwP/AFsD/wBbA/8AWwP/AFsD/wBbAqMAVgKjAFYCowBWAqMAVgKjAFYCowBWAqMAVgKjAFYCowBWAqMAVgIrACkCKwApAisAKQIrACkCKwApAZQAJQGiACAC9gAMAtsAbQLrAG0CQgBtAkIAbQJFAG0DJAANApkAbQKZAG0CmQBtBAUAEwKCACADNwBtAzcAbQM3AG0DUwBtAscAbQLHAG0DFgANA8MAbQM0AG0DUAAzAzUAbQLKAG0CzgA0AlsADQKzABACswAQA54ALQKcABEC4AA2Az0AbQRHAG0EYABtAycAbQLJAG0DPAANA+EAbQSjAA0EnABtAnwAMQLEADUCwwAdAT0AbQE2AAsCHAASA0oADQRLAG0C2wA6A0EADgMrABMDhAASA1AAMwL5AA4CagAeAr8AbQQsABMCggAgAvMAbQLkAG0C3QAjAzsADQNPAG0EPwBtBKwAbQNQAG0DzgA5As4ANAJbAA0CmwAGAof//ALBABEDzgAOAvsANgLgADUC4ABtAyUAbQPdACAD3QAgAT4AbQQFABMCygBtAy8AbQNQAG0C3AAzA+gAbQL2AAwC9gAMBBYABwKZAG0DNwApAzcAKQQFABMCggAgAm8AHwM3AG0DNwBtA1AAMwNQADMDUAAzAsMAHQKzABACswAQArMAEALgADYCQgBtA+EAbQJrAB0CoAAOAqwAGgKCADkDFwAMA1YAMwQ9ABUC4wAfAt0AbQMw/7QDMQANAxkADgLlAA0DnQAxAk8AbQKCACACzgA0As4ANAMgAGMDRAAeAoQAMwKEADMChAAzAxoAYwMaAGMDGgBjAxoAYwMWACACzQBcAncADQMTAF4DEwBeA58AMgLMAF8DaAAOA+EAXwSfAAwEjABtAf//9wM7ABMCdwANAyAAYwMgAGMEMgBaAoQAMwMaAGMDGgBjAxMAXgMTAF4DEwBeA+EAXwNIADAC7wAaAk0AMAKWAD4CZgBdAegAXQHoAF0B0gBdApgACAJ0ACwCdAAsAnQALANRAA0CIAAcArYAXQK2AF0CtgBdAswAXQJWAF0CVgBdAoEABQMeAF0CqQBdAoEALAKlAF0CsABdAjsALAHtAAQCO//wAjv/8AMlACsCHQAJAmEAKgKyAF0DrQBdA60AXQKGAF0CPwBdAn8ABAMnAF0DpgAFA7gAXQIYACsCQQAsAj8AGAEbAEwBFwASARz/ogKi/9wDbABdAmQAMAKj//YCZQAAAsAADwKKACwCVAAFAgQAKwJZAF0DcgANAiAAHAJWAF0CZgBbAlUAAAKeAAQCvgBdA3YAXQKlAF0D0ABdAyYALwI7ACwB7QAEAj4ABgI+AAYCHQAJAwMABQJ6ACoCYQApAqIAXQK8AF0DAwAVAwMAFQEbAF0DUQANAlYAXQKXAAUCrwBdAr8AXQJeACcDPQBdAk0AMAJNADAD4wAwAnQALAJzADgCcwA4A1EADQIgABwCD//sArYAXQK2AF0CgQAsAooALAKKACwCPwAYAjv/8AI7//ACO//wAmEAKgHoAF0DJwBdAewADQIdAAsCOQAWAiAANQKBAAUCsAAuA6oACQJeABYCuwBeAqn/pQKWAAUCfgBMAiEALgKzACkDUQANAe7/9wKeAE0CngBNAp4ATQJVAF4CPAAFAqkAXQKiAF0EGwBdAmMALAK3AE0EGwBOBDQATgJAAFACnAAFA1cAXgH0AF0CIAAcAjsALAHoAF0CbgAnARcABgKzACcCpQBWBBsATgKqACoCswApAmQAKgJkACoCZAAqAp4ATQKeAE0CngBNAp4ATQKWAEYEGwBdAqUAVAKlAFQCSQBQAqUABQMoAFADrQAIA7IAXQJ6//wCqgAqAqoAKgPdADICZAAqAmQAKwJkACsCngBNAp4ATQKlAFQCpQBUAqUAVAMoAFACawARAtz//wOCAAkCqgBbAtT/+ALc//8CzwBpApsAMAFyAAgCPgAOAjwABQKdACYCPgARAmkAMAJWAB4ChAAsAmkAHAKsADIBcgAIAj4ABgI8AAYCnQAmAj4AEQJpADACVgAeAoQALAJpABwBrgAcAa4AUQGuABwBrgAbAa4AFgGuABsBrgAlAa4AJAGuABwBrgAgArwAPQK8AJACvAA8ArwAPgK8ADUCvABBArwASgK8AEkCvAA7ArwAQQK8ADwCvACQArwARwK8AD4CvAA1ArwAQQK8AEoCvABJArwAOwK8AEEBrgAcAa4AUQGuABwBrgAbAa4AFgGuABsBrgAlAa4AJAGuABwBrgAgAa4AHAGuAFEBrgAcAa4AGwGuABYBrgAbAa4AJQGuACQBrgAcAa4AIAGuABwBrgBRAa4AHAGuABsBrgAWAa4AGwGuACUBrgAkAa4AHAGuACABrgAcAa4AUQGuABwBrgAbAa4AFgGuABsBrgAlAa4AJAGuABwBrgAgAK7/QgQKAFEECgBRBAoAHAQKAFEECgAbBAoAUQQKABsECgAbBAoAJAGQABMBYP/aAQsAQgE6AEIA4wAuAOMAMAKzAC4BDABFAQwARQK/ABsA4wAuAj0ACQI9AEUBhwA/ANIAPwDjAC4BYP/kAfQAAAFg/9oBHwBMAU4ATAFYAH4BYP/kAIEALQFfADkBXwATAU0AaQFNABMBUQBfAVIAIAFzAEMBcwAdAWEAcwFhAB0BZQBpAWYAKgPoAAAB9AAAArwALwPoAAABfwA5AX8AOQF/ADkD6AAAAfQAAAGTAEMB+AAuAfgAIgE4AC4BOAAiAaAAMAGgAC4BoAAwAOMALgDjADAA4wAwAgwAOAIMACwBTAA4AUwALAEMAEUBDABFAdwALgHdACIBIgAuASMAIgDnADMCCgAIAgkARQGHAD8BnwAwAZ8ALgGfADAA4gAuAOIAMADjADAA0gA/AUkAJAFJACsCvAAAAGQAAADjAAABDQAAAIYAAAAAAAAC0wAwAjsAKgLTADACvAAfAm0AKQKqACoDJwAeAcH/pAKXAB4DBAAwAzgAVwKUAB4ChgAeAsgAHgOUAGkDcAAeBmoAaQNLAB4C7gAeAtAAHQKGAB4C0QBMAqoAMwSqAB4Cw//8AR8ATAIaAEwBYP/kAkYAQwJGAEMCRgBrAkYAQwJGAEMCRgBDAkYAQwJGAEMCRgBDAkYAQwJGAEMCRgA6AkYAOgJGAEMCRgAlA5sAKgGP/90DggAJAtz//wMsAGkCkQArAyMAQwKqAFsCvABIA0sAJQS6ACUCWABgAlgAeAJYAEMCWAB5AlgAagJYAG4CWABgAlgAbwLZADICWABfAlgAYAJYAEMCWABq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Bz4HPQdEB0MHTAdKB0cHQAdFB0EHRgdJB04HUwdSB1QHUAblBucG7AbyBvYG7wbjBt8G+gbwBuoG7QRuBG8ElwRqBI8EjgSRBJIEkwSMBI0ElAR3BHQEgQSIBGYEZwRoBGkEbARtBHAEcQRyBHMEdgSCBIMEhQSEBIYEhwSKBIsEiQSQBJUElgUGBQcFCAUJBQwFDQUQBREFEgUTBRYFIgUjBSUFJAUmBScFKgUrBSkFMAU1BTYFDgUPBTcFCgUvBS4FMQUyBTMFLAUtBTQFFwUUBSEFKASYBTgEmQU5BJoFOgSbBTsEdQUVBNgFeQTZBXoEawULBJwFPASdBT0EngU+BJ8FPwSgBUAEoQVBBKIFQgSjBUMEpAVEBKUFRQSmBUcEqAVIBKkFSQSqBUoEqwVLBKwFTAStBU0ErgVOBK8FTwSwBVAEsQVRBLMFUwS0BVQEtQS2BVYEtwVXBVgEuAVZBLkFWgS6BVsEuwVcBVUEvAVdBL0FXgS+BV8EvwVgBMAFYQTBBWIEwgVjBMMFZATEBWUExQVmBMYFZwTHBWgEyAVpBMkFagTKBWsEywVsBMwFbQTNBW4EzgVvBM8FcATQBXEE0QVyBNIFcwTTBXQE1AV1BNUFdgTWBXcE1wV4BKcFRgSyBVIE2gV7BNsFfAAlAasALQGyAC4BswBEAckAQwHIADQBuQBQAdYAVwHdAFQB2gBfAeUAcwH7AHUB/QB4AgAAfgIGAH8CBwCCAgoAowIrAKQCLACeAiYAnQIlAK8CNwCxAjkAuwJDALwCRAC0AjwAtwI/AL0CRQDFAk4AxgJPAN4CZwDaAmMA5AJtAOECagDjAmwA6gJzAPQCfQAVAZsAFwGdAA4BlAAQAZYAEQGXABIBmAAPAZUABwGNAAkBjwAKAZAACwGRAAgBjgA+AcMAQAHFAEYBywA2AbsAOAG9ADkBvgA6Ab8ANwG8AGMB6QBhAecAkQIZAJMCGwCIAhAAigISAIsCEwCMAhQAiQIRAJUCHQCXAh8AmAIgAJkCIQCWAh4AzgJXANACWQDSAlsA1AJdANUCXgDWAl8A0wJcAOwCdQDrAnQA7QJ2AO8CeAZzBnUGdwZ0BngGSgZJBkgGSwZXBlgGVgbVBtYGJwaBBoUGfgZ/BoQGjwaKBoIGgwZ5Bo4GjAaGBocGiwW/Bb4GtQavBrEGswa3BrgGtgaw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AREBEgETARQAYwEVAK4AkAEWACUAJgD9AP8AZAEXARgBGQAnARoA6QEbARwBHQEeAR8AKABlASABIQEiAMgBIwEkASUBJgEnASgAygEpASoAywErASwBLQEuAS8BMAExATIBMwApACoA+AE0ATUBNgE3ATgBOQArAToBOwE8AT0BPgAsAT8AzAFAAM0BQQDOAUIA+gFDAM8BRAFFAUYBRwFIAC0BSQAuAUoBSwAvAUwBTQFOAU8BUAFRAVIBUwDiADABVAAxAVUBVgFXAVgBWQFaAVsBXAFdAGYAMgDQAV4A0QFfAWABYQFiAWMBZABnAWUBZgFnANMBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdACRAXUArwF2AXcBeACwADMA7QA0ADUBeQF6AXsBfAF9AX4BfwA2AYABgQGCAOQBgwD7AYQBhQGGAYcBiAGJAYoANwGLAYwBjQGOAY8BkAA4ANQBkQGSANUBkwBoAZQA1gGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowA5ADoBpAGlAaYBpwA7ADwA6wGoALsBqQGqAasBrAGtAa4APQGvAOYBsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgHPAdAB0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AgACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgBEAGkCRwJIAkkCSgJLAkwCTQBrAk4CTwJQAlECUgJTAGwCVABqAlUCVgJXAlgAbgJZAG0AoAJaAEUARgD+AQAAbwJbAlwCXQBHAOoCXgEBAl8CYAJhAEgAcAJiAmMCZAByAmUCZgJnAmgCaQJqAHMCawJsAHECbQJuAm8CcAJxAnICcwJ0AnUCdgBJAEoA+QJ3AngCeQJ6AnsCfABLAn0CfgJ/AoACgQBMANcAdAKCAHYCgwB3AoQChQKGAHUChwKIAokCigKLAowATQKNAo4ATgKPApACkQBPApICkwKUApUClgKXApgA4wBQApkAUQKaApsCnAKdAp4CnwKgAqECogB4AFIAeQKjAHsCpAKlAqYCpwKoAqkAfAKqAqsCrAB6Aq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkAoQK6AH0CuwK8Ar0AsQBTAO4AVABVAr4CvwLAAsECwgLDAsQAVgLFAsYCxwDlAsgA/ALJAsoCywLMAs0AiQLOAFcCzwLQAtEC0gLTAtQC1QBYAH4C1gLXAIAC2ACBAtkAfwLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ABZAFoC6QLqAusC7ABbAFwA7ALtALoC7gLvAvAC8QLyAvMAXQL0AOcC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AwADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTAMAAwQNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPDA8QDxQPGA8cDyAPJA8oDywPMA80DzgPPA9AD0QPSA9MD1APVA9YD1wPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPkA+UD5gPnA+gD6QPqA+sD7APtA+4D7wPwA/ED8gPzA/QD9QP2A/cD+AP5A/oD+wP8A/0D/gP/BAAEAQQCBAMEBAQFBAYEBwQIBAkECgQLBAwEDQQOBA8EEAQRBBIEEwQUBBUEFgQXBBgEGQQaBBsEHAQdBB4EHwQgBCEEIgQjBCQEJQQmBCcEKAQpBCoEKwQsBC0ELgQvBDAEMQQyBDMENAQ1BDYENwQ4BDkEOgQ7BDwEPQQ+BD8EQARBBEIEQwREBEUERgRHBEgESQRKBEsETARNBE4ETwRQBFEEUgRTBFQEVQRWBFcEWARZBFoEWwRcBF0EXgRfBGAEYQRiBGMEZARlBGYEZwRoBGkEagRrBGwEbQRuBG8EcARxBHIEcwR0BHUEdgR3BHgEeQR6BHsEfAR9BH4EfwSABIEEggSDBIQEhQSGBIcEiASJBIoEiwSMBI0EjgSPBJAEkQSSBJMElASVBJYElwSYBJkEmgSbBJwEnQSeBJ8EoAShBKIEowSkBKUEpgSnBKgEqQSqBKsErAStBK4ErwSwBLEEsgSzBLQEtQS2BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYExwTIBMkEygTLBMwEzQTOBM8E0ATRBNIE0wTUBNUE1gTXBNgE2QTaAJ0AngTbBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFKAUpBSoFKwUsBS0FLgUvBTAFMQUyBTMFNAU1BTYFNwU4BTkFOgU7BTwFPQU+BT8FQAVBBUIFQwVEBUUFRgVHBUgFSQVKBUsFTAVNBU4FTwVQBVEFUgVTBVQFVQVWBVcFWAVZBVoFWwVcBV0FXgVfBWAFYQViBWMFZAVlBWYFZwVoBWkFagVrBWwFbQVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFeQV6BXsFfAV9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFkQWSBZMFlAWVBZYFlwWYBZkFmgWbBZwFnQWeBZ8FoAWhBaIFowWkBaUFpgWnBagFqQWqBasFrAWtBa4FrwWwBbEFsgWzBbQFtQW2BbcFuAW5BboFuwW8Bb0FvgW/BcAFwQXCBcMFxAXFBcYFxwXIBckFygXLBcwFzQXOBc8F0AXRBdIF0wXUBdUF1gXXBdgF2QXaBdsF3AXdBd4F3wXgBeEF4gXjBeQF5QXmBecF6AXpBeoF6wXsBe0F7gXvBfAF8QXyBfMF9AX1BfYF9wX4BfkF+gX7BfwF/QX+Bf8GAAYBBgIGAwYEBgUGBgYHBggGCQYKBgsGDAYNBg4GDwYQBhEGEgYTBhQGFQYWBhcGGAYZBhoGGwYcBh0GHgYfBiAGIQYiBiMGJAYlBiYGJwYoBikGKgYrBiwGLQYuBi8GMAYxAJsGMgYzABMAFAAVABYAFwAYABkAGgAbABwGNAY1BjYGNwY4BjkGOgY7BjwGPQY+Bj8GQAZBBkIGQwZEBkUGRgZHBkgGSQZKBksGTAZNBk4GTwZQBlEGUgZTBlQGVQZWBlcGWAZZBloGWwZcBl0GXgZfBmAGYQZiBmMGZAZlBmYGZwZoBmkGagZrBmwGbQZuBm8GcAZxBnIGcwZ0BnUGdgZ3BngGeQZ6BnsGfAZ9Bn4GfwaABoEGggaDALwA9AaEBoUA9QD2BoYGhwaIBokADQA/AMMAhwAdAA8AqwAEAKMABgARACIAogAFAAoAHgASAEIGigaLBowGjQaOBo8AXgBgAD4AQAALAAwGkAaRBpIGkwaUBpUAswCyBpYGlwAQBpgGmQaaBpsGnACpAKoAvgC/AMUAtAC1ALYAtwDEBp0GngafBqAGoQaiBqMGpAalBqYGpwaoBqkGqgarBqwGrQauBq8GsAaxBrIGswa0BrUGtga3BrgGuQa6AIQGuwC9AAcGvAa9AKYA9wa+Br8GwAbBBsIGwwbEBsUGxgbHBsgAhQbJBsoGywCWBswGzQbOAA4A7wDwALgAIACPACEAHwCVAJQAkwCnAGEApAbPAJIAnAbQBtEAmgCZAKUG0gCYAAgAxgbTBtQG1QbWBtcG2AbZBtoG2wbcBt0G3gbfBuAG4QbiALkG4wbkBuUG5gbnBugG6QbqBusG7AAjAAkAiACGAIsAigCMAIMAXwDoBu0AggDCBu4G7wBBBvAG8QbyBvMG9Ab1BvYG9wb4BvkG+gb7BvwG/Qb+Bv8HAAcBBwIHAwcEBwUHBgcHBwgHCQcKBwsHDAcNBw4HDwcQBxEHEgcTBxQHFQcWBxcHGAcZBxoHGwccBx0HHgcfByAHIQciByMHJAclByYHJwcoBykHKgcrBywHLQcuBy8HMAcxBzIHMwc0BzUHNgc3BzgHOQc6BzsHPAc9Bz4HPwdAB0EHQgdDB0QHRQdGB0cHSAdJB0oHSwdMB00HTgdPB1AHUQdSB1MHVAdVB1YHVwdYB1kHWgdbB1wHXQCNANsA4QDeANgAjgDcAEMA3wDaAOAA3QDZB14HXwdgB2EHYgdjB2QHZQdmB2cHaAdpB2oHawdsB20HbgdvB3AHcQdyB3MHdAd1B3YHdwd4BE5VTEwGQWJyZXZlB3VuaTFFQUUHdW5pMUVCNgd1bmkxRUIwB3VuaTFFQjIHdW5pMUVCNAd1bmkwMUNEB3VuaTFFQTQHdW5pMUVBQwd1bmkxRUE2B3VuaTFFQTgHdW5pMUVBQQd1bmkwMjAwB3VuaTFFQTAHdW5pMUVBMgd1bmkwMjAyB0FtYWNyb24HQW9nb25lawpBcmluZ2FjdXRlB0FFYWN1dGUHdW5pMUUwOAtDY2lyY3VtZmxleApDZG90YWNjZW50B3VuaTAxQzQGRGNhcm9uBkRjcm9hdAd1bmkxRTBDB3VuaTFFMEUHdW5pMDFDNQZFYnJldmUGRWNhcm9uB3VuaTFFMUMHdW5pMUVCRQd1bmkxRUM2B3VuaTFFQzAHdW5pMUVDMgd1bmkxRUM0B3VuaTAyMDQKRWRvdGFjY2VudAd1bmkxRUI4B3VuaTFFQkEHdW5pMDIwNgdFbWFjcm9uB3VuaTFFMTYHdW5pMUUxNAdFb2dvbmVrB3VuaTFFQkMHdW5pMDFCNwd1bmkwMUVFBkdjYXJvbgtHY2lyY3VtZmxleAxHY29tbWFhY2NlbnQKR2RvdGFjY2VudAd1bmkxRTIwB3VuaTAxRTQESGJhcgd1bmkxRTJBB3VuaTAyMUULSGNpcmN1bWZsZXgHdW5pMUUyNAJJSgZJYnJldmUHdW5pMDIwOAd1bmkxRTJFB3VuaTFFQ0EHdW5pMUVDOAd1bmkwMjBBB0ltYWNyb24HSW9nb25lawZJdGlsZGULSmNpcmN1bWZsZXgHdW5pMDFFOAxLY29tbWFhY2NlbnQHdW5pMDFDNwZMYWN1dGUGTGNhcm9uDExjb21tYWFjY2VudARMZG90B3VuaTFFMzYHdW5pMDFDOAd1bmkxRTNBB3VuaTFFNDIHdW5pMDFDQQZOYWN1dGUGTmNhcm9uDE5jb21tYWFjY2VudAd1bmkxRTQ0B3VuaTFFNDYDRW5nB3VuaTAxQ0IHdW5pMUU0OAZPYnJldmUHdW5pMUVEMAd1bmkxRUQ4B3VuaTFFRDIHdW5pMUVENAd1bmkxRUQ2B3VuaTAyMEMHdW5pMDIyQQd1bmkwMjMwB3VuaTFFQ0MHdW5pMUVDRQVPaG9ybgd1bmkxRURBB3VuaTFFRTIHdW5pMUVEQwd1bmkxRURFB3VuaTFFRTANT2h1bmdhcnVtbGF1dAd1bmkwMjBFB09tYWNyb24HdW5pMUU1Mgd1bmkxRTUwB3VuaTAxRUELT3NsYXNoYWN1dGUHdW5pMUU0Qwd1bmkxRTRFB3VuaTAyMkMGUmFjdXRlBlJjYXJvbgxSY29tbWFhY2NlbnQHdW5pMDIxMAd1bmkxRTVBB3VuaTAyMTIHdW5pMUU1RQZTYWN1dGUHdW5pMUU2NAd1bmlBNzhCB3VuaTFFNjYLU2NpcmN1bWZsZXgMU2NvbW1hYWNjZW50B3VuaTFFNjAHdW5pMUU2Mgd1bmkxRTY4B3VuaTFFOUUHdW5pMDE4RgRUYmFyBlRjYXJvbgd1bmkwMTYyB3VuaTAyMUEHdW5pMUU2Qwd1bmkxRTZFBlVicmV2ZQd1bmkwMUQzB3VuaTAyMTQHdW5pMUVFNAd1bmkxRUU2BVVob3JuB3VuaTFFRTgHdW5pMUVGMAd1bmkxRUVBB3VuaTFFRUMHdW5pMUVFRQ1VaHVuZ2FydW1sYXV0B3VuaTAyMTYHVW1hY3Jvbgd1bmkxRTdBB1VvZ29uZWsFVXJpbmcGVXRpbGRlB3VuaTFFNzgGV2FjdXRlC1djaXJjdW1mbGV4CVdkaWVyZXNpcwZXZ3JhdmULWWNpcmN1bWZsZXgHdW5pMUU4RQd1bmkxRUY0BllncmF2ZQd1bmkxRUY2B3VuaTAyMzIHdW5pMUVGOAZaYWN1dGUKWmRvdGFjY2VudAd1bmkxRTkyEElhY3V0ZV9KLmxvY2xOTEQGQS5zczAxC0FhY3V0ZS5zczAxC0FicmV2ZS5zczAxDHVuaTFFQUUuc3MwMQx1bmkxRUI2LnNzMDEMdW5pMUVCMC5zczAxDHVuaTFFQjIuc3MwMQx1bmkxRUI0LnNzMDEMdW5pMDFDRC5zczAxEEFjaXJjdW1mbGV4LnNzMDEMdW5pMUVBNC5zczAxDHVuaTFFQUMuc3MwMQx1bmkxRUE2LnNzMDEMdW5pMUVBOC5zczAxDHVuaTFFQUEuc3MwMQx1bmkwMjAwLnNzMDEOQWRpZXJlc2lzLnNzMDEMdW5pMUVBMC5zczAxC0FncmF2ZS5zczAxDHVuaTFFQTIuc3MwMQx1bmkwMjAyLnNzMDEMQW1hY3Jvbi5zczAxDEFvZ29uZWsuc3MwMQpBcmluZy5zczAxD0FyaW5nYWN1dGUuc3MwMQtBdGlsZGUuc3MwMQdBRS5zczAxDEFFYWN1dGUuc3MwMQx1bmkwMUM0LnNzMDEMdW5pMDFDNS5zczAxBkUuc3MwMQtFYWN1dGUuc3MwMQtFYnJldmUuc3MwMQtFY2Fyb24uc3MwMQx1bmkxRTFDLnNzMDEQRWNpcmN1bWZsZXguc3MwMQx1bmkxRUJFLnNzMDEMdW5pMUVDNi5zczAxDHVuaTFFQzAuc3MwMQx1bmkxRUMyLnNzMDEMdW5pMUVDNC5zczAxDHVuaTAyMDQuc3MwMQ5FZGllcmVzaXMuc3MwMQ9FZG90YWNjZW50LnNzMDEMdW5pMUVCOC5zczAxC0VncmF2ZS5zczAxDHVuaTFFQkEuc3MwMQx1bmkwMjA2LnNzMDEMRW1hY3Jvbi5zczAxDHVuaTFFMTYuc3MwMQx1bmkxRTE0LnNzMDEMRW9nb25lay5zczAxDHVuaTFFQkMuc3MwMQZGLnNzMDEGRy5zczAxC0dicmV2ZS5zczAxC0djYXJvbi5zczAxEEdjaXJjdW1mbGV4LnNzMDERR2NvbW1hYWNjZW50LnNzMDEPR2RvdGFjY2VudC5zczAxDHVuaTFFMjAuc3MwMQx1bmkwMUU0LnNzMDEGSS5zczAxB0lKLnNzMDELSWFjdXRlLnNzMDEVSWFjdXRlX0oubG9jbE5MRC5zczAxC0licmV2ZS5zczAxEEljaXJjdW1mbGV4LnNzMDEMdW5pMDIwOC5zczAxDklkaWVyZXNpcy5zczAxDHVuaTFFMkUuc3MwMQ9JZG90YWNjZW50LnNzMDEMdW5pMUVDQS5zczAxC0lncmF2ZS5zczAxDHVuaTFFQzguc3MwMQx1bmkwMjBBLnNzMDEMSW1hY3Jvbi5zczAxDElvZ29uZWsuc3MwMQtJdGlsZGUuc3MwMQZKLnNzMDEQSmNpcmN1bWZsZXguc3MwMQx1bmkwMUM3LnNzMDEGTS5zczAxDHVuaTFFNDIuc3MwMQZOLnNzMDEMdW5pMDFDQS5zczAxC05hY3V0ZS5zczAxC05jYXJvbi5zczAxEU5jb21tYWFjY2VudC5zczAxDHVuaTFFNDQuc3MwMQx1bmkxRTQ2LnNzMDEIRW5nLnNzMDEMdW5pMDFDQi5zczAxDHVuaTFFNDguc3MwMQtOdGlsZGUuc3MwMQZRLnNzMDEMdW5pMDE4Ri5zczAxBlQuc3MwMQlUYmFyLnNzMDELVGNhcm9uLnNzMDEMdW5pMDE2Mi5zczAxDHVuaTAyMUEuc3MwMQx1bmkxRTZDLnNzMDEMdW5pMUU2RS5zczAxBlUuc3MwMQtVYWN1dGUuc3MwMQtVYnJldmUuc3MwMQx1bmkwMUQzLnNzMDEQVWNpcmN1bWZsZXguc3MwMQx1bmkwMjE0LnNzMDEOVWRpZXJlc2lzLnNzMDEMdW5pMUVFNC5zczAxC1VncmF2ZS5zczAxDHVuaTFFRTYuc3MwMQpVaG9ybi5zczAxDHVuaTFFRTguc3MwMQx1bmkxRUYwLnNzMDEMdW5pMUVFQS5zczAxDHVuaTFFRUMuc3MwMQx1bmkxRUVFLnNzMDESVWh1bmdhcnVtbGF1dC5zczAxDHVuaTAyMTYuc3MwMQxVbWFjcm9uLnNzMDEMdW5pMUU3QS5zczAxDFVvZ29uZWsuc3MwMQpVcmluZy5zczAxC1V0aWxkZS5zczAxDHVuaTFFNzguc3MwMQZXLnNzMDELV2FjdXRlLnNzMDEQV2NpcmN1bWZsZXguc3MwMQ5XZGllcmVzaXMuc3MwMQtXZ3JhdmUuc3MwMQZZLnNzMDELWWFjdXRlLnNzMDEQWWNpcmN1bWZsZXguc3MwMQ5ZZGllcmVzaXMuc3MwMQx1bmkxRThFLnNzMDEMdW5pMUVGNC5zczAxC1lncmF2ZS5zczAxDHVuaTFFRjYuc3MwMQx1bmkwMjMyLnNzMDEMdW5pMUVGOC5zczAxBlouc3MwMQtaYWN1dGUuc3MwMQtaY2Fyb24uc3MwMQ9aZG90YWNjZW50LnNzMDEMdW5pMUU5Mi5zczAxBmFicmV2ZQd1bmkxRUFGB3VuaTFFQjcHdW5pMUVCMQd1bmkxRUIzB3VuaTFFQjUHdW5pMDFDRQd1bmkxRUE1B3VuaTFFQUQHdW5pMUVBNwd1bmkxRUE5B3VuaTFFQUIHdW5pMDIwMQd1bmkxRUExB3VuaTFFQTMHdW5pMDIwMwdhbWFjcm9uB2FvZ29uZWsKYXJpbmdhY3V0ZQdhZWFjdXRlB3VuaTFFMDkLY2NpcmN1bWZsZXgKY2RvdGFjY2VudAZkY2Fyb24HdW5pMUUwRAd1bmkxRTBGB3VuaTAxQzYGZWJyZXZlBmVjYXJvbgd1bmkxRTFEB3VuaTFFQkYHdW5pMUVDNwd1bmkxRUMxB3VuaTFFQzMHdW5pMUVDNQd1bmkwMjA1CmVkb3RhY2NlbnQHdW5pMUVCOQd1bmkxRUJCB3VuaTAyMDcHZW1hY3Jvbgd1bmkxRTE3B3VuaTFFMTUHZW9nb25lawd1bmkxRUJEB3VuaTAyNTkHdW5pMDI5Mgd1bmkwMUVGBmdjYXJvbgtnY2lyY3VtZmxleAxnY29tbWFhY2NlbnQKZ2RvdGFjY2VudAd1bmkxRTIxB3VuaTAxRTUEaGJhcgd1bmkxRTJCB3VuaTAyMUYLaGNpcmN1bWZsZXgHdW5pMUUyNQZpYnJldmUHdW5pMDIwOQd1bmkxRTJGCWkubG9jbFRSSwd1bmkxRUNCB3VuaTFFQzkHdW5pMDIwQgJpagdpbWFjcm9uB2lvZ29uZWsGaXRpbGRlB3VuaTAyMzcLamNpcmN1bWZsZXgHdW5pMDFFOQxrY29tbWFhY2NlbnQMa2dyZWVubGFuZGljBmxhY3V0ZQZsY2Fyb24MbGNvbW1hYWNjZW50BGxkb3QHdW5pMUUzNwd1bmkwMUM5B3VuaTFFM0IHdW5pMUU0MwZuYWN1dGULbmFwb3N0cm9waGUGbmNhcm9uDG5jb21tYWFjY2VudAd1bmkxRTQ1B3VuaTFFNDcDZW5nB3VuaTAxQ0MHdW5pMUU0OQZvYnJldmUHdW5pMUVEMQd1bmkxRUQ5B3VuaTFFRDMHdW5pMUVENQd1bmkxRUQ3B3VuaTAyMEQHdW5pMDIyQgd1bmkwMjMxB3VuaTFFQ0QHdW5pMUVDRgVvaG9ybgd1bmkxRURCB3VuaTFFRTMHdW5pMUVERAd1bmkxRURGB3VuaTFFRTENb2h1bmdhcnVtbGF1dAd1bmkwMjBGB29tYWNyb24HdW5pMUU1Mwd1bmkxRTUxB3VuaTAxRUILb3NsYXNoYWN1dGUHdW5pMUU0RAd1bmkxRTRGB3VuaTAyMkQGcmFjdXRlBnJjYXJvbgxyY29tbWFhY2NlbnQHdW5pMDIxMQd1bmkxRTVCB3VuaTAyMTMHdW5pMUU1RgZzYWN1dGUHdW5pMUU2NQd1bmlBNzhDB3VuaTFFNjcLc2NpcmN1bWZsZXgMc2NvbW1hYWNjZW50B3VuaTFFNjEHdW5pMUU2Mwd1bmkxRTY5BWxvbmdzBHRiYXIGdGNhcm9uB3VuaTAxNjMHdW5pMDIxQgd1bmkxRTk3B3VuaTFFNkQHdW5pMUU2RgZ1YnJldmUHdW5pMDFENAd1bmkwMjE1B3VuaTFFRTUHdW5pMUVFNwV1aG9ybgd1bmkxRUU5B3VuaTFFRjEHdW5pMUVFQgd1bmkxRUVEB3VuaTFFRUYNdWh1bmdhcnVtbGF1dAd1bmkwMjE3B3VtYWNyb24HdW5pMUU3Qgd1b2dvbmVrBXVyaW5nBnV0aWxkZQd1bmkxRTc5BndhY3V0ZQt3Y2lyY3VtZmxleAl3ZGllcmVzaXMGd2dyYXZlC3ljaXJjdW1mbGV4B3VuaTFFOEYHdW5pMUVGNQZ5Z3JhdmUHdW5pMUVGNwd1bmkwMjMzB3VuaTFFRjkGemFjdXRlCnpkb3RhY2NlbnQHdW5pMUU5MxBpYWN1dGVfai5sb2NsTkxEBmEuc3MwMQthYWN1dGUuc3MwMQthYnJldmUuc3MwMQx1bmkxRUFGLnNzMDEMdW5pMUVCNy5zczAxDHVuaTFFQjEuc3MwMQx1bmkxRUIzLnNzMDEMdW5pMUVCNS5zczAxDHVuaTAxQ0Uuc3MwMRBhY2lyY3VtZmxleC5zczAxDHVuaTFFQTUuc3MwMQx1bmkxRUFELnNzMDEMdW5pMUVBNy5zczAxDHVuaTFFQTkuc3MwMQx1bmkxRUFCLnNzMDEMdW5pMDIwMS5zczAxDmFkaWVyZXNpcy5zczAxDHVuaTFFQTEuc3MwMQthZ3JhdmUuc3MwMQx1bmkxRUEzLnNzMDEMdW5pMDIwMy5zczAxDGFtYWNyb24uc3MwMQxhb2dvbmVrLnNzMDEKYXJpbmcuc3MwMQ9hcmluZ2FjdXRlLnNzMDELYXRpbGRlLnNzMDEHYWUuc3MwMQxhZWFjdXRlLnNzMDEMdW5pMDFDNi5zczAxBmUuc3MwMQtlYWN1dGUuc3MwMQtlYnJldmUuc3MwMQtlY2Fyb24uc3MwMQx1bmkxRTFELnNzMDEQZWNpcmN1bWZsZXguc3MwMQx1bmkxRUJGLnNzMDEMdW5pMUVDNy5zczAxDHVuaTFFQzEuc3MwMQx1bmkxRUMzLnNzMDEMdW5pMUVDNS5zczAxDHVuaTAyMDUuc3MwMQ5lZGllcmVzaXMuc3MwMQ9lZG90YWNjZW50LnNzMDEMdW5pMUVCOS5zczAxC2VncmF2ZS5zczAxDHVuaTFFQkIuc3MwMQx1bmkwMjA3LnNzMDEMZW1hY3Jvbi5zczAxDHVuaTFFMTcuc3MwMQx1bmkxRTE1LnNzMDEMZW9nb25lay5zczAxDHVuaTFFQkQuc3MwMQx1bmkwMjU5LnNzMDEGZi5zczAxBmwuc3MwMQtsYWN1dGUuc3MwMQtsY2Fyb24uc3MwMRFsY29tbWFhY2NlbnQuc3MwMQlsZG90LnNzMDEMdW5pMUUzNy5zczAxDHVuaTAxQzkuc3MwMQx1bmkxRTNCLnNzMDELbHNsYXNoLnNzMDEHb2Uuc3MwMQZ0LnNzMDEJdGJhci5zczAxC3RjYXJvbi5zczAxDHVuaTAxNjMuc3MwMQx1bmkwMjFCLnNzMDEMdW5pMUU5Ny5zczAxDHVuaTFFNkQuc3MwMQx1bmkxRTZGLnNzMDEGdy5zczAxC3dhY3V0ZS5zczAxEHdjaXJjdW1mbGV4LnNzMDEOd2RpZXJlc2lzLnNzMDELd2dyYXZlLnNzMDEGeS5zczAxC3lhY3V0ZS5zczAxEHljaXJjdW1mbGV4LnNzMDEOeWRpZXJlc2lzLnNzMDEMdW5pMUVGNS5zczAxC3lncmF2ZS5zczAxDHVuaTFFRjcuc3MwMQx1bmkwMjMzLnNzMDEMdW5pMUVGOS5zczAxBnouc3MwMQt6YWN1dGUuc3MwMQt6Y2Fyb24uc3MwMQ96ZG90YWNjZW50LnNzMDEMdW5pMUU5My5zczAxA1RfaAdmaS5zczAxB2ZsLnNzMDEEYS5zYwlhYWN1dGUuc2MJYWJyZXZlLnNjCnVuaTFFQUYuc2MKdW5pMUVCNy5zYwp1bmkxRUIxLnNjCnVuaTFFQjMuc2MKdW5pMUVCNS5zYwp1bmkwMUNFLnNjDmFjaXJjdW1mbGV4LnNjCnVuaTFFQTUuc2MKdW5pMUVBRC5zYwp1bmkxRUE3LnNjCnVuaTFFQTkuc2MKdW5pMUVBQi5zYwp1bmkwMjAxLnNjDGFkaWVyZXNpcy5zYwp1bmkxRUExLnNjCWFncmF2ZS5zYwp1bmkxRUEzLnNjCnVuaTAyMDMuc2MKYW1hY3Jvbi5zYwphb2dvbmVrLnNjCGFyaW5nLnNjDWFyaW5nYWN1dGUuc2MJYXRpbGRlLnNjBWFlLnNjCmFlYWN1dGUuc2MEYi5zYwRjLnNjCWNhY3V0ZS5zYwljY2Fyb24uc2MLY2NlZGlsbGEuc2MKdW5pMUUwOS5zYw5jY2lyY3VtZmxleC5zYw1jZG90YWNjZW50LnNjBGQuc2MGZXRoLnNjCWRjYXJvbi5zYwlkY3JvYXQuc2MKdW5pMUUwRC5zYwp1bmkxRTBGLnNjCnVuaTAxQzYuc2MEZS5zYwllYWN1dGUuc2MJZWJyZXZlLnNjCWVjYXJvbi5zYwp1bmkxRTFELnNjDmVjaXJjdW1mbGV4LnNjCnVuaTFFQkYuc2MKdW5pMUVDNy5zYwp1bmkxRUMxLnNjCnVuaTFFQzMuc2MKdW5pMUVDNS5zYwp1bmkwMjA1LnNjDGVkaWVyZXNpcy5zYw1lZG90YWNjZW50LnNjCnVuaTFFQjkuc2MJZWdyYXZlLnNjCnVuaTFFQkIuc2MKdW5pMDIwNy5zYwplbWFjcm9uLnNjCnVuaTFFMTcuc2MKdW5pMUUxNS5zYwplb2dvbmVrLnNjCnVuaTFFQkQuc2MKdW5pMDI1OS5zYwp1bmkwMjkyLnNjCnVuaTAxRUYuc2MEZi5zYwRnLnNjCWdicmV2ZS5zYwlnY2Fyb24uc2MOZ2NpcmN1bWZsZXguc2MPZ2NvbW1hYWNjZW50LnNjDWdkb3RhY2NlbnQuc2MKdW5pMUUyMS5zYwp1bmkwMUU1LnNjBGguc2MHaGJhci5zYwp1bmkxRTJCLnNjCnVuaTAyMUYuc2MOaGNpcmN1bWZsZXguc2MKdW5pMUUyNS5zYwRpLnNjC2RvdGxlc3NpLnNjCWlhY3V0ZS5zYxNpYWN1dGVfai5sb2NsTkxELnNjCWlicmV2ZS5zYw5pY2lyY3VtZmxleC5zYwp1bmkwMjA5LnNjDGlkaWVyZXNpcy5zYwp1bmkxRTJGLnNjDGkuc2MubG9jbFRSSwp1bmkxRUNCLnNjCWlncmF2ZS5zYwp1bmkxRUM5LnNjCnVuaTAyMEIuc2MFaWouc2MKaW1hY3Jvbi5zYwppb2dvbmVrLnNjCWl0aWxkZS5zYwRqLnNjDmpjaXJjdW1mbGV4LnNjBGsuc2MKdW5pMDFFOS5zYw9rY29tbWFhY2NlbnQuc2MPa2dyZWVubGFuZGljLnNjBGwuc2MJbGFjdXRlLnNjCWxjYXJvbi5zYw9sY29tbWFhY2NlbnQuc2MHbGRvdC5zYwp1bmkxRTM3LnNjCnVuaTAxQzkuc2MKdW5pMUUzQi5zYwlsc2xhc2guc2MEbS5zYwp1bmkxRTQzLnNjBG4uc2MJbmFjdXRlLnNjCW5jYXJvbi5zYw9uY29tbWFhY2NlbnQuc2MKdW5pMUU0NS5zYwp1bmkxRTQ3LnNjBmVuZy5zYwp1bmkwMUNDLnNjCnVuaTFFNDkuc2MJbnRpbGRlLnNjBG8uc2MJb2FjdXRlLnNjCW9icmV2ZS5zYw5vY2lyY3VtZmxleC5zYwp1bmkxRUQxLnNjCnVuaTFFRDkuc2MKdW5pMUVEMy5zYwp1bmkxRUQ1LnNjCnVuaTFFRDcuc2MKdW5pMDIwRC5zYwxvZGllcmVzaXMuc2MKdW5pMDIyQi5zYwp1bmkwMjMxLnNjCnVuaTFFQ0Quc2MJb2dyYXZlLnNjCnVuaTFFQ0Yuc2MIb2hvcm4uc2MKdW5pMUVEQi5zYwp1bmkxRUUzLnNjCnVuaTFFREQuc2MKdW5pMUVERi5zYwp1bmkxRUUxLnNjEG9odW5nYXJ1bWxhdXQuc2MKdW5pMDIwRi5zYwpvbWFjcm9uLnNjCnVuaTFFNTMuc2MKdW5pMUU1MS5zYwp1bmkwMUVCLnNjCW9zbGFzaC5zYw5vc2xhc2hhY3V0ZS5zYwlvdGlsZGUuc2MKdW5pMUU0RC5zYwp1bmkxRTRGLnNjCnVuaTAyMkQuc2MFb2Uuc2MEcC5zYwh0aG9ybi5zYwRxLnNjBHIuc2MJcmFjdXRlLnNjCXJjYXJvbi5zYw9yY29tbWFhY2NlbnQuc2MKdW5pMDIxMS5zYwp1bmkxRTVCLnNjCnVuaTAyMTMuc2MKdW5pMUU1Ri5zYwRzLnNjCXNhY3V0ZS5zYwp1bmkxRTY1LnNjCnVuaUE3OEMuc2MJc2Nhcm9uLnNjCnVuaTFFNjcuc2MLc2NlZGlsbGEuc2MOc2NpcmN1bWZsZXguc2MPc2NvbW1hYWNjZW50LnNjCnVuaTFFNjEuc2MKdW5pMUU2My5zYwp1bmkxRTY5LnNjDWdlcm1hbmRibHMuc2MEdC5zYwd0YmFyLnNjCXRjYXJvbi5zYwp1bmkwMTYzLnNjCnVuaTAyMUIuc2MKdW5pMUU5Ny5zYwp1bmkxRTZELnNjCnVuaTFFNkYuc2MEdS5zYwl1YWN1dGUuc2MJdWJyZXZlLnNjCnVuaTAxRDQuc2MOdWNpcmN1bWZsZXguc2MKdW5pMDIxNS5zYwx1ZGllcmVzaXMuc2MKdW5pMUVFNS5zYwl1Z3JhdmUuc2MKdW5pMUVFNy5zYwh1aG9ybi5zYwp1bmkxRUU5LnNjCnVuaTFFRjEuc2MKdW5pMUVFQi5zYwp1bmkxRUVELnNjCnVuaTFFRUYuc2MQdWh1bmdhcnVtbGF1dC5zYwp1bmkwMjE3LnNjCnVtYWNyb24uc2MKdW5pMUU3Qi5zYwp1b2dvbmVrLnNjCHVyaW5nLnNjCXV0aWxkZS5zYwp1bmkxRTc5LnNjBHYuc2MEdy5zYwl3YWN1dGUuc2MOd2NpcmN1bWZsZXguc2MMd2RpZXJlc2lzLnNjCXdncmF2ZS5zYwR4LnNjBHkuc2MJeWFjdXRlLnNjDnljaXJjdW1mbGV4LnNjDHlkaWVyZXNpcy5zYwp1bmkxRThGLnNjCnVuaTFFRjUuc2MJeWdyYXZlLnNjCnVuaTFFRjcuc2MKdW5pMDIzMy5zYwp1bmkxRUY5LnNjBHouc2MJemFjdXRlLnNjCXpjYXJvbi5zYw16ZG90YWNjZW50LnNjCnVuaTFFOTMuc2MJYS5zYy5zczAxDmFhY3V0ZS5zYy5zczAxDmFicmV2ZS5zYy5zczAxD3VuaTFFQUYuc2Muc3MwMQ91bmkxRUI3LnNjLnNzMDEPdW5pMUVCMS5zYy5zczAxD3VuaTFFQjMuc2Muc3MwMQ91bmkxRUI1LnNjLnNzMDEPdW5pMDFDRS5zYy5zczAxE2FjaXJjdW1mbGV4LnNjLnNzMDEPdW5pMUVBNS5zYy5zczAxD3VuaTFFQUQuc2Muc3MwMQ91bmkxRUE3LnNjLnNzMDEPdW5pMUVBOS5zYy5zczAxD3VuaTFFQUIuc2Muc3MwMQ91bmkwMjAxLnNjLnNzMDERYWRpZXJlc2lzLnNjLnNzMDEPdW5pMUVBMS5zYy5zczAxDmFncmF2ZS5zYy5zczAxD3VuaTFFQTMuc2Muc3MwMQ91bmkwMjAzLnNjLnNzMDEPYW1hY3Jvbi5zYy5zczAxD2FvZ29uZWsuc2Muc3MwMQ1hcmluZy5zYy5zczAxEmFyaW5nYWN1dGUuc2Muc3MwMQ5hdGlsZGUuc2Muc3MwMQphZS5zYy5zczAxD2FlYWN1dGUuc2Muc3MwMQ91bmkwMUM2LnNjLnNzMDEJZS5zYy5zczAxDmVhY3V0ZS5zYy5zczAxDmVicmV2ZS5zYy5zczAxDmVjYXJvbi5zYy5zczAxD3VuaTFFMUQuc2Muc3MwMRNlY2lyY3VtZmxleC5zYy5zczAxD3VuaTFFQkYuc2Muc3MwMQ91bmkxRUM3LnNjLnNzMDEPdW5pMUVDMS5zYy5zczAxD3VuaTFFQzMuc2Muc3MwMQ91bmkxRUM1LnNjLnNzMDEPdW5pMDIwNS5zYy5zczAxEWVkaWVyZXNpcy5zYy5zczAxEmVkb3RhY2NlbnQuc2Muc3MwMQ91bmkxRUI5LnNjLnNzMDEOZWdyYXZlLnNjLnNzMDEPdW5pMUVCQi5zYy5zczAxD3VuaTAyMDcuc2Muc3MwMQ9lbWFjcm9uLnNjLnNzMDEPdW5pMUUxNy5zYy5zczAxD3VuaTFFMTUuc2Muc3MwMQ9lb2dvbmVrLnNjLnNzMDEPdW5pMUVCRC5zYy5zczAxD3VuaTAyNTkuc2Muc3MwMQlmLnNjLnNzMDEJZy5zYy5zczAxDmdicmV2ZS5zYy5zczAxDmdjYXJvbi5zYy5zczAxE2djaXJjdW1mbGV4LnNjLnNzMDEUZ2NvbW1hYWNjZW50LnNjLnNzMDESZ2RvdGFjY2VudC5zYy5zczAxD3VuaTFFMjEuc2Muc3MwMQ91bmkwMUU1LnNjLnNzMDEJaS5zYy5zczAxEGRvdGxlc3NpLnNjLnNzMDEOaWFjdXRlLnNjLnNzMDEYaWFjdXRlX2oubG9jbE5MRC5zYy5zczAxDmlicmV2ZS5zYy5zczAxE2ljaXJjdW1mbGV4LnNjLnNzMDEPdW5pMDIwOS5zYy5zczAxEWlkaWVyZXNpcy5zYy5zczAxD3VuaTFFMkYuc2Muc3MwMQ91bmkxRUNCLnNjLnNzMDEOaWdyYXZlLnNjLnNzMDEPdW5pMUVDOS5zYy5zczAxD3VuaTAyMEIuc2Muc3MwMQppai5zYy5zczAxD2ltYWNyb24uc2Muc3MwMQ9pb2dvbmVrLnNjLnNzMDEOaXRpbGRlLnNjLnNzMDEJai5zYy5zczAxE2pjaXJjdW1mbGV4LnNjLnNzMDEPdW5pMDFDOS5zYy5zczAxCW0uc2Muc3MwMQ91bmkxRTQzLnNjLnNzMDEJbi5zYy5zczAxDm5hY3V0ZS5zYy5zczAxDm5jYXJvbi5zYy5zczAxFG5jb21tYWFjY2VudC5zYy5zczAxD3VuaTFFNDUuc2Muc3MwMQ91bmkxRTQ3LnNjLnNzMDELZW5nLnNjLnNzMDEPdW5pMDFDQy5zYy5zczAxD3VuaTFFNDkuc2Muc3MwMQ5udGlsZGUuc2Muc3MwMQlxLnNjLnNzMDEJdC5zYy5zczAxDHRiYXIuc2Muc3MwMQ50Y2Fyb24uc2Muc3MwMQ91bmkwMTYzLnNjLnNzMDEPdW5pMDIxQi5zYy5zczAxD3VuaTFFOTcuc2Muc3MwMQ91bmkxRTZELnNjLnNzMDEPdW5pMUU2Ri5zYy5zczAxCXUuc2Muc3MwMQ51YWN1dGUuc2Muc3MwMQ51YnJldmUuc2Muc3MwMQ91bmkwMUQ0LnNjLnNzMDETdWNpcmN1bWZsZXguc2Muc3MwMQ91bmkwMjE1LnNjLnNzMDERdWRpZXJlc2lzLnNjLnNzMDEPdW5pMUVFNS5zYy5zczAxDnVncmF2ZS5zYy5zczAxD3VuaTFFRTcuc2Muc3MwMQ11aG9ybi5zYy5zczAxD3VuaTFFRTkuc2Muc3MwMQ91bmkxRUYxLnNjLnNzMDEPdW5pMUVFQi5zYy5zczAxD3VuaTFFRUQuc2Muc3MwMQ91bmkxRUVGLnNjLnNzMDEVdWh1bmdhcnVtbGF1dC5zYy5zczAxD3VuaTAyMTcuc2Muc3MwMQ91bWFjcm9uLnNjLnNzMDEPdW5pMUU3Qi5zYy5zczAxD3VvZ29uZWsuc2Muc3MwMQ11cmluZy5zYy5zczAxDnV0aWxkZS5zYy5zczAxD3VuaTFFNzkuc2Muc3MwMQl3LnNjLnNzMDEOd2FjdXRlLnNjLnNzMDETd2NpcmN1bWZsZXguc2Muc3MwMRF3ZGllcmVzaXMuc2Muc3MwMQ53Z3JhdmUuc2Muc3MwMQl5LnNjLnNzMDEOeWFjdXRlLnNjLnNzMDETeWNpcmN1bWZsZXguc2Muc3MwMRF5ZGllcmVzaXMuc2Muc3MwMQ91bmkxRThGLnNjLnNzMDEPdW5pMUVGNS5zYy5zczAxDnlncmF2ZS5zYy5zczAxD3VuaTFFRjcuc2Muc3MwMQ91bmkwMjMzLnNjLnNzMDEPdW5pMUVGOS5zYy5zczAxCXouc2Muc3MwMQ56YWN1dGUuc2Muc3MwMQ56Y2Fyb24uc2Muc3MwMRJ6ZG90YWNjZW50LnNjLnNzMDEPdW5pMUU5My5zYy5zczAxB3VuaTA0MTAHdW5pMDQxMQd1bmkwNDEyB3VuaTA0MTMHdW5pMDQwMwd1bmkwNDkwB3VuaTA0MTQHdW5pMDQxNQd1bmkwNDAwB3VuaTA0MDEHdW5pMDQxNgd1bmkwNDE3B3VuaTA0MTgHdW5pMDQxOQd1bmkwNDBEB3VuaTA0OEEHdW5pMDQxQQd1bmkwNDBDB3VuaTA0MUIHdW5pMDQxQwd1bmkwNDFEB3VuaTA0MUUHdW5pMDQxRgd1bmkwNDIwB3VuaTA0MjEHdW5pMDQyMgd1bmkwNDIzB3VuaTA0MEUHdW5pMDQyNAd1bmkwNDI1B3VuaTA0MjcHdW5pMDQyNgd1bmkwNDI4B3VuaTA0MjkHdW5pMDQwRgd1bmkwNDJDB3VuaTA0MkEHdW5pMDQyQgd1bmkwNDA5B3VuaTA0MEEHdW5pMDQwNQd1bmkwNDA0B3VuaTA0MkQHdW5pMDQwNgd1bmkwNDA3B3VuaTA0MDgHdW5pMDQwQgd1bmkwNDJFB3VuaTA0MkYHdW5pMDQwMgd1bmkwNDYyB3VuaTA0NkEHdW5pMDQ3Mgd1bmkwNDc0B3VuaTA0OTIHdW5pMDQ5NAd1bmkwNDk2B3VuaTA0OTgHdW5pMDQ5QQd1bmkwNDlDB3VuaTA0OUUHdW5pMDRBMAd1bmkwNEEyB3VuaTA0QTQHdW5pMDRBNgd1bmkwNTI0B3VuaTA0QTgHdW5pMDRBQQd1bmkwNEFDB3VuaTA0QUUHdW5pMDRCMAd1bmkwNEIyB3VuaTA0QjQHdW5pMDRCNgd1bmkwNEI4B3VuaTA0QkEHdW5pMDUyNgd1bmkwNEJDB3VuaTA0QkUHdW5pMDRDMAd1bmkwNEMxB3VuaTA0QzMHdW5pMDRDNwd1bmkwNEM5B3VuaTA0Q0IHdW5pMDRDRAd1bmkwNEQwB3VuaTA0RDIHdW5pMDRENAd1bmkwNEQ2B3VuaTA0RDgHdW5pMDREQQd1bmkwNERDB3VuaTA0REUHdW5pMDRFMAd1bmkwNEUyB3VuaTA0RTQHdW5pMDRFNgd1bmkwNEU4B3VuaTA0RUEHdW5pMDRFQwd1bmkwNEVFB3VuaTA0RjAHdW5pMDRGMgd1bmkwNEY0B3VuaTA0RjYHdW5pMDRGOAd1bmkwNEZBB3VuaTA0RkMHdW5pMDRGRQd1bmkwNTEwB3VuaTA1MTIHdW5pMDUxQQd1bmkwNTFDB3VuaTA0OEMHdW5pMDQ4RQd1bmkwNTI4B3VuaTA1MkUPdW5pMDQxNC5sb2NsQkdSD3VuaTA0MUIubG9jbEJHUg91bmkwNDI0LmxvY2xCR1IPdW5pMDQ5Mi5sb2NsQlNID3VuaTA0OTgubG9jbEJTSA91bmkwNEFBLmxvY2xCU0gPdW5pMDRBQS5sb2NsQ0hVDHVuaTA0MTAuc3MwMQx1bmkwNDE0LnNzMDEMdW5pMDQxNS5zczAxDHVuaTA0MDAuc3MwMQx1bmkwNDAxLnNzMDEMdW5pMDQxOC5zczAxDHVuaTA0MTkuc3MwMQx1bmkwNDhBLnNzMDEMdW5pMDQwRC5zczAxDHVuaTA0MUIuc3MwMQx1bmkwNDIwLnNzMDEMdW5pMDQyMi5zczAxDHVuaTA0MjMuc3MwMQx1bmkwNDBFLnNzMDEMdW5pMDQyNC5zczAxDHVuaTA0MkMuc3MwMQx1bmkwNDJBLnNzMDEMdW5pMDQyQi5zczAxDHVuaTA0MDkuc3MwMQx1bmkwNDBBLnNzMDEMdW5pMDQwOC5zczAxDHVuaTA0NjIuc3MwMQx1bmkwNEFDLnNzMDEMdW5pMDREMC5zczAxDHVuaTA0RDIuc3MwMQx1bmkwNEQ0LnNzMDEMdW5pMDRENi5zczAxDHVuaTA0RTIuc3MwMQx1bmkwNEU0LnNzMDEMdW5pMDRFRS5zczAxDHVuaTA0RjAuc3MwMQx1bmkwNEYyLnNzMDEMdW5pMDRGOC5zczAxDHVuaTA1MUEuc3MwMQx1bmkwNDhDLnNzMDEHdW5pMDQzMAd1bmkwNDMxB3VuaTA0MzIHdW5pMDQzMwd1bmkwNDUzB3VuaTA0OTEHdW5pMDQzNAd1bmkwNDM1B3VuaTA0NTAHdW5pMDQ1MQd1bmkwNDM2B3VuaTA0MzcHdW5pMDQzOAd1bmkwNDM5B3VuaTA0NUQHdW5pMDQ4Qgd1bmkwNDNBB3VuaTA0NUMHdW5pMDQzQgd1bmkwNDNDB3VuaTA0M0QHdW5pMDQzRQd1bmkwNDNGB3VuaTA0NDAHdW5pMDQ0MQd1bmkwNDQyB3VuaTA0NDMHdW5pMDQ1RQd1bmkwNDQ0B3VuaTA0NDUHdW5pMDQ0Nwd1bmkwNDQ2B3VuaTA0NDgHdW5pMDQ0OQd1bmkwNDVGB3VuaTA0NEMHdW5pMDQ0QQd1bmkwNDRCB3VuaTA0NTkHdW5pMDQ1QQd1bmkwNDU1B3VuaTA0NTQHdW5pMDQ0RAd1bmkwNDU2B3VuaTA0NTcHdW5pMDQ1OAd1bmkwNDVCB3VuaTA0NEUHdW5pMDQ0Rgd1bmkwNDUyB3VuaTA0NjMHdW5pMDQ2Qgd1bmkwNDczB3VuaTA0NzUHdW5pMDQ5Mwd1bmkwNDk1B3VuaTA0OTcHdW5pMDQ5OQd1bmkwNDlCB3VuaTA0OUQHdW5pMDQ5Rgd1bmkwNEExB3VuaTA0QTMHdW5pMDRBNQd1bmkwNTI1B3VuaTA0QTcHdW5pMDRBOQd1bmkwNEFCB3VuaTA0QUQHdW5pMDRBRgd1bmkwNEIxB3VuaTA0QjMHdW5pMDRCNQd1bmkwNEI3B3VuaTA0QjkHdW5pMDRCQgd1bmkwNTI3B3VuaTA0QkQHdW5pMDRCRgd1bmkwNENGB3VuaTA0QzIHdW5pMDRDNAd1bmkwNEM2B3VuaTA0QzgHdW5pMDRDQQd1bmkwNENDB3VuaTA0Q0UHdW5pMDREMQd1bmkwNEQzB3VuaTA0RDUHdW5pMDRENwd1bmkwNEQ5B3VuaTA0REIHdW5pMDRERAd1bmkwNERGB3VuaTA0RTEHdW5pMDRFMwd1bmkwNEU1B3VuaTA0RTcHdW5pMDRFOQd1bmkwNEVCB3VuaTA0RUQHdW5pMDRFRgd1bmkwNEYxB3VuaTA0RjMHdW5pMDRGNQd1bmkwNEY3B3VuaTA0RjkHdW5pMDRGQgd1bmkwNEZEB3VuaTA0RkYHdW5pMDUxMQd1bmkwNTEzB3VuaTA1MUIHdW5pMDUxRAd1bmkwNDhEB3VuaTA0OEYHdW5pMDUyOQd1bmkwNTJGD3VuaTA0MzIubG9jbEJHUg91bmkwNDMzLmxvY2xCR1IPdW5pMDQzNC5sb2NsQkdSD3VuaTA0MzYubG9jbEJHUg91bmkwNDM3LmxvY2xCR1IPdW5pMDQzOC5sb2NsQkdSD3VuaTA0MzkubG9jbEJHUg91bmkwNDVELmxvY2xCR1IPdW5pMDQzQS5sb2NsQkdSD3VuaTA0M0IubG9jbEJHUg91bmkwNDNELmxvY2xCR1IPdW5pMDQzRi5sb2NsQkdSD3VuaTA0NDIubG9jbEJHUg91bmkwNDQ3LmxvY2xCR1IPdW5pMDQ0Ni5sb2NsQkdSD3VuaTA0NDgubG9jbEJHUg91bmkwNDQ5LmxvY2xCR1IPdW5pMDQ0Qy5sb2NsQkdSD3VuaTA0NEEubG9jbEJHUg91bmkwNDRFLmxvY2xCR1IPdW5pMDQ5My5sb2NsQlNID3VuaTA0OTkubG9jbEJTSA91bmkwNEFCLmxvY2xDSFUPdW5pMDQ1My5sb2NsTUtED3VuaTA0MzEubG9jbFNSQg91bmkwNDMzLmxvY2xTUkIPdW5pMDQzNC5sb2NsU1JCD3VuaTA0M0YubG9jbFNSQg91bmkwNDQyLmxvY2xTUkIMdW5pMDQzMC5zczAxDHVuaTA0MzQuc3MwMQx1bmkwNDM1LnNzMDEMdW5pMDQ1MC5zczAxDHVuaTA0NTEuc3MwMQx1bmkwNDM4LnNzMDEMdW5pMDQzOS5zczAxDHVuaTA0OEIuc3MwMQx1bmkwNDVELnNzMDEMdW5pMDQ0MC5zczAxDHVuaTA0NDIuc3MwMQx1bmkwNDQzLnNzMDEMdW5pMDQ1RS5zczAxDHVuaTA0NEMuc3MwMQx1bmkwNDRBLnNzMDEMdW5pMDQ0Qi5zczAxDHVuaTA0NTkuc3MwMQx1bmkwNDVBLnNzMDEMdW5pMDQ2My5zczAxDHVuaTA0RDEuc3MwMQx1bmkwNEQzLnNzMDEMdW5pMDRENS5zczAxDHVuaTA0RDcuc3MwMQx1bmkwNEQ5LnNzMDEMdW5pMDREQi5zczAxDHVuaTA0RTMuc3MwMQx1bmkwNEU1LnNzMDEMdW5pMDRFRi5zczAxDHVuaTA0RjEuc3MwMQx1bmkwNEYzLnNzMDEMdW5pMDRGOS5zczAxDHVuaTA0OEQuc3MwMQd1bmkwMzk0B3VuaTAzQTkHdW5pMDNCQwd1bmkyMTJCB3VuaTIxMkEIemVyby5vc2YHb25lLm9zZgd0d28ub3NmCXRocmVlLm9zZghmb3VyLm9zZghmaXZlLm9zZgdzaXgub3NmCXNldmVuLm9zZgllaWdodC5vc2YIbmluZS5vc2YJemVyby5zaW5mCG9uZS5zaW5mCHR3by5zaW5mCnRocmVlLnNpbmYJZm91ci5zaW5mCWZpdmUuc2luZghzaXguc2luZgpzZXZlbi5zaW5mCmVpZ2h0LnNpbmYJbmluZS5zaW5mB3plcm8udGYGb25lLnRmBnR3by50Zgh0aHJlZS50Zgdmb3VyLnRmB2ZpdmUudGYGc2l4LnRmCHNldmVuLnRmCGVpZ2h0LnRmB25pbmUudGYJemVyby50b3NmCG9uZS50b3NmCHR3by50b3NmCnRocmVlLnRvc2YJZm91ci50b3NmCWZpdmUudG9zZghzaXgudG9zZgpzZXZlbi50b3NmCmVpZ2h0LnRvc2YJbmluZS50b3NmB3VuaTIwODAHdW5pMjA4MQd1bmkyMDgyB3VuaTIwODMHdW5pMjA4NAd1bmkyMDg1B3VuaTIwODYHdW5pMjA4Nwd1bmkyMDg4B3VuaTIwODkJemVyby5kbm9tCG9uZS5kbm9tCHR3by5kbm9tCnRocmVlLmRub20JZm91ci5kbm9tCWZpdmUuZG5vbQhzaXguZG5vbQpzZXZlbi5kbm9tCmVpZ2h0LmRub20JbmluZS5kbm9tCXplcm8ubnVtcghvbmUubnVtcgh0d28ubnVtcgp0aHJlZS5udW1yCWZvdXIubnVtcglmaXZlLm51bXIIc2l4Lm51bXIKc2V2ZW4ubnVtcgplaWdodC5udW1yCW5pbmUubnVtcgd1bmkyMDcwB3VuaTAwQjkHdW5pMDBCMgd1bmkwMEIzB3VuaTIwNzQHdW5pMjA3NQd1bmkyMDc2B3VuaTIwNzcHdW5pMjA3OAd1bmkyMDc5B3VuaTIxNTMHdW5pMjE1NAlvbmVlaWdodGgMdGhyZWVlaWdodGhzC2ZpdmVlaWdodGhzDHNldmVuZWlnaHRocw5iYWNrc2xhc2guY2FzZRNwZXJpb2RjZW50ZXJlZC5jYXNlC2J1bGxldC5jYXNlG3BlcmlvZGNlbnRlcmVkLmxvY2xDQVQuY2FzZQpzbGFzaC5jYXNlFnBlcmlvZGNlbnRlcmVkLmxvY2xDQVQOYnJhY2VsZWZ0LmNhc2UPYnJhY2VyaWdodC5jYXNlEGJyYWNrZXRsZWZ0LmNhc2URYnJhY2tldHJpZ2h0LmNhc2UOcGFyZW5sZWZ0LmNhc2UPcGFyZW5yaWdodC5jYXNlCmZpZ3VyZWRhc2gHdW5pMjAxNQd1bmkyMDEwB3VuaTAwQUQLZW1kYXNoLmNhc2ULZW5kYXNoLmNhc2ULaHlwaGVuLmNhc2USZ3VpbGxlbW90bGVmdC5jYXNlE2d1aWxsZW1vdHJpZ2h0LmNhc2USZ3VpbHNpbmdsbGVmdC5jYXNlE2d1aWxzaW5nbHJpZ2h0LmNhc2UJZXhjbGFtLnNjDWV4Y2xhbWRvd24uc2MQZ3VpbGxlbW90bGVmdC5zYxFndWlsbGVtb3RyaWdodC5zYxBndWlsc2luZ2xsZWZ0LnNjEWd1aWxzaW5nbHJpZ2h0LnNjCXBlcmlvZC5zYwtxdWVzdGlvbi5zYw9xdWVzdGlvbmRvd24uc2MLcXVvdGVkYmwuc2MPcXVvdGVkYmxiYXNlLnNjD3F1b3RlZGJsbGVmdC5zYxBxdW90ZWRibHJpZ2h0LnNjDHF1b3RlbGVmdC5zYw1xdW90ZXJpZ2h0LnNjEXF1b3Rlc2luZ2xiYXNlLnNjDnF1b3Rlc2luZ2xlLnNjB3VuaTI3RTgHdW5pMjdFOQd1bmkyMDA3B3VuaTIwMEEHdW5pMjAwOAd1bmkwMEEwB3VuaTIwMDkHdW5pMjAwQgd1bmkyMEI1DWNvbG9ubW9uZXRhcnkEZG9uZwRFdXJvB3VuaTIwQjIHdW5pMjBCNAd1bmkyMEFEBGxpcmEHdW5pMjBCQQd1bmkyMEJDB3VuaTIwQTYGcGVzZXRhB3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQjgHdW5pMjBBRQd1bmkyMEE5B3VuaTIyMTkHdW5pMjA1Mgd1bmkyMjE1CGVtcHR5c2V0B3VuaTIxMjYHdW5pMjIwNgd1bmkwMEI1B2Fycm93dXAHdW5pMjE5NwphcnJvd3JpZ2h0B3VuaTIxOTgJYXJyb3dkb3duB3VuaTIxOTkJYXJyb3dsZWZ0B3VuaTIxOTYJYXJyb3dib3RoCWFycm93dXBkbgxhcnJvd3VwLmNhc2UPYXJyb3dyaWdodC5jYXNlDmFycm93ZG93bi5jYXNlDmFycm93bGVmdC5jYXNlB3VuaTI1QzYHdW5pMjVDNwlmaWxsZWRib3gHdW5pMjVBMQd0cmlhZ3VwB3VuaTI1QjYHdHJpYWdkbgd1bmkyNUMwB3VuaTI1QjMHdW5pMjVCNwd1bmkyNUJEB3VuaTI1QzEHdW5pMjExMwllc3RpbWF0ZWQHdW5pMjExNgZtaW51dGUGc2Vjb25kB2F0LmNhc2UMdW5pMjExNi5zczAxDGFtcGVyc2FuZC5zYwd1bmkwMzA4C3VuaTAzMDgwMzAwC3VuaTAzMDgwMzAxC3VuaTAzMDgwMzA0B3VuaTAzMDcLdW5pMDMwNzAzMDQJZ3JhdmVjb21iC3VuaTAzMDAwMzA0CWFjdXRlY29tYgt1bmkwMzAxMDMwNwt1bmkwMzAxMDMwNAd1bmkwMzBCDWNhcm9uY29tYi5hbHQHdW5pMDMwMgd1bmkwMzBDC3VuaTAzMEMwMzA3B3VuaTAzMDYHdW5pMDMwQQt1bmkwMzBBMDMwMQl0aWxkZWNvbWILdW5pMDMwMzAzMDgTdGlsZGVjb21iX2FjdXRlY29tYgt1bmkwMzAzMDMwNAd1bmkwMzA0C3VuaTAzMDQwMzA4C3VuaTAzMDQwMzAwC3VuaTAzMDQwMzAxDWhvb2thYm92ZWNvbWIHdW5pMDMwRgd1bmkwMzExB3VuaTAzMTIHdW5pMDMxQgxkb3RiZWxvd2NvbWIHdW5pMDMyNAd1bmkwMzI2B3VuaTAzMjcHdW5pMDMyOAd1bmkwMzJFB3VuaTAzMzEHdW5pMDMzNQd1bmkwMzM2B3VuaTAzMzcHdW5pMDMzOAx1bmkwMzA4LmNhc2UQdW5pMDMwODAzMDAuY2FzZRB1bmkwMzA4MDMwMS5jYXNlEHVuaTAzMDgwMzA0LmNhc2UMdW5pMDMwNy5jYXNlEHVuaTAzMDcwMzA0LmNhc2UOZ3JhdmVjb21iLmNhc2UQdW5pMDMwMDAzMDQuY2FzZQ5hY3V0ZWNvbWIuY2FzZRB1bmkwMzAxMDMwNy5jYXNlEHVuaTAzMDEwMzA0LmNhc2UMdW5pMDMwQi5jYXNlDHVuaTAzMDIuY2FzZQx1bmkwMzBDLmNhc2UQdW5pMDMwQzAzMDcuY2FzZQx1bmkwMzA2LmNhc2UOdGlsZGVjb21iLmNhc2UQdW5pMDMwMzAzMDguY2FzZRh0aWxkZWNvbWJfYWN1dGVjb21iLmNhc2UQdW5pMDMwMzAzMDQuY2FzZQx1bmkwMzA0LmNhc2UQdW5pMDMwNDAzMDguY2FzZRB1bmkwMzA0MDMwMC5jYXNlEHVuaTAzMDQwMzAxLmNhc2USaG9va2Fib3ZlY29tYi5jYXNlDHVuaTAzMEYuY2FzZQx1bmkwMzExLmNhc2UMdW5pMDMzNS5jYXNlDHVuaTAzMzcuY2FzZQx1bmkwMzM4LmNhc2UTdW5pMDMwNC5uYXJyb3cuY2FzZQl1bmkwMzA3LmkJdW5pMDMyOC5pEHVuaTAzMDgubG9jbFZJRVQQdW5pMDMwNy5sb2NsVklFVBJncmF2ZWNvbWIubG9jbFZJRVQSYWN1dGVjb21iLmxvY2xWSUVUEHVuaTAzMDIubG9jbFZJRVQQdW5pMDMwQy5sb2NsVklFVBB1bmkwMzA2LmxvY2xWSUVUEnRpbGRlY29tYi5sb2NsVklFVBB1bmkwMzA0LmxvY2xWSUVUFmhvb2thYm92ZWNvbWIubG9jbFZJRVQOdW5pMDMwOC5uYXJyb3cOdW5pMDMwMi5uYXJyb3cOdW5pMDMwNi5uYXJyb3cQdGlsZGVjb21iLm5hcnJvdw51bmkwMzA0Lm5hcnJvdw51bmkwMzExLm5hcnJvdxNjYXJvbmNvbWIuYWx0LnNob3J0CXVuaTAzMzUudAd1bmkwMkJDB3VuaTAyQkIHdW5pMDJCQQd1bmkwMkM5B3VuaTAyQ0IHdW5pMDJCOQd1bmkwMkJGB3VuaTAyQkUHdW5pMDJDQQd1bmkwMkNDB3VuaTAyQzgKdW5pMDMzNS5zYwp1bmkwMzM2LnNjCnVuaTAzMzguc2MLYnJldmVjb21iY3kQYnJldmVjb21iY3kuY2FzZQtkZXNjZW5kZXJjeRBkZXNjZW5kZXJjeS5jYXNlFmRlc2NlbmRlcmN5LmNhc2Uuc2hvcnQRZGVzY2VuZGVyY3kuc2hvcnQLdW5pMDMwNjAzMDELdW5pMDMwNjAzMDALdW5pMDMwNjAzMDkLdW5pMDMwNjAzMDMLdW5pMDMwMjAzMDELdW5pMDMwMjAzMDALdW5pMDMwMjAzMDkLdW5pMDMwMjAzMDMQdW5pMDMwNjAzMDEuY2FzZRB1bmkwMzA2MDMwMC5jYXNlEHVuaTAzMDYwMzA5LmNhc2UQdW5pMDMwNjAzMDMuY2FzZRB1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AAMAAAAAAAMAAwADAAMACAADAAAAAAAAAAAAGwAAAAD/9gAAAAAACAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+QAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAHAAAAAP/2AAD/9AAAAAAAAAAAAAAAAAAAAAAAAAAA/8cAAAAAAAAAAAAAAAAAAAAHAAAABwAAAAAAAAAAAAD//QAAAAAAAAAAAAP/9gAIAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAP/2AAAAAAAKAAoAAAAA//YAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7QAAAAAAAwAAAAoAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//bAAoAAAAAAAMAAwADAAMAAwADAAAAAAAAAAAAEwAAAAD/9gAAAAAAAAAAAAD/9gAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP+/AAAAAAAAAAAAAAAAAAAAAAAAAAcAAP/2//YAAAAN/+7/qQAAAAD/2//5/9j/3gAA//kAAAADAAAAAwAAAAMAAAAK//YACAAA/+z/9v/s//P//QAAAAcAAAADAAD/6QAAAAf/9gAHAAAAAAAAAAAAAAAA/9YAAAAAAAAAAAAAAAAAAAAAAAcAAP/2AAAAAAAAAAD/8QAAAAAAAAAA//H/2AAA/+b/9AAAAAAAAAAAAAAAAAAAAAD//QAAAAD/5wAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAP/5AAcAAAAAAAAAAAAAAAAAJgAIAAgAAAAAAAAAAAAAAAAAAP/s/+8AAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAHAAAAAAAAwAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAADAAAAAAAA/+//9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/58AAAAAAAD/wQADAAMAAwAAAAD/9wABAAMAA//xAAD/8/9/AAAAAP/BAAD/y//YAAr/7f/u/+//7v/v/8n/7P/2AAD/8//bAGMACgAD/9gACgAHAAr/9AAD//n/9v/iAAD/9gAD//MACgAAAAAAAAAA/+0AAAAAAAAAAAAKAAD/+QAAAAAAAP/O/84ACgAAAAAACgAAAAAAAAAAAAD/zv/lAAD/lQAAABcAAAAXAAAAAAAAAAAAAAAAAAr/4v/xAAAAAAAAAAD/7QAA//kAAAAU//EAAAAAAAP//f/2//AACgAAAAD/4v/lAAD//QAA//kAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAP/YAAD/5QAA/6QADAAAAAwAAAAAAAoAAAAAAAAAAP/iAAAAAAAAAAAAAP/vAAAAAP/zAAD/7AAAAAAAAAAAAAAAAAAA//kAAP/v/6IACAAI//3/xgAAAAAAAAAAAAP/1QAA//b/2//yAAD/1f+oAAAAAP/EAAP/ewAA/+YAAP/pAAD/7AAA/94AAP/sAAP/1f/pACgAAAAU/9oAAAAAADL/0P/9/9j/4v/OAAj/7f/z/9//1QAAAAAAAAAAAAr/xwAAAAAAA//iAAAAAAAAAAAAAAAAAAAAAAAK//QAAAAA/9gAAAAA/8QAKgAA/6QAAAAA/+L/6v/i/+r/2//lAAAAAAAAAAAAFAAAAAD/zgAAAAAAIAAAAAD/4AAA/+wAAAAAAAAAAAAAAAAAAAAAAAD/9AA0AAAAAAAAAAAAAwADAAMAAP/7/9v/2wAAAAMAAAAlACUAJQAAAAAAKP/uACUAHv/i/+AAHAAAABwAAAAAAAAADAAKACoAJ//MABMAFAATAAwAJQAAAAAAAwAAAD4AAAAAAAAAAP/5//sAAAAgAAAAAAAAABsAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAaAAAAAAAA/+wAAAATAAD/4wAAAAAAAAAAAAAAAAAAAAAAAAAA//kAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//QANAAAAAAAAAAAAAMAAwADAAAAAP/H/9EAAAADAAAAAAAvACUAAAAAACj/7gAlAB7/4v/gABwAAAAcAAAAAAAAAAAACgAbABT/zAARAAoAIQAUAAoAAAAAAAMAAAAvAAgAAAAAAAD/9gAAAAAACgAAAAAAAAAbAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAGgAAAAAAAP/sAAAAHgAA/+MAAAAAAAAAAAAAAAAAAAAAAAAAAP/lAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/qADwACAADAAoAFAAIAAAACAAH//3/2P/vAAAAAwAAABYALwAuAAAAAAAb/8kAIAAq/9X/3gAAAAAAAAAAAC0AAAAaAAAAMQAl/8QAEQAeACUAFgA0//kABwADAAAATQAUAAD/7AAA//kAAwAAACoAAAAAAAAAHgAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAABoAAAAAAAD/7AAAAB4AAP/gAAAAAAAAAAAAAAAeAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2wAaAB4AJv/xAC//7f+//+0AAP/i/73/sP/P/+3/7P/iAB4AAAAhACYAAP+fAAD/7f+1/8cAMQAHADQAGwA8AB4ADP/sAAwAAP+8AAD/4gAvAAD/6f+G/+wAAP+8AAAAKP/2AAD/+f/Y/+kAAAAA/98AAAAA/34AHAAcAAoAAAAAAAsACAAKAC//5QAIAAoAAAAAAA3/+P+5AAMADv/lAAr/8//sAAAAAAAAAAAAAAAA//kAAAAAABsAAP/+AIEAGwA8/84AIAAbAAD/7AAAAAD//f/2ABH/+QAH//YAAAAAAAoAAAACABAGJQYsAAAGLgY4AAgGOgY6ABMGPAY8ABQGPgY+ABUGQAZAABYGQgZCABcGRAZEABgGRgZGABkGTAZOABoGUQZwAB0GlAaWAD0GmAaYAEAGoQahAEEG2gbbAEIHPgc+AEQAAgA7BiYGJwALBigGKAADBikGKgAPBisGKwAEBiwGLAAGBi4GLgAPBi8GLwAQBjAGMAASBjEGMgAYBjMGMwADBjQGNAAaBjUGNQAbBjcGOAAMBjoGOgAaBjwGPAABBj4GPgABBkAGQAANBkIGQgACBkQGRAACBkYGRgAOBkwGTgALBlEGUQAMBlIGUgAJBlMGUwALBlQGVAAJBlUGVQALBlYGVgAPBlcGVwAUBlgGWAAWBlkGWQAUBloGWgAWBlsGWwAPBlwGXAAIBl0GXQAMBl4GXgAIBl8GXwAMBmAGYAAFBmEGYQAHBmIGYgAKBmMGYwALBmQGZAAKBmUGZQALBmYGZgAPBmcGZwARBmgGaAATBmkGaQAZBmoGagAPBmsGawAVBmwGbAAXBm0GbQAVBm4GbgAXBm8GbwAPBnAGcAAZBpQGlAAaBpUGlgALBpgGmAALBqEGoQALBtoG2wAYBz4HPgAUAAIAZgXABcAALQXBBcEAEgXCBcIAKgXDBcMAJwXEBcQADAXFBcUACgXGBcYALQXHBccAJAXIBcgANgXJBckAOAXKBcoANQXLBcsAMAXMBcwAKwXNBc0AKAXOBc4ADQXPBc8ACwXQBdAALQXRBdEAJQXSBdIANgXTBdMAEQYlBiUAAgYmBicALwYoBigABQYpBioAFwYrBisALgYsBiwACAYuBi4AFwYvBi8AGAYwBjAAGgYxBjIAIAYzBjMABQY0BjQAJgY1BjUALAY2BjYAAgY3BjgAEAY6BjoAJgY9Bj0AAwY+Bj4ANwY/Bj8AAwZBBkEAFAZDBkMABAZFBkUABAZHBkcAFQZMBk4ALwZRBlEAEAZSBlIALwZTBlMADgZUBlQALwZVBlUADgZWBlYAFwZXBlcAHAZYBlgAHgZZBlkAHAZaBloAHgZbBlsAFwZcBlwAEAZdBl0ANAZeBl4AEAZfBl8ANAZgBmAABwZhBmEACQZiBmIALwZjBmMADwZkBmQALwZlBmUADwZmBmYAFwZnBmcAGQZoBmgAGwZpBmkAIQZqBmoAFwZrBmsAHQZsBmwAHwZtBm0AHQZuBm4AHwZvBm8AFwZwBnAAIQZ8BnwAMwZ/Bn8AMwaBBoEAMwaEBoQAMwaFBoUAMgaGBoYAMwaIBogAMwaKBosAMwaMBowAIgaNBo0AMgaQBpAAMwaRBpEAMQaUBpQAJgaVBpYALwaYBpgALwahBqIALwaqBqoALwatBq4AFgbLBssAAQbMBswAEwbNBs0AIwbQBtAAKQbRBtEABgbaBtsAIAbeBt4AOQc+Bz4AHAACDHAABAAADHoMqgASAFgAAP/7//3//f/b//b/+//v/+r/6v/9AAf/4v/4//P/9gAK//b/7P/7AAP/+QAKAAcABAAD//r/9v/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/9X/9gAA//n/9P/4AAD/9v/2AAD/8//2AAAAAAAAAAAAAAAAAAAAAP/4AAD/+AAA//3////0//sAB//z//v/+//9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAA8AAP/5AAD/8wAA//EAAAAA/9sAFAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAwAA//YAAAAHAAAAAAAAAAAAAAAAABT/+f/9AA8ACv/9/+8AKP/2AAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//5/8z/zP/L//j/qf/5/+z/zgAA/+//4gAU/8sACv/p/+IAAAAV//3/7gAI//P/9gAIABT/4v/9AAr/0f/0//3//gAK//kAHAAUAAAAAAAbAAAAFAAU//YAFAAHAAoACgAKAAoACv/5AA3/5//u//YAAv/s//4ABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAmAAj/4P/J/8f/+f+/AA3/7P/HABIAC//iABv/yQAA/+n/2wAAAAD/8//p//wACv/sABQAHv/YAAAABwAAAAAAAAAr//b//AAbADz/+f/MACj/9wAVAAD/9AAKAAsAFAAHAAAAAwAKAAAAAwAA/+X/4gAA/+X/9AAM//0ACwAU//0AAwAK//EACgAFAAr//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAL/7P/s/+//6f/5/+IAAAAA/9sAAP/4//YACv/iAAD/+QAAAAAAAAAAAAD/+AAA//0AAAAC/+wAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAFAAAAAAAAP/2AAAAAAAHAAAAAAAKAAAAAAAAAAD//QAAAAoAAP/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/0//QAAP/2AAD/9gAAAAD/+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAP/l/+8AAAAKAAX//QAI//kAGwAK/+v/7wAD/8wAD//CAAoAHgAA//YADf/+AAr/7QANAAP/1QAG/+7/7AAA//gAAP/v/+7/+f/a/+wAAAAA/9YAAP/i//0AAP/g/+z/7AAA/+7/zv/zAAD/zgAKABsAFP/0ACgAEgAAAAAAAP/lAAAAAP/vAAD/4gAA/+X/7P/u//YAAQAB/7//7//i/+j/9P/5/+X//QAAAAD/1QAA/+r/4AALAAoAAP/x//n/9AAo/+X/+AAAAAr/2wAK/9sAFAAUAAAAAAAXABQAC//9//kAA//bABwAAP/5AAAAAAAAAAAAAAAA//P/9AAA//n/7P/3/+8AAP/5/+MAAQAAAAAAAP/sAAAAAP/uAAAAFAAKAB4AHgAOAAcAAAAAAAD/9v+4//kACv/9AAD/+QAAAAD/+QAA//QAAAAAAAD//f/3AAAAAP/5//EAAAAHAAAAAP/n//b/9P/2//n/9AAA//QAAP/4/+z/7AAKAAAAAP/2//kAAAAU//3/9f/v//EAAP/9AAr/7QAAAAD/+QAAAAD/+QAAAAAAAAAAAAD/+QAK//kAAAAA//kACgAAAAoAAAAAAAUAAAAAAAgAAAAAAAAAAAAA//0AAAAAAAAAAAAAAAAAAP/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAA/+X/+QAA//b/9v/2AAAAAAAA//r/7P/2AAAAAAAAAAD/9gAAAAAAB//5AAz/8wAAAAD//f/x//YAAP/0//v/+wACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAA0AAP/5AAD/+QAA//EAAAAA/+UAAAAHAAAACv/sAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH/+QAAABEACgAA//YACv/7AAoAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAADQAD//kAAP/0AAD/7wAAAAD/+QAAAA0ACgAKAAAAAAAAAAAAAAAAABQAAwAH//kAAAAAAAMAAAAAAAD//QAAAAAACAAAAAAAAAAAAAAAAAAKAAAAHgAAAAD/+QAAAAAAAAAA//kAAAAA//YAAAAAAAAAAAAAAAoAAwAAAAAAAAAAAAAAAAAAAAAAAP/5//0AAAAAAAAAAP/tAAAAAAAAAAAAAP/9AAAAAAAA//4AAAAIAAP/9v/z/+z/+f/x//kAAP/gAAAACP/9AAP/7AAA//kAAAAAAAAAAAAAAAD/+f/5AAMACP/5AAAAAAAAAAAAAAALAAAAAAAHAAMAAP/9ABT/+QAXAAAAAP/3AAIACgAAAAAAAAAKAAAAAAAAAAD/9gAKAAD//QAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+P/2/+n/zv/s//H/5//f/9//7QAH/+z/+P/iAAD/9P/s/+IAAAAHAAAAAAABAAf//f/2//T/8//0AAMAAAAA//n/9v/9//QAAAAAAAAAAAAAAAD/7AAA/+wAAAAAAAAAAAAAAAAAAAAHAAAAAAAA//0AAAAAAAoAAP/2//0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAKAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAA//sAAP/x/9P/4v/d/9r/5P/V//T/9v/R//j/6f/s//P/2P/2//n/+f/5AAAAAP/+//b/+f/i//P/+f/vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/9AAD/8f/2AAD/9gAAAAAAAAAAAAAABwAKAAAAAAAA//b/9gAA/+L/8//5AAAAAAAA//7/9gAAAAAAAP/9//kAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgABBcAF1AAAAAEFwAAVAA4AEQAMAAoAAwABAAkABwAAAA4AEAAGAA0ACwAEAAIACQAIAAAABQAPAAIBOAAEAB8AAQAhACcAJQBKAFEAJQBoAGkAAwCEAKYAJQCpAKkAJQCyALQAJgC2AL0AJgC/AL8AJQDAAMYABQDHAN4AQADfAOQABwDlAOUACADmAO8ACQDwAPQACgD2AQ8ASwEQAREAAQEUASoALgErASsASwEsATMAJQE0ATQAAgE2AUQAAgFFAUYABAFVAVYAJQFXAV0ABgFeAXoAQAF7AYQALwGFAYkACgGKAaUAJwGnAcwAOAHQAdcAOAHeAe4AUgHvAfEADQH1AfUAUgH/AgsAUgIMAi4AOAIvAi8AUgIxAjEAOAIyAjkAUgI6AjwARwI+AkUARwJIAk8APAJQAmcAVQJoAm0AGAJuAm4AGgJvAngAGAJ5An0ASQJ/ApgAOAKZApoAJwKbArMAOAK+Ar4AOALHAtQAVQLVAtkASQLaAtoABQLbAtwAPALeAt4APALfAvoAHQL8AwIAIAMhAyEAIAMlAywAIANFA0YAJANgA4IAIAOFA4UAIAOOA5AAVAOSA5kAVAObA6IAFwO7A8AAGQPBA8EAHAPCA8sAPgPMA9AAPwPRA+oATAPuBAQAMwQFBAUAIAQGBAYAVgQHBA4AIAQgBCEADgQvBC8AIAQwBDcAFwRfBGMAPwRkBGUACwRmBGYAAQRwBHAACAR7BHsAJQR+BH4AJQR/BH8ABQSABIEACASCBIIAJQSDBIMACASKBIoABQSOBI4AJgSPBI8AJQSTBJMAAwSUBJQABQSWBJYACASXBJgABQSZBJkACASaBJoAJQSbBJsABwSeBJ4ACASjBKMABQSoBKkAJQSqBKoABQSrBKwACQStBK0ACASuBK4ABQS2BLYACAS8BL4AAQTABMEAJQTCBMIACATHBMkAJQTLBM0ACATSBNMACATUBNQALgTWBNYAJQTXBNcABwTdBN0AAQTeBN4AJQThBOIAJQTjBOMASwTlBOcALgTtBO0ASwTuBO4ABgTvBPAALwTxBPEAJQTyBPIAQATzBPMABQT0BPQAQAT3BPcABAT5BPkABgT6BPsASwT8BPwAAQT9BP0ALgUABQIALwUEBQQAJQUFBQUAQAUGBQYAJwUHBQcAJQUIBQsAUgUNBQ8AOAUQBRAAGgUSBRcAUgUZBRoAUgUbBRsAOAUcBR0AUgUeBR4AOAUgBSEAGAUiBSIAOAUjBSMAGgUkBSQAVQUlBSkAUgUrBSsAUgUtBS0AUgUuBS4ARwUvBS8AOAUxBTIAUgUzBTMADQU1BTUAUgU2BTYAGgU5BTkAGgU6BToAOAU7BTsAGAU9BT0AUgU+BT4AGgVABUEAUgVEBUcAUgVIBUkAOAVLBUwAGAVNBU0AGgVPBVAAVQVWBVYAGgVXBVcAUgVZBVoAUgVbBVsAVQVcBVwAUgVdBV8AJwVgBWIAOAVjBWMAGgVmBWcAUgVoBWoAOAVsBW4AGAVvBW8AVQVwBXIAUgVzBXQAGgV3BXcAOAV4BXgAGAV6BXoAUgV7BXsADQV9BX0AOAV+BX4ARwV/BX8AOAWABYAAGgWCBYQAVQWHBYkAUgWKBY4AVQWRBZEAUgWTBZMAOAWUBZQAUgWWBZYAUgWXBZcAOAWYBZkAVQWaBZ4AOAWfBaIAVQWlBacAVQWpBakAVQWrBasAUgWtBa4AOAWvBa8AJwWwBbEAOAWzBbgAVQW6BboAAQW+Bb4AAQXABcAASgXBBcEAOQXCBcIAIwXDBcMAIgXEBcQATwXFBcUAHwXGBcYASgXHBccAIQXIBcgANAXJBckANwXKBcoAVwXLBcsARgXMBcwASAXNBc0ALAXOBc4ARAXPBc8AQwXQBdAASgXRBdEAKgXSBdIANAXTBdMAKQYkBiQACwYlBiUADAYmBicANQYoBigAMQYpBioAEAYrBisAQQYsBiwAQgYuBi4AEAYvBi8AEQYwBjAAEgYxBjIAFAYzBjMAMQY0BjQAKwY1BjUALQY2BjYADAY3BjgAUQY6BjoAKwY9Bj0ATQY/Bj8ATQZDBkMATgZFBkUATgZHBkcAUwZMBk4ANQZRBlEAUQZSBlIANQZTBlMARQZUBlQANQZVBlUARQZWBlYAEAZXBlcAEwZYBlgAOwZZBlkAEwZaBloAOwZbBlsAEAZcBlwAUQZdBl0AUAZeBl4AUQZfBl8AUAZiBmIANQZkBmQANQZmBmYAEAZqBmoAEAZvBm8AEAZ5BnkAJQZ6BnoAOAZ7BnsAJQZ8BnwAMgZ9Bn0AJgZ+Bn4AOAZ/Bn8AMgaABoAAKAaBBoEAMgaCBoIAJQaEBoQAMgaFBoUANgaGBoYAMgaIBogAMgaKBosAMgaMBowAFQaNBo0ANgaQBpAAMgaRBpEAGwaUBpQAKwaVBpYANQaYBpgANQahBqIANQanBqcAAQaqBqoANQarBqsAUgatBq4ADwbKBsoAJQbLBssAMAbMBswAOgbNBs0AFgbOBs8AJQbQBtAAPQbRBtEAHgbXBtcAJQbaBtsAFAbcBtwAJQc+Bz4AEwACAAgACgAaBJgFCjDQQfBOrlTMbU6FfI8WAAEAsgAEAAAAVAQKAV4BaAGGAYYBhgGGAYYBhgGGAbQBtAG0AbQBtAG0Af4B/gH+Af4B/gH+Af4B/gH+Af4ENAIoAigCKAIoAigCKAIoA44ClgJCA6oCjAJQAmICcAJ+AowClgKgAs4C3AOOA5wDqgPcBF4EXgReBFgEWAPuBE4D9AROA/4D/gQEBFgEWARYBFgEWARwBHAEWARYBAoENAQ0BE4EWARYBFgEWAReBF4EcAABAFQASQCUAKkAwADBAMIAwwDEAMUAxgDfAOAA4QDiAOMA5ADmAOcA6ADpAOoA6wDsAO0A7gDvASsBVwFYAVkBWgFbAVwBXQGgAbABygHPAd4B4gHjAeoB7QHvAfgB/gIxAkoCTAJkArQDhQRkBGUGJAYmBicGMAY0BjUGOgY8Bj4GQAZMBk0GTgZTBlUGVwZZBmMGZQaBBoUGjQaUBpUGlgaYBqEG2AbdBz4AAgYlAAYGNgAGAAcGNAApBjUAKAY6ACkGPQAIBj8ACAZHAAMGlAApAAsB4QAZ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//YAAAAAAAAAAAAAAAAAAAAAAAD/7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAoAAAAA//YAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s//cAAAAAAAAAAAAAAAD/+QAAAAAAAAAAAAD/9QAA//cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//0AAP/2AAAAAAAAAAAAAAAA//sAAAAA//0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//kAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/j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ACMCmQKaAE0CmwKzACMCtAK9AG8CvgK+ACMCvwLGAG8CxwLUADoC1QLZAEMC2gLaAAYC2wLcADMC3gLeADMC3wL6AE4C+wL7AFUC/AMCACQDAwMgAFUDIQMhACQDJAMkAFUDJQMsACQDLQNEAFUDRQNGAB8DRwNfAFUDYAOCACQDgwOEAFUDhQOFACQDhgONAFUDjgOQAFcDkgOZAFcDmwOiADQDowO6ADsDuwPAAD4DwQPBAEADwgPLAEEDzAPQAFoD0QPqAE8D7QPtAFUD7gQEABQEBQQFACQEBgQGAFIEBwQOACQEDwQRAFsEEgQSAFUEEwQbAFsEHAQcAFUEHQQfAFsEIAQhACAEIgQuAFUELwQvACQEMAQ3ADQEOARUADsEVQReAEIEXwRjAFoEZARlAA0EZgRmAEYEZwRrAGsEbARsAEcEbQRvAGsEcARwAAoEcQRxAEsEcgR3AGsEeAR4AEcEeQR6AGsEewR7AAUEfAR9AGsEfgR+AAUEfwR/AAYEgASBAAoEggSCAAUEgwSDAAoEhASEAAEEhQSJAGsEigSKAAYEiwSLAGsEjASMAEcEjQSNAGsEjgSOAEwEjwSPAAUEkASQAEsEkQSSAGsEkwSTAAMElASUAAYElQSVAGsElgSWAAoElwSYAAYEmQSZAAoEmgSaAAUEmwSbAAkEnQSdAGsEngSeAAoEnwSfAEsEoASiAGsEowSjAAYEpASnAGsEqASpAAUEqgSqAAYEqwSsAAsErQStAAoErgSuAAYErwSwAAEEsQSyAGsEswS0AAIEtQS1AGsEtgS2AAoEtwS5AGsEugS6AAEEuwS7AGsEvAS+AEYEvwS/AGsEwATBAAUEwgTCAAoEwwTEAEsExQTGAGsExwTJAAUEygTKAEsEywTNAAoEzgTOAAEEzwTRAGsE0gTTAAoE1ATUAEoE1QTVAEcE1gTWAAUE1wTXAAkE2ATaAGsE2wTcAEcE3QTdAEYE3gTeAAUE3wTfAGsE4QTiAAUE4wTjAFwE5ATkAF4E5QTnAEoE6ATrAGsE7ATsAEkE7QTtAFwE7gTuAAcE7wTwAAwE8QTxAAUE8gTyAAgE8wTzAAYE9AT0AAgE9QT1AEcE9gT2AGsE9wT3AAQE+QT5AAcE+gT7AFwE/AT8AEYE/QT9AEoE/gT/AGsFAAUCAAwFBAUEAAUFBQUFAAgFBgUGAE0FBwUHAAUFCAULAGUFDAUMAEgFDQUPACMFEAUQAD8FEQURAFEFEgUXAGUFGAUYAEgFGQUaAGUFGwUbACMFHAUdAGUFHgUeACMFHwUfADUFIAUhAD0FIgUiACMFIwUjAD8FJAUkADoFJQUpAGUFKgUqADUFKwUrAGUFLAUsAEgFLQUtAGUFLgUuAC4FLwUvACMFMAUwAFEFMQUyAGUFMwUzAGQFNAU0AG0FNQU1AGUFNgU2AD8FNwU3AG8FOAU4ADUFOQU5AD8FOgU6ACMFOwU7AD0FPAU8ABkFPQU9AGUFPgU+AD8FPwU/AFEFQAVBAGUFQgVCAG8FQwVDADUFRAVHAGUFSAVJACMFSgVKADUFSwVMAD0FTQVNAD8FTgVOADUFTwVQADoFUQVSAG8FUwVUABEFVQVVAG8FVgVWAD8FVwVXAGUFWAVYAEgFWQVaAGUFWwVbADoFXAVcAGUFXQVfAE0FYAViACMFYwVjAD8FZAVlAFEFZgVnAGUFaAVqACMFawVrAFEFbAVuAD0FbwVvADoFcAVyAGUFcwV0AD8FdQV1AFYFdgV2AEgFdwV3ACMFeAV4AD0FeQV5AC8FegV6AGUFewV7AGQFfAV8AEgFfQV9ACMFfgV+AC4FfwV/ACMFgAWAAD8FgQWBAFEFggWEADoFhQWFAG8FhgWGAEgFhwWJAGUFigWOADoFjwWPADUFkAWQAG8FkQWRAGUFkgWSAFEFkwWTACMFlAWUAGUFlQWVAA8FlgWWAGUFlwWXACMFmAWZADoFmgWeACMFnwWiADoFowWjAG4FpQWnADoFqAWoABwFqQWpADoFqgWqAEgFqwWrAGUFrQWuACMFrwWvAE0FsAWxACMFswW4ADoFuQW5AC8FugW6AEYFvgW+AEYFvwW/AGsFwAXAAEQFwQXBACUFwgXCAFkFwwXDADYFxAXEABcFxQXFAFMFxgXGAEQFxwXHADAFyAXIABUFyQXJACEFygXKAEUFywXLACYFzAXMADkFzQXNADcFzgXOABgFzwXPAFQF0AXQAEQF0QXRADEF0gXSABUF0wXTACIGJAYkAA0GJQYlAA4GJgYnAB0GKAYoABIGKQYqACgGKwYrAGAGLAYsABYGLgYuACgGLwYvACkGMAYwACoGMQYyAC0GMwYzABIGNAY0ADIGNQY1ADwGNgY2AA4GNwY4AB4GOgY6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BSMAEwUkBSQAQAUlBSkAPwUrBSsAPwUtBS0APwUuBS4AGwUvBS8AGQUxBTIAPwUzBTMAPQU1BTUAPwU2BTYAEwU3BTcAPgU5BTkAEwU6BToAGQU7BTsAEQU9BT0APwU+BT4AEwVABUEAPwVCBUIAPgVEBUcAPwVIBUkAGQVLBUwAEQVNBU0AEwVPBVAAQAVRBVIAPgVVBVUAPgVWBVYAEwVXBVcAPwVZBVoAPwVbBVsAQAVcBVwAPwVdBV8ACgVgBWIAGQVjBWMAEwVmBWcAPwVoBWoAGQVsBW4AEQVvBW8AQAVwBXIAPwVzBXQAEwV3BXcAGQV4BXgAEQV6BXoAPwV7BXsAPQV9BX0AGQV+BX4AGwV/BX8AGQWABYAAEwWCBYQAQAWFBYUAPgWHBYkAPwWKBY4AQAWQBZAAPgWRBZEAPwWTBZMAGQWUBZQAPwWWBZYAPwWXBZcAGQWYBZkAQAWaBZ4AGQWfBaIAQAWlBacAQAWpBakAQAWrBasAPwWtBa4AGQWvBa8ACgWwBbEAGQWzBbgAQAW6BboAAQW+Bb4AAQXBBcEAKwXCBcIAOQXDBcMAOAXEBcQAJwXHBccANQXKBcoAPAXLBcsALAXMBcwAOgXOBc4AKAXPBc8AJgXRBdEANgYkBiQADAYlBiUAHwYmBicAKgYoBigAIgYpBioALwYrBisAIwYuBi4ALwYvBi8AMAYwBjAAMQYxBjIANAYzBjMAIgY0BjQANwY1BjUAOwY2BjYAHwY6BjoANwY9Bj0AIAY/Bj8AIAZBBkEALQZDBkMAIQZFBkUAIQZHBkcALgZMBk4AKgZSBlIAKgZUBlQAKgZWBlYALwZYBlgAMwZaBloAMwZbBlsALwZgBmAAJAZhBmEAJQZiBmIAKgZjBmMAKQZkBmQAKgZlBmUAKQZmBmYALwZoBmgAMgZqBmoALwZvBm8ALwZ5BnkAFQZ6BnoAGQZ7BnsAFQZ9Bn0AFgZ+Bn4AGQaCBoIAFQaUBpQANwaVBpYAKgaYBpgAKgahBqIAKganBqcAAQaqBqoAKgarBqsAPwbKBsoAFQbOBs8AFQbXBtcAFQbaBtsANAbcBtwAFQACAJ4ABAAAAKwAsAABAEcAAP+j//n/9AAKAB4AKAAh//YAFAAK/6j/9v/2ABQAAwAHAB4ABwAUABH/7P/5//P/2QARAA0AEf/2//0AUAAg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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9AAA//D/8AAAAAD/7f/3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8f/q//f/9AAA/+0AAP/s//P/9//w//cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKACUABwAA//b/9gAA/+n/+f/bAAAAAAAAAAAAHgAAAAAAFAAAAAcAAP/9//kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAACP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABf/9AAAABQAFAAAAAoAAAAUAAoABwAAAAAADf/2AAAAFAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAACP/2AAAACAAAAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAoAFAAA/+z/7AAA/+L/9v/YAAoAAABkAEQAFAAKAAAACAAAAAD/9gAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAEQAAAAAACAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/zAAD/6QAA//T/7wAA/9//1v/WAAAAEf/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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ABIFhQWFAAQFhwWJAAgFkAWQAAkFkgWSABIFlAWUAAsFlQWVAAkFnAWeAAEFowWjAAkFrwWwAAEFsQWxAAkGiQaJAAwAAgFrAAQAHwBMACAAIABNACEAJwAwACgARgBNAEcASABIAEkASQBNAEoAUQAwAFIAZwBNAGoAgwBNAIQApgAwAKcAqABNAKkAqQAwAKoAsQBNALIAtABOALYAvQBOAL8AvwAwAMAAxgACAMcA3gAxAN8A5AAyAOUA5QA2AOYA7wAzAPUA9QBNAPYBDwABARABEQBMARIBEwBNASsBKwABASwBMwAwATUBNQBNAUUBRgBJAUcBSABNAUoBVABNAVUBVgAwAVcBXQBKAV4BegAxAYoBpQA3AaYBpgATAacBzAAWAc4BzgAPAdAB1wAWAdgB3QATAd4B7gBCAe8B8QBBAfIB9AATAfUB9QBCAfYB/gATAf8CCwBCAgwCLgAWAi8CLwBCAjACMAATAjECMQAWAjICOQBCAjoCPABFAj4CRQBFAkYCRgATAkgCTwAjAlACZwBGAmgCbQApAm4CbgAqAm8CeAApAnkCfQArAn8CmAAWApkCmgA3ApsCswAWArQCvQATAr4CvgAWAr8CxgATAscC1ABGAtUC2QArAtoC2gACAtsC3AAjAt4C3gAjBGQEZQAEBGYEZgBMBGcEawBNBGwEbAA1BG0EbwBNBHAEcAA2BHEEcQBIBHIEdwBNBHgEeAA1BHkEegBNBHsEewAwBHwEfQBNBH4EfgAwBH8EfwACBIAEgQA2BIIEggAwBIMEgwA2BIQEhAAuBIUEiQBNBIoEigACBIsEiwBNBIwEjAA1BI0EjQBNBI4EjgBOBI8EjwAwBJAEkABIBJEEkgBNBJQElAACBJUElQBNBJYElgA2BJcEmAACBJkEmQA2BJoEmgAwBJsEmwAyBJ0EnQBNBJ4EngA2BJ8EnwBIBKAEogBNBKMEowACBKQEpwBNBKgEqQAwBKoEqgACBKsErAAzBK0ErQA2BK4ErgACBK8EsAAuBLEEsgBNBLMEtAAvBLUEtQBNBLYEtgA2BLcEuQBNBLoEugAuBLsEuwBNBLwEvgBMBL8EvwBNBMAEwQAwBMIEwgA2BMMExABIBMUExgBNBMcEyQAwBMoEygBIBMsEzQA2BM4EzgAuBM8E0QBNBNIE0wA2BNUE1QA1BNYE1gAwBNcE1wAyBNgE2gBNBNsE3AA1BN0E3QBMBN4E3gAwBN8E3wBNBOEE4gAwBOME4wABBOQE5ABHBOgE6wBNBO0E7QABBO4E7gBKBPEE8QAwBPIE8gAxBPME8wACBPQE9AAxBPUE9QA1BPYE9gBNBPcE9wBJBPkE+QBKBPoE+wABBPwE/ABMBP4E/wBNBQQFBAAwBQUFBQAxBQYFBgA3BQcFBwAwBQgFCwBCBQwFDAAOBQ0FDwAWBRAFEAAqBREFEQAPBRIFFwBCBRgFGAAOBRkFGgBCBRsFGwAWBRwFHQBCBR4FHgAWBR8FHwAkBSAFIQApBSIFIgAWBSMFIwAqBSQFJABGBSUFKQBCBSoFKgAkBSsFKwBCBSwFLAAOBS0FLQBCBS4FLgBFBS8FLwAWBTAFMAAPBTEFMgBCBTMFMwBBBTUFNQBCBTYFNgAqBTcFNwATBTgFOAAkBTkFOQAqBToFOgAWBTsFOwApBT0FPQBCBT4FPgAqBT8FPwAPBUAFQQBCBUIFQgATBUMFQwAkBUQFRwBCBUgFSQAWBUoFSgAkBUsFTAApBU0FTQAqBU4FTgAkBU8FUABGBVEFUgATBVMFVAAJBVUFVQATBVYFVgAqBVcFVwBCBVgFWAAOBVkFWgBCBVsFWwBGBVwFXABCBV0FXwA3BWAFYgAWBWMFYwAqBWQFZQAPBWYFZwBCBWgFagAWBWsFawAPBWwFbgApBW8FbwBGBXAFcgBCBXMFdAAqBXUFdQBEBXYFdgAOBXcFdwAWBXgFeAApBXkFeQAgBXoFegBCBXsFewBBBXwFfAAOBX0FfQAWBX4FfgBFBX8FfwAWBYAFgAAqBYEFgQAPBYIFhABGBYUFhQATBYYFhgAOBYcFiQBCBYoFjgBGBY8FjwAkBZAFkAATBZEFkQBCBZIFkgAPBZMFkwAWBZQFlABCBZUFlQAGBZYFlgBCBZcFlwAWBZgFmQBGBZoFngAWBZ8FogBGBaUFpwBGBagFqABLBakFqQBGBaoFqgAOBasFqwBCBa0FrgAWBa8FrwA3BbAFsQAWBbMFuABGBbkFuQAgBboFugBMBb4FvgBMBb8FvwBNBcAFwAAsBcEFwQAXBcIFwgAoBcMFwwAlBcQFxAAQBcUFxQA/BcYFxgAsBccFxwAhBcgFyAANBckFyQAUBcoFygAtBcsFywAYBcwFzAA7Bc0FzQAm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D4oPig+KCrAPig+KD4oPig+KD4oPig+KD4oKqg+KD4oPig+KD4oPig+KD4oPig+KD4oPig+KD4oPigugD4oLjguUCg4LoA+KD4oPig+KChQPigoaD4oLuA+KD4oKIA+KD4oPig+KD4oPigomD4oPigrCCiwKzg+KD4oKMgo4Cj4Pig+KD4oPigpED4oPig+KD4oPigv0D4oLUgtYC6wLZAtqD4oPigsoD4oPig+KD4oK1A+KD4oOOg+KC74Pig+KD4oPigpKD4oPig+KD4oKUA+KD4oKVg+KClwPig+KCtoPigrgCuYPigraD4oKYgrmD4oPig+KD4oPig+KD4oPig+KD4oPigvED4oLyg+KD4oOOg+KCmgKbg+KCnQPigp6CoAPigqGD4oKjAqSD4oPig+KD4oPig+KCpgPigqeCqQPig+KD4oKqg+KD4oPig+KCrAPig+KD4oPig+KD4oPig+KD4oPig+KD4oKtg+KCrwPig+KCrYPigq8D4oPigrCCsgKzg+KD4oPig+KCtQPig+KCtoPigrgCuYPigrsD4oK8g+KD4oK/gsECvgPig+KCv4LBAsKD4oPigsQD4oLFg+KD4oLHAsiCygPig+KD4oPigsuD4oPig+KD4oLNA+KD4oPig+KCzoPig+KDjoPigtAD4oPig+KD4oLRg+KD4oPig+KC0wPig+KC1ILWAteC2QLagtSC1gLrAtkC2oLUgtYC14LZAtqD4oPigtwD4oPig+KD4oLdg+KD4oPig+KC3wPig+KD4oPiguCD4oPig+KD4oLiA+KD4oPig+KC7gPig+KC44LlAuaC6APig+KD4oLpg+KD4oPig+KC6wPig+KD4oPig+KC7IPig+KD4oPig+KD4oPig+KC7gPig+KDjoPigu+D4oPigvED4oLyg+KD4oLxA+KC8oPig+KDXoMEgwMD4oPigweDCQMKg+KD4oMHgwkC9APig+KDB4MJAvWD4oPigw2DDwMDA+KDEgMNgw8DAwPigxIDDYMPAwMD4oMSAw2DDwL3A+KDEgPig+KD4oPig+KC/oPigwADAYPigxaD4oL4g+KD4oMWg+KC+IPig+KD4oPigvoD4oPig+KD4oL7g+KD4oPig+KD4oL9A+KC/oPigwADAYPig16DBIMDA+KD4oNegwSDEIPig+KDvQPigwYD4oPigweDCQMKg+KD4oMNgw8DDAPigxIDDYMPAxCD4oMSAxaD4oMTg+KD4oMWg+KDFQPig+KDFoPigxgD4oPig+KD4oMZg+KD4oPig+KD4oMbA+KDYwNkg2GD4oPigxyD4oMeA+KD4oPig+KDigPig+KD4oPig6UD4oPig2qDbANtg+KD4oNqg2wDH4Pig+KDaoNsAyED4oPig+KD4oNdA+KD4oOfA+KDoIPig+KD4oPigyKD4oPig+KD4oMig+KD4oPig+KDJAPig+KD4oPigyWD4oPig+KD4oPNg+KD4oPig+KDJwPig+KD4oPig+KD4oPig16D4oNgA+KD4oOWA+KDl4OZA+KDdoN4A28DewN8g+KD4oPig+KD4oMog+KDKgPig+KDogPig6OD4oPig0gD4oNJg0sD4oOFg+KDK4Pig+KDhYPigyuD4oPig+KD4oPig+KD4oPig+KDTgPig+KD4oPig+KD4oPig+KD4oPig+KD4oPig+KD4oONA+KD4oPigy0DjQPig+KD4oPigy6D4oMwA+KDMYPig+KDMwPig+KD4oPig+KD4oOgg+KD4oNXAzSDNgPig+KDpoOoAzeD4oPig+KD4oM5A+KD4oM6g+KDPAM9g6CD4oPig34D4oPig+KD4oM/A+KD4oPig+KDXQPig+KDnwPig6CD4oPig+KD4oPNg+KD4oNAg+KDQgPig+KDQ4Pig0UD4oPig5YD4oOXg5kD4oOWA+KDRoOZA+KD4oPig+KD4oPig6ID4oOjg+KD4oNIA+KDSYNLA+KD4oPig+KDTIPig+KD4oPig0yD4oPig+KD4oPig+KD4oPig04D4oPig+KD4oNPg+KD4oOag+KDWINRA1KDVAPig1WD4oPig1QD4oNVg+KD4oNXA+KDWINaA1uD4oPig10D4oPig+KD4oPig+KD4oOWA+KDl4OZA+KDXoPig2AD4oPig2MDZINhg+KD4oNjA2SDZgPig+KDZ4Pig2kD4oPig2qDbANtg+KD4oN2g3CDbwPig+KDdoNwg3mD4oPig+KD4oNyA+KD4oOfA+KDgQPig+KD4oPig3OD4oPig+KD4oN1A+KD4oN2g3gDeYN7A3yD4oPig34D4oPig+KD4oN/g+KD4oPig+KDgQPig+KDhYPig4KD4oPig4WD4oOEA+KD4oOFg+KDhwPig+KD4oPig4iD4oPig+KD4oOKA+KD4oPig+KDi4ONA+KD4oPig+KD4oPig46D4oOQA+KD4oORg+KDkwPig+KD4oPig+KD4oPig+KD4oOxA+KD4oPVA9aDtYPig9mD1QPWg7WD4oPZg9UD1oO4g+KD2YPig+KDlIPig+KDlgPig5eDmQPig5qD4oOcA+KD4oO9A+KD4oPig+KD4oPig+KD4oPig9UD1oO1g+KD2YPig+KDnYPig+KD4oPig52D4oPig58D4oOgg+KD4oOiA+KDo4Pig+KD4oPig6UD4oPig6aDqAOpg+KD4oPig+KDtYPig+KDqwOsg9sD4oOuA+KD4oOvg+KD4oPDA8SDwYPig+KD4oPig7ED4oPig8kDyoPMA+KD4oPJA8qDsoPig+KDyQPKg7QD4oPig9UD1oO1g+KD2YPVA9aDtYPig9mD1QPWg7cD4oPZg9UD1oO4g+KD2YO6A+KDu4Pig+KDvQPig+KD4oPig94D4oO+g+KD4oPeA+KDvoPig+KD4oPig8AD4oPig8MDxIPBg+KD4oPDA8SDxgPig+KD4oPig8eD4oPig8kDyoPMA+KD4oPPA9CDzYPig+KDzwPQg9ID4oPig9UD1oPTg+KD2YPVA9aD2APig9mD3gPig9sD4oPig94D4oPcg+KD4oPeA+KD34Pig+KD4oPig+ED4oPigABAX0AAAABAUoDUwABAWUDUwABAWUDOQABAZoDUwABAZoCvAABAWcDUwABAfICvAABAogCSgABAUoAAAABAYMAAAABAUACvAABANAAAAABAJsAAAABAM0AAAABAJsDOQABAQoCvAABAWcCvAABAX0CvAABAfAAAAABAfACvQABA0QCvAABAS8CvAABAS8BUwABAU4AAAABAU4CvAABAUsA+QABAUQAAAABAUQCvAABAUEA+QABAS4AAAABAS4CvAABAS4BUwABAVUCvAABAVQCvAABAlUAAAABAk8CvwABAJ8AAAABANEAAAABAJ8CvAABAgQCvAABAZkAAAABAZkCvAABAZkCKQABAeEAAAABAeECvAABAXsCvAABAXsAAAABAuoAAAABAXsDOQABAhwAAAABAhwCvAABAW8AAAABAmkAAAABAWUCvAABAZ0CvAABAZ0DOQABAgQDOQABAT8DOQABAZoDNQABAZoDOQABAagAAAABAfUAAAABAagDOQABAagBXgABAoECvAABAUADOQABAVQDNQABAVQDOQABAVQDUwABAVUDOQABA0MAAAABA3QAAAABAfIDOQABAK4CSgABAWYCvAABAagCvAABAMcCSgABAUoCvAABAT8CvAABAZYAAAABAZ8CvAABAV4DUwABAV4DOQABAY8DUwABAYoCvAABAfECvAABAOwCvAABAQ4CSgABATwAAAABAT4CvAABATsBSgABAY8CvAABAr0AAAABAhQCvAABAV4AAAABAlEAAAABAV4CvAABAY8DNQABAYgAAAABArEAAAABAY8DOQABAo4CvAABAYoDNQABAYoDOQABApcAAAABAYoDUwABAfEDOQABAMMCSgABATgAAAABATgCEwABATUCvQABATUCowABAVUCEgABAVUCvQABAVUCswABATQCvQABAYIAAAABAW4CEgABARACEgABAaACEgABAgEBugABAQsAAAABAQsCEgABATkAAAABAL0AAAABAI0CxQABAIsCowABAI4CxQABAVsAAAABAJAC5gABAMMCeQABATMCEAABAUEAAAABAUECEgABAYoAAAABAYoCEgABArECEAABAPgAAAABAPgCEgABAPgA/AABAR4ABQABARQCEgABARMCEgABAMgCegABAQQCEgABAdAAAAABAcoCEAABAI0AAAABAI0C5gABAI0BZgABARYC5gABAagCEgABAY8AAAABAY8CEgABASECEgABAR8AAAABAf0AAAABASECowABAdkAAAABAc0CEgABATUAAAABAgkAAAABATUCEgABAT8CEgABAGsCEgABAagCowABAVUCnwABAVUCowABAT8AAAABAaIAAAABAT8CowABAT8BCQABAcgCEgABAUUCEgABAUUCowABAQcCowABARACnwABARACowABAaAAAAABARACvQABARQCowABASMCEAABAaACowABAJoBugABAS8AAAABAUICEgABAdQAAAABAdQCEgABATECEgABAVIAAAABAVICEgABAVIBpgABAVkAAAABAVkCEgABAgYCEAABAPsAAAABAQcCEgABAToAAAABAS4CEgABASMCuwABAIsAAAABALsAAAABAIsCnwABAVAAAAABAkkAAAABAhoCEgABAgYCnQABAUgCEgABATACvQABATACowABAUYCEgABAUYCswABAUYCvQABAWkAAAABAVYCEgABAhQAAAABAVACEgABAZUCEgABAU8CEgABAU8AAAABAk8AAAABAU8CowABAeUCEgABATAAAAABAb0AAAABATACEgABATQCEgABATQAAAABAKcCEgABATQCowABAUYCnwABAUcAAAABAkAAAAABAUYCowABAhECEgABAVACnwABAVACowABApUAAAABAVACvQABAZUCowABAAAAAAAJAAAAAQAIAAEABAAAA7wABgEAAAEACAABAAwAHAABACoASgABAAYG/wcABwEHAgcEBwUAAQAFBv8HAAcBBwQHBQAGAAAAGgAAABoAAAAaAAAAGgAAABoAAAAaAAH+1AAAAAUAEgAMABIAGAAeAAH+1P9qAAH+1P9vAAH+1P9jAAH+1P9yAAYCAAABAAgAAQF6AAwAAQGgAEAAAgAIBt8G6gAABuwG/QAMBwoHJAAeB0AHQQA5B0UHRQA7B0gHSgA8B0wHUQA/B1MHVABFAEcAkACuAK4ArgKSAJYAugCuALoAnACuALoAwADAAsAAwACiAKIAwACuAK4ArgCoAK4ArgCuALQAugDAAMYAzADqAOoA6gDSANgA9gDqAPYA3gDqAPYA/AD8At4A/AD8AOoA6gDqAOQA6gDqAOoA8AD2APwBFAEOAQ4BDgEgASABIAECAQgBDgEOARQBGgEgAAH+1AKjAAH+1AMwAAH+1AMxAAH+1AL9AAH+1AKfAAH+1AMtAAH+1AMDAAH+1AK9AAH+1AKzAAH+1ALfAAH+1AM5AAH+1ANSAAH+1APGAAH+1APHAAH+1AM1AAH+1APDAAH+1AOZAAH+1ANTAAH+1ANJAAEBLAKjAAEBLAK8AAEBLAK9AAEBLAKfAAEBLAL9AAEBLAKzAAYCAAABAAgAAQAMACgAAQAyAWoAAgAEBt8G6gAABuwG/QAMBwoHJAAeB14HbQA5AAIAAQdeB20AAABJAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABMgAAATIAAAEyAAABMgAAATIAAAEyAAABMgAAATIAAAEyAAABMgAAATIAAAEyAAABMgAAATIAAAEyAAABMgAAATIAAAEyAAABMgAAATIAAAEyAAABJgAAATIAAAEyAAABMgAAATIAAAEyAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEyAAABMgAAATIAAAEyAAABMgAAATIAAAEyAAABMgAB/tQCuwAB/tQCEgAB/tQCvAAQACgAKAAiACgALgAuADQAOgBGAEYAQABGAEwATABSAFgAAf7UAyUAAf7UAxoAAf98AvcAAf9WAwsAAf7UAyAAAf7UA7sAAf7UA7AAAf98A40AAf9WA6EAAf7UA7YAAQAMACIABQEKAq4AAgADBt8G6gAABuwHJwAMB14HbQBIAAIAJgAEAEgAAABKAH8ARQCBAKYAewCpALQAoQC2AL0ArQC/ANoAtQDcAN4A0QDgAOQA1ADmAPQA2QD2ASoA6AEsATYBHQE4AVABKAFSAVQBQQFWAaUBRAGnAa4BlAGwAc4BnAHQAdYBuwHYAgcBwgIJAjwB8gI+AkUCJgJIAm0CLgJvAn0CVAJ/ArMCYwK1AtkCmALfAyMCvQMlAzUDAgM3A1sDEwNdA4IDOAOFA5ADXgOSA5kDagObA7YDcgO4A7oDjgO8A8ADkQPCBAUDlgQHBBED2gQTBCoD5QQsBC4D/QQwBGMEAABYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAQBmAAAAWgAAAFoAAABaAAAAWgAAQFiAAABaAAAAWgAAwFuAAMBdAADAYwAAwF6AAIBngACAZ4AAgGeAAIBngACAZ4AAgGeAAIBngACAZ4AAgGeAAIBngACAZ4AAgGeAAIBngACAZ4AAgGeAAIBngACAZ4AAgGeAAIBngACAZ4AAgGeAAIBgAACAZ4AAgGeAAIBngACAZ4AAgGeAAMBhgADAYwAAwGSAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGeAAIBngACAZ4AAgGeAAIBngACAZ4AAgGeAAIBngAB/tUAAAAB/tQAAAAB/tQBtgAB/kwBtgAB/soBCgAB/tQCuwAB/tQBZAAB/ycBggAB/mMBXgAB/tQCEgAB/tQCvAQ0KlIqWCpGPJQ8lCpSKlgqNDyUPJQqUipYKl48lDyUKlIqWCoQPJQ8lCouKlgqXjyUPJQqUipYKhA8lDyUKlIqWCoKPJQ8lCpSKlgqEDyUPJQqUipYKl48lDyUKlIqWCpePJQ8lCpSKlgqFjyUPJQqLipYKl48lDyUKlIqWCoWPJQ8lCpSKlgqHDyUPJQqUipYKiI8lDyUKlIqWCo0PJQ8lCpSKlgqKDyUPJQqLipYKkY8lDyUKlIqWCo0PJQ8lCpSKlgqOjyUPJQqUipYKl48lDyUKlIqWCpAPJQ8lCpSKlgqRjyUPJQqUipYKkw8lDyUKlIqWCpMPJQ8lCpSKlgqXjyUPJQuWjyULlQ8lDyULlo8lC5gPJQ8lCpkPJQqajyUPJQqgjyUKnA8lDyUKoI8lCp2PJQ8lCqCPJQqfDyUPJQqgjyUKnA8lDyUKoI8lCp2PJQ8lCqCPJQqfDyUPJQqgjyUKog8lDyUM0w8lCrQLn48lCqOPJQqlC5+PJQqmjyUKqAqpjyUM0w8lCqsLn48lCqyPJQquCq+PJQqxDyUKtAufjyUKso8lCrQLn48lCrWPJQq3C5+PJQrHiskKxg8lDyUKx4rJDjaPJQ8lCseKyQrKjyUPJQrHiskKyo8lDyUKx4rJCsqPJQ8lCseKyQrKjyUPJQrHiskKuI8lDyUKwArJCsqPJQ8lCseKyQq4jyUPJQrHiskKug8lDyUKx4rJCruPJQ8lCseKyQ42jyUPJQrHiskKvQ8lDyUKx4rJCr6PJQ8lCsAKyQrGDyUPJQrHiskONo8lDyUKx4rJCsGPJQ8lCseKyQrKjyUPJQrHiskKww8lDyUKx4rJCsSPJQ8lCseKyQrEjyUPJQrHiskKxg8lDyUKx4rJCsqPJQ8lCs2PJQrMDyUPJQrNjyUKzw8lDyULDg8lC72PJQ8lCw4PJQu2DyUPJQsODyULtg8lDyULDg8lC7YPJQ8lCwgPJQu9jyUPJQsODyULuQ8lDyULDg8lC7qPJQ8lCw4PJQu9jyUPJQsODyULDIrWjyUK0I8lCtIK048lCtUPJQsMitaPJQsODyULD4rWjyULDg8lCw+K1o8lCwgPJQsMitaPJQriiuQK948lDyUPJQ8lCtgPJQ8lCuKK5ArxjyUPJQriiuQK5Y8lDyUK4orkCuWPJQ8lCuKK5ArxjyUPJQriiuQK2Y8lDyUK4orkCtsPJQ8lCuKK5ArcjyUPJQreCuQK948lDyUK4orkCvGPJQ8lCuKK5ArfjyUPJQriiuQK5Y8lDyUK4orkCuEPJQ8lCuKK5Ar3jyUPJQriiuQK5Y8lDyUPJQ8lCucPJQ8lDyUPJQrojyUPJQrqDyUK7o8lDyUK6g8lCuuPJQ8lCu0PJQrujyUPJQvUDyUK94vXC9iL1A8lCvAL1wvYi9QPJQrxi9cL2IvUDyUK94vXC9iK8w8lCveL1wvYi9QPJQr3i9cL2IrzDyUK94vXC9iL1A8lCvSL1wvYivYPJQr3i9cL2Ir5DyUK+or8Cv2K/w8lCwIPJQ8lCwCPJQsCDyUPJQsODyULDI8lDyULDg8lCwOPJQ8lCw4PJQsFDyUPJQsODyULD48lDyULCA8lCwyPJQ8lCw4PJQsGjyUPJQsIDyULDI8lDyULDg8lCwmPJQ8lCwsPJQsMjyUPJQsODyULD48lDyULIAshiyqLJIsmCyALIYsdCySLJgsgCyGLHoskiyYLIAshix6LJIsmCyALIYsRCySLJgsYiyGLHoskiyYLIAshixELJIsmCyALIYsSiySLJgsgCyGLFAskiyYLIAshix0LJIsmCyALIYsViySLJgsgCyGLIwskiyYLIAshixcLJIsmCxiLIYsqiySLJgsgCyGLHQskiyYLIAshixoLJIsmCyAPJQsqjyUPJQsgDyULHQ8lDyULGI8lCyqPJQ8lCyAPJQsdDyUPJQsgDyULGg8lDyULIA8lCx6PJQ8lCyALIYsdCySLJgsgCyGLHoskiyYLIAshixuLJIsmCyALIYsjCySLJgsgCyGLIwskiyYPJQ8lCyqPJQ8lCyALIYsqiySLJgsgCyGLHQskiyYLIAshix6LJIsmCyALIYsjCySLJgsgCyGLIwskiyYLIAshiyMLJIsmCyePJQspDyUPJQ8lDyULKo8lDyULLw8lCzOPJQ8lCy8PJQssDyUPJQsvDyULMI8lDyULLY8lCzOPJQ8lCy8PJQssDyUPJQstjyULM48lDyULLw8lCzCPJQ8lCzIPJQszjyUPJQs7DyULPI8lDyULOw8lCzUPJQ8lCzsPJQs2jyUPJQs7DyULOY8lDyULOw8lCzgPJQ8lCzsPJQs8jyUPJQs7DyULOY8lDyULPg8lCzyPJQ8lCzsPJQs/jyUPJQs+DyULPI8lDyULPg8lCz+PJQ8lDhEPJQtBDyUPJQtEDyULSItKDyULRA8lC0iLSg8lC0QPJQtCi0oPJQtEDyULSItKDyULRY8lC0iLSg8lC0WPJQtIi0oPJQtHDyULSItKDyULWQtai06PJQtdi1kLWotRjyULXYtZC1qLV48lC12LWQtai1ePJQtdi1kLWotXjyULXYtZC1qLUY8lC12LWQtai0uPJQtdi00LWotOjyULXYtZC1qLUY8lC12LWQtai1APJQtdi1kLWotOjyULXYtZC1qLUY8lC12LTQtai06PJQtdi1kLWotRjyULXYtZC1qLUA8lC12LWQtai1ePJQtdi1kLWotRjyULXYtZC1qLV48lC12LWQtai1MPJQtdi1kLWotUjyULXYtZC1qLVg8lC12LWQtai1ePJQtdi1kLWotcDyULXYtjjyULXw8lDyULY48lC2UPJQ8lC2OPJQtgjyUPJQtjjyULYg8lDyULY48lC2UPJQ8lC3EPJQtrC3QPJQtxDyULbIt0DyULcQ8lC3KLdA8lC3EPJQtmi3QPJQtxDyULaAt0DyULaY8lC2sLdA8lC3EPJQtsi3QPJQtxDyULbgt0DyULcQ8lC2+LdA8lC3EPJQtyi3QPJQt4jyULfQ8lDyULeI8lC3WPJQ8lC3iPJQt3DyUPJQt4jyULeg8lDyULe48lC30PJQ8lC5CLkguNjyUPJQuQi5ILiQ8lDyULkIuSC5OPJQ8lC5CLkguADyUPJQuHi5ILk48lDyULkIuSC4APJQ8lC5CLkgt+jyUPJQuQi5ILgA8lDyULkIuSC5OPJQ8lC5CLkguTjyUPJQuQi5ILgY8lDyULh4uSC5OPJQ8lC5CLkguBjyUPJQuQi5ILgw8lDyULkIuSC4SPJQ8lC5CLkguJDyUPJQuQi5ILhg8lDyULh4uSC42PJQ8lC5CLkguJDyUPJQuQi5ILio8lDyULkIuSC5OPJQ8lC5CLkguMDyUPJQuQi5ILjY8lDyULkIuSC48PJQ8lC5CLkguPDyUPJQuQi5ILk48lDyULlo8lC5UPJQ8lC5aPJQuYDyUPJQuZjyULmwufjyULnI8lC54Ln48lC7GLswuwDyUPJQuxi7MLqg8lDyULsYuzC7SPJQ8lC7GLswu0jyUPJQuxi7MLtI8lDyULsYuzC7SPJQ8lC7GLswuhDyUPJQuoi7MLtI8lDyULsYuzC6EPJQ8lC7GLswuijyUPJQuxi7MLpA8lDyULsYuzC6oPJQ8lC7GLswuljyUPJQuxi7MLpw8lDyULqIuzC7APJQ8lC7GLswuqDyUPJQuxi7MLq48lDyULsYuzC7SPJQ8lC7GLswutDyUPJQuxi7MLro8lDyULsYuzC66PJQ8lC7GPJQuwDyUPJQuxi7MLtI8lDyULvA8lC72PJQ8lC7wPJQu2DyUPJQu8DyULtg8lDyULvA8lC7YPJQ8lC7ePJQu9jyUPJQu8DyULuQ8lDyULvA8lC7qPJQ8lC7wPJQu9jyUPJQvMi84Lyw8lDyUPJQ8lC78PJQ8lC8yLzgvGjyUPJQvMi84Lz48lDyULzIvOC8+PJQ8lC8yLzgvGjyUPJQvMi84LwI8lDyULzIvOC8IPJQ8lC8yLzgvDjyUPJQvFC84Lyw8lDyULzIvOC8aPJQ8lC8yLzgvIDyUPJQvMi84Lz48lDyULzIvOC8mPJQ8lC8yLzgvLDyUPJQvMi84Lz48lDyUPJQ8lC9EPJQ8lDyUPJQvSjyUPJQvUDyUL1YvXC9iL2g8lC90PJQ8lC9uPJQvdDyUPJQvpDyUL548lDyUL6Q8lC96PJQ8lC+kPJQvgDyUPJQvpDyUL6o8lDyUL4w8lC+ePJQ8lC+kPJQvhjyUPJQvjDyUL548lDyUL6Q8lC+SPJQ8lC+YPJQvnjyUPJQvpDyUL6o8lDyUL7A8lC+2PJQ8lDNYPJQvzi/UPJQzWDyUL84v1DyUM1g8lC+8L9Q8lDNYPJQvzi/UPJQvwjyUL84v1DyUL8I8lC/OL9Q8lC/IPJQvzi/UPJQwEDAWL/48lDAiMBAwFi/sPJQwIjAQMBYwCjyUMCIwEDAWMAo8lDAiMBAwFjAKPJQwIjAQMBYv7DyUMCIwEDAWL9o8lDAiL+AwFi/+PJQwIjAQMBYv7DyUMCIwEDAWL+Y8lDAiMBAwFi/+PJQwIjAQMBYv7DyUMCIv4DAWL/48lDAiMBAwFi/sPJQwIjAQMBYv5jyUMCIwEDAWMAo8lDAiMBAwFi/sPJQwIjAQMBYwCjyUMCIwEDAWL/I8lDAiMBAwFi/4PJQwIjAQMBYv/jyUMCIwEDAWMAQ8lDAiMBAwFjAKPJQwIjAQMBYwHDyUMCIwOjyUMCg8lDyUMDo8lDBAPJQ8lDA6PJQwLjyUPJQwOjyUMDQ8lDyUMDo8lDBAPJQ8lDBwPJQwWDyUPJQwcDyUMF48lDyUMHA8lDB2PJQ8lDBwPJQwRjyUPJQwcDyUMEw8lDyUMFI8lDBYPJQ8lDBwPJQwXjyUPJQwcDyUMGQ8lDyUMHA8lDBqPJQ8lDBwPJQwdjyUPJQ6SDyUMI48lDyUOkg8lDB8PJQ8lDpIPJQwgjyUPJQ6SDyUMIg8lDyUOiQ8lDCOPJQ8lDnoMNYwyjyUPJQ56DDWMLg8lDyUOegw1jDcPJQ8lDnoMNYwmjyUPJQ59DDWMNw8lDyUOegw1jCaPJQ8lDnoMNYwlDyUPJQ56DDWMJo8lDyUOegw1jDcPJQ8lDnoMNYw3DyUPJQ56DDWMKA8lDyUOfQw1jDcPJQ8lDnoMNYwoDyUPJQ56DDWMKY8lDyUOegw1jCsPJQ8lDnoMNYwuDyUPJQ56DDWMLI8lDyUOfQw1jDKPJQ8lDnoMNYwuDyUPJQ56DDWML48lDyUOegw1jDcPJQ8lDnoMNYwxDyUPJQ56DDWMMo8lDyUOegw1jDQPJQ8lDnoMNYw0DyUPJQ56DDWMNw8lDyUMOg8lDDiPJQ8lDDoPJQw7jyUPJQxBjyUMPQ8lDyUMQY8lDD6PJQ8lDEGPJQxADyUPJQxBjyUMPQ8lDyUMQY8lDD6PJQ8lDEGPJQxADyUPJQxBjyUMQw8lDyUMRI8lDyUNQ41FDESPJQ8lDUONRQxEjyUPJQ1DjUUMRg8lDyUNQ41FDEePJQ8lDUONRQxJDyUMSo1DjUUO1AxeDFOPJQ8lDtQMXgxVDyUPJQ7UDF4MX48lDyUO1AxeDF+PJQ8lDtQMXgxfjyUPJQ7UDF4MX48lDyUO1AxeDEwPJQ8lDgUMXgxfjyUPJQ7UDF4MTA8lDyUO1AxeDE2PJQ8lDtQMXgxPDyUPJQ7UDF4MVQ8lDyUO1AxeDFCPJQ8lDtQMXgxSDyUPJQ4FDF4MU48lDyUO1AxeDFUPJQ8lDtQMXgxWjyUPJQ7UDF4MX48lDyUO1AxeDFgPJQ8lDtQMXgxZjyUPJQ7UDF4MWY8lDyUMWw8lDFyPJQ8lDtQMXgxfjyUPJQxhDGKMZA8lDyUMZw8lDGWPJQ8lDGcPJQxojyUPJQ8lDyUMag8lDyUPJQ8lDGuPJQ8lDyUPJQxrjyUPJQ8lDyUMa48lDyUPJQ8lDG0PJQ8lDyUPJQxujyUPJQ8lDyUMcA8lDyUOkg8lDWkMdIx2DpIPJQ1pDHSMdgxxjyUNaQx0jHYOkg8lDIyMdIx2DpIPJQxzDHSMdg6JDyUNaQx0jHYM3AyDjIIPJQ8lDNwMg4x3jyUPJQzcDIOMfY8lDyUM3AyDjIUPJQ8lDNwMg4yFDyUPJQzcDIOMfY8lDyUM3AyDjHkPJQ8lDNwMg4x6jyUPJQzcDIOMfA8lDyUM2oyDjIIPJQ8lDNwMg4x9jyUPJQzcDIOMfw8lDyUM3AyDjIUPJQ8lDNwMg4ySjyUPJQzcDIOMgI8lDyUM3AyDjIIPJQ8lDNwMg4yFDyUPJQ8lDyUMho8lDyUPJQ8lDIgPJQ8lDyUPJQyJjyUPJQyLDyUNaQ8lDI+Miw8lDIyPJQyPjI4PJQ1pDyUMj44LDyUMkQ8lDyUM3A8lDWkNaoyUDNwPJQ1hjWqMlAzcDyUNaQ1qjJQM2o8lDWkNaoyUDNwPJQ1pDWqMlAzajyUNaQ1qjJQM3A8lDJKNaoyUDN8PJQ1pDWqMlAyVjyUMlwyYjJoMm48lDyUPJQ8lDJ0PJQ8lDyUPJQ6SDyUMp48lDyUOkg8lDJ6PJQ8lDKAPJQyhjyUPJQ6SDyUMqQ8lDyUOiQ8lDKePJQ8lDpIPJQyjDyUPJQ6JDyUMp48lDyUOkg8lDKSPJQ8lDKYPJQynjyUPJQ6SDyUMqQ8lDyUMxYzHDL4MygzLjMWMxwy7DMoMy4zFjMcMxAzKDMuMxYzHDMQMygzLjMWMxwyqjMoMy4yyDMcMxAzKDMuMxYzHDKqMygzLjMWMxwysDMoMy4zFjMcMrYzKDMuMxYzHDLsMygzLjMWMxwyvDMoMy4zFjMcMyIzKDMuMxYzHDLCMygzLjLIMxwy+DMoMy4zFjMcMuwzKDMuMxYzHDLOMygzLjLmPJQzXjyUPJQy5jyUMto8lDyUMtQ8lDNePJQ8lDLmPJQy2jyUPJQy5jyUMuA8lDyUMuY8lDMQPJQ8lDMWMxwy7DMoMy4zFjMcMxAzKDMuMxYzHDLyMygzLjMWMxwzIjMoMy4zFjMcMyIzKDMuMxY8lDL4Mygy/jMWMxwzBDMoMy4zFjMcMwozKDMuMxYzHDMQMygzLjMWMxwzIjMoMy4zFjMcMyIzKDMuMxYzHDMiMygzLjM0PJQzOjyUPJQzQDyUM0Y8lDyUM0w8lDNSPJQ8lDNYPJQzXjyUPJQzcDyUM4I8lDyUM3A8lDNkPJQ8lDNwPJQzdjyUPJQzajyUM4I8lDyUM3A8lDNkPJQ8lDNqPJQzgjyUPJQzcDyUM3Y8lDyUM3w8lDOCPJQ8lDOgPJQzpjyUPJQzoDyUM4g8lDyUM6A8lDOOPJQ8lDOgPJQzmjyUPJQzoDyUM5Q8lDyUM6A8lDOmPJQ8lDOgPJQzmjyUPJQzrDyUM6Y8lDyUM6A8lDOyPJQ8lDOsPJQzpjyUPJQzrDyUM7I8lDyUM9A8lDPoM+4z9DO4PJQzvjPEM8oz0DyUM+gz7jP0M9A8lDPoM+4z9DPcPJQz6DPuM/Qz0DyUM9Yz7jP0M9w8lDPoM+4z9DPiPJQz6DPuM/Q23DQGNig8lDQSNtw0BjYuPJQ0EjbcNAY2RjyUNBI23DQGNkY8lDQSNtw0BjZGPJQ0EjbcNAY2LjyUNBI23DQGNhw8lDQSM/o0BjYoPJQ0EjbcNAY2LjyUNBI23DQGNjQ8lDQSNtw0BjYoPJQ0EjbcNAY2LjyUNBIz+jQGNig8lDQSNtw0BjYuPJQ0EjbcNAY2NDyUNBI23DQGNkY8lDQSNtw0BjYuPJQ0EjbcNAY2RjyUNBI23DQGNjo8lDQSNtw0BjQMPJQ0EjbcNAY2KDyUNBI23DQGNAA8lDQSNtw0BjZGPJQ0EjbcNAY0DDyUNBI0GDyUNB48lDyUNDY8lDQkPJQ8lDQ2PJQ0PDyUPJQ0NjyUNCo8lDyUNDY8lDQwPJQ8lDQ2PJQ0PDyUPJQ0bDyUNFQ8lDyUNGw8lDRaPJQ8lDRsPJQ0cjyUPJQ0bDyUNEI8lDyUNGw8lDRIPJQ8lDROPJQ0VDyUPJQ0bDyUNFo8lDyUNGw8lDRgPJQ8lDRsPJQ0ZjyUPJQ0bDyUNHI8lDyUNIQ8lDSWPJQ8lDSEPJQ0eDyUPJQ0hDyUNH48lDyUNIQ8lDSKPJQ8lDSQPJQ0ljyUPJQ05DTqNNg8lDyUNOQ06jTGPJQ8lDTkNOo08DyUPJQ05DTqNKI8lDyUNMA06jTwPJQ8lDTkNOo0ojyUPJQ05DTqNJw8lDyUNOQ06jSiPJQ8lDTkNOo08DyUPJQ05DTqNPA8lDyUNOQ06jSoPJQ8lDTANOo08DyUPJQ05DTqNKg8lDyUNOQ06jSuPJQ8lDTkNOo0tDyUPJQ05DTqNMY8lDyUNOQ06jS6PJQ8lDTANOo02DyUPJQ05DTqNMY8lDyUNOQ06jTMPJQ8lDTkNOo08DyUPJQ05DTqNNI8lDyUNOQ06jTYPJQ8lDTkNOo03jyUPJQ05DTqNN48lDyUNOQ06jTwPJQ8lDyUPJQ09jyUPJQ8lDyUNPw8lDyUNQI8lDUINQ41FDViNWg1PjyUPJQ1YjVoNUQ8lDyUNWI1aDVuPJQ8lDViNWg1bjyUPJQ1YjVoNW48lDyUNWI1aDVuPJQ8lDViNWg1GjyUPJQ1ODVoNW48lDyUNWI1aDUaPJQ8lDViNWg1IDyUPJQ1YjVoNSY8lDyUNWI1aDVEPJQ8lDViNWg1LDyUPJQ1YjVoNTI8lDyUNTg1aDU+PJQ8lDViNWg1RDyUPJQ1YjVoNUo8lDyUNWI1aDVuPJQ8lDViNWg1UDyUPJQ1YjVoNVY8lDyUNWI1aDVWPJQ8lDdmPJQ1XDyUPJQ1YjVoNW48lDyUNXQ1ejWAPJQ8lDWePJQ1pDWqNc41njyUNYY1qjXONZ48lDWkNao1zjWMPJQ1pDWqNc41njyUNaQ1qjXONYw8lDWkNao1zjWePJQ1kjWqNc41mDyUNaQ1qjXONZ48lDWkNao1zjWwPJQ1tjyUPJQ11DyUNew18jX4Nbw8lDXCNcg1zjXUPJQ17DXyNfg11DyUNew18jX4NeA8lDXsNfI1+DXUPJQ12jXyNfg14DyUNew18jX4NeY8lDXsNfI1+DYQPJQ1/jyUPJQ2EDyUNhY8lDyUNhA8lDYEPJQ8lDYQPJQ2CjyUPJQ2EDyUNhY8lDyUNkA8lDYoPJQ8lDZAPJQ2LjyUPJQ2QDyUNkY8lDyUNkA8lDYcPJQ8lDYiPJQ2KDyUPJQ2QDyUNi48lDyUNkA8lDY0PJQ8lDZAPJQ2OjyUPJQ2QDyUNkY8lDyUNlg8lDZqPJQ8lDZYPJQ2TDyUPJQ2WDyUNlI8lDyUNlg8lDZePJQ8lDZkPJQ2ajyUPJQ7UDayNqY8lDyUO1A2sjaUPJQ8lDtQNrI2uDyUPJQ7UDayNnY8lDyUOBQ2sja4PJQ8lDtQNrI2djyUPJQ7UDayNnA8lDyUO1A2sjZ2PJQ8lDtQNrI2uDyUPJQ7UDayNrg8lDyUO1A2sjZ8PJQ8lDgUNrI2uDyUPJQ7UDayNnw8lDyUO1A2sjaCPJQ8lDtQNrI2iDyUPJQ7UDayNpQ8lDyUO1A2sjaOPJQ8lDgUNrI2pjyUPJQ7UDayNpQ8lDyUO1A2sjaaPJQ8lDtQNrI2uDyUPJQ7UDayNqA8lDyUO1A2sjamPJQ8lDtQNrI2rDyUPJQ7UDayNqw8lDyUO1A2sja4PJQ8lDbEPJQ2vjyUPJQ2xDyUNso8lDyUNvQ8lDbQPJQ8lDbcPJQ6/DyUPJQ23DyUNtY8lDyUNtw8lDrePJQ8lDbcPJQ6/DyUPJQ23DyUNtY8lDyUNtw8lDrePJQ8lDbcPJQ66jyUPJQ29DyUOAg6eDyUNuI8lDboNu48lDb0PJQ39jp4PJQ2+jyUNwA3BjyUNww8lDgIOng8lDcSPJQ4CDp4PJQ3GDyUNx46eDyUN2Y3bDdgPJQ8lDdmN2w3SDyUPJQ3ZjdsN3I8lDyUN2Y3bDdyPJQ8lDdmN2w3cjyUPJQ3ZjdsN3I8lDyUN2Y3bDckPJQ8lDdCN2w3cjyUPJQ3ZjdsNyQ8lDyUN2Y3bDcqPJQ8lDdmN2w3MDyUPJQ3ZjdsN0g8lDyUN2Y3bDc2PJQ8lDdmN2w3PDyUPJQ3QjdsN2A8lDyUN2Y3bDdIPJQ8lDdmN2w3TjyUPJQ3ZjdsN3I8lDyUN2Y3bDdUPJQ8lDdmN2w3WjyUPJQ3ZjdsN1o8lDyUN2Y3bDdgPJQ8lDdmN2w3cjyUPJQ60jyUOtg8lDyUN348lDd4PJQ8lDd+PJQ3hDyUPJQ8BDyUOvw8lDyUPAQ8lDrePJQ8lDwEPJQ63jyUPJQ8BDyUOt48lDyUO9o8lDr8PJQ8lDwEPJQ66jyUPJQ8BDyUOvA8lDyUPAQ8lDr8PJQ8lDh6PJQ4dDeiPJQ3ijyUN5A3ljyUN5w8lDh0N6I8lDh6PJQ4gDeiPJQ4ejyUOIA3ojyUOGI8lDh0N6I8lDfYN9430jyUPJQ32DfeN9I8lDyUN9g33jfAPJQ8lDfYN9435DyUPJQ32DfeN+Q8lDyUN9g33jfAPJQ8lDfYN943qDyUPJQ32DfeN648lDyUN9g33je0PJQ8lDe6N9430jyUPJQ32DfeN8A8lDyUN9g33jfGPJQ8lDfYN9435DyUPJQ8lDyUOyA8lDyUN9g33jfMPJQ8lDfYN9430jyUPJQ32DfeN+Q8lDyUPJQ8lDfqPJQ8lDyUPJQ38DyUPJQ4AjyUOAg8lDyUOAI8lDf2PJQ8lDf8PJQ4CDyUPJQ4AjyUOAg8lDyUO1A8lDgmO1w7YjtQPJQ4DjtcO2I7UDyUOCY7XDtiOBQ8lDgmO1w7YjtQPJQ4JjtcO2I4FDyUOCY7XDtiO1A8lDgaO1w7YjggPJQ4JjtcO2I4LDyUODI4ODg+OEQ8lDhQPJQ8lDhKPJQ4UDyUPJQ4ejyUOHQ8lDyUOHo8lDhWPJQ8lDh6PJQ4gDyUPJQ4YjyUOHQ8lDyUOHo8lDhcPJQ8lDhiPJQ4dDyUPJQ4ejyUOGg8lDyUOG48lDh0PJQ8lDh6PJQ4gDyUPJQ4zjjUOLw44DjmOM441DiwOOA45jjOONQ4yDjgOOY4zjjUOMg44DjmOM441DiGOOA45jikONQ4yDjgOOY4zjjUOIY44DjmOM441DiMOOA45jjOONQ4kjjgOOY4zjjUOLA44DjmOM441DiYOOA45jjOONQ42jjgOOY4zjjUOJ444DjmOKQ41Di8OOA45jjOONQ4sDjgOOY4zjjUOKo44DjmOM48lDi8PJQ8lDjOPJQ4sDyUPJQ4pDyUOLw8lDyUOM48lDiwPJQ8lDjOPJQ4qjyUPJQ4zjyUOMg8lDyUOM441DiwOOA45jjOONQ4yDjgOOY4zjjUOLY44DjmOM441DjaOOA45jjOONQ42jjgOOY8lDyUOLw8lDyUOMI41DuYOOA45jjCONQ7ejjgOOY4zjjUOMg44DjmOM441DjaOOA45jjOONQ42jjgOOY4zjjUONo44DjmOOw8lDjyPJQ8lDyUPJQ4+DyUPJQ5CjyUORw8lDyUOQo8lDj+PJQ8lDkKPJQ5EDyUPJQ5BDyUORw8lDyUOQo8lDj+PJQ8lDkEPJQ5HDyUPJQ5CjyUORA8lDyUORY8lDkcPJQ8lDk6PJQ5QDyUPJQ5OjyUOSI8lDyUOTo8lDkoPJQ8lDk6PJQ5NDyUPJQ5OjyUOS48lDyUOTo8lDlAPJQ8lDk6PJQ5NDyUPJQ5RjyUOUA8lDyUOTo8lDlMPJQ8lDlGPJQ5QDyUPJQ5RjyUOUw8lDyUOVg8lDlwOXY8lDlYPJQ5cDl2PJQ5WDyUOVI5djyUOVg8lDlwOXY8lDlkPJQ5cDl2PJQ5WDyUOV45djyUOWQ8lDlwOXY8lDlqPJQ5cDl2PJQ8BDl8O/I8lDmCPAQ5fDvmPJQ5gjwEOXw7/jyUOYI8BDl8O/48lDmCPAQ5fDv+PJQ5gjwEOXw75jyUOYI8BDl8O9Q8lDmCO9o5fDvyPJQ5gjwEOXw75jyUOYI8BDl8O+A8lDmCPAQ5fDvyPJQ5gjwEOXw75jyUOYI72jl8O/I8lDmCPAQ5fDvmPJQ5gjwEOXw74DyUOYI8BDl8O/48lDmCPAQ5fDvmPJQ5gjwEOXw7/jyUOYI8BDl8O+w8lDmCPAQ5fDwQPJQ5gjwEOXw7+DyUOYI8BDl8O/48lDmCPAQ5fDwQPJQ5gjmaPJQ5iDyUPJQ5mjyUOaA8lDyUOZo8lDmOPJQ8lDmaPJQ5lDyUPJQ5mjyUOaA8lDyUOdA8lDm4PJQ8lDnQPJQ5vjyUPJQ50DyUOdY8lDyUOdA8lDmmPJQ8lDnQPJQ5rDyUPJQ5sjyUObg8lDyUOdA8lDm+PJQ8lDnQPJQ5xDyUPJQ50DyUOco8lDyUOdA8lDnWPJQ8lDnoPJQ5+jyUPJQ56DyUOdw8lDyUOeg8lDniPJQ8lDnoPJQ57jyUPJQ59DyUOfo8lDyUOkg6Tjo8PJQ8lDpIOk46KjyUPJQ6SDpOOlQ8lDyUOkg6TjoGPJQ8lDokOk46VDyUPJQ6SDpOOgY8lDyUOkg6TjoAPJQ8lDpIOk46BjyUPJQ6SDpOOlQ8lDyUOkg6TjpUPJQ8lDpIOk46DDyUPJQ6JDpOOlQ8lDyUOkg6TjoMPJQ8lDpIOk46EjyUPJQ6SDpOOhg8lDyUOkg6TjoqPJQ8lDpIOk46HjyUPJQ6JDpOOjw8lDyUOkg6TjoqPJQ8lDpIOk46MDyUPJQ6SDpOOlQ8lDyUOkg6Tjo2PJQ8lDpIOk46PDyUPJQ6SDpOOkI8lDyUOkg6TjpCPJQ8lDpIOk46VDyUPJQ6YDyUOlo8lDyUOmA8lDpmPJQ8lDpsPJQ6cjp4PJQ6wDrGOro8lDyUOsA6xjqiPJQ8lDrAOsY6zDyUPJQ6wDrGOsw8lDyUOsA6xjrMPJQ8lDrAOsY6zDyUPJQ6wDrGOn48lDyUOpw6xjrMPJQ8lDrAOsY6fjyUPJQ6wDrGOoQ8lDyUOsA6xjqKPJQ8lDrAOsY6ojyUPJQ6wDrGOpA8lDyUOsA6xjqWPJQ8lDqcOsY6ujyUPJQ6wDrGOqI8lDyUOsA6xjqoPJQ8lDrAOsY6zDyUPJQ6wDrGOq48lDyUOsA6xjq0PJQ8lDrAOsY6tDyUPJQ8lDyUOro8lDyUOsA6xjrMPJQ8lDrSPJQ62DyUPJQ69jyUOvw8lDyUOvY8lDrePJQ8lDr2PJQ63jyUPJQ69jyUOt48lDyUOuQ8lDr8PJQ8lDr2PJQ66jyUPJQ69jyUOvA8lDyUOvY8lDr8PJQ8lDsyOzg7LDyUPJQ7Mjs4Oyw8lDyUOzI7ODsUPJQ8lDsyOzg7PjyUPJQ7Mjs4Oz48lDyUOzI7ODsUPJQ8lDsyOzg7AjyUPJQ7Mjs4Owg8lDyUOw47ODssPJQ8lDsyOzg7FDyUPJQ7Mjs4Oxo8lDyUOzI7ODs+PJQ8lDyUPJQ7IDyUPJQ7Mjs4OyY8lDyUOzI7ODssPJQ8lDsyOzg7PjyUPJQ8lDyUO0Q8lDyUPJQ8lDtKPJQ8lDtQPJQ7VjtcO2I7aDyUO3Q8lDyUO248lDt0PJQ8lDuePJQ7mDyUPJQ7njyUO3o8lDyUO548lDukPJQ8lDuGPJQ7mDyUPJQ7njyUO4A8lDyUO4Y8lDuYPJQ8lDuePJQ7jDyUPJQ7kjyUO5g8lDyUO548lDukPJQ8lDuwPJQ7yDvOPJQ7sDyUO8g7zjyUO7A8lDuqO848lDuwPJQ7yDvOPJQ7vDyUO8g7zjyUO7A8lDu2O848lDu8PJQ7yDvOPJQ7wjyUO8g7zjyUPAQ8CjvyPJQ8FjwEPAo75jyUPBY8BDwKO/48lDwWPAQ8Cjv+PJQ8FjwEPAo7/jyUPBY8BDwKO+Y8lDwWPAQ8CjvUPJQ8FjvaPAo78jyUPBY8BDwKO+Y8lDwWPAQ8CjvgPJQ8FjwEPAo78jyUPBY8BDwKO+Y8lDwWO9o8CjvyPJQ8FjwEPAo75jyUPBY8BDwKO+A8lDwWPAQ8Cjv+PJQ8FjwEPAo75jyUPBY8BDwKO/48lDwWPAQ8CjvsPJQ8FjwEPAo8EDyUPBY8BDwKO/I8lDwWPAQ8Cjv4PJQ8FjwEPAo7/jyUPBY8BDwKPBA8lDwWPC48lDwcPJQ8lDwuPJQ8NDyUPJQ8LjyUPCI8lDyUPC48lDwoPJQ8lDwuPJQ8NDyUPJQ8ZDyUPEw8lDyUPGQ8lDxSPJQ8lDxkPJQ8ajyUPJQ8ZDyUPDo8lDyUPGQ8lDxAPJQ8lDxGPJQ8TDyUPJQ8ZDyUPFI8lDyUPGQ8lDxYPJQ8lDxkPJQ8XjyUPJQ8ZDyUPGo8lDyUPHw8lDyOPJQ8lDx8PJQ8cDyUPJQ8fDyUPHY8lDyUPHw8lDyCPJQ8lDyIPJQ8jjyUPJQAAQFuA7sAAQFuA7AAAQIWA40AAQHwA6EAAQFuA7YAAQFu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AFYAZQB0AIMAkQCgAK8AvgDNANwA6wD6AQkBGAEnATYAAP//ABUADAAbACoAOQBIAFcAZgB1AIQAkgChALAAvwDOAN0A7AD7AQoBGQEoATcAAP//ABUADQAcACsAOgBJAFgAZwB2AIUAkwCiALEAwADPAN4A7QD8AQsBGgEpATgAAP//ABUADgAdACwAOwBKAFkAaAB3AIYAlACjALIAwQDQAN8A7gD9AQwBGwEqATkBOmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHcmNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHgmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxvY2wHsGxvY2wHtmxvY2wHvGxvY2wHwmxvY2wHyGxvY2wHzmxvY2wH1GxvY2wH2mxvY2wH4GxvY2wH5mxvY2wH7GxvY2wH8mxvY2wH+GxvY2wH/m51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQgAAAAIAAAABAAAAAQAkAAAAAQAmAAAABgACAAMABAAFAAYABwAAAAQAAgADAAQABQAAAAEAJwAAAAEAGgAAAAMAGwAcAB0AAAABACgAAAABACAAAAABABEAAAABABUAAAABABQAAAABABIAAAABABMAAAABABAAAAABAAkAAAABAA8AAAABAAwAAAABAAsAAAABAAgAAAABAAoAAAABAA0AAAABAA4AAAABABkAAAABACMAAAACAB4AHwAAAAEAIQAAAAEAKQAAAAEAFwAAAAEAJQAAAAEAKgAAAAEAFgAAAAEAGAAAAAEAIgAtAFwG3hGaEkgSrhKuFAIUAhSsFNoVHhUeFUAVQBVAFUAVQBVUFcIV1hX8FhYWPBZKFlgWiBZmFnQWiBaWFt4XJhdIF2AXeBeQF64Z+BxUHUYdZh2OHY4iniM4AAEAAAABAAgAAgRCAh4C+wL8Av0C/gL/AwADAQMCAwMDBAMFAwYDBwMIAyIDIwMtAy4DLwMwAzEDMgNHA0gDSQNLA0wDTQNOA08DUANRA1IDUwNhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlQOWA5cDmAOZA5oDuwPBAvsC/AL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMiAyMDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzQDNQM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNHA0gDSQNKA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOVA5YDlwOYA5kDmgOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A8EDxgM2At0C3gPRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8EAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwTjBOUE5gTnBOgE6QTrBOoE7QTuBO8E8ATyBPME9AT1BPYE9wT4BN8E4AT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBZoFlQV9BZQFnAWdBZ4FgAWBBaEFhQWGBYcFowWlBaYFigWLBYwFjQWpBaoFqwWQBawFkQWSBZMFrQWuBa8FsAWxBbIFswW0BbUFtgW3BbgFuQX8Bf0F/gX/BgAGAQYCBgMGBAYFBjYGOAZgBmEGZgZnBmgGaQZwBjkGQgZDBkQGRQZGBkcGTwZQBlEGagZrBmwGbQZuBm8GuQa6BrsGvAbcBt4G3QcKBwsHDAcNBw4HDwcQBxEHEgcTBxQHFQcWBxcHGAcZBxoHGwccBx0HHgcfByAHIQciByMHJAdWByYHZgdnB2gHaQdqB2sHbAdtAAIAXgAgACgAAAAqAC4ACQBHAEgADgBSAFcAEABqAG0AFgBvAHYAGgCFAKgAIgCqALcARgC5AL4AVADfAN8AWgDlAOUAWwGmAbMAXAHNAc4AagHQAd0AbAHfAe4AegHxAfUAigH/AgIAjwIEAgsAkwINAi0AmwIvAj8AvAJBAkYAzQJQAmgA0wJuAm4A7AJzAnMA7QJ+An4A7gLbAtwA7wLfAvoA8QMJAyEBDQMkAywBJgMzAzsBLwM9A0YBOANRA1EBQgNUA18BQwOFA4UBTwObA7oBUAO8A8ABcAPCA9ABdQRmBGYBhARtBG8BhQRyBHUBiAR9BH0BjAR/BIEBjQSJBI0BkASTBJMBlQSYBJgBlgScBJwBlwSfBJ8BmASqBKoBmQS8BL8BmgTFBMYBngTLBM0BoATQBNABowTWBNYBpATYBNgBpQUGBQgBpgUKBQoBqQUNBREBqgUVBRYBrwUYBRgBsQUaBRoBsgUdBR0BswUgBSEBtAUkBScBtgUrBS0BugU1BTUBvQU4BTgBvgU8BTwBvwU/BT8BwAVJBUkBwQVdBWIBwgVmBWcByAVsBW4BygVxBXEBzQV5BXkBzgYGBg8BzwYlBiUB2QYnBicB2gYrBiwB2wYuBjIB3QY7BkEB4gZIBkkB6QZMBkwB6wZWBlsB7AavBq8B8gaxBrEB8wazBrMB9Aa1BrUB9QbKBssB9gbYBtgB+AbfBuoB+QbsBu8CBQbyBvwCCQcHBwgCFAdeB2UCFgADAAAAAQAIAAEJtAEyAmoCcgJ4An4ChAKKApAClgKcAqICqAKuArQCugLAAsYCzALSAtgC3gLkAuoC8AL2AvwDAgMIAw4DFAMaAyADJgMsAzIDOAM+A0QDSgNQA1YDXANiA2gDbgN0A3oDgAOGA4wDkgOYA54DpAOqA7ADtgO8A8IDyAPOA9QD2gPgA+YD7APyA/gD/gQEBAoEEAQWBBwEIgQoBC4ENAQ6BEAERgRMBFIEWAReBGQEagRwBHYEfASCBIgEjgSUBJoHdgSgBKYErASyBLgEvgTEBMwE0gTYBN4E5ATqBPAE9gT8BQIFCAUOBRQFGgUgBSYFLAUyBTgFPgVEBUoFUAVWBVwFYgVoBW4FdAV6BYAFhgWMBZIFmAWeBaQFqgWwBbYFvAXCBcgFzgXUBdoF4AXmBewF9AX6BgAGBgYMBhIGGAYeBiQGKgYwBjYGPAZCBkgGTgZUBloGYAZmBmwGcgZ4Bn4GhAaKBpAGlgacBqIGqAauBrQGugbABsYGzAbSBtgG3gbkBuoG8Ab2BvwHAgcIBw4HFAcaByAHJgcsBzIHOgdAB0YHTAdSB1gHXgdkB2oHcAd2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AQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJATcCfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLdAt4D0QPSA9MD1APVA9YD1wPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPkA+UD5gPnA+gD6QPqA+sD7APtA+4D7wPwA/ED8gPzA/QD9QP2A/cD+AP5A/oD+wP8A/0D/gP/BAAEAQQCBAMEBAQFBAYEBwQIBAkECgQLBAwEDQQOBA8EEAQRBBIEEwQUBBUEFgQXBBgEGQQaBBsEHAQdBB4EHwQgBCEEIgQjBCQEJQQmBCcEKAQpBCoEKwQsBC0ELgQvBDAEMQQyBDMENAQ1BDYENwQ4BDkEOgQ7BDwEPQQ+BD8EQARBBEIEQwREBEUERgRHBEgESQRKBEsETARNBE4ETwRQBFEEUgRTBFQEVQRWBFcEWARZBFoEWwRcBF0EXgRfBGAEYQRiBGME4wTkBOUE5gTnBOgE6QTrBOoE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBZoFmwWcBZ0FngWfBaAFogWhBaMFpAWlBaYFpwWoBakFqgWrBawFrQWuBa8FsAWxBbIFswW0BbUFtgW3BbgFuQbdAAIAPQAEAB8AAAApACkAHAAvAEYAHQBJAFEANQBYAGkAPgBuAG4AUAB3AIMAUQCpAKkAXgC/AN4AXwDgAOQAfwDmAPUAhAGKAaUAlAG0AcwAsAHPAc8AyQH2Af4AygIuAi4A0wJIAk8A1AJpAm0A3AJvAnIA4QJ0An0A5QLbAtwA7wLfAvoA8QMJAyEBDQMkAywBJgMzAzsBLwM9A0YBOANRA1EBQgNUA18BQwOFA4UBTwObA7oBUAO8A8ABcAPCA9ABdQRmBGYBhARsBG8BhQRyBHUBiQR4BHgBjQR9BH0BjgR/BIIBjwSJBI0BkwSTBJMBmASYBJgBmQSqBKoBmgS8BL8BmwTFBMYBnwTLBM0BoQTQBNABpATWBNYBpQTYBNgBpgUGBQYBpwUMBQ8BqAUSBRUBrAUdBR0BsAUfBSEBsQUpBS0BtAU4BTgBuQVdBWIBugVmBWcBwAVsBW4BwgVxBXEBxQV5BXkBxgbYBtgBxwABAAAAAQAIAAIAWAApAd8B8AY7BwoHCwcMBw0HDgcPBxAHEQcSBxMHFAcVBxYHFwcYBxkHGgcbBxwHHQceBx8HIAchByIHIwckByUHJgcnB2YHZwdoB2kHagdrB2wHbQACAAkB3gHeAAAB7wHvAAEGJgYmAAIG3wbqAAMG7AbvAA8G8gb8ABMHBgcGAB4HCAcJAB8HXgdlACEAAQAAAAEACAACACQADwRkBGUEZARlBfwF/QX+Bf8GAAYBBgIGAwYEBgUGOQABAA8ABACEAYoCDAYGBgcGCAYJBgoGCwYMBg0GDgYPBiYAAA==) format("truetype")}@font-face{font-family:tick42-icons;font-style:normal;font-weight:400;src:url(data:font/ttf;base64,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) format("truetype")}[class*=" icon-"],[class^=icon-]{font-feature-settings:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:tick42-icons;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none}.tick42-custom-icon i{color:var(--t42-link-color)}.tick42-custom-icon img{display:block}.disabled i,.tick42-custom-icon.disabled i,.tick42-custom-icon:disabled i,i.disabled{color:var(--t42-content-color-disabled)}.icon-size-12 i{font-size:.75rem}.icon-size-12 i,.icon-size-12 img{height:.75rem;width:.75rem}.icon-size-14 i{font-size:.875rem}.icon-size-14 i,.icon-size-14 img{height:.875rem;width:.875rem}.icon-size-24 i{font-size:1.5rem}.icon-size-24 i,.icon-size-24 img{height:1.5rem;width:1.5rem}.icon-size-16 i,.icon-size-16 img{height:1rem;width:1rem}.icon-size-16 i{font-size:1rem}.icon-size-32 i,.icon-size-32 img{height:2rem;width:2rem}.icon-size-32 i{font-size:2rem}.icon-size-48 i,.icon-size-48 img{height:3rem;width:3rem}.icon-size-48 i{font-size:3rem}.icon-size-64 i,.icon-size-64 img{height:4rem;width:4rem}.icon-size-64 i{font-size:4rem}.icon-size-80 i,.icon-size-80 img{height:5rem;width:5rem}.icon-size-80 i{font-size:5rem}.icon-size-96 i,.icon-size-96 img{height:6rem;width:6rem}.icon-size-96 i{font-size:6rem}.icon-size-112 i,.icon-size-112 img{height:7rem;width:7rem}.icon-size-112 i{font-size:7rem}.icon-size-128 i,.icon-size-128 img{height:8rem;width:8rem}.icon-size-128 i{font-size:8rem}.icon-primary i:before{color:#1c89ea}.icon-secondary i:before{color:#616161}.icon-success i:before{color:#43a047}.icon-info i:before{color:#469eb9}.icon-warning i:before{color:#f9a825}.icon-danger i:before{color:#ff511f}.icon-dark i:before,.icon-light i:before{color:#616161}.icon-dev-tools:before{content:"\e901"}.icon-interop:before{content:"\e900"}.icon-mail:before{content:"\e800"}.icon-attention:before{content:"\e801"}.icon-print:before{content:"\e802"}.icon-picture:before{content:"\e803"}.icon-thumbs-up:before{content:"\e804"}.icon-thumbs-down:before{content:"\e805"}.icon-lock:before{content:"\e806"}.icon-globe:before{content:"\e807"}.icon-calendar:before{content:"\e808"}.icon-location:before{content:"\e809"}.icon-briefcase:before{content:"\e80a"}.icon-export:before{content:"\e80b"}.icon-play:before{content:"\e80c"}.icon-stop:before{content:"\e80d"}.icon-record:before{content:"\e80e"}.icon-pause:before{content:"\e80f"}.icon-to-end:before{content:"\e810"}.icon-to-start:before{content:"\e811"}.icon-check:before{content:"\e812"}.icon-cancel:before{content:"\e813"}.icon-fast-forward:before{content:"\e814"}.icon-fast-backward:before{content:"\e815"}.icon-attention-circled:before{content:"\e816"}.icon-bell:before{content:"\e817"}.icon-chart-bar:before{content:"\e818"}.icon-phone:before{content:"\e819"}.icon-doc-add:before{content:"\e81a"}.icon-layout:before{content:"\e81b"}.icon-dot:before{content:"\e81c"}.icon-dot-2:before{content:"\e81d"}.icon-dot-3:before{content:"\e81e"}.icon-resize-full-1:before{content:"\e81f"}.icon-resize-small-1:before{content:"\e820"}.icon-checkbox:before{content:"\e821"}.icon-cancel-circled:before{content:"\e822"}.icon-03-context-viewer:before{content:"\e823"}.icon-volume-off-1:before{content:"\e824"}.icon-volume:before{content:"\e825"}.icon-headphones-1:before{content:"\e826"}.icon-performance-report:before{content:"\e827"}.icon-pause-1:before{content:"\e828"}.icon-volume-up-1:before{content:"\e829"}.icon-volume-down-1:before{content:"\e82a"}.icon-trash-empty:before{content:"\e839"}.icon-resize-small:before{content:"\e83b"}.icon-resize-full:before{content:"\e83c"}.icon-doc:before{content:"\e83d"}.icon-cog:before{content:"\e83e"}.icon-wrench:before{content:"\e83f"}.icon-resize-vertical:before{content:"\e840"}.icon-resize-horizontal:before{content:"\e841"}.icon-edit:before{content:"\e842"}.icon-pencil-1:before{content:"\e843"}.icon-cw-2:before{content:"\e844"}.icon-ccw-1:before{content:"\e845"}.icon-arrows-cw-1:before{content:"\e847"}.icon-th-large:before{content:"\e848"}.icon-th:before{content:"\e849"}.icon-spin5:before{content:"\e84a"}.icon-spin6:before{content:"\e84b"}.icon-spin4:before{content:"\e84c"}.icon-spin3:before{content:"\e84d"}.icon-spin2:before{content:"\e84e"}.icon-spin1:before{content:"\e84f"}.icon-pin:before{content:"\e850"}.icon-trading-controls:before{content:"\e856"}.icon-icon-coverage:before{content:"\e857"}.icon-taxes:before{content:"\e858"}.icon-credit:before{content:"\e859"}.icon-checkbox-checked:before{content:"\e85a"}.icon-checkbox-indeterminate:before{content:"\e85b"}.icon-radio:before{content:"\e85c"}.icon-radio-choose:before{content:"\e85d"}.icon-arrow-up-down:before{content:"\e85e"}.icon-arrow-double-left:before{content:"\e85f"}.icon-arrow-double-right:before{content:"\e860"}.icon-floppy:before{content:"\e861"}.icon-logout:before{content:"\e862"}.icon-mail-1:before{content:"\e864"}.icon-search-1:before{content:"\e865"}.icon-plus-1:before{content:"\e866"}.icon-minus-1:before{content:"\e867"}.icon-cancel-1:before{content:"\e868"}.icon-ok:before{content:"\e869"}.icon-th-list:before{content:"\e86a"}.icon-help-circled:before{content:"\e86b"}.icon-info-circled:before{content:"\e86c"}.icon-home:before{content:"\e86d"}.icon-link-1:before{content:"\e86e"}.icon-attach-1:before{content:"\e86f"}.icon-lock-open-1:before{content:"\e870"}.icon-eye:before{content:"\e871"}.icon-eye-off:before{content:"\e872"}.icon-tag:before{content:"\e873"}.icon-tags:before{content:"\e874"}.icon-bookmark:before{content:"\e875"}.icon-download-1:before{content:"\e876"}.icon-upload-1:before{content:"\e877"}.icon-forward-1:before{content:"\e878"}.icon-down-dir:before{content:"\e879"}.icon-up-dir:before{content:"\e87a"}.icon-left-dir:before{content:"\e87b"}.icon-right-dir:before{content:"\e87c"}.icon-left-open-1:before{content:"\e87d"}.icon-down-open-1:before{content:"\e87e"}.icon-right-open-1:before{content:"\e87f"}.icon-up-open-1:before{content:"\e880"}.icon-down-big:before{content:"\e881"}.icon-left-big:before{content:"\e882"}.icon-right-big:before{content:"\e883"}.icon-up-big:before{content:"\e884"}.icon-asterisk:before{content:"\e885"}.icon-check-1:before{content:"\e886"}.icon-tick42-icon-monochrome:before{content:"\e887"}.icon-task-manager:before{content:"\e888"}.icon-context-viewer:before{content:"\e889"}.icon-help-2:before{content:"\e88a"}.icon-star-empty-1:before{content:"\e88b"}.icon-star-full:before{content:"\e902"}.icon-move:before{content:"\f047"}.icon-link-ext:before{content:"\f08e"}.icon-check-empty:before{content:"\f096"}.icon-bookmark-empty:before{content:"\f097"}.icon-filter:before{content:"\f0b0"}.icon-resize-full-alt:before{content:"\f0b2"}.icon-docs:before{content:"\f0c5"}.icon-menu-1:before{content:"\f0c9"}.icon-table:before{content:"\f0ce"}.icon-columns:before{content:"\f0db"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-mail-alt:before{content:"\f0e0"}.icon-sitemap:before{content:"\f0e8"}.icon-paste:before{content:"\f0ea"}.icon-exchange:before{content:"\f0ec"}.icon-download-cloud:before{content:"\f0ed"}.icon-upload-cloud:before{content:"\f0ee"}.icon-suitcase-1:before{content:"\f0f2"}.icon-bell-alt:before{content:"\f0f3"}.icon-doc-text-1:before{content:"\f0f6"}.icon-plus-squared:before{content:"\f0fe"}.icon-angle-double-left:before{content:"\f100"}.icon-angle-double-right:before{content:"\f101"}.icon-angle-double-up:before{content:"\f102"}.icon-angle-double-down:before{content:"\f103"}.icon-angle-left:before{content:"\f104"}.icon-angle-right:before{content:"\f105"}.icon-angle-up:before{content:"\f106"}.icon-angle-down:before{content:"\f107"}.icon-laptop:before{content:"\f109"}.icon-circle-empty:before{content:"\f10c"}.icon-quote-left:before{content:"\f10d"}.icon-quote-right:before{content:"\f10e"}.icon-spinner:before{content:"\f110"}.icon-circle:before{content:"\f111"}.icon-reply-1:before{content:"\f112"}.icon-folder-empty:before{content:"\f114"}.icon-folder-open-empty:before{content:"\f115"}.icon-terminal:before{content:"\f120"}.icon-code:before{content:"\f121"}.icon-reply-all-1:before{content:"\f122"}.icon-direction:before{content:"\f124"}.icon-fork:before{content:"\f126"}.icon-unlink:before{content:"\f127"}.icon-help:before{content:"\f128"}.icon-info:before{content:"\f129"}.icon-attention-alt:before{content:"\f12a"}.icon-mic:before{content:"\f130"}.icon-mute:before{content:"\f131"}.icon-calendar-empty:before{content:"\f133"}.icon-lock-open-alt:before{content:"\f13e"}.icon-ellipsis:before{content:"\f141"}.icon-ellipsis-vert:before{content:"\f142"}.icon-minus-squared:before{content:"\f146"}.icon-ok-squared:before{content:"\f14a"}.icon-link-ext-alt:before{content:"\f14c"}.icon-expand-right:before{content:"\f152"}.icon-euro:before{content:"\f153"}.icon-dollar:before{content:"\f155"}.icon-doc-inv:before{content:"\f15b"}.icon-sort-name-up:before{content:"\f15d"}.icon-sort-name-down:before{content:"\f15e"}.icon-sort-alt-up:before{content:"\f160"}.icon-sort-alt-down:before{content:"\f161"}.icon-sort-number-up:before{content:"\f162"}.icon-sort-number-down:before{content:"\f163"}.icon-down:before{content:"\f175"}.icon-up:before{content:"\f176"}.icon-left:before{content:"\f177"}.icon-right:before{content:"\f178"}.icon-cube:before{content:"\f1b2"}.icon-cubes:before{content:"\f1b3"}.icon-database:before{content:"\f1c0"}.icon-file-pdf:before{content:"\f1c1"}.icon-file-word:before{content:"\f1c2"}.icon-file-excel:before{content:"\f1c3"}.icon-file-powerpoint:before{content:"\f1c4"}.icon-file-image:before{content:"\f1c5"}.icon-file-archive:before{content:"\f1c6"}.icon-file-audio:before{content:"\f1c7"}.icon-file-video:before{content:"\f1c8"}.icon-file-code:before{content:"\f1c9"}.icon-circle-thin:before{content:"\f1db"}.icon-sliders:before{content:"\f1de"}.icon-share:before{content:"\f1e0"}.icon-wifi:before{content:"\f1eb"}.icon-bell-off:before{content:"\f1f6"}.icon-bell-off-empty:before{content:"\f1f7"}.icon-copyright:before{content:"\f1f9"}.icon-chart-area:before{content:"\f1fe"}.icon-chart-line:before{content:"\f201"}.icon-toggle-off:before{content:"\f204"}.icon-toggle-on:before{content:"\f205"}.icon-user-plus:before{content:"\f234"}.icon-user-times:before{content:"\f235"}.icon-clone:before{content:"\f24d"}.icon-hourglass-o:before{content:"\f250"}.icon-hourglass-1:before{content:"\f251"}.icon-hourglass-2:before{content:"\f252"}.icon-hourglass-3:before{content:"\f253"}.icon-calendar-plus-o:before{content:"\f271"}.icon-calendar-minus-o:before{content:"\f272"}.icon-calendar-times-o:before{content:"\f273"}.icon-calendar-check-o:before{content:"\f274"}.icon-hashtag:before{content:"\f292"}.icon-low-vision:before{content:"\f2a8"}.icon-envelope-open-o:before{content:"\f2b7"}.icon-address-book-o:before{content:"\f2ba"}.icon-user-o:before{content:"\f2c0"}.icon-window-maximize:before{content:"\f2d0"}.icon-window-minimize:before{content:"\f2d1"}.icon-window-restore:before{content:"\f2d2"}.icon-window-close:before{content:"\f2d3"}.icon-window-close-o:before{content:"\f2d4"}.icon-app:before{content:"\e903"}.icon-download-arrow:before{content:"\e904"}.icon-logo:before{content:"\e905"}.icon-feedback:before{content:"\e906"}.icon-action:before{content:"\e907"}.icon-swimlane:before{content:"\e908"}div.ag-dnd-ghost{background-color:#1c89ea;background-color:var(--primary);border-color:#0000;border-radius:.25rem;color:#fff;color:var(--white);cursor:default;font-family:inherit;font-size:.75rem;line-height:inherit}div .ag-dnd-ghost-icon{display:flex;float:none;padding:0 .25rem 0 0}div .ag-dnd-ghost-icon .ag-icon{background-color:#fff;background-color:var(--white)}.ag-tick42{padding-top:0}.ag-tick42 a{border-bottom:.063rem dashed #616161;border-bottom:.063rem dashed var(--dark);color:var(--t42-content-color);transition-duration:.25s;transition-property:border;transition-timing-function:cubic-bezier(.45,0,.15,1)}.ag-tick42 a:hover{text-decoration:none}.ag-tick42 .ag-filter-body{margin:0}.ag-tick42 input{background-color:var(--t42-input-bg);border:var(--t42-border);color:var(--t42-content-color);line-height:2rem;padding:0 .5rem;transition-duration:.25s;transition-property:border;transition-timing-function:cubic-bezier(.45,0,.15,1)}.ag-tick42 input:focus{border-color:#1c89ea;border-color:var(--primary);outline:0}.ag-tick42 input.ag-column-name-filter{margin-left:.5rem}.ag-tick42 .ag-input-wrapper{padding:.25rem}.ag-tick42 .ag-input-wrapper.ag-checkbox-input-wrapper{padding:0}.ag-tick42 .ag-cell-wrapper.ag-row-group{align-items:center}.ag-tick42 .ag-cell{border-bottom:var(--t42-border);line-height:1.875rem;padding:0 .25rem;text-overflow:ellipsis;white-space:nowrap}.ag-tick42 .ag-cell .btn,.ag-tick42 .ag-cell .btn-group-lg>.btn,.ag-tick42 .ag-cell .btn-group-sm>.btn,.ag-tick42 .ag-cell .btn-lg,.ag-tick42 .ag-cell .btn-sm{line-height:1.25rem}.ag-tick42 .ag-cell .btn-icon i{position:relative;top:.0625rem}.ag-tick42 .ag-cell:focus{outline:1px solid #1c89ea;outline:1px solid var(--primary)}.ag-tick42 .ag-cell .dropdown-toggle{border:0;height:20px;line-height:22px;margin-top:-3px;padding:0;width:20px}.ag-tick42 .ag-cell .dropdown-toggle:after{background-color:initial;content:""}.ag-tick42 .ag-row:before{background-color:#1c89ea;background-color:var(--primary);bottom:0;content:"";left:0;position:absolute;top:0;transition-duration:.25s;transition-property:width;transition-timing-function:cubic-bezier(.45,0,.15,1);width:0;z-index:1}.ag-tick42 .ag-row.ag-row-selected{background-color:var(--t42-color-opacity-10);color:var(--t42-link-color)}.ag-tick42 .ag-row.ag-row-selected .ag-icon{color:var(--t42-link-color)}.ag-tick42 .ag-pinned-left-cols-container,.ag-tick42 .ag-pinned-left-header,.ag-tick42 .ag-pinned-right-cols-container,.ag-tick42 .ag-pinned-right-header{background-color:Rgb(var(--t42-bg-mid))}.ag-tick42 .ag-pinned-left-cols-container .ag-row-selected:before,.ag-tick42 .ag-pinned-left-cols-container.ag-hidden+.ag-center-cols-clipper .ag-row-selected:before{width:2px}.ag-tick42 .ag-row-hover{background-color:var(--t42-color-opacity-10)}.ag-tick42 .ag-row-hover .ag-cell{color:var(--t42-link-color)}.ag-tick42 .ag-row-hover .ag-loading .ag-icon-loading:after{background:Rgb(var(--t42-bg-light))}.ag-tick42 .ag-row-hover a{border-bottom-color:var(--t42-content-color);color:var(--t42-link-color)}.ag-tick42 .ag-row-hover a:hover{border-bottom-style:solid}.ag-tick42 .ag-header-row:last-of-type{border-bottom:var(--t42-border)}.ag-tick42 .ag-header-cell,.ag-tick42 .ag-header-group-cell{border-left:var(--t42-border);border-top:var(--t42-border);color:Hsl(var(--t42-content-color-base),calc(var(--t42-content-color-l) - 20%));padding:0 .25rem}.ag-tick42 .ag-header-cell:first-of-type,.ag-tick42 .ag-header-group-cell:first-of-type{border-left:0}.ag-tick42 .ag-header-cell .ag-header-cell-label,.ag-tick42 .ag-header-cell .ag-header-group-cell-label,.ag-tick42 .ag-header-group-cell .ag-header-cell-label,.ag-tick42 .ag-header-group-cell .ag-header-group-cell-label{font-size:83.3%;font-weight:400;line-height:1.875rem;text-transform:uppercase}.ag-tick42 .ag-header-cell .ag-header-select-all,.ag-tick42 .ag-header-group-cell .ag-header-select-all{margin-right:.5rem}.ag-tick42 .ag-header-cell-moving{background-color:Hsl(var(--t42-bg-light-base),calc(var(--t42-bg-light-l) + 5%))}.ag-tick42 .ag-cell-inline-editing{padding-top:0}.ag-tick42 .ag-cell-edit-input{border-bottom:0;border-radius:0;border-top:0}.ag-tick42 .ag-icon{font-family:inherit}.ag-tick42 .ag-icon:before{content:""}.ag-tick42 .ag-react-container .btn-icon{margin-bottom:.125rem;padding:0 .5rem}.ag-tick42 .ag-tabs-header{border-bottom:var(--t42-border);border-bottom-width:.063rem;display:flex;height:1.875rem}.ag-tick42 .ag-tabs-header .ag-tab{align-items:center;color:#1c89ea;color:var(--primary);cursor:pointer;display:flex;height:1.875rem;justify-content:center;width:1.875rem}.ag-tick42 .ag-tabs-header .ag-tab.ag-tab-selected{background-color:#1c89ea;background-color:var(--primary)}.ag-tick42 .ag-tabs-header .ag-tab.ag-tab-selected .ag-icon{background-color:#fff;background-color:var(--white)}.ag-tick42 .ag-tabs-body{max-height:280px;overflow:auto}.ag-tick42 .ag-menu,.ag-tick42 .ag-tool-panel{-webkit-backdrop-filter:var(--backdrop-filter);backdrop-filter:var(--backdrop-filter);background-color:rgba(var(--t42-bg-light),.75);border:var(--t42-border);border-radius:0;box-shadow:var(--t42-shadow);overflow:visible;overflow:initial;z-index:1040}.ag-tick42 .ag-menu .ag-column-select-column,.ag-tick42 .ag-menu .ag-column-select-column-group,.ag-tick42 .ag-tool-panel .ag-column-select-column,.ag-tick42 .ag-tool-panel .ag-column-select-column-group{align-items:center;cursor:pointer;display:flex;line-height:2rem;margin-left:0}.ag-tick42 .ag-menu .ag-column-select-column .ag-column-select-checkbox:hover,.ag-tick42 .ag-menu .ag-column-select-column-group .ag-column-select-checkbox:hover,.ag-tick42 .ag-tool-panel .ag-column-select-column .ag-column-select-checkbox:hover,.ag-tick42 .ag-tool-panel .ag-column-select-column-group .ag-column-select-checkbox:hover{color:var(--t42-link-color)}.ag-tick42 .ag-menu .ag-column-select-column-group:hover,.ag-tick42 .ag-menu .ag-column-select-column:hover,.ag-tick42 .ag-tool-panel .ag-column-select-column-group:hover,.ag-tick42 .ag-tool-panel .ag-column-select-column:hover{background-color:var(--t42-color-opacity-10);color:Hsl(var(--t42-content--base),100%)}.ag-tick42 .ag-menu .ag-column-select-header,.ag-tick42 .ag-tool-panel .ag-column-select-header{padding:.5rem}.ag-tick42 .ag-menu .ag-column-select-column-label,.ag-tick42 .ag-tool-panel .ag-column-select-column-label{margin-left:.25rem}.ag-tick42 .ag-tab-body{max-height:220px;overflow:auto}.ag-tick42 .ag-tab-body .ag-set-filter-list{height:9rem}.ag-tick42 .ag-tab-body input{border:var(--t42-border)}.ag-tick42 .ag-tab-body input:focus{border-color:#1c89ea;border-color:var(--primary)}.ag-tick42 .ag-menu-option{cursor:pointer;line-height:2rem;transition-duration:.25s;transition-property:color;transition-timing-function:cubic-bezier(.45,0,.15,1)}.ag-tick42 .ag-menu-option .ag-menu-option-icon{color:var(--t42-content-color)}.ag-tick42 .ag-menu-option .ag-menu-option-icon,.ag-tick42 .ag-menu-option .ag-menu-option-popup-pointer{color:var(--t42-content-color);text-align:center;width:2rem}.ag-tick42 .ag-menu-option .ag-menu-option-icon.ag-menu-option-popup-pointer,.ag-tick42 .ag-menu-option .ag-menu-option-icon.ag-menu-option-popup-pointer .ag-icon,.ag-tick42 .ag-menu-option .ag-menu-option-icon:hover,.ag-tick42 .ag-menu-option .ag-menu-option-icon:hover .ag-icon,.ag-tick42 .ag-menu-option .ag-menu-option-popup-pointer.ag-menu-option-popup-pointer,.ag-tick42 .ag-menu-option .ag-menu-option-popup-pointer.ag-menu-option-popup-pointer .ag-icon,.ag-tick42 .ag-menu-option .ag-menu-option-popup-pointer:hover,.ag-tick42 .ag-menu-option .ag-menu-option-popup-pointer:hover .ag-icon{color:var(--t42-content-color)}.ag-tick42 .ag-menu-option.ag-menu-option-active{background-color:var(--t42-color-opacity-10);color:var(--t42-link-color)}.ag-tick42 .ag-menu-option.ag-menu-option-active .ag-icon{color:var(--t42-content-color)}.ag-tick42 .ag-menu-separator{border-bottom:var(--t42-border);border-bottom-color:var(--t42-color-opacity-10)}.ag-tick42 .ag-menu-column-select-wrapper,.ag-tick42 .ag-primary-cols-list-panel{height:auto}.ag-tick42 .ag-tool-panel .ag-pivot-mode{padding-top:.5rem}.ag-tick42 .ag-column-tool-panel-column{padding:0 .25rem}.ag-tick42 .ag-column-tool-panel-column .ag-icon{margin:0 .25rem}.ag-tick42 .ag-column-tool-panel-column-label,.ag-tick42 span.ag-column-tool-panel-column-group{overflow:hidden;padding-left:.25rem;text-overflow:ellipsis;white-space:nowrap}.ag-tick42 .ag-column-tool-panel-column-group .ag-icon{margin:0 .25rem 0 0}.ag-tick42 .ag-root+.ag-tool-panel{box-shadow:none}.ag-tick42 .ag-row-group-leaf-indent{margin-left:24px}.ag-tick42 .ag-group-contracted,.ag-tick42 .ag-group-expanded{align-items:center;display:flex;height:100%;margin-right:.5rem;min-width:.75rem}.ag-tick42 .ag-group-value .ag-react-container{display:inline;font-size:87.5%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ag-tick42 .ag-popup-editor{box-shadow:var(--t42-shadow)}.ag-tick42 .ag-rich-select{background-color:Rgb(var(--t42-bg-light),1);border:var(--t42-border);border-radius:0;overflow-y:auto}.ag-tick42 .ag-rich-select-row{padding-left:.75rem}.ag-tick42 .ag-rich-select-row-selected{background:var(--t42-color-opacity-10)}.ag-tick42 .ag-rich-select-value{border-bottom:var(--t42-border);height:2rem;line-height:2rem;padding-left:.75rem;position:relative}.ag-tick42 .ag-rich-select-value:before{background-color:#1c89ea;background-color:var(--primary);bottom:0;content:"";left:0;position:absolute;top:0;width:3px}.ag-tick42 .icon-window-maximize:before,.ag-tick42 .icon-window-minimize:before,.ag-tick42 .icon-window-ok:before{font-size:.813rem}.ag-tick42 .ag-column-drop{border-top:var(--t42-border)}.ag-tick42 .ag-column-drop.ag-column-drop-horizontal{display:flex;height:1.875rem}.ag-tick42 .ag-column-drop.ag-column-drop-horizontal div{align-items:center;display:flex}.ag-tick42 .ag-column-drop.ag-column-drop-horizontal div:first-of-type{margin-right:.25rem}.ag-tick42 .ag-column-drop .ag-column-drop-empty-message{align-self:center}.ag-tick42 .ag-column-drop .ag-column-drop-cell{background-color:Rgb(var(--t42-bg-light));border-radius:.25rem;display:flex;height:1.125rem;margin:.125rem .25rem;padding:0 .125rem 0 .25rem}.ag-tick42 .ag-column-drop .ag-column-drop-cell .ag-column-drop-cell-text{line-height:1.125rem;padding:0 .25rem}.ag-tick42 .ag-column-drop.ag-column-drop-vertical div{justify-content:start}.ag-tick42 .ag-column-drop.ag-column-drop-vertical .ag-icon-group{margin:0 .25rem}.ag-tick42 .ag-right-arrow{background-color:var(--t42-content-color);-webkit-mask-image:var(--t42-select-indicator);overflow:hidden;padding:0 .25rem;text-indent:-999px;transform:rotate(-90deg);width:1.5rem}.ag-tick42 .ag-right-arrow:before{position:absolute;text-indent:999px}.ag-tick42 .ag-group-checkbox{align-items:center;display:flex;height:100%;margin-right:.5rem;width:1rem}.ag-tick42 .ag-group-checkbox .ag-icon{height:.875rem;width:.875rem}.ag-tick42 .ag-group-checkbox:empty{width:auto}.ag-tick42 .ag-ltr .ag-toolpanel-indent-1{padding-left:1rem}.ag-tick42 .ag-ltr .ag-toolpanel-indent-2{padding-left:2rem}.ag-tick42 .ag-ltr .ag-toolpanel-indent-3{padding-left:3rem}.ag-tick42 .ag-ltr .ag-row-group-indent-1{padding-left:1.45rem}.ag-tick42 .ag-ltr .ag-row-group-indent-2{padding-left:2.9rem}.ag-tick42 .ag-ltr .ag-row-group-indent-3{padding-left:4.35rem}.ag-menu .ag-filter-checkbox{min-width:2rem}.ag-menu .ag-icon-checkbox-checked:after{height:.625rem;width:.625rem}.ag-menu .ag-column-group-icons{width:1.5rem}.ag-menu .ag-labeled.ag-label-align-right>div{margin-left:.25rem}.ag-filter-panel{width:100%}.loading-filter{-webkit-backdrop-filter:var(--backdrop-filter);backdrop-filter:var(--backdrop-filter);background-color:rgba(var(--t42-bg-light),.75)}#selectAllContainer,.ag-set-filter-item{align-items:center;cursor:pointer;display:flex}#selectAllContainer .ag-filter-value,#selectAllContainer .ag-set-filter-item-value,.ag-set-filter-item .ag-filter-value,.ag-set-filter-item .ag-set-filter-item-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#selectAllContainer .ag-set-filter-item-value,.ag-set-filter-item .ag-set-filter-item-value{margin-left:.25rem}.ag-filter-checkbox{color:#1c89ea;color:var(--primary);justify-content:center;min-width:2rem}.ag-filter-header-container:hover label,.ag-set-filter-item:hover{background-color:var(--t42-color-opacity-10);color:var(--t42-link-color)}.ag-filter-header-container:hover label .ag-icon,.ag-set-filter-item:hover .ag-icon{color:var(--t42-link-color)}.ag-input-text-wrapper{padding:.25rem .25rem 0}.ag-primary-cols-header-panel{align-items:center;padding:.25rem .25rem .25rem 0}.ag-primary-cols-header-panel div:first-child{width:1.25rem}.ag-primary-cols-header-panel div:nth-child(2){margin-right:.25rem;width:1rem}.ag-filter-toolpanel-header{display:flex}.ag-filter-toolpanel-header .ag-header-cell-text{padding:0 .25rem}.ag-filter-condition{justify-content:space-evenly;padding:.5rem 0}.ag-filter-condition .ag-labeled.ag-label-align-right div{margin-left:0}.ag-radio-button-label{color:var(--t42-content-color-muted);cursor:pointer;position:relative;-webkit-user-select:none;user-select:none}.ag-radio-button-input-wrapper:before{border:.0625rem solid var(--t42-content-color-muted);cursor:pointer;height:.875rem;left:-1.125rem;pointer-events:all;width:.875rem}.ag-radio-button-input-wrapper:after,.ag-radio-button-input-wrapper:before{border-radius:50%;content:"";display:block;position:absolute;transition-duration:.25s;transition-property:background-color,border;transition-timing-function:cubic-bezier(.45,0,.15,1)}.ag-radio-button-input-wrapper:after{background-image:none;color:#fff;color:var(--white);height:.375rem;left:-.875rem;opacity:0;transform:scale(0);width:.375rem}.ag-radio-button-input-wrapper:focus{border-color:#1c89ea;border-color:var(--primary)}.ag-radio-button-input-wrapper.ag-checked:before{background-color:#1c89ea;background-color:var(--primary);border-color:var(--t42-color-opacity-30)}.ag-radio-button-input-wrapper.ag-checked:after{background-color:#fff;background-color:var(--white);opacity:1;transform:scale(1)}.ag-list{-webkit-backdrop-filter:var(--backdrop-filter);backdrop-filter:var(--backdrop-filter);background-color:rgba(var(--t42-bg-mid),.7);z-index:1100}.ag-list .ag-list-item{cursor:pointer;line-height:2rem;padding:0 .5rem}.ag-list .ag-list-item:hover{background-color:Rgb(var(--t42-bg-light))}.ag-picker-field-wrapper{cursor:pointer;height:2rem;line-height:2rem;padding:0 .5rem}.ag-column-select-header-icon{align-items:center;display:flex}.ag-column-select-header .ag-text-field-input{height:1.875rem;line-height:1.875rem}.ag-filter-list-panel .ag-filter-toolpanel-expand{margin:0 .25rem}.ag-filter-list-panel .ag-filter-toolpanel-group-container,.ag-filter-list-panel .ag-filter-toolpanel-instance-filter{padding-left:.25rem}.ag-side-bar{position:relative}.ag-side-bar .ag-side-bar-right .ag-tool-panel-horizontal-resize{left:-.375rem}.ag-side-bar>div:first-child{background-color:var(--t42-color-opacity-10);border:var(--t42-border)}.ag-side-bar .ag-pivot-mode-select{border-bottom:var(--t42-border);display:flex;padding:.25rem}.ag-side-bar .ag-pivot-mode-select label{margin:0 0 0 .5rem}.ag-side-bar .ag-pivot-mode-select .ag-checkbox-label{padding-left:.25rem}.ag-side-bar .ag-side-buttons div.ag-side-button button{background-color:initial;border:.0625rem solid #0000;color:Hsl(var(--t42-content-color-base),100%);height:1rem;padding:0;width:1rem}.ag-side-bar .ag-side-buttons div.ag-side-button button:hover{background-color:Rgb(var(--t42-bg-dark));color:Hsl(var(--t42-content-color-base),100%)}.ag-side-bar .ag-side-buttons div.ag-side-button button>span{display:none}.ag-side-bar .ag-side-buttons div.ag-side-button.ag-selected button{background-color:#1c89ea;background-color:var(--primary);border-color:var(--t42-color-opacity-30)}.ag-side-bar .ag-side-buttons div.ag-side-button.ag-selected button [class*=ag-icon-]{background-color:#fff;background-color:var(--white)}.ag-side-bar .ag-icon-checkbox-checked:after{height:.625rem;width:.625rem}.ag-side-bar .ag-column-panel,.ag-side-bar .ag-filter-panel{padding-left:.25rem}.ag-side-bar .ag-filter-checkbox{margin-right:.25rem}.ag-tool-panel-wrapper{border-bottom:var(--t42-border);border-top:var(--t42-border)}.ag-tool-panel-wrapper .ag-set-filter-list{height:auto;width:100%}.ag-tool-panel-wrapper .ag-column-select-checkbox,.ag-tool-panel-wrapper .ag-column-select-header-checkbox{margin:0 .25rem}.ag-tool-panel-horizontal-resize{background-color:var(--t42-color-opacity-10);top:auto;width:.188rem}.ag-column-drop-list,.ag-column-drop-vertical,.ag-column-panel,.ag-column-select-panel{display:block;max-height:none;min-height:0;min-height:auto;overflow:visible}.ag-column-drop-list input,.ag-column-drop-vertical input,.ag-column-panel input,.ag-column-select-panel input{border:var(--t42-border)}.ag-column-drop-list input:focus,.ag-column-drop-vertical input:focus,.ag-column-panel input:focus,.ag-column-select-panel input:focus{border-color:#1c89ea;border-color:var(--primary)}.icon-check-1,.icon-check-empty,.icon-resize-horizontal,[class*=ag-icon-]{background-color:var(--t42-content-color);background-image:none;cursor:pointer;display:block;height:.75rem;margin:0 auto;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;transition-duration:.25s;transition-property:color,transform;transition-timing-function:cubic-bezier(.45,0,.15,1);width:.75rem}.icon-check-1:hover,.icon-check-empty:hover,.icon-resize-horizontal:hover,[class*=ag-icon-]:hover{background-color:var(--t42-link-color)}.ag-menu-option-disabled{color:var(--t42-content-color-disabled)}.ag-menu-option-disabled .ag-icon{background-color:var(--t42-content-color-disabled)}.ag-icon-menu{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M475.4 384v36.4c0 5.1-1.7 9.4-5.1 12.8s-7.9 5.3-13.3 5.6H55c-5.1 0-9.4-1.9-12.8-5.6-3.4-3.8-5.3-8-5.6-12.8V384c0-5.1 1.9-9.4 5.6-12.8 3.8-3.4 8-5.3 12.8-5.6h401.9c5.1 0 9.6 1.9 13.3 5.6 3.8 3.8 5.5 8 5.2 12.8zm0-146.4v36.9c0 4.8-1.7 9-5.1 12.8s-7.9 5.5-13.3 5.1H55c-5.1 0-9.4-1.7-12.8-5.1s-5.3-7.7-5.6-12.8v-36.9c0-4.8 1.9-9 5.6-12.8 3.8-3.8 8-5.5 12.8-5.1h401.9c5.1 0 9.6 1.7 13.3 5.1s5.5 7.7 5.2 12.8zm0-145.9V128c0 4.8-1.7 9-5.1 12.8s-7.9 5.6-13.3 5.6H55c-5.1 0-9.4-1.9-12.8-5.6s-5.3-8-5.6-12.8V91.7c0-5.1 1.9-9.6 5.6-13.3 3.8-3.8 8-5.5 12.8-5.1h401.9c5.1 0 9.6 1.7 13.3 5.1s5.5 7.8 5.2 13.3z'/%3E%3C/svg%3E")}.ag-header-icon{margin-left:.125rem}.ag-header-icon .ag-icon-menu{line-height:1.875rem}.ag-icon-asc{transform:rotate(180deg)}.ag-icon-asc,.ag-icon-desc{-webkit-mask-image:var(--t42-select-indicator)}.ag-icon-desc{margin-bottom:2px}.ag-icon-filter{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M14.9 1.4c.1.3.1.5-.1.7L9.9 7v7.4c0 .3-.1.5-.4.6h-.2c-.2 0-.3-.1-.4-.2l-2.5-2.5c-.1-.1-.2-.3-.2-.4V7l-5-4.9c-.2-.2-.3-.4-.1-.7.1-.3.3-.4.6-.4h12.7c.2 0 .4.1.5.4z'/%3E%3C/svg%3E")}.ag-icon-none{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='m1 6 4-4q1-1 2 0l4 4q0 1-1 1H2Q1 7 1 6m1 2Q1 8 1 9l4 4q1 1 2 0l4-4q0-1-1-1H2'/%3E%3C/svg%3E")}.ag-checkbox-input-wrapper,.ag-icon-checkbox-checked,.ag-icon-checkbox-checked-readonly,.ag-icon-checkbox-indeterminate,.ag-icon-checkbox-indeterminate-readonly,.ag-icon-checkbox-unchecked,.ag-icon-checkbox-unchecked-readonly,.ag-icon-indeterminate,.ag-toggle-button-input-wrapper,.icon-check-1,.icon-check-empty{background-color:initial;color:var(--t42-content-color-muted);cursor:pointer;padding:0;position:relative;-webkit-user-select:none;user-select:none}.ag-checkbox-input-wrapper:before,.ag-icon-checkbox-checked-readonly:before,.ag-icon-checkbox-checked:before,.ag-icon-checkbox-indeterminate-readonly:before,.ag-icon-checkbox-indeterminate:before,.ag-icon-checkbox-unchecked-readonly:before,.ag-icon-checkbox-unchecked:before,.ag-icon-indeterminate:before,.ag-toggle-button-input-wrapper:before,.icon-check-1:before,.icon-check-empty:before{border:var(--t42-border);border-color:var(--t42-content-color);content:"";cursor:pointer;display:block;height:100%;pointer-events:all;transition-duration:.25s;transition-property:background-color,border-color;transition-timing-function:cubic-bezier(.45,0,.15,1);width:100%}.ag-checkbox-input-wrapper:focus,.ag-icon-checkbox-checked-readonly:focus,.ag-icon-checkbox-checked:focus,.ag-icon-checkbox-indeterminate-readonly:focus,.ag-icon-checkbox-indeterminate:focus,.ag-icon-checkbox-unchecked-readonly:focus,.ag-icon-checkbox-unchecked:focus,.ag-icon-indeterminate:focus,.ag-toggle-button-input-wrapper:focus,.icon-check-1:focus,.icon-check-empty:focus{border-color:#1c89ea;border-color:var(--primary)}.ag-checkbox-input-wrapper:hover,.ag-icon-checkbox-checked-readonly:hover,.ag-icon-checkbox-checked:hover,.ag-icon-checkbox-indeterminate-readonly:hover,.ag-icon-checkbox-indeterminate:hover,.ag-icon-checkbox-unchecked-readonly:hover,.ag-icon-checkbox-unchecked:hover,.ag-icon-indeterminate:hover,.ag-toggle-button-input-wrapper:hover,.icon-check-1:hover,.icon-check-empty:hover{background-color:initial}.ag-checkbox-input-wrapper.ag-checked,.ag-checkbox-input-wrapper.ag-indeterminate,.ag-icon-checkbox-checked,.ag-icon-checkbox-checked-readonly,.ag-icon-checkbox-indeterminate,.ag-icon-checkbox-indeterminate-readonly,.ag-toggle-button-input-wrapper.ag-checked,.icon-check-empty{transition-duration:.25s;transition-property:background,color;transition-timing-function:cubic-bezier(.45,0,.15,1)}.ag-checkbox-input-wrapper.ag-checked:before,.ag-checkbox-input-wrapper.ag-indeterminate:before,.ag-icon-checkbox-checked-readonly:before,.ag-icon-checkbox-checked:before,.ag-icon-checkbox-indeterminate-readonly:before,.ag-icon-checkbox-indeterminate:before,.ag-toggle-button-input-wrapper.ag-checked:before,.icon-check-empty:before{background:#1c89ea;background:var(--primary);border:.0625rem solid var(--t42-color-opacity-30)}.ag-checkbox-input-wrapper.ag-checked:after,.ag-checkbox-input-wrapper.ag-indeterminate:after,.ag-icon-checkbox-checked-readonly:after,.ag-icon-checkbox-checked:after,.ag-icon-checkbox-indeterminate-readonly:after,.ag-icon-checkbox-indeterminate:after,.ag-toggle-button-input-wrapper.ag-checked:after,.icon-check-empty:after{background:#fff;background:var(--white);content:"";display:block;height:.75rem;left:.063rem;position:absolute;top:.063rem;width:.75rem}.ag-checkbox-input-wrapper.ag-checked:after,.ag-icon-checkbox-checked-readonly:after,.ag-icon-checkbox-checked:after,.ag-toggle-button-input-wrapper.ag-checked:after,.icon-check-empty:after{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M477.44 152.832q0 11.264-8.192 19.456l-245.76 245.76q-8.192 7.68-19.456 7.68t-19.456-7.68L42.24 275.712q-7.68-8.192-7.68-19.456t7.68-19.456l38.912-38.912q8.192-8.192 19.456-8.192t19.456 8.192l83.968 84.48L391.424 94.464q8.192-8.192 19.456-8.192t19.456 8.192l38.912 38.912q8.192 7.68 8.192 19.456z'/%3E%3C/svg%3E")}.ag-checkbox-input-wrapper.ag-indeterminate:after,.ag-icon-checkbox-indeterminate-readonly:after,.ag-icon-checkbox-indeterminate:after{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -1 5 6'%3E%3Cpath d='M1 1a1 1 0 0 0 0 1h3a1 1 0 0 0 0-1H1'/%3E%3C/svg%3E")}.ag-checkbox-input-wrapper.ag-indeterminate:after{left:.125rem;top:.125rem}.ag-checkbox-input-wrapper:before,.ag-toggle-button-input-wrapper:before{height:.875rem;width:.875rem}.ag-checkbox-input-wrapper .ag-checkbox-input,.ag-checkbox-input-wrapper .ag-toggle-button-input,.ag-toggle-button-input-wrapper .ag-checkbox-input,.ag-toggle-button-input-wrapper .ag-toggle-button-input{height:.875rem;position:absolute;width:.875rem;z-index:2}.ag-icon-columns{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M146.432 374.784v55.296q0 11.264-8.192 18.944t-19.456 8.192H27.648q-11.776 0-19.456-8.192T0 430.08v-55.296q0-11.264 8.192-19.456t19.456-7.68h91.136q11.776 0 19.456 7.68t8.192 19.456zm0-145.92v54.784q0 11.264-8.192 19.456t-19.456 7.68H27.648q-11.776 0-19.456-7.68T0 283.648v-54.784q0-11.776 8.192-19.456t19.456-8.192h91.136q11.776 0 19.456 8.192t8.192 19.456zm182.784 145.92v55.296q0 11.264-8.192 18.944t-19.456 8.192h-91.136q-11.776 0-19.456-8.192t-8.192-18.944v-55.296q0-11.264 8.192-19.456t19.456-7.68h91.136q11.776 0 19.456 7.68t8.192 19.456zM146.432 82.432v54.784q0 11.264-8.192 19.456t-19.456 8.192H27.648q-11.776 0-19.456-8.192T0 137.216V82.432q0-11.264 8.192-19.456t19.456-8.192h91.136q11.776 0 19.456 8.192t8.192 19.456zm182.784 146.432v54.784q0 11.264-8.192 19.456t-19.456 7.68h-91.136q-11.776 0-19.456-7.68t-8.192-19.456v-54.784q0-11.776 8.192-19.456t19.456-8.192h91.136q11.776 0 19.456 8.192t8.192 19.456zM512 374.784v55.296q0 11.264-8.192 18.944t-19.456 8.192h-91.136q-11.264 0-19.456-8.192t-8.192-18.944v-55.296q0-11.264 8.192-19.456t19.456-7.68h91.136q11.776 0 19.456 7.68T512 374.784zM329.216 82.432v54.784q0 11.264-8.192 19.456t-19.456 8.192h-91.136q-11.776 0-19.456-8.192t-8.192-19.456V82.432q0-11.264 8.192-19.456t19.456-8.192h91.136q11.776 0 19.456 8.192t8.192 19.456zM512 228.864v54.784q0 11.264-8.192 19.456t-19.456 7.68h-91.136q-11.264 0-19.456-7.68t-8.192-19.456v-54.784q0-11.776 8.192-19.456t19.456-8.192h91.136q11.776 0 19.456 8.192T512 228.864zm0-146.432v54.784q0 11.264-8.192 19.456t-19.456 8.192h-91.136q-11.264 0-19.456-8.192t-8.192-19.456V82.432q0-11.264 8.192-19.456t19.456-8.192h91.136q11.776 0 19.456 8.192T512 82.432z'/%3E%3C/svg%3E")}.ag-icon-pin{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M228.4 228.6v-128c0-2.7-.9-4.9-2.6-6.7s-3.9-2.6-6.7-2.6c-2.7 0-4.9.9-6.7 2.6-1.7 1.7-2.6 3.9-2.6 6.7v128c0 2.7.9 4.9 2.6 6.7 1.7 1.7 3.9 2.6 6.7 2.6 2.7 0 4.9-.9 6.7-2.6s2.6-4 2.6-6.7zm192 100.9c0 4.8-1.9 9-5.6 12.8-3.8 3.8-8 5.5-12.8 5.1H279.6l-14.8 138.2c-.3 2.4-1.4 4.3-3.1 5.6-1.7 1.4-3.6 2.2-5.6 2.6h-.5c-5.1 0-8-2.6-8.7-7.7l-22-138.8H109.6c-5.1 0-9.4-1.7-12.8-5.1-3.4-3.4-5.3-7.7-5.6-12.8 0-23.6 7.5-44.7 22.5-63.5s31.9-28.2 50.7-28.2V91.4c-9.9 0-18.4-3.6-25.6-10.8-7.2-7.2-10.9-15.7-11.3-25.6s3.4-18.4 11.3-25.6c7.9-7.2 16.4-10.9 25.6-11.3h182.8c9.9 0 18.4 3.8 25.6 11.3s10.8 16 10.8 25.6-3.6 18.1-10.8 25.6-15.8 11.1-25.7 10.8v146.4c18.8 0 35.7 9.4 50.7 28.2 15 18.8 22.6 39.9 22.6 63.5z'/%3E%3C/svg%3E")}.ag-icon-small-down,.ag-icon-small-right{height:.65rem;-webkit-mask-image:var(--t42-select-indicator);transform:rotate(-90deg);width:.65rem}.ag-icon-small-down{transform:rotate(0)}.ag-icon-tick{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M477.44 152.832q0 11.264-8.192 19.456l-245.76 245.76q-8.192 7.68-19.456 7.68t-19.456-7.68L42.24 275.712q-7.68-8.192-7.68-19.456t7.68-19.456l38.912-38.912q8.192-8.192 19.456-8.192t19.456 8.192l83.968 84.48L391.424 94.464q8.192-8.192 19.456-8.192t19.456 8.192l38.912 38.912q8.192 7.68 8.192 19.456z'/%3E%3C/svg%3E")}.ag-icon-copy{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M484.4 109.6q11.8 0 19.5 8.2t8.2 19.5v347.1q0 11.8-8.2 19.5t-19.5 8.2H210.5q-11.8 0-19.5-8.2t-8.2-19.5v-81.9H27.7q-11.8 0-19.5-8.2T0 374.8v-192q0-11.3 5.6-25.1t13.8-21.5L136.1 19.5q7.7-8.2 21.5-13.8T182.7.1h118.8q11.8 0 19.5 8.2t8.2 19.5v93.7q19.5-11.8 36.4-11.8h118.8zm-155.2 60.9L243.7 256h85.5v-85.5zM146.4 60.9l-85.5 85.5h85.5V60.9zm55.8 184.9 90.1-90.1V36.4H182.7v119.3q0 11.3-7.7 18.9t-19.5 8.2H36.2v182.8h146.4v-73.2q0-11.3 5.6-25.1t13.8-21.5zm273.4 229.8V146.4H365.5v118.8q0 11.3-7.7 19.5t-19.5 7.7H219.5v183.3h256z'/%3E%3C/svg%3E")}.ag-icon-csv,.ag-icon-excel{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M0 0zq0-7.7-5.1-12.8zm475.3 356.6v91.6q0 11.3-8.2 18.9t-19.5 8.2H27.2q-11.8 0-19.5-8.2t-8.2-18.9v-91.6q0-11.3 8.2-19.5t19.5-8.2h132.6l38.4 38.9q16.9 16.4 38.9 16.4t38.9-16.4l38.9-38.9h132.6q11.3 0 19.5 8.2t8.2 19.5zm-93.2-162.8q5.1 11.8-4.1 20l-128 128q-5.1 5.6-12.8 5.6t-12.8-5.6l-128-128q-8.7-8.2-4.1-20 5.1-10.8 16.9-10.8h73.2V55q0-7.7 5.6-12.8t12.8-5.6H274q7.2 0 12.8 5.6t5.1 12.8v128h73.2q12.3 0 16.9 10.8M347 439a1 1 0 0 0 0-37 1 1 0 0 0 0 37m73 0a1 1 0 0 0 0-37 1 1 0 0 0 0 37z'/%3E%3C/svg%3E")}.ag-icon-expanded{-webkit-mask-image:var(--t42-select-indicator);transform:rotate(-90deg)}.ag-header-expand-icon-collapsed .ag-icon-contracted,.ag-icon-contracted{-webkit-mask-image:var(--t42-select-indicator);transform:rotate(90deg)}.ag-header-expand-icon-collapsed .ag-icon-contracted{margin-bottom:1px}.ag-icon-paste{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M219.648 475.648h256V292.352H356.352q-11.264 0-18.944-7.68t-8.192-19.456V146.432H219.648v329.216zM292.352 64V45.568q0-3.584-2.56-6.144t-6.144-3.072H82.432q-3.584 0-6.656 3.072t-2.56 6.144V64q0 3.584 2.56 6.656t6.656 2.56h201.216q3.584 0 6.144-2.56t2.56-6.656zm73.216 192h85.504l-85.504-85.504V256zM512 292.352v192q0 11.776-8.192 19.456T484.352 512h-273.92q-11.776 0-19.456-8.192t-8.192-19.456v-45.568H27.648q-11.776 0-19.456-8.192T0 411.648v-384Q0 15.872 8.192 8.192T27.648 0h310.784q11.264 0 19.456 8.192t7.68 19.456v93.696q6.144 3.584 10.24 7.68L492.544 245.76q8.192 7.68 13.824 21.504T512 292.352z'/%3E%3C/svg%3E")}.ag-icon-arrows{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M512 256q0 7.168-5.632 12.8l-72.704 73.216q-5.632 5.632-13.312 5.632t-12.8-5.632-5.12-12.8v-36.864h-110.08v110.08h36.864q7.168 0 12.8 5.12t5.632 12.8-5.632 12.8L268.8 506.368Q263.68 512 256 512t-12.8-5.632l-73.216-73.216q-5.632-5.12-5.632-12.8t5.632-12.8 12.8-5.12h36.864v-110.08h-110.08v36.864q0 7.168-5.12 12.8t-12.8 5.632-12.8-5.632L5.632 268.8Q0 263.168 0 256t5.632-12.8l73.216-73.216q5.12-5.632 12.8-5.632t12.8 5.632 5.12 12.8v36.864h110.08v-110.08h-36.864q-7.168 0-12.8-5.12t-5.632-12.8 5.632-13.312L243.2 5.632Q248.832 0 256 0t12.8 5.632l73.216 72.704q5.632 5.632 5.632 13.312t-5.632 12.8-12.8 5.12h-36.864v110.08h110.08v-36.864q0-7.168 5.12-12.8t12.8-5.632 13.312 5.632l72.704 73.216Q512 248.32 512 256z'/%3E%3C/svg%3E")}.ag-icon-not-allowed{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M182.8 238.1h145.9v-55.3c0-20.1-7.2-37.4-21.5-51.7s-31.6-21.3-51.7-21c-20.1.3-37.4 7.3-51.7 21s-21.3 30.9-21 51.7v55.3zm237.6 27.1v164.9c0 7.5-2.7 13.8-8.2 18.9s-11.9 7.9-19.5 8.2H118.8c-7.9 0-14.3-2.7-19.5-8.2-5.1-5.5-7.9-11.8-8.2-18.9V265.2c0-7.5 2.7-14 8.2-19.5s11.9-8 19.5-7.7h8.7v-55.3c0-34.8 12.6-64.9 37.9-90.1s55.3-37.9 90.1-37.9 65 12.6 90.6 37.9 38.1 55.3 37.4 90.1V238h9.2c7.9 0 14.3 2.6 19.5 7.7s7.8 11.7 8.2 19.5z'/%3E%3C/svg%3E")}.ag-icon-eye-slash{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M475.6 256.3q-43.5-67.6-109.1-100.9 17.4 29.7 17.4 64 0 52.7-37.4 90.6t-90.6 37.4-90.6-37.4-37.4-90.6q0-34.3 17.4-64-65.5 33.3-109.1 100.9 38.4 58.4 95.7 93.2t123.9 34.8 124.4-34.8 95.2-93.2zM269.8 146.2q0-5.6-4.1-9.7t-9.7-3.6q-35.8 0-61.4 25.6T169 219.4q0 5.6 4.1 9.7t9.7 4.1 9.7-4.1 4.1-9.7q0-24.6 17.4-42t42-17.4q5.6 0 9.7-4.1t4.1-9.7zM512 256.3q0 9.7-5.6 19.5-39.9 66-107.5 105.5t-142.8 39.4-142.8-39.4T5.8 275.8Q.2 266.1.2 256.3t5.6-20q39.9-65.5 107.5-105t142.8-39.9 142.8 39.9 107.5 105q5.6 10.2 5.6 20z'/%3E%3C/svg%3E")}.ag-icon-group{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M146.4 374.8v55.3q0 11.3-8.2 18.9t-19.5 8.2H27.6q-11.8 0-19.5-8.2t-8.2-18.9v-55.3q0-11.3 8.2-19.5t19.5-7.7h91.1q11.8 0 19.5 7.7t8.2 19.5zm0-145.9v54.8q0 11.3-8.2 19.5t-19.5 7.7H27.6q-11.8 0-19.5-7.7t-8.2-19.5v-54.8q0-11.8 8.2-19.5t19.5-8.2h91.1q11.8 0 19.5 8.2t8.2 19.5zM512 374.8v55.3q0 11.3-8.2 18.9t-19.5 8.2H210.4q-11.8 0-19.5-8.2t-8.2-18.9v-55.3q0-11.3 8.2-19.5t19.5-7.7h273.9q11.8 0 19.5 7.7t8.2 19.5zM146.4 82.4v54.8q0 11.3-8.2 19.5t-19.5 8.2H27.6q-11.8 0-19.5-8.2t-8.2-19.5V82.4q0-11.3 8.2-19.5t19.5-8.2h91.1q11.8 0 19.5 8.2t8.2 19.5zM512 228.9v54.8q0 11.3-8.2 19.5t-19.5 7.7H210.4q-11.8 0-19.5-7.7t-8.2-19.5v-54.8q0-11.8 8.2-19.5t19.5-8.2h273.9q11.8 0 19.5 8.2t8.2 19.5zm0-146.5v54.8q0 11.3-8.2 19.5t-19.5 8.2H210.4q-11.8 0-19.5-8.2t-8.2-19.5V82.4q0-11.3 8.2-19.5t19.5-8.2h273.9q11.8 0 19.5 8.2t8.2 19.5z'/%3E%3C/svg%3E")}.ag-icon-grip{margin:0;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 3h2v2H4V3m0 4h2v2H4V7m0 4h2v2H4v-2m4-8h2v2H8V3m0 4h2v2H8V7m0 4h2v2H8v-2'/%3E%3C/svg%3E")}.ag-icon-tree-open{transform:rotate(180deg)}.ag-icon-tree-closed,.ag-icon-tree-open{-webkit-mask-image:var(--t42-select-indicator)}.ag-icon-tree-closed{transform:rotate(270deg)}.ag-icon-tree-indeterminate{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -1 5 6'%3E%3Cpath d='M1 1a1 1 0 0 0 0 1h3a1 1 0 0 0 0-1H1'/%3E%3C/svg%3E")}.ag-icon-save{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M420.6 319.2V393c0 22.9-8 42.3-24.1 58.4s-35.5 24.1-58.4 24.1H100.6c-22.9 0-42.3-8-58.4-24.1s-24-35.6-24-58.4V155.4c0-22.5 8-41.8 24.1-57.9S77.7 73.3 100.6 73h72.7c2.4 0 4.6 1 6.7 3.1 2 2 2.9 4.1 2.6 6.1 0 5.1-2.6 8.2-7.7 9.2-14.7 5.1-27.3 10.9-37.9 17.4-1.7.7-3.2 1-4.6 1h-31.7c-12.6 0-23.4 4.4-32.3 13.3s-13.5 19.6-13.8 32.3V393c0 12.6 4.6 23.4 13.8 32.3 9.2 8.9 20 13.5 32.3 13.8h237.6c12.6 0 23.4-4.6 32.3-13.8 8.9-9.2 13.3-20 13.3-32.3v-61c0-3.8 1.7-6.5 5.1-8.2 5.5-2.4 10.8-6 15.9-10.8 2.7-3.1 6-3.8 9.7-2 4 1.7 6 4.5 6 8.2zm67.6-141.8L378.6 287c-3.4 3.8-7.7 5.6-12.8 5.6-2.4 0-4.8-.5-7.2-1.5-7.5-3.1-11.3-8.7-11.3-16.9v-54.8h-45.6c-61.8 0-103.6 12.5-125.4 37.4-22.5 26.3-29.5 71.3-21 135.2.7 4.4-1.2 7.7-5.6 9.7-1.7.3-2.9.5-3.6.5-3.1 0-5.5-1.2-7.2-3.6-2-2.7-4.1-5.6-6.1-8.7-2-3.1-5.8-9.7-11.3-20-5.5-10.2-10.2-19.6-14.3-28.2-4.1-8.5-7.7-19.5-10.8-32.8-3.1-13.3-4.8-24.9-5.1-34.8 0-9.2.3-17.9 1-26.1.7-8.2 2-16.7 4.1-25.6 2-8.9 4.6-17.2 7.7-25.1 3.1-7.9 7.7-15.5 13.8-23 6.1-7.5 12.6-14.7 19.5-21.5s15.7-12.6 26.6-17.4c10.9-4.8 22.9-9.4 35.8-13.8 13-4.4 28.2-7.3 45.6-8.7s36.2-2.4 56.3-3.1h45.6V55c0-8.2 3.8-13.8 11.3-16.9 2.4-1 4.8-1.5 7.2-1.5 4.8 0 9 1.9 12.8 5.6l109.6 109.6c3.8 3.4 5.6 7.7 5.6 12.8s-1.9 9.4-5.6 12.8z'/%3E%3C/svg%3E")}.ag-tooltip{background:Rgb(var(--t42-bg-light));border:.0625rem solid var(--t42-color-opacity-10);border-radius:.25rem;box-shadow:var(--t42-shadow);padding:.125rem .5rem}.ag-icon-cancel{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M366.9 336.4c6.1 6.1 9.2 13.5 9.2 22s-3.1 15.9-9.2 22c-6.1 5.5-13.5 8.2-22 8.2s-15.9-2.7-22-8.2l-67.6-77.8-67.6 77.8c-6.1 5.5-13.5 8.2-22 8.2s-15.9-2.7-22-8.2c-5.5-6.1-8.2-13.5-8.2-22s2.7-15.9 8.2-22l70.7-79.9-70.7-80.9c-5.5-6.1-8.2-13.5-8.2-22s2.7-15.9 8.2-22c6.1-5.5 13.5-8.2 22-8.2s15.9 2.7 22 8.2l67.6 77.8 67.6-77.8c6.1-5.5 13.5-8.2 22-8.2s15.9 2.7 22 8.2c6.1 6.1 9.2 13.5 9.2 22s-3.1 15.9-9.2 22l-70.7 80.9 70.7 79.9z'/%3E%3C/svg%3E")}.icon-check-empty:after{height:.65rem;width:.65rem}.icon-resize-horizontal{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M512 256q0 7.2-5.6 12.8L433.7 342q-5.6 5.6-13.3 5.6t-12.8-5.6-5.1-12.8v-36.9H109.6v36.9q0 7.2-5.1 12.8t-12.8 5.6-12.8-5.6L5.7 268.8Q.1 263.2.1 256t5.6-12.8L78.9 170q5.1-5.6 12.8-5.6t12.8 5.6 5.1 12.8v36.9h292.9v-36.9q0-7.2 5.1-12.8t12.8-5.6 13.3 5.6l72.7 73.2q5.6 5.1 5.6 12.8z'/%3E%3C/svg%3E")}.ag-icon-aggregation{margin:0 .25rem;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.6 1.7c-.2.7-.9 1.1-1.5 1C1.5 2.6 1 2 1 1.3 1 .7 1.5.1 2.1 0c.4-.1.7 0 1 .2.3.2.5.5.6.8.3 0 .5.1.8.3.2.2.5.5.7.8.2.3.4.7.6 1 .1.2.3.5.5.7.2.2.5.5.8.6.1.1.3.1.5.1h4.1V4c0-.1.1-.1.2-.1s.1 0 .1.1c.1 0 .1.1.2.2l.5.5.4.4H7.3c-.1.1-.3 0-.5-.1s-.5-.2-.7-.4c-.4-.3-.6-.6-.9-1.1-.2-.3-.4-.7-.6-1.1l-.5-.5c-.1-.1-.2-.2-.3-.2h-.2zM3.6 7.7h11c.1 0 .1 0 .1.1.1 0 .2.1.3.2l-.3.3H3.6c-.1.5-.4.8-.8 1-.3.1-.6.1-.8 0-.6-.2-1-.7-1-1.3 0-.7.5-1.2 1.1-1.3.3-.1.7 0 1 .2.3.2.5.4.5.8zM13.1 10.9l-.8.8-.3.3-.1.1h-.1c-.1 0-.1 0-.2-.1v-.5H7.5c-.1 0-.3 0-.4.1-.3.1-.5.2-.7.4-.2.2-.4.5-.6.8-.2.4-.4.7-.7 1.1l-.6.6c-.1.1-.3.2-.4.3-.1.1-.3.2-.4.2h-.1c-.1.4-.3.7-.7.9-.2.1-.5.1-.8.1-.6-.1-1.1-.7-1.1-1.3 0-.7.5-1.2 1-1.3.3-.1.7 0 1 .2.3.2.5.5.6.8h.2l.4-.4c.2-.2.3-.4.5-.6.2-.3.4-.6.6-1l.6-.9c.3-.2.5-.5.9-.6.2-.1.4-.1.6-.1H13l.1.1z'/%3E%3Cpath d='M3.6 11.7c-.1.4-.3.7-.7.9-.3.2-.6.2-.9.1-.5-.1-1-.6-1-1.3 0-.7.5-1.2 1.1-1.3.3-.1.7 0 1 .2.3.2.5.5.6.8h.2c.2 0 .3-.1.4-.2.2-.1.4-.3.5-.4.1-.2.2-.3.2-.3.3-.3.6-.5 1-.6.3-.1.6-.2.8-.2h7.4l-.6.6H7c-.3 0-.6.1-.9.2-.2.1-.5.3-.6.5-.3.3-.5.5-.8.7l-.6.3h-.5c.1 0 .1 0 0 0zM3.6 4.9c-.1.4-.3.7-.7.9-.3.1-.6.2-.9.1-.6-.2-1-.7-1-1.4 0-.6.5-1.2 1.1-1.3.7-.1 1.4.3 1.5 1h.1c.3 0 .5.1.7.3.3.2.6.4.8.5l.4.4c.3.3.6.5 1 .5.1.1.3.1.4.1h6.6l.6.6H7c-.3 0-.5 0-.8-.1-.2 0-.5-.1-.7-.3-.2-.1-.4-.3-.5-.4-.2-.3-.5-.5-.8-.7-.1-.1-.3-.2-.6-.2z'/%3E%3C/svg%3E")}.ag-icon-loading{animation:icon-loading 1.4s linear infinite;background:linear-gradient(to right,var(--t42-icon-color),Rgba(var(--t42-bg-dark) 42%));border-radius:50%;height:1rem;position:relative;transform:translateZ(0);width:1rem}.ag-icon-loading:before{background:var(--t42-icon-color);border-radius:100% 0 0;content:"";height:50%;left:0;position:absolute;top:0;width:50%}.ag-icon-loading:after{background:Rgb(var(--t42-bg-dark));border-radius:50%;bottom:0;content:"";height:75%;left:0;margin:auto;position:absolute;right:0;top:0;width:75%}.ag-loading{display:flex;padding-left:.5rem}@keyframes icon-loading{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.search{position:relative}.search i{background-color:var(--t42-content-color);height:.75rem;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M328.9 219.4q0-52.7-37.4-90.1t-90.6-37.9-90.6 37.9-37.4 90.1 37.4 90.6 90.6 37.4 90.6-37.4 37.4-90.6zm146.4 238.1q0 14.8-11.3 25.6t-25.6 10.8q-15.4 0-25.6-10.8L315 385.3q-51.2 35.3-114.2 35.3-41 0-78.3-15.9t-64-43-43-64-15.9-78.3 15.9-77.8 43-64.5 64-43 78.3-15.9 78.3 15.9 64 43 43 64.5 15.9 77.8q0 63-35.3 114.2l97.8 97.8q10.8 10.8 10.8 26.1z'/%3E%3C/svg%3E");position:absolute;right:.75rem;top:.625rem;width:.75rem}.search-results{max-height:215px;overflow-y:auto;position:absolute;top:33px}.search-results .list-group-item{white-space:nowrap}.select{align-items:center;cursor:pointer;display:flex;height:2rem;justify-content:center;list-style:none;position:relative;width:100%;z-index:12}.select input[type=radio]{opacity:1}.select_expand{height:2rem;position:absolute;right:0;top:0;width:0}.select_expand:after{background:var(--t42-select-indicator) center center/1rem 1rem no-repeat;content:"";height:1rem;pointer-events:none;position:absolute;right:0;top:50%;transform:translate(-65%,-55%);transition-duration:.25s;transition-property:transform;transition-timing-function:cubic-bezier(.45,0,.15,1);width:1rem;z-index:2}.select_expand:checked+.select_close_label+.select_options .select_label:hover{background-color:var(--t42-link-active-bg);color:var(--t42-link-hover-color)}.select_expand:checked:after{transform:translate(-65%,-55%) rotate(-180deg)}.select_expand_label{cursor:pointer;display:block;height:2rem;left:0;margin-bottom:0;position:absolute;top:0;width:100%}.select_close{display:none}.select_close_label{display:none;left:0;margin-bottom:0;position:fixed;top:0}.select_items{border-color:var(--t42-color-opacity-10);border-style:solid;border-width:1px;left:0;min-height:2rem;position:absolute;top:0;width:100%}.select_items:hover{border-color:#1c89ea;border-color:var(--primary)}.select_input{display:none}.select_label{cursor:pointer;display:block;height:0;line-height:2rem;margin-bottom:0;overflow:hidden;padding-left:.875rem;transition:all .2s cubic-bezier(.4,.25,.3,1)}.select_label-placeholder{background-color:initial;height:2rem;left:0;position:absolute;top:0;vertical-align:middle}.select_expand:checked+.select_close_label{display:block}.select_expand:checked+.select_close_label:after,.select_expand:checked+.select_close_label:before{display:none}.select_expand:checked+.select_close_label+.select_options .select_label{height:2rem}.select_expand:checked+.select_close_label+.select_options+.select_expand_label{display:none}.select_input:checked+.select_label{height:2rem}.select_option label{color:var(--t42-content-color)}.select_options{list-style:none;max-height:10rem;overflow:auto;padding-left:0}.dark{--t42-json-icons:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='144'%3E%3Cpath style='fill:%23ff511f' d='M28 4h16v16H28z'/%3E%3Cpath style='fill:%23fff' d='M7 11h10v2H7z'/%3E%3Cpath style='fill:%23fff' d='M11 7h2v10h-2z'/%3E%3Cg%3E%3Cpath style='fill:%23fff' d='M7 11h10v2H7z' transform='rotate(-45 24 -16.97)'/%3E%3Cpath style='fill:%23fff' d='M11 7h2v10h-2z' transform='rotate(-45 24 -16.97)'/%3E%3C/g%3E%3Cpath style='fill:%23fff;stroke-width:1;stroke:%23fff' d='M55 7h7v7h-7z'/%3E%3Cpath style='fill:%23fff;stroke-width:1;stroke:%231d1d1d' d='M58 10h7v7h-7z'/%3E%3Cpath style='fill:%23fff' d='M198 11h8v2h-8zM198 7h12v2h-12zM198 15h4v2h-4z'/%3E%3Cpath style='fill:%23fff' d='M198 11h8v2h-8zM198 7h12v2h-12zM198 15h4v2h-4z' transform='matrix(1 0 0 -1 -24 24)'/%3E%3Cpath style='fill:%23fff' d='m85.104 6.016-.015 1.406c3.027-.24.33 3.65 2.484 4.578-2.187 1.094.492 4.907-2.453 4.578L85.105 18c5.708.56 1.032-5.1 4.703-5.265v-1.407c-3.613-.027 1.119-5.707-4.703-5.312zM82.781 5.998l.016 1.407c-3.027-.24-.33 3.65-2.485 4.578 2.187 1.094-.491 4.907 2.454 4.578l.015 1.422c-5.708.559-1.032-5.1-4.703-5.266v-1.406c3.613-.027-1.119-5.707 4.703-5.313zM103.719 5.672V18.39h3.031v-1.532h-1.344V7.234h1.375V5.672zM112.219 5.672v12.719h-3.032V16.86h1.344V7.235h-1.375V5.672zM133 6.4h-1.9l-4.8 11.2h1.8l1.1-2.9h5.7l1.1 2.9h1.8L133 6.4zm-3.3 7.1L132 8l2.3 5.5h-4.6zM156.477 5.892v2.18l.46 2.398h1.829l.398-2.399v-2.18zM152.516 5.89v2.18l.46 2.399h1.829l.398-2.399V5.89z'/%3E%3Cpath style='fill:%236e6e6e' d='M54 64h12v2H54zM80 52h3v3h-3zM85 52h3v3h-3zM80 58h3v3h-3zM85 58h3v3h-3zM80 64h3v3h-3zM85 64h3v3h-3z'/%3E%3Ccircle style='opacity:1;fill:none;stroke:%236e6e6e;stroke-width:2' cx='110.061' cy='57.939' r='4.744'/%3E%3Cpath style='fill:%236e6e6e' transform='rotate(45)' d='M116.646-31.798h4.23v6.405h-4.23z'/%3E%3Cpath style='fill:%236e6e6e;fill-rule:evenodd' d='m125 56 13.77.095L132 64ZM149 64l13.77-.095L156 56Z'/%3E%3Cpath style='fill:%236e6e6e' d='M54 53h12v2H54z'/%3E%3Cpath style='fill:%236e6e6e' transform='rotate(90)' d='M53-56h13v2H53zM53-66h13v2H53z'/%3E%3Cpath style='fill:%236e6e6e' d='M54 57h12v1H54z'/%3E%3Cpath style='fill:%23fff' d='M54 88h12v2H54zM80 76h3v3h-3zM85 76h3v3h-3zM80 82h3v3h-3zM85 82h3v3h-3zM80 88h3v3h-3zM85 88h3v3h-3z'/%3E%3Ccircle r='4.744' cy='81.939' cx='110.061' style='opacity:1;fill:none;stroke:%23fff;stroke-width:2'/%3E%3Cpath transform='rotate(45)' style='fill:%23fff' d='M133.616-14.827h4.23v6.405h-4.23z'/%3E%3Cpath d='m125 80 13.77.095L132 88ZM149 88l13.77-.095L156 80ZM54 77h12v2H54z' style='fill:%23fff'/%3E%3Cpath transform='rotate(90)' style='fill:%23fff' d='M77-56h13v2H77zM77-66h13v2H77z'/%3E%3Cpath style='fill:%23fff' d='M54 81h12v1H54zM76 101h16v2H76zM76 105h16v2H76zM76 109h9v2h-9zM76 125h12v2H76zM76 137h10v2H76zM82 129h10v2H82zM82 133h9v2h-9zM36.398 100.025a8.228 8.228 0 0 0-1.265.062 7.861 7.861 0 0 0-4.508 2.227L29 100.599l-2.324 7.713 7.826-1.906-1.805-1.906a5.026 5.026 0 0 1 5.985-.721 4.915 4.915 0 0 1 2.308 5.55 4.988 4.988 0 0 1-4.83 3.696v3.074c3.55 0 6.71-2.411 7.65-5.941.94-3.53-.618-7.274-3.71-9.07a7.839 7.839 0 0 0-3.702-1.063zM59.723 99.963a7.834 7.834 0 0 0-3.702 1.062c-3.092 1.797-4.65 5.54-3.71 9.07.94 3.53 4.097 5.942 7.648 5.942v-3.074a4.988 4.988 0 0 1-4.83-3.695 4.915 4.915 0 0 1 2.309-5.551 5.029 5.029 0 0 1 5.986.72l-1.807 1.907 7.828 1.906-2.324-7.713-1.627 1.717a7.856 7.856 0 0 0-4.506-2.229 7.754 7.754 0 0 0-1.265-.062zM10.5 100v2H8l4 5 4-5h-2.5v-2h-3z'/%3E%3Cpath style='fill:none;stroke:%23fff' d='m4.985 108.015 14.03-.03M4.985 132.015l14.03-.03'/%3E%3Cpath style='color:%23000;fill:%236e6e6e' d='M36.398 123.963a8.228 8.228 0 0 0-1.265.062 7.861 7.861 0 0 0-4.508 2.226L29 124.538l-2.324 7.713 7.826-1.907-1.805-1.906a5.026 5.026 0 0 1 5.985-.72 4.915 4.915 0 0 1 2.308 5.55 4.988 4.988 0 0 1-4.83 3.695v3.075c3.55 0 6.71-2.41 7.65-5.94.94-3.53-.618-7.275-3.71-9.072a7.84 7.84 0 0 0-3.702-1.063zM59.723 123.963a7.835 7.835 0 0 0-3.702 1.062c-3.092 1.797-4.65 5.543-3.71 9.073.94 3.53 4.097 5.94 7.648 5.94v-3.075a4.988 4.988 0 0 1-4.83-3.695 4.915 4.915 0 0 1 2.309-5.551 5.029 5.029 0 0 1 5.986.72l-1.807 1.907 7.828 1.906-2.324-7.713-1.627 1.717a7.856 7.856 0 0 0-4.506-2.229 7.754 7.754 0 0 0-1.265-.062z'/%3E%3Cpath d='M10.5 116v-2H8l4-5 4 5h-2.5v2h-3zM10.5 129v-2H8l4-5 4 5h-2.5v2h-3zM10.5 135v2H8l4 5 4-5h-2.5v-2h-3z' style='fill:%23fff;stroke-width:1.96599996'/%3E%3Cpath style='fill:%236e6e6e' d='m16.667 60.073-3.833 2.214L9 64.5v-8.854l3.834 2.214z'/%3E%3Cpath d='m-31.5 60.073-3.834 2.214-3.833 2.213v-8.854l3.833 2.214z' style='fill:%236e6e6e' transform='scale(-1 1)'/%3E%3Cpath d='m16.667 60.073-3.833 2.214L9 64.5v-8.854l3.834 2.214z' style='fill:%236e6e6e' transform='rotate(90 .11 71.898)'/%3E%3Cpath transform='matrix(0 -1 -1 0 96 96)' style='fill:%236e6e6e' d='m16.667 60.073-3.833 2.214L9 64.5v-8.854l3.834 2.214z'/%3E%3Cpath d='M171.826 65.174h16.348L180 51.826z' style='fill:%23f9a825;fill-rule:evenodd;stroke:%23f9a825;stroke-width:2'/%3E%3Cpath style='opacity:1;fill:%23fff' d='M179 55v6h2v-6M179 62v2h2v-2'/%3E%3Cpath style='fill:%23fff' d='m99.994 113.022 2.006 1.962 7-6.956 3 .972 2-1 1-2v-3l-3 3-3-3 3-3h-3l-2 1-1 2 .994 3.022zM234 6v2l-5 5v5h-2v-5l-5-5V6'/%3E%3Cpath style='fill:%23fff;stroke:%23000;stroke-width:0' d='M198 12.625h6v1h-6zM198 15.125h8v1h-8zM198 7.625h3v1h-3zM198 10.125h4v1h-4z' transform='matrix(1.33333 0 0 -1.6 -140 127.2)'/%3E%3Cpath style='fill:%23fff' d='M207 16.375V10.75h-2.25l3-3.125 3 3.125h-2.25v5.625H207' transform='matrix(1.33333 0 0 -1.6 -140 127.2)'/%3E%3Cpath style='fill:%23fff' d='M164 100v3l-6 6v7h-4v-7l-6-6v-3M15 41v-7h-4v3l-5-4 5-4v3h6v9'/%3E%3C/svg%3E")}.light{--t42-json-icons:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='144'%3E%3Cpath style='fill:%23ff511f' d='M28 4h16v16H28z'/%3E%3Cpath style='fill:%230d0d0d' d='M7 11h10v2H7z'/%3E%3Cpath style='fill:%230d0d0d' d='M11 7h2v10h-2z'/%3E%3Cg%3E%3Cpath style='fill:%23fff' d='M7 11h10v2H7z' transform='rotate(-45 24 -16.97)'/%3E%3Cpath style='fill:%23fff' d='M11 7h2v10h-2z' transform='rotate(-45 24 -16.97)'/%3E%3C/g%3E%3Cpath style='fill:%230d0d0d;stroke-width:1;stroke:%230d0d0d' d='M55 7h7v7h-7z'/%3E%3Cpath style='fill:%230d0d0d;stroke-width:1;stroke:%23fff' d='M58 10h7v7h-7z'/%3E%3Cpath style='fill:%230d0d0d' d='M198 11h8v2h-8zM198 7h12v2h-12zM198 15h4v2h-4z'/%3E%3Cpath style='fill:%230d0d0d' d='M198 11h8v2h-8zM198 7h12v2h-12zM198 15h4v2h-4z' transform='matrix(1 0 0 -1 -24 24)'/%3E%3Cpath style='fill:%230d0d0d' d='m85.104 6.016-.015 1.406c3.027-.24.33 3.65 2.484 4.578-2.187 1.094.492 4.907-2.453 4.578L85.105 18c5.708.56 1.032-5.1 4.703-5.265v-1.407c-3.613-.027 1.119-5.707-4.703-5.312zM82.781 5.998l.016 1.407c-3.027-.24-.33 3.65-2.485 4.578 2.187 1.094-.491 4.907 2.454 4.578l.015 1.422c-5.708.559-1.032-5.1-4.703-5.266v-1.406c3.613-.027-1.119-5.707 4.703-5.313zM103.719 5.672V18.39h3.031v-1.532h-1.344V7.234h1.375V5.672zM112.219 5.672v12.719h-3.032V16.86h1.344V7.235h-1.375V5.672zM133 6.4h-1.9l-4.8 11.2h1.8l1.1-2.9h5.7l1.1 2.9h1.8L133 6.4zm-3.3 7.1L132 8l2.3 5.5h-4.6zM156.477 5.892v2.18l.46 2.398h1.829l.398-2.399v-2.18zM152.516 5.89v2.18l.46 2.399h1.829l.398-2.399V5.89z'/%3E%3Cpath style='fill:%236e6e6e' d='M54 64h12v2H54zM80 52h3v3h-3zM85 52h3v3h-3zM80 58h3v3h-3zM85 58h3v3h-3zM80 64h3v3h-3zM85 64h3v3h-3z'/%3E%3Ccircle style='opacity:1;fill:none;stroke:%236e6e6e;stroke-width:2' cx='110.061' cy='57.939' r='4.744'/%3E%3Cpath style='fill:%236e6e6e' transform='rotate(45)' d='M116.646-31.798h4.23v6.405h-4.23z'/%3E%3Cpath style='fill:%236e6e6e;fill-rule:evenodd' d='m125 56 13.77.095L132 64ZM149 64l13.77-.095L156 56Z'/%3E%3Cpath style='fill:%236e6e6e' d='M54 53h12v2H54z'/%3E%3Cpath style='fill:%236e6e6e' transform='rotate(90)' d='M53-56h13v2H53zM53-66h13v2H53z'/%3E%3Cpath style='fill:%236e6e6e' d='M54 57h12v1H54z'/%3E%3Cpath style='fill:%230d0d0d' d='M54 88h12v2H54zM80 76h3v3h-3zM85 76h3v3h-3zM80 82h3v3h-3zM85 82h3v3h-3zM80 88h3v3h-3zM85 88h3v3h-3z'/%3E%3Ccircle r='4.744' cy='81.939' cx='110.061' style='opacity:1;fill:none;stroke:%230d0d0d;stroke-width:2'/%3E%3Cpath transform='rotate(45)' style='fill:%230d0d0d' d='M133.616-14.827h4.23v6.405h-4.23z'/%3E%3Cpath d='m125 80 13.77.095L132 88ZM149 88l13.77-.095L156 80ZM54 77h12v2H54z' style='fill:%230d0d0d'/%3E%3Cpath transform='rotate(90)' style='fill:%230d0d0d' d='M77-56h13v2H77zM77-66h13v2H77z'/%3E%3Cpath style='fill:%230d0d0d' d='M54 81h12v1H54zM76 101h16v2H76zM76 105h16v2H76zM76 109h9v2h-9zM76 125h12v2H76zM76 137h10v2H76zM82 129h10v2H82zM82 133h9v2h-9zM36.398 100.025a8.228 8.228 0 0 0-1.265.062 7.861 7.861 0 0 0-4.508 2.227L29 100.599l-2.324 7.713 7.826-1.906-1.805-1.906a5.026 5.026 0 0 1 5.985-.721 4.915 4.915 0 0 1 2.308 5.55 4.988 4.988 0 0 1-4.83 3.696v3.074c3.55 0 6.71-2.411 7.65-5.941.94-3.53-.618-7.274-3.71-9.07a7.839 7.839 0 0 0-3.702-1.063zM59.723 99.963a7.834 7.834 0 0 0-3.702 1.062c-3.092 1.797-4.65 5.54-3.71 9.07.94 3.53 4.097 5.942 7.648 5.942v-3.074a4.988 4.988 0 0 1-4.83-3.695 4.915 4.915 0 0 1 2.309-5.551 5.029 5.029 0 0 1 5.986.72l-1.807 1.907 7.828 1.906-2.324-7.713-1.627 1.717a7.856 7.856 0 0 0-4.506-2.229 7.754 7.754 0 0 0-1.265-.062zM10.5 100v2H8l4 5 4-5h-2.5v-2h-3z'/%3E%3Cpath style='fill:none;stroke:%230d0d0d' d='m4.985 108.015 14.03-.03M4.985 132.015l14.03-.03'/%3E%3Cpath style='color:%23000;fill:%236e6e6e' d='M36.398 123.963a8.228 8.228 0 0 0-1.265.062 7.861 7.861 0 0 0-4.508 2.226L29 124.538l-2.324 7.713 7.826-1.907-1.805-1.906a5.026 5.026 0 0 1 5.985-.72 4.915 4.915 0 0 1 2.308 5.55 4.988 4.988 0 0 1-4.83 3.695v3.075c3.55 0 6.71-2.41 7.65-5.94.94-3.53-.618-7.275-3.71-9.072a7.84 7.84 0 0 0-3.702-1.063zM59.723 123.963a7.835 7.835 0 0 0-3.702 1.062c-3.092 1.797-4.65 5.543-3.71 9.073.94 3.53 4.097 5.94 7.648 5.94v-3.075a4.988 4.988 0 0 1-4.83-3.695 4.915 4.915 0 0 1 2.309-5.551 5.029 5.029 0 0 1 5.986.72l-1.807 1.907 7.828 1.906-2.324-7.713-1.627 1.717a7.856 7.856 0 0 0-4.506-2.229 7.754 7.754 0 0 0-1.265-.062z'/%3E%3Cpath d='M10.5 116v-2H8l4-5 4 5h-2.5v2h-3zM10.5 129v-2H8l4-5 4 5h-2.5v2h-3zM10.5 135v2H8l4 5 4-5h-2.5v-2h-3z' style='fill:%230d0d0d;stroke-width:2'/%3E%3Cpath style='fill:%236e6e6e' d='m16.667 60.073-3.833 2.214L9 64.5v-8.854l3.834 2.214z'/%3E%3Cpath d='m-31.5 60.073-3.834 2.214-3.833 2.213v-8.854l3.833 2.214z' style='fill:%236e6e6e' transform='scale(-1 1)'/%3E%3Cpath d='m16.667 60.073-3.833 2.214L9 64.5v-8.854l3.834 2.214z' style='fill:%236e6e6e' transform='rotate(90 .11 71.898)'/%3E%3Cpath transform='matrix(0 -1 -1 0 96 96)' style='fill:%236e6e6e' d='m16.667 60.073-3.833 2.214L9 64.5v-8.854l3.834 2.214z'/%3E%3Cpath d='M171.826 65.174h16.348L180 51.826z' style='fill:%23f9a825;fill-rule:evenodd;stroke:%23f9a825;stroke-width:2'/%3E%3Cpath style='opacity:1;fill:%23fff' d='M179 55v6h2v-6M179 62v2h2v-2'/%3E%3Cpath style='fill:%230d0d0d' d='m99.994 113.022 2.006 1.962 7-6.956 3 .972 2-1 1-2v-3l-3 3-3-3 3-3h-3l-2 1-1 2 .994 3.022zM234 6v2l-5 5v5h-2v-5l-5-5V6'/%3E%3Cpath style='fill:%230d0d0d;stroke:%23000;stroke-width:0' d='M198 12.625h6v1h-6zM198 15.125h8v1h-8zM198 7.625h3v1h-3zM198 10.125h4v1h-4z' transform='matrix(1.33333 0 0 -1.6 -140 127.2)'/%3E%3Cpath style='fill:%230d0d0d' d='M207 16.375V10.75h-2.25l3-3.125 3 3.125h-2.25v5.625H207' transform='matrix(1.33333 0 0 -1.6 -140 127.2)'/%3E%3Cpath style='fill:%230d0d0d' d='M164 100v3l-6 6v7h-4v-7l-6-6v-3M15 41v-7h-4v3l-5-4 5-4v3h6v9'/%3E%3C/svg%3E")}body{/*! + * Selectr 2.4.13 + * http://mobius.ovh/docs/selectr + * + * Released under the MIT license + */}body .jsoneditor input,body .jsoneditor input:not([type]),body .jsoneditor input[type=search],body .jsoneditor input[type=text],body .jsoneditor-modal input,body .jsoneditor-modal input:not([type]),body .jsoneditor-modal input[type=search],body .jsoneditor-modal input[type=text]{border:inherit;box-shadow:none;box-sizing:inherit;font-family:inherit;font-size:inherit;height:auto;line-height:inherit;padding:inherit;transition:none}body .jsoneditor input:focus,body .jsoneditor input:not([type]):focus,body .jsoneditor input[type=search]:focus,body .jsoneditor input[type=text]:focus,body .jsoneditor-modal input:focus,body .jsoneditor-modal input:not([type]):focus,body .jsoneditor-modal input[type=search]:focus,body .jsoneditor-modal input[type=text]:focus{border:inherit;box-shadow:inherit}body .jsoneditor textarea,body .jsoneditor-modal textarea{height:inherit}body .jsoneditor select,body .jsoneditor-modal select{display:inherit;height:inherit}body .jsoneditor label,body .jsoneditor-modal label{color:inherit;font-size:inherit;font-weight:inherit}body .jsoneditor table,body .jsoneditor-modal table{border-collapse:collapse;width:auto}body .jsoneditor td,body .jsoneditor th,body .jsoneditor-modal td,body .jsoneditor-modal th{border-radius:inherit;display:table-cell;padding:0;text-align:left;vertical-align:inherit}body .jsoneditor .autocomplete.dropdown{background:var(--t42-content-color);border:1px solid var(--t42-color-opacity-10);box-shadow:var(--t42-shadow);cursor:default;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--bs-font-monospace);font-size:.75rem;font-size:var(--t42-font-size);margin:0;outline:0;overflow-x:hidden;overflow-y:auto;padding:5px;position:absolute;text-align:left}body .jsoneditor .autocomplete.dropdown .item{color:var(--t42-content-color)}body .jsoneditor .autocomplete.dropdown .item.hover{background-color:Rgb(var(--t42-bg-mid))}body .jsoneditor .autocomplete.hint{color:var(--t42-content-color);left:4px;top:4px}body .jsoneditor-contextmenu-root{height:0;position:relative;width:0}body .jsoneditor-contextmenu{box-sizing:initial;position:absolute}body .jsoneditor-contextmenu .jsoneditor-menu{background:var(--t42-content-color);border:1px solid var(--t42-color-opacity-10);height:auto;left:0;list-style:none;margin:0;padding:0;position:relative;top:0;width:128px}body .jsoneditor-contextmenu .jsoneditor-menu button{background:#0000;border:none;box-sizing:border-box;color:var(--t42-content-color);cursor:pointer;font-family:Montserrat,Helvetica Neue,Arial,sans-serif;font-family:var(--t42-font-family);font-size:.75rem;font-size:var(--t42-font-size);height:auto;margin:0;padding:0 8px 0 0;position:relative;text-align:left;width:128px}body .jsoneditor-contextmenu .jsoneditor-menu button::-moz-focus-inner{border:0;padding:0}body .jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-default{width:96px}body .jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-expand{border-left:1px solid var(--t42-color-opacity-10);float:right;height:24px;width:32px}body .jsoneditor-contextmenu .jsoneditor-menu li{overflow:hidden}body .jsoneditor-contextmenu .jsoneditor-menu li ul{border:none;box-shadow:inset var(--t42-shadow);display:none;left:-10px;padding:0 10px;position:relative;top:0;transition:all .3s ease-out}body .jsoneditor-contextmenu .jsoneditor-menu li ul .jsoneditor-icon{margin-left:24px}body .jsoneditor-contextmenu .jsoneditor-menu li ul li button{animation:all 1s ease-in-out;padding-left:24px}body .jsoneditor-contextmenu .jsoneditor-menu li button .jsoneditor-expand{background-image:"/";background-position:0 -72px;height:24px;margin:0 4px 0 0;padding:0;position:absolute;right:0;top:0;width:24px}body .jsoneditor-contextmenu .jsoneditor-icon{background-image:"/";border:none;height:24px;left:0;margin:0;padding:0;position:absolute;top:0;width:24px}body .jsoneditor-contextmenu .jsoneditor-text{word-wrap:break-word;padding:4px 0 4px 24px}body .jsoneditor-contextmenu .jsoneditor-text.jsoneditor-right-margin{padding-right:24px}body .jsoneditor-contextmenu .jsoneditor-separator{border-top:1px solid var(--t42-color-opacity-10);height:0;margin-top:5px;padding-top:5px}body .jsoneditor-contextmenu button.jsoneditor-remove .jsoneditor-icon{background-position:-24px 0}body .jsoneditor-contextmenu button.jsoneditor-append .jsoneditor-icon,body .jsoneditor-contextmenu button.jsoneditor-insert .jsoneditor-icon{background-position:0 0}body .jsoneditor-contextmenu button.jsoneditor-duplicate .jsoneditor-icon{background-position:-48px 0}body .jsoneditor-contextmenu button.jsoneditor-sort-asc .jsoneditor-icon{background-position:-168px 0}body .jsoneditor-contextmenu button.jsoneditor-sort-desc .jsoneditor-icon{background-position:-192px 0}body .jsoneditor-contextmenu button.jsoneditor-transform .jsoneditor-icon{background-position:-216px 0}body .jsoneditor-contextmenu button.jsoneditor-extract .jsoneditor-icon{background-position:0 -24px}body .jsoneditor-contextmenu button.jsoneditor-type-string .jsoneditor-icon{background-position:-144px 0}body .jsoneditor-contextmenu button.jsoneditor-type-auto .jsoneditor-icon{background-position:-120px 0}body .jsoneditor-contextmenu button.jsoneditor-type-object .jsoneditor-icon{background-position:-72px 0}body .jsoneditor-contextmenu button.jsoneditor-type-array .jsoneditor-icon{background-position:-96px 0}body .jsoneditor-contextmenu button.jsoneditor-type-modes .jsoneditor-icon{background-image:none;width:6px}body .jsoneditor-contextmenu li,body .jsoneditor-contextmenu ul{box-sizing:initial;position:relative}body .jsoneditor-contextmenu .jsoneditor-menu button:focus,body .jsoneditor-contextmenu .jsoneditor-menu button:hover{background-color:var(--t42-color-opacity-10);color:var(--t42-content-color);outline:none}body .jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected,body .jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected:focus,body .jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected:hover{background-color:var(--red);color:var(--t42-content-color)}body .jsoneditor-contextmenu .jsoneditor-menu li ul li button:focus,body .jsoneditor-contextmenu .jsoneditor-menu li ul li button:hover{background-color:var(--t42-color-opacity-10)}body .jsoneditor-modal{border-radius:2px!important;box-shadow:var(--t42-shadow);color:var(--t42-content-color);line-height:1.3em;max-width:95%;padding:45px 15px 15px!important}body .jsoneditor-modal.jsoneditor-modal-transform{width:600px!important}body .jsoneditor-modal .pico-modal-header{background:#1c89ea;background:var(--primary);box-sizing:border-box;color:var(--t42-content-color);font-family:Montserrat,Helvetica Neue,Arial,sans-serif;font-family:var(--t42-font-family);font-size:11pt;height:30px;left:0;line-height:30px;padding:0 10px;position:absolute;top:0;width:100%}body .jsoneditor-modal table{width:100%}body .jsoneditor-modal table td{padding:3px 0}body .jsoneditor-modal table td.jsoneditor-modal-input{padding-right:0;text-align:right;white-space:nowrap}body .jsoneditor-modal table td.jsoneditor-modal-actions{padding-top:15px}body .jsoneditor-modal table th{vertical-align:middle}body .jsoneditor-modal p:first-child{margin-top:0}body .jsoneditor-modal a{color:#1c89ea;color:var(--primary)}body .jsoneditor-modal .jsoneditor-jmespath-block{margin-bottom:10px}body .jsoneditor-modal .pico-close{background:none!important;color:var(--t42-content-color);font-size:24px!important;right:7px!important;top:7px!important}body .jsoneditor-modal input{padding:4px}body .jsoneditor-modal input[type=text]{cursor:inherit}body .jsoneditor-modal input[disabled]{background:var(--t42-content-color-muted);color:var(--t42-content-color-muted)}body .jsoneditor-modal .jsoneditor-select-wrapper{display:inline-block;position:relative}body .jsoneditor-modal .jsoneditor-select-wrapper:after{border-left:5px solid #0000;border-right:5px solid #0000;border-top:6px solid #666;content:"";height:0;pointer-events:none;position:absolute;right:8px;top:14px;width:0}body .jsoneditor-modal select{-webkit-appearance:none;appearance:none;font-size:.75rem;font-size:var(--t42-font-size);line-height:1.5em;max-width:350px;min-width:180px;padding:3px 24px 3px 10px;text-indent:0;text-overflow:""}body .jsoneditor-modal select::-ms-expand{display:none}body .jsoneditor-modal .jsoneditor-button-group input{border-left-style:none;border-radius:0;margin:0;padding:4px 10px}body .jsoneditor-modal .jsoneditor-button-group input.jsoneditor-button-first{border-bottom-left-radius:3px;border-top-left-radius:3px}body .jsoneditor-modal .jsoneditor-button-group input.jsoneditor-button-last{border-bottom-right-radius:3px;border-top-right-radius:3px}body .jsoneditor-modal .jsoneditor-transform-preview{background:var(--t42-color-opacity-10);height:200px}body .jsoneditor-modal .jsoneditor-transform-preview.jsoneditor-error{color:var(--red)}body .jsoneditor-modal .jsoneditor-jmespath-wizard{border-radius:3px;line-height:1.2em;padding:0;width:100%}body .jsoneditor-modal .jsoneditor-jmespath-label{color:#1e90ff;font-weight:700;margin-bottom:5px;margin-top:20px}body .jsoneditor-modal .jsoneditor-jmespath-wizard-table{border-collapse:collapse;width:100%}body .jsoneditor-modal .jsoneditor-jmespath-wizard-label{font-style:italic;margin:4px 0 2px}body .jsoneditor-modal .jsoneditor-inline{display:inline-block;padding-bottom:2px;padding-top:2px;position:relative;width:100%}body .jsoneditor-modal .jsoneditor-inline:not(:last-child){padding-right:2px}body .jsoneditor-modal .jsoneditor-jmespath-filter{display:flex;flex-wrap:wrap}body .jsoneditor-modal .jsoneditor-jmespath-filter-field{width:180px}body .jsoneditor-modal .jsoneditor-jmespath-filter-relation{width:100px}body .jsoneditor-modal .jsoneditor-jmespath-filter-value{flex:1 1;min-width:180px}body .jsoneditor-modal .jsoneditor-jmespath-sort-field{width:170px}body .jsoneditor-modal .jsoneditor-jmespath-sort-order{width:150px}body .jsoneditor-modal .jsoneditor-jmespath-select-fields{width:100%}body .jsoneditor-modal .selectr-selected{border-color:var(--t42-color-opacity-10);padding:4px 28px 4px 8px}body .jsoneditor-modal .selectr-selected .selectr-tag{background-color:#1c89ea;background-color:var(--primary);border-radius:5px}body .jsoneditor-modal table td,body .jsoneditor-modal table th{border-collapse:collapse;border-spacing:0;color:var(--t42-content-color);font-weight:400;text-align:left;vertical-align:middle}body .jsoneditor-modal #query,body .jsoneditor-modal input,body .jsoneditor-modal input[type=text],body .jsoneditor-modal input[type=text]:focus,body .jsoneditor-modal select,body .jsoneditor-modal textarea{background:#fff;border:1px solid var(--t42-color-opacity-10);border-radius:3px;color:var(--t42-content-color);padding:4px}body .jsoneditor-modal #query,body .jsoneditor-modal textarea{border-radius:0;border-radius:initial}body .jsoneditor-modal,body .jsoneditor-modal #query,body .jsoneditor-modal input,body .jsoneditor-modal input[type=text],body .jsoneditor-modal option,body .jsoneditor-modal select,body .jsoneditor-modal table td,body .jsoneditor-modal table th,body .jsoneditor-modal textarea{font-family:Montserrat,Helvetica Neue,Arial,sans-serif;font-family:var(--t42-font-family);font-size:10.5pt}body .jsoneditor-modal #query,body .jsoneditor-modal .jsoneditor-transform-preview{box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--bs-font-monospace);font-size:.75rem;font-size:var(--t42-font-size);width:100%}body .jsoneditor-modal input[type=button],body .jsoneditor-modal input[type=submit]{background:var(--t42-color-opacity-10);padding:4px 20px}body .jsoneditor-modal input,body .jsoneditor-modal select{cursor:pointer}body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-asc input.jsoneditor-button-asc,body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-desc input.jsoneditor-button-desc{border-color:#1c89ea;border-color:var(--primary);color:var(--t42-content-color)}body .jsoneditor{border:thin solid #1c89ea;border:thin solid var(--primary);box-sizing:border-box;color:var(--t42-content-color);height:100%;line-height:100%;padding:0;position:relative;width:100%}body div.jsoneditor-default,body div.jsoneditor-field,body div.jsoneditor-readonly,body div.jsoneditor-value{word-wrap:break-word;border:1px solid #0000;float:left;line-height:16px;margin:1px;min-height:16px;min-width:32px;padding:2px}body div.jsoneditor-field p,body div.jsoneditor-value p{margin:0}body div.jsoneditor-value{word-break:break-word}body div.jsoneditor-value.jsoneditor-empty:after{content:"value"}body div.jsoneditor-value.jsoneditor-string{color:var(--green)}body div.jsoneditor-value.jsoneditor-number{color:var(--red)}body div.jsoneditor-value.jsoneditor-boolean{color:var(--yellow)}body div.jsoneditor-value.jsoneditor-null{color:#1c89ea;color:var(--primary)}body div.jsoneditor-value.jsoneditor-color-value{color:var(--t42-content-color)}body div.jsoneditor-value.jsoneditor-invalid{color:#fff;color:var(--white)}body div.jsoneditor-readonly{color:var(--t42-content-color-muted);min-width:16px}body div.jsoneditor-empty{border-color:var(--t42-color-opacity-10);border-radius:2px;border-style:dashed}body div.jsoneditor-field.jsoneditor-empty:after{content:"field"}body div.jsoneditor td{vertical-align:top}body div.jsoneditor td.jsoneditor-separator{color:var(--t42-content-color-muted);padding:3px 0;vertical-align:top}body div.jsoneditor td.jsoneditor-tree{vertical-align:top}body div.jsoneditor.busy pre.jsoneditor-preview{background:var(--t42-color-opacity-10);color:var(--t42-content-color-muted)}body div.jsoneditor.busy div.jsoneditor-busy{display:inherit}body div.jsoneditor code.jsoneditor-preview{background:none}body div.jsoneditor.jsoneditor-mode-preview pre.jsoneditor-preview{box-sizing:border-box;height:100%;margin:0;overflow:auto;padding:2px;white-space:pre-wrap;width:100%;word-break:break-all}body div.jsoneditor-default{color:var(--t42-content-color-muted);padding-left:10px}body div.jsoneditor-tree{background:var(--t42-content-color);height:100%;overflow:auto;position:relative;width:100%}body div.jsoneditor-tree button.jsoneditor-button{background-color:initial;background-image:"/";border:none;cursor:pointer;height:24px;margin:0;padding:0;width:24px}body div.jsoneditor-tree button.jsoneditor-button:focus{background-color:var(--t42-color-opacity-10);outline:1px solid #e5e5e5}body div.jsoneditor-tree button.jsoneditor-collapsed{background-position:0 -48px}body div.jsoneditor-tree button.jsoneditor-expanded{background-position:0 -72px}body div.jsoneditor-tree button.jsoneditor-contextmenu-button{background-position:-48px -72px}body div.jsoneditor-tree button.jsoneditor-invisible{background:none;visibility:hidden}body div.jsoneditor-tree button.jsoneditor-dragarea{background-image:"/";background-position:-72px -72px;cursor:move}body div.jsoneditor-tree :focus{outline:none}body div.jsoneditor-tree div.jsoneditor-show-more{background-color:var(--t42-color-opacity-10);border-radius:3px;font-family:Montserrat,Helvetica Neue,Arial,sans-serif;font-family:var(--t42-font-family);font-size:.75rem;font-size:var(--t42-font-size);margin:2px 0;padding:3px 4px}body div.jsoneditor-tree div.jsoneditor-show-more,body div.jsoneditor-tree div.jsoneditor-show-more a{color:var(--t42-content-color-muted);display:inline-block}body div.jsoneditor-tree div.jsoneditor-color{border:1px solid var(--t42-content-color-muted);cursor:pointer;display:inline-block;height:12px;margin:4px;width:12px}body div.jsoneditor-tree div.jsoneditor-color.jsoneditor-color-readonly{cursor:inherit}body div.jsoneditor-tree div.jsoneditor-date{background:var(--t42-content-color);border-radius:3px;color:var(--t42-content-color);display:inline-block;font-family:Montserrat,Helvetica Neue,Arial,sans-serif;font-family:var(--t42-font-family);margin:0 3px;padding:3px}body div.jsoneditor-tree table.jsoneditor-tree{border-collapse:collapse;border-spacing:0;width:100%}body div.jsoneditor-tree .jsoneditor-button{display:block}body div.jsoneditor-tree .jsoneditor-button.jsoneditor-schema-error{background-color:initial;background-image:"/";background-position:-168px -48px;height:24px;margin:0 4px 0 0;padding:0;width:24px}body div.jsoneditor-outer{box-sizing:border-box;height:100%;margin:0;padding:0;position:static;width:100%}body div.jsoneditor-outer.has-nav-bar{margin-top:-26px;padding-top:26px}body div.jsoneditor-outer.has-nav-bar.has-main-menu-bar{margin-top:-61px;padding-top:61px}body div.jsoneditor-outer.has-status-bar{margin-bottom:-26px;padding-bottom:26px}body div.jsoneditor-outer.has-main-menu-bar{margin-top:-35px;padding-top:35px}body div.jsoneditor-busy{box-sizing:border-box;display:none;left:0;position:absolute;text-align:center;top:15%;width:100%}body div.jsoneditor-busy span{background-color:var(--t42-color-opacity-10);border:1px solid var(--t42-color-opacity-10);border-radius:3px;box-shadow:var(--t42-shadow);padding:5px 15px}body div.jsoneditor-field.jsoneditor-empty:after,body div.jsoneditor-value.jsoneditor-empty:after{color:var(--t42-content-color-muted);font-size:8pt;pointer-events:none}body a.jsoneditor-value.jsoneditor-url,body div.jsoneditor-value.jsoneditor-url{color:var(--green);text-decoration:underline}body a.jsoneditor-value.jsoneditor-url{display:inline-block;margin:2px;padding:2px}body a.jsoneditor-value.jsoneditor-url:focus,body a.jsoneditor-value.jsoneditor-url:hover{color:var(--red)}body div.jsoneditor-field.jsoneditor-highlight,body div.jsoneditor-field[contenteditable=true]:focus,body div.jsoneditor-field[contenteditable=true]:hover,body div.jsoneditor-value.jsoneditor-highlight,body div.jsoneditor-value[contenteditable=true]:focus,body div.jsoneditor-value[contenteditable=true]:hover{background-color:var(--t42-color-opacity-10);border:1px solid var(--t42-color-opacity-10);border-radius:2px}body div.jsoneditor-field.jsoneditor-highlight-active,body div.jsoneditor-field.jsoneditor-highlight-active:focus,body div.jsoneditor-field.jsoneditor-highlight-active:hover,body div.jsoneditor-value.jsoneditor-highlight-active,body div.jsoneditor-value.jsoneditor-highlight-active:focus,body div.jsoneditor-value.jsoneditor-highlight-active:hover{background-color:#fe0;border:1px solid #ffc700;border-radius:2px}body div.jsoneditor-value.jsoneditor-array,body div.jsoneditor-value.jsoneditor-object{min-width:16px}body div.jsoneditor-tree button.jsoneditor-contextmenu-button.jsoneditor-selected,body div.jsoneditor-tree button.jsoneditor-contextmenu-button:focus,body div.jsoneditor-tree button.jsoneditor-contextmenu-button:hover,body tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu-button{background-position:-48px -48px}body div.jsoneditor-tree div.jsoneditor-show-more a:focus,body div.jsoneditor-tree div.jsoneditor-show-more a:hover{color:var(--red)}body .ace-jsoneditor,body textarea.jsoneditor-text{min-height:150px}body .ace-jsoneditor.ace_editor,body textarea.jsoneditor-text.ace_editor{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--bs-font-monospace)}body textarea.jsoneditor-text{background-color:var(--t42-content-color);border:none;box-sizing:border-box;height:100%;margin:0;outline-width:0;resize:none;width:100%}body tr.jsoneditor-highlight,body tr.jsoneditor-selected{background-color:var(--t42-content-color-muted)}body tr.jsoneditor-selected button.jsoneditor-contextmenu-button,body tr.jsoneditor-selected button.jsoneditor-dragarea{visibility:hidden}body tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu-button,body tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{visibility:visible}body div.jsoneditor-tree button.jsoneditor-dragarea:focus,body div.jsoneditor-tree button.jsoneditor-dragarea:hover,body tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{background-position:-72px -48px}body div.jsoneditor td,body div.jsoneditor th,body div.jsoneditor tr{margin:0;padding:0}body .jsoneditor-popover,body .jsoneditor-schema-error,body div.jsoneditor td,body div.jsoneditor textarea,body div.jsoneditor th,body div.jsoneditor-field,body div.jsoneditor-value,body pre.jsoneditor-preview{color:var(--t42-content-color);font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--bs-font-monospace);font-size:.75rem;font-size:var(--t42-font-size)}body .jsoneditor-schema-error{cursor:default;display:inline-block;height:24px;line-height:24px;position:relative;text-align:center;width:24px}body .jsoneditor-popover{background-color:Rgb(var(--t42-bg-light));border-radius:3px;box-shadow:var(--t42-shadow);color:var(--t42-content-color);cursor:auto;padding:7px 10px;position:absolute;width:200px}body .jsoneditor-popover.jsoneditor-above{bottom:32px;left:-98px}body .jsoneditor-popover.jsoneditor-above:before{border-top:7px solid rgb(var(--t42-bg-light));bottom:-7px}body .jsoneditor-popover.jsoneditor-below{left:-98px;top:32px}body .jsoneditor-popover.jsoneditor-below:before{border-bottom:7px solid rgb(var(--t42-bg-light));top:-7px}body .jsoneditor-popover.jsoneditor-left{right:32px;top:-7px}body .jsoneditor-popover.jsoneditor-left:before{border-bottom:7px solid #0000;border-left:7px solid rgb(var(--t42-bg-light));border-top:7px solid #0000;content:"";left:inherit;margin-left:inherit;margin-top:-7px;position:absolute;right:-14px;top:19px}body .jsoneditor-popover.jsoneditor-right{left:32px;top:-7px}body .jsoneditor-popover.jsoneditor-right:before{border-bottom:7px solid #0000;border-right:7px solid rgb(var(--t42-bg-light));border-top:7px solid #0000;content:"";left:-14px;margin-left:inherit;margin-top:-7px;position:absolute;top:19px}body .jsoneditor-popover:before{border-left:7px solid #0000;border-right:7px solid #0000;content:"";display:block;left:50%;margin-left:-7px;position:absolute}body .jsoneditor-text-errors tr.jump-to-line:hover{cursor:pointer;text-decoration:underline}body .jsoneditor-schema-error:focus .jsoneditor-popover,body .jsoneditor-schema-error:hover .jsoneditor-popover{animation:fade-in .3s linear 1,move-up .3s linear 1;display:block}@keyframes fade-in{0%{opacity:0}to{opacity:1}}body .jsoneditor .jsoneditor-validation-errors-container{max-height:130px;overflow-y:auto}body .jsoneditor .jsoneditor-validation-errors{overflow:hidden;width:100%}body .jsoneditor .jsoneditor-additional-errors{background-color:Rgb(var(--t42-bg-mid));border-radius:8px;bottom:31px;color:var(--t42-content-color-muted);left:calc(50% - 92px);margin:auto;padding:7px 15px;position:absolute}body .jsoneditor .jsoneditor-additional-errors.visible{opacity:1;transition:opacity 2s linear;visibility:visible}body .jsoneditor .jsoneditor-additional-errors.hidden{opacity:0;transition:visibility 0s 2s,opacity 2s linear;visibility:hidden}body .jsoneditor .jsoneditor-text-errors{border-collapse:collapse;border-top:1px solid #ffc700;width:100%}body .jsoneditor .jsoneditor-text-errors td{padding:3px 6px;vertical-align:middle}body .jsoneditor .jsoneditor-text-errors td pre{margin:0;white-space:pre-wrap}body .jsoneditor .jsoneditor-text-errors tr{background-color:var(--t42-color-opacity-10)}body .jsoneditor .jsoneditor-text-errors tr.parse-error{background-color:var(--red)}body .jsoneditor-text-errors .jsoneditor-schema-error{border:none;cursor:pointer;height:24px;margin:0 4px 0 0;padding:0;width:24px}body .jsoneditor-text-errors tr .jsoneditor-schema-error{background-color:initial;background-image:"/";background-position:-168px -48px}body .jsoneditor-text-errors tr.parse-error .jsoneditor-schema-error{background-color:initial;background-image:"/";background-position:-25px 0}body .jsoneditor-anchor{cursor:pointer}body .jsoneditor-anchor .picker_wrapper.popup.popup_bottom{left:-10px;top:28px}body .fadein{animation:fadein .3s;-moz-animation:fadein .3s;-o-animation:fadein .3s}@keyframes fadein{0%{opacity:0}to{opacity:1}}body .jsoneditor-modal input[type=search].selectr-input{border:1px solid #d3d3d3;box-sizing:border-box;margin:2px;padding:4px;width:calc(100% - 4px)}body .jsoneditor-modal button.selectr-input-clear{right:8px}body .jsoneditor-menu{background-color:#1c89ea;background-color:var(--primary);border-bottom:1px solid #1c89ea;border-bottom:1px solid var(--primary);box-sizing:border-box;color:var(--t42-content-color);height:35px;margin:0;padding:2px;width:100%}body .jsoneditor-menu>.jsoneditor-modes>button,body .jsoneditor-menu>button{background-color:initial;background-image:"/";border:1px solid #0000;border-radius:2px;color:var(--t42-content-color);float:left;font-family:Montserrat,Helvetica Neue,Arial,sans-serif;font-family:var(--t42-font-family);font-size:var(--t42-font-size);height:26px;margin:2px;opacity:.8;padding:0;width:26px}body .jsoneditor-menu>.jsoneditor-modes>button:hover,body .jsoneditor-menu>button:hover{background-color:#fff3;border:1px solid #fff6}body .jsoneditor-menu>.jsoneditor-modes>button:active,body .jsoneditor-menu>.jsoneditor-modes>button:focus,body .jsoneditor-menu>button:active,body .jsoneditor-menu>button:focus{background-color:#ffffff4d}body .jsoneditor-menu>.jsoneditor-modes>button:disabled,body .jsoneditor-menu>button:disabled{background-color:initial;border:none;opacity:.5}body .jsoneditor-menu>button.jsoneditor-collapse-all{background-position:0 -96px}body .jsoneditor-menu>button.jsoneditor-expand-all{background-position:0 -120px}body .jsoneditor-menu>button.jsoneditor-sort{background-position:-120px -96px}body .jsoneditor-menu>button.jsoneditor-transform{background-position:-144px -96px}body .jsoneditor.jsoneditor-mode-form>.jsoneditor-menu>button.jsoneditor-sort,body .jsoneditor.jsoneditor-mode-form>.jsoneditor-menu>button.jsoneditor-transform,body .jsoneditor.jsoneditor-mode-view>.jsoneditor-menu>button.jsoneditor-sort,body .jsoneditor.jsoneditor-mode-view>.jsoneditor-menu>button.jsoneditor-transform{display:none}body .jsoneditor-menu>button.jsoneditor-undo{background-position:-24px -96px}body .jsoneditor-menu>button.jsoneditor-undo:disabled{background-position:-24px -120px}body .jsoneditor-menu>button.jsoneditor-redo{background-position:-48px -96px}body .jsoneditor-menu>button.jsoneditor-redo:disabled{background-position:-48px -120px}body .jsoneditor-menu>button.jsoneditor-compact{background-position:-72px -96px}body .jsoneditor-menu>button.jsoneditor-format{background-position:-72px -120px}body .jsoneditor-menu>button.jsoneditor-repair{background-position:-96px -96px}body .jsoneditor-menu>.jsoneditor-modes{display:inline-block;float:left}body .jsoneditor-menu>.jsoneditor-modes>button{background-image:none;padding-left:6px;padding-right:6px;width:auto}body .jsoneditor-menu>.jsoneditor-modes>button.jsoneditor-separator,body .jsoneditor-menu>button.jsoneditor-separator{margin-left:10px}body .jsoneditor-menu a{color:var(--t42-content-color);font-family:Montserrat,Helvetica Neue,Arial,sans-serif;font-family:var(--t42-font-family);font-size:.75rem;font-size:var(--t42-font-size);opacity:.8;vertical-align:middle}body .jsoneditor-menu a:hover{opacity:1}body .jsoneditor-menu a.jsoneditor-poweredBy{font-size:8pt;padding:10px;position:absolute;right:0;top:0}body .jsoneditor-navigation-bar{background-color:Rgb(var(--t42-bg-mid));border-bottom:1px solid var(--t42-color-opacity-10);box-sizing:border-box;color:var(--t42-content-color-muted);font-size:.75rem;font-size:var(--t42-font-size);height:26px;line-height:26px;margin:0;overflow:hidden;padding:0;width:100%}body .jsoneditor-navigation-bar,body .jsoneditor-search{font-family:Montserrat,Helvetica Neue,Arial,sans-serif;font-family:var(--t42-font-family)}body .jsoneditor-search{border-collapse:collapse;border-spacing:0;display:flex;position:absolute;right:4px;top:4px}body .jsoneditor-search input{border:none;color:var(--t42-content-color);font-family:Montserrat,Helvetica Neue,Arial,sans-serif;font-family:var(--t42-font-family);line-height:20px;margin:1px;outline:none;width:120px}body .jsoneditor-search button{background:"/";border:none;height:24px;margin:0;padding:0;vertical-align:top;width:16px}body .jsoneditor-search button:hover{background-color:initial}body .jsoneditor-search button.jsoneditor-refresh{background-position:-99px -73px;width:18px}body .jsoneditor-search button.jsoneditor-next{background-position:-124px -73px;cursor:pointer}body .jsoneditor-search button.jsoneditor-next:hover{background-position:-124px -49px}body .jsoneditor-search button.jsoneditor-previous{background-position:-148px -73px;cursor:pointer;margin-right:2px}body .jsoneditor-search button.jsoneditor-previous:hover{background-position:-148px -49px}body .jsoneditor-results{color:var(--t42-content-color);font-family:Montserrat,Helvetica Neue,Arial,sans-serif;font-family:var(--t42-font-family);line-height:26px;padding-right:5px}body .jsoneditor-frame{background-color:var(--t42-content-color);border:1px solid #0000;margin:0;padding:0 2px}body .jsoneditor-statusbar{background-color:Rgb(var(--t42-bg-mid));border-top:1px solid var(--t42-color-opacity-10);box-sizing:border-box;color:var(--t42-content-color-muted);font-size:.75rem;font-size:var(--t42-font-size);height:26px;line-height:26px}body .jsoneditor-statusbar>.jsoneditor-curserinfo-val{margin-right:12px}body .jsoneditor-statusbar>.jsoneditor-curserinfo-count{margin-left:4px}body .jsoneditor-statusbar>.jsoneditor-validation-error-icon{background-image:"/";background-position:-168px -48px;cursor:pointer;float:right;height:24px;margin-top:1px;padding:0;width:24px}body .jsoneditor-statusbar>.jsoneditor-validation-error-count{cursor:pointer;float:right;margin:0 4px 0 0}body .jsoneditor-statusbar>.jsoneditor-parse-error-icon{background-image:"/";background-position:-25px 0;float:right;height:24px;margin:1px;padding:0;width:24px}body .jsoneditor-statusbar .jsoneditor-array-info a{color:inherit}body div.jsoneditor-statusbar>.jsoneditor-curserinfo-label,body div.jsoneditor-statusbar>.jsoneditor-size-info{margin:0 4px}body .jsoneditor-treepath{outline:none;overflow:hidden;padding:0 5px;white-space:nowrap}body .jsoneditor-treepath.show-all{word-wrap:break-word;background-color:Rgb(var(--t42-bg-mid));box-shadow:var(--t42-shadow);position:absolute;white-space:normal;z-index:1}body .jsoneditor-treepath.show-all span.jsoneditor-treepath-show-all-btn{display:none}body .jsoneditor-treepath div.jsoneditor-contextmenu-root{left:0;position:absolute}body .jsoneditor-treepath .jsoneditor-treepath-show-all-btn{background-color:Rgb(var(--t42-bg-mid));cursor:pointer;height:20px;left:0;padding:0 3px;position:absolute}body .jsoneditor-treepath .jsoneditor-treepath-element{font-family:Montserrat,Helvetica Neue,Arial,sans-serif;font-family:var(--t42-font-family);font-size:.75rem;font-size:var(--t42-font-size);margin:1px}body .jsoneditor-treepath .jsoneditor-treepath-seperator{font-family:Montserrat,Helvetica Neue,Arial,sans-serif;font-family:var(--t42-font-family);font-size:9pt;margin:2px}body .jsoneditor-treepath span.jsoneditor-treepath-element:hover,body .jsoneditor-treepath span.jsoneditor-treepath-seperator:hover{cursor:pointer;text-decoration:underline}body .selectr-container{position:relative}body .selectr-container li{list-style:none}body .selectr-hidden{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}body .selectr-visible{height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:11}body .selectr-desktop.multiple .selectr-visible{display:none}body .selectr-desktop.multiple.native-open .selectr-visible{display:block;height:auto;min-height:200px!important;opacity:1;top:100%}body .selectr-container.multiple.selectr-mobile .selectr-selected{z-index:0}body .selectr-selected{background-color:var(--t42-content-color);border:1px solid rgb(var(--t42-bg-mid));border-radius:3px;box-sizing:border-box;cursor:pointer;padding:7px 28px 7px 14px;position:relative;width:100%;z-index:1}body .selectr-selected:before{border-color:#6c7a86 #0000 #0000;border-style:solid;border-width:4px 4px 0;content:"";height:0;position:absolute;right:10px;top:50%;transform:rotate(0deg) translate3d(0,-50%,0);width:0}body .selectr-container.native-open .selectr-selected:before,body .selectr-container.open .selectr-selected:before{border-color:#0000 #0000 #6c7a86;border-style:solid;border-width:0 4px 4px}body .selectr-label{display:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}body .selectr-placeholder{color:#6c7a86}body .selectr-tags{margin:0;padding:0;white-space:normal}body .has-selected .selectr-tags{margin:0 0 -2px}body .selectr-tag{background:#acb7bf none repeat scroll 0 0;border:none;border-radius:10px;color:var(--t42-content-color);cursor:default;float:left;list-style:none;margin:0 2px 2px 0;padding:2px 25px 2px 8px;position:relative}body .selectr-container.multiple.has-selected .selectr-selected{padding:5px 28px 5px 5px}body .selectr-options-container{background-color:var(--t42-content-color);border-color:#0000 Rgb(var(--t42-bg-mid)) Rgb(var(--t42-bg-mid));border-radius:0 0 3px 3px;border-width:0 1px 1px;box-sizing:border-box;display:none;left:0;position:absolute;top:calc(100% - 1px);width:100%;z-index:10000}body .selectr-container.open .selectr-options-container{display:block}body .selectr-input-container{display:none;position:relative}body .selectr-clear,body .selectr-input-clear,body .selectr-tag-remove{background-color:initial;border:none;cursor:pointer;height:20px;padding:0;position:absolute;right:22px;top:50%;transform:translate3d(0,-50%,0);width:20px;z-index:11}body .selectr-clear,body .selectr-input-clear{display:none}body .selectr-container.has-selected .selectr-clear,body .selectr-input-container.active .selectr-input-clear{display:block}body .selectr-selected .selectr-tag-remove{right:2px}body .selectr-clear:after,body .selectr-clear:before,body .selectr-input-clear:after,body .selectr-input-clear:before,body .selectr-tag-remove:after,body .selectr-tag-remove:before{background-color:#6c7a86;content:" ";height:10px;left:9px;position:absolute;top:5px;width:2px}body .selectr-tag-remove:after,body .selectr-tag-remove:before{background-color:var(--t42-content-color);height:12px;top:4px;width:3px}body .selectr-clear:before,body .selectr-input-clear:before,body .selectr-tag-remove:before{transform:rotate(45deg)}body .selectr-clear:after,body .selectr-input-clear:after,body .selectr-tag-remove:after{transform:rotate(-45deg)}body .selectr-input-container.active,body .selectr-input-container.active .selectr-clear{display:block}body .selectr-input{border:1px solid rgb(var(--t42-bg-mid));border-radius:3px;box-sizing:border-box;left:5px;margin:10px 15px;padding:7px 30px 7px 9px;top:5px;width:calc(100% - 30px)}body .selectr-notice{background-color:var(--t42-content-color);border-radius:0 0 3px 3px;border-top:1px solid rgb(var(--t42-bg-mid));box-sizing:border-box;display:none;padding:8px 16px;width:100%}body .selectr-container.notice .selectr-notice{display:block}body .selectr-container.notice .selectr-selected{border-radius:3px 3px 0 0}body .selectr-options{display:none;margin:0;max-height:200px;overflow-x:auto;overflow-y:scroll;padding:0;position:relative;top:calc(100% + 2px)}body .selectr-container.notice .selectr-options-container,body .selectr-container.open .selectr-input-container,body .selectr-container.open .selectr-options{display:block}body .selectr-option{cursor:pointer;display:block;font-weight:400;list-style:none outside none;padding:5px 20px;position:relative}body .selectr-options.optgroups>.selectr-option{padding-left:25px}body .selectr-optgroup{font-weight:700;padding:0}body .selectr-optgroup--label{font-weight:700;margin-top:10px;padding:5px 15px}body .selectr-match{text-decoration:underline}body .selectr-option.selected{background-color:#ddd}body .selectr-option.active{background-color:#5897fb;color:var(--t42-content-color)}body .selectr-option.disabled{opacity:.4}body .selectr-option.excluded{display:none}body .selectr-container.open .selectr-selected{border-color:Rgb(var(--t42-bg-mid)) Rgb(var(--t42-bg-mid)) #0000 Rgb(var(--t42-bg-mid));border-radius:3px 3px 0 0}body .selectr-container.open .selectr-selected:after{transform:rotate(180deg) translate3d(0,50%,0)}body .selectr-disabled{opacity:.6}body .has-selected .selectr-placeholder,body .selectr-empty{display:none}body .has-selected .selectr-label{display:block}body .taggable .selectr-selected{padding:4px 28px 4px 4px}body .taggable .selectr-selected:after{clear:both;content:" ";display:table}body .taggable .selectr-label{width:auto}body .taggable .selectr-tags{display:block;float:left}body .taggable .selectr-placeholder{display:none}body .input-tag{float:left;min-width:90px;width:auto}body .selectr-tag-input{border:none;font-family:inherit;font-size:inherit;font-weight:inherit;padding:3px 10px;width:100%}body .selectr-input-container.loading:after{animation:selectr-spin .5s linear 0s infinite normal forwards running;border:3px solid #ddd;border-radius:50%;border-top-color:#aaa;content:"";height:20px;position:absolute;right:20px;top:50%;transform:translate3d(0,-50%,0);transform-origin:50% 0 0;width:20px}@keyframes selectr-spin{0%{transform:rotate(0deg) translate3d(0,-50%,0)}to{transform:rotate(1turn) translate3d(0,-50%,0)}}body .selectr-container.open.inverted .selectr-selected{border-color:#0000 Rgb(var(--t42-bg-mid)) Rgb(var(--t42-bg-mid));border-radius:0 0 3px 3px}body .selectr-container.inverted .selectr-options-container{background-color:var(--t42-content-color);border-color:Rgb(var(--t42-bg-mid)) Rgb(var(--t42-bg-mid)) #0000;border-radius:3px 3px 0 0;border-width:1px 1px 0;bottom:calc(100% - 1px);top:auto}body .selectr-container ::placeholder{color:#6c7a86;opacity:1}body #jsoneditor{height:100%}body .jsoneditor{border-color:var(--t42-color-opacity-10)}body .jsoneditor textarea{background-color:Rgb(var(--t42-bg-dark));line-height:1.5;min-height:100%}body .jsoneditor input,body .jsoneditor input:focus{outline:0}body .jsoneditor-button:focus{outline:none}body .jsoneditor-menu{background-color:Rgb(var(--t42-bg-light));border-bottom-color:var(--t42-color-opacity-10)}body .jsoneditor-menu button{background-color:initial;background-image:var(--t42-json-icons)}body .jsoneditor-menu button:focus,body .jsoneditor-menu button:hover{color:var(--t42-link-hover-color)}body .jsoneditor-menu>.jsoneditor-modes>button,body .jsoneditor-menu>button{-webkit-backdrop-filter:var(--backdrop-filter);backdrop-filter:var(--backdrop-filter);border-radius:0;font-size:.75rem;transition-duration:.25s;transition-property:background-color,color;transition-timing-function:cubic-bezier(.45,0,.15,1)}body .jsoneditor-menu>.jsoneditor-modes>button:active,body .jsoneditor-menu>.jsoneditor-modes>button:hover:not(.disabled):not(:disabled),body .jsoneditor-menu>button:active,body .jsoneditor-menu>button:hover:not(.disabled):not(:disabled){background-color:var(--t42-color-opacity-10);border-color:#0000;color:var(--t42-link-hover-color)}body .jsoneditor-menu li button.jsoneditor-selected{background-color:var(--t42-color-opacity-10)}body .jsoneditor-menu .jsoneditor-poweredBy{display:none}body .jsoneditor-frame{background-color:initial;border-color:var(--t42-color-opacity-10);display:flex;padding:0 .875rem;transition-duration:.25s;transition-property:border-color;transition-timing-function:cubic-bezier(.45,0,.15,1)}body .jsoneditor-frame:focus-within{background-color:var(--t42-input-bg);border-color:#1c89ea;border-color:var(--primary);outline:0}body .jsoneditor-frame table td{vertical-align:middle}body .jsoneditor-search input[type=text],body .jsoneditor-search input[type=text]:focus{border:0}body .jsoneditor-search input{background-color:initial}body .jsoneditor-contextmenu{z-index:2}body .jsoneditor-contextmenu .jsoneditor-menu{-webkit-backdrop-filter:var(--backdrop-filter);backdrop-filter:var(--backdrop-filter);background:linear-gradient(to bottom right,rgba(var(--t42-bg-light),.75) 0,rgba(var(--t42-bg-dark),.75) 100%);border-color:var(--t42-color-opacity-10);box-shadow:var(--t42-shadow)}body .jsoneditor-contextmenu .jsoneditor-menu button button .jsoneditor-expand,body .jsoneditor-contextmenu .jsoneditor-menu li button .jsoneditor-expand{background-image:var(--t42-json-icons);z-index:1}body .jsoneditor-contextmenu .jsoneditor-menu button button.jsoneditor-selected,body .jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected{background-color:var(--t42-color-opacity-10);transition-duration:.25s;transition-property:background-color,color;transition-timing-function:cubic-bezier(.45,0,.15,1)}body .jsoneditor-contextmenu .jsoneditor-menu button button.jsoneditor-selected:focus,body .jsoneditor-contextmenu .jsoneditor-menu button button.jsoneditor-selected:hover,body .jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected:focus,body .jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected:hover{background-color:var(--t42-color-opacity-10);color:var(--t42-link-hover-color)}body .jsoneditor-contextmenu .jsoneditor-menu button{display:flex;justify-content:start}body .jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-default{float:left;z-index:1}body .jsoneditor-contextmenu .jsoneditor-menu li ul{left:0;padding:0!important}body .jsoneditor-contextmenu .jsoneditor-menu li ul li button{padding-left:1rem}body .jsoneditor-contextmenu .jsoneditor-menu li ul .jsoneditor-icon{margin-left:0;position:relative}body .jsoneditor-contextmenu .jsoneditor-menu .jsoneditor-text{line-height:1.5rem;padding:0}body .jsoneditor-contextmenu .jsoneditor-icon{background-image:var(--t42-json-icons);position:relative}body .jsoneditor-contextmenu .jsoneditor-separator{margin-top:0;padding-top:0}body .jsoneditor-mode-preview pre.jsoneditor-preview{border:0;line-height:1.5}body .jsoneditor-modal{-webkit-backdrop-filter:var(--backdrop-filter);backdrop-filter:var(--backdrop-filter);background:linear-gradient(to bottom right,rgba(var(--t42-bg-light),.75) 0,rgba(var(--t42-bg-dark),.75) 100%)!important;border-top:0;box-shadow:var(--t42-shadow)!important}body .jsoneditor-modal:before{background:linear-gradient(90deg,#1c89ea,#1c89ea80);content:"";display:block;height:.0625rem;left:0;position:absolute;right:0;top:0;width:100%}body .jsoneditor-modal .pico-modal-header{background:#0000;font-size:.75rem;padding:.5rem .988rem}body .jsoneditor-modal .pico-close{color:var(--t42-content-color-muted);right:1rem!important;top:1rem!important;transition-duration:.25s;transition-property:color;transition-timing-function:cubic-bezier(.45,0,.15,1)}body .jsoneditor-modal .pico-close:not(.disabled):not(:disabled).active,body .jsoneditor-modal .pico-close:not(.disabled):not(:disabled):focus,body .jsoneditor-modal .pico-close:not(.disabled):not(:disabled):hover{color:var(--t42-link-color)}body .jsoneditor-modal table td{font-size:.75rem;padding:0 .25rem}body .jsoneditor-modal table td.jsoneditor-modal-input{padding-bottom:.25rem;padding-top:.25rem;text-align:left}body .jsoneditor-modal table td.jsoneditor-modal-input.jsoneditor-modal-actions{text-align:right}body .jsoneditor-modal label,body .jsoneditor-modal p,body .jsoneditor-modal table th{font-size:.75rem}body .jsoneditor-modal select{min-width:12.375rem}body .jsoneditor-modal .selectr-selected{padding:0 .857rem}body .jsoneditor-modal #query,body .jsoneditor-modal input,body .jsoneditor-modal input[type=search],body .jsoneditor-modal input[type=text],body .jsoneditor-modal select,body .jsoneditor-modal textarea{background-color:var(--t42-input-bg);border-color:var(--t42-color-opacity-10);border-radius:0;font-size:.75rem;transition-duration:.25s;transition-property:border;transition-timing-function:cubic-bezier(.45,0,.15,1)}body .jsoneditor-modal #query:focus,body .jsoneditor-modal input:focus,body .jsoneditor-modal input[type=search]:focus,body .jsoneditor-modal input[type=text]:focus,body .jsoneditor-modal select:focus,body .jsoneditor-modal textarea:focus{border-color:#1c89ea;border-color:var(--primary);border-radius:0;box-shadow:none;outline:0;padding:0 0 0 .875rem}body .jsoneditor-modal #query.disabled,body .jsoneditor-modal #query:disabled,body .jsoneditor-modal #query[readonly],body .jsoneditor-modal input.disabled,body .jsoneditor-modal input:disabled,body .jsoneditor-modal input[readonly],body .jsoneditor-modal input[type=search].disabled,body .jsoneditor-modal input[type=search]:disabled,body .jsoneditor-modal input[type=search][readonly],body .jsoneditor-modal input[type=text].disabled,body .jsoneditor-modal input[type=text]:disabled,body .jsoneditor-modal input[type=text][readonly],body .jsoneditor-modal select.disabled,body .jsoneditor-modal select:disabled,body .jsoneditor-modal select[readonly],body .jsoneditor-modal textarea.disabled,body .jsoneditor-modal textarea:disabled,body .jsoneditor-modal textarea[readonly]{cursor:default;opacity:.65}body .jsoneditor-modal input[type=search].selectr-input{background-color:var(--t42-input-bg);border:var(--t42-border);line-height:1.5rem;margin:0;padding:0 .5rem;transition-duration:.25s;transition-property:border-color;transition-timing-function:cubic-bezier(.45,0,.15,1);width:100%}body .jsoneditor-modal input[type=search].selectr-input:hover{border-color:#1c89ea;border-color:var(--primary)}body .jsoneditor-modal .jsoneditor-select-wrapper:after{border-top:var(--t42-color-opacity-10)}body .jsoneditor-modal input[type=button],body .jsoneditor-modal input[type=submit]{background:#0000;border-radius:0;color:var(--t42-link-color);line-height:1.875rem;padding:0 .875rem;transition-duration:.25s;transition-property:background-color,border-color;transition-timing-function:cubic-bezier(.45,0,.15,1)}body .jsoneditor-modal input[type=button]:not(.disabled):not(:disabled).active,body .jsoneditor-modal input[type=button]:not(.disabled):not(:disabled):hover,body .jsoneditor-modal input[type=submit]:not(.disabled):not(:disabled).active,body .jsoneditor-modal input[type=submit]:not(.disabled):not(:disabled):hover{background:#1c89ea;background:var(--primary);border-color:var(--t42-color-opacity-30);color:#fff;color:var(--white)}body .jsoneditor-modal .jsoneditor-button-group input.jsoneditor-button-first{border-bottom-left-radius:0;border-left-style:solid;border-top-left-radius:0}body .jsoneditor-modal .jsoneditor-button-group input.jsoneditor-button-last{border-bottom-right-radius:0;border-top-right-radius:0}body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-asc input.jsoneditor-button-asc,body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-desc input.jsoneditor-button-desc{background:#1c89ea;background:var(--primary);color:#fff;color:var(--white)}body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-asc input.jsoneditor-button-asc:active,body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-asc input.jsoneditor-button-asc:focus,body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-asc input.jsoneditor-button-asc:hover,body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-desc input.jsoneditor-button-desc:active,body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-desc input.jsoneditor-button-desc:focus,body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-desc input.jsoneditor-button-desc:hover{border-color:var(--t42-color-opacity-30);color:#fff;color:var(--white)}body .jsoneditor-modal .jsoneditor-jmespath-label{color:var(--t42-content-color);font-weight:400}body .jsoneditor-modal .jsoneditor-jmespath-filter-value input{background-color:var(--t42-input-bg);font-size:.75rem;line-height:1.875rem;padding:0 0 0 .875rem;transition-duration:.25s;transition-property:border-color;transition-timing-function:cubic-bezier(.45,0,.15,1)}body .jsoneditor-modal .jsoneditor-jmespath-filter-value input:focus,body .jsoneditor-modal .jsoneditor-jmespath-filter-value input:hover{background-color:var(--t42-input-bg);border-color:#1c89ea;border-color:var(--primary)}body .jsoneditor-jmespath-block .jsoneditor-modal-actions{text-align:right}body div.jsoneditor td.jsoneditor-separator,body div.jsoneditor td.jsoneditor-tree{vertical-align:middle}body div.jsoneditor-tree{background:#0000}body div.jsoneditor-tree button.jsoneditor-button{background-image:var(--t42-json-icons);transition-duration:.25s;transition-property:background-color,outline-color;transition-timing-function:cubic-bezier(.45,0,.15,1)}body div.jsoneditor-tree button.jsoneditor-button:focus{background-color:initial;outline-color:var(--t42-color-opacity-10)}body tr.jsoneditor-highlight,body tr.jsoneditor-selected{background-color:var(--t42-color-opacity-10)}body .selectr-selected{background-color:var(--t42-input-bg);border-radius:0;font-size:.75rem;font-weight:400;height:2rem;line-height:1.875rem;transition-duration:.25s;transition-property:border-color;transition-timing-function:cubic-bezier(.45,0,.15,1)}body .selectr-selected:before{background:var(--t42-select-indicator) center center/1rem 1rem no-repeat;border:0;height:.75rem;right:.5rem;transform:translateY(-50%);transition-duration:.25s;transition-property:transform;transition-timing-function:cubic-bezier(.45,0,.15,1);width:.75rem}body .selectr-placeholder{color:var(--t42-content-color-muted)}body .selectr-container.open .selectr-selected{border-color:#1c89ea;border-color:var(--primary);border-radius:0}body .selectr-container.open .selectr-selected:before{border:0;transform:rotate(180deg) translateY(50%)}body .selectr-container.open .selectr-options-container{border-bottom-color:#1c89ea;border-bottom-color:var(--primary);border-left-color:#1c89ea;border-left-color:var(--primary);border-right-color:#1c89ea;border-right-color:var(--primary)}body .selectr-options{overflow-y:auto}body .selectr-options-container{background-color:Rgb(var(--t42-bg-dark));border-color:var(--t42-color-opacity-10);border-style:solid;border-width:1px;min-height:2rem}body .selectr-options .active{background-color:var(--t42-color-opacity-10);color:var(--t42-link-hover-color)}body .selectr-options .selected{background-color:#1c89ea;background-color:var(--primary);color:var(--t42-link-hover-color)}body .selectr-option{font-size:.75rem;line-height:2rem;padding:0 0 0 .875rem}body .selectr-input{background-color:var(--t42-input-bg);border:var(--t42-border);transition-duration:.25s;transition-property:border-color;transition-timing-function:cubic-bezier(.45,0,.15,1)}body .selectr-input:hover{border-color:#1c89ea;border-color:var(--primary)}body .selectr-input-container{padding:.25rem}body .selectr-clear:after,body .selectr-clear:before{background-color:var(--t42-content-color)}body .jsoneditor .ace-jsoneditor .ace_text-input{min-height:auto}body .jsoneditor .ace-jsoneditor .ace_scroller,body .jsoneditor .ace-jsoneditor.ace_editor{background-color:Rgb(var(--t42-bg-dark))}body .jsoneditor .ace-jsoneditor .ace_gutter{background-color:Rgb(var(--t42-bg-mid));color:var(--t42-content-color-muted)}body .jsoneditor .ace-jsoneditor .ace_gutter-active-line{background-color:Rgb(var(--t42-bg-light))}body .jsoneditor .ace-jsoneditor .ace_cursor{border-color:Rgb(var(--t42-content-color))}body .jsoneditor .ace-jsoneditor .ace_marker-layer .ace_active-line{background-color:rgba(#616161,.25);background-color:rgba(var(--secondary),.25)}body .jsoneditor .ace-jsoneditor .ace_marker-layer .ace_selection{background-color:var(--t42-color-opacity-10)}body .jsoneditor .ace-jsoneditor .ace_marker-layer .ace_selected-word{background-color:var(--t42-color-opacity-10);border-color:var(--t42-color-opacity-10)}body .jsoneditor .ace-jsoneditor .ace_marker-layer .ace_bracket{border:var(--t42-border)}body .jsoneditor .ace-jsoneditor .ace_variable{color:var(--t42-content-color)}body .jsoneditor .ace-jsoneditor .ace_constant.ace_numeric{color:#ff511f}body .jsoneditor .ace-jsoneditor .ace_constant.ace_language{color:#f9a825}body .jsoneditor .ace-jsoneditor .ace_string{color:#43a047}body .jsoneditor .ace-jsoneditor .ace_fold{background-color:Rgb(var(--t42-bg-light));border-color:var(--t42-color-opacity-10);transition-duration:.25s;transition-property:background-image;transition-timing-function:cubic-bezier(.45,0,.15,1)}body .jsoneditor .ace-jsoneditor .ace_fold-widget:active,body .jsoneditor .ace-jsoneditor .ace_fold-widget:hover{background-color:var(--t42-color-opacity-10);border-color:var(--t42-color-opacity-30);box-shadow:none}body .pico-modal-contents{display:block} +/*# sourceMappingURL=main.20e683fe.css.map*/ \ No newline at end of file diff --git a/browser-platform-dev-react-seed/intents-resolver-ui/static/css/main.20e683fe.css.map b/browser-platform-dev-react-seed/intents-resolver-ui/static/css/main.20e683fe.css.map new file mode 100644 index 0000000..d6a68d8 --- /dev/null +++ b/browser-platform-dev-react-seed/intents-resolver-ui/static/css/main.20e683fe.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/main.20e683fe.css","mappings":"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","sources":["index.css","../node_modules/@glue42/theme/dist/t42bootstrap.bundle.css"],"sourcesContent":["body {\r\n margin: 0;\r\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\r\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\r\n sans-serif;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\ncode {\r\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\r\n monospace;\r\n}\r\n",":root{--bs-blue: #1c89ea;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #fd397a;--bs-red: #ff511f;--bs-orange: #fd7e14;--bs-yellow: #f9a825;--bs-green: #43a047;--bs-teal: #616161;--bs-cyan: #469eb9;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-primary: #1c89ea;--bs-secondary: #616161;--bs-success: #43a047;--bs-info: #469eb9;--bs-warning: #f9a825;--bs-danger: #ff511f;--bs-light: #616161;--bs-dark: #616161;--bs-primary-rgb: 28,137,234;--bs-secondary-rgb: 97,97,97;--bs-success-rgb: 67,160,71;--bs-info-rgb: 70,158,185;--bs-warning-rgb: 249,168,37;--bs-danger-rgb: 255,81,31;--bs-light-rgb: 97,97,97;--bs-dark-rgb: 97,97,97;--bs-white-rgb: 255,255,255;--bs-black-rgb: 0,0,0;--bs-body-color-rgb: 33,37,41;--bs-body-bg-rgb: 255,255,255;--bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;--bs-gradient: linear-gradient(180deg, rgba(255,255,255,0.15), rgba(255,255,255,0));--bs-body-font-family: Montserrat,Helvetica Neue,Arial,sans-serif;--bs-body-font-size: .75rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-bg: #fff}:root{--t42-font-family: \"Montserrat\", \"Helvetica Neue\", Arial, sans-serif;--t42-font-size: 0.75rem;--bs-gutter-x: 0.938rem;--primary: #1c89ea;--secondary: #616161;--success: #43a047;--info: #616161;--warning: #f9a825;--danger: #ff511f;--light: #616161;--dark: #616161;--white: #ffffff}.dark{--t42-bg-light-base: 0, 0%;--t42-bg-light-l: 18%;--t42-bg-light: 45, 45, 45;--t42-bg-mid: 37, 37, 37;--t42-bg-dark: 30, 30, 30;--t42-content-color-base: 0, 0%;--t42-content-color: #bababa;--t42-content-color-l: 73%;--t42-content-color-muted: hsl(var(--t42-content-color-base), 63%);--t42-content-color-disabled: hsl(var(--t42-content-color-base), 43%);--t42-color-opacity-025: hsla(var(--t42-content-color-base), 100%, 0.025);--t42-color-opacity-05: hsla(var(--t42-content-color-base), 100%, 0.05);--t42-color-opacity-10: hsla(var(--t42-content-color-base), 100%, 0.1);--t42-color-opacity-20: hsla(var(--t42-content-color-base), 100%, 0.2);--t42-color-opacity-30: hsla(var(--t42-content-color-base), 100%, 0.3);--t42-link-color: hsl(var(--t42-content-color-base), 100%);--t42-shadow: 0 0 12px 0 hsla(var(--t42-content-color-base), 0%, 0.15);--t42-border: 0.0625rem solid var(--t42-color-opacity-10);--t42-logo-icon: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNzAuMSAxMTcuOCI+Cgk8cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTY3LjcsNTMuMiwxMTYuOCwyLjNBNy45LDcuOSwwLDAsMCwxMTEuMiwwYTguMSw4LjEsMCwwLDAtNS43LDIuM2wtOS45LDEwYTEuOSwxLjksMCwwLDAsMCwyLjhsNyw3LjFhMi4xLDIuMSwwLDAsMCwyLjksMGw0LjMtNC4zYTEuOSwxLjksMCwwLDEsMi44LDBsMzkuNiwzOS42YTEuOSwxLjksMCwwLDEsMCwyLjhMMTEyLjYsOTkuOWExLjksMS45LDAsMCwxLTIuOCwwTDcwLjIsNjAuM2ExLjksMS45LDAsMCwxLDAtMi44bDQtNGEyLjEsMi4xLDAsMCwwLDAtMi45bC03LjEtN2ExLjksMS45LDAsMCwwLTIuOCwwbC05LjcsOS42YTgsOCwwLDAsMCwwLDExLjNsNTAuOSw1MC45YTguMiw4LjIsMCwwLDAsNS43LDIuNCw4LDgsMCwwLDAsNS42LTIuNGw1MC45LTUwLjlBNy45LDcuOSwwLDAsMCwxNjcuNyw1My4yWiIgLz4KCTxwYXRoIGZpbGw9IiMxYzg5ZWEiIGQ9Ik0yLjMsNjQuNWw1MC45LDUwLjlhOC4yLDguMiwwLDAsMCw1LjcsMi40LDgsOCwwLDAsMCw1LjYtMi40bDEwLTkuOWEyLjEsMi4xLDAsMCwwLDAtMi45bC03LjEtN2ExLjksMS45LDAsMCwwLTIuOCwwbC00LjMsNC4zYTEuOSwxLjksMCwwLDEtMi44LDBMMTcuOSw2MC4zYTEuOSwxLjksMCwwLDEsMC0yLjhMNTcuNSwxNy45YTEuOSwxLjksMCwwLDEsMi44LDBMOTkuOSw1Ny41YTEuOSwxLjksMCwwLDEsMCwyLjhsLTQsNGExLjksMS45LDAsMCwwLDAsMi44bDcsNy4xYTIuMSwyLjEsMCwwLDAsMi45LDBsOS42LTkuN2E3LjksNy45LDAsMCwwLDAtMTEuM0w2NC41LDIuM0E3LjksNy45LDAsMCwwLDU4LjksMGE4LjEsOC4xLDAsMCwwLTUuNywyLjNMMi4zLDUzLjJBOCw4LDAsMCwwLDIuMyw2NC41WiIgLz4KPC9zdmc+Cg==);--t42-icon-color: var(--t42-link-color);--t42-list-group-hover-bg-special: hsla(var(--t42-content-color-base), 100%, 0.065);--backdrop-filter: blur(5px) saturate(200%);--accordion-filter: invert(1) brightness(1);--filter-close: invert(1);--t42-body: rgb(var(--t42-bg-dark));--pink: rgb(0 170 200);--t42-link-hover-color: hsl(var(--t42-bg-light-base), 100%);--t42-link-hover-bg: var(--t42-color-opacity-05);--t42-link-active-bg: var(--t42-color-opacity-10);--t42-input-bg: rgb(var(--t42-bg-dark));--t42-input-disabled-bg: Hsla(var(--t42-content-color-base), 100%, 0.075);--t42-tooltip-bg: rgba(var(--t42-bg-dark), 0.85);--t42-modal-bg: rgba(var(--t42-bg-light), 0.75);--t42-table-active-bg: rgba(255, 255, 255, 0.1);--t42-select-indicator: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiNFRUVFRUUiIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTIuNSA1LjVjLjQtLjQgMS0uNSAxLjYgMGwzLjkgMy43bDMuOS0zLjdjLjUtLjUgMS4xLS40IDEuNiAwYy40LjQuNCAxLjIgMCAxLjZjLS40LjQtNC43IDQuNS00LjcgNC41Yy0uMi4yLS41LjMtLjguM3MtLjYtLjEtLjgtLjNjMCAwLTQuMy00LjEtNC43LTQuNXMtLjQtMS4yIDAtMS42eiI+PC9wYXRoPjwvc3ZnPg==)}.light{--t42-bg-light-base: 0, 0%;--t42-bg-light-l: 100%;--t42-bg-light: 255, 255, 255;--t42-bg-mid: 250, 250, 250;--t42-bg-dark: 245, 245, 245;--t42-content-color-base: 0, 0%;--t42-content-color: #757575;--t42-content-color-l: 46%;--t42-content-color-muted: hsl(var(--t42-content-color-base), 66%);--t42-color-opacity-025: hsla(var(--t42-content-color-base), 0%, 0.025);--t42-color-opacity-05: hsla(var(--t42-content-color-base), 0%, 0.05);--t42-color-opacity-10: hsla(var(--t42-content-color-base), 0%, 0.075);--t42-color-opacity-30: hsla(var(--t42-content-color-base), 0%, 0.1);--t42-color-opacity-20: hsla(var(--t42-content-color-base), 0%, 0.2);--t42-link-color: hsl(var(--t42-content-color-base), 5%);--t42-shadow: 0 0 12px 0 hsla(var(--t42-content-color-base), 0%, 0.05);--t42-border: 0.0625rem solid var(--t42-color-opacity-10);--t42-logo-icon: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNzAuMSAxMTcuOCI+Cgk8cGF0aCBmaWxsPSIjNjA2MzY5IiBkPSJNMTY3LjcsNTMuMiwxMTYuOCwyLjNBNy45LDcuOSwwLDAsMCwxMTEuMiwwYTguMSw4LjEsMCwwLDAtNS43LDIuM2wtOS45LDEwYTEuOSwxLjksMCwwLDAsMCwyLjhsNyw3LjFhMi4xLDIuMSwwLDAsMCwyLjksMGw0LjMtNC4zYTEuOSwxLjksMCwwLDEsMi44LDBsMzkuNiwzOS42YTEuOSwxLjksMCwwLDEsMCwyLjhMMTEyLjYsOTkuOWExLjksMS45LDAsMCwxLTIuOCwwTDcwLjIsNjAuM2ExLjksMS45LDAsMCwxLDAtMi44bDQtNGEyLjEsMi4xLDAsMCwwLDAtMi45bC03LjEtN2ExLjksMS45LDAsMCwwLTIuOCwwbC05LjcsOS42YTgsOCwwLDAsMCwwLDExLjNsNTAuOSw1MC45YTguMiw4LjIsMCwwLDAsNS43LDIuNCw4LDgsMCwwLDAsNS42LTIuNGw1MC45LTUwLjlBNy45LDcuOSwwLDAsMCwxNjcuNyw1My4yWiIgLz4KCTxwYXRoIGZpbGw9IiMxYzg5ZWEiIGQ9Ik0yLjMsNjQuNWw1MC45LDUwLjlhOC4yLDguMiwwLDAsMCw1LjcsMi40LDgsOCwwLDAsMCw1LjYtMi40bDEwLTkuOWEyLjEsMi4xLDAsMCwwLDAtMi45bC03LjEtN2ExLjksMS45LDAsMCwwLTIuOCwwbC00LjMsNC4zYTEuOSwxLjksMCwwLDEtMi44LDBMMTcuOSw2MC4zYTEuOSwxLjksMCwwLDEsMC0yLjhMNTcuNSwxNy45YTEuOSwxLjksMCwwLDEsMi44LDBMOTkuOSw1Ny41YTEuOSwxLjksMCwwLDEsMCwyLjhsLTQsNGExLjksMS45LDAsMCwwLDAsMi44bDcsNy4xYTIuMSwyLjEsMCwwLDAsMi45LDBsOS42LTkuN2E3LjksNy45LDAsMCwwLDAtMTEuM0w2NC41LDIuM0E3LjksNy45LDAsMCwwLDU4LjksMGE4LjEsOC4xLDAsMCwwLTUuNywyLjNMMi4zLDUzLjJBOCw4LDAsMCwwLDIuMyw2NC41WiIgLz4KPC9zdmc+Cg==);--t42-icon-color: Hsl(var(--t42-content-color-base), 38%);--t42-list-group-hover-bg-special: hsla(var(--t42-content-color-base), 95%, 0.065);--backdrop-filter: blur(5px) saturate(200%);--accordion-filter: brightness(0%);--filter-close: invert(0);--t42-body: rgb(var(--t42-bg-mid));--t42-link-hover-color: hsl(var(--t42-bg-light-base), 0%);--t42-link-hover-bg: hsl(var(--t42-content-color-base), 95%);--t42-link-active-bg: hsl(var(--t42-content-color-base), 90%);--t42-input-bg: rgb(var(--t42-bg-light));--t42-input-disabled-bg: var(--t42-color-opacity-10);--t42-tooltip-bg: rgba(var(--t42-bg-light), 0.95);--t42-modal-bg: rgba(var(--t42-bg-light), 0.95);--t42-table-active-bg: rgba(0, 0, 0, 0.025);--t42-select-indicator: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiM2MTYxNjEiIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTIuNSA1LjVjLjQtLjQgMS0uNSAxLjYgMGwzLjkgMy43bDMuOS0zLjdjLjUtLjUgMS4xLS40IDEuNiAwYy40LjQuNCAxLjIgMCAxLjZjLS40LjQtNC43IDQuNS00LjcgNC41Yy0uMi4yLS41LjMtLjguM3MtLjYtLjEtLjgtLjNjMCAwLTQuMy00LjEtNC43LTQuNXMtLjQtMS4yIDAtMS42eiI+PC9wYXRoPjwvc3ZnPg==)}*,*::before,*::after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--t42-link-color)}h1{font-size:calc(1.26563rem + .1875vw)}@media (min-width: 1200px){h1{font-size:1.40625rem}}h2{font-size:1.125rem}h3{font-size:.98475rem}h4{font-size:.84375rem}h5{font-size:.75rem}h6{font-size:.7035rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-bs-original-title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:0.2rem 0.2rem 0;background-color:#1c89ea}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--t42-link-color);text-decoration:underline}a:hover{color:var(--t42-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr /* rtl:ignore */;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:inherit;color:var(--t42-content-color)}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:inherit;color:#469eb9;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:inherit;color:#fff;background-color:#212529;border-radius:.25rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.25rem;padding-bottom:.25rem;color:var(--t42-content-color-muted);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=\"button\"]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}button,[type=\"button\"],[type=\"reset\"],[type=\"submit\"]{-webkit-appearance:button}button:not(:disabled),[type=\"button\"]:not(:disabled),[type=\"reset\"]:not(:disabled),[type=\"submit\"]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=\"search\"]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}body{color:var(--t42-content-color);font-family:var(--t42-font-family);background-color:var(--t42-body)}a:focus,button:focus,div:focus,span:focus{outline:0}a{text-decoration:none}dt{font-weight:normal}::selection{color:var(--white);background-color:var(--primary)}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{border-radius:.25rem;background:transparent}::-webkit-scrollbar-thumb{border-radius:.25rem;background:var(--t42-color-opacity-10)}::-webkit-resizer{background:transparent}::-webkit-scrollbar-corner{background:transparent}::-webkit-scrollbar-thumb:window-inactive{background:transparent}::-webkit-scrollbar-thumb:hover,::-webkit-scrollbar-thumb:active{background:Hsla(var(--t42-content-color-base), 100%, 0.05)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:.75rem;color:var(--t42-link-color);text-align:left;background-color:Rgb(var(--t42-bg-mid));border:0;border-radius:0;overflow-anchor:none;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease}@media (prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--t42-link-color);background-color:Rgb(var(--t42-bg-mid));box-shadow:inset 0 -1px 0 var(--t42-color-opacity-10)}.accordion-button:not(.collapsed)::after{background-image:url(\"data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27var%28--t42-link-color%29%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e\");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:\"\";background-image:url(\"data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27var%28--t42-link-color%29%27%3e%3cpath fill-rule=%27evenodd%27 d=%27M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z%27/%3e%3c/svg%3e\");background-repeat:no-repeat;background-size:1.25rem;transition:transform 0.2s ease-in-out}@media (prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#1c89ea;outline:0;box-shadow:0 0 0 0 rgba(28,137,234,0.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:Rgb(var(--t42-bg-mid));border:1px solid var(--t42-color-opacity-10)}.accordion-item:first-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion-item:first-of-type .accordion-button{border-top-left-radius:0;border-top-right-radius:0}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.accordion-button::after,.accordion-button:not(.collapsed)::after{filter:var(--accordion-filter)}.accordion-button:disabled,.accordion-button.disabled{color:var(--t42-content-color-disabled)}.accordion-button:disabled::after,.accordion-button.disabled::after{opacity:0.25}.alert{position:relative;padding:.75rem .875rem;margin-bottom:.5rem;border:1px solid transparent;border-radius:0}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:2.625rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:.9375rem .875rem}.alert-primary{color:#11528c;background-color:#d2e7fb;border-color:#bbdcf9}.alert-primary .alert-link{color:#0e4270}.alert-secondary{color:#3a3a3a;background-color:#dfdfdf;border-color:#d0d0d0}.alert-secondary .alert-link{color:#2e2e2e}.alert-success{color:#28602b;background-color:#d9ecda;border-color:#c7e3c8}.alert-success .alert-link{color:#204d22}.alert-info{color:#2a5f6f;background-color:#daecf1;border-color:#c8e2ea}.alert-info .alert-link{color:#224c59}.alert-warning{color:#64430f;background-color:#feeed3;border-color:#fde5be}.alert-warning .alert-link{color:#50360c}.alert-danger{color:#993113;background-color:#ffdcd2;border-color:#ffcbbc}.alert-danger .alert-link{color:#7a270f}.alert-light{color:#3a3a3a;background-color:#dfdfdf;border-color:#d0d0d0}.alert-light .alert-link{color:#2e2e2e}.alert-dark{color:#3a3a3a;background-color:#dfdfdf;border-color:#d0d0d0}.alert-dark .alert-link{color:#2e2e2e}.alert{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:border-color;position:relative;z-index:10000;display:flex;align-items:center;border:0.0625rem solid var(--t42-color-opacity-10);overflow:hidden;color:var(--t42-content-color);background-color:Rgba(var(--t42-bg-light), 0.75);background-repeat:no-repeat;background-size:100%;backdrop-filter:var(--backdrop-filter)}.alert h5{margin-bottom:0;color:var(--t42-content-color)}.alert p{margin-bottom:0}.alert-link{color:var(--t42-link-color);font-weight:normal}.alert-dismissible .close{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:border-color;position:absolute;top:50%;right:0.75rem;width:1.5rem;height:1.5rem;padding:0;border:0;border-radius:50%;color:var(--t42-content-color);font-weight:700;font-size:1rem;line-height:1;background-color:var(--t42-color-opacity-05);transform:translateY(-50%);opacity:0.5}.alert-dismissible .close::before{position:relative;top:-1px}.alert-dismissible .close:hover{opacity:1}.alert::before{z-index:1;width:1.25rem;height:1.25rem;margin-right:0.875rem;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:var(--t42-icon-color);content:\"\"}.alert::after{position:absolute;top:0;left:0;z-index:-1;width:1px;height:1px;border-radius:50%;opacity:1;animation:color-pulse 3s infinite;content:\"\"}.alert-primary:hover,.alert-secondary:hover,.alert-info:hover,.alert-light:hover,.alert-dark:hover{border-color:#616161}.alert-primary::after,.alert-secondary::after,.alert-info::after,.alert-light::after,.alert-dark::after{background:#616161;background:radial-gradient(circle, rgba(255,255,255,0.35) 0%, rgba(97,97,97,0.75) 60%, #616161 75%, #616161 100%)}.alert-primary::before,.alert-secondary::before,.alert-info::before,.alert-light::before,.alert-dark::before{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M260.6 484.4q0-4.1-4.6-4.1q-16.9 0-29.2-12.3t-11.8-29.2q0-4.6-4.6-4.6t-4.6 4.6q0 21 14.8 35.8t35.3 14.3q4.6 0 4.6-4.6zM493.6 402.4q0 14.8-10.8 25.6t-25.6 10.8h-128q0 30.2-21.5 51.7t-51.7 21.5t-51.7-21.5t-21.5-51.7h-128q-14.8 0-25.6-10.8t-10.8-25.6q14.3-12.3 26.1-25.1t24.1-34.3t21.5-45.6t13.8-58.9t5.6-74.2q0-43 33.8-80.4t87.6-45.6q-2.6-5.1-2.6-10.8q0-11.8 8.2-19.5t19.5-8.2t19.5 8.2t8.2 19.5q0 5.6-2.6 10.8q54.3 8.2 87.6 45.6t33.8 80.4q0 39.9 5.6 74.2t14.3 58.9t21 45.6t24.6 34.3t25.6 25.1z%27%3E%3C/path%3E%3C/svg%3E\")}.alert-success:hover{border-color:#43a047}.alert-success::after{background:#43a047;background:radial-gradient(circle, rgba(255,255,255,0.35) 0%, rgba(67,160,71,0.75) 60%, #43a047 75%, #43a047 100%)}.alert-success::before{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M477.4 152.8q0 11.3-8.2 19.5l-245.8 245.8q-8.2 7.7-19.5 7.7t-19.5-7.7l-142.3-142.3q-7.7-8.2-7.7-19.5t7.7-19.5l38.9-38.9q8.2-8.2 19.5-8.2t19.5 8.2l84 84.5l187.4-187.9q8.2-8.2 19.5-8.2t19.5 8.2l38.9 38.9q8.2 7.7 8.2 19.5z%27%3E%3C/path%3E%3C/svg%3E\")}.alert-warning:hover{border-color:#f9a825}.alert-warning::after{background:#f9a825;background:radial-gradient(circle, rgba(255,255,255,0.35) 0%, rgba(249,168,37,0.75) 60%, #f9a825 75%, #f9a825 100%)}.alert-warning::before{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M292.4 410.9v-54.3q0-4.1-2.6-6.7t-6.1-2.6h-55.3q-3.6 0-6.1 2.6t-2.6 6.7v54.3q0 4.1 2.6 6.7t6.1 3.1h55.3q3.6 0 6.1-3.1t2.6-6.7zM291.8 304.4l5.1-131.6q0-3.1-2.6-5.1q-3.6-3.1-7.2-3.1h-62.5q-3.1 0-7.2 3.1q-2.6 2-2.6 6.1l4.6 130.6q0 2.6 3.1 4.6t6.7 1.5h52.7q4.1 0 7.2-1.5t2.6-4.6zM288.3 37.1l219.1 402.4q10.2 17.9-.5 35.8q-4.6 8.7-13.3 13.3t-17.9 5.1h-439.3q-9.2 0-17.9-5.1t-13.3-13.3q-10.8-17.9-.5-35.8l219.6-402.4q4.6-8.7 13.3-13.8t18.4-5.1t18.4 5.1t13.8 13.8z%27%3E%3C/path%3E%3C/svg%3E%0A\")}.alert-danger:hover{border-color:#ff511f}.alert-danger::after{background:#ff511f;background:radial-gradient(circle, rgba(255,255,255,0.35) 0%, rgba(255,81,31,0.75) 60%, #ff511f 75%, #ff511f 100%)}.alert-danger::before{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 402 512%27%3E%3Cpath d=%27M370.728 359.68q0 11.264-7.68 19.456l-38.912 38.912q-8.192 7.68-19.456 7.68t-19.456-7.68l-83.968-84.48-83.968 84.48q-8.192 7.68-19.456 7.68t-19.456-7.68l-38.912-38.912q-8.192-8.192-8.192-19.456t8.192-19.456l83.968-83.968-83.968-83.968q-8.192-8.192-8.192-19.456t8.192-19.456l38.912-38.912q8.192-8.192 19.456-8.192t19.456 8.192l83.968 83.968 83.968-83.968q8.192-8.192 19.456-8.192t19.456 8.192l38.912 38.912q7.68 7.68 7.68 19.456t-7.68 19.456l-83.968 83.968 83.968 83.968q7.68 7.68 7.68 19.456z%27%3E%3C/path%3E%3C/svg%3E\")}@keyframes color-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(250);opacity:0}100%{opacity:0}}.badge{display:inline-block;padding:.2rem .5rem;font-size:.75em;font-weight:300;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:1rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge{border:var(--t42-border);color:var(--t42-link-color);backdrop-filter:var(--backdrop-filter)}.badge.bg-primary{border:0.0625rem solid #1c89ea;background-color:rgba(28,137,234,0.15) !important}.badge.bg-secondary{border:0.0625rem solid #616161;background-color:rgba(97,97,97,0.15) !important}.badge.bg-success{border:0.0625rem solid #43a047;background-color:rgba(67,160,71,0.15) !important}.badge.bg-info{border:0.0625rem solid #469eb9;background-color:rgba(70,158,185,0.15) !important}.badge.bg-warning{border:0.0625rem solid #f9a825;background-color:rgba(249,168,37,0.15) !important}.badge.bg-danger{border:0.0625rem solid #ff511f;background-color:rgba(255,81,31,0.15) !important}.badge.bg-light{border:0.0625rem solid #616161;background-color:rgba(97,97,97,0.15) !important}.badge.bg-dark{border:0.0625rem solid #616161;background-color:rgba(97,97,97,0.15) !important}button .badge{border:0.0625rem solid var(--t42-color-opacity-30)}button:hover .badge{color:var(--white)}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:0 0;color:var(--t42-content-color);background:transparent url(\"data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27 fill=%27var%28--t42-content-color%29%27%3e%3cpath d=%27M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z%27/%3e%3c/svg%3e\") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:var(--t42-content-color);text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 0 rgba(28,137,234,0.25);opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.btn{display:inline-block;font-weight:400;line-height:1.875rem;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:1px solid transparent;padding:0 .875rem;font-size:.75rem;border-radius:0;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 0 rgba(28,137,234,0.25)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{pointer-events:none;opacity:.35}.btn-primary{color:#000;background-color:#1c89ea;border-color:#1c89ea}.btn-primary:hover{color:#000;background-color:#3e9bed;border-color:#3395ec}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#000;background-color:#3e9bed;border-color:#3395ec;box-shadow:0 0 0 0 rgba(24,116,199,0.5)}.btn-check:checked+.btn-primary,.btn-check:active+.btn-primary,.btn-primary:active,.btn-primary.active,.show>.btn-primary.dropdown-toggle{color:#000;background-color:#49a1ee;border-color:#3395ec}.btn-check:checked+.btn-primary:focus,.btn-check:active+.btn-primary:focus,.btn-primary:active:focus,.btn-primary.active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 0 rgba(24,116,199,0.5)}.btn-primary:disabled,.btn-primary.disabled{color:#000;background-color:#1c89ea;border-color:#1c89ea}.btn-secondary{color:#fff;background-color:#616161;border-color:#616161}.btn-secondary:hover{color:#fff;background-color:#525252;border-color:#4e4e4e}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#525252;border-color:#4e4e4e;box-shadow:0 0 0 0 rgba(121,121,121,0.5)}.btn-check:checked+.btn-secondary,.btn-check:active+.btn-secondary,.btn-secondary:active,.btn-secondary.active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#4e4e4e;border-color:#494949}.btn-check:checked+.btn-secondary:focus,.btn-check:active+.btn-secondary:focus,.btn-secondary:active:focus,.btn-secondary.active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 0 rgba(121,121,121,0.5)}.btn-secondary:disabled,.btn-secondary.disabled{color:#fff;background-color:#616161;border-color:#616161}.btn-success{color:#000;background-color:#43a047;border-color:#43a047}.btn-success:hover{color:#000;background-color:#5fae63;border-color:#56aa59}.btn-check:focus+.btn-success,.btn-success:focus{color:#000;background-color:#5fae63;border-color:#56aa59;box-shadow:0 0 0 0 rgba(57,136,60,0.5)}.btn-check:checked+.btn-success,.btn-check:active+.btn-success,.btn-success:active,.btn-success.active,.show>.btn-success.dropdown-toggle{color:#000;background-color:#69b36c;border-color:#56aa59}.btn-check:checked+.btn-success:focus,.btn-check:active+.btn-success:focus,.btn-success:active:focus,.btn-success.active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 0 rgba(57,136,60,0.5)}.btn-success:disabled,.btn-success.disabled{color:#000;background-color:#43a047;border-color:#43a047}.btn-info{color:#000;background-color:#469eb9;border-color:#469eb9}.btn-info:hover{color:#000;background-color:#62adc4;border-color:#59a8c0}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#62adc4;border-color:#59a8c0;box-shadow:0 0 0 0 rgba(60,134,157,0.5)}.btn-check:checked+.btn-info,.btn-check:active+.btn-info,.btn-info:active,.btn-info.active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#6bb1c7;border-color:#59a8c0}.btn-check:checked+.btn-info:focus,.btn-check:active+.btn-info:focus,.btn-info:active:focus,.btn-info.active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 0 rgba(60,134,157,0.5)}.btn-info:disabled,.btn-info.disabled{color:#000;background-color:#469eb9;border-color:#469eb9}.btn-warning{color:#000;background-color:#f9a825;border-color:#f9a825}.btn-warning:hover{color:#000;background-color:#fab546;border-color:#fab13b}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#fab546;border-color:#fab13b;box-shadow:0 0 0 0 rgba(212,143,31,0.5)}.btn-check:checked+.btn-warning,.btn-check:active+.btn-warning,.btn-warning:active,.btn-warning.active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#fab951;border-color:#fab13b}.btn-check:checked+.btn-warning:focus,.btn-check:active+.btn-warning:focus,.btn-warning:active:focus,.btn-warning.active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 0 rgba(212,143,31,0.5)}.btn-warning:disabled,.btn-warning.disabled{color:#000;background-color:#f9a825;border-color:#f9a825}.btn-danger{color:#000;background-color:#ff511f;border-color:#ff511f}.btn-danger:hover{color:#000;background-color:#ff6b41;border-color:#ff6235}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#000;background-color:#ff6b41;border-color:#ff6235;box-shadow:0 0 0 0 rgba(217,69,26,0.5)}.btn-check:checked+.btn-danger,.btn-check:active+.btn-danger,.btn-danger:active,.btn-danger.active,.show>.btn-danger.dropdown-toggle{color:#000;background-color:#ff744c;border-color:#ff6235}.btn-check:checked+.btn-danger:focus,.btn-check:active+.btn-danger:focus,.btn-danger:active:focus,.btn-danger.active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 0 rgba(217,69,26,0.5)}.btn-danger:disabled,.btn-danger.disabled{color:#000;background-color:#ff511f;border-color:#ff511f}.btn-light{color:#fff;background-color:#616161;border-color:#616161}.btn-light:hover{color:#fff;background-color:#525252;border-color:#4e4e4e}.btn-check:focus+.btn-light,.btn-light:focus{color:#fff;background-color:#525252;border-color:#4e4e4e;box-shadow:0 0 0 0 rgba(121,121,121,0.5)}.btn-check:checked+.btn-light,.btn-check:active+.btn-light,.btn-light:active,.btn-light.active,.show>.btn-light.dropdown-toggle{color:#fff;background-color:#4e4e4e;border-color:#494949}.btn-check:checked+.btn-light:focus,.btn-check:active+.btn-light:focus,.btn-light:active:focus,.btn-light.active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 0 rgba(121,121,121,0.5)}.btn-light:disabled,.btn-light.disabled{color:#fff;background-color:#616161;border-color:#616161}.btn-dark{color:#fff;background-color:#616161;border-color:#616161}.btn-dark:hover{color:#fff;background-color:#525252;border-color:#4e4e4e}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#525252;border-color:#4e4e4e;box-shadow:0 0 0 0 rgba(121,121,121,0.5)}.btn-check:checked+.btn-dark,.btn-check:active+.btn-dark,.btn-dark:active,.btn-dark.active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#4e4e4e;border-color:#494949}.btn-check:checked+.btn-dark:focus,.btn-check:active+.btn-dark:focus,.btn-dark:active:focus,.btn-dark.active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 0 rgba(121,121,121,0.5)}.btn-dark:disabled,.btn-dark.disabled{color:#fff;background-color:#616161;border-color:#616161}.btn-outline-primary{color:#1c89ea;border-color:#1c89ea}.btn-outline-primary:hover{color:#000;background-color:#1c89ea;border-color:#1c89ea}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 0 rgba(28,137,234,0.5)}.btn-check:checked+.btn-outline-primary,.btn-check:active+.btn-outline-primary,.btn-outline-primary:active,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show{color:#000;background-color:#1c89ea;border-color:#1c89ea}.btn-check:checked+.btn-outline-primary:focus,.btn-check:active+.btn-outline-primary:focus,.btn-outline-primary:active:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 0 rgba(28,137,234,0.5)}.btn-outline-primary:disabled,.btn-outline-primary.disabled{color:#1c89ea;background-color:transparent}.btn-outline-secondary{color:#616161;border-color:#616161}.btn-outline-secondary:hover{color:#fff;background-color:#616161;border-color:#616161}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 0 rgba(97,97,97,0.5)}.btn-check:checked+.btn-outline-secondary,.btn-check:active+.btn-outline-secondary,.btn-outline-secondary:active,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#616161;border-color:#616161}.btn-check:checked+.btn-outline-secondary:focus,.btn-check:active+.btn-outline-secondary:focus,.btn-outline-secondary:active:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 0 rgba(97,97,97,0.5)}.btn-outline-secondary:disabled,.btn-outline-secondary.disabled{color:#616161;background-color:transparent}.btn-outline-success{color:#43a047;border-color:#43a047}.btn-outline-success:hover{color:#000;background-color:#43a047;border-color:#43a047}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 0 rgba(67,160,71,0.5)}.btn-check:checked+.btn-outline-success,.btn-check:active+.btn-outline-success,.btn-outline-success:active,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show{color:#000;background-color:#43a047;border-color:#43a047}.btn-check:checked+.btn-outline-success:focus,.btn-check:active+.btn-outline-success:focus,.btn-outline-success:active:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 0 rgba(67,160,71,0.5)}.btn-outline-success:disabled,.btn-outline-success.disabled{color:#43a047;background-color:transparent}.btn-outline-info{color:#469eb9;border-color:#469eb9}.btn-outline-info:hover{color:#000;background-color:#469eb9;border-color:#469eb9}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 0 rgba(70,158,185,0.5)}.btn-check:checked+.btn-outline-info,.btn-check:active+.btn-outline-info,.btn-outline-info:active,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show{color:#000;background-color:#469eb9;border-color:#469eb9}.btn-check:checked+.btn-outline-info:focus,.btn-check:active+.btn-outline-info:focus,.btn-outline-info:active:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 0 rgba(70,158,185,0.5)}.btn-outline-info:disabled,.btn-outline-info.disabled{color:#469eb9;background-color:transparent}.btn-outline-warning{color:#f9a825;border-color:#f9a825}.btn-outline-warning:hover{color:#000;background-color:#f9a825;border-color:#f9a825}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 0 rgba(249,168,37,0.5)}.btn-check:checked+.btn-outline-warning,.btn-check:active+.btn-outline-warning,.btn-outline-warning:active,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show{color:#000;background-color:#f9a825;border-color:#f9a825}.btn-check:checked+.btn-outline-warning:focus,.btn-check:active+.btn-outline-warning:focus,.btn-outline-warning:active:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 0 rgba(249,168,37,0.5)}.btn-outline-warning:disabled,.btn-outline-warning.disabled{color:#f9a825;background-color:transparent}.btn-outline-danger{color:#ff511f;border-color:#ff511f}.btn-outline-danger:hover{color:#000;background-color:#ff511f;border-color:#ff511f}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 0 rgba(255,81,31,0.5)}.btn-check:checked+.btn-outline-danger,.btn-check:active+.btn-outline-danger,.btn-outline-danger:active,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show{color:#000;background-color:#ff511f;border-color:#ff511f}.btn-check:checked+.btn-outline-danger:focus,.btn-check:active+.btn-outline-danger:focus,.btn-outline-danger:active:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 0 rgba(255,81,31,0.5)}.btn-outline-danger:disabled,.btn-outline-danger.disabled{color:#ff511f;background-color:transparent}.btn-outline-light{color:#616161;border-color:#616161}.btn-outline-light:hover{color:#fff;background-color:#616161;border-color:#616161}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 0 rgba(97,97,97,0.5)}.btn-check:checked+.btn-outline-light,.btn-check:active+.btn-outline-light,.btn-outline-light:active,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show{color:#fff;background-color:#616161;border-color:#616161}.btn-check:checked+.btn-outline-light:focus,.btn-check:active+.btn-outline-light:focus,.btn-outline-light:active:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 0 rgba(97,97,97,0.5)}.btn-outline-light:disabled,.btn-outline-light.disabled{color:#616161;background-color:transparent}.btn-outline-dark{color:#616161;border-color:#616161}.btn-outline-dark:hover{color:#fff;background-color:#616161;border-color:#616161}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 0 rgba(97,97,97,0.5)}.btn-check:checked+.btn-outline-dark,.btn-check:active+.btn-outline-dark,.btn-outline-dark:active,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#616161;border-color:#616161}.btn-check:checked+.btn-outline-dark:focus,.btn-check:active+.btn-outline-dark:focus,.btn-outline-dark:active:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 0 rgba(97,97,97,0.5)}.btn-outline-dark:disabled,.btn-outline-dark.disabled{color:#616161;background-color:transparent}.btn-link{font-weight:400;color:var(--t42-link-color);text-decoration:underline}.btn-link:hover{color:var(--t42-link-hover-color)}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:0 .875rem;font-size:.75rem;border-radius:0}.btn-sm,.btn-group-sm>.btn{padding:0 .875rem;font-size:.75rem;border-radius:0}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.65625rem;padding-left:.65625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.65625rem;padding-left:.65625rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.65625rem;padding-left:.65625rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn ~ .btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}button,button:focus{outline:none}.btn{color:var(--t42-link-color);transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-color, border-color;cursor:default}.btn.disabled,.btn:disabled{color:var(--t42-link-color);cursor:default}.btn:not(.disabled):not(:disabled).active,.btn:not(.disabled):not(:disabled):hover{border-color:var(--t42-color-opacity-30);color:var(--white);backdrop-filter:var(--backdrop-filter)}.btn:focus,.btn:active{color:var(--white)}.btn-primary{background-color:rgba(28,137,234,0.05)}.btn-primary.disabled,.btn-primary:disabled{background-color:rgba(28,137,234,0.05)}.btn-primary:not(.disabled):not(:disabled).active,.btn-primary:not(.disabled):not(:disabled):hover{background-color:#1c89ea}.btn-primary:not(.disabled):not(:disabled).btn-icon.active,.btn-primary:not(.disabled):not(:disabled).btn-icon:focus,.btn-primary:not(.disabled):not(:disabled).btn-icon:hover{color:var(--white)}.btn-primary.dropdown-toggle.active,.btn-primary.dropdown-toggle:active,.btn-primary.dropdown-toggle:focus{border-color:var(--t42-color-opacity-30);background-color:#1c89ea}.btn-secondary{background-color:rgba(97,97,97,0.05)}.btn-secondary.disabled,.btn-secondary:disabled{background-color:rgba(97,97,97,0.05)}.btn-secondary:not(.disabled):not(:disabled).active,.btn-secondary:not(.disabled):not(:disabled):hover{background-color:#616161}.btn-secondary:not(.disabled):not(:disabled).btn-icon.active,.btn-secondary:not(.disabled):not(:disabled).btn-icon:focus,.btn-secondary:not(.disabled):not(:disabled).btn-icon:hover{color:var(--white)}.btn-secondary.dropdown-toggle.active,.btn-secondary.dropdown-toggle:active,.btn-secondary.dropdown-toggle:focus{border-color:var(--t42-color-opacity-30);background-color:#616161}.btn-success{background-color:rgba(67,160,71,0.05)}.btn-success.disabled,.btn-success:disabled{background-color:rgba(67,160,71,0.05)}.btn-success:not(.disabled):not(:disabled).active,.btn-success:not(.disabled):not(:disabled):hover{background-color:#43a047}.btn-success:not(.disabled):not(:disabled).btn-icon.active,.btn-success:not(.disabled):not(:disabled).btn-icon:focus,.btn-success:not(.disabled):not(:disabled).btn-icon:hover{color:var(--white)}.btn-success.dropdown-toggle.active,.btn-success.dropdown-toggle:active,.btn-success.dropdown-toggle:focus{border-color:var(--t42-color-opacity-30);background-color:#43a047}.btn-info{background-color:rgba(70,158,185,0.05)}.btn-info.disabled,.btn-info:disabled{background-color:rgba(70,158,185,0.05)}.btn-info:not(.disabled):not(:disabled).active,.btn-info:not(.disabled):not(:disabled):hover{background-color:#469eb9}.btn-info:not(.disabled):not(:disabled).btn-icon.active,.btn-info:not(.disabled):not(:disabled).btn-icon:focus,.btn-info:not(.disabled):not(:disabled).btn-icon:hover{color:var(--white)}.btn-info.dropdown-toggle.active,.btn-info.dropdown-toggle:active,.btn-info.dropdown-toggle:focus{border-color:var(--t42-color-opacity-30);background-color:#469eb9}.btn-warning{background-color:rgba(249,168,37,0.05)}.btn-warning.disabled,.btn-warning:disabled{background-color:rgba(249,168,37,0.05)}.btn-warning:not(.disabled):not(:disabled).active,.btn-warning:not(.disabled):not(:disabled):hover{background-color:#f9a825}.btn-warning:not(.disabled):not(:disabled).btn-icon.active,.btn-warning:not(.disabled):not(:disabled).btn-icon:focus,.btn-warning:not(.disabled):not(:disabled).btn-icon:hover{color:var(--white)}.btn-warning.dropdown-toggle.active,.btn-warning.dropdown-toggle:active,.btn-warning.dropdown-toggle:focus{border-color:var(--t42-color-opacity-30);background-color:#f9a825}.btn-danger{background-color:rgba(255,81,31,0.05)}.btn-danger.disabled,.btn-danger:disabled{background-color:rgba(255,81,31,0.05)}.btn-danger:not(.disabled):not(:disabled).active,.btn-danger:not(.disabled):not(:disabled):hover{background-color:#ff511f}.btn-danger:not(.disabled):not(:disabled).btn-icon.active,.btn-danger:not(.disabled):not(:disabled).btn-icon:focus,.btn-danger:not(.disabled):not(:disabled).btn-icon:hover{color:var(--white)}.btn-danger.dropdown-toggle.active,.btn-danger.dropdown-toggle:active,.btn-danger.dropdown-toggle:focus{border-color:var(--t42-color-opacity-30);background-color:#ff511f}.btn-light{background-color:rgba(97,97,97,0.05)}.btn-light.disabled,.btn-light:disabled{background-color:rgba(97,97,97,0.05)}.btn-light:not(.disabled):not(:disabled).active,.btn-light:not(.disabled):not(:disabled):hover{background-color:#616161}.btn-light:not(.disabled):not(:disabled).btn-icon.active,.btn-light:not(.disabled):not(:disabled).btn-icon:focus,.btn-light:not(.disabled):not(:disabled).btn-icon:hover{color:var(--white)}.btn-light.dropdown-toggle.active,.btn-light.dropdown-toggle:active,.btn-light.dropdown-toggle:focus{border-color:var(--t42-color-opacity-30);background-color:#616161}.btn-dark{background-color:rgba(97,97,97,0.05)}.btn-dark.disabled,.btn-dark:disabled{background-color:rgba(97,97,97,0.05)}.btn-dark:not(.disabled):not(:disabled).active,.btn-dark:not(.disabled):not(:disabled):hover{background-color:#616161}.btn-dark:not(.disabled):not(:disabled).btn-icon.active,.btn-dark:not(.disabled):not(:disabled).btn-icon:focus,.btn-dark:not(.disabled):not(:disabled).btn-icon:hover{color:var(--white)}.btn-dark.dropdown-toggle.active,.btn-dark.dropdown-toggle:active,.btn-dark.dropdown-toggle:focus{border-color:var(--t42-color-opacity-30);background-color:#616161}.btn-link{text-decoration:none;backdrop-filter:none}.btn-link:not(.disabled):not(:disabled).active,.btn-link:not(.disabled):not(:disabled):focus,.btn-link:not(.disabled):not(:disabled):hover{border-color:transparent;color:var(--t42-link-color);text-decoration:underline}.btn-icon:not(.disabled):not(:disabled).active,.btn-icon:not(.disabled):not(:disabled):focus,.btn-icon:not(.disabled):not(:disabled):hover{color:var(--t42-link-color)}.btn-icon-action{display:flex;justify-content:center;width:1rem;height:1rem;padding:0;border-radius:50%;font-size:0.75rem;transition:all .2s ease-in-out}@media (prefers-reduced-motion: reduce){.btn-icon-action{transition:none}}.btn-icon-action:not(.disabled):not(:disabled).active,.btn-icon-action:not(.disabled):not(:disabled):hover,.btn-icon-action:not(.disabled):not(:disabled):focus{border-color:transparent;background-color:Rgb(var(--t42-bg-light));box-shadow:var(--t42-shadow)}.btn-icon-action-right{position:absolute;right:0.25rem}.btn-icon-action-show-hover{transition:all .2s ease-in-out}@media (prefers-reduced-motion: reduce){.btn-icon-action-show-hover{transition:none}}.btn-icon-action-show-hover .btn-icon-action{opacity:0}.btn-icon-action-show-hover:not(.disabled):not(:disabled):hover .btn-icon-action{opacity:1}.btn-close{width:1rem;height:1rem;filter:var(--filter-close)}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:.5rem;list-style:none;background-color:rgba(0,0,0,0)}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, \"/\") /* rtl: var(--bs-breadcrumb-divider, \"/\") */}.breadcrumb-item.active{color:var(--t42-link-color)}.breadcrumb-item{font-size:83.3%}.breadcrumb-item.active{text-decoration:underline}.breadcrumb-item+.breadcrumb-item{padding-left:0}.breadcrumb-item+.breadcrumb-item::before{position:relative;top:0.063rem;left:0.063rem;width:0.75rem;height:0.75rem;background-color:var(--t42-content-color);content:\"\";-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M339.2,256.3c0,2.4-0.9,4.4-2.6,6.1L203,396c-1.7,1.7-3.8,2.6-6.1,2.6c-2.4,0-4.6-0.9-6.7-2.6l-14.3-14.3 c-2-2-3.1-4.3-3.1-6.7s1-4.6,3.1-6.7L288,256.3L175.9,143.6c-2-1.7-3.1-3.8-3.1-6.1s1-4.6,3.1-6.7l14.3-14.3c1.7-2,3.9-3.1,6.7-3.1 s4.8,1,6.1,3.1l133.6,133.1C338.3,251.3,339.2,253.5,339.2,256.3L339.2,256.3z%27/%3E%3C/svg%3E\")}mark,.mark{color:var(--white)}pre{background-color:var(--t42-bg-dark)}blockquote,.blockquote{padding:1rem 1rem 0.01rem;border-left:0.25rem solid var(--secondary);background-color:Rgb(var(--t42-bg-dark))}.blockquote-footer{margin-top:-2rem;margin-left:1.25rem;color:var(--t42-content-color-muted);font-size:0.875em}pre{border:0.0625rem solid var(--t42-color-opacity-10)}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:Rgba(var(--t42-bg-light), 0.75);background-clip:border-box;border:1px solid var(--t42-color-opacity-10);border-radius:0}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:0;border-top-right-radius:0}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1.25rem 1.25rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.625rem 1.25rem;margin-bottom:0;color:var(--t42-link-color);background-color:rgba(0,0,0,0);border-bottom:1px solid var(--t42-color-opacity-10)}.card-header:first-child{border-radius:0 0 0 0}.card-footer{padding:.625rem 1.25rem;color:var(--t42-link-color);background-color:rgba(0,0,0,0);border-top:1px solid var(--t42-color-opacity-10)}.card-footer:last-child{border-radius:0 0 0 0}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.625rem;margin-left:-.625rem;border-bottom:0}.card-header-tabs .nav-link.active{background-color:Rgba(var(--t42-bg-light), 0.75);border-bottom-color:Rgba(var(--t42-bg-light), 0.75)}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:0}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:0;border-top-right-radius:0}.card-img,.card-img-bottom{border-bottom-right-radius:0;border-bottom-left-radius:0}.card-group>.card{margin-bottom:.75rem}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.card{box-shadow:var(--t42-shadow);backdrop-filter:var(--backdrop-filter)}.card .card-header{border-bottom-width:0}.card .card-subtitle{margin-bottom:0.5rem;font-size:83.3%}.card.bg-primary{background-color:transparent !important}.card.bg-primary .card-header{background-color:Rgba(var(--t42-bg-mid), 0.75)}.card.bg-primary .card-body{background-color:Rgba(var(--t42-bg-light), 0.75)}.card.bg-secondary{background-color:transparent !important}.card.bg-secondary .card-header{background-color:Rgba(var(--t42-bg-light), 0.75)}.card.bg-secondary .card-body{background-color:Rgba(var(--t42-bg-mid), 0.75)}.card:not(.bg-primary):not(.bg-secondary) .card-header+.card-body{padding-top:0}.card-header-tabs{margin-bottom:0}.accordion .card:first-of-type,.accordion .card:not(:first-of-type):not(:last-of-type){margin-bottom:0.5rem;border-bottom:var(--t42-border)}.accordion .card-header{position:relative;padding:0}.accordion .card-header .btn-link{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;padding:0.75rem 2rem;line-height:1.4;text-align:left}.accordion .card-header .btn-link::before{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:transform;position:absolute;display:inline-block;width:0.75rem;height:0.75rem;background-color:var(--t42-content-color);transform:translateX(-1rem) translateY(0.063rem) rotate(-90deg);content:\"\";-webkit-mask-image:var(--t42-select-indicator)}.accordion .card-header .btn-link:hover{backdrop-filter:none}.accordion .card-header .btn-link.collapsed::before{transform:translateX(-1rem) translateY(0.063rem)}.accordion .card-header .btn-link.disabled::before,.accordion .card-header .btn-link:disabled::before{opacity:.35}.accordion .card-body{padding:0 1.25rem 1.25rem}.accordion .bg-primary .card-body,.accordion .bg-secondary .card-body{padding:1.25rem}.dropup,.dropend,.dropdown,.dropstart{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:0;content:\"\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:0 0;margin:0;font-size:.75rem;color:var(--t42-content-color);text-align:left;list-style:none;background-color:Rgba(var(--t42-bg-light), 0.75);background-clip:padding-box;border:1px solid var(--t42-color-opacity-10);border-radius:0}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:0;content:\"\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:0;content:\"\";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:0;content:\"\"}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:0;content:\"\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:0 0;overflow:hidden;border-top:1px solid var(--t42-color-opacity-10)}.dropdown-item{display:block;width:100%;padding:.375rem 1rem;clear:both;font-weight:400;color:var(--t42-content-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.dropdown-item:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.dropdown-item:hover,.dropdown-item:focus{color:var(--t42-link-hover-color);background-color:var(--t42-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--t42-link-hover-color);text-decoration:none;background-color:var(--t42-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:0 1rem;margin-bottom:0;font-size:.65625rem;color:#484848;white-space:nowrap}.dropdown-item-text{display:block;padding:.375rem 1rem;color:var(--t42-content-color)}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:var(--t42-color-opacity-10)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:hover,.dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:rgba(255,255,255,0.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:var(--t42-link-hover-color);background-color:var(--t42-link-active-bg)}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:var(--t42-color-opacity-10)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.dropdown-menu{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:opacity, visability;display:block;visibility:hidden;opacity:0;backdrop-filter:var(--backdrop-filter)}.dropdown-menu.show{visibility:visible;opacity:1}.dropdown-toggle::after{position:relative;width:0.5rem;height:0.5rem;border:0;background-color:var(--t42-link-color);content:\"\";-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg version=%271.1%27 xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M480.768 186.88l-211.968 211.456q-5.12 5.632-12.8 5.632t-12.8-5.632l-211.968-211.456q-5.632-5.632-5.632-13.312t5.632-12.8l47.616-47.104q5.12-5.632 12.8-5.632t12.8 5.632l151.552 151.552 151.552-151.552q5.632-5.632 12.8-5.632t13.312 5.632l47.104 47.104q5.632 5.632 5.632 12.8t-5.632 13.312z%27%3E%3C/path%3E%3C/svg%3E\")}.dropdown-toggle.show::after{color:var(--white)}.dropup .dropdown-toggle::after{position:relative;top:0.188rem;width:0.5rem;height:0.5rem;border:0;background-color:var(--t42-link-color);content:\"\";-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg version=%271.1%27 xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M480.768 351.488l-47.104 47.104q-5.632 5.12-13.312 5.12t-12.8-5.12l-151.552-152.064-151.552 152.064q-5.632 5.12-12.8 5.12t-12.8-5.12l-47.616-47.104q-5.632-5.632-5.632-13.312t5.632-12.8l211.968-211.968q5.632-5.12 12.8-5.12t12.8 5.12l211.968 211.968q5.632 5.632 5.632 12.8t-5.632 13.312z%27%3E%3C/path%3E%3C/svg%3E%0A\")}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:1px;padding-bottom:1px;margin-bottom:0;font-size:inherit;line-height:1.875rem}.col-form-label-lg{padding-top:1px;padding-bottom:1px;font-size:.75rem}.col-form-label-sm{padding-top:1px;padding-bottom:1px;font-size:.75rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--t42-content-color-muted)}.form-control{display:block;width:100%;padding:0 .875rem;font-size:.75rem;font-weight:400;line-height:1.875rem;color:var(--t42-link-color);background-color:var(--t42-input-bg);background-clip:padding-box;border:1px solid var(--t42-color-opacity-10);appearance:none;border-radius:0;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=\"file\"]{overflow:hidden}.form-control[type=\"file\"]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--t42-link-color);background-color:var(--t42-input-bg);border-color:#1c89ea;outline:0;box-shadow:0 0 0 0 rgba(28,137,234,0.25)}.form-control::-webkit-date-and-time-value{height:1.875rem}.form-control::placeholder{color:var(--t42-content-color-muted);opacity:1}.form-control:disabled,.form-control[readonly]{background-color:var(--t42-input-disabled-bg);opacity:1}.form-control::file-selector-button{padding:0 .875rem;margin:0 -.875rem;margin-inline-end:.875rem;color:var(--t42-link-color);background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:0 .875rem;margin:0 -.875rem;margin-inline-end:.875rem;color:var(--t42-link-color);background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:0 0;margin-bottom:0;line-height:1.875rem;color:var(--t42-content-color);background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:2rem;padding:0 .875rem;font-size:.75rem;border-radius:0}.form-control-sm::file-selector-button{padding:0 .875rem;margin:0 -.875rem;margin-inline-end:.875rem}.form-control-sm::-webkit-file-upload-button{padding:0 .875rem;margin:0 -.875rem;margin-inline-end:.875rem}.form-control-lg{min-height:2rem;padding:0 .875rem;font-size:.75rem;border-radius:0}.form-control-lg::file-selector-button{padding:0 .875rem;margin:0 -.875rem;margin-inline-end:.875rem}.form-control-lg::-webkit-file-upload-button{padding:0 .875rem;margin:0 -.875rem;margin-inline-end:.875rem}textarea.form-control{min-height:2rem}textarea.form-control-sm{min-height:2rem}textarea.form-control-lg{min-height:2rem}.form-control-color{width:3rem;height:auto;padding:0}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.875rem;border-radius:0}.form-control-color::-webkit-color-swatch{height:1.875rem;border-radius:0}.form-select{display:block;width:100%;padding:0 2.625rem 0 .875rem;-moz-padding-start:calc(.875rem - 3px);font-size:.75rem;font-weight:400;line-height:1.875rem;color:var(--t42-link-color);background-color:var(--t42-input-bg);background-image:var(--t42-select-indicator);background-repeat:no-repeat;background-position:right 0.5rem center;background-size:1rem;border:1px solid var(--t42-color-opacity-10);border-radius:0;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#1c89ea;outline:0;box-shadow:0 0 0 0 rgba(28,137,234,0.25)}.form-select[multiple],.form-select[size]:not([size=\"1\"]){padding-right:.875rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--t42-link-color)}.form-select-sm{padding-top:0;padding-bottom:0;padding-left:.875rem;font-size:.75rem;border-radius:0}.form-select-lg{padding-top:0;padding-bottom:0;padding-left:.875rem;font-size:.75rem;border-radius:0}.form-check{display:block;min-height:1.125rem;padding-left:1.25rem;margin-bottom:0}.form-check .form-check-input{float:left;margin-left:-1.25rem}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:var(--t42-input-bg);background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,0.25);appearance:none;color-adjust:exact}.form-check-input[type=\"checkbox\"]{border-radius:.25em}.form-check-input[type=\"radio\"]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#1c89ea;outline:0;box-shadow:0 0 0 0 rgba(28,137,234,0.25)}.form-check-input:checked{background-color:#1c89ea;border-color:#1c89ea}.form-check-input:checked[type=\"checkbox\"]{background-image:url(\"data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10l3 3l6-6%27/%3e%3c/svg%3e\")}.form-check-input:checked[type=\"radio\"]{background-image:url(\"data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%272%27 fill=%27%23fff%27/%3e%3c/svg%3e\")}.form-check-input[type=\"checkbox\"]:indeterminate{background-color:#1c89ea;border-color:#1c89ea;background-image:url(\"data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10h8%27/%3e%3c/svg%3e\")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled] ~ .form-check-label,.form-check-input:disabled ~ .form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url(\"data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27rgba%280,0,0,0.25%29%27/%3e%3c/svg%3e\");background-position:left center;border-radius:2em;transition:background-position 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url(\"data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%231c89ea%27/%3e%3c/svg%3e\")}.form-switch .form-check-input:checked{background-position:right center;background-image:url(\"data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%23fff%27/%3e%3c/svg%3e\")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.35}.form-range{width:100%;height:1rem;padding:0;background-color:transparent;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 0 rgba(28,137,234,0.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 0 rgba(28,137,234,0.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#1c89ea;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#bbdcf9}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#1c89ea;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#bbdcf9}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .875rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity 0.1s ease-in-out,transform 0.1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .875rem}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus ~ label,.form-floating>.form-control:not(:placeholder-shown) ~ label,.form-floating>.form-select ~ label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:-webkit-autofill ~ label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:0 .875rem;font-size:.75rem;font-weight:400;line-height:1.875rem;color:var(--t42-content-color);text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid var(--t42-color-opacity-10);border-radius:0}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:0 .875rem;font-size:.75rem;border-radius:0}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:0 .875rem;font-size:.75rem;border-radius:0}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3.5rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.5rem;font-size:.7rem;color:#43a047}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem 1rem;margin-top:.1rem;font-size:.65625rem;color:#000;background-color:#43a047;border-radius:0}.was-validated :valid ~ .valid-feedback,.was-validated :valid ~ .valid-tooltip,.is-valid ~ .valid-feedback,.is-valid ~ .valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#43a047;padding-right:2rem;background-image:url(\"data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 8 8%27%3e%3cpath fill=%27%2343a047%27 d=%27M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z%27/%3e%3c/svg%3e\");background-repeat:no-repeat;background-position:right .5rem center;background-size:1rem 1rem}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#43a047;box-shadow:0 0 0 0 rgba(67,160,71,0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:2rem;background-position:top .5rem right .5rem}.was-validated .form-select:valid,.form-select.is-valid{border-color:#43a047}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size=\"1\"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size=\"1\"]{padding-right:3.5rem;background-image:var(--t42-select-indicator),url(\"data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 8 8%27%3e%3cpath fill=%27%2343a047%27 d=%27M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z%27/%3e%3c/svg%3e\");background-position:right 0.5rem center,right 1.75rem center;background-size:1rem,1rem}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#43a047;box-shadow:0 0 0 0 rgba(67,160,71,0.25)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#43a047}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#43a047}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 0 rgba(67,160,71,0.25)}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#43a047}.form-check-inline .form-check-input ~ .valid-feedback{margin-left:.5em}.was-validated .input-group .form-control:valid,.input-group .form-control.is-valid,.was-validated .input-group .form-select:valid,.input-group .form-select.is-valid{z-index:1}.was-validated .input-group .form-control:valid:focus,.input-group .form-control.is-valid:focus,.was-validated .input-group .form-select:valid:focus,.input-group .form-select.is-valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.5rem;font-size:.7rem;color:#ff511f}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem 1rem;margin-top:.1rem;font-size:.65625rem;color:#000;background-color:#ff511f;border-radius:0}.was-validated :invalid ~ .invalid-feedback,.was-validated :invalid ~ .invalid-tooltip,.is-invalid ~ .invalid-feedback,.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#ff511f;padding-right:2rem;background-image:url(\"data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23ff511f%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23ff511f%27 stroke=%27none%27/%3e%3c/svg%3e\");background-repeat:no-repeat;background-position:right .5rem center;background-size:1rem 1rem}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#ff511f;box-shadow:0 0 0 0 rgba(255,81,31,0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:2rem;background-position:top .5rem right .5rem}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#ff511f}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size=\"1\"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size=\"1\"]{padding-right:3.5rem;background-image:var(--t42-select-indicator),url(\"data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23ff511f%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23ff511f%27 stroke=%27none%27/%3e%3c/svg%3e\");background-position:right 0.5rem center,right 1.75rem center;background-size:1rem,1rem}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#ff511f;box-shadow:0 0 0 0 rgba(255,81,31,0.25)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#ff511f}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#ff511f}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 0 rgba(255,81,31,0.25)}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#ff511f}.form-check-inline .form-check-input ~ .invalid-feedback{margin-left:.5em}.was-validated .input-group .form-control:invalid,.input-group .form-control.is-invalid,.was-validated .input-group .form-select:invalid,.input-group .form-select.is-invalid{z-index:2}.was-validated .input-group .form-control:invalid:focus,.input-group .form-control.is-invalid:focus,.was-validated .input-group .form-select:invalid:focus,.input-group .form-select.is-invalid:focus{z-index:3}input{background-color:var(--t42-input-bg)}input[type=\"number\"]::-webkit-calendar-picker-indicator,input[type=\"datetime-local\"]::-webkit-calendar-picker-indicator,input[type=\"month\"]::-webkit-calendar-picker-indicator,input[type=\"week\"]::-webkit-calendar-picker-indicator,input[type=\"time\"]::-webkit-calendar-picker-indicator,input[type=\"date\"]::-webkit-calendar-picker-indicator{background:transparent}input[type=\"number\"]::-webkit-inner-spin-button,input[type=\"datetime-local\"]::-webkit-inner-spin-button,input[type=\"month\"]::-webkit-inner-spin-button,input[type=\"week\"]::-webkit-inner-spin-button,input[type=\"time\"]::-webkit-inner-spin-button,input[type=\"date\"]::-webkit-inner-spin-button{appearance:none}input[type=\"color\"],input[type=\"range\"]{padding:0;border:0}form div[class^=\"col\"]{position:relative}.form-check-label input[type=\"checkbox\"],.form-check-label input[type=\"radio\"]{margin-top:0.125rem;margin-left:-1.2rem;opacity:1}.form-check .form-check-input:disabled{opacity:0}.form-check-label{margin-bottom:0}.form-check-inline .form-check-label{padding-left:0.25rem}.form-check-inline input[type=\"radio\"]:checked+label::after{left:-1rem}.form-control{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:border;background-color:transparent}.form-control:disabled,.form-control.disabled,.form-control[readonly]{cursor:default;opacity:0.65}.form-control.is-valid,.form-control.is-invalid{border-color:var(--t42-color-opacity-10)}.form-control.is-valid:focus,.form-control.is-invalid:focus{border-color:var(--primary);box-shadow:none}.form-control[type=\"file\"]{opacity:0}.form-text{color:var(--secondary)}.form-control-plaintext:focus{outline:0}select{background-image:var(--t42-select-indicator);background-repeat:no-repeat;background-position:right 0.5rem center;background-size:1rem;cursor:pointer;appearance:none}select[multiple]{padding:0;background-image:none}select[multiple] option{padding:0 0.875rem}select[multiple] option:checked{background-color:var(--primary)}select:disabled{border-color:transparent;cursor:default;opacity:0.65}textarea,textarea.form-control{min-height:90px;max-height:180px;padding-top:5px;padding-bottom:5px}textarea:disabled,textarea.form-control:disabled{border-color:transparent}input[type=\"range\"]{width:100%;appearance:none}input[type=\"range\"]:focus{background-color:transparent;outline:none}input[type=\"range\"]:focus::-ms-fill-lower,input[type=\"range\"]:focus::-ms-fill-upper{background:var(--primary)}input[type=\"range\"]::-webkit-slider-runnable-track{width:100%;height:0.0625rem;border:0;border-radius:0;background:var(--t42-color-opacity-10);box-shadow:none;cursor:pointer}input[type=\"range\"]::-webkit-slider-thumb{width:12px;height:12px;margin-top:-5px;border:0;border-radius:50%;background:var(--primary);box-shadow:none;cursor:pointer;appearance:none}input[type=\"range\"]:focus::-webkit-slider-runnable-track{background:var(--t42-color-opacity-10)}input[type=\"range\"]::-moz-range-track{width:100%;height:2px;border:0;border-radius:0;background:var(--t42-color-opacity-10);box-shadow:none;cursor:pointer}input[type=\"range\"]::-moz-range-thumb{width:12px;height:12px;border:0;border-radius:50px;background:var(--primary);box-shadow:none;cursor:pointer}input[type=\"range\"]::-ms-track{width:100%;height:2px;border-color:transparent;color:transparent;background:transparent;cursor:pointer}input[type=\"range\"]::-ms-fill-lower,input[type=\"range\"]::-ms-fill-upper{border:0;border-radius:0;background:var(--primary);box-shadow:none}input[type=\"range\"]::-ms-thumb{width:12px;height:12px;border:0;border-radius:50px;background:var(--primary);box-shadow:none;cursor:pointer}input[type=\"checkbox\"]{opacity:0}input[type=\"checkbox\"]+label{position:relative;color:var(--t42-content-color-muted);cursor:pointer;user-select:none}input[type=\"checkbox\"]+label::before{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-color, border-color;position:absolute;top:0.0625rem;left:-1.25rem;display:block;width:0.875rem;height:0.875rem;border:0.0625rem solid var(--t42-content-color-muted);border-radius:0;cursor:pointer;content:\"\";pointer-events:all}input[type=\"checkbox\"]+label::after{position:absolute;top:0.125rem;left:-1.188rem;display:block;width:0.875rem;height:0.875rem;background-image:none;content:\"\";-webkit-mask-size:0.75rem;-webkit-mask-repeat:no-repeat;content:\"\"}input[type=\"checkbox\"].indeterminate+label::before,input[type=\"checkbox\"]:indeterminate+label::before{border-color:var(--t42-color-opacity-30);background-color:var(--primary)}input[type=\"checkbox\"].indeterminate+label::after,input[type=\"checkbox\"]:indeterminate+label::after{top:0.375rem;left:-1.063rem;width:0.5rem;height:0.188rem;background-color:var(--white)}input[type=\"checkbox\"]:disabled+label,input[type=\"checkbox\"]:disabled+.form-check-label{color:var(--t42-content-color-disabled)}input[type=\"checkbox\"]:checked.disabled+label,input[type=\"checkbox\"]:checked:disabled+label,input[type=\"checkbox\"]:indeterminate.disabled+label,input[type=\"checkbox\"]:indeterminate:disabled+label,input[type=\"checkbox\"].disabled+label,input[type=\"checkbox\"]:disabled+label{color:var(--t42-content-color-disabled)}input[type=\"checkbox\"]:checked.disabled+label::before,input[type=\"checkbox\"]:checked:disabled+label::before,input[type=\"checkbox\"]:indeterminate.disabled+label::before,input[type=\"checkbox\"]:indeterminate:disabled+label::before,input[type=\"checkbox\"].disabled+label::before,input[type=\"checkbox\"]:disabled+label::before{border-color:transparent;background-color:var(--t42-color-opacity-10)}input[type=\"checkbox\"]:checked+label::before{border-color:var(--t42-color-opacity-30);background-color:var(--primary)}input[type=\"checkbox\"]:checked+label::after{background-color:var(--t42-link-color);-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M212.48599,435.14899c-11.60532,0.00003-21.16266-4.77866-28.672-14.336l-92.16-120.832 c-5.46133-8.19202-7.50933-17.06665-6.144-26.62399s5.80267-17.408,13.312-23.552s16.21333-8.53334,26.112-7.168 c9.89867,1.36533,17.92,6.14401,24.064,14.336l60.416,78.84799L360.966,93.13298c5.46133-8.192,12.79999-13.312,22.01599-15.36 s18.26132-0.68267,27.13599,4.096c8.19199,5.46133,13.31198,12.8,15.35999,22.016s0.68265,18.26133-4.09601,27.136l-179.2,286.71997 c-6.82668,10.9227-16.384,16.384-28.672,16.384L212.48599,435.14899z%27/%3E%3C/svg%3E\")}input[type=\"radio\"]{opacity:0}input[type=\"radio\"]+label{position:relative;color:var(--t42-content-color-muted);cursor:pointer;user-select:none}input[type=\"radio\"]+label::before{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-color, border;position:absolute;top:0.0625rem;left:-1.25rem;display:block;width:0.875rem;height:0.875rem;border:0.0625rem solid var(--t42-content-color-muted);border-radius:50%;cursor:pointer;content:\"\";pointer-events:all}input[type=\"radio\"]+label::after{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-color, border;position:absolute;top:0.313rem;left:-1rem;display:block;width:0.375rem;height:0.375rem;border-radius:50%;color:var(--white);background-image:none;transform:scale(0);opacity:0;content:\"\"}input[type=\"radio\"]+label:focus{border-color:var(--primary)}input[type=\"radio\"]:disabled+label,input[type=\"radio\"]:disabled+.form-check-label{color:var(--t42-content-color-disabled)}input[type=\"radio\"]:checked.disabled+label,input[type=\"radio\"]:checked:disabled+label,input[type=\"radio\"].disabled+label,input[type=\"radio\"]:disabled+label{color:var(--t42-content-color-disabled)}input[type=\"radio\"]:checked.disabled+label::before,input[type=\"radio\"]:checked:disabled+label::before,input[type=\"radio\"].disabled+label::before,input[type=\"radio\"]:disabled+label::before{border-color:transparent;background-color:var(--t42-color-opacity-10)}input[type=\"radio\"]:checked+label::before{border-color:var(--t42-color-opacity-30);background-color:var(--primary)}input[type=\"radio\"]:checked+label::after{background-color:var(--white);transform:scale(1);opacity:1}.custom-control{padding-left:1.25rem}.custom-control .custom-control-input:checked ~ .custom-control-label::before{border-color:var(--t42-color-opacity-30)}.custom-select,.form-select{max-height:2rem;background-color:transparent;background-image:var(--t42-select-indicator);background-repeat:no-repeat;background-position:right 0.5rem center;background-size:1rem}.custom-select:focus,.custom-select option,.form-select:focus,.form-select option{background-color:var(--t42-input-bg)}.custom-select:disabled option,.form-select:disabled option{background-color:transparent}.custom-radio .custom-control-label{color:var(--t42-content-color-muted);user-select:none}.custom-radio .custom-control-label::after{background:none}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{background-image:none}.custom-checkbox .custom-control-label{color:var(--t42-content-color-muted);user-select:none}.custom-checkbox .custom-control-label::after{background:none}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{background-image:none}.custom-checkbox .custom-control-input:disabled .custom-control-label::after,.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::after,.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::after{opacity:0.4}.custom-checkbox .custom-control-input:disabled ~ .custom-control-label::before{border-color:transparent}.switch{position:relative;display:inline-block;align-items:center;height:0.875rem;margin-bottom:0;padding-left:2rem;cursor:pointer}.switch.disabled{color:var(--t42-content-color-disabled)}.switch .slider{position:absolute;top:0;right:0;bottom:0;left:0;width:1.75rem;border:1px solid var(--t42-content-color-muted);cursor:pointer;transition:0.4s}.switch .slider::before{position:absolute;bottom:0.125rem;left:0.125rem;width:0.5rem;height:0.5rem;background-color:var(--t42-content-color-muted);transition:0.4s;content:\"\"}.switch input{width:0;height:0;opacity:0}.switch input:checked+.slider{border:var(--t42-border);background-color:var(--primary)}.switch input:checked+.slider::before{background-color:var(--white);transform:translateX(0.875rem)}.switch input:focus+.slider{box-shadow:0 0 1px #2196f3}.switch input:disabled+.slider{border:var(--t42-border);background-color:var(--t42-color-opacity-10)}.switch input:disabled+.slider::before{background-color:var(--t42-color-opacity-20)}.input-group-prepend .input-group-text{justify-content:center;border-right:0}.input-group-append .input-group-text{justify-content:center;border-left:0}.input-group-append .custom-control,.input-group-prepend .custom-control{margin-bottom:0;padding-left:0.875rem}.input-group-append .custom-control-label,.input-group-prepend .custom-control-label{position:absolute;left:0;min-width:0.875rem;min-height:0.875rem}.input-group-append .custom-control-label::before,.input-group-prepend .custom-control-label::before{left:0}.input-group-append .custom-control-label::after,.input-group-prepend .custom-control-label::after{left:0.25rem}.input-group-append .custom-checkbox .custom-control-label::after,.input-group-prepend .custom-checkbox .custom-control-label::after{left:0.125rem}.custom-file{margin-bottom:1rem}.custom-file-input,.form-control[type=\"file\"]{z-index:1}.custom-file-input:focus ~ .custom-file-label,.form-control[type=\"file\"]:focus ~ .custom-file-label{background-color:var(--t42-input-bg)}.custom-file-label,.input-group-text{background-color:transparent}.custom-file-label::after,.input-group-text::after{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-color;background-color:Rgba(--secondary, 0.05);cursor:pointer}.custom-file-label:hover::after,.input-group-text:hover::after{color:var(--white);background-color:var(--secondary)}.form-control[type=\"file\"]+.input-group-text{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-color,color;position:absolute;top:0;right:0;left:0;z-index:1;height:2rem;padding:0.375rem 0.875rem;border:var(--t42-border);color:var(--t42-content-color-muted)}.form-control[type=\"file\"]+.input-group-text::after{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-color,color;position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:100%;padding:0.375rem 0.875rem;border-left:inherit;color:var(--t42-link-color);line-height:1.5;cursor:pointer;content:\"Browse\"}.form-control[type=\"file\"]+.input-group-text:hover{background-color:var(--t42-input-bg)}.form-control[type=\"file\"]+.input-group-text:hover::after{color:var(--white);background-color:var(--secondary)}.custom-switch{padding-left:2rem}.custom-switch .custom-control-label::before{left:-2rem}.custom-switch .custom-control-label::after{top:0.25rem;left:-1.813rem;width:0.5rem;height:0.5rem}.custom-switch .custom-control-input:checked ~ .custom-control-label::after{background-color:var(--white);content:\"\"}.custom-switch .custom-control-input:not(:disabled):active ~ .custom-control-label::before{border-color:var(--t42-color-opacity-30);background-color:var(--primary)}.valid-feedback,.valid-tooltip,.invalid-feedback,.invalid-tooltip,.warning-feedback,.warning-tooltip{position:absolute;bottom:-1rem;width:calc(100% - 1.875rem);margin-top:0;overflow:hidden;color:var(--t42-content-color);font-size:.7rem;white-space:nowrap;text-overflow:ellipsis}.valid-tooltip,.invalid-tooltip,.warning-tooltip{color:var(--t42-content-color-muted)}.custom-radio label+div,.custom-checkbox label+div,.form-check label+div{width:calc(100% + 1.25rem);transform:translateX(-1.25rem)}.form-group{margin-bottom:1rem}label{margin-bottom:0.5rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-0.5rem;margin-left:-0.5rem}.form-row>.col,.form-row>[class*=\"col-\"]{padding-right:0.5rem;padding-left:0.5rem}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select,.form-inline .form-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}/*!\n * Bootstrap Grid v5.1.3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */:root{--bs-blue: #1c89ea;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #fd397a;--bs-red: #ff511f;--bs-orange: #fd7e14;--bs-yellow: #f9a825;--bs-green: #43a047;--bs-teal: #616161;--bs-cyan: #469eb9;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-primary: #1c89ea;--bs-secondary: #616161;--bs-success: #43a047;--bs-info: #469eb9;--bs-warning: #f9a825;--bs-danger: #ff511f;--bs-light: #616161;--bs-dark: #616161;--bs-primary-rgb: 28,137,234;--bs-secondary-rgb: 97,97,97;--bs-success-rgb: 67,160,71;--bs-info-rgb: 70,158,185;--bs-warning-rgb: 249,168,37;--bs-danger-rgb: 255,81,31;--bs-light-rgb: 97,97,97;--bs-dark-rgb: 97,97,97;--bs-white-rgb: 255,255,255;--bs-black-rgb: 0,0,0;--bs-body-color-rgb: 33,37,41;--bs-body-bg-rgb: 255,255,255;--bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;--bs-gradient: linear-gradient(180deg, rgba(255,255,255,0.15), rgba(255,255,255,0));--bs-body-font-family: Montserrat,Helvetica Neue,Arial,sans-serif;--bs-body-font-size: .75rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-bg: #fff}.container,.container-fluid,.container-sm,.container-md,.container-lg,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x, .75rem);padding-left:var(--bs-gutter-x, .75rem);margin-right:auto;margin-left:auto}@media (min-width: 576px){.container,.container-sm{max-width:540px}}@media (min-width: 768px){.container,.container-sm,.container-md{max-width:720px}}@media (min-width: 992px){.container,.container-sm,.container-md,.container-lg{max-width:960px}}@media (min-width: 1200px){.container,.container-sm,.container-md,.container-lg,.container-xl{max-width:1140px}}@media (min-width: 1400px){.container,.container-sm,.container-md,.container-lg,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333%}.col-2{flex:0 0 auto;width:16.66667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333%}.col-5{flex:0 0 auto;width:41.66667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333%}.col-8{flex:0 0 auto;width:66.66667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333%}.col-11{flex:0 0 auto;width:91.66667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333%}.col-sm-2{flex:0 0 auto;width:16.66667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333%}.col-sm-5{flex:0 0 auto;width:41.66667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333%}.col-sm-8{flex:0 0 auto;width:66.66667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333%}.col-sm-11{flex:0 0 auto;width:91.66667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333%}.col-md-2{flex:0 0 auto;width:16.66667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333%}.col-md-5{flex:0 0 auto;width:41.66667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333%}.col-md-8{flex:0 0 auto;width:66.66667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333%}.col-md-11{flex:0 0 auto;width:91.66667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333%}.col-lg-2{flex:0 0 auto;width:16.66667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333%}.col-lg-5{flex:0 0 auto;width:41.66667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333%}.col-lg-8{flex:0 0 auto;width:66.66667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333%}.col-lg-11{flex:0 0 auto;width:91.66667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333%}.col-xl-2{flex:0 0 auto;width:16.66667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333%}.col-xl-5{flex:0 0 auto;width:41.66667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333%}.col-xl-8{flex:0 0 auto;width:66.66667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333%}.col-xl-11{flex:0 0 auto;width:91.66667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333%}.col-xxl-2{flex:0 0 auto;width:16.66667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333%}.col-xxl-5{flex:0 0 auto;width:41.66667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333%}.col-xxl-8{flex:0 0 auto;width:66.66667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333%}.col-xxl-11{flex:0 0 auto;width:91.66667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333%}.offset-xxl-2{margin-left:16.66667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333%}.offset-xxl-5{margin-left:41.66667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333%}.offset-xxl-8{margin-left:66.66667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333%}.offset-xxl-11{margin-left:91.66667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}@media (min-width: 576px){.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}}@media (min-width: 768px){.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}}@media (min-width: 992px){.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}}@media (min-width: 1200px){.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}}@media (min-width: 1400px){.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}.row{--bs-gutter-x: 1.875rem}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:0}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, \".\") \". \";counter-increment:section}.list-group-item-action{width:100%;color:var(--t42-content-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--t42-link-hover-color);text-decoration:none;background-color:var(--t42-link-hover-bg)}.list-group-item-action:active{color:var(--t42-link-hover-color);background-color:var(--t42-link-active-bg)}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;color:inherit;text-decoration:none;background-color:Rgb(var(--t42-bg-mid));border:1px solid rgba(0,0,0,0)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--t42-content-color-disabled);pointer-events:none;background-color:rgba(0,0,0,0)}.list-group-item.active{z-index:2;color:var(--t42-link-hover-color);background-color:var(--t42-link-active-bg);border-color:rgba(0,0,0,0)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:0;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:0;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:0;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:0;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:0;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:0;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:0;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:0;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:0;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:0;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:0;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:0;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#11528c;background-color:#d2e7fb}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#11528c;background-color:#bdd0e2}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#11528c;border-color:#11528c}.list-group-item-secondary{color:#3a3a3a;background-color:#dfdfdf}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#3a3a3a;background-color:#c9c9c9}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#3a3a3a;border-color:#3a3a3a}.list-group-item-success{color:#28602b;background-color:#d9ecda}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#28602b;background-color:#c3d4c4}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#28602b;border-color:#28602b}.list-group-item-info{color:#2a5f6f;background-color:#daecf1}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#2a5f6f;background-color:#c4d4d9}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#2a5f6f;border-color:#2a5f6f}.list-group-item-warning{color:#64430f;background-color:#feeed3}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#64430f;background-color:#e5d6be}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#64430f;border-color:#64430f}.list-group-item-danger{color:#993113;background-color:#ffdcd2}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#993113;background-color:#e6c6bd}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#993113;border-color:#993113}.list-group-item-light{color:#3a3a3a;background-color:#dfdfdf}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#3a3a3a;background-color:#c9c9c9}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#3a3a3a;border-color:#3a3a3a}.list-group-item-dark{color:#3a3a3a;background-color:#dfdfdf}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#3a3a3a;background-color:#c9c9c9}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#3a3a3a;border-color:#3a3a3a}.list-unstyled{padding-left:0;list-style:none}.list-group{box-shadow:var(--t42-shadow)}.list-group-item{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:color;margin-bottom:0;border:0;border-bottom:var(--t42-border);backdrop-filter:var(--backdrop-filter)}.list-group-item:last-child{border-bottom:transparent}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:0;border-top-width:0}.list-group-item-action{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background,color;background-image:linear-gradient(45deg, transparent 0%, transparent 50%, var(--t42-list-group-hover-bg-special) 50%);background-repeat:no-repeat;background-size:400%;transition-duration:0.45s}.list-group-item-action:hover,.list-group-item-action:focus{background-position:99%}.list-group-item-action.active:hover{background-color:var(--t42-color-opacity-05)}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:var(--t42-modal-bg);background-clip:padding-box;border:.0625rem solid var(--t42-color-opacity-10);border-radius:0;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:.0625rem solid rgba(0,0,0,0);border-top-left-radius:0;border-top-right-radius:0}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:.0625rem solid rgba(0,0,0,0);border-bottom-right-radius:0;border-bottom-left-radius:0}.modal-footer>*{margin:.25rem}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width: 1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.modal{backdrop-filter:var(--backdrop-filter)}.modal .btn-close{font-size:1.25rem;background-size:0.75rem;filter:var(--filter-close)}.modal-content{border-top:0;background:linear-gradient(to bottom right, Rgba(var(--t42-bg-light), 0.75) 0%, Rgba(var(--t42-bg-dark), 0.75) 100%);box-shadow:var(--t42-shadow)}.modal-content::before{display:block;height:0.0625rem;background:linear-gradient(90deg, #1c89ea 0%, rgba(28,137,234,0.5) 100%);content:\"\"}.modal-body{padding:0 1rem}.modal-body p:last-child{margin-bottom:0}.modal-sm .modal-footer{flex-direction:column}.modal-sm .modal-footer .btn{width:100%}.modal-sm .modal-footer .btn:not(:last-of-type){margin-bottom:0.5rem}.modal-fill-in{background-color:Rgba(var(--t42-bg-light), 0.75)}.modal-fill-in.modal-dialog{display:flex;flex-flow:column nowrap;align-content:center;align-items:center;justify-content:center;width:auto;max-width:100%;height:100%;margin:0 auto}.modal-fill-in .modal-content{display:flex;max-width:600px;border-color:transparent;background:transparent;background-color:transparent;box-shadow:none;backdrop-filter:none;pointer-events:auto}.modal-fill-in .modal-content::before{display:none}.modal-fill-in::before{position:fixed;top:0;right:0;left:0;display:block;height:0.0625rem;background:linear-gradient(90deg, #1c89ea 0%, rgba(28,137,234,0.5) 100%);content:\"\"}.modal-fill-in.modal-lg .modal-content{max-width:800px}.modal-fill-in.modal-sm .modal-content{max-width:300px}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.45rem 1rem;color:var(--t42-link-color);text-decoration:none;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--t42-link-hover-color)}.nav-link.disabled{color:var(--t42-content-color-disabled);pointer-events:none;cursor:default}.nav-tabs{border-bottom:.0625rem solid var(--t42-color-opacity-10)}.nav-tabs .nav-link{margin-bottom:-.0625rem;background:none;border:.0625rem solid transparent;border-top-left-radius:0;border-top-right-radius:0}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:transparent transparent var(--t42-color-opacity-10);isolation:isolate}.nav-tabs .nav-link.disabled{color:var(--t42-content-color-disabled);background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--t42-link-hover-color);background-color:var(--t42-link-active-bg);border-color:transparent transparent #1c89ea}.nav-tabs .dropdown-menu{margin-top:-.0625rem;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:none;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--t42-link-hover-color);background-color:var(--t42-link-active-bg)}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-link{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-color, border-color, color;margin-right:3px;border:.0625rem solid transparent}.nav-link:not(.disabled):not(:disabled):focus,.nav-link:not(.disabled):not(:disabled):active,.nav-link:not(.disabled):not(:disabled).active,.nav-link:not(.disabled):not(:disabled):hover{border-color:var(--t42-color-opacity-10);color:var(--t42-link-color);background-color:var(--t42-link-hover-bg)}.nav-link.dropdown-toggle::after{right:-0.125rem}.navbar-nav .nav-item{bottom:-1px}.navbar-nav .nav-item .nav-link{border-bottom:0}.navbar-nav .nav-item:not(.disabled):not(:disabled):focus .nav-link,.navbar-nav .nav-item:not(.disabled):not(:disabled):active .nav-link,.navbar-nav .nav-item:not(.disabled):not(:disabled).active .nav-link,.navbar-nav .nav-item:not(.disabled):not(:disabled):hover .nav-link{border-color:var(--t42-color-opacity-10)}.nav.flex-column .nav-link{margin-bottom:3px}.nav-tabs .nav-link{position:relative;display:flex;align-items:center;height:2rem}.nav-tabs .nav-link::before{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:height;position:absolute;bottom:-2px;left:-1px;width:calc(100% + 2px);height:0;background-color:var(--primary);content:\"\"}.nav-tabs .nav-link.active::before{height:3px}.nav-tabs .nav-link.active:hover::before{height:0}.nav-tabs .nav-link .btn-close{width:0.5rem;height:0.5rem}.nav-tabs .nav-item{margin-right:0}.nav-tabs .dropdown.show .dropdown-toggle{border-color:transparent}.nav-tabs.flex-column .nav-link.active:hover::before{width:0}.nav-tabs.flex-column .nav-link::before{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:width;top:-1px;width:0;height:100%;margin-left:0;background-color:var(--primary);content:\"\"}.nav-tabs.flex-column .nav-link.active::before{width:3px;height:calc(100% + 2px)}.nav-pills .nav-link{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;padding:0.25rem 1rem;border:1px solid transparent;border-radius:1rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{position:relative;border-color:transparent}.nav-pills .nav-item{margin-right:3px}.nav-pills .nav-item:last-child{margin-right:0}.nav-pills .nav-link.active:not(.dropdown-toggle),.nav-pills .show>.nav-link:not(.dropdown-toggle){padding:0.25rem 1.75rem 0.25rem 1rem}.nav-pills .nav-link.active:not(.dropdown-toggle)::before,.nav-pills .show>.nav-link:not(.dropdown-toggle)::before{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:right;position:absolute;top:50%;right:10px;width:8px;height:8px;border-radius:50%;background-color:var(--primary);transform:translateY(-50%);content:\"\"}.nav-pills .nav-link.active:not(.dropdown-toggle):hover::before,.nav-pills .show>.nav-link:not(.dropdown-toggle):hover::before{right:-10px}.nav-justified .nav-item .nav-link::before{right:1px;left:-1px;margin-left:0}.tab-content{padding-top:0.5rem}.nav-action-buttons .nav-link{position:relative;padding:0.45rem 1.5rem 0.45rem 1rem}.nav-action-buttons .icon-cancel::before{display:block;width:1rem;height:1rem;background-color:var(--t42-content-color);content:\"\";-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M366.854,336.384c6.14398,6.14398,9.216,13.48267,9.216,22.01599s-3.07202,15.87198-9.216,22.01599 c-6.14398,5.46133-13.48267,8.19202-22.01599,8.19199c-8.53333,0.00003-15.87201-2.73065-22.01602-8.19199l-67.584-77.82401 l-67.584,77.82401c-6.144,5.46133-13.48267,8.19202-22.01601,8.19199c-8.53333,0.00003-15.87199-2.73065-22.01599-8.19199 c-5.46133-6.14401-8.192-13.48267-8.192-22.01599s2.73067-15.87201,8.192-22.01599l70.65599-79.87201l-70.65601-80.896 c-5.46132-6.144-8.19199-13.48268-8.19199-22.01601c0-8.53334,2.73067-15.87201,8.19199-22.01601 c6.14401-5.46133,13.48267-8.19199,22.01601-8.192c8.53334,0.00001,15.87201,2.73067,22.01601,8.192l67.584,77.82401 l67.584-77.82401c6.14401-5.46133,13.4827-8.19199,22.01602-8.192c8.53333,0.00001,15.87201,2.73067,22.01599,8.192 c6.14398,6.144,9.216,13.48267,9.216,22.01601c0,8.53333-3.07202,15.87201-9.216,22.01601l-70.65601,80.896L366.854,336.384z%27/%3E%3C/svg%3E\")}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:0;padding-right:.875rem;padding-bottom:0;padding-left:.875rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.075rem;padding-bottom:.075rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.45rem;padding-bottom:.45rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:0 0;font-size:.9375rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:0;transition:box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 0}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible !important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-top,.navbar-expand-sm .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible !important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-top,.navbar-expand-md .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible !important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-top,.navbar-expand-lg .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible !important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-top,.navbar-expand-xl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible !important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-top,.navbar-expand-xxl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible !important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-top,.navbar-expand .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-light .navbar-brand{color:var(--t42-link-color)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:var(--t42-link-hover-color)}.navbar-light .navbar-nav .nav-link{color:var(--t42-link-color)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:var(--t42-link-hover-color)}.navbar-light .navbar-nav .nav-link.disabled{color:var(--t42-content-color-disabled)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .nav-link.active{color:var(--t42-link-hover-color)}.navbar-light .navbar-toggler{color:var(--t42-link-color);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27var%28--t42-link-color%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e\")}.navbar-light .navbar-text{color:var(--t42-link-color)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:var(--t42-link-hover-color)}.navbar-dark .navbar-brand{color:var(--t42-link-color)}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:var(--t42-link-hover-color)}.navbar-dark .navbar-nav .nav-link{color:var(--t42-link-color)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:var(--t42-link-hover-color)}.navbar-dark .navbar-nav .nav-link.disabled{color:var(--t42-content-color-disabled)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .nav-link.active{color:var(--t42-link-hover-color)}.navbar-dark .navbar-toggler{color:var(--t42-link-color);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 30 30%27%3e%3cpath stroke=%27var%28--t42-link-color%29%27 stroke-linecap=%27round%27 stroke-miterlimit=%2710%27 stroke-width=%272%27 d=%27M4 7h22M4 15h22M4 23h22%27/%3e%3c/svg%3e\")}.navbar-dark .navbar-text{color:var(--t42-link-color)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:var(--t42-link-hover-color)}.navbar{border-bottom:var(--t42-border);background-color:Rgba(var(--t42-bg-mid), 0.75);backdrop-filter:var(--backdrop-filter)}.navbar-dark{background-color:Rgba(var(--t42-bg-dark), 0.75)}.navbar-light{background-color:Rgba(var(--t42-bg-light), 0.75)}.navbar .nav-item{position:relative}.navbar .nav-item.show:focus .nav-link:not(.disabled):not(:disabled),.navbar .nav-item.show:active .nav-link:not(.disabled):not(:disabled),.navbar .nav-item.show.active .nav-link:not(.disabled):not(:disabled),.navbar .nav-item:not(.disabled):not(:disabled):focus .nav-link:not(.disabled):not(:disabled),.navbar .nav-item:not(.disabled):not(:disabled):active .nav-link:not(.disabled):not(:disabled),.navbar .nav-item:not(.disabled):not(:disabled).active .nav-link:not(.disabled):not(:disabled){color:var(--t42-link-color);background-color:var(--t42-color-opacity-10)}.navbar .nav-item.show:hover .nav-link:not(.disabled):not(:disabled),.navbar .nav-item:not(.disabled):not(:disabled):hover .nav-link:not(.disabled):not(:disabled){color:var(--t42-link-color);background-color:var(--t42-color-opacity-05)}.navbar .nav-link{padding-right:.875rem;padding-left:.875rem}.navbar .btn-group{height:100%;padding-left:.875rem;border-left:var(--t42-border)}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:var(--t42-content-color);text-decoration:none;background-color:rgba(0,0,0,0);border:0 solid rgba(0,0,0,0);transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--t42-link-hover-color);background-color:var(--t42-link-hover-bg);border-color:#dee2e6}.page-link:focus{z-index:3;color:var(--t42-link-hover-color);background-color:rgba(0,0,0,0);outline:0;box-shadow:0 0 0 0 rgba(28,137,234,0.25)}.page-item:not(:first-child) .page-link{margin-left:0}.page-item.active .page-link{z-index:3;color:var(--white);background-color:var(--primary);border-color:var(--primary)}.page-item.disabled .page-link{color:var(--t42-content-color-disabled);pointer-events:none;background-color:rgba(0,0,0,0);border-color:#dee2e6}.page-link{padding:.125rem .5rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:.9375rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:1rem;border-bottom-left-radius:1rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:1rem;border-bottom-right-radius:1rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.65625rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-link{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-color, color;display:flex;align-items:center;justify-content:center;min-width:1.5rem;min-height:1.5rem;border-radius:0.25rem;overflow:hidden}.page-link[aria-label=\"Next\"],.page-link[aria-label=\"Previous\"]{padding:0}.page-link[aria-label=\"Next\"] span{background:var(--t42-select-indicator) center center/1rem 1rem no-repeat;transform:rotate(-90deg)}.page-link[aria-label=\"Previous\"] span{background:var(--t42-select-indicator) center center/1rem 1rem no-repeat;transform:rotate(90deg)}.page-link>span{width:100%;height:100%;min-height:1rem;font-size:0;clip:initial}.pagination-lg .page-link[aria-label=\"Next\"],.pagination-lg .page-link[aria-label=\"Previous\"]{padding:0.75rem 1.5rem}.page-item{margin-right:8px}.page-item:first-child .page-link>span:not(.sr-only)::before,.page-item:last-child .page-link>span:not(.sr-only)::before{top:-0.125rem}.page-item.active .page-link:hover,.page-item:active .page-link:hover{background-color:var(--t42-color-opacity-05)}.page-item.active.disabled .page-link{background-color:var(--t42-color-opacity-10)}.popover{position:absolute;top:0;left:0 /* rtl:ignore */;z-index:1070;display:block;max-width:276px;font-family:\"Montserrat\",\"Helvetica Neue\",Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.65625rem;word-wrap:break-word;background-color:Rgba(var(--t42-bg-dark), 0.75);background-clip:padding-box;border:1px solid var(--t42-color-opacity-10);border-radius:0}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=\"top\"]>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=\"top\"]>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:var(--t42-color-opacity-10)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=\"top\"]>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:var(--t42-color-opacity-10)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=\"right\"]>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=\"right\"]>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:var(--t42-color-opacity-10)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=\"right\"]>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:var(--t42-color-opacity-10)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=\"bottom\"]>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=\"bottom\"]>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:var(--t42-color-opacity-10)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=\"bottom\"]>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:var(--t42-color-opacity-10)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=\"bottom\"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid Rgba(var(--t42-bg-mid), 0.75)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=\"left\"]>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=\"left\"]>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:var(--t42-color-opacity-10)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=\"left\"]>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:var(--t42-color-opacity-10)}.popover-header{padding:.55rem 1rem;margin-bottom:0;font-size:.75rem;color:var(--t42-link-color);background-color:Rgba(var(--t42-bg-mid), 0.75);border-bottom:1px solid var(--t42-color-opacity-10);border-top-left-radius:0;border-top-right-radius:0}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:var(--t42-content-color)}.popover{backdrop-filter:var(--backdrop-filter)}@keyframes progress-bar-stripes{0%{background-position-x:1.063rem}}.progress{display:flex;height:1.063rem;overflow:hidden;font-size:.6rem;background-color:Rgb(var(--t42-bg-mid));border-radius:0}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#1c89ea;transition:width 0.6s ease}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1.063rem 1.063rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.progress{border:var(--t42-border)}.table{--bs-table-bg: rgba(0,0,0,0);--bs-table-accent-bg: rgba(0,0,0,0);--bs-table-striped-color: var(--t42-content-color);--bs-table-striped-bg: rgba(0,0,0,0.05);--bs-table-active-color: var(--t42-content-color);--bs-table-active-bg: rgba(0,0,0,0.1);--bs-table-hover-color: var(--t42-link-color);--bs-table-hover-bg: rgba(0,0,0,0.075);width:100%;margin-bottom:1rem;color:var(--t42-content-color);vertical-align:top;border-color:var(--t42-color-opacity-10)}.table>:not(caption)>*>*{padding:.25rem .313rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:first-child){border-top:2px solid currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg: #d2e7fb;--bs-table-striped-bg: #c8dbee;--bs-table-striped-color: #000;--bs-table-active-bg: #bdd0e2;--bs-table-active-color: #000;--bs-table-hover-bg: #c2d6e8;--bs-table-hover-color: #000;color:#000;border-color:#bdd0e2}.table-secondary{--bs-table-bg: #dfdfdf;--bs-table-striped-bg: #d4d4d4;--bs-table-striped-color: #000;--bs-table-active-bg: #c9c9c9;--bs-table-active-color: #000;--bs-table-hover-bg: #cecece;--bs-table-hover-color: #000;color:#000;border-color:#c9c9c9}.table-success{--bs-table-bg: #d9ecda;--bs-table-striped-bg: #cee0cf;--bs-table-striped-color: #000;--bs-table-active-bg: #c3d4c4;--bs-table-active-color: #000;--bs-table-hover-bg: #c9daca;--bs-table-hover-color: #000;color:#000;border-color:#c3d4c4}.table-info{--bs-table-bg: #daecf1;--bs-table-striped-bg: #cfe0e5;--bs-table-striped-color: #000;--bs-table-active-bg: #c4d4d9;--bs-table-active-color: #000;--bs-table-hover-bg: #cadadf;--bs-table-hover-color: #000;color:#000;border-color:#c4d4d9}.table-warning{--bs-table-bg: #feeed3;--bs-table-striped-bg: #f1e2c8;--bs-table-striped-color: #000;--bs-table-active-bg: #e5d6be;--bs-table-active-color: #000;--bs-table-hover-bg: #ebdcc3;--bs-table-hover-color: #000;color:#000;border-color:#e5d6be}.table-danger{--bs-table-bg: #ffdcd2;--bs-table-striped-bg: #f2d1c8;--bs-table-striped-color: #000;--bs-table-active-bg: #e6c6bd;--bs-table-active-color: #000;--bs-table-hover-bg: #ecccc2;--bs-table-hover-color: #000;color:#000;border-color:#e6c6bd}.table-light{--bs-table-bg: #616161;--bs-table-striped-bg: dimgray;--bs-table-striped-color: #fff;--bs-table-active-bg: #717171;--bs-table-active-color: #fff;--bs-table-hover-bg: #6d6d6d;--bs-table-hover-color: #fff;color:#fff;border-color:#717171}.table-dark{--bs-table-bg: #616161;--bs-table-striped-bg: dimgray;--bs-table-striped-color: #fff;--bs-table-active-bg: #717171;--bs-table-active-color: #fff;--bs-table-hover-bg: #6d6d6d;--bs-table-hover-color: #fff;color:#fff;border-color:#717171}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.table>:not(:first-child){border-width:0}.table td,.table th{white-space:nowrap;vertical-align:middle}.table a{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:border;border-bottom:0.063rem dashed var(--dark);color:var(--t42-content-color)}.table a:hover{border-bottom-color:var(--t42-content-color);border-bottom-style:solid;color:var(--t42-link-color);text-decoration:none}.table thead th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-width:1px 0;color:Hsl(var(--t42-content-color-base), calc(var(--t42-content-color-l) - 20%));font-weight:normal;font-size:83.3%;text-transform:uppercase}.table td{position:relative}.table td .btn,.table td .btn-sm,.table td .btn-group-sm>.btn,.table td .btn-lg,.table td .btn-group-lg>.btn{line-height:1.25rem}.table td .btn-icon i{position:relative;top:0.0625rem}.table tr th:first-child,.table tr td:first-child{padding-left:0.5rem}.table tr th:last-child,.table tr td:last-child{padding-right:0.5rem}.table-hover tbody tr:hover{background-color:var(--t42-table-active-bg)}.table-hover tbody tr:hover a{border-bottom-color:var(--t42-content-color);color:var(--t42-link-color)}.table-responsive{border:0}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:\"Montserrat\",\"Helvetica Neue\",Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.65625rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:1}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:\"\";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[data-popper-placement^=\"top\"]{padding:.4rem 0}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=\"top\"] .tooltip-arrow{bottom:0}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=\"top\"] .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:var(--t42-tooltip-bg)}.bs-tooltip-end,.bs-tooltip-auto[data-popper-placement^=\"right\"]{padding:0 .4rem}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=\"right\"] .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=\"right\"] .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:var(--t42-tooltip-bg)}.bs-tooltip-bottom,.bs-tooltip-auto[data-popper-placement^=\"bottom\"]{padding:.4rem 0}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=\"bottom\"] .tooltip-arrow{top:0}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=\"bottom\"] .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:var(--t42-tooltip-bg)}.bs-tooltip-start,.bs-tooltip-auto[data-popper-placement^=\"left\"]{padding:0 .4rem}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=\"left\"] .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=\"left\"] .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:var(--t42-tooltip-bg)}.tooltip-inner{max-width:200px;padding:.25rem 1rem;color:var(--t42-content-color);text-align:center;background-color:var(--t42-tooltip-bg);border-radius:0}.tooltip .tooltip-inner{border:var(--t42-border);box-shadow:var(--t42-shadow)}.bs-tooltip-top .arrow,.bs-tooltip-auto[data-popper-placement^=\"top\"] .arrow{bottom:1px}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[data-popper-placement^=\"top\"] .arrow::before{border-top-color:var(--t42-color-opacity-10)}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[data-popper-placement^=\"bottom\"] .arrow{top:1px}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[data-popper-placement^=\"bottom\"] .arrow::before{border-bottom-color:var(--t42-color-opacity-10)}.bs-tooltip-right .arrow{left:1px}.bs-tooltip-right .arrow::before{border-right-color:var(--t42-color-opacity-10)}.bs-tooltip-left .arrow{right:1px}.bs-tooltip-left .arrow::before{border-left-color:var(--t42-color-opacity-10)}.fade{transition:opacity 0.15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height 0.35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width 0.35s ease}@media (prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}mark,.mark{color:var(--white)}pre{background-color:var(--t42-bg-dark)}blockquote,.blockquote{padding:1rem 1rem 0.01rem;border-left:0.25rem solid var(--secondary);background-color:Rgb(var(--t42-bg-dark))}.blockquote-footer{margin-top:-2rem;margin-left:1.25rem;color:var(--t42-content-color-muted);font-size:0.875em}.clearfix::after{display:block;clear:both;content:\"\"}.link-primary{color:#1c89ea}.link-primary:hover,.link-primary:focus{color:#49a1ee}.link-secondary{color:#616161}.link-secondary:hover,.link-secondary:focus{color:#4e4e4e}.link-success{color:#43a047}.link-success:hover,.link-success:focus{color:#69b36c}.link-info{color:#469eb9}.link-info:hover,.link-info:focus{color:#6bb1c7}.link-warning{color:#f9a825}.link-warning:hover,.link-warning:focus{color:#fab951}.link-danger{color:#ff511f}.link-danger:hover,.link-danger:focus{color:#ff744c}.link-light{color:#616161}.link-light:hover,.link-light:focus{color:#4e4e4e}.link-dark{color:#616161}.link-dark:hover,.link-dark:focus{color:#4e4e4e}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:\"\"}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio: calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio: calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:\"\"}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15) !important}.shadow-sm{box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,0.175) !important}.shadow-none{box-shadow:none !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-top-0{border-top:0 !important}.border-end{border-right:1px solid #dee2e6 !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:1px solid #dee2e6 !important}.border-start-0{border-left:0 !important}.border-primary{border-color:#1c89ea !important}.border-secondary{border-color:#616161 !important}.border-success{border-color:#43a047 !important}.border-info{border-color:#469eb9 !important}.border-warning{border-color:#f9a825 !important}.border-danger{border-color:#ff511f !important}.border-light{border-color:#616161 !important}.border-dark{border-color:#616161 !important}.border-white{border-color:#fff !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.26563rem + .1875vw) !important}.fs-2{font-size:1.125rem !important}.fs-3{font-size:.98475rem !important}.fs-4{font-size:.84375rem !important}.fs-5{font-size:.75rem !important}.fs-6{font-size:.7035rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-light{font-weight:300 !important}.fw-lighter{font-weight:lighter !important}.fw-normal{font-weight:400 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--t42-content-color-muted) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,0.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,0.5) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: .25}.text-opacity-50{--bs-text-opacity: .5}.text-opacity-75{--bs-text-opacity: .75}.text-opacity-100{--bs-text-opacity: 1}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-opacity-10{--bs-bg-opacity: .1}.bg-opacity-25{--bs-bg-opacity: .25}.bg-opacity-50{--bs-bg-opacity: .5}.bg-opacity-75{--bs-bg-opacity: .75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:.25rem !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:.25rem !important}.rounded-2{border-radius:.25rem !important}.rounded-3{border-radius:1rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-end{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-start{border-bottom-left-radius:.25rem !important;border-top-left-radius:.25rem !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media (min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media (min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}@media (min-width: 1200px){.fs-1{font-size:1.40625rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}body{background-size:cover}.bg-light{background-color:Rgb(var(--t42-bg-light)) !important}.bg-dark{background-color:Rgb(var(--t42-bg-dark)) !important}.bg-base{background-color:Rgb(var(--t42-bg-mid)) !important}.border{border:0.0625rem solid var(--t42-color-opacity-10) !important}.border-primary{border-color:#1c89ea !important}.border-secondary,.border-info,.border-light,.border-dark,.border-white{border-color:var(--t42-color-opacity-10) !important}.border-success{border-color:#43a047 !important}.border-danger{border-color:#ff511f !important}.border-warning{border-color:#f9a825 !important}.pl-0{padding-left:0}.pl-1{padding-left:0.25rem}.pl-2{padding-left:0.5rem}.pl-3{padding-left:1rem}.pl-4{padding-left:1.5rem}.pl-5{padding-left:3rem}.pl-auto{padding-left:auto}.pr-0{padding-right:0}.pr-1{padding-right:0.25rem}.pr-2{padding-right:0.5rem}.pr-3{padding-right:1rem}.pr-4{padding-right:1.5rem}.pr-5{padding-right:3rem}.pr-auto{padding-right:auto}.ml-0{margin-left:0}.ml-1{margin-left:0.25rem}.ml-2{margin-left:0.5rem}.ml-3{margin-left:1rem}.ml-4{margin-left:1.5rem}.ml-5{margin-left:3rem}.ml-auto{margin-left:auto}.mr-0{margin-right:0}.mr-1{margin-right:0.25rem}.mr-2{margin-right:0.5rem}.mr-3{margin-right:1rem}.mr-4{margin-right:1.5rem}.mr-5{margin-right:3rem}.mr-auto{margin-right:auto}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.tick42-loader,.tick42-loader.active::before,.tick42-loader.active::after{position:absolute;top:0;right:0;bottom:0;left:0}.tick42-loader{width:200px;height:200px;margin:auto;border-radius:.25rem;color:var(--primary);background:var(--t42-logo-icon) no-repeat 50% 40%;background-size:50%;box-shadow:inset 0 0 0 0.0625rem rgba(var(--primary), 0.1)}.tick42-loader.active::before,.tick42-loader.active::after{z-index:-1;margin:-5%;border-radius:.375rem;box-shadow:inset 0 0 0 2px;animation:clipMe 8s linear infinite;content:\"\"}.tick42-loader.active::before{animation-delay:-4s}.tick42-loader.active .tick42-loader-text{position:absolute;bottom:0.5rem;width:100%;height:3.5rem;margin:0 auto;padding:0 0.833rem;overflow:hidden;color:var(--t42-content-color-muted);text-align:center;text-overflow:ellipsis}@keyframes clipMe{0%,100%{clip:rect(0, 220px, 2px, 0)}25%{clip:rect(0, 2px, 220px, 0)}50%{clip:rect(218px, 220px, 220px, 0)}75%{clip:rect(0, 220px, 220px, 218px)}}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.tick42-spinner{display:inline-block;animation-name:spin;animation-duration:3000ms;animation-timing-function:linear;animation-iteration-count:infinite}@font-face{font-weight:400;font-family:\"Montserrat\";font-style:normal;src:url(data:font/ttf;base64,AAEAAAARAQAABAAQR0RFRrFss1wAAmssAAACfkdQT1N2Wb7+AAJtrAABFy5HU1VCjJZZRgADhNwAAC8mT1MvMlYMpE4AAfmwAAAAYGNtYXBfILVpAAH6EAAACuRjdnQgMKUWggACEzwAAADkZnBnbU0kjnwAAgT0AAANbWdhc3AAAAAQAAJrJAAAAAhnbHlmzhsdpQAAARwAAct0aGVhZA5QtXgAAduUAAAANmhoZWEG0AwiAAH5jAAAACRobXR4v8HBsgAB28wAAB3AbG9jYfsbiDIAAcywAAAO4m1heHAIxQ5XAAHMkAAAACBuYW1lKqFFSQACFCAAAAHucG9zdFa6PIcAAhYQAABVE3ByZXDNS6zAAAISZAAAANUAAgAoAAACIwK8AAMABwApQCYAAAACAwACZQQBAwEBA1UEAQMDAV0AAQMBTQQEBAcEBxIREAUNFysTIREhJREhESgB+/4FAav+pQK8/URGAjD90AAAAv//AAAC3QK8AAcACgArQCgJAQQCAUoFAQQAAAEEAGYAAgJCSwMBAQFDAUwICAgKCAoREREQBgoYKyUhByMBMwEjJwMDAif+jE1nAT1jAT5pcJeXr68CvP1E/wFX/qn/////AAAC3QN3ACIABAAAAAMHEgKaAAD/////AAAC3QN3ACIABAAAAAMHGQKaAAD/////AAAC3QPhACIABAAAACcHMQKaAJYBBwcuApoBEQARsQIBsJawMyuxAwG4ARGwMysA//////88At0DdwAiAAQAAAAjBv8CmgAAAAMHGQKaAAD/////AAAC3QPhACIABAAAACcHMQKaAJYBBwctApoBEQARsQIBsJawMyuxAwG4ARGwMysA/////wAAAt0D7QAiAAQAAAAnBzECmgCWAQcHNAKaAP4AELECAbCWsDMrsQMBsP6wMyv/////AAAC3QPgACIABAAAACcHMQKaAJYBBwcyApoBEQARsQIBsJawMyuxAwG4ARGwMysA/////wAAAt0DdwAiAAQAAAADBxcCmgAA/////wAAAt0DdwAiAAQAAAADBxYCmgAA/////wAAAt0DvgAiAAQAAAAnBy8CmgCWAQcHLgNCAO4AELECAbCWsDMrsQMBsO6wMyv//////zwC3QN3ACIABAAAACMG/wKaAAAAAwcWApoAAP////8AAALdA74AIgAEAAAAJwcvApoAlgEHBy0DQgDuABCxAgGwlrAzK7EDAbDusDMr/////wAAAt0D0wAiAAQAAAAnBy8CmgCWAQcHNAMcAOQAELECAbCWsDMrsQMBsOSwMyv/////AAAC3QPmACIABAAAACcHLwKaAJYBBwcyApoBFwARsQIBsJawMyuxAwG4ARewMysA/////wAAAt0DdwAiAAQAAAADByMCmgAA/////wAAAt0DbQAiAAQAAAADBwoCmgAA//////88At0CvAAiAAQAAAADBv8CmgAA/////wAAAt0DdwAiAAQAAAADBxACmgAA/////wAAAt0DuwAiAAQAAAADByICmgAA/////wAAAt0DfQAiAAQAAAADByQCmgAA/////wAAAt0DVAAiAAQAAAADBx4CmgAA//////8gAvMCvAAiAAQAAAADBwMECAAA/////wAAAt0D1gAiAAQAAAEHBvACmgCqAAixAgKwqrAzK/////8AAALdBB0AIgAEAAABBwbxApoAqgAIsQICsKqwMyv/////AAAC3QN3ACIABAAAAAMHGgKaAAAAAv//AAAD3wK8AA8AEwBEQEEABQAGCQUGZQsBCQABBwkBZQgBBAQDXQADA0JLCgEHBwBdAgEAAEMATBAQAAAQExATEhEADwAPEREREREREQwKGyslFSE1IQcjASEVIRUhFSEVJxEjAwPf/gT+6mdnAaECMf51AV/+oWMU01dXr68CvFfXVeKoAWb+mv////8AAAPfA3cAIgAeAAAAAwcSA0AAAAADAGkAAALDArwADgAXAB8APEA5DgEEAgFKAAIABAUCBGUGAQMDAV0AAQFCSwcBBQUAXQAAAEMATBgYDw8YHxgeHRsPFw8WJyEkCAoXKwAWFRQGIyERITIWFRQGBwEVMzI2NTQmIxI2NTQjIxUzAn1GiYP+sgE6eIMzK/6NzU1TU01uVqvm5gFaWURbYgK8YFU3UBUBAOA5Nzc5/eY4PHXpAAABADD/+AKtAsQAGwAuQCsYFwsKBAIBAUoAAQEAXwAAAEhLAAICA18EAQMDSQNMAAAAGwAaJiQmBQoXKwQmJjU0NjYzMhYXByYjIgYGFRQWFjMyNxcGBiMBOalgYKppUogwQU92Tn5HR35OdVBBMIlSCF2jZmajXTc2P1NGe0xMe0ZUPzY4//8AMP/4Aq0DdwAiACEAAAADBxICxwAA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BwcDUQBzAAixAQGwc7AzK///AGn/LwLDArwAIgBSAAAAAwcEAsEAAP//AGkAAALDA3cAIgBSAAAAAwcXAsEAAP//AGkAAALDA3cAIgBSAAAAAwcWAsEAAP//AGn/PALDArwAIgBSAAAAAwb/AsEAAAABAGkAAADNArwAAwATQBAAAABCSwABAUMBTBEQAgoWKxMzESNpZGQCvP1EAAIAV//4Am0CvAAPABMAM0AwAwEABAIBAgACSgAEBAFdAwEBAUJLAAAAAl8FAQICSQJMAAATEhEQAA8ADhMlBgoWKwQmJzcWFjMyNjURMxEUBiMDMxEjAQN8MCcsaDdeYmSeiORkZAgmIVAeIG5vAY7+d5miAsT+eQD//wBQAAABUgN3ACIAWAAAAAMHEgHHAAD////5AAABPQN3ACIAWAAAAAMHGQHHAAD////oAAABTgN3ACIAWAAAAAMHFgHHAAD///+uAAABGwN3ACIAWAAAAAMHIwHHAAD//wALAAABKwNtACIAWAAAAAMHCgHHAAD//wAPAAABOQP0ACIAWAAAACcHKwHHAJYBBwcuAccBJAARsQECsJawMyuxAwG4ASSwMysA//8AYAAAANYDfQAiAFgAAAADBw4BxwAA//8AaP88AM4CvAAiAFgAAAADBv8BxwAA////5AAAAOYDdwAiAFgAAAADBxABxwAA//8APwAAAQADuwAiAFgAAAADByIBxwAA////+QAAAT0DfQAiAFgAAAADByQBxwAA//8AFgAAASADVAAiAFgAAAADBygBxwAA//8ATv8gAPECvAAiAFgAAAADByoB+AAA////8wAAAUMDdwAiAFgAAAADBxoBxwAAAAH/9//4AZ4CvAAQACxAKQMCAgABAUoAAQECXQACAkJLAAAAA18EAQMDSQNMAAAAEAAPERMkBQoXKxYmJzcWMzI2NREjNSERFAYjhGwhOjpYOz39AWBvbAg1MERTSEYBiVf+JXR1////9//4AaIDdwAiAGgAAAADBxYCGwAAAAEAaQAAAs4CvAALAB9AHAkGAQMAAQFKAgEBAUJLAwEAAEMATBISERIEChgrAQcVIxEzEQEzAQEjAU2AZGQBfHL+1QE+dQE3grUCvP55AYf+xf5///8AaQAAAs4DdwAiAGoAAAADBxcCowAA//8Aaf75As4CvAAiAGoAAAADBwECowAA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KAcKGSsBERQGBwYVFBYzMjY3FwYjIiY1NDcmJjURMxEUMzI2NRECs15XkCIcECEMEygyOEBFf41kxWBmArz+cnaSHjNJGBwJCDEYNy5DMQifjgGO/nbhb3IBigD//wBj//gCswPWACIAxwAAAQcG8AK4AKoACLEBArCqsDMr//8AY//4ArMDdwAiAMcAAAADBxoCuAAA//8AY//4ArMD9AAiAMcAAAAnBzICuACWAQcHLgK4ASQAEbEBAbCWsDMrsQIBuAEksDMrAAAB//8AAALJArwABgAhQB4FAQABAUoDAgIBAUJLAAAAQwBMAAAABgAGEREEChYrAQEjATMTEwLJ/s1j/sxs/P4CvP1EArz9wQI/AAEAIAAABEYCvAAMACdAJAsIAwMAAgFKBQQDAwICQksBAQAAQwBMAAAADAAMEhESEQYKGCsBAyMDAyMDMxMTMxMTBEbqab+/a+pnvcVcwcECvP1EAi/90QK8/ccCOf3EAjz//wAgAAAERgN3ACIA4AAAAAMHEgNgAAD//wAgAAAERgN3ACIA4AAAAAMHFgNgAAD//wAgAAAERgNtACIA4AAAAAMHCgNgAAD//wAgAAAERgN3ACIA4AAAAAMHEANgAAAAAQANAAAClAK8AAsAJkAjCgcEAQQAAQFKAgEBAUJLBAMCAABDAEwAAAALAAsSEhIFChcrIQMDIwEDMxMTMwMBAiHSz3MBB/dyxMJt9wEJASH+3wFnAVX+8wEN/q7+lgAAAf/8AAACiwK8AAgAHUAaBgMAAwABAUoCAQEBQksAAABDAEwSEhEDChcrJRUjNQEzExMzAXVj/upr4OFj8vL0Acj+jwFx/////AAAAosDdwAiAOYAAAADBxICcAAA/////AAAAosDdwAiAOYAAAADBxYCcAAA/////AAAAosDbQAiAOYAAAADBwoCcAAA/////AAAAosDfQAiAOYAAAADBw4CcAAA/////P88AosCvAAiAOYAAAADBv8CcAAA/////AAAAosDdwAiAOYAAAADBxACcAAA/////AAAAosDuwAiAOYAAAADByICcAAA/////AAAAosDVAAiAOYAAAADBx4CcAAA/////AAAAosDdwAiAOYAAAADBxoCcAAAAAEAKwAAAnQCvAAJAC9ALAgBAQIDAQADAkoAAQECXQACAkJLBAEDAwBdAAAAQwBM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AfIAxAAIsQEBsMSwMyv//wBb/y8CUgLmACIB2AAAAAMHBAKDAAD////YAAACUgO1ACIB2AAAAQcG7QG3ANQACLEBAbDUsDMr////2AAAAlIDoQAiAdgAAAEHBxYBtwAqAAixAQGwKrAzK///AFv/PAJSAuYAIgHYAAAAAwb/AoMAAP//AEoAAADMAvUAIgHfAAAAAwcpAbcAAAABAFsAAAC7AhIAAwATQBAAAABFSwABAUMBTBEQAgoWKxMzESNbYGACEv3u//8AQAAAAUIC4QAiAd8AAAADBucBtwAA//8AAgAAARQC4QAiAd8AAAADBzcBtwAA////8QAAASUC4QAiAd8AAAADBzYBtwAA////ngAAAQsC4QAiAd8AAAADBvsBtwAA//8AEgAAAQQC1gAiAd8AAAADBzUBtwAA/////wAAASkDXgAiAd8AAAAjBysBtwAAAQcHLgG3AI4ACLEDAbCOsDMr//8AUAAAAMYC5wAiAd8AAAADBuMBtwAA//8ASv88AMwC9QAiAd8AAAAjBykBtwAAAAMG/wG3AAD////UAAAA1gLhACIB3wAAAAMG5QG3AAD//wAvAAAA8AMlACIB3wAAAAMG+gG3AAD//wACAAABFALnACIB3wAAAAMHOgG3AAD//wBK/zgB6AL1ACIB3wAAACMHKQG3AAAAIwHwARcAAAADBykC0wAA//8ABgAAARACvgAiAd8AAAADBzkBtwAA//8APP8gAN8C9QAiAd8AAAAjBykBtwAAAAMHKgHmAAD////8AAABGgLhACIB3wAAAAMHOAG3AAD///+k/zgA0QL1ACIB8AAAAAMHKQG8AAAAAf+k/zgAwAISAA4AKUAmAwEAAQIBAgACSgABAUVLAAAAAmADAQICTQJMAAAADgANEyQEChYrBiYnNxYzMjY1ETMRFAYjDDwUHx4wJilgWFHIEBBKGS8uAiz91lJe////pP84ASoC4QAiAfAAAAADBzYBvAAAAAEAWwAAAmYC5gALACNAIAkGAQMAAgFKAAEBREsAAgJFSwMBAABDAEwSEhESBAoYKyUHFSMRMxEBMwcTIwEpbmBgASF03/V292aRAub+JAEI2/7J////2AAAAmYDtQAiAfIAAAEHBu0BtwDUAAixAQGw1LAzK///AFv++QJmAuYAIgHyAAAAAwcBAmUAAAABAFsAAAJm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yNQBDP70/////wAAAmgDBwAiAt8AAAEHBucCXwAmAAixAgGwJrAzK/////8AAAJoAwcAIgLfAAABBwbvAl8AJgAIsQIBsCawMyv/////AAACaANxACIC3wAAACcHMQJfACYBBwcuAl8AoQAQsQIBsCawMyuxAwGwobAzK///////PAJoAwcAIgLfAAAAIwb/Al8AAAEHBu8CXwAmAAixAwGwJrAzK/////8AAAJoA3EAIgLfAAAAJwcxAl8AJgEHBy0CXwChABCxAgGwJrAzK7EDAbChsDMr/////wAAAmgDfQAiAt8AAAAnBzECXwAmAQcHNAJfAI4AELECAbAmsDMrsQMBsI6wMyv/////AAACaANwACIC3wAAACcHMQJfACYBBwcyAl8AoQAQsQIBsCawMyuxAwGwobAzK/////8AAAJoAwcAIgLfAAABBwbtAl8AJgAIsQIBsCawMyv/////AAACaAMHACIC3wAAAQcG7AJfACYACLECAbAmsDMr/////wAAAnkDTgAiAt8AAAAnBy8CXwAmAQcHLgMHAH4AELECAbAmsDMrsQMBsH6wMyv//////zwCaAMHACIC3wAAACMG/wJfAAABBwbsAl8AJgAIsQMBsCawMyv/////AAACaANOACIC3wAAACcHLwJfACYBBwctAwcAfgAQsQIBsCawMyuxAwGwfrAzK/////8AAAJoA2MAIgLfAAAAJwcvAl8AJgEHBzQC4QB0ABCxAgGwJrAzK7EDAbB0sDMr/////wAAAmgDdgAiAt8AAAAnBy8CXwAmAQcHMgJfAKcAELECAbAmsDMrsQMBsKewMyv/////AAACaAMHACIC3wAAAQcG+wJfACYACLECArAmsDMr/////wAAAmgC/QAiAt8AAAEHBt8CXwAmAAixAgKwJrAzK///////PAJoAjgAIgLfAAAAAwb/Al8AAP////8AAAJoAwcAIgLfAAABBwblAl8AJgAIsQIBsCawMyv/////AAACaANLACIC3wAAAQcG+gJfACYACLECAbAmsDMr/////wAAAmgDDQAiAt8AAAEHBvwCXwAmAAixAgGwJrAzK/////8AAAJoAuQAIgLfAAABBwb2Al8AJgAIsQIBsCawMyv//////yACfgI4ACIC3wAAAAMHAwOTAAD/////AAACaANSACIC3wAAAQcG8AJf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VAD////w/zgCNgISAAICbwYA////8P84AjYC4QAiAm8GAAADB1gB8AAAAAMAK/8+AvoC5gARABgAHgA3QDQeAQAGAUoABAMEgwgBBwcDXwUBAwMiSwAGBgBfAgEAACFLAAEBJAFMFhEUEREUERERCQcdKyQGBxUjNSYmNTQ2NzUzFRYWFQQWFxEGBhUENTQmJxEC+qSVXpWjopZelaT9kG1sbWwCEW5sj44Iu7sIjXx7igjPzwiLelVgBwF0B15TrKxUXQf+iwD//wAJAAACFQISAAICbvsAAAEAKgAAAgQCEgARAC9ALBABAwIDAQEDAkoAAwABAAMBZwUEAgICIksAAAAhAEwAAAARABEjEyIRBgcYKwERIzUGIyImNTUzFRQWMzI3NQIEYFZVY2xgRT5GUQIS/e7WKFxcrKY3OCPyAAABAF3/gQKTAhIACwApQCYAAAMAUgQBAgIiSwYFAgMDAV4AAQEhAUwAAAALAAsREREREQcHGSslFSM1IREzESERMxECk1v+JWABImBU038CEv5CAb7+QgAAAQBdAAADUAISAAsAJUAiBgUDAwEBIksEAQICAF4AAAAhAEwAAAALAAsREREREQcHGSsBESERMxEzETMRMxEDUP0NYOpg6QIS/e4CEv5CAb7+QgG+AP//AF3/jwOfAhIAIgUmAAAAAwdaArIAAAABAF3/gQIoAhIACwBGS7AKUFhAGAABAAABbwUBAwMiSwAEBABeAgEAACEATBtAFwABAAGEBQEDAyJLAAQEAF4CAQAAIQBMWUAJEREREREQBgcaKyEjFSM1IxEzESERMwIot1u5YAELYH9/AhL+QgG+AAACAF3//gIhAhIACgATADBALQUBAgADBAIDZQABASJLBgEEBABeAAAAIQBMCwsAAAsTCxIRDwAKAAkRJAcHFisAFhUUBicnETMVFxI2NTQmJycVFwG3anNr5mCVKkNBQ35+AV1aUlZdAQECErMB/uk2NTQwAQLQAQACAAQAAAJhAhIADAAVADZAMwYBAwAEBQMEZQABAQJdAAICIksHAQUFAF0AAAAhAEwNDQAADRUNFBMRAAwACxERJAgHFysAFhUUBiMjESM1IRUzEjY1NCYjIxUzAfhpc2nfogECkCpAPz98fAFfW1JVXQG+VLP+6jY1MzHPAAADAF3//gLJAhIACgAOABcANkAz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hAMBAgIBXQABASEBTAAAAAUABRERBAcWKzcVIzUjNfpccVfwmVcAAQA6/2cA2wBXAAUAH0AcAAABAIQDAQICAV0AAQEhAUwAAAAFAAUREQQHFis3FSM1IzXbXURX8JlXAAEAQP+PANoAUgAFADxLsApQWEASAAABAQBvAwECAgFdAAEBIQFMG0ARAAABAIQDAQICAV0AAQEhAUxZQAsAAAAFAAUREQQHFis3FSM1IzXaV0NSw3FSAP///jICWf92A0sAIgcxAAABBgcuAHsACLEBAbB7sDMr///+MgJZ/3YDSwAiBzEAAAEGBy0AewAIsQEBsHuwMyv///4yAln/dgNXACIHMQAAAQYHNABoAAixAQGwaLAzK////i8CWf95A0oAIgcxAAABBgcyAHsACLEBAbB7sDMr///+IQJfABoDKAAiBy8AAAEHBy4AqABYAAixAQGwWLAzK////iECX//BAygAIgcvAAABBwctAKgAWAAIsQEBsFiwMyv///4hAl//pAM9ACIHLwAAAQcHNACCAE4ACLEBAbBOsDMr///+IQJf/4cDUAAiBy8AAAEHBzIAAACBAAixAQGwgbAzK////jIC7/92A+EAJwcxAAAAlgEHBy4AAAERABGxAAGwlrAzK7EBAbgBEbAzKwD///4yAu//dgPhACcHMQAAAJYBBwctAAABEQARsQABsJawMyuxAQG4ARGwMysA///+MgLv/3YD7QAnBzEAAACWAQcHNAAAAP4AELEAAbCWsDMrsQEBsP6wMyv///4vAu//eQPgACcHMQAAAJYBBwcyAAABEQARsQABsJawMyuxAQG4ARGwMysA///+IQL1ABoDvgAnBy8AAACWAQcHLgCoAO4AELEAAbCWsDMrsQEBsO6wMyv///4hAvX/wQO+ACcHLwAAAJYBBwctAKgA7gAQsQABsJawMyuxAQGw7rAzK////iEC9f+kA9MAJwcvAAAAlgEHBzQAggDkABCxAAGwlrAzK7EBAbDksDMr///+IQL1/4cD5gAnBy8AAACWAQcHMgAAARcAEbEAAbCWsDMrsQEBuAEXsDMrAAABAF//ZwC8ABcAAwAYQBUAAQAAAVUAAQEAXQAAAQBNERACBxYrFyM1M7xdXZmwAAABAF7/jwC5ABUAAwAYQBUAAQAAAVUAAQEAXQAAAQBNERACBxYrFyM1M7lb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UXdRg1GUUaVRtlHHUdhR6VICUhtSgFKLUp9SsFLJUuJS+1NDU3xTuVQOVFFUYlRzVH9UkFScVK1UuVUPVSBVOVVBVVJVa1V3VYhVlFWlVbFVxlZEVmNWdFaFVpFWnVauVrpWxlb0VwVXFlcnVzhXSVdaV2ZXd1eIV5lXslfHV+BX+VgSWCNYNFhFWF5YrFi9WM5Y51kLWTxZTVleWW9ZgFmtWdBZ4VnyWgNaFFogWjFaQlpTWmRaklqjWrRaxVrRWw1bHlsvW0hbXVt2W49bqFu5W8pb41v4XBFcKlxDXFRcZVxxXIJck1ykXLVcwVzSXONc9F1ZXWpdf13WXedd+F4JXh5eL15IXl1edl6PXqheuV7KXtte5174XwlfGl8rX0RfXV/pX/pgSGCBYOJg82EEYRVhJmE3YUhhXGGGYY5hn2HtYf5iD2IgYjFiSmJWYmdieGKJYsVi1mLiYvNjKGM5Y0VjpmOyY/dkCGQZZCVkNmRCZKJkrmS6ZMtlFmVAZVFlYmVuZXpli2WXZaNl7WX+Zg9mIGYxZkJmU2ZfZnBmgWaSZqtmwGbZZvJnC2ccZy1nPmdXZ2NndGeFZ55n5mf3aAhoGWgqaHVohmiXaKhouWjKaNto7Gj9aQ5pSWlaaWtpfGmIad9qH2onamJqr2rNatlq+ms7a0NrT2tba5tr+WwfbCtsN2yNbLtsx20hbVVtXW1lbYltkW2Zbblt8m3+blBugG62buJvDm8ab0Fvem+4b8Rv0HAxcDlwSXCYcK5wunDCcQBxc3G1ciRybXK4csxzGXNJc5hzpHOwc7xz+nQ3dGt0d3SDdNZ04nWZdaV1sXW5dc112XYNdhl2XXaTdp93B3cTdxt3J3dud6x34XggeF54anh2eH54injheO14+XkFeVF5XXlpeXV5iXmhea15uXnFedF53Xnoefh6RnqQesh7I3txe3l7qnvzfEF8f3yLfMJ85n05fWN9b317fYd9j33Ufdx96H30ffx+CH6nfrN+6380fzx/RH9Qf5p/5IA1gKOBM4GugbaCDoIagiaCMoI6gkaCUoJegmqCdoKCgo6CloLvgveDXYOng8SD1oQHhEeET4RbhGeEo4T+hSSFMIU8hZKFvYXJhhiGS4ZxhnmGnYalhq2GzYbVhuGHMIc4h22HmYfEh9CICYhFiISIyYjViTKJOolKiZaJoomuibqKAYqKisiLJouKi9uL44wxjF+MrYy5jRaNIo1djZ6Nz43bjeeN845FjtOO347rjw6PIo8uj2KPbo+vj7eP95BZkGWQbZB5kL6ROJF6ka2R6pImkjKSPpJGklKSpJKwkrySyJMRkx2TKZM1k4eTk5Ofk6uTt5PDk8+T2pPmlDWUepSylQqVXJVklZWV35ZXlpmWpZcDl1qXYpell/6YBpgSmB6YT5hymHqYgpiKmL+Yy5ktmTmZgZnPmkaabpp6moaamJrymv6bBpsSmyabLps2mz6bSptWm16bapvom/ScRJxMnFScYJyonPadXp3GnkCemJ6knrCeuJ7EnxOfH58rnzefQ59Pn1ufZ5+/n+agMqB0oLCgwaDJoQqhKaFpobKh5aItoo+izaM4o5mj36P9pD2kiKS+pQelD6VSpVqlaKV3pYallaWkpbOlwqXRpeCl76X+pkCmaKaopvCnI6drp82oC6h2qNipHqlFqYWpzqoDqkyqVKqXqp+rA6sRqx+rLas7q0mrV6tlq3OrgauPq8mr76wtrHOso6zlrTytd63Xri+uPq5krqKu6K73rzqvSa+Fr5Svo6+yr8Gv0K/fr+6v/bAMsBuwKrA5sFGwYbBxsIGwkbChsLGwwbDRsOGxFrExsVaxe7GNsbqxyrH5siiylLK2swuzZLNws4ezmbOws8yz57QMtBm0PrRVtHq0vrUFtSW1SLVrtZG1nrWrtbi1xbXStd+1+LYRtiq2MrZLtlO2W7ZotnW2graOtpq2ubbbtue287b/tya3Ubd+t5O3qLe1t8K38bgiuC64OrhZuHu4nbjxuUi5VLlguWy5eLmfucq597oNuiq6Oro6ujq6Oro6ujq6OrqWuuG7c7vfvFG8371Jvbq98r5UvsO+/79Xv6C/28BIwFjA5cErwXzBwsHswizCuML4wwDDRcNNw3XDjsOrw/XEJ8SBxJfErsTYxQTFOsW+xjLGUMayxybHacdxx3nHnMfVyATIDMhvyR7J/sodyjXKW8p0ypPKq8rUyuzLHss8y1vLfsuly8vL3sv6zBTMKsxUzGbMdsyOzJ7MxMzczQLNGs3KzjjOY87iz2TP6tAx0HnQj9Cx0QbRK9Fi0cvSU9J60pHSsdK+03fT5dQk1DXURtRX1IHUktSs1L3U1tTn1PjVHtU11VrVf9WP1cHWA9ZI1rzWzdbe1u/XDdce1y/XQNd115vXydf22CLYS9iJ2LnY+dkx2WHZftmc2brZzNnm2iHaONpP2mbajNqj2rna0Nrl2vzbE9s121bbd9uO27zcLNxD3FrccdyL3KLcudzQ3QHdI91N3Wfded2P3andzN4L3lPehN6k3sTe5t8I3zLfld+53+rgMuBU4Hzg8uEJ4S/hU+Ft4Yrhl+Gj4cDh2eH24ibiVOJu4oripuKv4rjiweLK4tPi3OLl4u7i9+MA4wnjEuMb4zTjTeNk45LjwOPs5AnkJuRS5GLkcuSC5JLko+S05MXk1uTt5QTlGuUx5UflXeVz5YrlouW6AAAAAQAAAAczM3QVnhxfDzz1AAcD6AAAAADWC/5GAAAAANYeQAX8uP75Bk0EHQAAAAcAAgAAAAAAAAJLACgAAAAAAQ0AAAENAAAC3P//Atz//wLc//8C3P//Atz//wLc//8C3P//Atz//wLc//8C3P//Atz//wLc//8C3P//Atz//wLc//8C3P//Atz//wLc//8C3P//Atz//wLc//8C3P//Atz//wLc//8C3P//Atz//wQX//8EF///AvUAaQLTADAC0wAwAtMAMALTADAC0wAwAtMAMALTADADOgBpBa4AaQNCAAsDOgBpA0IACwM6AGkDOgBpBUMAaQKeAGkCngBpAp4AaQKeAGkCngBpAp4AaQKeAGkCngBpAp4AaQKeAGkCngBpAp4AaQKeAGkCngBpAp4AaQKeAGkCngBpAp4AaQKeAGkCngBpAp4AaQKeAGkCngBpAm8AHwJvAB8CewBpAwQAMAMEADADBAAwAwQAMAMEADADBAAwAwQAMAMnADADLABpAzwACQMsAGkDLABpAywAaQMsAGkBNgBpAtAAVwE2AFABNv/5ATb/6AE2/64BNgALATYADwE2AGABNgBoATb/5AE2AD8BNv/5ATYAFgE2AE4BNv/zAgH/9wIB//cCzwBpAs8AaQLPAGkCUgBpBFMAaQJSAFACUgBpAlIAaQJSAGkCUgBpA24AaQJSAGkCWgAJA7sAaQO7AGkDLABpBS0AaQMsAGkDLABpAywAaQMsAGkDLABpAywAaQRIAGkDLABpAywAaQNIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADADSAAwA0gAMANIADAEZgAwAtIAaQLSAGkDSAAwAtcAaQLXAGkC1wBpAtcAaQLXAGkC1wBpAtcAaQLXAGkCbQApAm0AKQJtACkBAgBQAm0AKQJtACkCbQApAm0AKQJtACkCbQApAm0AKQJtACkC+wBjAzEAMAJLAAQCSwAEAksABAJLAAQCSwAEAksABAJLAAQDFwBjAxcAYwMXAGMDFwBjAxcAYwMXAGMDFwBjAxcAYwMXAGMDFwBjAx8AYwMfAGMDHwBjAx8AYwMfAGMDHwBjAxcAYwMXAGMDFwBjAxcAYwMXAGMDFwBjAxcAYwMXAGMCyP//BGYAIARmACAEZgAgBGYAIARmACACoQANAof//AKH//wCh//8Aof//AKH//wCh//8Aof//AKH//wCh//8Aof//AKRACsCkQArApEAKwKRACsCkQArAtAAVwMgAGMDIABjAyAAYwMgAGMDIABjAyAAYwMgAGMDIABjAyAAYwMgAGMDIABjAyAAYwMgAGMDIABjAyAAYwMgAGMDIABjAyAAYwMgAGMDIABjAyAAYwMgAGMDIABjAyAAYwMgAGMDIABjBDIAWgQyAFoFrgBpBU0AaQKEADMChAAzAoQAMwKEADMChAAzAoQAMwKEADMChAAzAoQAMwKEADMChAAzAoQAMwKEADMChAAzAoQAMwKEADMChAAzAoQAMwKEADMChAAzAoQAMwKEADMChAAzAl4AYwMEADADBAAwAwQAMAMEADADBAAwAwQAMAMEADADLAAwAcgAKwLQAFcByAArAtAAVwHIACsByAArAcj/+AHIACsByAArAcgAKwHIACsByAArAcgAKwHIACsByAArAcgAKwHIACsB///3Af//9wRvAGkEywBpBMsAaQMeAGkFHQBpAx4AaQMeAGkDHgBpAx4AaQMeAGkDHgBpBDoAaQMeAGkDHgBpA0gAMAMxAEUCVv/8Alb//AJW//wCVv/8Alb//AJW//wCVv/8AxoAYwMaAGMDGgBjAxoAYwMaAGMDGgBjAxoAYwMaAGMDGgBjAxoAYwMaAGMDGgBjAxoAYwMaAGMDGgBjAxoAYwMaAGMDGgBjAxoAYwMaAGMDGgBjAxoAYwMaAGMDGgBjBKYAYwSmAGMEpgBjBKYAYwSmAGMDEwBeAxMAXgMTAF4DEwBeAxMAXgMTAF4DEwBeAxMAXgMTAF4DEwBeApsAMAKbADACmwAwApsAMAKbADACVgAyAlYAMgJWADICVgAyAlYAMgJWADICVgAyAlYAMgJWADICVgAyAlYAMgJWADICVgAyAlYAMgJWADICVgAyAlYAMgJWADICVgAyAlYAMgJWADICVgAyAlYAMgJWADICVgAyAlYAMgPdADID3QAyAqoAWwI7ACoCOwAqAjsAKgI7ACoCOwAqAjsAKgI7ACoCqgAqAoAAKgKqACoCqgAqAqoAKgKqACoEuwAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAg//7AIP/+wBYQAPArIAKgKyACoCsgAqArIAKgKyACoCsgAqArIAKgK6ACoCqQBbAqkAAAKpAFsCqf/YAqn/2AKpAFsBFwBKARcAWwEXAEABFwACARf/8QEX/54BFwASARf//wEXAFABFwBKARf/1AEXAC8BFwACAjMASgEXAAYBFwA8ARf//AEc/6QBHP+kARz/pAJoAFsCaP/YAmgAWwJeAFsBFwBbARcAQAEXAFsBFwBYAVoAWwEXAFgCMwBbARf/6AEn//kEIQBbBCEAWwKpAFsCqQBbAwIANQKpAFsCqQBbAqkAWwKpAFsCqQBbA8UAWwKpAFsCqQBbAnsAKgJ7ACoCewAqAnsAKgJ7ACoCewAqAnsAKgJ7ACoCewAqAnsAKgJ7ACoCewAqAnsAKgJ7ACoCewAqAnsAKgJ7ACoCewAqAnsAKgJ7ACoCewAqAn8AKgJ7ACoCewAqAnsAKgJ7ACoCewAqAnsAKgJ7ACoCewAqAnsAKgJ7ACoCewAqAnsAKgQrACoCqgBbAqoAWwKqACoBmgBbAZoAWwGaADcBmgBYAZr//QGaAFgBmgBIAZr/6AH1ABgB9QAYAfUAGAD/AFAB9QAYAfUAGAH1ABgB9QAYAfUAGAH1ABgB9QAYAfUAGAKkAFsBMgAZAZ4ADwGoABQBngAPAZ4ADwGeAA8BngAJAZ4ADwGeAA8CpQBWAqUAVgKlAFYCpQBWAqUAVgKlAFYCpQBWAqUAVgKlAFYCpQBWAq0AVgKtAFYCrQBWAq0AVgKtAFYCrQBWAqUAVgKlAFYCpQBWAqUAVgKlAFYCpQBWAqUAVgKlAFYCL//+A4MABgODAAYDgwAGA4MABgODAAYCKAAOAi//6gIv/+oCL//qAi//6gIv/+oCL//qAi//6gIv/+oCL//qAi//6gIJACgCCQAoAgkAKAIJACgCCQAoAjIASAKqACoCqgAqAqoAKgKqACoCqgAqAqoAKgKqACoCqgAqAqoAKgKqACoCqgAqAqoAKgKqACoCqgAqAqoAKgKqACoCqgAqAqoAKgKqACoCqgAqAqoAKgKqACoCqgAqAqoAKgKqACoCqgAqA90AMgPdADIEvQAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAAqAmQAKgJkACoCZAArAVMAWwFBAFsBQQBAAUEAWwFBAFsBbQBbAUEAWwI1AFsBQQApAUH/8QQ6ACoBiwBWAZUADAGLAFYBiwBWAYsAVgGL//YBiwBWAYsASAPZAFYD2QBWA9kAVgPZAFYD2QBWAqUAVAKlAFQCpQBUAqUAVAKlAFQCpQBUAqUAVAKlAFQCpQBUAhMALQITAC0CEwAtAhMALQITAC0EsQAEAsgADwJ4AA8CugBbAosADwJn//8CZ///Amf//wJn//8CZ///Amf//wJn//8CZ///Amf//wJn//8CZ///Amf//wJn//8CZ///Amf//wJn//8CZ///Amf//wJn//8CZ///Amf//wJn//8CZ///Amf//wJn//8CZ///A2z//wNs//8ChABhAmEALAJhACwCYQAsAmEALAJhACwCYQAsAmEALAK+AGEC0gAgAr4AYQLSACACvgBhAr4AYQTOAGECOgBhAjoAYQI6AGECOgBhAjoAYQI6AGECOgBhAjoAYQI6AGECOgBhAjoAYQI6AEMCOgBhAjoAYQI6AGECOgBhAjoAYQI6AGECOgBhAjoAYQI6AGECOgBhAjoAYQKcACwCMAAlAjAAJQIgAGECjgAsAo4ALAKOACwCjgAsAo4ALAKOACwCjgAsAq8ALAK7AGEC4wAiArsAYQK7AGECuwBhArsAYQEiAGEBIgBhASIARgJQAEEBIgAIASL/9wEi/6QBIgAYASIABQEiAFYBIgBeASL/2gEiADUBIgAIAm8ATAEiAAwBIgBDASIAAgHB//wBwf/8AmwAYQJsAGECbABhAmwAYQH7AGEB+wBHAfsAYQH7AGEB+wBhAfsAYQO8AGEB+wBhAfv/+AMyAGEDMgBhArsAYQK7AGECuwBhArsAYQK7AGECuwBhArsAYQR8AGECuwBhArsAYQLCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwCwgAsAsIALALCACwDqwAsAm8AYQJvAGECwgAsAnYAYQJ2AGECdgBhAnYAYQJ2AFQCdgBhAnYAYQJ2AGECEwAlAhMAJQITACUA/wBQAhMAJQITACUCEwAlAhMAJQITACUCEwAlAhMAJQITACUCigBbAe0ABAHtAAQB7QAEAe0ABAHtAAQB7QAEAe0ABAHtAAQCqABbAqgAWwKoAFsCqABbAqgAWwKoAFsCqABbAqgAWwKoAFsCqABbArAAWwKwAFsCsABbArAAWwKwAFsCsABbAqgAWwKoAFsCqABbAqgAWwKoAFsCqABbAqgAWwKoAFsCaQAIA70AIgO9ACIDvQAiA70AIgO9ACICPAAMAjkAAgI5AAICOQACAjkAAgI5AAICOQACAjkAAgI5AAICOQACAjkAAgIrACkCKwApAisAKQIrACkCKwApAq8AWwKvAFsCrwBbAq8AWwKvAFsCrwBbAq8AWwKvAFsCrwBbAq8AWwKvAFsCrwBbAq8AWwKvAFsCrwBbAq8AWwKvAFsCrwBbAq8AWwKvAFsCrwBbAq8AWwKvAFsCrwBbAq8AWwKvAFsDmQBVA5kAVQToAGECJwAqAicAKgInACoCJwAqAicAKgInACoCJwAqAicAKgInACoCJwAqAicAKgInACoCJwAqAicAKgInACoCJwAqAicAKgInACoCJwAqAicAKgInACoCJwAqAicAKgKcADkCCABbAo4ALAKOACwCjgAsAo4ALAKOACwCjgAsAo4ALAK0ACwBqgA5AaoAOQGqADkCbwBBAaoAOQGqADkBqv/pAaoAOQGqADkBqgA5AaoAHwGqADkBqgA5Am8ATAGqADkBqgA5AaoAOQHB//wBwf/8A7wAYQQAAGEEAABhAq4AYQKuAGECrgBhAq4AYQKuAGECrgBhAq4AYQRvAGECrgBhAq4AYQLCACwB9//8Aff//AH3//wB9//8Aff//AH3//wB9//8Aff//AKuAFsCrgBbAq4AWwKuAFsCrgBbAq4AWwKuAFsCrgBbAq4AWwKuAFsCtgBbArYAWwK2AFsCtgBbArYAWwK2AFsCrgBbAq4AWwKuAFsCrgBbAq4AWwKuAFsCrgBbAq4AWwP/AFsD/wBbA/8AWwP/AFsD/wBbAqMAVgKjAFYCowBWAqMAVgKjAFYCowBWAqMAVgKjAFYCowBWAqMAVgIrACkCKwApAisAKQIrACkCKwApAZQAJQGiACAC9gAMAtsAbQLrAG0CQgBtAkIAbQJFAG0DJAANApkAbQKZAG0CmQBtBAUAEwKCACADNwBtAzcAbQM3AG0DUwBtAscAbQLHAG0DFgANA8MAbQM0AG0DUAAzAzUAbQLKAG0CzgA0AlsADQKzABACswAQA54ALQKcABEC4AA2Az0AbQRHAG0EYABtAycAbQLJAG0DPAANA+EAbQSjAA0EnABtAnwAMQLEADUCwwAdAT0AbQE2AAsCHAASA0oADQRLAG0C2wA6A0EADgMrABMDhAASA1AAMwL5AA4CagAeAr8AbQQsABMCggAgAvMAbQLkAG0C3QAjAzsADQNPAG0EPwBtBKwAbQNQAG0DzgA5As4ANAJbAA0CmwAGAof//ALBABEDzgAOAvsANgLgADUC4ABtAyUAbQPdACAD3QAgAT4AbQQFABMCygBtAy8AbQNQAG0C3AAzA+gAbQL2AAwC9gAMBBYABwKZAG0DNwApAzcAKQQFABMCggAgAm8AHwM3AG0DNwBtA1AAMwNQADMDUAAzAsMAHQKzABACswAQArMAEALgADYCQgBtA+EAbQJrAB0CoAAOAqwAGgKCADkDFwAMA1YAMwQ9ABUC4wAfAt0AbQMw/7QDMQANAxkADgLlAA0DnQAxAk8AbQKCACACzgA0As4ANAMgAGMDRAAeAoQAMwKEADMChAAzAxoAYwMaAGMDGgBjAxoAYwMWACACzQBcAncADQMTAF4DEwBeA58AMgLMAF8DaAAOA+EAXwSfAAwEjABtAf//9wM7ABMCdwANAyAAYwMgAGMEMgBaAoQAMwMaAGMDGgBjAxMAXgMTAF4DEwBeA+EAXwNIADAC7wAaAk0AMAKWAD4CZgBdAegAXQHoAF0B0gBdApgACAJ0ACwCdAAsAnQALANRAA0CIAAcArYAXQK2AF0CtgBdAswAXQJWAF0CVgBdAoEABQMeAF0CqQBdAoEALAKlAF0CsABdAjsALAHtAAQCO//wAjv/8AMlACsCHQAJAmEAKgKyAF0DrQBdA60AXQKGAF0CPwBdAn8ABAMnAF0DpgAFA7gAXQIYACsCQQAsAj8AGAEbAEwBFwASARz/ogKi/9wDbABdAmQAMAKj//YCZQAAAsAADwKKACwCVAAFAgQAKwJZAF0DcgANAiAAHAJWAF0CZgBbAlUAAAKeAAQCvgBdA3YAXQKlAF0D0ABdAyYALwI7ACwB7QAEAj4ABgI+AAYCHQAJAwMABQJ6ACoCYQApAqIAXQK8AF0DAwAVAwMAFQEbAF0DUQANAlYAXQKXAAUCrwBdAr8AXQJeACcDPQBdAk0AMAJNADAD4wAwAnQALAJzADgCcwA4A1EADQIgABwCD//sArYAXQK2AF0CgQAsAooALAKKACwCPwAYAjv/8AI7//ACO//wAmEAKgHoAF0DJwBdAewADQIdAAsCOQAWAiAANQKBAAUCsAAuA6oACQJeABYCuwBeAqn/pQKWAAUCfgBMAiEALgKzACkDUQANAe7/9wKeAE0CngBNAp4ATQJVAF4CPAAFAqkAXQKiAF0EGwBdAmMALAK3AE0EGwBOBDQATgJAAFACnAAFA1cAXgH0AF0CIAAcAjsALAHoAF0CbgAnARcABgKzACcCpQBWBBsATgKqACoCswApAmQAKgJkACoCZAAqAp4ATQKeAE0CngBNAp4ATQKWAEYEGwBdAqUAVAKlAFQCSQBQAqUABQMoAFADrQAIA7IAXQJ6//wCqgAqAqoAKgPdADICZAAqAmQAKwJkACsCngBNAp4ATQKlAFQCpQBUAqUAVAMoAFACawARAtz//wOCAAkCqgBbAtT/+ALc//8CzwBpApsAMAFyAAgCPgAOAjwABQKdACYCPgARAmkAMAJWAB4ChAAsAmkAHAKsADIBcgAIAj4ABgI8AAYCnQAmAj4AEQJpADACVgAeAoQALAJpABwBrgAcAa4AUQGuABwBrgAbAa4AFgGuABsBrgAlAa4AJAGuABwBrgAgArwAPQK8AJACvAA8ArwAPgK8ADUCvABBArwASgK8AEkCvAA7ArwAQQK8ADwCvACQArwARwK8AD4CvAA1ArwAQQK8AEoCvABJArwAOwK8AEEBrgAcAa4AUQGuABwBrgAbAa4AFgGuABsBrgAlAa4AJAGuABwBrgAgAa4AHAGuAFEBrgAcAa4AGwGuABYBrgAbAa4AJQGuACQBrgAcAa4AIAGuABwBrgBRAa4AHAGuABsBrgAWAa4AGwGuACUBrgAkAa4AHAGuACABrgAcAa4AUQGuABwBrgAbAa4AFgGuABsBrgAlAa4AJAGuABwBrgAgAK7/QgQKAFEECgBRBAoAHAQKAFEECgAbBAoAUQQKABsECgAbBAoAJAGQABMBYP/aAQsAQgE6AEIA4wAuAOMAMAKzAC4BDABFAQwARQK/ABsA4wAuAj0ACQI9AEUBhwA/ANIAPwDjAC4BYP/kAfQAAAFg/9oBHwBMAU4ATAFYAH4BYP/kAIEALQFfADkBXwATAU0AaQFNABMBUQBfAVIAIAFzAEMBcwAdAWEAcwFhAB0BZQBpAWYAKgPoAAAB9AAAArwALwPoAAABfwA5AX8AOQF/ADkD6AAAAfQAAAGTAEMB+AAuAfgAIgE4AC4BOAAiAaAAMAGgAC4BoAAwAOMALgDjADAA4wAwAgwAOAIMACwBTAA4AUwALAEMAEUBDABFAdwALgHdACIBIgAuASMAIgDnADMCCgAIAgkARQGHAD8BnwAwAZ8ALgGfADAA4gAuAOIAMADjADAA0gA/AUkAJAFJACsCvAAAAGQAAADjAAABDQAAAIYAAAAAAAAC0wAwAjsAKgLTADACvAAfAm0AKQKqACoDJwAeAcH/pAKXAB4DBAAwAzgAVwKUAB4ChgAeAsgAHgOUAGkDcAAeBmoAaQNLAB4C7gAeAtAAHQKGAB4C0QBMAqoAMwSqAB4Cw//8AR8ATAIaAEwBYP/kAkYAQwJGAEMCRgBrAkYAQwJGAEMCRgBDAkYAQwJGAEMCRgBDAkYAQwJGAEMCRgA6AkYAOgJGAEMCRgAlA5sAKgGP/90DggAJAtz//wMsAGkCkQArAyMAQwKqAFsCvABIA0sAJQS6ACUCWABgAlgAeAJYAEMCWAB5AlgAagJYAG4CWABgAlgAbwLZADICWABfAlgAYAJYAEMCWABq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Bz4HPQdEB0MHTAdKB0cHQAdFB0EHRgdJB04HUwdSB1QHUAblBucG7AbyBvYG7wbjBt8G+gbwBuoG7QRuBG8ElwRqBI8EjgSRBJIEkwSMBI0ElAR3BHQEgQSIBGYEZwRoBGkEbARtBHAEcQRyBHMEdgSCBIMEhQSEBIYEhwSKBIsEiQSQBJUElgUGBQcFCAUJBQwFDQUQBREFEgUTBRYFIgUjBSUFJAUmBScFKgUrBSkFMAU1BTYFDgUPBTcFCgUvBS4FMQUyBTMFLAUtBTQFFwUUBSEFKASYBTgEmQU5BJoFOgSbBTsEdQUVBNgFeQTZBXoEawULBJwFPASdBT0EngU+BJ8FPwSgBUAEoQVBBKIFQgSjBUMEpAVEBKUFRQSmBUcEqAVIBKkFSQSqBUoEqwVLBKwFTAStBU0ErgVOBK8FTwSwBVAEsQVRBLMFUwS0BVQEtQS2BVYEtwVXBVgEuAVZBLkFWgS6BVsEuwVcBVUEvAVdBL0FXgS+BV8EvwVgBMAFYQTBBWIEwgVjBMMFZATEBWUExQVmBMYFZwTHBWgEyAVpBMkFagTKBWsEywVsBMwFbQTNBW4EzgVvBM8FcATQBXEE0QVyBNIFcwTTBXQE1AV1BNUFdgTWBXcE1wV4BKcFRgSyBVIE2gV7BNsFfAAlAasALQGyAC4BswBEAckAQwHIADQBuQBQAdYAVwHdAFQB2gBfAeUAcwH7AHUB/QB4AgAAfgIGAH8CBwCCAgoAowIrAKQCLACeAiYAnQIlAK8CNwCxAjkAuwJDALwCRAC0AjwAtwI/AL0CRQDFAk4AxgJPAN4CZwDaAmMA5AJtAOECagDjAmwA6gJzAPQCfQAVAZsAFwGdAA4BlAAQAZYAEQGXABIBmAAPAZUABwGNAAkBjwAKAZAACwGRAAgBjgA+AcMAQAHFAEYBywA2AbsAOAG9ADkBvgA6Ab8ANwG8AGMB6QBhAecAkQIZAJMCGwCIAhAAigISAIsCEwCMAhQAiQIRAJUCHQCXAh8AmAIgAJkCIQCWAh4AzgJXANACWQDSAlsA1AJdANUCXgDWAl8A0wJcAOwCdQDrAnQA7QJ2AO8CeAZzBnUGdwZ0BngGSgZJBkgGSwZXBlgGVgbVBtYGJwaBBoUGfgZ/BoQGjwaKBoIGgwZ5Bo4GjAaGBocGiwW/Bb4GtQavBrEGswa3BrgGtgaw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AREBEgETARQAYwEVAK4AkAEWACUAJgD9AP8AZAEXARgBGQAnARoA6QEbARwBHQEeAR8AKABlASABIQEiAMgBIwEkASUBJgEnASgAygEpASoAywErASwBLQEuAS8BMAExATIBMwApACoA+AE0ATUBNgE3ATgBOQArAToBOwE8AT0BPgAsAT8AzAFAAM0BQQDOAUIA+gFDAM8BRAFFAUYBRwFIAC0BSQAuAUoBSwAvAUwBTQFOAU8BUAFRAVIBUwDiADABVAAxAVUBVgFXAVgBWQFaAVsBXAFdAGYAMgDQAV4A0QFfAWABYQFiAWMBZABnAWUBZgFnANMBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdACRAXUArwF2AXcBeACwADMA7QA0ADUBeQF6AXsBfAF9AX4BfwA2AYABgQGCAOQBgwD7AYQBhQGGAYcBiAGJAYoANwGLAYwBjQGOAY8BkAA4ANQBkQGSANUBkwBoAZQA1gGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowA5ADoBpAGlAaYBpwA7ADwA6wGoALsBqQGqAasBrAGtAa4APQGvAOYBsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgHPAdAB0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AgACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgBEAGkCRwJIAkkCSgJLAkwCTQBrAk4CTwJQAlECUgJTAGwCVABqAlUCVgJXAlgAbgJZAG0AoAJaAEUARgD+AQAAbwJbAlwCXQBHAOoCXgEBAl8CYAJhAEgAcAJiAmMCZAByAmUCZgJnAmgCaQJqAHMCawJsAHECbQJuAm8CcAJxAnICcwJ0AnUCdgBJAEoA+QJ3AngCeQJ6AnsCfABLAn0CfgJ/AoACgQBMANcAdAKCAHYCgwB3AoQChQKGAHUChwKIAokCigKLAowATQKNAo4ATgKPApACkQBPApICkwKUApUClgKXApgA4wBQApkAUQKaApsCnAKdAp4CnwKgAqECogB4AFIAeQKjAHsCpAKlAqYCpwKoAqkAfAKqAqsCrAB6Aq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkAoQK6AH0CuwK8Ar0AsQBTAO4AVABVAr4CvwLAAsECwgLDAsQAVgLFAsYCxwDlAsgA/ALJAsoCywLMAs0AiQLOAFcCzwLQAtEC0gLTAtQC1QBYAH4C1gLXAIAC2ACBAtkAfwLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ABZAFoC6QLqAusC7ABbAFwA7ALtALoC7gLvAvAC8QLyAvMAXQL0AOcC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AwADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTAMAAwQNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPDA8QDxQPGA8cDyAPJA8oDywPMA80DzgPPA9AD0QPSA9MD1APVA9YD1wPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPkA+UD5gPnA+gD6QPqA+sD7APtA+4D7wPwA/ED8gPzA/QD9QP2A/cD+AP5A/oD+wP8A/0D/gP/BAAEAQQCBAMEBAQFBAYEBwQIBAkECgQLBAwEDQQOBA8EEAQRBBIEEwQUBBUEFgQXBBgEGQQaBBsEHAQdBB4EHwQgBCEEIgQjBCQEJQQmBCcEKAQpBCoEKwQsBC0ELgQvBDAEMQQyBDMENAQ1BDYENwQ4BDkEOgQ7BDwEPQQ+BD8EQARBBEIEQwREBEUERgRHBEgESQRKBEsETARNBE4ETwRQBFEEUgRTBFQEVQRWBFcEWARZBFoEWwRcBF0EXgRfBGAEYQRiBGMEZARlBGYEZwRoBGkEagRrBGwEbQRuBG8EcARxBHIEcwR0BHUEdgR3BHgEeQR6BHsEfAR9BH4EfwSABIEEggSDBIQEhQSGBIcEiASJBIoEiwSMBI0EjgSPBJAEkQSSBJMElASVBJYElwSYBJkEmgSbBJwEnQSeBJ8EoAShBKIEowSkBKUEpgSnBKgEqQSqBKsErAStBK4ErwSwBLEEsgSzBLQEtQS2BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYExwTIBMkEygTLBMwEzQTOBM8E0ATRBNIE0wTUBNUE1gTXBNgE2QTaAJ0AngTbBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFKAUpBSoFKwUsBS0FLgUvBTAFMQUyBTMFNAU1BTYFNwU4BTkFOgU7BTwFPQU+BT8FQAVBBUIFQwVEBUUFRgVHBUgFSQVKBUsFTAVNBU4FTwVQBVEFUgVTBVQFVQVWBVcFWAVZBVoFWwVcBV0FXgVfBWAFYQViBWMFZAVlBWYFZwVoBWkFagVrBWwFbQVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFeQV6BXsFfAV9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFkQWSBZMFlAWVBZYFlwWYBZkFmgWbBZwFnQWeBZ8FoAWhBaIFowWkBaUFpgWnBagFqQWqBasFrAWtBa4FrwWwBbEFsgWzBbQFtQW2BbcFuAW5BboFuwW8Bb0FvgW/BcAFwQXCBcMFxAXFBcYFxwXIBckFygXLBcwFzQXOBc8F0AXRBdIF0wXUBdUF1gXXBdgF2QXaBdsF3AXdBd4F3wXgBeEF4gXjBeQF5QXmBecF6AXpBeoF6wXsBe0F7gXvBfAF8QXyBfMF9AX1BfYF9wX4BfkF+gX7BfwF/QX+Bf8GAAYBBgIGAwYEBgUGBgYHBggGCQYKBgsGDAYNBg4GDwYQBhEGEgYTBhQGFQYWBhcGGAYZBhoGGwYcBh0GHgYfBiAGIQYiBiMGJAYlBiYGJwYoBikGKgYrBiwGLQYuBi8GMAYxAJsGMgYzABMAFAAVABYAFwAYABkAGgAbABwGNAY1BjYGNwY4BjkGOgY7BjwGPQY+Bj8GQAZBBkIGQwZEBkUGRgZHBkgGSQZKBksGTAZNBk4GTwZQBlEGUgZTBlQGVQZWBlcGWAZZBloGWwZcBl0GXgZfBmAGYQZiBmMGZAZlBmYGZwZoBmkGagZrBmwGbQZuBm8GcAZxBnIGcwZ0BnUGdgZ3BngGeQZ6BnsGfAZ9Bn4GfwaABoEGggaDALwA9AaEBoUA9QD2BoYGhwaIBokADQA/AMMAhwAdAA8AqwAEAKMABgARACIAogAFAAoAHgASAEIGigaLBowGjQaOBo8AXgBgAD4AQAALAAwGkAaRBpIGkwaUBpUAswCyBpYGlwAQBpgGmQaaBpsGnACpAKoAvgC/AMUAtAC1ALYAtwDEBp0GngafBqAGoQaiBqMGpAalBqYGpwaoBqkGqgarBqwGrQauBq8GsAaxBrIGswa0BrUGtga3BrgGuQa6AIQGuwC9AAcGvAa9AKYA9wa+Br8GwAbBBsIGwwbEBsUGxgbHBsgAhQbJBsoGywCWBswGzQbOAA4A7wDwALgAIACPACEAHwCVAJQAkwCnAGEApAbPAJIAnAbQBtEAmgCZAKUG0gCYAAgAxgbTBtQG1QbWBtcG2AbZBtoG2wbcBt0G3gbfBuAG4QbiALkG4wbkBuUG5gbnBugG6QbqBusG7AAjAAkAiACGAIsAigCMAIMAXwDoBu0AggDCBu4G7wBBBvAG8QbyBvMG9Ab1BvYG9wb4BvkG+gb7BvwG/Qb+Bv8HAAcBBwIHAwcEBwUHBgcHBwgHCQcKBwsHDAcNBw4HDwcQBxEHEgcTBxQHFQcWBxcHGAcZBxoHGwccBx0HHgcfByAHIQciByMHJAclByYHJwcoBykHKgcrBywHLQcuBy8HMAcxBzIHMwc0BzUHNgc3BzgHOQc6BzsHPAc9Bz4HPwdAB0EHQgdDB0QHRQdGB0cHSAdJB0oHSwdMB00HTgdPB1AHUQdSB1MHVAdVB1YHVwdYB1kHWgdbB1wHXQCNANsA4QDeANgAjgDcAEMA3wDaAOAA3QDZB14HXwdgB2EHYgdjB2QHZQdmB2cHaAdpB2oHawdsB20HbgdvB3AHcQdyB3MHdAd1B3YHdwd4BE5VTEwGQWJyZXZlB3VuaTFFQUUHdW5pMUVCNgd1bmkxRUIwB3VuaTFFQjIHdW5pMUVCNAd1bmkwMUNEB3VuaTFFQTQHdW5pMUVBQwd1bmkxRUE2B3VuaTFFQTgHdW5pMUVBQQd1bmkwMjAwB3VuaTFFQTAHdW5pMUVBMgd1bmkwMjAyB0FtYWNyb24HQW9nb25lawpBcmluZ2FjdXRlB0FFYWN1dGUHdW5pMUUwOAtDY2lyY3VtZmxleApDZG90YWNjZW50B3VuaTAxQzQGRGNhcm9uBkRjcm9hdAd1bmkxRTBDB3VuaTFFMEUHdW5pMDFDNQZFYnJldmUGRWNhcm9uB3VuaTFFMUMHdW5pMUVCRQd1bmkxRUM2B3VuaTFFQzAHdW5pMUVDMgd1bmkxRUM0B3VuaTAyMDQKRWRvdGFjY2VudAd1bmkxRUI4B3VuaTFFQkEHdW5pMDIwNgdFbWFjcm9uB3VuaTFFMTYHdW5pMUUxNAdFb2dvbmVrB3VuaTFFQkMHdW5pMDFCNwd1bmkwMUVFBkdjYXJvbgtHY2lyY3VtZmxleAxHY29tbWFhY2NlbnQKR2RvdGFjY2VudAd1bmkxRTIwB3VuaTAxRTQESGJhcgd1bmkxRTJBB3VuaTAyMUULSGNpcmN1bWZsZXgHdW5pMUUyNAJJSgZJYnJldmUHdW5pMDIwOAd1bmkxRTJFB3VuaTFFQ0EHdW5pMUVDOAd1bmkwMjBBB0ltYWNyb24HSW9nb25lawZJdGlsZGULSmNpcmN1bWZsZXgHdW5pMDFFOAxLY29tbWFhY2NlbnQHdW5pMDFDNwZMYWN1dGUGTGNhcm9uDExjb21tYWFjY2VudARMZG90B3VuaTFFMzYHdW5pMDFDOAd1bmkxRTNBB3VuaTFFNDIHdW5pMDFDQQZOYWN1dGUGTmNhcm9uDE5jb21tYWFjY2VudAd1bmkxRTQ0B3VuaTFFNDYDRW5nB3VuaTAxQ0IHdW5pMUU0OAZPYnJldmUHdW5pMUVEMAd1bmkxRUQ4B3VuaTFFRDIHdW5pMUVENAd1bmkxRUQ2B3VuaTAyMEMHdW5pMDIyQQd1bmkwMjMwB3VuaTFFQ0MHdW5pMUVDRQVPaG9ybgd1bmkxRURBB3VuaTFFRTIHdW5pMUVEQwd1bmkxRURFB3VuaTFFRTANT2h1bmdhcnVtbGF1dAd1bmkwMjBFB09tYWNyb24HdW5pMUU1Mgd1bmkxRTUwB3VuaTAxRUELT3NsYXNoYWN1dGUHdW5pMUU0Qwd1bmkxRTRFB3VuaTAyMkMGUmFjdXRlBlJjYXJvbgxSY29tbWFhY2NlbnQHdW5pMDIxMAd1bmkxRTVBB3VuaTAyMTIHdW5pMUU1RQZTYWN1dGUHdW5pMUU2NAd1bmlBNzhCB3VuaTFFNjYLU2NpcmN1bWZsZXgMU2NvbW1hYWNjZW50B3VuaTFFNjAHdW5pMUU2Mgd1bmkxRTY4B3VuaTFFOUUHdW5pMDE4RgRUYmFyBlRjYXJvbgd1bmkwMTYyB3VuaTAyMUEHdW5pMUU2Qwd1bmkxRTZFBlVicmV2ZQd1bmkwMUQzB3VuaTAyMTQHdW5pMUVFNAd1bmkxRUU2BVVob3JuB3VuaTFFRTgHdW5pMUVGMAd1bmkxRUVBB3VuaTFFRUMHdW5pMUVFRQ1VaHVuZ2FydW1sYXV0B3VuaTAyMTYHVW1hY3Jvbgd1bmkxRTdBB1VvZ29uZWsFVXJpbmcGVXRpbGRlB3VuaTFFNzgGV2FjdXRlC1djaXJjdW1mbGV4CVdkaWVyZXNpcwZXZ3JhdmULWWNpcmN1bWZsZXgHdW5pMUU4RQd1bmkxRUY0BllncmF2ZQd1bmkxRUY2B3VuaTAyMzIHdW5pMUVGOAZaYWN1dGUKWmRvdGFjY2VudAd1bmkxRTkyEElhY3V0ZV9KLmxvY2xOTEQGQS5zczAxC0FhY3V0ZS5zczAxC0FicmV2ZS5zczAxDHVuaTFFQUUuc3MwMQx1bmkxRUI2LnNzMDEMdW5pMUVCMC5zczAxDHVuaTFFQjIuc3MwMQx1bmkxRUI0LnNzMDEMdW5pMDFDRC5zczAxEEFjaXJjdW1mbGV4LnNzMDEMdW5pMUVBNC5zczAxDHVuaTFFQUMuc3MwMQx1bmkxRUE2LnNzMDEMdW5pMUVBOC5zczAxDHVuaTFFQUEuc3MwMQx1bmkwMjAwLnNzMDEOQWRpZXJlc2lzLnNzMDEMdW5pMUVBMC5zczAxC0FncmF2ZS5zczAxDHVuaTFFQTIuc3MwMQx1bmkwMjAyLnNzMDEMQW1hY3Jvbi5zczAxDEFvZ29uZWsuc3MwMQpBcmluZy5zczAxD0FyaW5nYWN1dGUuc3MwMQtBdGlsZGUuc3MwMQdBRS5zczAxDEFFYWN1dGUuc3MwMQx1bmkwMUM0LnNzMDEMdW5pMDFDNS5zczAxBkUuc3MwMQtFYWN1dGUuc3MwMQtFYnJldmUuc3MwMQtFY2Fyb24uc3MwMQx1bmkxRTFDLnNzMDEQRWNpcmN1bWZsZXguc3MwMQx1bmkxRUJFLnNzMDEMdW5pMUVDNi5zczAxDHVuaTFFQzAuc3MwMQx1bmkxRUMyLnNzMDEMdW5pMUVDNC5zczAxDHVuaTAyMDQuc3MwMQ5FZGllcmVzaXMuc3MwMQ9FZG90YWNjZW50LnNzMDEMdW5pMUVCOC5zczAxC0VncmF2ZS5zczAxDHVuaTFFQkEuc3MwMQx1bmkwMjA2LnNzMDEMRW1hY3Jvbi5zczAxDHVuaTFFMTYuc3MwMQx1bmkxRTE0LnNzMDEMRW9nb25lay5zczAxDHVuaTFFQkMuc3MwMQZGLnNzMDEGRy5zczAxC0dicmV2ZS5zczAxC0djYXJvbi5zczAxEEdjaXJjdW1mbGV4LnNzMDERR2NvbW1hYWNjZW50LnNzMDEPR2RvdGFjY2VudC5zczAxDHVuaTFFMjAuc3MwMQx1bmkwMUU0LnNzMDEGSS5zczAxB0lKLnNzMDELSWFjdXRlLnNzMDEVSWFjdXRlX0oubG9jbE5MRC5zczAxC0licmV2ZS5zczAxEEljaXJjdW1mbGV4LnNzMDEMdW5pMDIwOC5zczAxDklkaWVyZXNpcy5zczAxDHVuaTFFMkUuc3MwMQ9JZG90YWNjZW50LnNzMDEMdW5pMUVDQS5zczAxC0lncmF2ZS5zczAxDHVuaTFFQzguc3MwMQx1bmkwMjBBLnNzMDEMSW1hY3Jvbi5zczAxDElvZ29uZWsuc3MwMQtJdGlsZGUuc3MwMQZKLnNzMDEQSmNpcmN1bWZsZXguc3MwMQx1bmkwMUM3LnNzMDEGTS5zczAxDHVuaTFFNDIuc3MwMQZOLnNzMDEMdW5pMDFDQS5zczAxC05hY3V0ZS5zczAxC05jYXJvbi5zczAxEU5jb21tYWFjY2VudC5zczAxDHVuaTFFNDQuc3MwMQx1bmkxRTQ2LnNzMDEIRW5nLnNzMDEMdW5pMDFDQi5zczAxDHVuaTFFNDguc3MwMQtOdGlsZGUuc3MwMQZRLnNzMDEMdW5pMDE4Ri5zczAxBlQuc3MwMQlUYmFyLnNzMDELVGNhcm9uLnNzMDEMdW5pMDE2Mi5zczAxDHVuaTAyMUEuc3MwMQx1bmkxRTZDLnNzMDEMdW5pMUU2RS5zczAxBlUuc3MwMQtVYWN1dGUuc3MwMQtVYnJldmUuc3MwMQx1bmkwMUQzLnNzMDEQVWNpcmN1bWZsZXguc3MwMQx1bmkwMjE0LnNzMDEOVWRpZXJlc2lzLnNzMDEMdW5pMUVFNC5zczAxC1VncmF2ZS5zczAxDHVuaTFFRTYuc3MwMQpVaG9ybi5zczAxDHVuaTFFRTguc3MwMQx1bmkxRUYwLnNzMDEMdW5pMUVFQS5zczAxDHVuaTFFRUMuc3MwMQx1bmkxRUVFLnNzMDESVWh1bmdhcnVtbGF1dC5zczAxDHVuaTAyMTYuc3MwMQxVbWFjcm9uLnNzMDEMdW5pMUU3QS5zczAxDFVvZ29uZWsuc3MwMQpVcmluZy5zczAxC1V0aWxkZS5zczAxDHVuaTFFNzguc3MwMQZXLnNzMDELV2FjdXRlLnNzMDEQV2NpcmN1bWZsZXguc3MwMQ5XZGllcmVzaXMuc3MwMQtXZ3JhdmUuc3MwMQZZLnNzMDELWWFjdXRlLnNzMDEQWWNpcmN1bWZsZXguc3MwMQ5ZZGllcmVzaXMuc3MwMQx1bmkxRThFLnNzMDEMdW5pMUVGNC5zczAxC1lncmF2ZS5zczAxDHVuaTFFRjYuc3MwMQx1bmkwMjMyLnNzMDEMdW5pMUVGOC5zczAxBlouc3MwMQtaYWN1dGUuc3MwMQtaY2Fyb24uc3MwMQ9aZG90YWNjZW50LnNzMDEMdW5pMUU5Mi5zczAxBmFicmV2ZQd1bmkxRUFGB3VuaTFFQjcHdW5pMUVCMQd1bmkxRUIzB3VuaTFFQjUHdW5pMDFDRQd1bmkxRUE1B3VuaTFFQUQHdW5pMUVBNwd1bmkxRUE5B3VuaTFFQUIHdW5pMDIwMQd1bmkxRUExB3VuaTFFQTMHdW5pMDIwMwdhbWFjcm9uB2FvZ29uZWsKYXJpbmdhY3V0ZQdhZWFjdXRlB3VuaTFFMDkLY2NpcmN1bWZsZXgKY2RvdGFjY2VudAZkY2Fyb24HdW5pMUUwRAd1bmkxRTBGB3VuaTAxQzYGZWJyZXZlBmVjYXJvbgd1bmkxRTFEB3VuaTFFQkYHdW5pMUVDNwd1bmkxRUMxB3VuaTFFQzMHdW5pMUVDNQd1bmkwMjA1CmVkb3RhY2NlbnQHdW5pMUVCOQd1bmkxRUJCB3VuaTAyMDcHZW1hY3Jvbgd1bmkxRTE3B3VuaTFFMTUHZW9nb25lawd1bmkxRUJEB3VuaTAyNTkHdW5pMDI5Mgd1bmkwMUVGBmdjYXJvbgtnY2lyY3VtZmxleAxnY29tbWFhY2NlbnQKZ2RvdGFjY2VudAd1bmkxRTIxB3VuaTAxRTUEaGJhcgd1bmkxRTJCB3VuaTAyMUYLaGNpcmN1bWZsZXgHdW5pMUUyNQZpYnJldmUHdW5pMDIwOQd1bmkxRTJGCWkubG9jbFRSSwd1bmkxRUNCB3VuaTFFQzkHdW5pMDIwQgJpagdpbWFjcm9uB2lvZ29uZWsGaXRpbGRlB3VuaTAyMzcLamNpcmN1bWZsZXgHdW5pMDFFOQxrY29tbWFhY2NlbnQMa2dyZWVubGFuZGljBmxhY3V0ZQZsY2Fyb24MbGNvbW1hYWNjZW50BGxkb3QHdW5pMUUzNwd1bmkwMUM5B3VuaTFFM0IHdW5pMUU0MwZuYWN1dGULbmFwb3N0cm9waGUGbmNhcm9uDG5jb21tYWFjY2VudAd1bmkxRTQ1B3VuaTFFNDcDZW5nB3VuaTAxQ0MHdW5pMUU0OQZvYnJldmUHdW5pMUVEMQd1bmkxRUQ5B3VuaTFFRDMHdW5pMUVENQd1bmkxRUQ3B3VuaTAyMEQHdW5pMDIyQgd1bmkwMjMxB3VuaTFFQ0QHdW5pMUVDRgVvaG9ybgd1bmkxRURCB3VuaTFFRTMHdW5pMUVERAd1bmkxRURGB3VuaTFFRTENb2h1bmdhcnVtbGF1dAd1bmkwMjBGB29tYWNyb24HdW5pMUU1Mwd1bmkxRTUxB3VuaTAxRUILb3NsYXNoYWN1dGUHdW5pMUU0RAd1bmkxRTRGB3VuaTAyMkQGcmFjdXRlBnJjYXJvbgxyY29tbWFhY2NlbnQHdW5pMDIxMQd1bmkxRTVCB3VuaTAyMTMHdW5pMUU1RgZzYWN1dGUHdW5pMUU2NQd1bmlBNzhDB3VuaTFFNjcLc2NpcmN1bWZsZXgMc2NvbW1hYWNjZW50B3VuaTFFNjEHdW5pMUU2Mwd1bmkxRTY5BWxvbmdzBHRiYXIGdGNhcm9uB3VuaTAxNjMHdW5pMDIxQgd1bmkxRTk3B3VuaTFFNkQHdW5pMUU2RgZ1YnJldmUHdW5pMDFENAd1bmkwMjE1B3VuaTFFRTUHdW5pMUVFNwV1aG9ybgd1bmkxRUU5B3VuaTFFRjEHdW5pMUVFQgd1bmkxRUVEB3VuaTFFRUYNdWh1bmdhcnVtbGF1dAd1bmkwMjE3B3VtYWNyb24HdW5pMUU3Qgd1b2dvbmVrBXVyaW5nBnV0aWxkZQd1bmkxRTc5BndhY3V0ZQt3Y2lyY3VtZmxleAl3ZGllcmVzaXMGd2dyYXZlC3ljaXJjdW1mbGV4B3VuaTFFOEYHdW5pMUVGNQZ5Z3JhdmUHdW5pMUVGNwd1bmkwMjMzB3VuaTFFRjkGemFjdXRlCnpkb3RhY2NlbnQHdW5pMUU5MxBpYWN1dGVfai5sb2NsTkxEBmEuc3MwMQthYWN1dGUuc3MwMQthYnJldmUuc3MwMQx1bmkxRUFGLnNzMDEMdW5pMUVCNy5zczAxDHVuaTFFQjEuc3MwMQx1bmkxRUIzLnNzMDEMdW5pMUVCNS5zczAxDHVuaTAxQ0Uuc3MwMRBhY2lyY3VtZmxleC5zczAxDHVuaTFFQTUuc3MwMQx1bmkxRUFELnNzMDEMdW5pMUVBNy5zczAxDHVuaTFFQTkuc3MwMQx1bmkxRUFCLnNzMDEMdW5pMDIwMS5zczAxDmFkaWVyZXNpcy5zczAxDHVuaTFFQTEuc3MwMQthZ3JhdmUuc3MwMQx1bmkxRUEzLnNzMDEMdW5pMDIwMy5zczAxDGFtYWNyb24uc3MwMQxhb2dvbmVrLnNzMDEKYXJpbmcuc3MwMQ9hcmluZ2FjdXRlLnNzMDELYXRpbGRlLnNzMDEHYWUuc3MwMQxhZWFjdXRlLnNzMDEMdW5pMDFDNi5zczAxBmUuc3MwMQtlYWN1dGUuc3MwMQtlYnJldmUuc3MwMQtlY2Fyb24uc3MwMQx1bmkxRTFELnNzMDEQZWNpcmN1bWZsZXguc3MwMQx1bmkxRUJGLnNzMDEMdW5pMUVDNy5zczAxDHVuaTFFQzEuc3MwMQx1bmkxRUMzLnNzMDEMdW5pMUVDNS5zczAxDHVuaTAyMDUuc3MwMQ5lZGllcmVzaXMuc3MwMQ9lZG90YWNjZW50LnNzMDEMdW5pMUVCOS5zczAxC2VncmF2ZS5zczAxDHVuaTFFQkIuc3MwMQx1bmkwMjA3LnNzMDEMZW1hY3Jvbi5zczAxDHVuaTFFMTcuc3MwMQx1bmkxRTE1LnNzMDEMZW9nb25lay5zczAxDHVuaTFFQkQuc3MwMQx1bmkwMjU5LnNzMDEGZi5zczAxBmwuc3MwMQtsYWN1dGUuc3MwMQtsY2Fyb24uc3MwMRFsY29tbWFhY2NlbnQuc3MwMQlsZG90LnNzMDEMdW5pMUUzNy5zczAxDHVuaTAxQzkuc3MwMQx1bmkxRTNCLnNzMDELbHNsYXNoLnNzMDEHb2Uuc3MwMQZ0LnNzMDEJdGJhci5zczAxC3RjYXJvbi5zczAxDHVuaTAxNjMuc3MwMQx1bmkwMjFCLnNzMDEMdW5pMUU5Ny5zczAxDHVuaTFFNkQuc3MwMQx1bmkxRTZGLnNzMDEGdy5zczAxC3dhY3V0ZS5zczAxEHdjaXJjdW1mbGV4LnNzMDEOd2RpZXJlc2lzLnNzMDELd2dyYXZlLnNzMDEGeS5zczAxC3lhY3V0ZS5zczAxEHljaXJjdW1mbGV4LnNzMDEOeWRpZXJlc2lzLnNzMDEMdW5pMUVGNS5zczAxC3lncmF2ZS5zczAxDHVuaTFFRjcuc3MwMQx1bmkwMjMzLnNzMDEMdW5pMUVGOS5zczAxBnouc3MwMQt6YWN1dGUuc3MwMQt6Y2Fyb24uc3MwMQ96ZG90YWNjZW50LnNzMDEMdW5pMUU5My5zczAxA1RfaAdmaS5zczAxB2ZsLnNzMDEEYS5zYwlhYWN1dGUuc2MJYWJyZXZlLnNjCnVuaTFFQUYuc2MKdW5pMUVCNy5zYwp1bmkxRUIxLnNjCnVuaTFFQjMuc2MKdW5pMUVCNS5zYwp1bmkwMUNFLnNjDmFjaXJjdW1mbGV4LnNjCnVuaTFFQTUuc2MKdW5pMUVBRC5zYwp1bmkxRUE3LnNjCnVuaTFFQTkuc2MKdW5pMUVBQi5zYwp1bmkwMjAxLnNjDGFkaWVyZXNpcy5zYwp1bmkxRUExLnNjCWFncmF2ZS5zYwp1bmkxRUEzLnNjCnVuaTAyMDMuc2MKYW1hY3Jvbi5zYwphb2dvbmVrLnNjCGFyaW5nLnNjDWFyaW5nYWN1dGUuc2MJYXRpbGRlLnNjBWFlLnNjCmFlYWN1dGUuc2MEYi5zYwRjLnNjCWNhY3V0ZS5zYwljY2Fyb24uc2MLY2NlZGlsbGEuc2MKdW5pMUUwOS5zYw5jY2lyY3VtZmxleC5zYw1jZG90YWNjZW50LnNjBGQuc2MGZXRoLnNjCWRjYXJvbi5zYwlkY3JvYXQuc2MKdW5pMUUwRC5zYwp1bmkxRTBGLnNjCnVuaTAxQzYuc2MEZS5zYwllYWN1dGUuc2MJZWJyZXZlLnNjCWVjYXJvbi5zYwp1bmkxRTFELnNjDmVjaXJjdW1mbGV4LnNjCnVuaTFFQkYuc2MKdW5pMUVDNy5zYwp1bmkxRUMxLnNjCnVuaTFFQzMuc2MKdW5pMUVDNS5zYwp1bmkwMjA1LnNjDGVkaWVyZXNpcy5zYw1lZG90YWNjZW50LnNjCnVuaTFFQjkuc2MJZWdyYXZlLnNjCnVuaTFFQkIuc2MKdW5pMDIwNy5zYwplbWFjcm9uLnNjCnVuaTFFMTcuc2MKdW5pMUUxNS5zYwplb2dvbmVrLnNjCnVuaTFFQkQuc2MKdW5pMDI1OS5zYwp1bmkwMjkyLnNjCnVuaTAxRUYuc2MEZi5zYwRnLnNjCWdicmV2ZS5zYwlnY2Fyb24uc2MOZ2NpcmN1bWZsZXguc2MPZ2NvbW1hYWNjZW50LnNjDWdkb3RhY2NlbnQuc2MKdW5pMUUyMS5zYwp1bmkwMUU1LnNjBGguc2MHaGJhci5zYwp1bmkxRTJCLnNjCnVuaTAyMUYuc2MOaGNpcmN1bWZsZXguc2MKdW5pMUUyNS5zYwRpLnNjC2RvdGxlc3NpLnNjCWlhY3V0ZS5zYxNpYWN1dGVfai5sb2NsTkxELnNjCWlicmV2ZS5zYw5pY2lyY3VtZmxleC5zYwp1bmkwMjA5LnNjDGlkaWVyZXNpcy5zYwp1bmkxRTJGLnNjDGkuc2MubG9jbFRSSwp1bmkxRUNCLnNjCWlncmF2ZS5zYwp1bmkxRUM5LnNjCnVuaTAyMEIuc2MFaWouc2MKaW1hY3Jvbi5zYwppb2dvbmVrLnNjCWl0aWxkZS5zYwRqLnNjDmpjaXJjdW1mbGV4LnNjBGsuc2MKdW5pMDFFOS5zYw9rY29tbWFhY2NlbnQuc2MPa2dyZWVubGFuZGljLnNjBGwuc2MJbGFjdXRlLnNjCWxjYXJvbi5zYw9sY29tbWFhY2NlbnQuc2MHbGRvdC5zYwp1bmkxRTM3LnNjCnVuaTAxQzkuc2MKdW5pMUUzQi5zYwlsc2xhc2guc2MEbS5zYwp1bmkxRTQzLnNjBG4uc2MJbmFjdXRlLnNjCW5jYXJvbi5zYw9uY29tbWFhY2NlbnQuc2MKdW5pMUU0NS5zYwp1bmkxRTQ3LnNjBmVuZy5zYwp1bmkwMUNDLnNjCnVuaTFFNDkuc2MJbnRpbGRlLnNjBG8uc2MJb2FjdXRlLnNjCW9icmV2ZS5zYw5vY2lyY3VtZmxleC5zYwp1bmkxRUQxLnNjCnVuaTFFRDkuc2MKdW5pMUVEMy5zYwp1bmkxRUQ1LnNjCnVuaTFFRDcuc2MKdW5pMDIwRC5zYwxvZGllcmVzaXMuc2MKdW5pMDIyQi5zYwp1bmkwMjMxLnNjCnVuaTFFQ0Quc2MJb2dyYXZlLnNjCnVuaTFFQ0Yuc2MIb2hvcm4uc2MKdW5pMUVEQi5zYwp1bmkxRUUzLnNjCnVuaTFFREQuc2MKdW5pMUVERi5zYwp1bmkxRUUxLnNjEG9odW5nYXJ1bWxhdXQuc2MKdW5pMDIwRi5zYwpvbWFjcm9uLnNjCnVuaTFFNTMuc2MKdW5pMUU1MS5zYwp1bmkwMUVCLnNjCW9zbGFzaC5zYw5vc2xhc2hhY3V0ZS5zYwlvdGlsZGUuc2MKdW5pMUU0RC5zYwp1bmkxRTRGLnNjCnVuaTAyMkQuc2MFb2Uuc2MEcC5zYwh0aG9ybi5zYwRxLnNjBHIuc2MJcmFjdXRlLnNjCXJjYXJvbi5zYw9yY29tbWFhY2NlbnQuc2MKdW5pMDIxMS5zYwp1bmkxRTVCLnNjCnVuaTAyMTMuc2MKdW5pMUU1Ri5zYwRzLnNjCXNhY3V0ZS5zYwp1bmkxRTY1LnNjCnVuaUE3OEMuc2MJc2Nhcm9uLnNjCnVuaTFFNjcuc2MLc2NlZGlsbGEuc2MOc2NpcmN1bWZsZXguc2MPc2NvbW1hYWNjZW50LnNjCnVuaTFFNjEuc2MKdW5pMUU2My5zYwp1bmkxRTY5LnNjDWdlcm1hbmRibHMuc2MEdC5zYwd0YmFyLnNjCXRjYXJvbi5zYwp1bmkwMTYzLnNjCnVuaTAyMUIuc2MKdW5pMUU5Ny5zYwp1bmkxRTZELnNjCnVuaTFFNkYuc2MEdS5zYwl1YWN1dGUuc2MJdWJyZXZlLnNjCnVuaTAxRDQuc2MOdWNpcmN1bWZsZXguc2MKdW5pMDIxNS5zYwx1ZGllcmVzaXMuc2MKdW5pMUVFNS5zYwl1Z3JhdmUuc2MKdW5pMUVFNy5zYwh1aG9ybi5zYwp1bmkxRUU5LnNjCnVuaTFFRjEuc2MKdW5pMUVFQi5zYwp1bmkxRUVELnNjCnVuaTFFRUYuc2MQdWh1bmdhcnVtbGF1dC5zYwp1bmkwMjE3LnNjCnVtYWNyb24uc2MKdW5pMUU3Qi5zYwp1b2dvbmVrLnNjCHVyaW5nLnNjCXV0aWxkZS5zYwp1bmkxRTc5LnNjBHYuc2MEdy5zYwl3YWN1dGUuc2MOd2NpcmN1bWZsZXguc2MMd2RpZXJlc2lzLnNjCXdncmF2ZS5zYwR4LnNjBHkuc2MJeWFjdXRlLnNjDnljaXJjdW1mbGV4LnNjDHlkaWVyZXNpcy5zYwp1bmkxRThGLnNjCnVuaTFFRjUuc2MJeWdyYXZlLnNjCnVuaTFFRjcuc2MKdW5pMDIzMy5zYwp1bmkxRUY5LnNjBHouc2MJemFjdXRlLnNjCXpjYXJvbi5zYw16ZG90YWNjZW50LnNjCnVuaTFFOTMuc2MJYS5zYy5zczAxDmFhY3V0ZS5zYy5zczAxDmFicmV2ZS5zYy5zczAxD3VuaTFFQUYuc2Muc3MwMQ91bmkxRUI3LnNjLnNzMDEPdW5pMUVCMS5zYy5zczAxD3VuaTFFQjMuc2Muc3MwMQ91bmkxRUI1LnNjLnNzMDEPdW5pMDFDRS5zYy5zczAxE2FjaXJjdW1mbGV4LnNjLnNzMDEPdW5pMUVBNS5zYy5zczAxD3VuaTFFQUQuc2Muc3MwMQ91bmkxRUE3LnNjLnNzMDEPdW5pMUVBOS5zYy5zczAxD3VuaTFFQUIuc2Muc3MwMQ91bmkwMjAxLnNjLnNzMDERYWRpZXJlc2lzLnNjLnNzMDEPdW5pMUVBMS5zYy5zczAxDmFncmF2ZS5zYy5zczAxD3VuaTFFQTMuc2Muc3MwMQ91bmkwMjAzLnNjLnNzMDEPYW1hY3Jvbi5zYy5zczAxD2FvZ29uZWsuc2Muc3MwMQ1hcmluZy5zYy5zczAxEmFyaW5nYWN1dGUuc2Muc3MwMQ5hdGlsZGUuc2Muc3MwMQphZS5zYy5zczAxD2FlYWN1dGUuc2Muc3MwMQ91bmkwMUM2LnNjLnNzMDEJZS5zYy5zczAxDmVhY3V0ZS5zYy5zczAxDmVicmV2ZS5zYy5zczAxDmVjYXJvbi5zYy5zczAxD3VuaTFFMUQuc2Muc3MwMRNlY2lyY3VtZmxleC5zYy5zczAxD3VuaTFFQkYuc2Muc3MwMQ91bmkxRUM3LnNjLnNzMDEPdW5pMUVDMS5zYy5zczAxD3VuaTFFQzMuc2Muc3MwMQ91bmkxRUM1LnNjLnNzMDEPdW5pMDIwNS5zYy5zczAxEWVkaWVyZXNpcy5zYy5zczAxEmVkb3RhY2NlbnQuc2Muc3MwMQ91bmkxRUI5LnNjLnNzMDEOZWdyYXZlLnNjLnNzMDEPdW5pMUVCQi5zYy5zczAxD3VuaTAyMDcuc2Muc3MwMQ9lbWFjcm9uLnNjLnNzMDEPdW5pMUUxNy5zYy5zczAxD3VuaTFFMTUuc2Muc3MwMQ9lb2dvbmVrLnNjLnNzMDEPdW5pMUVCRC5zYy5zczAxD3VuaTAyNTkuc2Muc3MwMQlmLnNjLnNzMDEJZy5zYy5zczAxDmdicmV2ZS5zYy5zczAxDmdjYXJvbi5zYy5zczAxE2djaXJjdW1mbGV4LnNjLnNzMDEUZ2NvbW1hYWNjZW50LnNjLnNzMDESZ2RvdGFjY2VudC5zYy5zczAxD3VuaTFFMjEuc2Muc3MwMQ91bmkwMUU1LnNjLnNzMDEJaS5zYy5zczAxEGRvdGxlc3NpLnNjLnNzMDEOaWFjdXRlLnNjLnNzMDEYaWFjdXRlX2oubG9jbE5MRC5zYy5zczAxDmlicmV2ZS5zYy5zczAxE2ljaXJjdW1mbGV4LnNjLnNzMDEPdW5pMDIwOS5zYy5zczAxEWlkaWVyZXNpcy5zYy5zczAxD3VuaTFFMkYuc2Muc3MwMQ91bmkxRUNCLnNjLnNzMDEOaWdyYXZlLnNjLnNzMDEPdW5pMUVDOS5zYy5zczAxD3VuaTAyMEIuc2Muc3MwMQppai5zYy5zczAxD2ltYWNyb24uc2Muc3MwMQ9pb2dvbmVrLnNjLnNzMDEOaXRpbGRlLnNjLnNzMDEJai5zYy5zczAxE2pjaXJjdW1mbGV4LnNjLnNzMDEPdW5pMDFDOS5zYy5zczAxCW0uc2Muc3MwMQ91bmkxRTQzLnNjLnNzMDEJbi5zYy5zczAxDm5hY3V0ZS5zYy5zczAxDm5jYXJvbi5zYy5zczAxFG5jb21tYWFjY2VudC5zYy5zczAxD3VuaTFFNDUuc2Muc3MwMQ91bmkxRTQ3LnNjLnNzMDELZW5nLnNjLnNzMDEPdW5pMDFDQy5zYy5zczAxD3VuaTFFNDkuc2Muc3MwMQ5udGlsZGUuc2Muc3MwMQlxLnNjLnNzMDEJdC5zYy5zczAxDHRiYXIuc2Muc3MwMQ50Y2Fyb24uc2Muc3MwMQ91bmkwMTYzLnNjLnNzMDEPdW5pMDIxQi5zYy5zczAxD3VuaTFFOTcuc2Muc3MwMQ91bmkxRTZELnNjLnNzMDEPdW5pMUU2Ri5zYy5zczAxCXUuc2Muc3MwMQ51YWN1dGUuc2Muc3MwMQ51YnJldmUuc2Muc3MwMQ91bmkwMUQ0LnNjLnNzMDETdWNpcmN1bWZsZXguc2Muc3MwMQ91bmkwMjE1LnNjLnNzMDERdWRpZXJlc2lzLnNjLnNzMDEPdW5pMUVFNS5zYy5zczAxDnVncmF2ZS5zYy5zczAxD3VuaTFFRTcuc2Muc3MwMQ11aG9ybi5zYy5zczAxD3VuaTFFRTkuc2Muc3MwMQ91bmkxRUYxLnNjLnNzMDEPdW5pMUVFQi5zYy5zczAxD3VuaTFFRUQuc2Muc3MwMQ91bmkxRUVGLnNjLnNzMDEVdWh1bmdhcnVtbGF1dC5zYy5zczAxD3VuaTAyMTcuc2Muc3MwMQ91bWFjcm9uLnNjLnNzMDEPdW5pMUU3Qi5zYy5zczAxD3VvZ29uZWsuc2Muc3MwMQ11cmluZy5zYy5zczAxDnV0aWxkZS5zYy5zczAxD3VuaTFFNzkuc2Muc3MwMQl3LnNjLnNzMDEOd2FjdXRlLnNjLnNzMDETd2NpcmN1bWZsZXguc2Muc3MwMRF3ZGllcmVzaXMuc2Muc3MwMQ53Z3JhdmUuc2Muc3MwMQl5LnNjLnNzMDEOeWFjdXRlLnNjLnNzMDETeWNpcmN1bWZsZXguc2Muc3MwMRF5ZGllcmVzaXMuc2Muc3MwMQ91bmkxRThGLnNjLnNzMDEPdW5pMUVGNS5zYy5zczAxDnlncmF2ZS5zYy5zczAxD3VuaTFFRjcuc2Muc3MwMQ91bmkwMjMzLnNjLnNzMDEPdW5pMUVGOS5zYy5zczAxCXouc2Muc3MwMQ56YWN1dGUuc2Muc3MwMQ56Y2Fyb24uc2Muc3MwMRJ6ZG90YWNjZW50LnNjLnNzMDEPdW5pMUU5My5zYy5zczAxB3VuaTA0MTAHdW5pMDQxMQd1bmkwNDEyB3VuaTA0MTMHdW5pMDQwMwd1bmkwNDkwB3VuaTA0MTQHdW5pMDQxNQd1bmkwNDAwB3VuaTA0MDEHdW5pMDQxNgd1bmkwNDE3B3VuaTA0MTgHdW5pMDQxOQd1bmkwNDBEB3VuaTA0OEEHdW5pMDQxQQd1bmkwNDBDB3VuaTA0MUIHdW5pMDQxQwd1bmkwNDFEB3VuaTA0MUUHdW5pMDQxRgd1bmkwNDIwB3VuaTA0MjEHdW5pMDQyMgd1bmkwNDIzB3VuaTA0MEUHdW5pMDQyNAd1bmkwNDI1B3VuaTA0MjcHdW5pMDQyNgd1bmkwNDI4B3VuaTA0MjkHdW5pMDQwRgd1bmkwNDJDB3VuaTA0MkEHdW5pMDQyQgd1bmkwNDA5B3VuaTA0MEEHdW5pMDQwNQd1bmkwNDA0B3VuaTA0MkQHdW5pMDQwNgd1bmkwNDA3B3VuaTA0MDgHdW5pMDQwQgd1bmkwNDJFB3VuaTA0MkYHdW5pMDQwMgd1bmkwNDYyB3VuaTA0NkEHdW5pMDQ3Mgd1bmkwNDc0B3VuaTA0OTIHdW5pMDQ5NAd1bmkwNDk2B3VuaTA0OTgHdW5pMDQ5QQd1bmkwNDlDB3VuaTA0OUUHdW5pMDRBMAd1bmkwNEEyB3VuaTA0QTQHdW5pMDRBNgd1bmkwNTI0B3VuaTA0QTgHdW5pMDRBQQd1bmkwNEFDB3VuaTA0QUUHdW5pMDRCMAd1bmkwNEIyB3VuaTA0QjQHdW5pMDRCNgd1bmkwNEI4B3VuaTA0QkEHdW5pMDUyNgd1bmkwNEJDB3VuaTA0QkUHdW5pMDRDMAd1bmkwNEMxB3VuaTA0QzMHdW5pMDRDNwd1bmkwNEM5B3VuaTA0Q0IHdW5pMDRDRAd1bmkwNEQwB3VuaTA0RDIHdW5pMDRENAd1bmkwNEQ2B3VuaTA0RDgHdW5pMDREQQd1bmkwNERDB3VuaTA0REUHdW5pMDRFMAd1bmkwNEUyB3VuaTA0RTQHdW5pMDRFNgd1bmkwNEU4B3VuaTA0RUEHdW5pMDRFQwd1bmkwNEVFB3VuaTA0RjAHdW5pMDRGMgd1bmkwNEY0B3VuaTA0RjYHdW5pMDRGOAd1bmkwNEZBB3VuaTA0RkMHdW5pMDRGRQd1bmkwNTEwB3VuaTA1MTIHdW5pMDUxQQd1bmkwNTFDB3VuaTA0OEMHdW5pMDQ4RQd1bmkwNTI4B3VuaTA1MkUPdW5pMDQxNC5sb2NsQkdSD3VuaTA0MUIubG9jbEJHUg91bmkwNDI0LmxvY2xCR1IPdW5pMDQ5Mi5sb2NsQlNID3VuaTA0OTgubG9jbEJTSA91bmkwNEFBLmxvY2xCU0gPdW5pMDRBQS5sb2NsQ0hVDHVuaTA0MTAuc3MwMQx1bmkwNDE0LnNzMDEMdW5pMDQxNS5zczAxDHVuaTA0MDAuc3MwMQx1bmkwNDAxLnNzMDEMdW5pMDQxOC5zczAxDHVuaTA0MTkuc3MwMQx1bmkwNDhBLnNzMDEMdW5pMDQwRC5zczAxDHVuaTA0MUIuc3MwMQx1bmkwNDIwLnNzMDEMdW5pMDQyMi5zczAxDHVuaTA0MjMuc3MwMQx1bmkwNDBFLnNzMDEMdW5pMDQyNC5zczAxDHVuaTA0MkMuc3MwMQx1bmkwNDJBLnNzMDEMdW5pMDQyQi5zczAxDHVuaTA0MDkuc3MwMQx1bmkwNDBBLnNzMDEMdW5pMDQwOC5zczAxDHVuaTA0NjIuc3MwMQx1bmkwNEFDLnNzMDEMdW5pMDREMC5zczAxDHVuaTA0RDIuc3MwMQx1bmkwNEQ0LnNzMDEMdW5pMDRENi5zczAxDHVuaTA0RTIuc3MwMQx1bmkwNEU0LnNzMDEMdW5pMDRFRS5zczAxDHVuaTA0RjAuc3MwMQx1bmkwNEYyLnNzMDEMdW5pMDRGOC5zczAxDHVuaTA1MUEuc3MwMQx1bmkwNDhDLnNzMDEHdW5pMDQzMAd1bmkwNDMxB3VuaTA0MzIHdW5pMDQzMwd1bmkwNDUzB3VuaTA0OTEHdW5pMDQzNAd1bmkwNDM1B3VuaTA0NTAHdW5pMDQ1MQd1bmkwNDM2B3VuaTA0MzcHdW5pMDQzOAd1bmkwNDM5B3VuaTA0NUQHdW5pMDQ4Qgd1bmkwNDNBB3VuaTA0NUMHdW5pMDQzQgd1bmkwNDNDB3VuaTA0M0QHdW5pMDQzRQd1bmkwNDNGB3VuaTA0NDAHdW5pMDQ0MQd1bmkwNDQyB3VuaTA0NDMHdW5pMDQ1RQd1bmkwNDQ0B3VuaTA0NDUHdW5pMDQ0Nwd1bmkwNDQ2B3VuaTA0NDgHdW5pMDQ0OQd1bmkwNDVGB3VuaTA0NEMHdW5pMDQ0QQd1bmkwNDRCB3VuaTA0NTkHdW5pMDQ1QQd1bmkwNDU1B3VuaTA0NTQHdW5pMDQ0RAd1bmkwNDU2B3VuaTA0NTcHdW5pMDQ1OAd1bmkwNDVCB3VuaTA0NEUHdW5pMDQ0Rgd1bmkwNDUyB3VuaTA0NjMHdW5pMDQ2Qgd1bmkwNDczB3VuaTA0NzUHdW5pMDQ5Mwd1bmkwNDk1B3VuaTA0OTcHdW5pMDQ5OQd1bmkwNDlCB3VuaTA0OUQHdW5pMDQ5Rgd1bmkwNEExB3VuaTA0QTMHdW5pMDRBNQd1bmkwNTI1B3VuaTA0QTcHdW5pMDRBOQd1bmkwNEFCB3VuaTA0QUQHdW5pMDRBRgd1bmkwNEIxB3VuaTA0QjMHdW5pMDRCNQd1bmkwNEI3B3VuaTA0QjkHdW5pMDRCQgd1bmkwNTI3B3VuaTA0QkQHdW5pMDRCRgd1bmkwNENGB3VuaTA0QzIHdW5pMDRDNAd1bmkwNEM2B3VuaTA0QzgHdW5pMDRDQQd1bmkwNENDB3VuaTA0Q0UHdW5pMDREMQd1bmkwNEQzB3VuaTA0RDUHdW5pMDRENwd1bmkwNEQ5B3VuaTA0REIHdW5pMDRERAd1bmkwNERGB3VuaTA0RTEHdW5pMDRFMwd1bmkwNEU1B3VuaTA0RTcHdW5pMDRFOQd1bmkwNEVCB3VuaTA0RUQHdW5pMDRFRgd1bmkwNEYxB3VuaTA0RjMHdW5pMDRGNQd1bmkwNEY3B3VuaTA0RjkHdW5pMDRGQgd1bmkwNEZEB3VuaTA0RkYHdW5pMDUxMQd1bmkwNTEzB3VuaTA1MUIHdW5pMDUxRAd1bmkwNDhEB3VuaTA0OEYHdW5pMDUyOQd1bmkwNTJGD3VuaTA0MzIubG9jbEJHUg91bmkwNDMzLmxvY2xCR1IPdW5pMDQzNC5sb2NsQkdSD3VuaTA0MzYubG9jbEJHUg91bmkwNDM3LmxvY2xCR1IPdW5pMDQzOC5sb2NsQkdSD3VuaTA0MzkubG9jbEJHUg91bmkwNDVELmxvY2xCR1IPdW5pMDQzQS5sb2NsQkdSD3VuaTA0M0IubG9jbEJHUg91bmkwNDNELmxvY2xCR1IPdW5pMDQzRi5sb2NsQkdSD3VuaTA0NDIubG9jbEJHUg91bmkwNDQ3LmxvY2xCR1IPdW5pMDQ0Ni5sb2NsQkdSD3VuaTA0NDgubG9jbEJHUg91bmkwNDQ5LmxvY2xCR1IPdW5pMDQ0Qy5sb2NsQkdSD3VuaTA0NEEubG9jbEJHUg91bmkwNDRFLmxvY2xCR1IPdW5pMDQ5My5sb2NsQlNID3VuaTA0OTkubG9jbEJTSA91bmkwNEFCLmxvY2xDSFUPdW5pMDQ1My5sb2NsTUtED3VuaTA0MzEubG9jbFNSQg91bmkwNDMzLmxvY2xTUkIPdW5pMDQzNC5sb2NsU1JCD3VuaTA0M0YubG9jbFNSQg91bmkwNDQyLmxvY2xTUkIMdW5pMDQzMC5zczAxDHVuaTA0MzQuc3MwMQx1bmkwNDM1LnNzMDEMdW5pMDQ1MC5zczAxDHVuaTA0NTEuc3MwMQx1bmkwNDM4LnNzMDEMdW5pMDQzOS5zczAxDHVuaTA0OEIuc3MwMQx1bmkwNDVELnNzMDEMdW5pMDQ0MC5zczAxDHVuaTA0NDIuc3MwMQx1bmkwNDQzLnNzMDEMdW5pMDQ1RS5zczAxDHVuaTA0NEMuc3MwMQx1bmkwNDRBLnNzMDEMdW5pMDQ0Qi5zczAxDHVuaTA0NTkuc3MwMQx1bmkwNDVBLnNzMDEMdW5pMDQ2My5zczAxDHVuaTA0RDEuc3MwMQx1bmkwNEQzLnNzMDEMdW5pMDRENS5zczAxDHVuaTA0RDcuc3MwMQx1bmkwNEQ5LnNzMDEMdW5pMDREQi5zczAxDHVuaTA0RTMuc3MwMQx1bmkwNEU1LnNzMDEMdW5pMDRFRi5zczAxDHVuaTA0RjEuc3MwMQx1bmkwNEYzLnNzMDEMdW5pMDRGOS5zczAxDHVuaTA0OEQuc3MwMQd1bmkwMzk0B3VuaTAzQTkHdW5pMDNCQwd1bmkyMTJCB3VuaTIxMkEIemVyby5vc2YHb25lLm9zZgd0d28ub3NmCXRocmVlLm9zZghmb3VyLm9zZghmaXZlLm9zZgdzaXgub3NmCXNldmVuLm9zZgllaWdodC5vc2YIbmluZS5vc2YJemVyby5zaW5mCG9uZS5zaW5mCHR3by5zaW5mCnRocmVlLnNpbmYJZm91ci5zaW5mCWZpdmUuc2luZghzaXguc2luZgpzZXZlbi5zaW5mCmVpZ2h0LnNpbmYJbmluZS5zaW5mB3plcm8udGYGb25lLnRmBnR3by50Zgh0aHJlZS50Zgdmb3VyLnRmB2ZpdmUudGYGc2l4LnRmCHNldmVuLnRmCGVpZ2h0LnRmB25pbmUudGYJemVyby50b3NmCG9uZS50b3NmCHR3by50b3NmCnRocmVlLnRvc2YJZm91ci50b3NmCWZpdmUudG9zZghzaXgudG9zZgpzZXZlbi50b3NmCmVpZ2h0LnRvc2YJbmluZS50b3NmB3VuaTIwODAHdW5pMjA4MQd1bmkyMDgyB3VuaTIwODMHdW5pMjA4NAd1bmkyMDg1B3VuaTIwODYHdW5pMjA4Nwd1bmkyMDg4B3VuaTIwODkJemVyby5kbm9tCG9uZS5kbm9tCHR3by5kbm9tCnRocmVlLmRub20JZm91ci5kbm9tCWZpdmUuZG5vbQhzaXguZG5vbQpzZXZlbi5kbm9tCmVpZ2h0LmRub20JbmluZS5kbm9tCXplcm8ubnVtcghvbmUubnVtcgh0d28ubnVtcgp0aHJlZS5udW1yCWZvdXIubnVtcglmaXZlLm51bXIIc2l4Lm51bXIKc2V2ZW4ubnVtcgplaWdodC5udW1yCW5pbmUubnVtcgd1bmkyMDcwB3VuaTAwQjkHdW5pMDBCMgd1bmkwMEIzB3VuaTIwNzQHdW5pMjA3NQd1bmkyMDc2B3VuaTIwNzcHdW5pMjA3OAd1bmkyMDc5B3VuaTIxNTMHdW5pMjE1NAlvbmVlaWdodGgMdGhyZWVlaWdodGhzC2ZpdmVlaWdodGhzDHNldmVuZWlnaHRocw5iYWNrc2xhc2guY2FzZRNwZXJpb2RjZW50ZXJlZC5jYXNlC2J1bGxldC5jYXNlG3BlcmlvZGNlbnRlcmVkLmxvY2xDQVQuY2FzZQpzbGFzaC5jYXNlFnBlcmlvZGNlbnRlcmVkLmxvY2xDQVQOYnJhY2VsZWZ0LmNhc2UPYnJhY2VyaWdodC5jYXNlEGJyYWNrZXRsZWZ0LmNhc2URYnJhY2tldHJpZ2h0LmNhc2UOcGFyZW5sZWZ0LmNhc2UPcGFyZW5yaWdodC5jYXNlCmZpZ3VyZWRhc2gHdW5pMjAxNQd1bmkyMDEwB3VuaTAwQUQLZW1kYXNoLmNhc2ULZW5kYXNoLmNhc2ULaHlwaGVuLmNhc2USZ3VpbGxlbW90bGVmdC5jYXNlE2d1aWxsZW1vdHJpZ2h0LmNhc2USZ3VpbHNpbmdsbGVmdC5jYXNlE2d1aWxzaW5nbHJpZ2h0LmNhc2UJZXhjbGFtLnNjDWV4Y2xhbWRvd24uc2MQZ3VpbGxlbW90bGVmdC5zYxFndWlsbGVtb3RyaWdodC5zYxBndWlsc2luZ2xsZWZ0LnNjEWd1aWxzaW5nbHJpZ2h0LnNjCXBlcmlvZC5zYwtxdWVzdGlvbi5zYw9xdWVzdGlvbmRvd24uc2MLcXVvdGVkYmwuc2MPcXVvdGVkYmxiYXNlLnNjD3F1b3RlZGJsbGVmdC5zYxBxdW90ZWRibHJpZ2h0LnNjDHF1b3RlbGVmdC5zYw1xdW90ZXJpZ2h0LnNjEXF1b3Rlc2luZ2xiYXNlLnNjDnF1b3Rlc2luZ2xlLnNjB3VuaTI3RTgHdW5pMjdFOQd1bmkyMDA3B3VuaTIwMEEHdW5pMjAwOAd1bmkwMEEwB3VuaTIwMDkHdW5pMjAwQgd1bmkyMEI1DWNvbG9ubW9uZXRhcnkEZG9uZwRFdXJvB3VuaTIwQjIHdW5pMjBCNAd1bmkyMEFEBGxpcmEHdW5pMjBCQQd1bmkyMEJDB3VuaTIwQTYGcGVzZXRhB3VuaTIwQjEHdW5pMjBCRAd1bmkyMEI5B3VuaTIwQjgHdW5pMjBBRQd1bmkyMEE5B3VuaTIyMTkHdW5pMjA1Mgd1bmkyMjE1CGVtcHR5c2V0B3VuaTIxMjYHdW5pMjIwNgd1bmkwMEI1B2Fycm93dXAHdW5pMjE5NwphcnJvd3JpZ2h0B3VuaTIxOTgJYXJyb3dkb3duB3VuaTIxOTkJYXJyb3dsZWZ0B3VuaTIxOTYJYXJyb3dib3RoCWFycm93dXBkbgxhcnJvd3VwLmNhc2UPYXJyb3dyaWdodC5jYXNlDmFycm93ZG93bi5jYXNlDmFycm93bGVmdC5jYXNlB3VuaTI1QzYHdW5pMjVDNwlmaWxsZWRib3gHdW5pMjVBMQd0cmlhZ3VwB3VuaTI1QjYHdHJpYWdkbgd1bmkyNUMwB3VuaTI1QjMHdW5pMjVCNwd1bmkyNUJEB3VuaTI1QzEHdW5pMjExMwllc3RpbWF0ZWQHdW5pMjExNgZtaW51dGUGc2Vjb25kB2F0LmNhc2UMdW5pMjExNi5zczAxDGFtcGVyc2FuZC5zYwd1bmkwMzA4C3VuaTAzMDgwMzAwC3VuaTAzMDgwMzAxC3VuaTAzMDgwMzA0B3VuaTAzMDcLdW5pMDMwNzAzMDQJZ3JhdmVjb21iC3VuaTAzMDAwMzA0CWFjdXRlY29tYgt1bmkwMzAxMDMwNwt1bmkwMzAxMDMwNAd1bmkwMzBCDWNhcm9uY29tYi5hbHQHdW5pMDMwMgd1bmkwMzBDC3VuaTAzMEMwMzA3B3VuaTAzMDYHdW5pMDMwQQt1bmkwMzBBMDMwMQl0aWxkZWNvbWILdW5pMDMwMzAzMDgTdGlsZGVjb21iX2FjdXRlY29tYgt1bmkwMzAzMDMwNAd1bmkwMzA0C3VuaTAzMDQwMzA4C3VuaTAzMDQwMzAwC3VuaTAzMDQwMzAxDWhvb2thYm92ZWNvbWIHdW5pMDMwRgd1bmkwMzExB3VuaTAzMTIHdW5pMDMxQgxkb3RiZWxvd2NvbWIHdW5pMDMyNAd1bmkwMzI2B3VuaTAzMjcHdW5pMDMyOAd1bmkwMzJFB3VuaTAzMzEHdW5pMDMzNQd1bmkwMzM2B3VuaTAzMzcHdW5pMDMzOAx1bmkwMzA4LmNhc2UQdW5pMDMwODAzMDAuY2FzZRB1bmkwMzA4MDMwMS5jYXNlEHVuaTAzMDgwMzA0LmNhc2UMdW5pMDMwNy5jYXNlEHVuaTAzMDcwMzA0LmNhc2UOZ3JhdmVjb21iLmNhc2UQdW5pMDMwMDAzMDQuY2FzZQ5hY3V0ZWNvbWIuY2FzZRB1bmkwMzAxMDMwNy5jYXNlEHVuaTAzMDEwMzA0LmNhc2UMdW5pMDMwQi5jYXNlDHVuaTAzMDIuY2FzZQx1bmkwMzBDLmNhc2UQdW5pMDMwQzAzMDcuY2FzZQx1bmkwMzA2LmNhc2UOdGlsZGVjb21iLmNhc2UQdW5pMDMwMzAzMDguY2FzZRh0aWxkZWNvbWJfYWN1dGVjb21iLmNhc2UQdW5pMDMwMzAzMDQuY2FzZQx1bmkwMzA0LmNhc2UQdW5pMDMwNDAzMDguY2FzZRB1bmkwMzA0MDMwMC5jYXNlEHVuaTAzMDQwMzAxLmNhc2USaG9va2Fib3ZlY29tYi5jYXNlDHVuaTAzMEYuY2FzZQx1bmkwMzExLmNhc2UMdW5pMDMzNS5jYXNlDHVuaTAzMzcuY2FzZQx1bmkwMzM4LmNhc2UTdW5pMDMwNC5uYXJyb3cuY2FzZQl1bmkwMzA3LmkJdW5pMDMyOC5pEHVuaTAzMDgubG9jbFZJRVQQdW5pMDMwNy5sb2NsVklFVBJncmF2ZWNvbWIubG9jbFZJRVQSYWN1dGVjb21iLmxvY2xWSUVUEHVuaTAzMDIubG9jbFZJRVQQdW5pMDMwQy5sb2NsVklFVBB1bmkwMzA2LmxvY2xWSUVUEnRpbGRlY29tYi5sb2NsVklFVBB1bmkwMzA0LmxvY2xWSUVUFmhvb2thYm92ZWNvbWIubG9jbFZJRVQOdW5pMDMwOC5uYXJyb3cOdW5pMDMwMi5uYXJyb3cOdW5pMDMwNi5uYXJyb3cQdGlsZGVjb21iLm5hcnJvdw51bmkwMzA0Lm5hcnJvdw51bmkwMzExLm5hcnJvdxNjYXJvbmNvbWIuYWx0LnNob3J0CXVuaTAzMzUudAd1bmkwMkJDB3VuaTAyQkIHdW5pMDJCQQd1bmkwMkM5B3VuaTAyQ0IHdW5pMDJCOQd1bmkwMkJGB3VuaTAyQkUHdW5pMDJDQQd1bmkwMkNDB3VuaTAyQzgKdW5pMDMzNS5zYwp1bmkwMzM2LnNjCnVuaTAzMzguc2MLYnJldmVjb21iY3kQYnJldmVjb21iY3kuY2FzZQtkZXNjZW5kZXJjeRBkZXNjZW5kZXJjeS5jYXNlFmRlc2NlbmRlcmN5LmNhc2Uuc2hvcnQRZGVzY2VuZGVyY3kuc2hvcnQLdW5pMDMwNjAzMDELdW5pMDMwNjAzMDALdW5pMDMwNjAzMDkLdW5pMDMwNjAzMDMLdW5pMDMwMjAzMDELdW5pMDMwMjAzMDALdW5pMDMwMjAzMDkLdW5pMDMwMjAzMDMQdW5pMDMwNjAzMDEuY2FzZRB1bmkwMzA2MDMwMC5jYXNlEHVuaTAzMDYwMzA5LmNhc2UQdW5pMDMwNjAzMDMuY2FzZRB1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AAMAAAAAAAMAAwADAAMACAADAAAAAAAAAAAAGwAAAAD/9gAAAAAACAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+QAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAHAAAAAP/2AAD/9AAAAAAAAAAAAAAAAAAAAAAAAAAA/8cAAAAAAAAAAAAAAAAAAAAHAAAABwAAAAAAAAAAAAD//QAAAAAAAAAAAAP/9gAIAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAP/2AAAAAAAKAAoAAAAA//YAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7QAAAAAAAwAAAAoAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//bAAoAAAAAAAMAAwADAAMAAwADAAAAAAAAAAAAEwAAAAD/9gAAAAAAAAAAAAD/9gAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP+/AAAAAAAAAAAAAAAAAAAAAAAAAAcAAP/2//YAAAAN/+7/qQAAAAD/2//5/9j/3gAA//kAAAADAAAAAwAAAAMAAAAK//YACAAA/+z/9v/s//P//QAAAAcAAAADAAD/6QAAAAf/9gAHAAAAAAAAAAAAAAAA/9YAAAAAAAAAAAAAAAAAAAAAAAcAAP/2AAAAAAAAAAD/8QAAAAAAAAAA//H/2AAA/+b/9AAAAAAAAAAAAAAAAAAAAAD//QAAAAD/5wAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAP/5AAcAAAAAAAAAAAAAAAAAJgAIAAgAAAAAAAAAAAAAAAAAAP/s/+8AAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAHAAAAAAAAwAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAADAAAAAAAA/+//9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/58AAAAAAAD/wQADAAMAAwAA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BiUADAYmBicANQYoBigAMQYpBioAEAYrBisAQQYsBiwAQgYuBi4AEAYvBi8AEQYwBjAAEgYxBjIAFAYzBjMAMQY0BjQAKwY1BjUALQY2BjYADAY3BjgAUQY6BjoAKwY9Bj0ATQY/Bj8ATQZDBkMATgZFBkUATgZHBkcAUwZMBk4ANQZRBlEAUQZSBlIANQZTBlMARQZUBlQANQZVBlUARQZWBlYAEAZXBlcAEwZYBlgAOwZZBlkAEwZaBloAOwZbBlsAEAZcBlwAUQZdBl0AUAZeBl4AUQZfBl8AUAZiBmIANQZkBmQANQZmBmYAEAZqBmoAEAZvBm8AEAZ5BnkAJQZ6BnoAOAZ7BnsAJQZ8BnwAMgZ9Bn0AJgZ+Bn4AOAZ/Bn8AMgaABoAAKAaBBoEAMgaCBoIAJQaEBoQAMgaFBoUANgaGBoYAMgaIBogAMgaKBosAMgaMBowAFQaNBo0ANgaQBpAAMgaRBpEAGwaUBpQAKwaVBpYANQaYBpgANQahBqIANQanBqcAAQaqBqoANQarBqsAUgatBq4ADwbKBsoAJQbLBssAMAbMBswAOgbNBs0AFgbOBs8AJQbQBtAAPQbRBtEAHgbXBtcAJQbaBtsAFAbcBtwAJQc+Bz4AEwACAAgACgAaBJgFCjDQQfBOrlTMbU6FfI8WAAEAsgAEAAAAVAQKAV4BaAGGAYYBhgGGAYYBhgGGAbQBtAG0AbQBtAG0Af4B/gH+Af4B/gH+Af4B/gH+Af4ENAIoAigCKAIoAigCKAIoA44ClgJCA6oCjAJQAmICcAJ+AowClgKgAs4C3AOOA5wDqgPcBF4EXgReBFgEWAPuBE4D9AROA/4D/gQEBFgEWARYBFgEWARwBHAEWARYBAoENAQ0BE4EWARYBFgEWAReBF4EcAABAFQASQCUAKkAwADBAMIAwwDEAMUAxgDfAOAA4QDiAOMA5ADmAOcA6ADpAOoA6wDsAO0A7gDvASsBVwFYAVkBWgFbAVwBXQGgAbABygHPAd4B4gHjAeoB7QHvAfgB/gIxAkoCTAJkArQDhQRkBGUGJAYmBicGMAY0BjUGOgY8Bj4GQAZMBk0GTgZTBlUGVwZZBmMGZQaBBoUGjQaUBpUGlgaYBqEG2AbdBz4AAgYlAAYGNgAGAAcGNAApBjUAKAY6ACkGPQAIBj8ACAZHAAMGlAApAAsB4QAZAeIAIgHjAE8B5AASAeUAIQHoAAwB6gAkAewAHgHuABgB8QAdAjYACAASAd7/8gHhACsB4gAkAeMASgHkABMB5QAkAeb/5QHn/+sB6AASAeoADgHr/+sB7AATAe3/6wHuABoB7wAAAfEAHwI2AAkCOP/lAAoB3v/pAeEAJAHiAB0B5AAYAegAIQHr/+kB7AAYAe3/6QHuABgB8QAYAAYB4QAKAeIAKAHkABwB7AAcAe4AHwHxACgAAwHvAB4B8AAeAfEAHgAEBGQAUARlAFAGJABQBi8AKAADBGQAKARlACgGJAAoAAMEZAAeBGUAHgYkAB4AAwHvAEYB8ABGAfEARgACBiX/2AY2/9gAAgHeAEYB7wBDAAsCSAANAkkADQJKAA0CSwANAkwADQJNAA0CTgANAk8ADQLbAA0C3AANAt4ADQADAe8AMgHwADIB8QAyACwB3gAOAd8ADgHgAA4B4QAOAeIADgHjAA4B5AAOAeUADgHmAA4B5wAOAegADgHpAA4B6gAOAesADgHsAA4B7QAOAe4ADgHvAAsB8AALAfEACwH1AA4B/wAOAgAADgIBAA4CAgAOAgMADgIEAA4CBQAOAgYADgIHAA4CCAAOAgkADgIKAA4CCwAOAi8ADgIyAA4CMwAOAjQADgI1AA4CNgAOAjcADgI4AA4COQAOBqsADgADAe8AFAHwABQB8QAUAAMB7wAnAfAAJwHxACcADAHZAB4B4QBQAeIAMAHjAHkB5AA8AeUAPAHoAEMB6gAmAewAMAHuADwB8QArAjYAKQAEBjQAPAY1ADIGOgA8BpQAPAABAm//6QACATUAHgJvABQAAQRsAAgAAQRsAAQACgHhAAQB4gAMAeMAMgHkAAQB5QAEAeoABAHsAAQB7gAEAfEABwI2//4ABgHhABcB4gAcAeQACAHsAAgB7gALAfEAGgACAa//0QHeAAgAAQRs//sABAHiAFAB4wBQAeoAHgHuAB4AAwHhAB4B4wBaAegAHgABAA4ABAAAAAIAFgAgAAEAAgVzBXUAAgUzADIFewAyABQGJv/tBif/7QZM/+0GTf/tBk7/7QZS/+0GVP/tBlcADAZYAAYGWQAMBloABgZi/+0GZP/tBpX/7QaW/+0GmP/tBqH/7Qai/+0Gqv/tBz4ADAACGowABAAAHKAhqAAeAHEAAP/Q/7sAD//+//b/3f/Y//H/2//f/9b/6f+j/8T/6gAe/9YACv+jAAf/+wAK//EADf/3//MADP/a/+7/2wAeACL/8//4//v//f/W/+f/sAAh/7oAFP/f/9//1f/7/+f/zv/JAB7/+//l/9IACgAF/7cABf/2//sAOf/l//T/3//p/+T/8f/+//j/+wANAAMAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/2AAD//QAA//P/9gAA/+z/9v/l/+r/+f/qAAAAAP/nAAAAAAAAAAAAAAAAAAAAAAAAAAD/5QAAAAAAAAAAAAAAAAAAAAD/+QAAAAAAAP/sAAD/9P/0AAAAAP/kAAAAAAAAAAAAAP/zAAAAAP/2AAAAAAAAAAD/+gAAAAAAAAAAAAAAAAAAAAAAAP/2//n/9P/8//0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAP/2//sAAP/7//b/8QAAAAD/7AAAAAD/9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAMAAAAA//b//QAAAAD/7AAAAAAAAAAAAAAAAAAA//j//QAAAAAAAP/2AAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/3/+AAAP/l//H/+AAA//3/+f/v//T/9AAU//b/+gAA/8b/+QAK//P/8//2/+b/7QAA//n//QAA//3/5wAA/+X/9v/t/+r/7wAKAAoABwANAAD/9AACAA4AAP/s/+MAAP/0AAAAAP/s//H//f/tAAD/9P/v/+8ACgAAAAT/7//+ABf/3P/v/+r/4//v/+7/6QAA//QAAP/9//n/9v/5/+z/9P/5//b/7f/5/+7/7v/5//n/+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/9AAAAAAAA//b/+P/4AAAAAAAAAAAAAP/1//kAAP/5//n/+f/h/+sAAP/vAAAAAP/sAAAABf/t//3/8P/5//QAAP/3AAAACv/0AAAAAAAAAAD/+f/0//n/7QAA//T/9wAA//T/9AAA//T/+f/3AAz/9//0//T/+f/5//n/9//y//QAAAAAAAAAAAAAAAAAAP/5AAD/+QAAAAD/+f/5//QAAAAA//n/+f/5//n/+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK/+//8QAA//0AAAAA//n/+f/2AAAAAP/uAAD/3wAAAAD/9v/zAAD/3P/0AAD/7AAA//P/9v/iABf/+f/2//P/+P/2AAD/+wAAAAr/9AAD//UAAAAA//b/5QAA/+wACv/x//v/+AAD/+oAAP/5//j/+QAo//P/9v/zAAAAAP/lAAD/7v/yAAAAAAAAAAD/+wAAAAD//QAAAAAAAAAAAAAAAP/0AAAAAP/5AAAAAP/9AAD/5//3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/0/+n/8f/i//gABQAeAAAAAP/vAAD/+QAUAAr/7QAD/+kAAAAe/+//7//2/9H/uQAA//f/8//cAAAADf/q/9wAB//t/+//+AAPAA0ACv/2//n/0QARABsAKP/2/+oACv///9YAAAAI//QAAP/tAB7/7f/v/+//7AAFAAj/7f/3AAb/9P/v//P/9P/g/9n/2wAA//3/9P/9/+3/zv/t/+X/6f/v/+//7//5//f/9//5AAH/7f/5//j/+f/iAAoACP/0//T/+f/x//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/3f/zAAAAAAAAAAD/9gAKAAAAGgAR/+cAA//z/+IAAP/E/9//5//e/80AAP/l//MAAP/i//b/4v/W/+z/4P/i/98AEQAAAAz//QAA/+r//QADAAD/2P/kAAf/7wAM/+wAAAAA//b/5AAg//H/5f/sABH/7AAA/+f/7P/0/9b/2P/b/+H/0//0AAD/+f/sAAD/9v/Y/7z/1v/bAAD/5P/z/+z/7AAA/93/9v/2/+z/8f/nAAD/xgADAAAAAAAA//T/5//s/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAD/7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAoAAAAA//YAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s//cAAAAAAAAAAAAAAAD/+QAAAAAAAAAAAAD/9QAA//cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//0AAP/2AAAAAAAAAAAAAAAA//sAAAAA//0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//kAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/j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ACMCmQKaAE0CmwKzACMCtAK9AG8CvgK+ACMCvwLGAG8CxwLUADoC1QLZAEMC2gLaAAYC2wLcADMC3gLeADMC3wL6AE4C+wL7AFUC/AMCACQDAwMgAFUDIQMhACQDJAMkAFUDJQMsACQDLQNEAFUDRQNGAB8DRwNfAFUDYAOCACQDgwOEAFUDhQOFACQDhgONAFUDjgOQAFcDkgOZAFcDmwOiADQDowO6ADsDuwPAAD4DwQPBAEADwgPLAEEDzAPQAFoD0QPqAE8D7QPtAFUD7gQEABQEBQQFACQEBgQGAFIEBwQOACQEDwQRAFsEEgQSAFUEEwQbAFsEHAQcAFUEHQQfAFsEIAQhACAEIgQuAFUELwQvACQEMAQ3ADQEOARUADsEVQReAEIEXwRjAFoEZARlAA0EZgRmAEYEZwRrAGsEbARsAEcEbQRvAGsEcARwAAoEcQRxAEsEcgR3AGsEeAR4AEcEeQR6AGsEewR7AAUEfAR9AGsEfgR+AAUEfwR/AAYEgASBAAoEggSCAAUEgwSDAAoEhASEAAEEhQSJAGsEigSKAAYEiwSLAGsEjASMAEcEjQSNAGsEjgSOAEwEjwSPAAUEkASQAEsEkQSSAGsEkwSTAAMElASUAAYElQSVAGsElgSWAAoElwSYAAYEmQSZAAoEmgSaAAUEmwSbAAkEnQSdAGsEngSeAAoEnwSfAEsEoASiAGsEowSjAAYEpASnAGsEqASpAAUEqgSqAAYEqwSsAAsErQStAAoErgSuAAYErwSwAAEEsQSyAGsEswS0AAIEtQS1AGsEtgS2AAoEtwS5AGsEugS6AAEEuwS7AGsEvAS+AEYEvwS/AGsEwATBAAUEwgTCAAoEwwTEAEsExQTGAGsExwTJAAUEygTKAEsEywTNAAoEzgTOAAEEzwTRAGsE0gTTAAoE1ATUAEoE1QTVAEcE1gTWAAUE1wTXAAkE2ATaAGsE2wTcAEcE3QTdAEYE3gTeAAUE3wTfAGsE4QTiAAUE4wTjAFwE5ATkAF4E5QTnAEoE6ATrAGsE7ATsAEkE7QTtAFwE7gTuAAcE7wTwAAwE8QTxAAUE8gTyAAgE8wTzAAYE9AT0AAgE9QT1AEcE9gT2AGsE9wT3AAQE+QT5AAcE+gT7AFwE/AT8AEYE/QT9AEoE/gT/AGsFAAUCAAwFBAUEAAUFBQUFAAgFBgUGAE0FBwUHAAUFCAULAGUFDAUMAEgFDQUPACMFEAUQAD8FEQURAFEFEgUXAGUFGAUYAEgFGQUaAGUFGwUbACMFHAUdAGUFHgUeACMFHwUfADUFIAUhAD0FIgUiACMFIwUjAD8FJAUkADoFJQUpAGUFKgUqADUFKwUrAGUFLAUsAEgFLQUtAGUFLgUuAC4FLwUvACMFMAUwAFEFMQUyAGUFMwUzAGQFNAU0AG0FNQU1AGUFNgU2AD8FNwU3AG8FOAU4ADUFOQU5AD8FOgU6ACMFOwU7AD0FPAU8ABkFPQU9AGUFPgU+AD8FPwU/AFEFQAVBAGUFQgVCAG8FQwVDADUFRAVHAGUFSAVJACMFSgVKADUFSwVMAD0FTQVNAD8FTgVOADUFTwVQADoFUQVSAG8FUwVUABEFVQVVAG8FVgVWAD8FVwVXAGUFWAVYAEgFWQVaAGUFWwVbADoFXAVcAGUFXQVfAE0FYAViACMFYwVjAD8FZAVlAFEFZgVnAGUFaAVqACMFawVrAFEFbAVuAD0FbwVvADoFcAVyAGUFcwV0AD8FdQV1AFYFdgV2AEgFdwV3ACMFeAV4AD0FeQV5AC8FegV6AGUFewV7AGQFfAV8AEgFfQV9ACMFfgV+AC4FfwV/ACMFgAWAAD8FgQWBAFEFggWEADoFhQWFAG8FhgWGAEgFhwWJAGUFigWOADoFjwWPADUFkAWQAG8FkQWRAGUFkgWSAFEFkwWTACMFlAWUAGUFlQWVAA8FlgWWAGUFlwWXACMFmAWZADoFmgWeACMFnwWiADoFowWjAG4FpQWnADoFqAWoABwFqQWpADoFqgWqAEgFqwWrAGUFrQWuACMFrwWvAE0FsAWxACMFswW4ADoFuQW5AC8FugW6AEYFvgW+AEYFvwW/AGsFwAXAAEQFwQXBACUFwgXCAFkFwwXDADYFxAXEABcFxQXFAFMFxgXGAEQFxwXHADAFyAXIABUFyQXJACEFygXKAEUFywXLACYFzAXMADkFzQXNADcFzgXOABgFzwXPAFQF0AXQAEQF0QXRADEF0gXSABUF0wXTACIGJAYkAA0GJQYlAA4GJgYnAB0GKAYoABIGKQYqACgGKwYrAGAGLAYsABYGLgYuACgGLwYvACkGMAYwACoGMQYyAC0GMwYzABIGNAY0ADIGNQY1ADwGNgY2AA4GNwY4AB4GOgY6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BSMAEwUkBSQAQAUlBSkAPwUrBSsAPwUtBS0APwUuBS4AGwUvBS8AGQUxBTIAPwUzBTMAPQU1BTUAPwU2BTYAEwU3BTcAPgU5BTkAEwU6BToAGQU7BTsAEQU9BT0APwU+BT4AEwVABUEAPwVCBUIAPgVEBUcAPwVIBUkAGQVLBUwAEQVNBU0AEwVPBVAAQAVRBVIAPgVVBVUAPgVWBVYAEwVXBVcAPwVZBVoAPwVbBVsAQAVcBVwAPwVdBV8ACgVgBWIAGQVjBWMAEwVmBWcAPwVoBWoAGQVsBW4AEQVvBW8AQAVwBXIAPwVzBXQAEwV3BXcAGQV4BXgAEQV6BXoAPwV7BXsAPQV9BX0AGQV+BX4AGwV/BX8AGQWABYAAEwWCBYQAQAWFBYUAPgWHBYkAPwWKBY4AQAWQBZAAPgWRBZEAPwWTBZMAGQWUBZQAPwWWBZYAPwWXBZcAGQWYBZkAQAWaBZ4AGQWfBaIAQAWlBacAQAWpBakAQAWrBasAPwWtBa4AGQWvBa8ACgWwBbEAGQWzBbgAQAW6BboAAQW+Bb4AAQXBBcEAKwXCBcIAOQXDBcMAOAXEBcQAJwXHBccANQXKBcoAPAXLBcsALAXMBcwAOgXOBc4AKAXPBc8AJgXRBdEANgYkBiQADAYlBiUAHwYmBicAKgYoBigAIgYpBioALwYrBisAIwYuBi4ALwYvBi8AMAYwBjAAMQYxBjIANAYzBjMAIgY0BjQANwY1BjUAOwY2BjYAHwY6BjoANwY9Bj0AIAY/Bj8AIAZBBkEALQZDBkMAIQZFBkUAIQZHBkcALgZMBk4AKgZSBlIAKgZUBlQAKgZWBlYALwZYBlgAMwZaBloAMwZbBlsALwZgBmAAJAZhBmEAJQZiBmIAKgZjBmMAKQZkBmQAKgZlBmUAKQZmBmYALwZoBmgAMgZqBmoALwZvBm8ALwZ5BnkAFQZ6BnoAGQZ7BnsAFQZ9Bn0AFgZ+Bn4AGQaCBoIAFQaUBpQANwaVBpYAKgaYBpgAKgahBqIAKganBqcAAQaqBqoAKgarBqsAPwbKBsoAFQbOBs8AFQbXBtcAFQbaBtsANAbcBtwAFQACAJ4ABAAAAKwAsAABAEcAAP+j//n/9AAKAB4AKAAh//YAFAAK/6j/9v/2ABQAAwAHAB4ABwAUABH/7P/5//P/2QARAA0AEf/2//0AUAAg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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9AAA//D/8AAAAAD/7f/3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8f/q//f/9AAA/+0AAP/s//P/9//w//cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKACUABwAA//b/9gAA/+n/+f/bAAAAAAAAAAAAHgAAAAAAFAAAAAcAAP/9//kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAACP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABf/9AAAABQAFAAAAAoAAAAUAAoABwAAAAAADf/2AAAAFAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAACP/2AAAACAAAAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAoAFAAA/+z/7AAA/+L/9v/YAAoAAABkAEQAFAAKAAAACAAAAAD/9gAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAEQAAAAAACAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/zAAD/6QAA//T/7wAA/9//1v/WAAAAEf/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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ABIFhQWFAAQFhwWJAAgFkAWQAAkFkgWSABIFlAWUAAsFlQWVAAkFnAWeAAEFowWjAAkFrwWwAAEFsQWxAAkGiQaJAAwAAgFrAAQAHwBMACAAIABNACEAJwAwACgARgBNAEcASABIAEkASQBNAEoAUQAwAFIAZwBNAGoAgwBNAIQApgAwAKcAqABNAKkAqQAwAKoAsQBNALIAtABOALYAvQBOAL8AvwAwAMAAxgACAMcA3gAxAN8A5AAyAOUA5QA2AOYA7wAzAPUA9QBNAPYBDwABARABEQBMARIBEwBNASsBKwABASwBMwAwATUBNQBNAUUBRgBJAUcBSABNAUoBVABNAVUBVgAwAVcBXQBKAV4BegAxAYoBpQA3AaYBpgATAacBzAAWAc4BzgAPAdAB1wAWAdgB3QATAd4B7gBCAe8B8QBBAfIB9AATAfUB9QBCAfYB/gATAf8CCwBCAgwCLgAWAi8CLwBCAjACMAATAjECMQAWAjICOQBCAjoCPABFAj4CRQBFAkYCRgATAkgCTwAjAlACZwBGAmgCbQApAm4CbgAqAm8CeAApAnkCfQArAn8CmAAWApkCmgA3ApsCswAWArQCvQATAr4CvgAWAr8CxgATAscC1ABGAtUC2QArAtoC2gACAtsC3AAjAt4C3gAjBGQEZQAEBGYEZgBMBGcEawBNBGwEbAA1BG0EbwBNBHAEcAA2BHEEcQBIBHIEdwBNBHgEeAA1BHkEegBNBHsEewAwBHwEfQBNBH4EfgAwBH8EfwACBIAEgQA2BIIEggAwBIMEgwA2BIQEhAAuBIUEiQBNBIoEigACBIsEiwBNBIwEjAA1BI0EjQBNBI4EjgBOBI8EjwAwBJAEkABIBJEEkgBNBJQElAACBJUElQBNBJYElgA2BJcEmAACBJkEmQA2BJoEmgAwBJsEmwAyBJ0EnQBNBJ4EngA2BJ8EnwBIBKAEogBNBKMEowACBKQEpwBNBKgEqQAwBKoEqgACBKsErAAzBK0ErQA2BK4ErgACBK8EsAAuBLEEsgBNBLMEtAAvBLUEtQBNBLYEtgA2BLcEuQBNBLoEugAuBLsEuwBNBLwEvgBMBL8EvwBNBMAEwQAwBMIEwgA2BMMExABIBMUExgBNBMcEyQAwBMoEygBIBMsEzQA2BM4EzgAuBM8E0QBNBNIE0wA2BNUE1QA1BNYE1gAwBNcE1wAyBNgE2gBNBNsE3AA1BN0E3QBMBN4E3gAwBN8E3wBNBOEE4gAwBOME4wABBOQE5ABHBOgE6wBNBO0E7QABBO4E7gBKBPEE8QAwBPIE8gAxBPME8wACBPQE9AAxBPUE9QA1BPYE9gBNBPcE9wBJBPkE+QBKBPoE+wABBPwE/ABMBP4E/wBNBQQFBAAwBQUFBQAxBQYFBgA3BQcFBwAwBQgFCwBCBQwFDAAOBQ0FDwAWBRAFEAAqBREFEQAPBRIFFwBCBRgFGAAOBRkFGgBCBRsFGwAWBRwFHQBCBR4FHgAWBR8FHwAkBSAFIQApBSIFIgAWBSMFIwAqBSQFJABGBSUFKQBCBSoFKgAkBSsFKwBCBSwFLAAOBS0FLQBCBS4FLgBFBS8FLwAWBTAFMAAPBTEFMgBCBTMFMwBBBTUFNQBCBTYFNgAqBTcFNwATBTgFOAAkBTkFOQAqBToFOgAWBTsFOwApBT0FPQBCBT4FPgAqBT8FPwAPBUAFQQBCBUIFQgATBUMFQwAkBUQFRwBCBUgFSQAWBUoFSgAkBUsFTAApBU0FTQAqBU4FTgAkBU8FUABGBVEFUgATBVMFVAAJBVUFVQATBVYFVgAqBVcFVwBCBVgFWAAOBVkFWgBCBVsFWwBGBVwFXABCBV0FXwA3BWAFYgAWBWMFYwAqBWQFZQAPBWYFZwBCBWgFagAWBWsFawAPBWwFbgApBW8FbwBGBXAFcgBCBXMFdAAqBXUFdQBEBXYFdgAOBXcFdwAWBXgFeAApBXkFeQAgBXoFegBCBXsFewBBBXwFfAAOBX0FfQAWBX4FfgBFBX8FfwAWBYAFgAAqBYEFgQAPBYIFhABGBYUFhQATBYYFhgAOBYcFiQBCBYoFjgBGBY8FjwAkBZAFkAATBZEFkQBCBZIFkgAPBZMFkwAWBZQFlABCBZUFlQAGBZYFlgBCBZcFlwAWBZgFmQBGBZoFngAWBZ8FogBGBaUFpwBGBagFqABLBakFqQBGBaoFqgAOBasFqwBCBa0FrgAWBa8FrwA3BbAFsQAWBbMFuABGBbkFuQAgBboFugBMBb4FvgBMBb8FvwBNBcAFwAAsBcEFwQAXBcIFwgAoBcMFwwAlBcQFxAAQBcUFxQA/BcYFxgAsBccFxwAhBcgFyAANBckFyQAUBcoFygAtBcsFywAYBcwFzAA7Bc0FzQAm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D4oPig+KCrAPig+KD4oPig+KD4oPig+KD4oKqg+KD4oPig+KD4oPig+KD4oPig+KD4oPig+KD4oPigugD4oLjguUCg4LoA+KD4oPig+KChQPigoaD4oLuA+KD4oKIA+KD4oPig+KD4oPigomD4oPigrCCiwKzg+KD4oKMgo4Cj4Pig+KD4oPigpED4oPig+KD4oPigv0D4oLUgtYC6wLZAtqD4oPigsoD4oPig+KD4oK1A+KD4oOOg+KC74Pig+KD4oPigpKD4oPig+KD4oKUA+KD4oKVg+KClwPig+KCtoPigrgCuYPigraD4oKYgrmD4oPig+KD4oPig+KD4oPig+KD4oPigvED4oLyg+KD4oOOg+KCmgKbg+KCnQPigp6CoAPigqGD4oKjAqSD4oPig+KD4oPig+KCpgPigqeCqQPig+KD4oKqg+KD4oPig+KCrAPig+KD4oPig+KD4oPig+KD4oPig+KD4oKtg+KCrwPig+KCrYPigq8D4oPigrCCsgKzg+KD4oPig+KCtQPig+KCtoPigrgCuYPigrsD4oK8g+KD4oK/gsECvgPig+KCv4LBAsKD4oPigsQD4oLFg+KD4oLHAsiCygPig+KD4oPigsuD4oPig+KD4oLNA+KD4oPig+KCzoPig+KDjoPigtAD4oPig+KD4oLRg+KD4oPig+KC0wPig+KC1ILWAteC2QLagtSC1gLrAtkC2oLUgtYC14LZAtqD4oPigtwD4oPig+KD4oLdg+KD4oPig+KC3wPig+KD4oPiguCD4oPig+KD4oLiA+KD4oPig+KC7gPig+KC44LlAuaC6APig+KD4oLpg+KD4oPig+KC6wPig+KD4oPig+KC7IPig+KD4oPig+KD4oPig+KC7gPig+KDjoPigu+D4oPigvED4oLyg+KD4oLxA+KC8oPig+KDXoMEgwMD4oPigweDCQMKg+KD4oMHgwkC9APig+KDB4MJAvWD4oPigw2DDwMDA+KDEgMNgw8DAwPigxIDDYMPAwMD4oMSAw2DDwL3A+KDEgPig+KD4oPig+KC/oPigwADAYPigxaD4oL4g+KD4oMWg+KC+IPig+KD4oPigvoD4oPig+KD4oL7g+KD4oPig+KD4oL9A+KC/oPigwADAYPig16DBIMDA+KD4oNegwSDEIPig+KDvQPigwYD4oPigweDCQMKg+KD4oMNgw8DDAPigxIDDYMPAxCD4oMSAxaD4oMTg+KD4oMWg+KDFQPig+KDFoPigxgD4oPig+KD4oMZg+KD4oPig+KD4oMbA+KDYwNkg2GD4oPigxyD4oMeA+KD4oPig+KDigPig+KD4oPig6UD4oPig2qDbANtg+KD4oNqg2wDH4Pig+KDaoNsAyED4oPig+KD4oNdA+KD4oOfA+KDoIPig+KD4oPigyKD4oPig+KD4oMig+KD4oPig+KDJAPig+KD4oPigyWD4oPig+KD4oPNg+KD4oPig+KDJwPig+KD4oPig+KD4oPig16D4oNgA+KD4oOWA+KDl4OZA+KDdoN4A28DewN8g+KD4oPig+KD4oMog+KDKgPig+KDogPig6OD4oPig0gD4oNJg0sD4oOFg+KDK4Pig+KDhYPigyuD4oPig+KD4oPig+KD4oPig+KDTgPig+KD4oPig+KD4oPig+KD4oPig+KD4oPig+KD4oONA+KD4oPigy0DjQPig+KD4oPigy6D4oMwA+KDMYPig+KDMwPig+KD4oPig+KD4oOgg+KD4oNXAzSDNgPig+KDpoOoAzeD4oPig+KD4oM5A+KD4oM6g+KDPAM9g6CD4oPig34D4oPig+KD4oM/A+KD4oPig+KDXQPig+KDnwPig6CD4oPig+KD4oPNg+KD4oNAg+KDQgPig+KDQ4Pig0UD4oPig5YD4oOXg5kD4oOWA+KDRoOZA+KD4oPig+KD4oPig6ID4oOjg+KD4oNIA+KDSYNLA+KD4oPig+KDTIPig+KD4oPig0yD4oPig+KD4oPig+KD4oPig04D4oPig+KD4oNPg+KD4oOag+KDWINRA1KDVAPig1WD4oPig1QD4oNVg+KD4oNXA+KDWINaA1uD4oPig10D4oPig+KD4oPig+KD4oOWA+KDl4OZA+KDXoPig2AD4oPig2MDZINhg+KD4oNjA2SDZgPig+KDZ4Pig2kD4oPig2qDbANtg+KD4oN2g3CDbwPig+KDdoNwg3mD4oPig+KD4oNyA+KD4oOfA+KDgQPig+KD4oPig3OD4oPig+KD4oN1A+KD4oN2g3gDeYN7A3yD4oPig34D4oPig+KD4oN/g+KD4oPig+KDgQPig+KDhYPig4KD4oPig4WD4oOEA+KD4oOFg+KDhwPig+KD4oPig4iD4oPig+KD4oOKA+KD4oPig+KDi4ONA+KD4oPig+KD4oPig46D4oOQA+KD4oORg+KDkwPig+KD4oPig+KD4oPig+KD4oOxA+KD4oPVA9aDtYPig9mD1QPWg7WD4oPZg9UD1oO4g+KD2YPig+KDlIPig+KDlgPig5eDmQPig5qD4oOcA+KD4oO9A+KD4oPig+KD4oPig+KD4oPig9UD1oO1g+KD2YPig+KDnYPig+KD4oPig52D4oPig58D4oOgg+KD4oOiA+KDo4Pig+KD4oPig6UD4oPig6aDqAOpg+KD4oPig+KDtYPig+KDqwOsg9sD4oOuA+KD4oOvg+KD4oPDA8SDwYPig+KD4oPig7ED4oPig8kDyoPMA+KD4oPJA8qDsoPig+KDyQPKg7QD4oPig9UD1oO1g+KD2YPVA9aDtYPig9mD1QPWg7cD4oPZg9UD1oO4g+KD2YO6A+KDu4Pig+KDvQPig+KD4oPig94D4oO+g+KD4oPeA+KDvoPig+KD4oPig8AD4oPig8MDxIPBg+KD4oPDA8SDxgPig+KD4oPig8eD4oPig8kDyoPMA+KD4oPPA9CDzYPig+KDzwPQg9ID4oPig9UD1oPTg+KD2YPVA9aD2APig9mD3gPig9sD4oPig94D4oPcg+KD4oPeA+KD34Pig+KD4oPig+ED4oPigABAX0AAAABAUoDUwABAWUDUwABAWUDOQABAZoDUwABAZoCvAABAWcDUwABAfICvAABAogCSgABAUoAAAABAYMAAAABAUACvAABANAAAAABAJsAAAABAM0AAAABAJsDOQABAQoCvAABAWcCvAABAX0CvAABAfAAAAABAfACvQABA0QCvAABAS8CvAABAS8BUwABAU4AAAABAU4CvAABAUsA+QABAUQAAAABAUQCvAABAUEA+QABAS4AAAABAS4CvAABAS4BUwABAVUCvAABAVQCvAABAlUAAAABAk8CvwABAJ8AAAABANEAAAABAJ8CvAABAgQCvAABAZkAAAABAZkCvAABAZkCKQABAeEAAAABAeECvAABAXsCvAABAXsAAAABAuoAAAABAXsDOQABAhwAAAABAhwCvAABAW8AAAABAmkAAAABAWUCvAABAZ0CvAABAZ0DOQABAgQDOQABAT8DOQABAZoDNQABAZoDOQABAagAAAABAfUAAAABAagDOQABAagBXgABAoECvAABAUADOQABAVQDNQABAVQDOQABAVQDUwABAVUDOQABA0MAAAABA3QAAAABAfIDOQABAK4CSgABAWYCvAABAagCvAABAMcCSgABAUoCvAABAT8CvAABAZYAAAABAZ8CvAABAV4DUwABAV4DOQABAY8DUwABAYoCvAABAfECvAABAOwCvAABAQ4CSgABATwAAAABAT4CvAABATsBSgABAY8CvAABAr0AAAABAhQCvAABAV4AAAABAlEAAAABAV4CvAABAY8DNQABAYgAAAABArEAAAABAY8DOQABAo4CvAABAYoDNQABAYoDOQABApcAAAABAYoDUwABAfEDOQABAMMCSgABATgAAAABATgCEwABATUCvQABATUCowABAVUCEgABAVUCvQABAVUCswABATQCvQABAYIAAAABAW4CEgABARACEgABAaACEgABAgEBugABAQsAAAABAQsCEgABATkAAAABAL0AAAABAI0CxQABAIsCowABAI4CxQABAVsAAAABAJAC5gABAMMCeQABATMCEAABAUEAAAABAUECEgABAYoAAAABAYoCEgABArECEAABAPgAAAABAPgCEgABAPgA/AABAR4ABQABARQCEgABARMCEgABAMgCegABAQQCEgABAdAAAAABAcoCEAABAI0AAAABAI0C5gABAI0BZgABARYC5gABAagCEgABAY8AAAABAY8CEgABASECEgABAR8AAAABAf0AAAABASECowABAdkAAAABAc0CEgABATUAAAABAgkAAAABATUCEgABAT8CEgABAGsCEgABAagCowABAVUCnwABAVUCowABAT8AAAABAaIAAAABAT8CowABAT8BCQABAcgCEgABAUUCEgABAUUCowABAQcCowABARACnwABARACowABAaAAAAABARACvQABARQCowABASMCEAABAaACowABAJoBugABAS8AAAABAUICEgABAdQAAAABAdQCEgABATECEgABAVIAAAABAVICEgABAVIBpgABAVkAAAABAVkCEgABAgYCEAABAPsAAAABAQcCEgABAToAAAABAS4CEgABASMCuwABAIsAAAABALsAAAABAIsCnwABAVAAAAABAkkAAAABAhoCEgABAgYCnQABAUgCEgABATACvQABATACowABAUYCEgABAUYCswABAUYCvQABAWkAAAABAVYCEgABAhQAAAABAVACEgABAZUCEgABAU8CEgABAU8AAAABAk8AAAABAU8CowABAeUCEgABATAAAAABAb0AAAABATACEgABATQCEgABATQAAAABAKcCEgABATQCowABAUYCnwABAUcAAAABAkAAAAABAUYCowABAhECEgABAVACnwABAVACowABApUAAAABAVACvQABAZUCowABAAAAAAAJAAAAAQAIAAEABAAAA7wABgEAAAEACAABAAwAHAABACoASgABAAYG/wcABwEHAgcEBwUAAQAFBv8HAAcBBwQHBQAGAAAAGgAAABoAAAAaAAAAGgAAABoAAAAaAAH+1AAAAAUAEgAMABIAGAAeAAH+1P9qAAH+1P9vAAH+1P9jAAH+1P9yAAYCAAABAAgAAQF6AAwAAQGgAEAAAgAIBt8G6gAABuwG/QAMBwoHJAAeB0AHQQA5B0UHRQA7B0gHSgA8B0wHUQA/B1MHVABFAEcAkACuAK4ArgKSAJYAugCuALoAnACuALoAwADAAsAAwACiAKIAwACuAK4ArgCoAK4ArgCuALQAugDAAMYAzADqAOoA6gDSANgA9gDqAPYA3gDqAPYA/AD8At4A/AD8AOoA6gDqAOQA6gDqAOoA8AD2APwBFAEOAQ4BDgEgASABIAECAQgBDgEOARQBGgEgAAH+1AKjAAH+1AMwAAH+1AMxAAH+1AL9AAH+1AKfAAH+1AMtAAH+1AMDAAH+1AK9AAH+1AKzAAH+1ALfAAH+1AM5AAH+1ANSAAH+1APGAAH+1APHAAH+1AM1AAH+1APDAAH+1AOZAAH+1ANTAAH+1ANJAAEBLAKjAAEBLAK8AAEBLAK9AAEBLAKfAAEBLAL9AAEBLAKzAAYCAAABAAgAAQAMACgAAQAyAWoAAgAEBt8G6gAABuwG/QAMBwoHJAAeB14HbQA5AAIAAQdeB20AAABJAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABMgAAATIAAAEyAAABMgAAATIAAAEyAAABMgAAATIAAAEyAAABMgAAATIAAAEyAAABMgAAATIAAAEyAAABMgAAATIAAAEyAAABMgAAATIAAAEyAAABJgAAATIAAAEyAAABMgAAATIAAAEyAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEyAAABMgAAATIAAAEyAAABMgAAATIAAAEyAAABMgAB/tQCuwAB/tQCEgAB/tQCvAAQACgAKAAiACgALgAuADQAOgBGAEYAQABGAEwATABSAFgAAf7UAyUAAf7UAxoAAf98AvcAAf9WAwsAAf7UAyAAAf7UA7sAAf7UA7AAAf98A40AAf9WA6EAAf7UA7YAAQAMACIABQEKAq4AAgADBt8G6gAABuwHJwAMB14HbQBIAAIAJgAEAEgAAABKAH8ARQCBAKYAewCpALQAoQC2AL0ArQC/ANoAtQDcAN4A0QDgAOQA1ADmAPQA2QD2ASoA6AEsATYBHQE4AVABKAFSAVQBQQFWAaUBRAGnAa4BlAGwAc4BnAHQAdYBuwHYAgcBwgIJAjwB8gI+AkUCJgJIAm0CLgJvAn0CVAJ/ArMCYwK1AtkCmALfAyMCvQMlAzUDAgM3A1sDEwNdA4IDOAOFA5ADXgOSA5kDagObA7YDcgO4A7oDjgO8A8ADkQPCBAUDlgQHBBED2gQTBCoD5QQsBC4D/QQwBGMEAABYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAQBmAAAAWgAAAFoAAABaAAAAWgAAQFiAAABaAAAAWgAAwFuAAMBdAADAYwAAwF6AAIBngACAZ4AAgGeAAIBngACAZ4AAgGeAAIBngACAZ4AAgGeAAIBngACAZ4AAgGeAAIBngACAZ4AAgGeAAIBngACAZ4AAgGeAAIBngACAZ4AAgGeAAIBgAACAZ4AAgGeAAIBngACAZ4AAgGeAAMBhgADAYwAAwGSAAIBmAACAZgAAgGYAAIBmAACAZgAAgGYAAIBmAACAZgAAgGeAAIBngACAZ4AAgGeAAIBngACAZ4AAgGeAAIBngAB/tUAAAAB/tQAAAAB/tQBtgAB/kwBtgAB/soBCgAB/tQCuwAB/tQBZAAB/ycBggAB/mMBXgAB/tQCEgAB/tQCvAQ0KlIqWCpGPJQ8lCpSKlgqNDyUPJQqUipYKl48lDyUKlIqWCoQPJQ8lCouKlgqXjyUPJQqUipYKhA8lDyUKlIqWCoKPJQ8lCpSKlgqEDyUPJQqUipYKl48lDyUKlIqWCpePJQ8lCpSKlgqFjyUPJQqLipYKl48lDyUKlIqWCoWPJQ8lCpSKlgqHDyUPJQqUipYKiI8lDyUKlIqWCo0PJQ8lCpSKlgqKDyUPJQqLipYKkY8lDyUKlIqWCo0PJQ8lCpSKlgqOjyUPJQqUipYKl48lDyUKlIqWCpAPJQ8lCpSKlgqRjyUPJQqUipYKkw8lDyUKlIqWCpMPJQ8lCpSKlgqXjyUPJQuWjyULlQ8lDyULlo8lC5gPJQ8lCpkPJQqajyUPJQqgjyUKnA8lDyUKoI8lCp2PJQ8lCqCPJQqfDyUPJQqgjyUKnA8lDyUKoI8lCp2PJQ8lCqCPJQqfDyUPJQqgjyUKog8lDyUM0w8lCrQLn48lCqOPJQqlC5+PJQqmjyUKqAqpjyUM0w8lCqsLn48lCqyPJQquCq+PJQqxDyUKtAufjyUKso8lCrQLn48lCrWPJQq3C5+PJQrHiskKxg8lDyUKx4rJDjaPJQ8lCseKyQrKjyUPJQrHiskKyo8lDyUKx4rJCsqPJQ8lCseKyQrKjyUPJQrHiskKuI8lDyUKwArJCsqPJQ8lCseKyQq4jyUPJQrHiskKug8lDyUKx4rJCruPJQ8lCseKyQ42jyUPJQrHiskKvQ8lDyUKx4rJCr6PJQ8lCsAKyQrGDyUPJQrHiskONo8lDyUKx4rJCsGPJQ8lCseKyQrKjyUPJQrHiskKww8lDyUKx4rJCsSPJQ8lCseKyQrEjyUPJQrHiskKxg8lDyUKx4rJCsqPJQ8lCs2PJQrMDyUPJQrNjyUKzw8lDyULDg8lC72PJQ8lCw4PJQu2DyUPJQsODyULtg8lDyULDg8lC7YPJQ8lCwgPJQu9jyUPJQsODyULuQ8lDyULDg8lC7qPJQ8lCw4PJQu9jyUPJQsODyULDIrWjyUK0I8lCtIK048lCtUPJQsMitaPJQsODyULD4rWjyULDg8lCw+K1o8lCwgPJQsMitaPJQriiuQK948lDyUPJQ8lCtgPJQ8lCuKK5ArxjyUPJQriiuQK5Y8lDyUK4orkCuWPJQ8lCuKK5ArxjyUPJQriiuQK2Y8lDyUK4orkCtsPJQ8lCuKK5ArcjyUPJQreCuQK948lDyUK4orkCvGPJQ8lCuKK5ArfjyUPJQriiuQK5Y8lDyUK4orkCuEPJQ8lCuKK5Ar3jyUPJQriiuQK5Y8lDyUPJQ8lCucPJQ8lDyUPJQrojyUPJQrqDyUK7o8lDyUK6g8lCuuPJQ8lCu0PJQrujyUPJQvUDyUK94vXC9iL1A8lCvAL1wvYi9QPJQrxi9cL2IvUDyUK94vXC9iK8w8lCveL1wvYi9QPJQr3i9cL2IrzDyUK94vXC9iL1A8lCvSL1wvYivYPJQr3i9cL2Ir5DyUK+or8Cv2K/w8lCwIPJQ8lCwCPJQsCDyUPJQsODyULDI8lDyULDg8lCwOPJQ8lCw4PJQsFDyUPJQsODyULD48lDyULCA8lCwyPJQ8lCw4PJQsGjyUPJQsIDyULDI8lDyULDg8lCwmPJQ8lCwsPJQsMjyUPJQsODyULD48lDyULIAshiyqLJIsmCyALIYsdCySLJgsgCyGLHoskiyYLIAshix6LJIsmCyALIYsRCySLJgsYiyGLHoskiyYLIAshixELJIsmCyALIYsSiySLJgsgCyGLFAskiyYLIAshix0LJIsmCyALIYsViySLJgsgCyGLIwskiyYLIAshixcLJIsmCxiLIYsqiySLJgsgCyGLHQskiyYLIAshixoLJIsmCyAPJQsqjyUPJQsgDyULHQ8lDyULGI8lCyqPJQ8lCyAPJQsdDyUPJQsgDyULGg8lDyULIA8lCx6PJQ8lCyALIYsdCySLJgsgCyGLHoskiyYLIAshixuLJIsmCyALIYsjCySLJgsgCyGLIwskiyYPJQ8lCyqPJQ8lCyALIYsqiySLJgsgCyGLHQskiyYLIAshix6LJIsmCyALIYsjCySLJgsgCyGLIwskiyYLIAshiyMLJIsmCyePJQspDyUPJQ8lDyULKo8lDyULLw8lCzOPJQ8lCy8PJQssDyUPJQsvDyULMI8lDyULLY8lCzOPJQ8lCy8PJQssDyUPJQstjyULM48lDyULLw8lCzCPJQ8lCzIPJQszjyUPJQs7DyULPI8lDyULOw8lCzUPJQ8lCzsPJQs2jyUPJQs7DyULOY8lDyULOw8lCzgPJQ8lCzsPJQs8jyUPJQs7DyULOY8lDyULPg8lCzyPJQ8lCzsPJQs/jyUPJQs+DyULPI8lDyULPg8lCz+PJQ8lDhEPJQtBDyUPJQtEDyULSItKDyULRA8lC0iLSg8lC0QPJQtCi0oPJQtEDyULSItKDyULRY8lC0iLSg8lC0WPJQtIi0oPJQtHDyULSItKDyULWQtai06PJQtdi1kLWotRjyULXYtZC1qLV48lC12LWQtai1ePJQtdi1kLWotXjyULXYtZC1qLUY8lC12LWQtai0uPJQtdi00LWotOjyULXYtZC1qLUY8lC12LWQtai1APJQtdi1kLWotOjyULXYtZC1qLUY8lC12LTQtai06PJQtdi1kLWotRjyULXYtZC1qLUA8lC12LWQtai1ePJQtdi1kLWotRjyULXYtZC1qLV48lC12LWQtai1MPJQtdi1kLWotUjyULXYtZC1qLVg8lC12LWQtai1ePJQtdi1kLWotcDyULXYtjjyULXw8lDyULY48lC2UPJQ8lC2OPJQtgjyUPJQtjjyULYg8lDyULY48lC2UPJQ8lC3EPJQtrC3QPJQtxDyULbIt0DyULcQ8lC3KLdA8lC3EPJQtmi3QPJQtxDyULaAt0DyULaY8lC2sLdA8lC3EPJQtsi3QPJQtxDyULbgt0DyULcQ8lC2+LdA8lC3EPJQtyi3QPJQt4jyULfQ8lDyULeI8lC3WPJQ8lC3iPJQt3DyUPJQt4jyULeg8lDyULe48lC30PJQ8lC5CLkguNjyUPJQuQi5ILiQ8lDyULkIuSC5OPJQ8lC5CLkguADyUPJQuHi5ILk48lDyULkIuSC4APJQ8lC5CLkgt+jyUPJQuQi5ILgA8lDyULkIuSC5OPJQ8lC5CLkguTjyUPJQuQi5ILgY8lDyULh4uSC5OPJQ8lC5CLkguBjyUPJQuQi5ILgw8lDyULkIuSC4SPJQ8lC5CLkguJDyUPJQuQi5ILhg8lDyULh4uSC42PJQ8lC5CLkguJDyUPJQuQi5ILio8lDyULkIuSC5OPJQ8lC5CLkguMDyUPJQuQi5ILjY8lDyULkIuSC48PJQ8lC5CLkguPDyUPJQuQi5ILk48lDyULlo8lC5UPJQ8lC5aPJQuYDyUPJQuZjyULmwufjyULnI8lC54Ln48lC7GLswuwDyUPJQuxi7MLqg8lDyULsYuzC7SPJQ8lC7GLswu0jyUPJQuxi7MLtI8lDyULsYuzC7SPJQ8lC7GLswuhDyUPJQuoi7MLtI8lDyULsYuzC6EPJQ8lC7GLswuijyUPJQuxi7MLpA8lDyULsYuzC6oPJQ8lC7GLswuljyUPJQuxi7MLpw8lDyULqIuzC7APJQ8lC7GLswuqDyUPJQuxi7MLq48lDyULsYuzC7SPJQ8lC7GLswutDyUPJQuxi7MLro8lDyULsYuzC66PJQ8lC7GPJQuwDyUPJQuxi7MLtI8lDyULvA8lC72PJQ8lC7wPJQu2DyUPJQu8DyULtg8lDyULvA8lC7YPJQ8lC7ePJQu9jyUPJQu8DyULuQ8lDyULvA8lC7qPJQ8lC7wPJQu9jyUPJQvMi84Lyw8lDyUPJQ8lC78PJQ8lC8yLzgvGjyUPJQvMi84Lz48lDyULzIvOC8+PJQ8lC8yLzgvGjyUPJQvMi84LwI8lDyULzIvOC8IPJQ8lC8yLzgvDjyUPJQvFC84Lyw8lDyULzIvOC8aPJQ8lC8yLzgvIDyUPJQvMi84Lz48lDyULzIvOC8mPJQ8lC8yLzgvLDyUPJQvMi84Lz48lDyUPJQ8lC9EPJQ8lDyUPJQvSjyUPJQvUDyUL1YvXC9iL2g8lC90PJQ8lC9uPJQvdDyUPJQvpDyUL548lDyUL6Q8lC96PJQ8lC+kPJQvgDyUPJQvpDyUL6o8lDyUL4w8lC+ePJQ8lC+kPJQvhjyUPJQvjDyUL548lDyUL6Q8lC+SPJQ8lC+YPJQvnjyUPJQvpDyUL6o8lDyUL7A8lC+2PJQ8lDNYPJQvzi/UPJQzWDyUL84v1DyUM1g8lC+8L9Q8lDNYPJQvzi/UPJQvwjyUL84v1DyUL8I8lC/OL9Q8lC/IPJQvzi/UPJQwEDAWL/48lDAiMBAwFi/sPJQwIjAQMBYwCjyUMCIwEDAWMAo8lDAiMBAwFjAKPJQwIjAQMBYv7DyUMCIwEDAWL9o8lDAiL+AwFi/+PJQwIjAQMBYv7DyUMCIwEDAWL+Y8lDAiMBAwFi/+PJQwIjAQMBYv7DyUMCIv4DAWL/48lDAiMBAwFi/sPJQwIjAQMBYv5jyUMCIwEDAWMAo8lDAiMBAwFi/sPJQwIjAQMBYwCjyUMCIwEDAWL/I8lDAiMBAwFi/4PJQwIjAQMBYv/jyUMCIwEDAWMAQ8lDAiMBAwFjAKPJQwIjAQMBYwHDyUMCIwOjyUMCg8lDyUMDo8lDBAPJQ8lDA6PJQwLjyUPJQwOjyUMDQ8lDyUMDo8lDBAPJQ8lDBwPJQwWDyUPJQwcDyUMF48lDyUMHA8lDB2PJQ8lDBwPJQwRjyUPJQwcDyUMEw8lDyUMFI8lDBYPJQ8lDBwPJQwXjyUPJQwcDyUMGQ8lDyUMHA8lDBqPJQ8lDBwPJQwdjyUPJQ6SDyUMI48lDyUOkg8lDB8PJQ8lDpIPJQwgjyUPJQ6SDyUMIg8lDyUOiQ8lDCOPJQ8lDnoMNYwyjyUPJQ56DDWMLg8lDyUOegw1jDcPJQ8lDnoMNYwmjyUPJQ59DDWMNw8lDyUOegw1jCaPJQ8lDnoMNYwlDyUPJQ56DDWMJo8lDyUOegw1jDcPJQ8lDnoMNYw3DyUPJQ56DDWMKA8lDyUOfQw1jDcPJQ8lDnoMNYwoDyUPJQ56DDWMKY8lDyUOegw1jCsPJQ8lDnoMNYwuDyUPJQ56DDWMLI8lDyUOfQw1jDKPJQ8lDnoMNYwuDyUPJQ56DDWML48lDyUOegw1jDcPJQ8lDnoMNYwxDyUPJQ56DDWMMo8lDyUOegw1jDQPJQ8lDnoMNYw0DyUPJQ56DDWMNw8lDyUMOg8lDDiPJQ8lDDoPJQw7jyUPJQxBjyUMPQ8lDyUMQY8lDD6PJQ8lDEGPJQxADyUPJQxBjyUMPQ8lDyUMQY8lDD6PJQ8lDEGPJQxADyUPJQxBjyUMQw8lDyUMRI8lDyUNQ41FDESPJQ8lDUONRQxEjyUPJQ1DjUUMRg8lDyUNQ41FDEePJQ8lDUONRQxJDyUMSo1DjUUO1AxeDFOPJQ8lDtQMXgxVDyUPJQ7UDF4MX48lDyUO1AxeDF+PJQ8lDtQMXgxfjyUPJQ7UDF4MX48lDyUO1AxeDEwPJQ8lDgUMXgxfjyUPJQ7UDF4MTA8lDyUO1AxeDE2PJQ8lDtQMXgxPDyUPJQ7UDF4MVQ8lDyUO1AxeDFCPJQ8lDtQMXgxSDyUPJQ4FDF4MU48lDyUO1AxeDFUPJQ8lDtQMXgxWjyUPJQ7UDF4MX48lDyUO1AxeDFgPJQ8lDtQMXgxZjyUPJQ7UDF4MWY8lDyUMWw8lDFyPJQ8lDtQMXgxfjyUPJQxhDGKMZA8lDyUMZw8lDGWPJQ8lDGcPJQxojyUPJQ8lDyUMag8lDyUPJQ8lDGuPJQ8lDyUPJQxrjyUPJQ8lDyUMa48lDyUPJQ8lDG0PJQ8lDyUPJQxujyUPJQ8lDyUMcA8lDyUOkg8lDWkMdIx2DpIPJQ1pDHSMdgxxjyUNaQx0jHYOkg8lDIyMdIx2DpIPJQxzDHSMdg6JDyUNaQx0jHYM3AyDjIIPJQ8lDNwMg4x3jyUPJQzcDIOMfY8lDyUM3AyDjIUPJQ8lDNwMg4yFDyUPJQzcDIOMfY8lDyUM3AyDjHkPJQ8lDNwMg4x6jyUPJQzcDIOMfA8lDyUM2oyDjIIPJQ8lDNwMg4x9jyUPJQzcDIOMfw8lDyUM3AyDjIUPJQ8lDNwMg4ySjyUPJQzcDIOMgI8lDyUM3AyDjIIPJQ8lDNwMg4yFDyUPJQ8lDyUMho8lDyUPJQ8lDIgPJQ8lDyUPJQyJjyUPJQyLDyUNaQ8lDI+Miw8lDIyPJQyPjI4PJQ1pDyUMj44LDyUMkQ8lDyUM3A8lDWkNaoyUDNwPJQ1hjWqMlAzcDyUNaQ1qjJQM2o8lDWkNaoyUDNwPJQ1pDWqMlAzajyUNaQ1qjJQM3A8lDJKNaoyUDN8PJQ1pDWqMlAyVjyUMlwyYjJoMm48lDyUPJQ8lDJ0PJQ8lDyUPJQ6SDyUMp48lDyUOkg8lDJ6PJQ8lDKAPJQyhjyUPJQ6SDyUMqQ8lDyUOiQ8lDKePJQ8lDpIPJQyjDyUPJQ6JDyUMp48lDyUOkg8lDKSPJQ8lDKYPJQynjyUPJQ6SDyUMqQ8lDyUMxYzHDL4MygzLjMWMxwy7DMoMy4zFjMcMxAzKDMuMxYzHDMQMygzLjMWMxwyqjMoMy4yyDMcMxAzKDMuMxYzHDKqMygzLjMWMxwysDMoMy4zFjMcMrYzKDMuMxYzHDLsMygzLjMWMxwyvDMoMy4zFjMcMyIzKDMuMxYzHDLCMygzLjLIMxwy+DMoMy4zFjMcMuwzKDMuMxYzHDLOMygzLjLmPJQzXjyUPJQy5jyUMto8lDyUMtQ8lDNePJQ8lDLmPJQy2jyUPJQy5jyUMuA8lDyUMuY8lDMQPJQ8lDMWMxwy7DMoMy4zFjMcMxAzKDMuMxYzHDLyMygzLjMWMxwzIjMoMy4zFjMcMyIzKDMuMxY8lDL4Mygy/jMWMxwzBDMoMy4zFjMcMwozKDMuMxYzHDMQMygzLjMWMxwzIjMoMy4zFjMcMyIzKDMuMxYzHDMiMygzLjM0PJQzOjyUPJQzQDyUM0Y8lDyUM0w8lDNSPJQ8lDNYPJQzXjyUPJQzcDyUM4I8lDyUM3A8lDNkPJQ8lDNwPJQzdjyUPJQzajyUM4I8lDyUM3A8lDNkPJQ8lDNqPJQzgjyUPJQzcDyUM3Y8lDyUM3w8lDOCPJQ8lDOgPJQzpjyUPJQzoDyUM4g8lDyUM6A8lDOOPJQ8lDOgPJQzmjyUPJQzoDyUM5Q8lDyUM6A8lDOmPJQ8lDOgPJQzmjyUPJQzrDyUM6Y8lDyUM6A8lDOyPJQ8lDOsPJQzpjyUPJQzrDyUM7I8lDyUM9A8lDPoM+4z9DO4PJQzvjPEM8oz0DyUM+gz7jP0M9A8lDPoM+4z9DPcPJQz6DPuM/Qz0DyUM9Yz7jP0M9w8lDPoM+4z9DPiPJQz6DPuM/Q23DQGNig8lDQSNtw0BjYuPJQ0EjbcNAY2RjyUNBI23DQGNkY8lDQSNtw0BjZGPJQ0EjbcNAY2LjyUNBI23DQGNhw8lDQSM/o0BjYoPJQ0EjbcNAY2LjyUNBI23DQGNjQ8lDQSNtw0BjYoPJQ0EjbcNAY2LjyUNBIz+jQGNig8lDQSNtw0BjYuPJQ0EjbcNAY2NDyUNBI23DQGNkY8lDQSNtw0BjYuPJQ0EjbcNAY2RjyUNBI23DQGNjo8lDQSNtw0BjQMPJQ0EjbcNAY2KDyUNBI23DQGNAA8lDQSNtw0BjZGPJQ0EjbcNAY0DDyUNBI0GDyUNB48lDyUNDY8lDQkPJQ8lDQ2PJQ0PDyUPJQ0NjyUNCo8lDyUNDY8lDQwPJQ8lDQ2PJQ0PDyUPJQ0bDyUNFQ8lDyUNGw8lDRaPJQ8lDRsPJQ0cjyUPJQ0bDyUNEI8lDyUNGw8lDRIPJQ8lDROPJQ0VDyUPJQ0bDyUNFo8lDyUNGw8lDRgPJQ8lDRsPJQ0ZjyUPJQ0bDyUNHI8lDyUNIQ8lDSWPJQ8lDSEPJQ0eDyUPJQ0hDyUNH48lDyUNIQ8lDSKPJQ8lDSQPJQ0ljyUPJQ05DTqNNg8lDyUNOQ06jTGPJQ8lDTkNOo08DyUPJQ05DTqNKI8lDyUNMA06jTwPJQ8lDTkNOo0ojyUPJQ05DTqNJw8lDyUNOQ06jSiPJQ8lDTkNOo08DyUPJQ05DTqNPA8lDyUNOQ06jSoPJQ8lDTANOo08DyUPJQ05DTqNKg8lDyUNOQ06jSuPJQ8lDTkNOo0tDyUPJQ05DTqNMY8lDyUNOQ06jS6PJQ8lDTANOo02DyUPJQ05DTqNMY8lDyUNOQ06jTMPJQ8lDTkNOo08DyUPJQ05DTqNNI8lDyUNOQ06jTYPJQ8lDTkNOo03jyUPJQ05DTqNN48lDyUNOQ06jTwPJQ8lDyUPJQ09jyUPJQ8lDyUNPw8lDyUNQI8lDUINQ41FDViNWg1PjyUPJQ1YjVoNUQ8lDyUNWI1aDVuPJQ8lDViNWg1bjyUPJQ1YjVoNW48lDyUNWI1aDVuPJQ8lDViNWg1GjyUPJQ1ODVoNW48lDyUNWI1aDUaPJQ8lDViNWg1IDyUPJQ1YjVoNSY8lDyUNWI1aDVEPJQ8lDViNWg1LDyUPJQ1YjVoNTI8lDyUNTg1aDU+PJQ8lDViNWg1RDyUPJQ1YjVoNUo8lDyUNWI1aDVuPJQ8lDViNWg1UDyUPJQ1YjVoNVY8lDyUNWI1aDVWPJQ8lDdmPJQ1XDyUPJQ1YjVoNW48lDyUNXQ1ejWAPJQ8lDWePJQ1pDWqNc41njyUNYY1qjXONZ48lDWkNao1zjWMPJQ1pDWqNc41njyUNaQ1qjXONYw8lDWkNao1zjWePJQ1kjWqNc41mDyUNaQ1qjXONZ48lDWkNao1zjWwPJQ1tjyUPJQ11DyUNew18jX4Nbw8lDXCNcg1zjXUPJQ17DXyNfg11DyUNew18jX4NeA8lDXsNfI1+DXUPJQ12jXyNfg14DyUNew18jX4NeY8lDXsNfI1+DYQPJQ1/jyUPJQ2EDyUNhY8lDyUNhA8lDYEPJQ8lDYQPJQ2CjyUPJQ2EDyUNhY8lDyUNkA8lDYoPJQ8lDZAPJQ2LjyUPJQ2QDyUNkY8lDyUNkA8lDYcPJQ8lDYiPJQ2KDyUPJQ2QDyUNi48lDyUNkA8lDY0PJQ8lDZAPJQ2OjyUPJQ2QDyUNkY8lDyUNlg8lDZqPJQ8lDZYPJQ2TDyUPJQ2WDyUNlI8lDyUNlg8lDZePJQ8lDZkPJQ2ajyUPJQ7UDayNqY8lDyUO1A2sjaUPJQ8lDtQNrI2uDyUPJQ7UDayNnY8lDyUOBQ2sja4PJQ8lDtQNrI2djyUPJQ7UDayNnA8lDyUO1A2sjZ2PJQ8lDtQNrI2uDyUPJQ7UDayNrg8lDyUO1A2sjZ8PJQ8lDgUNrI2uDyUPJQ7UDayNnw8lDyUO1A2sjaCPJQ8lDtQNrI2iDyUPJQ7UDayNpQ8lDyUO1A2sjaOPJQ8lDgUNrI2pjyUPJQ7UDayNpQ8lDyUO1A2sjaaPJQ8lDtQNrI2uDyUPJQ7UDayNqA8lDyUO1A2sjamPJQ8lDtQNrI2rDyUPJQ7UDayNqw8lDyUO1A2sja4PJQ8lDbEPJQ2vjyUPJQ2xDyUNso8lDyUNvQ8lDbQPJQ8lDbcPJQ6/DyUPJQ23DyUNtY8lDyUNtw8lDrePJQ8lDbcPJQ6/DyUPJQ23DyUNtY8lDyUNtw8lDrePJQ8lDbcPJQ66jyUPJQ29DyUOAg6eDyUNuI8lDboNu48lDb0PJQ39jp4PJQ2+jyUNwA3BjyUNww8lDgIOng8lDcSPJQ4CDp4PJQ3GDyUNx46eDyUN2Y3bDdgPJQ8lDdmN2w3SDyUPJQ3ZjdsN3I8lDyUN2Y3bDdyPJQ8lDdmN2w3cjyUPJQ3ZjdsN3I8lDyUN2Y3bDckPJQ8lDdCN2w3cjyUPJQ3ZjdsNyQ8lDyUN2Y3bDcqPJQ8lDdmN2w3MDyUPJQ3ZjdsN0g8lDyUN2Y3bDc2PJQ8lDdmN2w3PDyUPJQ3QjdsN2A8lDyUN2Y3bDdIPJQ8lDdmN2w3TjyUPJQ3ZjdsN3I8lDyUN2Y3bDdUPJQ8lDdmN2w3WjyUPJQ3ZjdsN1o8lDyUN2Y3bDdgPJQ8lDdmN2w3cjyUPJQ60jyUOtg8lDyUN348lDd4PJQ8lDd+PJQ3hDyUPJQ8BDyUOvw8lDyUPAQ8lDrePJQ8lDwEPJQ63jyUPJQ8BDyUOt48lDyUO9o8lDr8PJQ8lDwEPJQ66jyUPJQ8BDyUOvA8lDyUPAQ8lDr8PJQ8lDh6PJQ4dDeiPJQ3ijyUN5A3ljyUN5w8lDh0N6I8lDh6PJQ4gDeiPJQ4ejyUOIA3ojyUOGI8lDh0N6I8lDfYN9430jyUPJQ32DfeN9I8lDyUN9g33jfAPJQ8lDfYN9435DyUPJQ32DfeN+Q8lDyUN9g33jfAPJQ8lDfYN943qDyUPJQ32DfeN648lDyUN9g33je0PJQ8lDe6N9430jyUPJQ32DfeN8A8lDyUN9g33jfGPJQ8lDfYN9435DyUPJQ8lDyUOyA8lDyUN9g33jfMPJQ8lDfYN9430jyUPJQ32DfeN+Q8lDyUPJQ8lDfqPJQ8lDyUPJQ38DyUPJQ4AjyUOAg8lDyUOAI8lDf2PJQ8lDf8PJQ4CDyUPJQ4AjyUOAg8lDyUO1A8lDgmO1w7YjtQPJQ4DjtcO2I7UDyUOCY7XDtiOBQ8lDgmO1w7YjtQPJQ4JjtcO2I4FDyUOCY7XDtiO1A8lDgaO1w7YjggPJQ4JjtcO2I4LDyUODI4ODg+OEQ8lDhQPJQ8lDhKPJQ4UDyUPJQ4ejyUOHQ8lDyUOHo8lDhWPJQ8lDh6PJQ4gDyUPJQ4YjyUOHQ8lDyUOHo8lDhcPJQ8lDhiPJQ4dDyUPJQ4ejyUOGg8lDyUOG48lDh0PJQ8lDh6PJQ4gDyUPJQ4zjjUOLw44DjmOM441DiwOOA45jjOONQ4yDjgOOY4zjjUOMg44DjmOM441DiGOOA45jikONQ4yDjgOOY4zjjUOIY44DjmOM441DiMOOA45jjOONQ4kjjgOOY4zjjUOLA44DjmOM441DiYOOA45jjOONQ42jjgOOY4zjjUOJ444DjmOKQ41Di8OOA45jjOONQ4sDjgOOY4zjjUOKo44DjmOM48lDi8PJQ8lDjOPJQ4sDyUPJQ4pDyUOLw8lDyUOM48lDiwPJQ8lDjOPJQ4qjyUPJQ4zjyUOMg8lDyUOM441DiwOOA45jjOONQ4yDjgOOY4zjjUOLY44DjmOM441DjaOOA45jjOONQ42jjgOOY8lDyUOLw8lDyUOMI41DuYOOA45jjCONQ7ejjgOOY4zjjUOMg44DjmOM441DjaOOA45jjOONQ42jjgOOY4zjjUONo44DjmOOw8lDjyPJQ8lDyUPJQ4+DyUPJQ5CjyUORw8lDyUOQo8lDj+PJQ8lDkKPJQ5EDyUPJQ5BDyUORw8lDyUOQo8lDj+PJQ8lDkEPJQ5HDyUPJQ5CjyUORA8lDyUORY8lDkcPJQ8lDk6PJQ5QDyUPJQ5OjyUOSI8lDyUOTo8lDkoPJQ8lDk6PJQ5NDyUPJQ5OjyUOS48lDyUOTo8lDlAPJQ8lDk6PJQ5NDyUPJQ5RjyUOUA8lDyUOTo8lDlMPJQ8lDlGPJQ5QDyUPJQ5RjyUOUw8lDyUOVg8lDlwOXY8lDlYPJQ5cDl2PJQ5WDyUOVI5djyUOVg8lDlwOXY8lDlkPJQ5cDl2PJQ5WDyUOV45djyUOWQ8lDlwOXY8lDlqPJQ5cDl2PJQ8BDl8O/I8lDmCPAQ5fDvmPJQ5gjwEOXw7/jyUOYI8BDl8O/48lDmCPAQ5fDv+PJQ5gjwEOXw75jyUOYI8BDl8O9Q8lDmCO9o5fDvyPJQ5gjwEOXw75jyUOYI8BDl8O+A8lDmCPAQ5fDvyPJQ5gjwEOXw75jyUOYI72jl8O/I8lDmCPAQ5fDvmPJQ5gjwEOXw74DyUOYI8BDl8O/48lDmCPAQ5fDvmPJQ5gjwEOXw7/jyUOYI8BDl8O+w8lDmCPAQ5fDwQPJQ5gjwEOXw7+DyUOYI8BDl8O/48lDmCPAQ5fDwQPJQ5gjmaPJQ5iDyUPJQ5mjyUOaA8lDyUOZo8lDmOPJQ8lDmaPJQ5lDyUPJQ5mjyUOaA8lDyUOdA8lDm4PJQ8lDnQPJQ5vjyUPJQ50DyUOdY8lDyUOdA8lDmmPJQ8lDnQPJQ5rDyUPJQ5sjyUObg8lDyUOdA8lDm+PJQ8lDnQPJQ5xDyUPJQ50DyUOco8lDyUOdA8lDnWPJQ8lDnoPJQ5+jyUPJQ56DyUOdw8lDyUOeg8lDniPJQ8lDnoPJQ57jyUPJQ59DyUOfo8lDyUOkg6Tjo8PJQ8lDpIOk46KjyUPJQ6SDpOOlQ8lDyUOkg6TjoGPJQ8lDokOk46VDyUPJQ6SDpOOgY8lDyUOkg6TjoAPJQ8lDpIOk46BjyUPJQ6SDpOOlQ8lDyUOkg6TjpUPJQ8lDpIOk46DDyUPJQ6JDpOOlQ8lDyUOkg6TjoMPJQ8lDpIOk46EjyUPJQ6SDpOOhg8lDyUOkg6TjoqPJQ8lDpIOk46HjyUPJQ6JDpOOjw8lDyUOkg6TjoqPJQ8lDpIOk46MDyUPJQ6SDpOOlQ8lDyUOkg6Tjo2PJQ8lDpIOk46PDyUPJQ6SDpOOkI8lDyUOkg6TjpCPJQ8lDpIOk46VDyUPJQ6YDyUOlo8lDyUOmA8lDpmPJQ8lDpsPJQ6cjp4PJQ6wDrGOro8lDyUOsA6xjqiPJQ8lDrAOsY6zDyUPJQ6wDrGOsw8lDyUOsA6xjrMPJQ8lDrAOsY6zDyUPJQ6wDrGOn48lDyUOpw6xjrMPJQ8lDrAOsY6fjyUPJQ6wDrGOoQ8lDyUOsA6xjqKPJQ8lDrAOsY6ojyUPJQ6wDrGOpA8lDyUOsA6xjqWPJQ8lDqcOsY6ujyUPJQ6wDrGOqI8lDyUOsA6xjqoPJQ8lDrAOsY6zDyUPJQ6wDrGOq48lDyUOsA6xjq0PJQ8lDrAOsY6tDyUPJQ8lDyUOro8lDyUOsA6xjrMPJQ8lDrSPJQ62DyUPJQ69jyUOvw8lDyUOvY8lDrePJQ8lDr2PJQ63jyUPJQ69jyUOt48lDyUOuQ8lDr8PJQ8lDr2PJQ66jyUPJQ69jyUOvA8lDyUOvY8lDr8PJQ8lDsyOzg7LDyUPJQ7Mjs4Oyw8lDyUOzI7ODsUPJQ8lDsyOzg7PjyUPJQ7Mjs4Oz48lDyUOzI7ODsUPJQ8lDsyOzg7AjyUPJQ7Mjs4Owg8lDyUOw47ODssPJQ8lDsyOzg7FDyUPJQ7Mjs4Oxo8lDyUOzI7ODs+PJQ8lDyUPJQ7IDyUPJQ7Mjs4OyY8lDyUOzI7ODssPJQ8lDsyOzg7PjyUPJQ8lDyUO0Q8lDyUPJQ8lDtKPJQ8lDtQPJQ7VjtcO2I7aDyUO3Q8lDyUO248lDt0PJQ8lDuePJQ7mDyUPJQ7njyUO3o8lDyUO548lDukPJQ8lDuGPJQ7mDyUPJQ7njyUO4A8lDyUO4Y8lDuYPJQ8lDuePJQ7jDyUPJQ7kjyUO5g8lDyUO548lDukPJQ8lDuwPJQ7yDvOPJQ7sDyUO8g7zjyUO7A8lDuqO848lDuwPJQ7yDvOPJQ7vDyUO8g7zjyUO7A8lDu2O848lDu8PJQ7yDvOPJQ7wjyUO8g7zjyUPAQ8CjvyPJQ8FjwEPAo75jyUPBY8BDwKO/48lDwWPAQ8Cjv+PJQ8FjwEPAo7/jyUPBY8BDwKO+Y8lDwWPAQ8CjvUPJQ8FjvaPAo78jyUPBY8BDwKO+Y8lDwWPAQ8CjvgPJQ8FjwEPAo78jyUPBY8BDwKO+Y8lDwWO9o8CjvyPJQ8FjwEPAo75jyUPBY8BDwKO+A8lDwWPAQ8Cjv+PJQ8FjwEPAo75jyUPBY8BDwKO/48lDwWPAQ8CjvsPJQ8FjwEPAo8EDyUPBY8BDwKO/I8lDwWPAQ8Cjv4PJQ8FjwEPAo7/jyUPBY8BDwKPBA8lDwWPC48lDwcPJQ8lDwuPJQ8NDyUPJQ8LjyUPCI8lDyUPC48lDwoPJQ8lDwuPJQ8NDyUPJQ8ZDyUPEw8lDyUPGQ8lDxSPJQ8lDxkPJQ8ajyUPJQ8ZDyUPDo8lDyUPGQ8lDxAPJQ8lDxGPJQ8TDyUPJQ8ZDyUPFI8lDyUPGQ8lDxYPJQ8lDxkPJQ8XjyUPJQ8ZDyUPGo8lDyUPHw8lDyOPJQ8lDx8PJQ8cDyUPJQ8fDyUPHY8lDyUPHw8lDyCPJQ8lDyIPJQ8jjyUPJQAAQFuA7sAAQFuA7AAAQIWA40AAQHwA6EAAQFuA7YAAQFu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AFYAZQB0AIMAkQCgAK8AvgDNANwA6wD6AQkBGAEnATYAAP//ABUADAAbACoAOQBIAFcAZgB1AIQAkgChALAAvwDOAN0A7AD7AQoBGQEoATcAAP//ABUADQAcACsAOgBJAFgAZwB2AIUAkwCiALEAwADPAN4A7QD8AQsBGgEpATgAAP//ABUADgAdACwAOwBKAFkAaAB3AIYAlACjALIAwQDQAN8A7gD9AQwBGwEqATkBOmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmFhbHQHXmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmMyc2MHZmNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNhc2UHbGNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHcmNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHgmNjbXAHgmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRsaWcHjmRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGRub20HlGZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmZyYWMHmmxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxpZ2EHpGxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxudW0HqmxvY2wHsGxvY2wHtmxvY2wHvGxvY2wHwmxvY2wHyGxvY2wHzmxvY2wH1GxvY2wH2mxvY2wH4GxvY2wH5mxvY2wH7GxvY2wH8mxvY2wH+GxvY2wH/m51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG51bXIIBG9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9udW0ICm9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEG9yZG4IEHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHBudW0IGHNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNhbHQIHnNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNpbmYIJHNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNtY3AIKnNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHNzMDEIMHN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1YnMINnN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHN1cHMIPHRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQnRudW0IQgAAAAIAAAABAAAAAQAkAAAAAQAmAAAABgACAAMABAAFAAYABwAAAAQAAgADAAQABQAAAAEAJwAAAAEAGgAAAAMAGwAcAB0AAAABACgAAAABACAAAAABABEAAAABABUAAAABABQAAAABABIAAAABABMAAAABABAAAAABAAkAAAABAA8AAAABAAwAAAABAAsAAAABAAgAAAABAAoAAAABAA0AAAABAA4AAAABABkAAAABACMAAAACAB4AHwAAAAEAIQAAAAEAKQAAAAEAFwAAAAEAJQAAAAEAKgAAAAEAFgAAAAEAGAAAAAEAIgAtAFwG3hGaEkgSrhKuFAIUAhSsFNoVHhUeFUAVQBVAFUAVQBVUFcIV1hX8FhYWPBZKFlgWiBZmFnQWiBaWFt4XJhdIF2AXeBeQF64Z+BxUHUYdZh2OHY4iniM4AAEAAAABAAgAAgRCAh4C+wL8Av0C/gL/AwADAQMCAwMDBAMFAwYDBwMIAyIDIwMtAy4DLwMwAzEDMgNHA0gDSQNLA0wDTQNOA08DUANRA1IDUwNhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlQOWA5cDmAOZA5oDuwPBAvsC/AL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMiAyMDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzQDNQM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNHA0gDSQNKA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOVA5YDlwOYA5kDmgOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A8EDxgM2At0C3gPRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8EAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwTjBOUE5gTnBOgE6QTrBOoE7QTuBO8E8ATyBPME9AT1BPYE9wT4BN8E4AT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBZoFlQV9BZQFnAWdBZ4FgAWBBaEFhQWGBYcFowWlBaYFigWLBYwFjQWpBaoFqwWQBawFkQWSBZMFrQWuBa8FsAWxBbIFswW0BbUFtgW3BbgFuQX8Bf0F/gX/BgAGAQYCBgMGBAYFBjYGOAZgBmEGZgZnBmgGaQZwBjkGQgZDBkQGRQZGBkcGTwZQBlEGagZrBmwGbQZuBm8GuQa6BrsGvAbcBt4G3QcKBwsHDAcNBw4HDwcQBxEHEgcTBxQHFQcWBxcHGAcZBxoHGwccBx0HHgcfByAHIQciByMHJAdWByYHZgdnB2gHaQdqB2sHbAdtAAIAXgAgACgAAAAqAC4ACQBHAEgADgBSAFcAEABqAG0AFgBvAHYAGgCFAKgAIgCqALcARgC5AL4AVADfAN8AWgDlAOUAWwGmAbMAXAHNAc4AagHQAd0AbAHfAe4AegHxAfUAigH/AgIAjwIEAgsAkwINAi0AmwIvAj8AvAJBAkYAzQJQAmgA0wJuAm4A7AJzAnMA7QJ+An4A7gLbAtwA7wLfAvoA8QMJAyEBDQMkAywBJgMzAzsBLwM9A0YBOANRA1EBQgNUA18BQwOFA4UBTwObA7oBUAO8A8ABcAPCA9ABdQRmBGYBhARtBG8BhQRyBHUBiAR9BH0BjAR/BIEBjQSJBI0BkASTBJMBlQSYBJgBlgScBJwBlwSfBJ8BmASqBKoBmQS8BL8BmgTFBMYBngTLBM0BoATQBNABowTWBNYBpATYBNgBpQUGBQgBpgUKBQoBqQUNBREBqgUVBRYBrwUYBRgBsQUaBRoBsgUdBR0BswUgBSEBtAUkBScBtgUrBS0BugU1BTUBvQU4BTgBvgU8BTwBvwU/BT8BwAVJBUkBwQVdBWIBwgVmBWcByAVsBW4BygVxBXEBzQV5BXkBzgYGBg8BzwYlBiUB2QYnBicB2gYrBiwB2wYuBjIB3QY7BkEB4gZIBkkB6QZMBkwB6wZWBlsB7AavBq8B8gaxBrEB8wazBrMB9Aa1BrUB9QbKBssB9gbYBtgB+AbfBuoB+QbsBu8CBQbyBvwCCQcHBwgCFAdeB2UCFgADAAAAAQAIAAEJtAEyAmoCcgJ4An4ChAKKApAClgKcAqICqAKuArQCugLAAsYCzALSAtgC3gLkAuoC8AL2AvwDAgMIAw4DFAMaAyADJgMsAzIDOAM+A0QDSgNQA1YDXANiA2gDbgN0A3oDgAOGA4wDkgOYA54DpAOqA7ADtgO8A8IDyAPOA9QD2gPgA+YD7APyA/gD/gQEBAoEEAQWBBwEIgQoBC4ENAQ6BEAERgRMBFIEWAReBGQEagRwBHYEfASCBIgEjgSUBJoHdgSgBKYErASyBLgEvgTEBMwE0gTYBN4E5ATqBPAE9gT8BQIFCAUOBRQFGgUgBSYFLAUyBTgFPgVEBUoFUAVWBVwFYgVoBW4FdAV6BYAFhgWMBZIFmAWeBaQFqgWwBbYFvAXCBcgFzgXUBdoF4AXmBewF9AX6BgAGBgYMBhIGGAYeBiQGKgYwBjYGPAZCBkgGTgZUBloGYAZmBmwGcgZ4Bn4GhAaKBpAGlgacBqIGqAauBrQGugbABsYGzAbSBtgG3gbkBuoG8Ab2BvwHAgcIBw4HFAcaByAHJgcsBzIHOgdAB0YHTAdSB1gHXgdkB2oHcAd2B3wHggeIB44HlAeaB6IHqAeuB7QHugfAB8YHzAfSB9gH3gfkB+oH8Af2B/wIAggICA4IFAgaCCAIJggsCDIIOAg+CEQISghSCFgIXghkCGoIcgh4CH4IjgieCK4IvgjOCN4I7gj+CQ4JHgkkCSoJMAk2CTwJQglICU4JVAkeCSQJKgkwCTYJPAlCCUgJTglUCVoJXgliCWYJagluCXIJdgl6CX4JggmKCZAJlgmcCaIJqAmuAAMEZALfAPYAAgLgAPcAAgLhAPgAAgLiAPkAAgLjAPoAAgLkAPsAAgLlAPwAAgLmAP0AAgLnAP4AAgLoAP8AAgLpAQAAAgLqAQEAAgLrAQIAAgLsAQMAAgLtAQQAAgLuAQUAAgLvAQYAAgLwAQcAAgLxAQgAAgLyAQkAAgLzAQoAAgL0AQsAAgL1AQwAAgL2AQ0AAgL3AQ4AAgL4AQ8AAgL5ARAAAgL6AREAAgMJARIAAgMJARMAAgMKARQAAgMLARUAAgMMARYAAgMNARcAAgMOARgAAgMPARkAAgMQARoAAgMRARsAAgMSARwAAgMTAR0AAgMUAR4AAgMVAR8AAgMWASAAAgMXASEAAgMYASIAAgMZASMAAgMaASQAAgMbASUAAgMcASYAAgMdAScAAgMeASgAAgMfASkAAgMgASoAAgMkASsAAgMlASwAAgMmAS0AAgMnAS4AAgMoAS8AAgMpATAAAgMqATEAAgMrATIAAgMsATMAAgMzATQAAgNBATUAAgM1ATYAAgM3ATgAAgM4ATkAAgM5AToAAgM6ATsAAgM7ATwAAgM8AT0AAgM9AT4AAgM+AT8AAgM/AUAAAgNAAUEAAgNCAUIAAgNDAUMAAgNEAUQAAgNFAUUAAgNGAUYAAgNRAUcAAgNUAUgAAgNVAUkAAgNWAUoAAgNdAUsAAgNXAUwAAgNYAU0AAgNZAU4AAgNaAU8AAgNbAVAAAgNcAVEAAgNdAVIAAgNeAVMAAgNfAVQAAgOFAVUAAgC6A5QAAgMhAVYAAgObAVcAAgOcAVgAAgOdAVkAAwDEA54BWgACA58BWwACA6EBXAACA6IBXQACA6MBXgACA6QBXwACA6UBYAACA6YBYQACA6cBYgACA6gBYwACA6kBZAACA6oBZQACA6sBZgACA6wBZwACA60BaAACA64BaQACA68BagACA7ABawACA7EBbAACA7IBbQACA7MBbgACA7QBbwACA7UBcAACA7YBcQACA7cBcgACA7gBcwACA7kBdAACA7oBdQACA7wBdgACA70BdwACA74BeAACA78BeQACA8ABegACA8IBewACA8MBfAACA8QBfQACA8UBfgACA8YBfwACA8cBgAACA8gBgQACA8kBggACA8oBgwACA8sBhAACA8wBhQACA80BhgACA84BhwACA88BiAACA9ABiQACAzYBNwADBGQC3wJ/AAIC4AKAAAIC4QKBAAIC4gKCAAIC4wKDAAIC5AKEAAIC5QKFAAIC5gKGAAIC5wKHAAIC6AKIAAIC6QKJAAIC6gKKAAIC6wKLAAIC7AKMAAIC7QKNAAIC7gKOAAIC7wKPAAIC8AKQAAIC8QKRAAIC8gKSAAIC8wKTAAIC9AKUAAIC9QKVAAIC9gKWAAIC9wKXAAIC+AKYAAIC+QKZAAIC+gKaAAIDCQKbAAIDCgKcAAIDCwKdAAIDDAKeAAIDDQKfAAIDDgKgAAIDDwKhAAIDEAKiAAIDEQKjAAIDEgKkAAIDEwKlAAIDFAKmAAIDFQKnAAIDFgKoAAIDFwKpAAIDGAKqAAIDGQKrAAIDGgKsAAIDGwKtAAIDHAKuAAIDHQKvAAIDHgKwAAIDHwKxAAIDIAKyAAIDIQKzAAIDJAK0AAMB3wHmAzMAAgHwA0UAAgNLArUAAgNMArYAAgNNArcAAgNOArgAAgNPArkAAgNQAroAAgNRArsAAgNSArwAAgNTAr0AAgRlA2AAAgOCAr4AAgJCA5QAAgObAr8AAgOcAsAAAgOdAsEAAwJMA54CwgACA58CwwACA6ACxAACA6ECxQACA6ICxgACA7wCxwACA70CyAACA74CyQACA78CygACA8ACywACA8ICzAACA8MCzQACA8QCzgACA8UCzwACA8cC0AACA8gC0QACA8kC0gACA8oC0wACA8sC1AACA8wC1QACA80C1gACA84C1wACA88C2AACA9AC2QACBNwE5AACBN0E7AACBN4E8QACBOIE4QACBX4FlgADBX8FlwWbAAIFggWfAAIFgwWgAAIFhAWiAAIFiAWYAAMFiQWZBaQAAgWOBacAAgWPBagABwXyBdQGEAYGBfwF3gXKAAcF8wXVBhEGBwX9Bd8FywAHBfQF1gYSBggF/gXgBcwABwX1BdcGEwYJBf8F4QXNAAcF9gXYBhQGCgYABeIFzgAHBfcF2QYVBgsGAQXjBc8ABwX4BdoGFgYMBgIF5AXQAAcF+QXbBhcGDQYDBeUF0QAHBfoF3AYYBg4GBAXmBdIABwX7Bd0GGQYPBgUF5wXTAAIFwAXoAAIFwQXpAAIFwgXqAAIFwwXrAAIFxAXsAAIFxQXtAAIFxgXuAAIFxwXvAAIFyAXwAAIFyQXxAAEFygABBcsAAQXMAAEFzQABBc4AAQXPAAEF0AABBdEAAQXSAAEF0wADBjsGOQY3AAIGGgY6AAIGYgZcAAIGYwZdAAIGZAZeAAIGZQZfAAIHJQdVAAIHJwdXAAIAKgAEAB8AAAApACkAHAAvAEYAHQBJAFEANQBYAGkAPgBuAG4AUAB3AIQAUQCpAKkAXwC4ALgAYAC/AN4AYQDgAOQAgQDmAPUAhgGKAaUAlgG0AcwAsgHPAc8AywHeAd4AzAHvAe8AzQH2Af4AzgIMAgwA1wIuAi4A2AJAAkAA2QJIAk8A2gJpAm0A4gJvAnIA5wJ0An0A6wRsBGwA9QR4BHgA9gSCBIIA9wSpBKkA+AUJBQkA+QUMBQwA+gUSBRQA+wUcBRwA/gUfBR8A/wUpBSoBAAXABdMBAgXeBfEBFgYmBiYBKgY0BjQBKwZSBlUBLAcGBwYBMAcJBwkBMQAGAAAABAAOACAAbgCAAAMAAAABACYAAQA+AAEAAAArAAMAAAABABQAAgAcACwAAQAAACsAAQACAd4B7wACAAIG/gcAAAAHAgcJAAMAAQAPBt8G4wblBucG6gbsBu0G7wbwBvIG9gb6BvsG/Ab9AAMAAQB+AAEAfgAAAAEAAAArAAMAAQASAAEAbAAAAAEAAAArAAIABAAEAYkAAARmBQUBhgW6BbsCJgW+Bb8CKAAGAAAAAgAKABwAAwAAAAEANAABACQAAQAAACsAAwABABIAAQAiAAAAAQAAACsAAgACBwoHJwAAB2YHbQAeAAIABgbfBuoAAAbsBu8ADAbyBvwAEAcGBwYAGwcIBwkAHAdeB2UAHgAEAAAAAQAIAAEBKgAPACQAPgBIAFIAZABuAHgAkgCsAMYA0ADaAOwA9gEQAAMACAAOABQG4AACBuUG4QACBucG4gACBvYAAQAEBuQAAgb2AAEABAbmAAIG9gACAAYADAboAAIG4wbpAAIG9gABAAQG7gACBuMAAQAEBvEAAgbnAAMACAAOABQG8wACBt8G9AACBucG9QACBvYAAwAIAA4AFAb3AAIG3wb4AAIG5Qb5AAIG5wADAAgADgAUBwsAAgcQBwwAAgcSBw0AAgceAAEABAcPAAIHHgABAAQHEQACBx4AAgAGAAwHEwACBw4HFAACBx4AAQAEBxgAAgcOAAMACAAOABQHGwACBwoHHAACBxIHHQACBx4AAwAIAA4AFAcfAAIHCgcgAAIHEAchAAIHEgABAA8G3wbjBuUG5wbtBvAG8gb2BwoHDgcQBxIHFwcaBx4ABAAAAAEACAABAJYABAAOADAAUgB0AAQACgAQABYAHAdjAAIG5QdiAAIG5wdlAAIG8gdkAAIG+gAEAAoAEAAWABwHXwACBuUHXgACBucHYQACBvIHYAACBvoABAAKABAAFgAcB2sAAgcQB2oAAgcSB20AAgcaB2wAAgciAAQACgAQABYAHAdnAAIHEAdmAAIHEgdpAAIHGgdoAAIHIgABAAQG7AbvBxYHGQAEAAAAAQAIAAEAHgACAAoAFAABAAQA9QACAGgAAQAEAn4AAgHvAAEAAgBaAeAABgAAAAIACgAkAAMAAQAUAAEALgABABQAAQAAACsAAQABAfYAAwABABoAAQAUAAEAGgABAAAALAABAAEGJgABAAEAbQABAAAAAQAIAAIADgAEALoAxAJCAkwAAQAEALgAwwJAAksAAQAAAAEACAABAAYACAABAAEB3gABAAAAAQAIAAIANAAXBNwE3QTeBX0FfgV/BYAFgQWCBYMFhAWFBYYFhwWIBYkFigWLBYwFjQWOBY8FkAABABcEbAR4BIIFCAUJBQwFEAURBRIFEwUUBRYFGAUaBRwFHwUkBSUFJgUnBSkFKgU1AAEAAAABAAgAAQAGAIoAAQABBQoAAQAAAAEACAACABAABQWVBZYFlwWYBZkAAQAFBQcFCQUMBRwFHwABAAAAAQAIAAIACgACBOIFkwABAAIEqQVJAAEAAAABAAgAAgAQAAUE3wTgBOEFkQWSAAEABQScBJ8EqQU8BT8AAQAAAAEACAABANAAMgABAAAAAQAIAAEAwgAUAAEAAAABAAgAAQC0AFAAAQAAAAEACAABAKYAPAABAAAAAQAIAAEABv/mAAEAAQY0AAEAAAABAAgAAQCEAEYABgAAAAIACgAiAAMAAQASAAEANAAAAAEAAAAsAAEAAQYaAAMAAQASAAEAHAAAAAEAAAAsAAIAAQX8BgUAAAACAAEGBgYPAAAABgAAAAIACgAkAAMAAQAsAAEAEgAAAAEAAAAsAAEAAgAEAYoAAwABABIAAQAcAAAAAQAAACwAAgABBcAFyQAAAAEAAgCEAgwABAAAAAEACAABABQAAQAIAAEABAbYAAMCDAYuAAEAAQB5AAEAAAABAAgAAQAG//YAAgABBcoF0wAAAAEAAAABAAgAAQAG/+IAAgABBd4F8QAAAAEAAAABAAgAAQAGAB4AAgABBcAF0wAAAAEAAAABAAgAAQAGAAoAAgACBcAFyQAABd4F5wAKAAEAAAABAAgAAgIUAQcC3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8DAAMBAwIDAwMJAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwNBAzUDNwM4AzkDOgM7AzwDPQM+Az8DQANCA0MDRANFA0YDRwNIA0kDSwNRA0wDTQNOA08DUANRA1IDUwNUA1UDVgNdA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgMhA5sDnAOdA54DnwOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0AM2BmAGYQZmBmcGaAZpBnAGYgZjBmQGZQZqBmsGbAZtBm4GbwbeB1UHVgdXAAIABwAEAPUAAAYrBiwA8gYuBjIA9AZSBlsA+QbLBssBAwcGBwcBBAcJBwkBBgABAAAAAQAIAAICFAEHAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AwADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPDA8QDxQPGA8cDyAPJA8oDywPMA80DzgPPA9ADNgZgBmEGZgZnBmgGaQZwBmIGYwZkBmUGagZrBmwGbQZuBm8G3gdVB1YHVwACAAoBigHvAAAB8QICAGYCBAJGAHgCSAJ+ALsGKwYsAPIGLgYyAPQGUgZbAPkGywbLAQMHBgcHAQQHCQcJAQYAAQAAAAEACAACAIAAPQY2BjcGOAY6BjkGQgZDBkQGRQZGBkcGTwZQBlEGXAZdBl4GXwa5BroGuwa8BtwHCgcLBwwHDQcOBw8HEAcRBxIHEwcUBxUHFgcXBxgHGQcaBxsHHAcdBx4HHwcgByEHIgcjByQHJQcmBycHZgdnB2gHaQdqB2sHbAdtAAIAEQYlBicAAAY0BjQAAwY7BkEABAZIBkkACwZMBkwADQZSBlUADgavBq8AEgaxBrEAEwazBrMAFAa1BrUAFQbKBsoAFgbfBuoAFwbsBu8AIwbyBvwAJwcGBwYAMgcIBwkAMwdeB2UANQAEAAAAAQAIAAEAEgABAAgAAQAEAtoAAgHYAAEAAQDAAAQAAAABAAgAAQAaAAEACAACAAYADALbAAIB3gLcAAIB9gABAAEBzwABAAAAAQAIAAIDlgHIAPYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJATcCfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLdAt4D0QPSA9MD1APVA9YD1wPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPkA+UD5gPnA+gD6QPqA+sD7APtA+4D7wPwA/ED8gPzA/QD9QP2A/cD+AP5A/oD+wP8A/0D/gP/BAAEAQQCBAMEBAQFBAYEBwQIBAkECgQLBAwEDQQOBA8EEAQRBBIEEwQUBBUEFgQXBBgEGQQaBBsEHAQdBB4EHwQgBCEEIgQjBCQEJQQmBCcEKAQpBCoEKwQsBC0ELgQvBDAEMQQyBDMENAQ1BDYENwQ4BDkEOgQ7BDwEPQQ+BD8EQARBBEIEQwREBEUERgRHBEgESQRKBEsETARNBE4ETwRQBFEEUgRTBFQEVQRWBFcEWARZBFoEWwRcBF0EXgRfBGAEYQRiBGME4wTkBOUE5gTnBOgE6QTrBOoE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBZoFmwWcBZ0FngWfBaAFogWhBaMFpAWlBaYFpwWoBakFqgWrBawFrQWuBa8FsAWxBbIFswW0BbUFtgW3BbgFuQbdAAIAPQAEAB8AAAApACkAHAAvAEYAHQBJAFEANQBYAGkAPgBuAG4AUAB3AIMAUQCpAKkAXgC/AN4AXwDgAOQAfwDmAPUAhAGKAaUAlAG0AcwAsAHPAc8AyQH2Af4AygIuAi4A0wJIAk8A1AJpAm0A3AJvAnIA4QJ0An0A5QLbAtwA7wLfAvoA8QMJAyEBDQMkAywBJgMzAzsBLwM9A0YBOANRA1EBQgNUA18BQwOFA4UBTwObA7oBUAO8A8ABcAPCA9ABdQRmBGYBhARsBG8BhQRyBHUBiQR4BHgBjQR9BH0BjgR/BIIBjwSJBI0BkwSTBJMBmASYBJgBmQSqBKoBmgS8BL8BmwTFBMYBnwTLBM0BoQTQBNABpATWBNYBpQTYBNgBpgUGBQYBpwUMBQ8BqAUSBRUBrAUdBR0BsAUfBSEBsQUpBS0BtAU4BTgBuQVdBWIBugVmBWcBwAVsBW4BwgVxBXEBxQV5BXkBxgbYBtgBxwABAAAAAQAIAAIAWAApAd8B8AY7BwoHCwcMBw0HDgcPBxAHEQcSBxMHFAcVBxYHFwcYBxkHGgcbBxwHHQceBx8HIAchByIHIwckByUHJgcnB2YHZwdoB2kHagdrB2wHbQACAAkB3gHeAAAB7wHvAAEGJgYmAAIG3wbqAAMG7AbvAA8G8gb8ABMHBgcGAB4HCAcJAB8HXgdlACEAAQAAAAEACAACACQADwRkBGUEZARlBfwF/QX+Bf8GAAYBBgIGAwYEBgUGOQABAA8ABACEAYoCDAYGBgcGCAYJBgoGCwYMBg0GDgYPBiYAAA==) format(\"truetype\")}@font-face{font-weight:normal;font-family:\"tick42-icons\";font-style:normal;src:url(data:font/ttf;base64,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) format(\"truetype\")}[class^=\"icon-\"],[class*=\" icon-\"]{font-weight:normal;font-family:\"tick42-icons\";font-style:normal;font-variant:normal;line-height:1;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tick42-custom-icon i{color:var(--t42-link-color)}.tick42-custom-icon img{display:block}.tick42-custom-icon.disabled i,.tick42-custom-icon:disabled i{color:var(--t42-content-color-disabled)}i.disabled,.disabled i{color:var(--t42-content-color-disabled)}.icon-size-12 i{font-size:0.75rem}.icon-size-12 i,.icon-size-12 img{width:0.75rem;height:0.75rem}.icon-size-14 i{font-size:0.875rem}.icon-size-14 i,.icon-size-14 img{width:0.875rem;height:0.875rem}.icon-size-24 i{font-size:1.5rem}.icon-size-24 i,.icon-size-24 img{width:1.5rem;height:1.5rem}.icon-size-16 i,.icon-size-16 img{width:1rem;height:1rem}.icon-size-16 i{font-size:1rem}.icon-size-32 i,.icon-size-32 img{width:2rem;height:2rem}.icon-size-32 i{font-size:2rem}.icon-size-48 i,.icon-size-48 img{width:3rem;height:3rem}.icon-size-48 i{font-size:3rem}.icon-size-64 i,.icon-size-64 img{width:4rem;height:4rem}.icon-size-64 i{font-size:4rem}.icon-size-80 i,.icon-size-80 img{width:5rem;height:5rem}.icon-size-80 i{font-size:5rem}.icon-size-96 i,.icon-size-96 img{width:6rem;height:6rem}.icon-size-96 i{font-size:6rem}.icon-size-112 i,.icon-size-112 img{width:7rem;height:7rem}.icon-size-112 i{font-size:7rem}.icon-size-128 i,.icon-size-128 img{width:8rem;height:8rem}.icon-size-128 i{font-size:8rem}.icon-primary i::before{color:#1c89ea}.icon-secondary i::before{color:#616161}.icon-success i::before{color:#43a047}.icon-info i::before{color:#469eb9}.icon-warning i::before{color:#f9a825}.icon-danger i::before{color:#ff511f}.icon-light i::before{color:#616161}.icon-dark i::before{color:#616161}.icon-dev-tools::before{content:\"\\e901\"}.icon-interop::before{content:\"\\e900\"}.icon-mail::before{content:\"\\e800\"}.icon-attention::before{content:\"\\e801\"}.icon-print::before{content:\"\\e802\"}.icon-picture::before{content:\"\\e803\"}.icon-thumbs-up::before{content:\"\\e804\"}.icon-thumbs-down::before{content:\"\\e805\"}.icon-lock::before{content:\"\\e806\"}.icon-globe::before{content:\"\\e807\"}.icon-calendar::before{content:\"\\e808\"}.icon-location::before{content:\"\\e809\"}.icon-briefcase::before{content:\"\\e80a\"}.icon-export::before{content:\"\\e80b\"}.icon-play::before{content:\"\\e80c\"}.icon-stop::before{content:\"\\e80d\"}.icon-record::before{content:\"\\e80e\"}.icon-pause::before{content:\"\\e80f\"}.icon-to-end::before{content:\"\\e810\"}.icon-to-start::before{content:\"\\e811\"}.icon-check::before{content:\"\\e812\"}.icon-cancel::before{content:\"\\e813\"}.icon-fast-forward::before{content:\"\\e814\"}.icon-fast-backward::before{content:\"\\e815\"}.icon-attention-circled::before{content:\"\\e816\"}.icon-bell::before{content:\"\\e817\"}.icon-chart-bar::before{content:\"\\e818\"}.icon-phone::before{content:\"\\e819\"}.icon-doc-add::before{content:\"\\e81a\"}.icon-layout::before{content:\"\\e81b\"}.icon-dot::before{content:\"\\e81c\"}.icon-dot-2::before{content:\"\\e81d\"}.icon-dot-3::before{content:\"\\e81e\"}.icon-resize-full-1::before{content:\"\\e81f\"}.icon-resize-small-1::before{content:\"\\e820\"}.icon-checkbox::before{content:\"\\e821\"}.icon-cancel-circled::before{content:\"\\e822\"}.icon-03-context-viewer::before{content:\"\\e823\"}.icon-volume-off-1::before{content:\"\\e824\"}.icon-volume::before{content:\"\\e825\"}.icon-headphones-1::before{content:\"\\e826\"}.icon-performance-report::before{content:\"\\e827\"}.icon-pause-1::before{content:\"\\e828\"}.icon-volume-up-1::before{content:\"\\e829\"}.icon-volume-down-1::before{content:\"\\e82a\"}.icon-trash-empty::before{content:\"\\e839\"}.icon-resize-small::before{content:\"\\e83b\"}.icon-resize-full::before{content:\"\\e83c\"}.icon-doc::before{content:\"\\e83d\"}.icon-cog::before{content:\"\\e83e\"}.icon-wrench::before{content:\"\\e83f\"}.icon-resize-vertical::before{content:\"\\e840\"}.icon-resize-horizontal::before{content:\"\\e841\"}.icon-edit::before{content:\"\\e842\"}.icon-pencil-1::before{content:\"\\e843\"}.icon-cw-2::before{content:\"\\e844\"}.icon-ccw-1::before{content:\"\\e845\"}.icon-arrows-cw-1::before{content:\"\\e847\"}.icon-th-large::before{content:\"\\e848\"}.icon-th::before{content:\"\\e849\"}.icon-spin5::before{content:\"\\e84a\"}.icon-spin6::before{content:\"\\e84b\"}.icon-spin4::before{content:\"\\e84c\"}.icon-spin3::before{content:\"\\e84d\"}.icon-spin2::before{content:\"\\e84e\"}.icon-spin1::before{content:\"\\e84f\"}.icon-pin::before{content:\"\\e850\"}.icon-trading-controls::before{content:\"\\e856\"}.icon-icon-coverage::before{content:\"\\e857\"}.icon-taxes::before{content:\"\\e858\"}.icon-credit::before{content:\"\\e859\"}.icon-checkbox-checked::before{content:\"\\e85a\"}.icon-checkbox-indeterminate::before{content:\"\\e85b\"}.icon-radio::before{content:\"\\e85c\"}.icon-radio-choose::before{content:\"\\e85d\"}.icon-arrow-up-down::before{content:\"\\e85e\"}.icon-arrow-double-left::before{content:\"\\e85f\"}.icon-arrow-double-right::before{content:\"\\e860\"}.icon-floppy::before{content:\"\\e861\"}.icon-logout::before{content:\"\\e862\"}.icon-mail-1::before{content:\"\\e864\"}.icon-search-1::before{content:\"\\e865\"}.icon-plus-1::before{content:\"\\e866\"}.icon-minus-1::before{content:\"\\e867\"}.icon-cancel-1::before{content:\"\\e868\"}.icon-ok::before{content:\"\\e869\"}.icon-th-list::before{content:\"\\e86a\"}.icon-help-circled::before{content:\"\\e86b\"}.icon-info-circled::before{content:\"\\e86c\"}.icon-home::before{content:\"\\e86d\"}.icon-link-1::before{content:\"\\e86e\"}.icon-attach-1::before{content:\"\\e86f\"}.icon-lock-open-1::before{content:\"\\e870\"}.icon-eye::before{content:\"\\e871\"}.icon-eye-off::before{content:\"\\e872\"}.icon-tag::before{content:\"\\e873\"}.icon-tags::before{content:\"\\e874\"}.icon-bookmark::before{content:\"\\e875\"}.icon-download-1::before{content:\"\\e876\"}.icon-upload-1::before{content:\"\\e877\"}.icon-forward-1::before{content:\"\\e878\"}.icon-down-dir::before{content:\"\\e879\"}.icon-up-dir::before{content:\"\\e87a\"}.icon-left-dir::before{content:\"\\e87b\"}.icon-right-dir::before{content:\"\\e87c\"}.icon-left-open-1::before{content:\"\\e87d\"}.icon-down-open-1::before{content:\"\\e87e\"}.icon-right-open-1::before{content:\"\\e87f\"}.icon-up-open-1::before{content:\"\\e880\"}.icon-down-big::before{content:\"\\e881\"}.icon-left-big::before{content:\"\\e882\"}.icon-right-big::before{content:\"\\e883\"}.icon-up-big::before{content:\"\\e884\"}.icon-asterisk::before{content:\"\\e885\"}.icon-check-1::before{content:\"\\e886\"}.icon-tick42-icon-monochrome::before{content:\"\\e887\"}.icon-task-manager::before{content:\"\\e888\"}.icon-context-viewer::before{content:\"\\e889\"}.icon-help-2::before{content:\"\\e88a\"}.icon-star-empty-1::before{content:\"\\e88b\"}.icon-star-full::before{content:\"\\e902\"}.icon-move::before{content:\"\\f047\"}.icon-link-ext::before{content:\"\\f08e\"}.icon-check-empty::before{content:\"\\f096\"}.icon-bookmark-empty::before{content:\"\\f097\"}.icon-filter::before{content:\"\\f0b0\"}.icon-resize-full-alt::before{content:\"\\f0b2\"}.icon-docs::before{content:\"\\f0c5\"}.icon-menu-1::before{content:\"\\f0c9\"}.icon-table::before{content:\"\\f0ce\"}.icon-columns::before{content:\"\\f0db\"}.icon-sort::before{content:\"\\f0dc\"}.icon-sort-down::before{content:\"\\f0dd\"}.icon-sort-up::before{content:\"\\f0de\"}.icon-mail-alt::before{content:\"\\f0e0\"}.icon-sitemap::before{content:\"\\f0e8\"}.icon-paste::before{content:\"\\f0ea\"}.icon-exchange::before{content:\"\\f0ec\"}.icon-download-cloud::before{content:\"\\f0ed\"}.icon-upload-cloud::before{content:\"\\f0ee\"}.icon-suitcase-1::before{content:\"\\f0f2\"}.icon-bell-alt::before{content:\"\\f0f3\"}.icon-doc-text-1::before{content:\"\\f0f6\"}.icon-plus-squared::before{content:\"\\f0fe\"}.icon-angle-double-left::before{content:\"\\f100\"}.icon-angle-double-right::before{content:\"\\f101\"}.icon-angle-double-up::before{content:\"\\f102\"}.icon-angle-double-down::before{content:\"\\f103\"}.icon-angle-left::before{content:\"\\f104\"}.icon-angle-right::before{content:\"\\f105\"}.icon-angle-up::before{content:\"\\f106\"}.icon-angle-down::before{content:\"\\f107\"}.icon-laptop::before{content:\"\\f109\"}.icon-circle-empty::before{content:\"\\f10c\"}.icon-quote-left::before{content:\"\\f10d\"}.icon-quote-right::before{content:\"\\f10e\"}.icon-spinner::before{content:\"\\f110\"}.icon-circle::before{content:\"\\f111\"}.icon-reply-1::before{content:\"\\f112\"}.icon-folder-empty::before{content:\"\\f114\"}.icon-folder-open-empty::before{content:\"\\f115\"}.icon-terminal::before{content:\"\\f120\"}.icon-code::before{content:\"\\f121\"}.icon-reply-all-1::before{content:\"\\f122\"}.icon-direction::before{content:\"\\f124\"}.icon-fork::before{content:\"\\f126\"}.icon-unlink::before{content:\"\\f127\"}.icon-help::before{content:\"\\f128\"}.icon-info::before{content:\"\\f129\"}.icon-attention-alt::before{content:\"\\f12a\"}.icon-mic::before{content:\"\\f130\"}.icon-mute::before{content:\"\\f131\"}.icon-calendar-empty::before{content:\"\\f133\"}.icon-lock-open-alt::before{content:\"\\f13e\"}.icon-ellipsis::before{content:\"\\f141\"}.icon-ellipsis-vert::before{content:\"\\f142\"}.icon-minus-squared::before{content:\"\\f146\"}.icon-ok-squared::before{content:\"\\f14a\"}.icon-link-ext-alt::before{content:\"\\f14c\"}.icon-expand-right::before{content:\"\\f152\"}.icon-euro::before{content:\"\\f153\"}.icon-dollar::before{content:\"\\f155\"}.icon-doc-inv::before{content:\"\\f15b\"}.icon-sort-name-up::before{content:\"\\f15d\"}.icon-sort-name-down::before{content:\"\\f15e\"}.icon-sort-alt-up::before{content:\"\\f160\"}.icon-sort-alt-down::before{content:\"\\f161\"}.icon-sort-number-up::before{content:\"\\f162\"}.icon-sort-number-down::before{content:\"\\f163\"}.icon-down::before{content:\"\\f175\"}.icon-up::before{content:\"\\f176\"}.icon-left::before{content:\"\\f177\"}.icon-right::before{content:\"\\f178\"}.icon-cube::before{content:\"\\f1b2\"}.icon-cubes::before{content:\"\\f1b3\"}.icon-database::before{content:\"\\f1c0\"}.icon-file-pdf::before{content:\"\\f1c1\"}.icon-file-word::before{content:\"\\f1c2\"}.icon-file-excel::before{content:\"\\f1c3\"}.icon-file-powerpoint::before{content:\"\\f1c4\"}.icon-file-image::before{content:\"\\f1c5\"}.icon-file-archive::before{content:\"\\f1c6\"}.icon-file-audio::before{content:\"\\f1c7\"}.icon-file-video::before{content:\"\\f1c8\"}.icon-file-code::before{content:\"\\f1c9\"}.icon-circle-thin::before{content:\"\\f1db\"}.icon-sliders::before{content:\"\\f1de\"}.icon-share::before{content:\"\\f1e0\"}.icon-wifi::before{content:\"\\f1eb\"}.icon-bell-off::before{content:\"\\f1f6\"}.icon-bell-off-empty::before{content:\"\\f1f7\"}.icon-copyright::before{content:\"\\f1f9\"}.icon-chart-area::before{content:\"\\f1fe\"}.icon-chart-line::before{content:\"\\f201\"}.icon-toggle-off::before{content:\"\\f204\"}.icon-toggle-on::before{content:\"\\f205\"}.icon-user-plus::before{content:\"\\f234\"}.icon-user-times::before{content:\"\\f235\"}.icon-clone::before{content:\"\\f24d\"}.icon-hourglass-o::before{content:\"\\f250\"}.icon-hourglass-1::before{content:\"\\f251\"}.icon-hourglass-2::before{content:\"\\f252\"}.icon-hourglass-3::before{content:\"\\f253\"}.icon-calendar-plus-o::before{content:\"\\f271\"}.icon-calendar-minus-o::before{content:\"\\f272\"}.icon-calendar-times-o::before{content:\"\\f273\"}.icon-calendar-check-o::before{content:\"\\f274\"}.icon-hashtag::before{content:\"\\f292\"}.icon-low-vision::before{content:\"\\f2a8\"}.icon-envelope-open-o::before{content:\"\\f2b7\"}.icon-address-book-o::before{content:\"\\f2ba\"}.icon-user-o::before{content:\"\\f2c0\"}.icon-window-maximize::before{content:\"\\f2d0\"}.icon-window-minimize::before{content:\"\\f2d1\"}.icon-window-restore::before{content:\"\\f2d2\"}.icon-window-close::before{content:\"\\f2d3\"}.icon-window-close-o::before{content:\"\\f2d4\"}.icon-app::before{content:\"\\e903\"}.icon-download-arrow::before{content:\"\\e904\"}.icon-logo::before{content:\"\\e905\"}.icon-feedback::before{content:\"\\e906\"}.icon-action::before{content:\"\\e907\"}.icon-swimlane::before{content:\"\\e908\"}div.ag-dnd-ghost{border-color:transparent;border-radius:0.25rem;color:var(--white);font-size:0.75rem;font-family:inherit;line-height:inherit;background-color:var(--primary);cursor:default}div .ag-dnd-ghost-icon{display:flex;float:none;padding:0 0.25rem 0 0}div .ag-dnd-ghost-icon .ag-icon{background-color:var(--white)}.ag-tick42{padding-top:0}.ag-tick42 a{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:border;border-bottom:0.063rem dashed var(--dark);color:var(--t42-content-color)}.ag-tick42 a:hover{text-decoration:none}.ag-tick42 .ag-filter-body{margin:0}.ag-tick42 input{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:border;padding:0 0.5rem;border:var(--t42-border);color:var(--t42-content-color);line-height:2rem;background-color:var(--t42-input-bg)}.ag-tick42 input:focus{border-color:var(--primary);outline:0}.ag-tick42 input.ag-column-name-filter{margin-left:0.5rem}.ag-tick42 .ag-input-wrapper{padding:0.25rem}.ag-tick42 .ag-input-wrapper.ag-checkbox-input-wrapper{padding:0}.ag-tick42 .ag-cell-wrapper.ag-row-group{align-items:center}.ag-tick42 .ag-cell{padding:0 0.25rem;border-bottom:var(--t42-border);line-height:1.875rem;white-space:nowrap;text-overflow:ellipsis}.ag-tick42 .ag-cell .btn,.ag-tick42 .ag-cell .btn-sm,.ag-tick42 .ag-cell .btn-group-sm>.btn,.ag-tick42 .ag-cell .btn-lg,.ag-tick42 .ag-cell .btn-group-lg>.btn{line-height:1.25rem}.ag-tick42 .ag-cell .btn-icon i{position:relative;top:0.0625rem}.ag-tick42 .ag-cell:focus{outline:1px solid var(--primary)}.ag-tick42 .ag-cell .dropdown-toggle{width:20px;height:20px;margin-top:-3px;padding:0;border:0;line-height:22px}.ag-tick42 .ag-cell .dropdown-toggle::after{background-color:transparent;content:\"\"}.ag-tick42 .ag-row::before{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:width;position:absolute;top:0;bottom:0;left:0;z-index:1;width:0;background-color:var(--primary);content:\"\"}.ag-tick42 .ag-row.ag-row-selected{color:var(--t42-link-color);background-color:var(--t42-color-opacity-10)}.ag-tick42 .ag-row.ag-row-selected .ag-icon{color:var(--t42-link-color)}.ag-tick42 .ag-pinned-left-header,.ag-tick42 .ag-pinned-left-cols-container,.ag-tick42 .ag-pinned-right-header,.ag-tick42 .ag-pinned-right-cols-container{background-color:Rgb(var(--t42-bg-mid))}.ag-tick42 .ag-pinned-left-cols-container .ag-row-selected::before,.ag-tick42 .ag-pinned-left-cols-container.ag-hidden+.ag-center-cols-clipper .ag-row-selected::before{width:2px}.ag-tick42 .ag-row-hover{background-color:var(--t42-color-opacity-10)}.ag-tick42 .ag-row-hover .ag-cell{color:var(--t42-link-color)}.ag-tick42 .ag-row-hover .ag-loading .ag-icon-loading::after{background:Rgb(var(--t42-bg-light))}.ag-tick42 .ag-row-hover a{border-bottom-color:var(--t42-content-color);color:var(--t42-link-color)}.ag-tick42 .ag-row-hover a:hover{border-bottom-style:solid}.ag-tick42 .ag-header-row:last-of-type{border-bottom:var(--t42-border)}.ag-tick42 .ag-header-cell,.ag-tick42 .ag-header-group-cell{padding:0 0.25rem;border-top:var(--t42-border);border-left:var(--t42-border);color:Hsl(var(--t42-content-color-base), calc(var(--t42-content-color-l) - 20%))}.ag-tick42 .ag-header-cell:first-of-type,.ag-tick42 .ag-header-group-cell:first-of-type{border-left:0}.ag-tick42 .ag-header-cell .ag-header-cell-label,.ag-tick42 .ag-header-cell .ag-header-group-cell-label,.ag-tick42 .ag-header-group-cell .ag-header-cell-label,.ag-tick42 .ag-header-group-cell .ag-header-group-cell-label{font-weight:normal;font-size:83.3%;line-height:1.875rem;text-transform:uppercase}.ag-tick42 .ag-header-cell .ag-header-select-all,.ag-tick42 .ag-header-group-cell .ag-header-select-all{margin-right:0.5rem}.ag-tick42 .ag-header-cell-moving{background-color:Hsl(var(--t42-bg-light-base), calc(var(--t42-bg-light-l) + 5%))}.ag-tick42 .ag-cell-inline-editing{padding-top:0}.ag-tick42 .ag-cell-edit-input{border-top:0;border-bottom:0;border-radius:0}.ag-tick42 .ag-icon{font-family:inherit}.ag-tick42 .ag-icon::before{content:\"\"}.ag-tick42 .ag-react-container .btn-icon{margin-bottom:0.125rem;padding:0 0.5rem}.ag-tick42 .ag-tabs-header{display:flex;height:1.875rem;border-bottom:var(--t42-border);border-bottom-width:0.063rem}.ag-tick42 .ag-tabs-header .ag-tab{display:flex;align-items:center;justify-content:center;width:1.875rem;height:1.875rem;color:var(--primary);cursor:pointer}.ag-tick42 .ag-tabs-header .ag-tab.ag-tab-selected{background-color:var(--primary)}.ag-tick42 .ag-tabs-header .ag-tab.ag-tab-selected .ag-icon{background-color:var(--white)}.ag-tick42 .ag-tabs-body{max-height:280px;overflow:auto}.ag-tick42 .ag-menu,.ag-tick42 .ag-tool-panel{z-index:1040;border:var(--t42-border);border-radius:0;overflow:initial;background-color:rgba(var(--t42-bg-light), 0.75);box-shadow:var(--t42-shadow);backdrop-filter:var(--backdrop-filter)}.ag-tick42 .ag-menu .ag-column-select-column,.ag-tick42 .ag-menu .ag-column-select-column-group,.ag-tick42 .ag-tool-panel .ag-column-select-column,.ag-tick42 .ag-tool-panel .ag-column-select-column-group{display:flex;align-items:center;margin-left:0;line-height:2rem;cursor:pointer}.ag-tick42 .ag-menu .ag-column-select-column .ag-column-select-checkbox:hover,.ag-tick42 .ag-menu .ag-column-select-column-group .ag-column-select-checkbox:hover,.ag-tick42 .ag-tool-panel .ag-column-select-column .ag-column-select-checkbox:hover,.ag-tick42 .ag-tool-panel .ag-column-select-column-group .ag-column-select-checkbox:hover{color:var(--t42-link-color)}.ag-tick42 .ag-menu .ag-column-select-column:hover,.ag-tick42 .ag-menu .ag-column-select-column-group:hover,.ag-tick42 .ag-tool-panel .ag-column-select-column:hover,.ag-tick42 .ag-tool-panel .ag-column-select-column-group:hover{color:Hsl(var(--t42-content--base), 100%);background-color:var(--t42-color-opacity-10)}.ag-tick42 .ag-menu .ag-column-select-header,.ag-tick42 .ag-tool-panel .ag-column-select-header{padding:0.5rem}.ag-tick42 .ag-menu .ag-column-select-column-label,.ag-tick42 .ag-tool-panel .ag-column-select-column-label{margin-left:0.25rem}.ag-tick42 .ag-tab-body{max-height:220px;overflow:auto}.ag-tick42 .ag-tab-body .ag-set-filter-list{height:9rem}.ag-tick42 .ag-tab-body input{border:var(--t42-border)}.ag-tick42 .ag-tab-body input:focus{border-color:var(--primary)}.ag-tick42 .ag-menu-option{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:color;line-height:2rem;cursor:pointer}.ag-tick42 .ag-menu-option .ag-menu-option-icon{color:var(--t42-content-color)}.ag-tick42 .ag-menu-option .ag-menu-option-icon,.ag-tick42 .ag-menu-option .ag-menu-option-popup-pointer{width:2rem;color:var(--t42-content-color);text-align:center}.ag-tick42 .ag-menu-option .ag-menu-option-icon.ag-menu-option-popup-pointer,.ag-tick42 .ag-menu-option .ag-menu-option-icon:hover,.ag-tick42 .ag-menu-option .ag-menu-option-popup-pointer.ag-menu-option-popup-pointer,.ag-tick42 .ag-menu-option .ag-menu-option-popup-pointer:hover{color:var(--t42-content-color)}.ag-tick42 .ag-menu-option .ag-menu-option-icon.ag-menu-option-popup-pointer .ag-icon,.ag-tick42 .ag-menu-option .ag-menu-option-icon:hover .ag-icon,.ag-tick42 .ag-menu-option .ag-menu-option-popup-pointer.ag-menu-option-popup-pointer .ag-icon,.ag-tick42 .ag-menu-option .ag-menu-option-popup-pointer:hover .ag-icon{color:var(--t42-content-color)}.ag-tick42 .ag-menu-option.ag-menu-option-active{color:var(--t42-link-color);background-color:var(--t42-color-opacity-10)}.ag-tick42 .ag-menu-option.ag-menu-option-active .ag-icon{color:var(--t42-content-color)}.ag-tick42 .ag-menu-separator{border-bottom:var(--t42-border);border-bottom-color:var(--t42-color-opacity-10)}.ag-tick42 .ag-menu-column-select-wrapper,.ag-tick42 .ag-primary-cols-list-panel{height:auto}.ag-tick42 .ag-tool-panel .ag-pivot-mode{padding-top:0.5rem}.ag-tick42 .ag-column-tool-panel-column{padding:0 0.25rem}.ag-tick42 .ag-column-tool-panel-column .ag-icon{margin:0 0.25rem}.ag-tick42 .ag-column-tool-panel-column-label,.ag-tick42 span.ag-column-tool-panel-column-group{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-left:0.25rem}.ag-tick42 .ag-column-tool-panel-column-group .ag-icon{margin:0 0.25rem 0 0}.ag-tick42 .ag-root+.ag-tool-panel{box-shadow:none}.ag-tick42 .ag-row-group-leaf-indent{margin-left:24px}.ag-tick42 .ag-group-expanded,.ag-tick42 .ag-group-contracted{display:flex;align-items:center;min-width:0.75rem;height:100%;margin-right:0.5rem}.ag-tick42 .ag-group-value .ag-react-container{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline;font-size:87.5%}.ag-tick42 .ag-popup-editor{box-shadow:var(--t42-shadow)}.ag-tick42 .ag-rich-select{border:var(--t42-border);border-radius:0;overflow-y:auto;background-color:Rgb(var(--t42-bg-light), 1)}.ag-tick42 .ag-rich-select-row{padding-left:0.75rem}.ag-tick42 .ag-rich-select-row-selected{background:var(--t42-color-opacity-10)}.ag-tick42 .ag-rich-select-value{position:relative;height:2rem;padding-left:0.75rem;border-bottom:var(--t42-border);line-height:2rem}.ag-tick42 .ag-rich-select-value::before{position:absolute;top:0;bottom:0;left:0;width:3px;background-color:var(--primary);content:\"\"}.ag-tick42 .icon-window-maximize::before,.ag-tick42 .icon-window-minimize::before,.ag-tick42 .icon-window-ok::before{font-size:0.813rem}.ag-tick42 .ag-column-drop{border-top:var(--t42-border)}.ag-tick42 .ag-column-drop.ag-column-drop-horizontal{display:flex;height:1.875rem}.ag-tick42 .ag-column-drop.ag-column-drop-horizontal div{display:flex;align-items:center}.ag-tick42 .ag-column-drop.ag-column-drop-horizontal div:first-of-type{margin-right:0.25rem}.ag-tick42 .ag-column-drop .ag-column-drop-empty-message{align-self:center}.ag-tick42 .ag-column-drop .ag-column-drop-cell{display:flex;height:1.125rem;margin:0.125rem 0.25rem;padding:0 0.125rem 0 0.25rem;border-radius:0.25rem;background-color:Rgb(var(--t42-bg-light))}.ag-tick42 .ag-column-drop .ag-column-drop-cell .ag-column-drop-cell-text{padding:0 0.25rem;line-height:1.125rem}.ag-tick42 .ag-column-drop.ag-column-drop-vertical div{justify-content:start}.ag-tick42 .ag-column-drop.ag-column-drop-vertical .ag-icon-group{margin:0 0.25rem}.ag-tick42 .ag-right-arrow{width:1.5rem;padding:0 0.25rem;overflow:hidden;text-indent:-999px;background-color:var(--t42-content-color);transform:rotate(-90deg);-webkit-mask-image:var(--t42-select-indicator)}.ag-tick42 .ag-right-arrow::before{position:absolute;text-indent:999px}.ag-tick42 .ag-group-checkbox{display:flex;align-items:center;width:1rem;height:100%;margin-right:0.5rem}.ag-tick42 .ag-group-checkbox .ag-icon{width:0.875rem;height:0.875rem}.ag-tick42 .ag-group-checkbox:empty{width:initial}.ag-tick42 .ag-ltr .ag-toolpanel-indent-1{padding-left:1rem}.ag-tick42 .ag-ltr .ag-toolpanel-indent-2{padding-left:2rem}.ag-tick42 .ag-ltr .ag-toolpanel-indent-3{padding-left:3rem}.ag-tick42 .ag-ltr .ag-row-group-indent-1{padding-left:calc(1 * 1.45rem)}.ag-tick42 .ag-ltr .ag-row-group-indent-2{padding-left:calc(2 * 1.45rem)}.ag-tick42 .ag-ltr .ag-row-group-indent-3{padding-left:calc(3 * 1.45rem)}.ag-menu .ag-filter-checkbox{min-width:2rem}.ag-menu .ag-icon-checkbox-checked::after{width:0.625rem;height:0.625rem}.ag-menu .ag-column-group-icons{width:1.5rem}.ag-menu .ag-labeled.ag-label-align-right>div{margin-left:0.25rem}.ag-filter-panel{width:100%}.loading-filter{background-color:rgba(var(--t42-bg-light), 0.75);backdrop-filter:var(--backdrop-filter)}#selectAllContainer,.ag-set-filter-item{display:flex;align-items:center;cursor:pointer}#selectAllContainer .ag-filter-value,#selectAllContainer .ag-set-filter-item-value,.ag-set-filter-item .ag-filter-value,.ag-set-filter-item .ag-set-filter-item-value{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#selectAllContainer .ag-set-filter-item-value,.ag-set-filter-item .ag-set-filter-item-value{margin-left:0.25rem}.ag-filter-checkbox{justify-content:center;min-width:2rem;color:var(--primary)}.ag-set-filter-item:hover,.ag-filter-header-container:hover label{color:var(--t42-link-color);background-color:var(--t42-color-opacity-10)}.ag-set-filter-item:hover .ag-icon,.ag-filter-header-container:hover label .ag-icon{color:var(--t42-link-color)}.ag-input-text-wrapper{padding:0.25rem 0.25rem 0}.ag-primary-cols-header-panel{align-items:center;padding:0.25rem 0.25rem 0.25rem 0}.ag-primary-cols-header-panel div:nth-child(1){width:1.25rem}.ag-primary-cols-header-panel div:nth-child(2){width:1rem;margin-right:0.25rem}.ag-filter-toolpanel-header{display:flex}.ag-filter-toolpanel-header .ag-header-cell-text{padding:0 0.25rem}.ag-filter-condition{justify-content:space-evenly;padding:0.5rem 0}.ag-filter-condition .ag-labeled.ag-label-align-right div{margin-left:0}.ag-radio-button-label{position:relative;color:var(--t42-content-color-muted);cursor:pointer;user-select:none}.ag-radio-button-input-wrapper::before{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-color, border;position:absolute;left:-1.125rem;display:block;width:0.875rem;height:0.875rem;border:0.0625rem solid var(--t42-content-color-muted);border-radius:50%;cursor:pointer;content:\"\";pointer-events:all}.ag-radio-button-input-wrapper::after{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-color, border;position:absolute;left:-0.875rem;display:block;width:0.375rem;height:0.375rem;border-radius:50%;color:var(--white);background-image:none;transform:scale(0);opacity:0;content:\"\"}.ag-radio-button-input-wrapper:focus{border-color:var(--primary)}.ag-radio-button-input-wrapper.ag-checked::before{border-color:var(--t42-color-opacity-30);background-color:var(--primary)}.ag-radio-button-input-wrapper.ag-checked::after{background-color:var(--white);transform:scale(1);opacity:1}.ag-list{z-index:1100;background-color:rgba(var(--t42-bg-mid), 0.7);backdrop-filter:var(--backdrop-filter)}.ag-list .ag-list-item{padding:0 0.5rem;line-height:2rem;cursor:pointer}.ag-list .ag-list-item:hover{background-color:Rgb(var(--t42-bg-light))}.ag-picker-field-wrapper{height:2rem;padding:0 0.5rem;line-height:2rem;cursor:pointer}.ag-column-select-header-icon{display:flex;align-items:center}.ag-column-select-header .ag-text-field-input{height:1.875rem;line-height:1.875rem}.ag-filter-list-panel .ag-filter-toolpanel-expand{margin:0 0.25rem}.ag-filter-list-panel .ag-filter-toolpanel-group-container,.ag-filter-list-panel .ag-filter-toolpanel-instance-filter{padding-left:0.25rem}.ag-side-bar{position:relative}.ag-side-bar .ag-side-bar-right .ag-tool-panel-horizontal-resize{left:-0.375rem}.ag-side-bar>div:first-child{border:var(--t42-border);background-color:var(--t42-color-opacity-10)}.ag-side-bar .ag-pivot-mode-select{display:flex;padding:0.25rem;border-bottom:var(--t42-border)}.ag-side-bar .ag-pivot-mode-select label{margin:0 0 0 0.5rem}.ag-side-bar .ag-pivot-mode-select .ag-checkbox-label{padding-left:0.25rem}.ag-side-bar .ag-side-buttons div.ag-side-button button{width:1rem;height:1rem;padding:0;border:0.0625rem solid transparent;color:Hsl(var(--t42-content-color-base), 100%);background-color:transparent}.ag-side-bar .ag-side-buttons div.ag-side-button button:hover{color:Hsl(var(--t42-content-color-base), 100%);background-color:Rgb(var(--t42-bg-dark))}.ag-side-bar .ag-side-buttons div.ag-side-button button>span{display:none}.ag-side-bar .ag-side-buttons div.ag-side-button.ag-selected button{border-color:var(--t42-color-opacity-30);background-color:var(--primary)}.ag-side-bar .ag-side-buttons div.ag-side-button.ag-selected button [class*=\"ag-icon-\"]{background-color:var(--white)}.ag-side-bar .ag-icon-checkbox-checked::after{width:0.625rem;height:0.625rem}.ag-side-bar .ag-column-panel,.ag-side-bar .ag-filter-panel{padding-left:0.25rem}.ag-side-bar .ag-filter-checkbox{margin-right:0.25rem}.ag-tool-panel-wrapper{border-top:var(--t42-border);border-bottom:var(--t42-border)}.ag-tool-panel-wrapper .ag-set-filter-list{width:100%;height:auto}.ag-tool-panel-wrapper .ag-column-select-checkbox,.ag-tool-panel-wrapper .ag-column-select-header-checkbox{margin:0 0.25rem}.ag-tool-panel-horizontal-resize{top:initial;width:0.188rem;background-color:var(--t42-color-opacity-10)}.ag-column-panel,.ag-column-select-panel,.ag-column-drop-vertical,.ag-column-drop-list{display:block;min-height:initial;max-height:initial;overflow:visible}.ag-column-panel input,.ag-column-select-panel input,.ag-column-drop-vertical input,.ag-column-drop-list input{border:var(--t42-border)}.ag-column-panel input:focus,.ag-column-select-panel input:focus,.ag-column-drop-vertical input:focus,.ag-column-drop-list input:focus{border-color:var(--primary)}[class*=\"ag-icon-\"],.icon-check-1,.icon-check-empty,.icon-resize-horizontal{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:color, transform;display:block;width:0.75rem;height:0.75rem;margin:0 auto;background-color:var(--t42-content-color);background-image:none;mask-repeat:no-repeat;mask-position:center;cursor:pointer}[class*=\"ag-icon-\"]:hover,.icon-check-1:hover,.icon-check-empty:hover,.icon-resize-horizontal:hover{background-color:var(--t42-link-color)}.ag-menu-option-disabled{color:var(--t42-content-color-disabled)}.ag-menu-option-disabled .ag-icon{background-color:var(--t42-content-color-disabled)}.ag-icon-menu{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M475.4,384v36.4c0,5.1-1.7,9.4-5.1,12.8s-7.9,5.3-13.3,5.6H55c-5.1,0-9.4-1.9-12.8-5.6c-3.4-3.8-5.3-8-5.6-12.8V384 c0-5.1,1.9-9.4,5.6-12.8c3.8-3.4,8-5.3,12.8-5.6h401.9c5.1,0,9.6,1.9,13.3,5.6C474,375,475.7,379.2,475.4,384z M475.4,237.6v36.9 c0,4.8-1.7,9-5.1,12.8s-7.9,5.5-13.3,5.1H55c-5.1,0-9.4-1.7-12.8-5.1s-5.3-7.7-5.6-12.8v-36.9c0-4.8,1.9-9,5.6-12.8 c3.8-3.8,8-5.5,12.8-5.1h401.9c5.1,0,9.6,1.7,13.3,5.1S475.7,232.5,475.4,237.6z M475.4,91.7V128c0,4.8-1.7,9-5.1,12.8 s-7.9,5.6-13.3,5.6H55c-5.1,0-9.4-1.9-12.8-5.6s-5.3-8-5.6-12.8V91.7c0-5.1,1.9-9.6,5.6-13.3c3.8-3.8,8-5.5,12.8-5.1h401.9 c5.1,0,9.6,1.7,13.3,5.1S475.7,86.2,475.4,91.7z%27/%3E%3C/svg%3E%0A\")}.ag-header-icon{margin-left:0.125rem}.ag-header-icon .ag-icon-menu{line-height:1.875rem}.ag-icon-asc{-webkit-mask-image:var(--t42-select-indicator);transform:rotate(180deg)}.ag-icon-desc{-webkit-mask-image:var(--t42-select-indicator);margin-bottom:2px}.ag-icon-filter{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3E%3Cpath d=%27M14.9,1.4c0.1,0.3,0.1,0.5-0.1,0.7L9.9,7v7.4c0,0.3-0.1,0.5-0.4,0.6C9.4,15,9.4,15,9.3,15c-0.2,0-0.3-0.1-0.4-0.2l-2.5-2.5 c-0.1-0.1-0.2-0.3-0.2-0.4V7L1.2,2.1C1,1.9,0.9,1.7,1.1,1.4C1.2,1.1,1.4,1,1.7,1h12.7C14.6,1,14.8,1.1,14.9,1.4L14.9,1.4z%27/%3E%3C/svg%3E\")}.ag-icon-none{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3E%3Cpath d=%27M1 6L5 2Q6 1 7 2L11 6Q11 7 10 7L2 7Q1 7 1 6M2 8Q1 8 1 9L5 13Q6 14 7 13L11 9Q11 8 10 8L2 8%27/%3E%3C/svg%3E%0A\")}.ag-icon-indeterminate,.ag-icon-checkbox-indeterminate,.ag-icon-checkbox-indeterminate-readonly,.ag-icon-checkbox-unchecked,.ag-icon-checkbox-unchecked-readonly,.ag-icon-checkbox-checked-readonly,.ag-icon-checkbox-checked,.icon-check-1,.icon-check-empty,.ag-checkbox-input-wrapper,.ag-toggle-button-input-wrapper{position:relative;padding:0;color:var(--t42-content-color-muted);background-color:transparent;cursor:pointer;user-select:none}.ag-icon-indeterminate::before,.ag-icon-checkbox-indeterminate::before,.ag-icon-checkbox-indeterminate-readonly::before,.ag-icon-checkbox-unchecked::before,.ag-icon-checkbox-unchecked-readonly::before,.ag-icon-checkbox-checked-readonly::before,.ag-icon-checkbox-checked::before,.icon-check-1::before,.icon-check-empty::before,.ag-checkbox-input-wrapper::before,.ag-toggle-button-input-wrapper::before{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-color, border-color;display:block;width:100%;height:100%;border:var(--t42-border);border-color:var(--t42-content-color);cursor:pointer;content:\"\";pointer-events:all}.ag-icon-indeterminate:focus,.ag-icon-checkbox-indeterminate:focus,.ag-icon-checkbox-indeterminate-readonly:focus,.ag-icon-checkbox-unchecked:focus,.ag-icon-checkbox-unchecked-readonly:focus,.ag-icon-checkbox-checked-readonly:focus,.ag-icon-checkbox-checked:focus,.icon-check-1:focus,.icon-check-empty:focus,.ag-checkbox-input-wrapper:focus,.ag-toggle-button-input-wrapper:focus{border-color:var(--primary)}.ag-icon-indeterminate:hover,.ag-icon-checkbox-indeterminate:hover,.ag-icon-checkbox-indeterminate-readonly:hover,.ag-icon-checkbox-unchecked:hover,.ag-icon-checkbox-unchecked-readonly:hover,.ag-icon-checkbox-checked-readonly:hover,.ag-icon-checkbox-checked:hover,.icon-check-1:hover,.icon-check-empty:hover,.ag-checkbox-input-wrapper:hover,.ag-toggle-button-input-wrapper:hover{background-color:transparent}.ag-icon-checkbox-indeterminate,.ag-icon-checkbox-indeterminate-readonly,.ag-icon-checkbox-checked,.ag-icon-checkbox-checked-readonly,.icon-check-empty,.ag-checkbox-input-wrapper.ag-indeterminate,.ag-checkbox-input-wrapper.ag-checked,.ag-toggle-button-input-wrapper.ag-checked{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background, color}.ag-icon-checkbox-indeterminate::before,.ag-icon-checkbox-indeterminate-readonly::before,.ag-icon-checkbox-checked::before,.ag-icon-checkbox-checked-readonly::before,.icon-check-empty::before,.ag-checkbox-input-wrapper.ag-indeterminate::before,.ag-checkbox-input-wrapper.ag-checked::before,.ag-toggle-button-input-wrapper.ag-checked::before{border:0.0625rem solid var(--t42-color-opacity-30);background:var(--primary)}.ag-icon-checkbox-indeterminate::after,.ag-icon-checkbox-indeterminate-readonly::after,.ag-icon-checkbox-checked::after,.ag-icon-checkbox-checked-readonly::after,.icon-check-empty::after,.ag-checkbox-input-wrapper.ag-indeterminate::after,.ag-checkbox-input-wrapper.ag-checked::after,.ag-toggle-button-input-wrapper.ag-checked::after{position:absolute;top:0.063rem;left:0.063rem;display:block;width:0.75rem;height:0.75rem;background:var(--white);content:\"\"}.ag-icon-checkbox-checked::after,.ag-icon-checkbox-checked-readonly::after,.icon-check-empty::after,.ag-checkbox-input-wrapper.ag-checked::after,.ag-toggle-button-input-wrapper.ag-checked::after{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg version=%271.1%27 xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M477.44 152.832q0 11.264-8.192 19.456l-245.76 245.76q-8.192 7.68-19.456 7.68t-19.456-7.68l-142.336-142.336q-7.68-8.192-7.68-19.456t7.68-19.456l38.912-38.912q8.192-8.192 19.456-8.192t19.456 8.192l83.968 84.48 187.392-187.904q8.192-8.192 19.456-8.192t19.456 8.192l38.912 38.912q8.192 7.68 8.192 19.456z%27%3E%3C/path%3E%3C/svg%3E%0A\")}.ag-icon-checkbox-indeterminate::after,.ag-icon-checkbox-indeterminate-readonly::after,.ag-checkbox-input-wrapper.ag-indeterminate::after{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 -1 5 6%27%3E%3Cpath d=%27M 1 1 A 1 1 0 0 0 1 2 L 4 2 A 1 1 0 0 0 4 1 L 1 1%27/%3E%3C/svg%3E%0A\")}.ag-checkbox-input-wrapper.ag-indeterminate::after{top:0.125rem;left:0.125rem}.ag-checkbox-input-wrapper::before,.ag-toggle-button-input-wrapper::before{width:0.875rem;height:0.875rem}.ag-checkbox-input-wrapper .ag-checkbox-input,.ag-checkbox-input-wrapper .ag-toggle-button-input,.ag-toggle-button-input-wrapper .ag-checkbox-input,.ag-toggle-button-input-wrapper .ag-toggle-button-input{position:absolute;z-index:2;width:0.875rem;height:0.875rem}.ag-icon-columns{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M146.432 374.784v55.296q0 11.264-8.192 18.944t-19.456 8.192h-91.136q-11.776 0-19.456-8.192t-8.192-18.944v-55.296q0-11.264 8.192-19.456t19.456-7.68h91.136q11.776 0 19.456 7.68t8.192 19.456zM146.432 228.864v54.784q0 11.264-8.192 19.456t-19.456 7.68h-91.136q-11.776 0-19.456-7.68t-8.192-19.456v-54.784q0-11.776 8.192-19.456t19.456-8.192h91.136q11.776 0 19.456 8.192t8.192 19.456zM329.216 374.784v55.296q0 11.264-8.192 18.944t-19.456 8.192h-91.136q-11.776 0-19.456-8.192t-8.192-18.944v-55.296q0-11.264 8.192-19.456t19.456-7.68h91.136q11.776 0 19.456 7.68t8.192 19.456zM146.432 82.432v54.784q0 11.264-8.192 19.456t-19.456 8.192h-91.136q-11.776 0-19.456-8.192t-8.192-19.456v-54.784q0-11.264 8.192-19.456t19.456-8.192h91.136q11.776 0 19.456 8.192t8.192 19.456zM329.216 228.864v54.784q0 11.264-8.192 19.456t-19.456 7.68h-91.136q-11.776 0-19.456-7.68t-8.192-19.456v-54.784q0-11.776 8.192-19.456t19.456-8.192h91.136q11.776 0 19.456 8.192t8.192 19.456zM512 374.784v55.296q0 11.264-8.192 18.944t-19.456 8.192h-91.136q-11.264 0-19.456-8.192t-8.192-18.944v-55.296q0-11.264 8.192-19.456t19.456-7.68h91.136q11.776 0 19.456 7.68t8.192 19.456zM329.216 82.432v54.784q0 11.264-8.192 19.456t-19.456 8.192h-91.136q-11.776 0-19.456-8.192t-8.192-19.456v-54.784q0-11.264 8.192-19.456t19.456-8.192h91.136q11.776 0 19.456 8.192t8.192 19.456zM512 228.864v54.784q0 11.264-8.192 19.456t-19.456 7.68h-91.136q-11.264 0-19.456-7.68t-8.192-19.456v-54.784q0-11.776 8.192-19.456t19.456-8.192h91.136q11.776 0 19.456 8.192t8.192 19.456zM512 82.432v54.784q0 11.264-8.192 19.456t-19.456 8.192h-91.136q-11.264 0-19.456-8.192t-8.192-19.456v-54.784q0-11.264 8.192-19.456t19.456-8.192h91.136q11.776 0 19.456 8.192t8.192 19.456z%27%3E%3C/path%3E%3C/svg%3E\")}.ag-icon-pin{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M228.4,228.6v-128c0-2.7-0.9-4.9-2.6-6.7s-3.9-2.6-6.7-2.6c-2.7,0-4.9,0.9-6.7,2.6c-1.7,1.7-2.6,3.9-2.6,6.7v128 c0,2.7,0.9,4.9,2.6,6.7c1.7,1.7,3.9,2.6,6.7,2.6c2.7,0,4.9-0.9,6.7-2.6S228.4,231.3,228.4,228.6z M420.4,329.5c0,4.8-1.9,9-5.6,12.8 c-3.8,3.8-8,5.5-12.8,5.1H279.6l-14.8,138.2c-0.3,2.4-1.4,4.3-3.1,5.6c-1.7,1.4-3.6,2.2-5.6,2.6h-0.5c-5.1,0-8-2.6-8.7-7.7 l-22-138.8H109.6c-5.1,0-9.4-1.7-12.8-5.1c-3.4-3.4-5.3-7.7-5.6-12.8c0-23.6,7.5-44.7,22.5-63.5s31.9-28.2,50.7-28.2V91.4 c-9.9,0-18.4-3.6-25.6-10.8c-7.2-7.2-10.9-15.7-11.3-25.6s3.4-18.4,11.3-25.6c7.9-7.2,16.4-10.9,25.6-11.3h182.8 c9.9,0,18.4,3.8,25.6,11.3s10.8,16,10.8,25.6s-3.6,18.1-10.8,25.6S357,91.7,347.1,91.4v146.4c18.8,0,35.7,9.4,50.7,28.2 C412.8,284.8,420.4,305.9,420.4,329.5L420.4,329.5z%27/%3E%3C/svg%3E\")}.ag-icon-small-right,.ag-icon-small-down{width:0.65rem;height:0.65rem;-webkit-mask-image:var(--t42-select-indicator);transform:rotate(-90deg)}.ag-icon-small-down{transform:rotate(0)}.ag-icon-tick{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg version=%271.1%27 xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M477.44 152.832q0 11.264-8.192 19.456l-245.76 245.76q-8.192 7.68-19.456 7.68t-19.456-7.68l-142.336-142.336q-7.68-8.192-7.68-19.456t7.68-19.456l38.912-38.912q8.192-8.192 19.456-8.192t19.456 8.192l83.968 84.48 187.392-187.904q8.192-8.192 19.456-8.192t19.456 8.192l38.912 38.912q8.192 7.68 8.192 19.456z%27%3E%3C/path%3E%3C/svg%3E%0A\")}.ag-icon-copy{-webkit-mask-image:url(\"data:image/svg+xml,\")}.ag-icon-csv,.ag-icon-excel{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M0 0zq0-7.7-5.1-12.8zM475.3 356.6v91.6q0 11.3-8.2 18.9t-19.5 8.2h-420.4q-11.8 0-19.5-8.2t-8.2-18.9v-91.6q0-11.3 8.2-19.5t19.5-8.2h132.6l38.4 38.9q16.9 16.4 38.9 16.4t38.9-16.4l38.9-38.9h132.6q11.3 0 19.5 8.2t8.2 19.5zM382.1 193.8q5.1 11.8-4.1 20l-128 128q-5.1 5.6-12.8 5.6t-12.8-5.6l-128-128q-8.7-8.2-4.1-20q5.1-10.8 16.9-10.8h73.2v-128q0-7.7 5.6-12.8t12.8-5.6h73.2q7.2 0 12.8 5.6t5.1 12.8v128h73.2q12.3 0 16.9 10.8M347 439A1 1 0 00347 402A1 1 0 00347 439M420 439A1 1 0 00420 402A1 1 0 00420 439zz%27/%3E%3C/svg%3E%0A\")}.ag-icon-expanded{-webkit-mask-image:var(--t42-select-indicator);transform:rotate(-90deg)}.ag-icon-contracted{-webkit-mask-image:var(--t42-select-indicator);transform:rotate(90deg)}.ag-header-expand-icon-collapsed .ag-icon-contracted{margin-bottom:1px;transform:rotate(90deg);-webkit-mask-image:var(--t42-select-indicator)}.ag-icon-paste{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M219.648 475.648h256v-183.296h-119.296q-11.264 0-18.944-7.68t-8.192-19.456v-118.784h-109.568v329.216zM292.352 64v-18.432q0-3.584-2.56-6.144t-6.144-3.072h-201.216q-3.584 0-6.656 3.072t-2.56 6.144v18.432q0 3.584 2.56 6.656t6.656 2.56h201.216q3.584 0 6.144-2.56t2.56-6.656zM365.568 256h85.504l-85.504-85.504v85.504zM512 292.352v192q0 11.776-8.192 19.456t-19.456 8.192h-273.92q-11.776 0-19.456-8.192t-8.192-19.456v-45.568h-155.136q-11.776 0-19.456-8.192t-8.192-18.944v-384q0-11.776 8.192-19.456t19.456-8.192h310.784q11.264 0 19.456 8.192t7.68 19.456v93.696q6.144 3.584 10.24 7.68l116.736 116.736q8.192 7.68 13.824 21.504t5.632 25.088z%27%3E%3C/path%3E%3C/svg%3E%0A\")}.ag-icon-arrows{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M512 256q0 7.168-5.632 12.8l-72.704 73.216q-5.632 5.632-13.312 5.632t-12.8-5.632-5.12-12.8v-36.864h-110.080v110.080h36.864q7.168 0 12.8 5.12t5.632 12.8-5.632 12.8l-73.216 73.216q-5.12 5.632-12.8 5.632t-12.8-5.632l-73.216-73.216q-5.632-5.12-5.632-12.8t5.632-12.8 12.8-5.12h36.864v-110.080h-110.080v36.864q0 7.168-5.12 12.8t-12.8 5.632-12.8-5.632l-73.216-73.216q-5.632-5.632-5.632-12.8t5.632-12.8l73.216-73.216q5.12-5.632 12.8-5.632t12.8 5.632 5.12 12.8v36.864h110.080v-110.080h-36.864q-7.168 0-12.8-5.12t-5.632-12.8 5.632-13.312l73.216-72.704q5.632-5.632 12.8-5.632t12.8 5.632l73.216 72.704q5.632 5.632 5.632 13.312t-5.632 12.8-12.8 5.12h-36.864v110.080h110.080v-36.864q0-7.168 5.12-12.8t12.8-5.632 13.312 5.632l72.704 73.216q5.632 5.12 5.632 12.8z%27%3E%3C/path%3E%3C/svg%3E%0A\")}.ag-icon-not-allowed{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27m 182.8 238.1 h 145.9 v -55.3 c 0 -20.1 -7.2 -37.4 -21.5 -51.7 s -31.6 -21.3 -51.7 -21 c -20.1 0.3 -37.4 7.3 -51.7 21 s -21.3 30.9 -21 51.7 l -0 55.3 l 0 0 z m 237.6 27.1 v 164.9 c 0 7.5 -2.7 13.8 -8.2 18.9 s -11.9 7.9 -19.5 8.2 h -273.9 c -7.9 0 -14.3 -2.7 -19.5 -8.2 c -5.1 -5.5 -7.9 -11.8 -8.2 -18.9 v -164.9 c 0 -7.5 2.7 -14 8.2 -19.5 s 11.9 -8 19.5 -7.7 h 8.7 v -55.3 c 0 -34.8 12.6 -64.9 37.9 -90.1 s 55.3 -37.9 90.1 -37.9 s 65 12.6 90.6 37.9 s 38.1 55.3 37.4 90.1 v 55.3 h 9.2 c 7.9 0 14.3 2.6 19.5 7.7 s 7.8 11.7 8.2 19.5 z%27/%3E%3C/svg%3E\")}.ag-icon-eye-slash{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M 475.6 256.3 q -43.5 -67.6 -109.1 -100.9 q 17.4 29.7 17.4 64 q 0 52.7 -37.4 90.6 t -90.6 37.4 t -90.6 -37.4 t -37.4 -90.6 q 0 -34.3 17.4 -64 q -65.5 33.3 -109.1 100.9 q 38.4 58.4 95.7 93.2 t 123.9 34.8 t 124.4 -34.8 t 95.2 -93.2 z M 269.8 146.2 q 0 -5.6 -4.1 -9.7 t -9.7 -3.6 q -35.8 0 -61.4 25.6 t -25.6 60.9 q 0 5.6 4.1 9.7 t 9.7 4.1 t 9.7 -4.1 t 4.1 -9.7 q 0 -24.6 17.4 -42 t 42 -17.4 q 5.6 0 9.7 -4.1 t 4.1 -9.7 z M 512 256.3 q 0 9.7 -5.6 19.5 q -39.9 66 -107.5 105.5 t -142.8 39.4 t -142.8 -39.4 t -107.5 -105.5 q -5.6 -9.7 -5.6 -19.5 t 5.6 -20 q 39.9 -65.5 107.5 -105 t 142.8 -39.9 t 142.8 39.9 t 107.5 105 q 5.6 10.2 5.6 20 z%27%3E%3C/path%3E%3C/svg%3E%0A\")}.ag-icon-group{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M146.4 374.8v55.3q0 11.3-8.2 18.9t-19.5 8.2h-91.1q-11.8 0-19.5-8.2t-8.2-18.9v-55.3q0-11.3 8.2-19.5t19.5-7.7h91.1q11.8 0 19.5 7.7t8.2 19.5zM146.4 228.9v54.8q0 11.3-8.2 19.5t-19.5 7.7h-91.1q-11.8 0-19.5-7.7t-8.2-19.5v-54.8q0-11.8 8.2-19.5t19.5-8.2h91.1q11.8 0 19.5 8.2t8.2 19.5zM512 374.8v55.3q0 11.3-8.2 18.9t-19.5 8.2h-273.9q-11.8 0-19.5-8.2t-8.2-18.9v-55.3q0-11.3 8.2-19.5t19.5-7.7h273.9q11.8 0 19.5 7.7t8.2 19.5zM146.4 82.4v54.8q0 11.3-8.2 19.5t-19.5 8.2h-91.1q-11.8 0-19.5-8.2t-8.2-19.5v-54.8q0-11.3 8.2-19.5t19.5-8.2h91.1q11.8 0 19.5 8.2t8.2 19.5zM512 228.9v54.8q0 11.3-8.2 19.5t-19.5 7.7h-273.9q-11.8 0-19.5-7.7t-8.2-19.5v-54.8q0-11.8 8.2-19.5t19.5-8.2h273.9q11.8 0 19.5 8.2t8.2 19.5zM512 82.4v54.8q0 11.3-8.2 19.5t-19.5 8.2h-273.9q-11.8 0-19.5-8.2t-8.2-19.5v-54.8q0-11.3 8.2-19.5t19.5-8.2h273.9q11.8 0 19.5 8.2t8.2 19.5z%27%3E%3C/path%3E%3C/svg%3E%0A\")}.ag-icon-grip{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3E%3Cpath d=%27M4 3L6 3L6 5L4 5L4 3M4 7L6 7L6 9L4 9L4 7M4 11L6 11L6 13L4 13L4 11M8 3L10 3L10 5L8 5L8 3M8 7L10 7L10 9L8 9L8 7M8 11L10 11L10 13L8 13L8 11%27/%3E%3C/svg%3E%0A\");margin:0}.ag-icon-tree-open{-webkit-mask-image:var(--t42-select-indicator);transform:rotate(180deg)}.ag-icon-tree-closed{-webkit-mask-image:var(--t42-select-indicator);transform:rotate(270deg)}.ag-icon-tree-indeterminate{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 -1 5 6%27%3E%3Cpath d=%27M 1 1 A 1 1 0 0 0 1 2 L 4 2 A 1 1 0 0 0 4 1 L 1 1%27/%3E%3C/svg%3E%0A\")}.ag-icon-save{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M 420.6 319.2 V 393 c 0 22.9 -8 42.3 -24.1 58.4 s -35.5 24.1 -58.4 24.1 H 100.6 c -22.9 0 -42.3 -8 -58.4 -24.1 S 18.2 415.8 18.2 393 V 155.4 c 0 -22.5 8 -41.8 24.1 -57.9 S 77.7 73.3 100.6 73 h 72.7 c 2.4 0 4.6 1 6.7 3.1 c 2 2 2.9 4.1 2.6 6.1 c 0 5.1 -2.6 8.2 -7.7 9.2 c -14.7 5.1 -27.3 10.9 -37.9 17.4 c -1.7 0.7 -3.2 1 -4.6 1 h -31.7 c -12.6 0 -23.4 4.4 -32.3 13.3 s -13.5 19.6 -13.8 32.3 V 393 c 0 12.6 4.6 23.4 13.8 32.3 c 9.2 8.9 20 13.5 32.3 13.8 h 237.6 c 12.6 0 23.4 -4.6 32.3 -13.8 c 8.9 -9.2 13.3 -20 13.3 -32.3 V 332 c 0 -3.8 1.7 -6.5 5.1 -8.2 c 5.5 -2.4 10.8 -6 15.9 -10.8 c 2.7 -3.1 6 -3.8 9.7 -2 C 418.6 312.7 420.6 315.5 420.6 319.2 L 420.6 319.2 z M 488.2 177.4 L 378.6 287 c -3.4 3.8 -7.7 5.6 -12.8 5.6 c -2.4 0 -4.8 -0.5 -7.2 -1.5 c -7.5 -3.1 -11.3 -8.7 -11.3 -16.9 v -54.8 h -45.6 c -61.8 0 -103.6 12.5 -125.4 37.4 c -22.5 26.3 -29.5 71.3 -21 135.2 c 0.7 4.4 -1.2 7.7 -5.6 9.7 c -1.7 0.3 -2.9 0.5 -3.6 0.5 c -3.1 0 -5.5 -1.2 -7.2 -3.6 c -2 -2.7 -4.1 -5.6 -6.1 -8.7 c -2 -3.1 -5.8 -9.7 -11.3 -20 c -5.5 -10.2 -10.2 -19.6 -14.3 -28.2 c -4.1 -8.5 -7.7 -19.5 -10.8 -32.8 c -3.1 -13.3 -4.8 -24.9 -5.1 -34.8 c 0 -9.2 0.3 -17.9 1 -26.1 c 0.7 -8.2 2 -16.7 4.1 -25.6 c 2 -8.9 4.6 -17.2 7.7 -25.1 c 3.1 -7.9 7.7 -15.5 13.8 -23 c 6.1 -7.5 12.6 -14.7 19.5 -21.5 s 15.7 -12.6 26.6 -17.4 c 10.9 -4.8 22.9 -9.4 35.8 -13.8 c 13 -4.4 28.2 -7.3 45.6 -8.7 s 36.2 -2.4 56.3 -3.1 h 45.6 V 55 c 0 -8.2 3.8 -13.8 11.3 -16.9 c 2.4 -1 4.8 -1.5 7.2 -1.5 c 4.8 0 9 1.9 12.8 5.6 l 109.6 109.6 c 3.8 3.4 5.6 7.7 5.6 12.8 S 491.9 174 488.2 177.4 L 488.2 177.4 z%27/%3E%3C/svg%3E\")}.ag-tooltip{padding:0.125rem 0.5rem;border:0.0625rem solid var(--t42-color-opacity-10);border-radius:0.25rem;background:Rgb(var(--t42-bg-light));box-shadow:var(--t42-shadow)}.ag-icon-cancel{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M366.9 336.4c6.1 6.1 9.2 13.5 9.2 22s-3.1 15.9-9.2 22c-6.1 5.5-13.5 8.2-22 8.2c-8.5 0-15.9-2.7-22-8.2l-67.6-77.8l-67.6 77.8c-6.1 5.5-13.5 8.2-22 8.2c-8.5 0-15.9-2.7-22-8.2c-5.5-6.1-8.2-13.5-8.2-22s2.7-15.9 8.2-22l70.7-79.9l-70.7-80.9c-5.5-6.1-8.2-13.5-8.2-22c0-8.5 2.7-15.9 8.2-22c6.1-5.5 13.5-8.2 22-8.2c8.5 0 15.9 2.7 22 8.2l67.6 77.8l67.6-77.8c6.1-5.5 13.5-8.2 22-8.2c8.5 0 15.9 2.7 22 8.2c6.1 6.1 9.2 13.5 9.2 22c0 8.5-3.1 15.9-9.2 22l-70.7 80.9L366.9 336.4z%27/%3E%3C/svg%3E\")}.icon-check-empty::after{width:0.65rem;height:0.65rem}.icon-resize-horizontal{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M512 256q0 7.2-5.6 12.8l-72.7 73.2q-5.6 5.6-13.3 5.6t-12.8-5.6t-5.1-12.8v-36.9h-292.9v36.9q0 7.2-5.1 12.8t-12.8 5.6t-12.8-5.6l-73.2-73.2q-5.6-5.6-5.6-12.8t5.6-12.8l73.2-73.2q5.1-5.6 12.8-5.6t12.8 5.6t5.1 12.8v36.9h292.9v-36.9q0-7.2 5.1-12.8t12.8-5.6t13.3 5.6l72.7 73.2q5.6 5.1 5.6 12.8z%27%3E%3C/path%3E%3C/svg%3E%0A\")}.ag-icon-aggregation{margin:0 0.25rem;-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3E%3Cpath d=%27M3.6,1.7c-0.2,0.7-0.9,1.1-1.5,1C1.5,2.6,1,2,1,1.3C1,0.7,1.5,0.1,2.1,0c0.4-0.1,0.7,0,1,0.2C3.4,0.4,3.6,0.7,3.7,1 c0.3,0,0.5,0.1,0.8,0.3C4.7,1.5,5,1.8,5.2,2.1c0.2,0.3,0.4,0.7,0.6,1c0.1,0.2,0.3,0.5,0.5,0.7c0.2,0.2,0.5,0.5,0.8,0.6 c0.1,0.1,0.3,0.1,0.5,0.1c0.6,0,2.3,0,2.9,0c0.4,0,0.7,0,1.1,0c0,0,0,0,0.1,0c0,0,0,0,0-0.1c0-0.1,0-0.2,0-0.3c0,0,0-0.1,0-0.1 c0-0.1,0.1-0.1,0.2-0.1c0.1,0,0.1,0,0.1,0.1c0.1,0,0.1,0.1,0.2,0.2c0.2,0.2,0.3,0.3,0.5,0.5C12.8,4.8,13,5,13.1,5.1c0,0,0,0,0,0 c0,0,0,0-0.1,0c-1.5,0-4.1,0-5.7,0C7.2,5.2,7,5.1,6.8,5C6.6,4.9,6.3,4.8,6.1,4.6C5.7,4.3,5.5,4,5.2,3.5C5,3.2,4.8,2.8,4.6,2.4 C4.4,2.2,4.3,2.1,4.1,1.9C4,1.8,3.9,1.7,3.8,1.7C3.7,1.7,3.7,1.7,3.6,1.7z%27/%3E%3Cpath d=%27M3.6,7.7c1,0,10.6,0,11,0c0.1,0,0.1,0,0.1,0.1C14.8,7.8,14.9,7.9,15,8c-0.1,0.1-0.2,0.2-0.3,0.3c0,0,0,0-0.1,0 c0,0,0,0-0.1,0c-3.3,0-7.7,0-10.9,0C3.5,8.8,3.2,9.1,2.8,9.3C2.5,9.4,2.2,9.4,2,9.3C1.4,9.1,1,8.6,1,8c0-0.7,0.5-1.2,1.1-1.3 c0.3-0.1,0.7,0,1,0.2C3.4,7.1,3.6,7.3,3.6,7.7z%27/%3E%3Cpath d=%27M13.1,10.9C13.1,10.9,13.1,10.9,13.1,10.9c-0.3,0.3-0.6,0.6-0.8,0.8c-0.1,0.1-0.2,0.2-0.3,0.3c0,0-0.1,0.1-0.1,0.1 c0,0-0.1,0-0.1,0c-0.1,0-0.1,0-0.2-0.1c0,0,0-0.1,0-0.1c0-0.1,0-0.2,0-0.3c0,0,0,0,0-0.1c-1,0-3.1,0-4.1,0c-0.1,0-0.3,0-0.4,0.1 c-0.3,0.1-0.5,0.2-0.7,0.4c-0.2,0.2-0.4,0.5-0.6,0.8c-0.2,0.4-0.4,0.7-0.7,1.1c-0.2,0.2-0.4,0.4-0.6,0.6c-0.1,0.1-0.3,0.2-0.4,0.3 c-0.1,0.1-0.3,0.2-0.4,0.2c0,0-0.1,0-0.1,0c-0.1,0.4-0.3,0.7-0.7,0.9C2.7,16,2.4,16,2.1,16C1.5,15.9,1,15.3,1,14.7 c0-0.7,0.5-1.2,1-1.3c0.3-0.1,0.7,0,1,0.2c0.3,0.2,0.5,0.5,0.6,0.8c0.1,0,0.2,0,0.2,0C4,14.2,4.1,14.1,4.2,14 c0.2-0.2,0.3-0.4,0.5-0.6c0.2-0.3,0.4-0.6,0.6-1c0.2-0.3,0.4-0.6,0.6-0.9c0.3-0.2,0.5-0.5,0.9-0.6c0.2-0.1,0.4-0.1,0.6-0.1 c0,0,0.1,0,0.1,0c0.6,0,2.4,0,3,0c0.8,0,1.7,0,2.5,0C13.1,10.9,13.1,10.9,13.1,10.9C13.1,10.9,13.1,10.9,13.1,10.9z%27/%3E%3Cpath d=%27M3.6,11.7c-0.1,0.4-0.3,0.7-0.7,0.9c-0.3,0.2-0.6,0.2-0.9,0.1C1.5,12.6,1,12.1,1,11.4c0-0.7,0.5-1.2,1.1-1.3 c0.3-0.1,0.7,0,1,0.2c0.3,0.2,0.5,0.5,0.6,0.8c0.1,0,0.1,0,0.2,0c0.2,0,0.3-0.1,0.4-0.2c0.2-0.1,0.4-0.3,0.5-0.4 C4.9,10.3,5,10.2,5,10.2C5.3,9.9,5.6,9.7,6,9.6c0.3-0.1,0.6-0.2,0.8-0.2c0.1,0,0.1,0,0.2,0c1.1,0,3.4,0,4.5,0c0.9,0,1.8,0,2.6,0 c0,0,0,0,0.1,0c0,0,0,0,0,0C14,9.6,13.8,9.8,13.6,10c-1.8,0-4.8,0-6.6,0c-0.3,0-0.6,0.1-0.9,0.2c-0.2,0.1-0.5,0.3-0.6,0.5 c-0.3,0.3-0.5,0.5-0.8,0.7c-0.2,0.1-0.4,0.2-0.6,0.3C3.9,11.7,3.8,11.7,3.6,11.7C3.7,11.7,3.7,11.7,3.6,11.7z%27/%3E%3Cpath d=%27M3.6,4.9C3.5,5.3,3.3,5.6,2.9,5.8C2.6,5.9,2.3,6,2,5.9C1.4,5.7,1,5.2,1,4.5c0-0.6,0.5-1.2,1.1-1.3c0.7-0.1,1.4,0.3,1.5,1 c0,0,0.1,0,0.1,0c0.3,0,0.5,0.1,0.7,0.3C4.7,4.7,5,4.9,5.2,5c0.1,0.1,0.2,0.2,0.4,0.4c0.3,0.3,0.6,0.5,1,0.5C6.7,6,6.9,6,7,6 c1.8,0,4.8,0,6.6,0c0.1,0.1,0.3,0.3,0.6,0.6c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0-0.1,0c-2,0-5.1,0-7.1,0c-0.3,0-0.5,0-0.8-0.1 C6,6.5,5.7,6.4,5.5,6.2C5.3,6.1,5.1,5.9,5,5.8C4.8,5.5,4.5,5.3,4.2,5.1C4.1,5,3.9,4.9,3.6,4.9z%27/%3E%3C/svg%3E%0A\")}.ag-icon-loading{position:relative;width:1rem;height:1rem;border-radius:50%;background:linear-gradient(to right, var(--t42-icon-color), Rgba(var(--t42-bg-dark) 42%));transform:translateZ(0);animation:icon-loading 1.4s infinite linear}.ag-icon-loading::before{position:absolute;top:0;left:0;width:50%;height:50%;border-radius:100% 0 0;background:var(--t42-icon-color);content:\"\"}.ag-icon-loading::after{position:absolute;top:0;right:0;bottom:0;left:0;width:75%;height:75%;margin:auto;border-radius:50%;background:Rgb(var(--t42-bg-dark));content:\"\"}.ag-loading{display:flex;padding-left:0.5rem}@keyframes icon-loading{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.search{position:relative}.search i{position:absolute;top:0.625rem;right:0.75rem;width:.75rem;height:.75rem;background-color:var(--t42-content-color);-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 512 512%27%3E%3Cpath d=%27M328.9 219.4q0-52.7-37.4-90.1t-90.6-37.9t-90.6 37.9t-37.4 90.1t37.4 90.6t90.6 37.4t90.6-37.4t37.4-90.6zM475.3 457.5q0 14.8-11.3 25.6t-25.6 10.8q-15.4 0-25.6-10.8l-97.8-97.8q-51.2 35.3-114.2 35.3q-41 0-78.3-15.9t-64-43t-43-64t-15.9-78.3t15.9-77.8t43-64.5t64-43t78.3-15.9t78.3 15.9t64 43t43 64.5t15.9 77.8q0 63-35.3 114.2l97.8 97.8q10.8 10.8 10.8 26.1z%27%3E%3C/path%3E%3C/svg%3E%0A\")}.search-results{position:absolute;top:33px;max-height:215px;overflow-y:auto}.search-results .list-group-item{white-space:nowrap}.select{position:relative;z-index:12;display:flex;align-items:center;justify-content:center;width:100%;height:2rem;list-style:none;cursor:pointer}.select input[type=\"radio\"]{opacity:1}.select_expand{position:absolute;top:0;right:0;width:0;height:2rem}.select_expand::after{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:transform;position:absolute;top:50%;right:0;z-index:2;width:1rem;height:1rem;background:var(--t42-select-indicator) center center/1rem 1rem no-repeat;transform:translate(-65%, -55%);content:\"\";pointer-events:none}.select_expand:checked+.select_close_label+.select_options .select_label:hover{color:var(--t42-link-hover-color);background-color:var(--t42-link-active-bg)}.select_expand:checked::after{transform:translate(-65%, -55%) rotate(-180deg)}.select_expand_label{position:absolute;top:0;left:0;display:block;width:100%;height:2rem;margin-bottom:0;cursor:pointer}.select_close{display:none}.select_close_label{position:fixed;top:0;left:0;display:none;margin-bottom:0}.select_items{position:absolute;top:0;left:0;width:100%;min-height:2rem;border-color:var(--t42-color-opacity-10);border-style:solid;border-width:1px}.select_items:hover{border-color:var(--primary)}.select_input{display:none}.select_label{display:block;height:0;margin-bottom:0;padding-left:0.875rem;overflow:hidden;line-height:2rem;cursor:pointer;transition:all 200ms cubic-bezier(0.4, 0.25, 0.3, 1)}.select_label-placeholder{position:absolute;top:0;left:0;height:2rem;vertical-align:middle;background-color:transparent}.select_expand:checked+.select_close_label{display:block}.select_expand:checked+.select_close_label::before,.select_expand:checked+.select_close_label::after{display:none}.select_expand:checked+.select_close_label+.select_options .select_label{height:2rem}.select_expand:checked+.select_close_label+.select_options+.select_expand_label{display:none}.select_input:checked+.select_label{height:2rem}.select_option label{color:var(--t42-content-color)}.select_options{max-height:10rem;padding-left:0;overflow:auto;list-style:none}.dark{--t42-json-icons: url(\"data:image/svg+xml,%3C%3Fxml version=%271.0%27 encoding=%27UTF-8%27 standalone=%27no%27%3F%3E%3Csvg xmlns:dc=%27http://purl.org/dc/elements/1.1/%27 xmlns:cc=%27http://creativecommons.org/ns%23%27 xmlns:rdf=%27http://www.w3.org/1999/02/22-rdf-syntax-ns%23%27 xmlns:svg=%27http://www.w3.org/2000/svg%27 xmlns=%27http://www.w3.org/2000/svg%27 xmlns:sodipodi=%27http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd%27 xmlns:inkscape=%27http://www.inkscape.org/namespaces/inkscape%27 width=%27240%27 height=%27144%27 id=%27svg4136%27 version=%271.1%27 inkscape:version=%270.91 r13725%27 sodipodi:docname=%27jsoneditor-icons.svg%27%3E%3Ctitle id=%27title6512%27%3EJSON Editor Icons%3C/title%3E%3Crect id=%27svg_1-7%27 height=%2716%27 width=%2716%27 y=%273.999995%27 x=%2728.000006%27 style=%27fill:%23ff511f;%27 /%3E%3Crect x=%277%27 y=%2711%27 width=%2710%27 height=%272%27 id=%27svg_1-1%27 style=%27fill:%23ffffff;%27 /%3E%3Crect x=%2711%27 y=%277%27 width=%272%27 height=%2710%27 id=%27svg_1-1-1%27 style=%27fill:%23ffffff;%27 /%3E%3Cg id=%27g4299-3%27 transform=%27matrix%280.70710678,-0.70710678,0.70710678,0.70710678,19.029435,12.000001%29%27 style=%27%27%3E%3Crect x=%277%27 y=%2711%27 width=%2710%27 height=%272%27 id=%27svg_1-1-0%27 style=%27fill:%23ffffff;%27 /%3E%3Crect x=%2711%27 y=%277%27 width=%272%27 height=%2710%27 id=%27svg_1-1-1-9%27 style=%27fill:%23ffffff;%27 /%3E%3C/g%3E%3Crect height=%277%27 width=%277%27 y=%277%27 x=%2755%27 style=%27fill:%23ffffff;stroke-width:1;stroke:%23ffffff%27 /%3E%3Crect id=%27svg_1-7-5-7%27 height=%277%27 width=%277%27 y=%2710%27 x=%2758%27 style=%27fill:%23ffffff;stroke-width:1;stroke:%231d1d1d%27 /%3E%3Cg id=%27g4378%27%3E%3Crect style=%27fill:%23ffffff;%27 x=%27198%27 y=%2711%27 width=%278%27 height=%272%27 id=%27svg_1-7-5-3%27 /%3E%3Crect id=%27rect4374%27 height=%272%27 width=%2712%27 y=%277%27 x=%27198%27 style=%27fill:%23ffffff;%27 /%3E%3Crect id=%27rect4376%27 height=%272%27 width=%274%27 y=%2715%27 x=%27198%27 style=%27fill:%23ffffff;%27 /%3E%3C/g%3E%3Cg transform=%27matrix%281,0,0,-1,-23.999995,23.999995%29%27 id=%27g4383%27%3E%3Crect id=%27rect4385%27 height=%272%27 width=%278%27 y=%2711%27 x=%27198%27 style=%27fill:%23ffffff;%27 /%3E%3Crect style=%27fill:%23ffffff;%27 x=%27198%27 y=%277%27 width=%2712%27 height=%272%27 id=%27rect4387%27 /%3E%3Crect style=%27fill:%23ffffff;%27 x=%27198%27 y=%2715%27 width=%274%27 height=%272%27 id=%27rect4389%27 /%3E%3C/g%3E%3Cpath style=%27fill:%23ffffff;%27 d=%27m 85.10447,6.0157384 -0.0156,1.4063 c 3.02669,-0.2402 0.33008,3.6507996 2.48438,4.5780996 -2.18694,1.0938 0.49191,4.9069 -2.45313,4.5781 l -0.0156,1.4219 c 5.70828,0.559 1.03264,-5.1005 4.70313,-5.2656 l 0,-1.4063 c -3.61303,-0.027 1.11893,-5.7069996 -4.70313,-5.3124996 z%27 id=%27path4351%27 /%3E%3Cpath style=%27fill:%23ffffff;%27 d=%27m 82.78125,5.9984384 0.0156,1.4063 c -3.02668,-0.2402 -0.33007,3.6506996 -2.48437,4.5780996 2.18694,1.0938 -0.49192,4.9069 2.45312,4.5781 l 0.0156,1.4219 c -5.70827,0.559 -1.03263,-5.1004 -4.70312,-5.2656 l 0,-1.4063 c 3.61303,-0.027 -1.11894,-5.7070996 4.70312,-5.3124996 z%27 id=%27path4351-9%27 /%3E%3Cpath style=%27fill:%23ffffff;%27 d=%27m 103.719,5.6719384 0,12.7187996 3.03125,0 0,-1.5313 -1.34375,0 0,-9.6249996 1.375,0 0,-1.5625 z%27 id=%27path2987%27 /%3E%3Cpath style=%27fill:%23ffffff;%27 d=%27m 112.2185,5.6721984 0,12.7187996 -3.03125,0 0,-1.5313 1.34375,0 0,-9.6249996 -1.375,0 0,-1.5625 z%27 id=%27path2987-1%27 /%3E%3Cpath style=%27fill:%23ffffff;%27 d=%27M133,6.4h-1.9l-4.8,11.2h1.8l1.1-2.9h5.7l1.1,2.9h1.8L133,6.4z M129.7,13.5l2.3-5.5l2.3,5.5L129.7,13.5z%27 id=%27path3780%27 /%3E%3Cpath style=%27fill:%23ffffff;%27 d=%27m 156.47655,5.8917384 0,2.1797 0.46093,2.3983996 1.82813,0 0.39844,-2.3983996 0,-2.1797 z%27 id=%27path5008-2%27 /%3E%3Cpath style=%27fill:%23ffffff;%27 d=%27m 152.51561,5.8906384 0,2.1797 0.46094,2.3983996 1.82812,0 0.39844,-2.3983996 0,-2.1797 z%27 id=%27path5008-2-8%27 /%3E%3Crect id=%27svg_1-7-2%27 height=%272%27 width=%2712%27 y=%2764%27 x=%2754%27 style=%27fill:%236e6e6e;%27 /%3E%3Crect id=%27svg_1-7-2-2%27 height=%273%27 width=%273%27 y=%2752%27 x=%2780%27 style=%27fill:%236e6e6e;%27 /%3E%3Crect style=%27fill:%236e6e6e;%27 x=%2785%27 y=%2752%27 width=%273%27 height=%273%27 id=%27rect4561%27 /%3E%3Crect style=%27fill:%236e6e6e;%27 x=%2780%27 y=%2758%27 width=%273%27 height=%273%27 id=%27rect4563%27 /%3E%3Crect id=%27rect4565%27 height=%273%27 width=%273%27 y=%2758%27 x=%2785%27 style=%27fill:%236e6e6e;%27 /%3E%3Crect id=%27rect4567%27 height=%273%27 width=%273%27 y=%2764%27 x=%2780%27 style=%27fill:%236e6e6e;%27 /%3E%3Crect style=%27fill:%236e6e6e;%27 x=%2785%27 y=%2764%27 width=%273%27 height=%273%27 id=%27rect4569%27 /%3E%3Ccircle style=%27opacity:1;fill:none;stroke:%236e6e6e;stroke-width:2;%27 id=%27path4571%27 cx=%27110.06081%27 cy=%2757.939209%27 r=%274.7438836%27 /%3E%3Crect style=%27fill:%236e6e6e;%27 x=%27116.64566%27 y=%27-31.79752%27 width=%274.229713%27 height=%276.4053884%27 id=%27rect4563-2%27 transform=%27matrix%280.70710678,0.70710678,-0.70710678,0.70710678,0,0%29%27 /%3E%3Cpath style=%27fill:%236e6e6e;fill-rule:evenodd;%27 d=%27M 125,56 138.77027,56.095 132,64 Z%27 id=%27path4613%27 /%3E%3Cpath id=%27path4615%27 d=%27M 149,64 162.77027,63.905 156,56 Z%27 style=%27fill:%236e6e6e;fill-rule:evenodd;%27 /%3E%3Crect style=%27fill:%236e6e6e;%27 x=%2754%27 y=%2753%27 width=%2712%27 height=%272%27 id=%27rect4638%27 /%3E%3Crect id=%27svg_1-7-2-24%27 height=%272%27 width=%2713%27 y=%27-56%27 x=%2753%27 style=%27fill:%236e6e6e;%27 transform=%27matrix%280,1,-1,0,0,0%29%27 /%3E%3Crect transform=%27matrix%280,1,-1,0,0,0%29%27 style=%27fill:%236e6e6e;%27 x=%2753%27 y=%27-66%27 width=%2713%27 height=%272%27 id=%27rect4657%27 /%3E%3Crect id=%27rect4659%27 height=%271%27 width=%2712%27 y=%2757%27 x=%2754%27 style=%27fill:%236e6e6e;%27 /%3E%3Crect style=%27fill:%23ffffff;%27 x=%2754%27 y=%2788%27 width=%2712%27 height=%272%27 id=%27rect4661%27 /%3E%3Crect style=%27fill:%23ffffff;%27 x=%2780%27 y=%2776%27 width=%273%27 height=%273%27 id=%27rect4663%27 /%3E%3Crect id=%27rect4665%27 height=%273%27 width=%273%27 y=%2776%27 x=%2785%27 style=%27fill:%23ffffff;%27 /%3E%3Crect id=%27rect4667%27 height=%273%27 width=%273%27 y=%2782%27 x=%2780%27 style=%27fill:%23ffffff;%27 /%3E%3Crect style=%27fill:%23ffffff;%27 x=%2785%27 y=%2782%27 width=%273%27 height=%273%27 id=%27rect4669%27 /%3E%3Crect style=%27fill:%23ffffff;%27 x=%2780%27 y=%2788%27 width=%273%27 height=%273%27 id=%27rect4671%27 /%3E%3Crect id=%27rect4673%27 height=%273%27 width=%273%27 y=%2788%27 x=%2785%27 style=%27fill:%23ffffff;%27 /%3E%3Ccircle r=%274.7438836%27 cy=%2781.939331%27 cx=%27110.06081%27 id=%27circle4675%27 style=%27opacity:1;fill:none;stroke:%23ffffff;stroke-width:2;%27 /%3E%3Crect transform=%27matrix%280.70710678,0.70710678,-0.70710678,0.70710678,0,0%29%27 id=%27rect4677%27 height=%276.4053884%27 width=%274.229713%27 y=%27-14.826816%27 x=%27133.6163%27 style=%27fill:%23ffffff;%27 /%3E%3Cpath id=%27path4679%27 d=%27m 125,80.000005 13.77027,0.09499 L 132,87.999992 Z%27 style=%27fill:%23ffffff;%27 /%3E%3Cpath style=%27fill:%23ffffff;%27 d=%27M 149,88.0002 162.77027,87.9052 156,80.0002 Z%27 id=%27path4681%27 /%3E%3Crect id=%27rect4683%27 height=%272%27 width=%2712%27 y=%2777%27 x=%2754%27 style=%27fill:%23ffffff;%27 /%3E%3Crect transform=%27matrix%280,1,-1,0,0,0%29%27 style=%27fill:%23ffffff;%27 x=%2777%27 y=%27-56%27 width=%2713%27 height=%272%27 id=%27rect4685%27 /%3E%3Crect id=%27rect4687%27 height=%272%27 width=%2713%27 y=%27-66%27 x=%2777%27 style=%27fill:%23ffffff;%27 transform=%27matrix%280,1,-1,0,0,0%29%27 /%3E%3Crect style=%27fill:%23ffffff;%27 x=%2754%27 y=%2781%27 width=%2712%27 height=%271%27 id=%27rect4689%27 /%3E%3Crect id=%27rect4761-1%27 height=%272%27 width=%2716%27 y=%27101%27 x=%2776%27 style=%27fill:%23ffffff;%27 /%3E%3Crect id=%27rect4761-0%27 height=%272%27 width=%2716%27 y=%27105%27 x=%2776%27 style=%27fill:%23ffffff;%27 /%3E%3Crect id=%27rect4761-7%27 height=%272%27 width=%279%27 y=%27109%27 x=%2776%27 style=%27fill:%23ffffff;%27 /%3E%3Crect id=%27rect4761-1-1%27 height=%272%27 width=%2712%27 y=%27125%27 x=%2776%27 style=%27fill:%23ffffff;%27 /%3E%3Crect id=%27rect4761-1-1-4%27 height=%272%27 width=%2710%27 y=%27137%27 x=%2776%27 style=%27fill:%23ffffff;%27 /%3E%3Crect id=%27rect4761-1-1-4-4%27 height=%272%27 width=%2710%27 y=%27129%27 x=%2782%27 style=%27fill:%23ffffff;%27 /%3E%3Crect id=%27rect4761-1-1-4-4-3%27 height=%272%27 width=%279%27 y=%27133%27 x=%2782%27 style=%27fill:%23ffffff;%27 /%3E%3Cpath style=%27fill:%23ffffff;%27 d=%27m 36.398438,100.0254 c -0.423362,-0.013 -0.846847,0.01 -1.265626,0.062 -1.656562,0.2196 -3.244567,0.9739 -4.507812,2.2266 L 29,100.5991 l -2.324219,7.7129 7.826172,-1.9062 -1.804687,-1.9063 c 1.597702,-1.5308 4.048706,-1.8453 5.984375,-0.7207 1.971162,1.1452 2.881954,3.3975 2.308593,5.5508 -0.573361,2.1533 -2.533865,3.6953 -4.830078,3.6953 l 0,3.0742 c 3.550756,0 6.710442,-2.4113 7.650391,-5.9414 0.939949,-3.5301 -0.618463,-7.2736 -3.710938,-9.0703 -1.159678,-0.6738 -2.431087,-1.0231 -3.701171,-1.0625 z%27 id=%27path4138%27 /%3E%3Cpath style=%27fill:%23ffffff;%27 d=%27m 59.722656,99.9629 c -1.270084,0.039 -2.541493,0.3887 -3.701172,1.0625 -3.092475,1.7967 -4.650886,5.5402 -3.710937,9.0703 0.939949,3.5301 4.09768,5.9414 7.648437,5.9414 l 0,-3.0742 c -2.296214,0 -4.256717,-1.542 -4.830078,-3.6953 -0.573361,-2.1533 0.337432,-4.4056 2.308594,-5.5508 1.935731,-1.1246 4.38863,-0.8102 5.986326,0.7207 l -1.806638,1.9063 7.828128,1.9062 -2.32422,-7.7129 -1.62696,1.7168 c -1.26338,-1.2531 -2.848917,-2.0088 -4.505855,-2.2285 -0.418778,-0.055 -0.842263,-0.076 -1.265625,-0.062 z%27 id=%27path4138-1%27 /%3E%3Cpath style=%27fill:%23ffffff;%27 d=%27m 10.5,100 0,2 -2.4999996,0 L 12,107 l 4,-5 -2.5,0 0,-2 -3,0 z%27 id=%27path3055-0-77%27 /%3E%3Cpath style=%27fill:none;stroke:%23ffffff;%27 d=%27m 4.9850574,108.015 14.0298856,-0.03%27 id=%27path5244-5-0-5%27 /%3E%3Cpath style=%27fill:none;stroke:%23ffffff;%27 d=%27m 4.9849874,132.015 14.0298866,-0.03%27 id=%27path5244-5-0-5-8%27 /%3E%3Cpath style=%27color:%23000000;fill:%236e6e6e;%27 d=%27m 36.398438,123.9629 c -0.423362,-0.013 -0.846847,0.01 -1.265626,0.062 -1.656562,0.2196 -3.244567,0.9739 -4.507812,2.2266 L 29,124.5366 l -2.324219,7.7129 7.826172,-1.9062 -1.804687,-1.9063 c 1.597702,-1.5308 4.048706,-1.8453 5.984375,-0.7207 1.971162,1.1453 2.881954,3.3975 2.308593,5.5508 -0.573361,2.1533 -2.533864,3.6953 -4.830078,3.6953 l 0,3.0742 c 3.550757,0 6.710442,-2.4093 7.650391,-5.9394 0.939949,-3.5301 -0.618463,-7.2756 -3.710938,-9.0723 -1.159678,-0.6737 -2.431087,-1.0231 -3.701171,-1.0625 z%27 id=%27path4138-12%27 /%3E%3Cpath style=%27color:%23000000;fill:%236e6e6e;%27 d=%27m 59.722656,123.9629 c -1.270084,0.039 -2.541493,0.3888 -3.701172,1.0625 -3.092475,1.7967 -4.650886,5.5422 -3.710937,9.0723 0.939949,3.5301 4.09768,5.9394 7.648437,5.9394 l 0,-3.0742 c -2.296214,0 -4.256717,-1.542 -4.830078,-3.6953 -0.573361,-2.1533 0.337432,-4.4055 2.308594,-5.5508 1.935731,-1.1246 4.38863,-0.8102 5.986326,0.7207 l -1.806638,1.9063 7.828128,1.9062 -2.32422,-7.7129 -1.62696,1.7168 c -1.26338,-1.2531 -2.848917,-2.0088 -4.505855,-2.2285 -0.418778,-0.055 -0.842263,-0.076 -1.265625,-0.062 z%27 id=%27path4138-1-3%27 /%3E%3Cpath id=%27path6191%27 d=%27m 10.5,116 0,-2 -2.4999996,0 L 12,109 l 4,5 -2.5,0 0,2 -3,0 z%27 style=%27fill:%23ffffff;stroke-width:1.96599996;%27 /%3E%3Cpath style=%27fill:%23ffffff;stroke-width:1.96599996;%27 d=%27m 10.5,129 0,-2 -2.4999996,0 L 12,122 l 4,5 -2.5,0 0,2 -3,0 z%27 id=%27path6193%27 /%3E%3Cpath id=%27path6195%27 d=%27m 10.5,135 0,2 -2.4999996,0 L 12,142 l 4,-5 -2.5,0 0,-2 -3,0 z%27 style=%27fill:%23ffffff;stroke-width:1.96599996;%27 /%3E%3Cpath sodipodi:type=%27star%27 style=%27fill:%236e6e6e;%27 id=%27path4500%27 sodipodi:sides=%273%27 sodipodi:cx=%2711.55581%27 sodipodi:cy=%2760.073242%27 sodipodi:r1=%275.1116104%27 sodipodi:r2=%272.5558052%27 sodipodi:arg1=%270%27 sodipodi:arg2=%271.0471976%27 inkscape:flatsided=%27false%27 inkscape:rounded=%270%27 inkscape:randomized=%270%27 d=%27m 16.66742,60.073242 -3.833708,2.213392 -3.8337072,2.213393 0,-4.426785 0,-4.426784 3.8337082,2.213392 z%27 inkscape:transform-center-x=%27-1.2779026%27 /%3E%3Cpath inkscape:transform-center-x=%271.277902%27 d=%27m -31.500004,60.073242 -3.833708,2.213392 -3.833707,2.213393 0,-4.426785 0,-4.426784 3.833707,2.213392 z%27 inkscape:randomized=%270%27 inkscape:rounded=%270%27 inkscape:flatsided=%27false%27 sodipodi:arg2=%271.0471976%27 sodipodi:arg1=%270%27 sodipodi:r2=%272.5558052%27 sodipodi:r1=%275.1116104%27 sodipodi:cy=%2760.073242%27 sodipodi:cx=%27-36.611614%27 sodipodi:sides=%273%27 id=%27path4502%27 style=%27fill:%236e6e6e;%27 sodipodi:type=%27star%27 transform=%27scale%28-1,1%29%27 /%3E%3Cpath d=%27m 16.66742,60.073212 -3.833708,2.213392 -3.8337072,2.213392 0,-4.426784 0,-4.426785 3.8337082,2.213392 z%27 inkscape:randomized=%270%27 inkscape:rounded=%270%27 inkscape:flatsided=%27false%27 sodipodi:arg2=%271.0471976%27 sodipodi:arg1=%270%27 sodipodi:r2=%272.5558052%27 sodipodi:r1=%275.1116104%27 sodipodi:cy=%2760.073212%27 sodipodi:cx=%2711.55581%27 sodipodi:sides=%273%27 id=%27path4504%27 style=%27fill:%236e6e6e;%27 sodipodi:type=%27star%27 transform=%27matrix%280,1,-1,0,72.0074,71.7877%29%27 inkscape:transform-center-y=%271.2779029%27 /%3E%3Cpath inkscape:transform-center-y=%27-1.2779026%27 transform=%27matrix%280,-1,-1,0,96,96%29%27 sodipodi:type=%27star%27 style=%27fill:%236e6e6e;%27 id=%27path4506%27 sodipodi:sides=%273%27 sodipodi:cx=%2711.55581%27 sodipodi:cy=%2760.073212%27 sodipodi:r1=%275.1116104%27 sodipodi:r2=%272.5558052%27 sodipodi:arg1=%270%27 sodipodi:arg2=%271.0471976%27 inkscape:flatsided=%27false%27 inkscape:rounded=%270%27 inkscape:randomized=%270%27 d=%27m 16.66742,60.073212 -3.833708,2.213392 -3.8337072,2.213392 0,-4.426784 0,-4.426785 3.8337082,2.213392 z%27 /%3E%3Cpath id=%27path4615-5%27 d=%27m 171.82574,65.174193 16.34854,0 -8.17427,-13.348454 z%27 style=%27fill:%23f9a825;fill-rule:evenodd;stroke:%23f9a825;stroke-width:2;%27 /%3E%3Cpath style=%27opacity:1;fill:%23ffffff;%27 d=%27m 179,55 0,6 2,0 0,-6%27 id=%27path4300%27 /%3E%3Cpath style=%27opacity:1;fill:%23ffffff;%27 d=%27m 179,62 0,2 2,0 0,-2%27 id=%27path4300-6%27 /%3E%3Cpath style=%27fill:%23ffffff;%27 d=%27M 99.994369,113.0221 102,114.98353 l 7,-6.9558 3,0.97227 2,-1 1,-2 0,-3 -3,3 -3,-3 3,-3 -3,0 -2,1 -1,2 0.99437,3.0221 z%27 id=%27path4268%27 /%3E%3Cpath style=%27fill:%23ffffff;%27 d=%27m 234,6 0,2 -5,5 0,5 -2,0 0,-5 -5,-5 0,-2%27 id=%27path3546%27 /%3E%3Cg transform=%27matrix%281.3333328,0,0,-1.5999992,-139.9999,127.19999%29%27 id=%27g4383-6%27%3E%3Crect id=%27rect4385-2%27 height=%271%27 width=%276%27 y=%2712.625005%27 x=%27198%27 style=%27fill:%23ffffff;stroke:%23000000;stroke-width:0%27 /%3E%3Crect style=%27fill:%23ffffff;stroke:%23000000;stroke-width:0%27 x=%27198%27 y=%2715.125007%27 width=%278%27 height=%271%27 id=%27rect4387-9%27 /%3E%3Crect style=%27fill:%23ffffff;stroke:%23000000;stroke-width:0%27 x=%27198%27 y=%277.6250024%27 width=%273%27 height=%271%27 id=%27rect4389-1-0%27 /%3E%3Crect style=%27fill:%23ffffff;stroke:%23000000;stroke-width:0%27 x=%27198%27 y=%2710.125004%27 width=%274%27 height=%271%27 id=%27rect4389-1-9%27 /%3E%3Cpath style=%27fill:%23ffffff;%27 d=%27m 207.00001,16.375004 0,-5.625005 -2.25,0 3,-3.1250014 3,3.1250014 -2.25,0 0,5.625005 -1.5,0%27 id=%27path4402%27 /%3E%3C/g%3E%3Cpath style=%27fill:%23ffffff;%27 d=%27m 164,100 0,3 -6,6 0,7 -4,0 0,-7 -6,-6 0,-3%27 id=%27path3546-2-2%27 /%3E%3Cpath id=%27path4402-5-7%27 d=%27m 15,41 0,-7 -4,0 0,3 -5,-4 5,-4 0,3 6,0 0,9%27 style=%27fill:%23ffffff;%27 /%3E%3C/svg%3E%0A\")}.light{--t42-json-icons: url(\"data:image/svg+xml,%3C%3Fxml version=%271.0%27 encoding=%27UTF-8%27 standalone=%27no%27%3F%3E%3Csvg xmlns:dc=%27http://purl.org/dc/elements/1.1/%27 xmlns:cc=%27http://creativecommons.org/ns%23%27 xmlns:rdf=%27http://www.w3.org/1999/02/22-rdf-syntax-ns%23%27 xmlns:svg=%27http://www.w3.org/2000/svg%27 xmlns=%27http://www.w3.org/2000/svg%27 xmlns:sodipodi=%27http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd%27 xmlns:inkscape=%27http://www.inkscape.org/namespaces/inkscape%27 width=%27240%27 height=%27144%27 id=%27svg4136%27 version=%271.1%27 inkscape:version=%270.91 r13725%27 sodipodi:docname=%27jsoneditor-icons.svg%27%3E%3Ctitle id=%27title6512%27%3EJSON Editor Icons%3C/title%3E%3Crect id=%27svg_1-7%27 height=%2716%27 width=%2716%27 y=%273.999995%27 x=%2728.000006%27 style=%27fill:%23ff511f;%27 /%3E%3Crect x=%277%27 y=%2711%27 width=%2710%27 height=%272%27 id=%27svg_1-1%27 style=%27fill:%230d0d0d;%27 /%3E%3Crect x=%2711%27 y=%277%27 width=%272%27 height=%2710%27 id=%27svg_1-1-1%27 style=%27fill:%230d0d0d;%27 /%3E%3Cg id=%27g4299-3%27 transform=%27matrix%280.70710678,-0.70710678,0.70710678,0.70710678,19.029435,12.000001%29%27 style=%27%27%3E%3Crect x=%277%27 y=%2711%27 width=%2710%27 height=%272%27 id=%27svg_1-1-0%27 style=%27fill:%23ffffff;%27 /%3E%3Crect x=%2711%27 y=%277%27 width=%272%27 height=%2710%27 id=%27svg_1-1-1-9%27 style=%27fill:%23ffffff;%27 /%3E%3C/g%3E%3Crect height=%277%27 width=%277%27 y=%277%27 x=%2755%27 style=%27fill:%230d0d0d;stroke-width:1;stroke:%230d0d0d%27 /%3E%3Crect id=%27svg_1-7-5-7%27 height=%277%27 width=%277%27 y=%2710%27 x=%2758%27 style=%27fill:%230d0d0d;stroke-width:1;stroke:%23ffffff%27 /%3E%3Cg id=%27g4378%27%3E%3Crect style=%27fill:%230d0d0d;%27 x=%27198%27 y=%2711%27 width=%278%27 height=%272%27 id=%27svg_1-7-5-3%27 /%3E%3Crect id=%27rect4374%27 height=%272%27 width=%2712%27 y=%277%27 x=%27198%27 style=%27fill:%230d0d0d;%27 /%3E%3Crect id=%27rect4376%27 height=%272%27 width=%274%27 y=%2715%27 x=%27198%27 style=%27fill:%230d0d0d;%27 /%3E%3C/g%3E%3Cg transform=%27matrix%281,0,0,-1,-23.999995,23.999995%29%27 id=%27g4383%27%3E%3Crect id=%27rect4385%27 height=%272%27 width=%278%27 y=%2711%27 x=%27198%27 style=%27fill:%230d0d0d;%27 /%3E%3Crect style=%27fill:%230d0d0d;%27 x=%27198%27 y=%277%27 width=%2712%27 height=%272%27 id=%27rect4387%27 /%3E%3Crect style=%27fill:%230d0d0d;%27 x=%27198%27 y=%2715%27 width=%274%27 height=%272%27 id=%27rect4389%27 /%3E%3C/g%3E%3Cpath style=%27fill:%230d0d0d;%27 d=%27m 85.10447,6.0157384 -0.0156,1.4063 c 3.02669,-0.2402 0.33008,3.6507996 2.48438,4.5780996 -2.18694,1.0938 0.49191,4.9069 -2.45313,4.5781 l -0.0156,1.4219 c 5.70828,0.559 1.03264,-5.1005 4.70313,-5.2656 l 0,-1.4063 c -3.61303,-0.027 1.11893,-5.7069996 -4.70313,-5.3124996 z%27 id=%27path4351%27 /%3E%3Cpath style=%27fill:%230d0d0d;%27 d=%27m 82.78125,5.9984384 0.0156,1.4063 c -3.02668,-0.2402 -0.33007,3.6506996 -2.48437,4.5780996 2.18694,1.0938 -0.49192,4.9069 2.45312,4.5781 l 0.0156,1.4219 c -5.70827,0.559 -1.03263,-5.1004 -4.70312,-5.2656 l 0,-1.4063 c 3.61303,-0.027 -1.11894,-5.7070996 4.70312,-5.3124996 z%27 id=%27path4351-9%27 /%3E%3Cpath style=%27fill:%230d0d0d;%27 d=%27m 103.719,5.6719384 0,12.7187996 3.03125,0 0,-1.5313 -1.34375,0 0,-9.6249996 1.375,0 0,-1.5625 z%27 id=%27path2987%27 /%3E%3Cpath style=%27fill:%230d0d0d;%27 d=%27m 112.2185,5.6721984 0,12.7187996 -3.03125,0 0,-1.5313 1.34375,0 0,-9.6249996 -1.375,0 0,-1.5625 z%27 id=%27path2987-1%27 /%3E%3Cpath style=%27fill:%230d0d0d;%27 d=%27M133,6.4h-1.9l-4.8,11.2h1.8l1.1-2.9h5.7l1.1,2.9h1.8L133,6.4z M129.7,13.5l2.3-5.5l2.3,5.5L129.7,13.5z%27 id=%27path3780%27 /%3E%3Cpath style=%27fill:%230d0d0d;%27 d=%27m 156.47655,5.8917384 0,2.1797 0.46093,2.3983996 1.82813,0 0.39844,-2.3983996 0,-2.1797 z%27 id=%27path5008-2%27 /%3E%3Cpath style=%27fill:%230d0d0d;%27 d=%27m 152.51561,5.8906384 0,2.1797 0.46094,2.3983996 1.82812,0 0.39844,-2.3983996 0,-2.1797 z%27 id=%27path5008-2-8%27 /%3E%3Crect id=%27svg_1-7-2%27 height=%272%27 width=%2712%27 y=%2764%27 x=%2754%27 style=%27fill:%236e6e6e;%27 /%3E%3Crect id=%27svg_1-7-2-2%27 height=%273%27 width=%273%27 y=%2752%27 x=%2780%27 style=%27fill:%236e6e6e;%27 /%3E%3Crect style=%27fill:%236e6e6e;%27 x=%2785%27 y=%2752%27 width=%273%27 height=%273%27 id=%27rect4561%27 /%3E%3Crect style=%27fill:%236e6e6e;%27 x=%2780%27 y=%2758%27 width=%273%27 height=%273%27 id=%27rect4563%27 /%3E%3Crect id=%27rect4565%27 height=%273%27 width=%273%27 y=%2758%27 x=%2785%27 style=%27fill:%236e6e6e;%27 /%3E%3Crect id=%27rect4567%27 height=%273%27 width=%273%27 y=%2764%27 x=%2780%27 style=%27fill:%236e6e6e;%27 /%3E%3Crect style=%27fill:%236e6e6e;%27 x=%2785%27 y=%2764%27 width=%273%27 height=%273%27 id=%27rect4569%27 /%3E%3Ccircle style=%27opacity:1;fill:none;stroke:%236e6e6e;stroke-width:2;%27 id=%27path4571%27 cx=%27110.06081%27 cy=%2757.939209%27 r=%274.7438836%27 /%3E%3Crect style=%27fill:%236e6e6e;%27 x=%27116.64566%27 y=%27-31.79752%27 width=%274.229713%27 height=%276.4053884%27 id=%27rect4563-2%27 transform=%27matrix%280.70710678,0.70710678,-0.70710678,0.70710678,0,0%29%27 /%3E%3Cpath style=%27fill:%236e6e6e;fill-rule:evenodd;%27 d=%27M 125,56 138.77027,56.095 132,64 Z%27 id=%27path4613%27 /%3E%3Cpath id=%27path4615%27 d=%27M 149,64 162.77027,63.905 156,56 Z%27 style=%27fill:%236e6e6e;fill-rule:evenodd;%27 /%3E%3Crect style=%27fill:%236e6e6e;%27 x=%2754%27 y=%2753%27 width=%2712%27 height=%272%27 id=%27rect4638%27 /%3E%3Crect id=%27svg_1-7-2-24%27 height=%272%27 width=%2713%27 y=%27-56%27 x=%2753%27 style=%27fill:%236e6e6e;%27 transform=%27matrix%280,1,-1,0,0,0%29%27 /%3E%3Crect transform=%27matrix%280,1,-1,0,0,0%29%27 style=%27fill:%236e6e6e;%27 x=%2753%27 y=%27-66%27 width=%2713%27 height=%272%27 id=%27rect4657%27 /%3E%3Crect id=%27rect4659%27 height=%271%27 width=%2712%27 y=%2757%27 x=%2754%27 style=%27fill:%236e6e6e;%27 /%3E%3Crect style=%27fill:%230d0d0d;%27 x=%2754%27 y=%2788%27 width=%2712%27 height=%272%27 id=%27rect4661%27 /%3E%3Crect style=%27fill:%230d0d0d;%27 x=%2780%27 y=%2776%27 width=%273%27 height=%273%27 id=%27rect4663%27 /%3E%3Crect id=%27rect4665%27 height=%273%27 width=%273%27 y=%2776%27 x=%2785%27 style=%27fill:%230d0d0d;%27 /%3E%3Crect id=%27rect4667%27 height=%273%27 width=%273%27 y=%2782%27 x=%2780%27 style=%27fill:%230d0d0d;%27 /%3E%3Crect style=%27fill:%230d0d0d;%27 x=%2785%27 y=%2782%27 width=%273%27 height=%273%27 id=%27rect4669%27 /%3E%3Crect style=%27fill:%230d0d0d;%27 x=%2780%27 y=%2788%27 width=%273%27 height=%273%27 id=%27rect4671%27 /%3E%3Crect id=%27rect4673%27 height=%273%27 width=%273%27 y=%2788%27 x=%2785%27 style=%27fill:%230d0d0d;%27 /%3E%3Ccircle r=%274.7438836%27 cy=%2781.939331%27 cx=%27110.06081%27 id=%27circle4675%27 style=%27opacity:1;fill:none;stroke:%230d0d0d;stroke-width:2;%27 /%3E%3Crect transform=%27matrix%280.70710678,0.70710678,-0.70710678,0.70710678,0,0%29%27 id=%27rect4677%27 height=%276.4053884%27 width=%274.229713%27 y=%27-14.826816%27 x=%27133.6163%27 style=%27fill:%230d0d0d;%27 /%3E%3Cpath id=%27path4679%27 d=%27m 125,80.000005 13.77027,0.09499 L 132,87.999992 Z%27 style=%27fill:%230d0d0d;%27 /%3E%3Cpath style=%27fill:%230d0d0d;%27 d=%27M 149,88.0002 162.77027,87.9052 156,80.0002 Z%27 id=%27path4681%27 /%3E%3Crect id=%27rect4683%27 height=%272%27 width=%2712%27 y=%2777%27 x=%2754%27 style=%27fill:%230d0d0d;%27 /%3E%3Crect transform=%27matrix%280,1,-1,0,0,0%29%27 style=%27fill:%230d0d0d;%27 x=%2777%27 y=%27-56%27 width=%2713%27 height=%272%27 id=%27rect4685%27 /%3E%3Crect id=%27rect4687%27 height=%272%27 width=%2713%27 y=%27-66%27 x=%2777%27 style=%27fill:%230d0d0d;%27 transform=%27matrix%280,1,-1,0,0,0%29%27 /%3E%3Crect style=%27fill:%230d0d0d;%27 x=%2754%27 y=%2781%27 width=%2712%27 height=%271%27 id=%27rect4689%27 /%3E%3Crect id=%27rect4761-1%27 height=%272%27 width=%2716%27 y=%27101%27 x=%2776%27 style=%27fill:%230d0d0d;%27 /%3E%3Crect id=%27rect4761-0%27 height=%272%27 width=%2716%27 y=%27105%27 x=%2776%27 style=%27fill:%230d0d0d;%27 /%3E%3Crect id=%27rect4761-7%27 height=%272%27 width=%279%27 y=%27109%27 x=%2776%27 style=%27fill:%230d0d0d;%27 /%3E%3Crect id=%27rect4761-1-1%27 height=%272%27 width=%2712%27 y=%27125%27 x=%2776%27 style=%27fill:%230d0d0d;%27 /%3E%3Crect id=%27rect4761-1-1-4%27 height=%272%27 width=%2710%27 y=%27137%27 x=%2776%27 style=%27fill:%230d0d0d;%27 /%3E%3Crect id=%27rect4761-1-1-4-4%27 height=%272%27 width=%2710%27 y=%27129%27 x=%2782%27 style=%27fill:%230d0d0d;%27 /%3E%3Crect id=%27rect4761-1-1-4-4-3%27 height=%272%27 width=%279%27 y=%27133%27 x=%2782%27 style=%27fill:%230d0d0d;%27 /%3E%3Cpath style=%27fill:%230d0d0d;%27 d=%27m 36.398438,100.0254 c -0.423362,-0.013 -0.846847,0.01 -1.265626,0.062 -1.656562,0.2196 -3.244567,0.9739 -4.507812,2.2266 L 29,100.5991 l -2.324219,7.7129 7.826172,-1.9062 -1.804687,-1.9063 c 1.597702,-1.5308 4.048706,-1.8453 5.984375,-0.7207 1.971162,1.1452 2.881954,3.3975 2.308593,5.5508 -0.573361,2.1533 -2.533865,3.6953 -4.830078,3.6953 l 0,3.0742 c 3.550756,0 6.710442,-2.4113 7.650391,-5.9414 0.939949,-3.5301 -0.618463,-7.2736 -3.710938,-9.0703 -1.159678,-0.6738 -2.431087,-1.0231 -3.701171,-1.0625 z%27 id=%27path4138%27 /%3E%3Cpath style=%27fill:%230d0d0d;%27 d=%27m 59.722656,99.9629 c -1.270084,0.039 -2.541493,0.3887 -3.701172,1.0625 -3.092475,1.7967 -4.650886,5.5402 -3.710937,9.0703 0.939949,3.5301 4.09768,5.9414 7.648437,5.9414 l 0,-3.0742 c -2.296214,0 -4.256717,-1.542 -4.830078,-3.6953 -0.573361,-2.1533 0.337432,-4.4056 2.308594,-5.5508 1.935731,-1.1246 4.38863,-0.8102 5.986326,0.7207 l -1.806638,1.9063 7.828128,1.9062 -2.32422,-7.7129 -1.62696,1.7168 c -1.26338,-1.2531 -2.848917,-2.0088 -4.505855,-2.2285 -0.418778,-0.055 -0.842263,-0.076 -1.265625,-0.062 z%27 id=%27path4138-1%27 /%3E%3Cpath style=%27fill:%230d0d0d;%27 d=%27m 10.5,100 0,2 -2.4999996,0 L 12,107 l 4,-5 -2.5,0 0,-2 -3,0 z%27 id=%27path3055-0-77%27 /%3E%3Cpath style=%27fill:none;stroke:%230d0d0d;%27 d=%27m 4.9850574,108.015 14.0298856,-0.03%27 id=%27path5244-5-0-5%27 /%3E%3Cpath style=%27fill:none;stroke:%230d0d0d;%27 d=%27m 4.9849874,132.015 14.0298866,-0.03%27 id=%27path5244-5-0-5-8%27 /%3E%3Cpath style=%27color:%23000000;fill:%236e6e6e;%27 d=%27m 36.398438,123.9629 c -0.423362,-0.013 -0.846847,0.01 -1.265626,0.062 -1.656562,0.2196 -3.244567,0.9739 -4.507812,2.2266 L 29,124.5366 l -2.324219,7.7129 7.826172,-1.9062 -1.804687,-1.9063 c 1.597702,-1.5308 4.048706,-1.8453 5.984375,-0.7207 1.971162,1.1453 2.881954,3.3975 2.308593,5.5508 -0.573361,2.1533 -2.533864,3.6953 -4.830078,3.6953 l 0,3.0742 c 3.550757,0 6.710442,-2.4093 7.650391,-5.9394 0.939949,-3.5301 -0.618463,-7.2756 -3.710938,-9.0723 -1.159678,-0.6737 -2.431087,-1.0231 -3.701171,-1.0625 z%27 id=%27path4138-12%27 /%3E%3Cpath style=%27color:%23000000;fill:%236e6e6e;%27 d=%27m 59.722656,123.9629 c -1.270084,0.039 -2.541493,0.3888 -3.701172,1.0625 -3.092475,1.7967 -4.650886,5.5422 -3.710937,9.0723 0.939949,3.5301 4.09768,5.9394 7.648437,5.9394 l 0,-3.0742 c -2.296214,0 -4.256717,-1.542 -4.830078,-3.6953 -0.573361,-2.1533 0.337432,-4.4055 2.308594,-5.5508 1.935731,-1.1246 4.38863,-0.8102 5.986326,0.7207 l -1.806638,1.9063 7.828128,1.9062 -2.32422,-7.7129 -1.62696,1.7168 c -1.26338,-1.2531 -2.848917,-2.0088 -4.505855,-2.2285 -0.418778,-0.055 -0.842263,-0.076 -1.265625,-0.062 z%27 id=%27path4138-1-3%27 /%3E%3Cpath id=%27path6191%27 d=%27m 10.5,116 0,-2 -2.4999996,0 L 12,109 l 4,5 -2.5,0 0,2 -3,0 z%27 style=%27fill:%230d0d0d;stroke-width:2;%27 /%3E%3Cpath style=%27fill:%230d0d0d;stroke-width:2;%27 d=%27m 10.5,129 0,-2 -2.4999996,0 L 12,122 l 4,5 -2.5,0 0,2 -3,0 z%27 id=%27path6193%27 /%3E%3Cpath id=%27path6195%27 d=%27m 10.5,135 0,2 -2.4999996,0 L 12,142 l 4,-5 -2.5,0 0,-2 -3,0 z%27 style=%27fill:%230d0d0d;stroke-width:2;%27 /%3E%3Cpath sodipodi:type=%27star%27 style=%27fill:%236e6e6e;%27 id=%27path4500%27 sodipodi:sides=%273%27 sodipodi:cx=%2711.55581%27 sodipodi:cy=%2760.073242%27 sodipodi:r1=%275.1116104%27 sodipodi:r2=%272.5558052%27 sodipodi:arg1=%270%27 sodipodi:arg2=%271.0471976%27 inkscape:flatsided=%27false%27 inkscape:rounded=%270%27 inkscape:randomized=%270%27 d=%27m 16.66742,60.073242 -3.833708,2.213392 -3.8337072,2.213393 0,-4.426785 0,-4.426784 3.8337082,2.213392 z%27 inkscape:transform-center-x=%27-1.2779026%27 /%3E%3Cpath inkscape:transform-center-x=%271.277902%27 d=%27m -31.500004,60.073242 -3.833708,2.213392 -3.833707,2.213393 0,-4.426785 0,-4.426784 3.833707,2.213392 z%27 inkscape:randomized=%270%27 inkscape:rounded=%270%27 inkscape:flatsided=%27false%27 sodipodi:arg2=%271.0471976%27 sodipodi:arg1=%270%27 sodipodi:r2=%272.5558052%27 sodipodi:r1=%275.1116104%27 sodipodi:cy=%2760.073242%27 sodipodi:cx=%27-36.611614%27 sodipodi:sides=%273%27 id=%27path4502%27 style=%27fill:%236e6e6e;%27 sodipodi:type=%27star%27 transform=%27scale%28-1,1%29%27 /%3E%3Cpath d=%27m 16.66742,60.073212 -3.833708,2.213392 -3.8337072,2.213392 0,-4.426784 0,-4.426785 3.8337082,2.213392 z%27 inkscape:randomized=%270%27 inkscape:rounded=%270%27 inkscape:flatsided=%27false%27 sodipodi:arg2=%271.0471976%27 sodipodi:arg1=%270%27 sodipodi:r2=%272.5558052%27 sodipodi:r1=%275.1116104%27 sodipodi:cy=%2760.073212%27 sodipodi:cx=%2711.55581%27 sodipodi:sides=%273%27 id=%27path4504%27 style=%27fill:%236e6e6e;%27 sodipodi:type=%27star%27 transform=%27matrix%280,1,-1,0,72.0074,71.7877%29%27 inkscape:transform-center-y=%271.2779029%27 /%3E%3Cpath inkscape:transform-center-y=%27-1.2779026%27 transform=%27matrix%280,-1,-1,0,96,96%29%27 sodipodi:type=%27star%27 style=%27fill:%236e6e6e;%27 id=%27path4506%27 sodipodi:sides=%273%27 sodipodi:cx=%2711.55581%27 sodipodi:cy=%2760.073212%27 sodipodi:r1=%275.1116104%27 sodipodi:r2=%272.5558052%27 sodipodi:arg1=%270%27 sodipodi:arg2=%271.0471976%27 inkscape:flatsided=%27false%27 inkscape:rounded=%270%27 inkscape:randomized=%270%27 d=%27m 16.66742,60.073212 -3.833708,2.213392 -3.8337072,2.213392 0,-4.426784 0,-4.426785 3.8337082,2.213392 z%27 /%3E%3Cpath id=%27path4615-5%27 d=%27m 171.82574,65.174193 16.34854,0 -8.17427,-13.348454 z%27 style=%27fill:%23f9a825;fill-rule:evenodd;stroke:%23f9a825;stroke-width:2;%27 /%3E%3Cpath style=%27opacity:1;fill:%23ffffff;%27 d=%27m 179,55 0,6 2,0 0,-6%27 id=%27path4300%27 /%3E%3Cpath style=%27opacity:1;fill:%23ffffff;%27 d=%27m 179,62 0,2 2,0 0,-2%27 id=%27path4300-6%27 /%3E%3Cpath style=%27fill:%230d0d0d;%27 d=%27M 99.994369,113.0221 102,114.98353 l 7,-6.9558 3,0.97227 2,-1 1,-2 0,-3 -3,3 -3,-3 3,-3 -3,0 -2,1 -1,2 0.99437,3.0221 z%27 id=%27path4268%27 /%3E%3Cpath style=%27fill:%230d0d0d;%27 d=%27m 234,6 0,2 -5,5 0,5 -2,0 0,-5 -5,-5 0,-2%27 id=%27path3546%27 /%3E%3Cg transform=%27matrix%281.3333328,0,0,-1.5999992,-139.9999,127.19999%29%27 id=%27g4383-6%27%3E%3Crect id=%27rect4385-2%27 height=%271%27 width=%276%27 y=%2712.625005%27 x=%27198%27 style=%27fill:%230d0d0d;stroke:%23000000;stroke-width:0%27 /%3E%3Crect style=%27fill:%230d0d0d;stroke:%23000000;stroke-width:0%27 x=%27198%27 y=%2715.125007%27 width=%278%27 height=%271%27 id=%27rect4387-9%27 /%3E%3Crect style=%27fill:%230d0d0d;stroke:%23000000;stroke-width:0%27 x=%27198%27 y=%277.6250024%27 width=%273%27 height=%271%27 id=%27rect4389-1-0%27 /%3E%3Crect style=%27fill:%230d0d0d;stroke:%23000000;stroke-width:0%27 x=%27198%27 y=%2710.125004%27 width=%274%27 height=%271%27 id=%27rect4389-1-9%27 /%3E%3Cpath style=%27fill:%230d0d0d;%27 d=%27m 207.00001,16.375004 0,-5.625005 -2.25,0 3,-3.1250014 3,3.1250014 -2.25,0 0,5.625005 -1.5,0%27 id=%27path4402%27 /%3E%3C/g%3E%3Cpath style=%27fill:%230d0d0d;%27 d=%27m 164,100 0,3 -6,6 0,7 -4,0 0,-7 -6,-6 0,-3%27 id=%27path3546-2-2%27 /%3E%3Cpath id=%27path4402-5-7%27 d=%27m 15,41 0,-7 -4,0 0,3 -5,-4 5,-4 0,3 6,0 0,9%27 style=%27fill:%230d0d0d;%27 /%3E%3C/svg%3E%0A\")}body{/*!\n * Selectr 2.4.13\n * http://mobius.ovh/docs/selectr\n *\n * Released under the MIT license\n */}body .jsoneditor input,body .jsoneditor input:not([type]),body .jsoneditor input[type=\"text\"],body .jsoneditor input[type=\"search\"],body .jsoneditor-modal input,body .jsoneditor-modal input:not([type]),body .jsoneditor-modal input[type=\"text\"],body .jsoneditor-modal input[type=\"search\"]{height:auto;border:inherit;box-shadow:none;font-size:inherit;box-sizing:inherit;padding:inherit;font-family:inherit;transition:none;line-height:inherit}body .jsoneditor input:focus,body .jsoneditor input:not([type]):focus,body .jsoneditor input[type=\"text\"]:focus,body .jsoneditor input[type=\"search\"]:focus,body .jsoneditor-modal input:focus,body .jsoneditor-modal input:not([type]):focus,body .jsoneditor-modal input[type=\"text\"]:focus,body .jsoneditor-modal input[type=\"search\"]:focus{border:inherit;box-shadow:inherit}body .jsoneditor textarea,body .jsoneditor-modal textarea{height:inherit}body .jsoneditor select,body .jsoneditor-modal select{display:inherit;height:inherit}body .jsoneditor label,body .jsoneditor-modal label{font-size:inherit;font-weight:inherit;color:inherit}body .jsoneditor table,body .jsoneditor-modal table{border-collapse:collapse;width:auto}body .jsoneditor td,body .jsoneditor th,body .jsoneditor-modal td,body .jsoneditor-modal th{padding:0;display:table-cell;text-align:left;vertical-align:inherit;border-radius:inherit}body .jsoneditor .autocomplete.dropdown{position:absolute;background:var(--t42-content-color);box-shadow:var(--t42-shadow);border:1px solid var(--t42-color-opacity-10);overflow-x:hidden;overflow-y:auto;cursor:default;margin:0;padding:5px;text-align:left;outline:0;font-family:var(--bs-font-monospace);font-size:var(--t42-font-size)}body .jsoneditor .autocomplete.dropdown .item{color:var(--t42-content-color)}body .jsoneditor .autocomplete.dropdown .item.hover{background-color:Rgb(var(--t42-bg-mid))}body .jsoneditor .autocomplete.hint{color:var(--t42-content-color);top:4px;left:4px}body .jsoneditor-contextmenu-root{position:relative;width:0;height:0}body .jsoneditor-contextmenu{position:absolute;box-sizing:content-box;z-index:2}body .jsoneditor-contextmenu .jsoneditor-menu{position:relative;left:0;top:0;width:128px;height:auto;background:var(--t42-content-color);border:1px solid var(--t42-color-opacity-10);box-shadow:var(--t42-shadow);list-style:none;margin:0;padding:0}body .jsoneditor-contextmenu .jsoneditor-menu button{position:relative;padding:0 8px 0 0;margin:0;width:128px;height:auto;border:none;cursor:pointer;color:var(--t42-content-color);background:transparent;font-size:var(--t42-font-size);font-family:var(--t42-font-family);box-sizing:border-box;text-align:left}body .jsoneditor-contextmenu .jsoneditor-menu button::-moz-focus-inner{padding:0;border:0}body .jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-default{width:96px}body .jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-expand{float:right;width:32px;height:24px;border-left:1px solid var(--t42-color-opacity-10)}body .jsoneditor-contextmenu .jsoneditor-menu li{overflow:hidden}body .jsoneditor-contextmenu .jsoneditor-menu li ul{display:none;position:relative;left:-10px;top:0;border:none;box-shadow:inset var(--t42-shadow);padding:0 10px;-webkit-transition:all 0.3s ease-out;-moz-transition:all 0.3s ease-out;-o-transition:all 0.3s ease-out;transition:all 0.3s ease-out}body .jsoneditor-contextmenu .jsoneditor-menu li ul .jsoneditor-icon{margin-left:24px}body .jsoneditor-contextmenu .jsoneditor-menu li ul li button{padding-left:24px;animation:all ease-in-out 1s}body .jsoneditor-contextmenu .jsoneditor-menu li button .jsoneditor-expand{position:absolute;top:0;right:0;width:24px;height:24px;padding:0;margin:0 4px 0 0;background-image:\"/\";background-position:0 -72px}body .jsoneditor-contextmenu .jsoneditor-icon{position:absolute;top:0;left:0;width:24px;height:24px;border:none;padding:0;margin:0;background-image:\"/\"}body .jsoneditor-contextmenu .jsoneditor-text{padding:4px 0 4px 24px;word-wrap:break-word}body .jsoneditor-contextmenu .jsoneditor-text.jsoneditor-right-margin{padding-right:24px}body .jsoneditor-contextmenu .jsoneditor-separator{height:0;border-top:1px solid var(--t42-color-opacity-10);padding-top:5px;margin-top:5px}body .jsoneditor-contextmenu button.jsoneditor-remove .jsoneditor-icon{background-position:-24px 0}body .jsoneditor-contextmenu button.jsoneditor-append .jsoneditor-icon{background-position:0 0}body .jsoneditor-contextmenu button.jsoneditor-insert .jsoneditor-icon{background-position:0 0}body .jsoneditor-contextmenu button.jsoneditor-duplicate .jsoneditor-icon{background-position:-48px 0}body .jsoneditor-contextmenu button.jsoneditor-sort-asc .jsoneditor-icon{background-position:-168px 0}body .jsoneditor-contextmenu button.jsoneditor-sort-desc .jsoneditor-icon{background-position:-192px 0}body .jsoneditor-contextmenu button.jsoneditor-transform .jsoneditor-icon{background-position:-216px 0}body .jsoneditor-contextmenu button.jsoneditor-extract .jsoneditor-icon{background-position:0 -24px}body .jsoneditor-contextmenu button.jsoneditor-type-string .jsoneditor-icon{background-position:-144px 0}body .jsoneditor-contextmenu button.jsoneditor-type-auto .jsoneditor-icon{background-position:-120px 0}body .jsoneditor-contextmenu button.jsoneditor-type-object .jsoneditor-icon{background-position:-72px 0}body .jsoneditor-contextmenu button.jsoneditor-type-array .jsoneditor-icon{background-position:-96px 0}body .jsoneditor-contextmenu button.jsoneditor-type-modes .jsoneditor-icon{background-image:none;width:6px}body .jsoneditor-contextmenu ul,body .jsoneditor-contextmenu li{box-sizing:content-box;position:relative}body .jsoneditor-contextmenu .jsoneditor-menu button:hover,body .jsoneditor-contextmenu .jsoneditor-menu button:focus{color:var(--t42-content-color);background-color:var(--t42-color-opacity-10);outline:none}body .jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected,body .jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected:hover,body .jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected:focus{color:var(--t42-content-color);background-color:var(--red)}body .jsoneditor-contextmenu .jsoneditor-menu li ul li button:hover,body .jsoneditor-contextmenu .jsoneditor-menu li ul li button:focus{background-color:var(--t42-color-opacity-10)}body .jsoneditor-modal{max-width:95%;border-radius:2px !important;padding:45px 15px 15px 15px !important;box-shadow:var(--t42-shadow);color:var(--t42-content-color);line-height:1.3em}body .jsoneditor-modal.jsoneditor-modal-transform{width:600px !important}body .jsoneditor-modal .pico-modal-header{position:absolute;box-sizing:border-box;top:0;left:0;width:100%;padding:0 10px;height:30px;line-height:30px;font-family:var(--t42-font-family);font-size:11pt;background:var(--primary);color:var(--t42-content-color)}body .jsoneditor-modal table{width:100%}body .jsoneditor-modal table td{padding:3px 0}body .jsoneditor-modal table td.jsoneditor-modal-input{text-align:right;padding-right:0;white-space:nowrap}body .jsoneditor-modal table td.jsoneditor-modal-actions{padding-top:15px}body .jsoneditor-modal table th{vertical-align:middle}body .jsoneditor-modal p:first-child{margin-top:0}body .jsoneditor-modal a{color:var(--primary)}body .jsoneditor-modal .jsoneditor-jmespath-block{margin-bottom:10px}body .jsoneditor-modal .pico-close{background:none !important;font-size:24px !important;top:7px !important;right:7px !important;color:var(--t42-content-color)}body .jsoneditor-modal input{padding:4px}body .jsoneditor-modal input[type=\"text\"]{cursor:inherit}body .jsoneditor-modal input[disabled]{background:var(--t42-content-color-muted);color:var(--t42-content-color-muted)}body .jsoneditor-modal .jsoneditor-select-wrapper{position:relative;display:inline-block}body .jsoneditor-modal .jsoneditor-select-wrapper:after{content:\"\";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid #666;position:absolute;right:8px;top:14px;pointer-events:none}body .jsoneditor-modal select{padding:3px 24px 3px 10px;min-width:180px;max-width:350px;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-indent:0;text-overflow:\"\";font-size:var(--t42-font-size);line-height:1.5em}body .jsoneditor-modal select::-ms-expand{display:none}body .jsoneditor-modal .jsoneditor-button-group input{padding:4px 10px;margin:0;border-radius:0;border-left-style:none}body .jsoneditor-modal .jsoneditor-button-group input.jsoneditor-button-first{border-top-left-radius:3px;border-bottom-left-radius:3px;border-left-style:solid}body .jsoneditor-modal .jsoneditor-button-group input.jsoneditor-button-last{border-top-right-radius:3px;border-bottom-right-radius:3px}body .jsoneditor-modal .jsoneditor-transform-preview{background:var(--t42-color-opacity-10);height:200px}body .jsoneditor-modal .jsoneditor-transform-preview.jsoneditor-error{color:var(--red)}body .jsoneditor-modal .jsoneditor-jmespath-wizard{line-height:1.2em;width:100%;padding:0;border-radius:3px}body .jsoneditor-modal .jsoneditor-jmespath-label{font-weight:bold;color:dodgerblue;margin-top:20px;margin-bottom:5px}body .jsoneditor-modal .jsoneditor-jmespath-wizard-table{width:100%;border-collapse:collapse}body .jsoneditor-modal .jsoneditor-jmespath-wizard-label{font-style:italic;margin:4px 0 2px 0}body .jsoneditor-modal .jsoneditor-inline{position:relative;display:inline-block;width:100%;padding-top:2px;padding-bottom:2px}body .jsoneditor-modal .jsoneditor-inline:not(:last-child){padding-right:2px}body .jsoneditor-modal .jsoneditor-jmespath-filter{display:flex;flex-wrap:wrap}body .jsoneditor-modal .jsoneditor-jmespath-filter-field{width:180px}body .jsoneditor-modal .jsoneditor-jmespath-filter-relation{width:100px}body .jsoneditor-modal .jsoneditor-jmespath-filter-value{min-width:180px;flex:1}body .jsoneditor-modal .jsoneditor-jmespath-sort-field{width:170px}body .jsoneditor-modal .jsoneditor-jmespath-sort-order{width:150px}body .jsoneditor-modal .jsoneditor-jmespath-select-fields{width:100%}body .jsoneditor-modal .selectr-selected{border-color:var(--t42-color-opacity-10);padding:4px 28px 4px 8px}body .jsoneditor-modal .selectr-selected .selectr-tag{background-color:var(--primary);border-radius:5px}body .jsoneditor-modal table th,body .jsoneditor-modal table td{text-align:left;vertical-align:middle;font-weight:normal;color:var(--t42-content-color);border-spacing:0;border-collapse:collapse}body .jsoneditor-modal select,body .jsoneditor-modal textarea,body .jsoneditor-modal input,body .jsoneditor-modal input[type=\"text\"],body .jsoneditor-modal input[type=\"text\"]:focus,body .jsoneditor-modal #query{background:#ffffff;border:1px solid var(--t42-color-opacity-10);color:var(--t42-content-color);border-radius:3px;padding:4px}body .jsoneditor-modal textarea,body .jsoneditor-modal #query{border-radius:unset}body .jsoneditor-modal,body .jsoneditor-modal table td,body .jsoneditor-modal table th,body .jsoneditor-modal select,body .jsoneditor-modal option,body .jsoneditor-modal textarea,body .jsoneditor-modal input,body .jsoneditor-modal input[type=\"text\"],body .jsoneditor-modal #query{font-size:10.5pt;font-family:var(--t42-font-family)}body .jsoneditor-modal #query,body .jsoneditor-modal .jsoneditor-transform-preview{font-family:var(--bs-font-monospace);font-size:var(--t42-font-size);width:100%;box-sizing:border-box}body .jsoneditor-modal input[type=\"button\"],body .jsoneditor-modal input[type=\"submit\"]{background:var(--t42-color-opacity-10);padding:4px 20px}body .jsoneditor-modal select,body .jsoneditor-modal input{cursor:pointer}body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-asc input.jsoneditor-button-asc,body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-desc input.jsoneditor-button-desc{background:var(--primary);border-color:var(--primary);color:var(--t42-content-color)}body .jsoneditor{color:var(--t42-content-color);border:thin solid var(--primary);-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;position:relative;padding:0;line-height:100%}body div.jsoneditor-field,body div.jsoneditor-value,body div.jsoneditor-readonly,body div.jsoneditor-default{border:1px solid transparent;min-height:16px;min-width:32px;line-height:16px;padding:2px;margin:1px;word-wrap:break-word;float:left}body div.jsoneditor-field p,body div.jsoneditor-value p{margin:0}body div.jsoneditor-value{word-break:break-word}body div.jsoneditor-value.jsoneditor-empty::after{content:\"value\"}body div.jsoneditor-value.jsoneditor-string{color:var(--green)}body div.jsoneditor-value.jsoneditor-number{color:var(--red)}body div.jsoneditor-value.jsoneditor-boolean{color:var(--yellow)}body div.jsoneditor-value.jsoneditor-null{color:var(--primary)}body div.jsoneditor-value.jsoneditor-color-value{color:var(--t42-content-color)}body div.jsoneditor-value.jsoneditor-invalid{color:var(--white)}body div.jsoneditor-readonly{min-width:16px;color:var(--t42-content-color-muted)}body div.jsoneditor-empty{border-color:var(--t42-color-opacity-10);border-style:dashed;border-radius:2px}body div.jsoneditor-field.jsoneditor-empty::after{content:\"field\"}body div.jsoneditor td{vertical-align:top}body div.jsoneditor td.jsoneditor-separator{padding:3px 0;vertical-align:top;color:var(--t42-content-color-muted)}body div.jsoneditor td.jsoneditor-tree{vertical-align:top}body div.jsoneditor.busy pre.jsoneditor-preview{background:var(--t42-color-opacity-10);color:var(--t42-content-color-muted)}body div.jsoneditor.busy div.jsoneditor-busy{display:inherit}body div.jsoneditor code.jsoneditor-preview{background:none}body div.jsoneditor.jsoneditor-mode-preview pre.jsoneditor-preview{width:100%;height:100%;box-sizing:border-box;overflow:auto;padding:2px;margin:0;white-space:pre-wrap;word-break:break-all}body div.jsoneditor-default{color:var(--t42-content-color-muted);padding-left:10px}body div.jsoneditor-tree{width:100%;height:100%;position:relative;overflow:auto;background:var(--t42-content-color)}body div.jsoneditor-tree button.jsoneditor-button{width:24px;height:24px;padding:0;margin:0;border:none;cursor:pointer;background-color:transparent;background-image:\"/\"}body div.jsoneditor-tree button.jsoneditor-button:focus{background-color:var(--t42-color-opacity-10);outline:#e5e5e5 solid 1px}body div.jsoneditor-tree button.jsoneditor-collapsed{background-position:0 -48px}body div.jsoneditor-tree button.jsoneditor-expanded{background-position:0 -72px}body div.jsoneditor-tree button.jsoneditor-contextmenu-button{background-position:-48px -72px}body div.jsoneditor-tree button.jsoneditor-invisible{visibility:hidden;background:none}body div.jsoneditor-tree button.jsoneditor-dragarea{background-image:\"/\";background-position:-72px -72px;cursor:move}body div.jsoneditor-tree *:focus{outline:none}body div.jsoneditor-tree div.jsoneditor-show-more{display:inline-block;padding:3px 4px;margin:2px 0;background-color:var(--t42-color-opacity-10);border-radius:3px;color:var(--t42-content-color-muted);font-family:var(--t42-font-family);font-size:var(--t42-font-size)}body div.jsoneditor-tree div.jsoneditor-show-more a{display:inline-block;color:var(--t42-content-color-muted)}body div.jsoneditor-tree div.jsoneditor-color{display:inline-block;width:12px;height:12px;margin:4px;border:1px solid var(--t42-content-color-muted);cursor:pointer}body div.jsoneditor-tree div.jsoneditor-color.jsoneditor-color-readonly{cursor:inherit}body div.jsoneditor-tree div.jsoneditor-date{background:var(--t42-content-color);color:var(--t42-content-color);font-family:var(--t42-font-family);border-radius:3px;display:inline-block;padding:3px;margin:0 3px}body div.jsoneditor-tree table.jsoneditor-tree{border-collapse:collapse;border-spacing:0;width:100%}body div.jsoneditor-tree .jsoneditor-button{display:block}body div.jsoneditor-tree .jsoneditor-button.jsoneditor-schema-error{width:24px;height:24px;padding:0;margin:0 4px 0 0;background-image:\"/\";background-position:-168px -48px;background-color:transparent}body div.jsoneditor-outer{position:static;width:100%;height:100%;margin:0;padding:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}body div.jsoneditor-outer.has-nav-bar{margin-top:-26px;padding-top:26px}body div.jsoneditor-outer.has-nav-bar.has-main-menu-bar{margin-top:-61px;padding-top:61px}body div.jsoneditor-outer.has-status-bar{margin-bottom:-26px;padding-bottom:26px}body div.jsoneditor-outer.has-main-menu-bar{margin-top:-35px;padding-top:35px}body div.jsoneditor-busy{position:absolute;top:15%;left:0;box-sizing:border-box;width:100%;text-align:center;display:none}body div.jsoneditor-busy span{background-color:var(--t42-color-opacity-10);border:1px solid var(--t42-color-opacity-10);border-radius:3px;padding:5px 15px;box-shadow:var(--t42-shadow)}body div.jsoneditor-field.jsoneditor-empty::after,body div.jsoneditor-value.jsoneditor-empty::after{pointer-events:none;color:var(--t42-content-color-muted);font-size:8pt}body div.jsoneditor-value.jsoneditor-url,body a.jsoneditor-value.jsoneditor-url{color:var(--green);text-decoration:underline}body a.jsoneditor-value.jsoneditor-url{display:inline-block;padding:2px;margin:2px}body a.jsoneditor-value.jsoneditor-url:hover,body a.jsoneditor-value.jsoneditor-url:focus{color:var(--red)}body div.jsoneditor-field[contenteditable=\"true\"]:focus,body div.jsoneditor-field[contenteditable=\"true\"]:hover,body div.jsoneditor-value[contenteditable=\"true\"]:focus,body div.jsoneditor-value[contenteditable=\"true\"]:hover,body div.jsoneditor-field.jsoneditor-highlight,body div.jsoneditor-value.jsoneditor-highlight{background-color:var(--t42-color-opacity-10);border:1px solid var(--t42-color-opacity-10);border-radius:2px}body div.jsoneditor-field.jsoneditor-highlight-active,body div.jsoneditor-field.jsoneditor-highlight-active:focus,body div.jsoneditor-field.jsoneditor-highlight-active:hover,body div.jsoneditor-value.jsoneditor-highlight-active,body div.jsoneditor-value.jsoneditor-highlight-active:focus,body div.jsoneditor-value.jsoneditor-highlight-active:hover{background-color:#fe0;border:1px solid #ffc700;border-radius:2px}body div.jsoneditor-value.jsoneditor-object,body div.jsoneditor-value.jsoneditor-array{min-width:16px}body div.jsoneditor-tree button.jsoneditor-contextmenu-button:hover,body div.jsoneditor-tree button.jsoneditor-contextmenu-button:focus,body div.jsoneditor-tree button.jsoneditor-contextmenu-button.jsoneditor-selected,body tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu-button{background-position:-48px -48px}body div.jsoneditor-tree div.jsoneditor-show-more a:hover,body div.jsoneditor-tree div.jsoneditor-show-more a:focus{color:var(--red)}body textarea.jsoneditor-text,body .ace-jsoneditor{min-height:150px}body textarea.jsoneditor-text.ace_editor,body .ace-jsoneditor.ace_editor{font-family:var(--bs-font-monospace)}body textarea.jsoneditor-text{width:100%;height:100%;margin:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;outline-width:0;border:none;background-color:var(--t42-content-color);resize:none}body tr.jsoneditor-highlight,body tr.jsoneditor-selected{background-color:var(--t42-content-color-muted)}body tr.jsoneditor-selected button.jsoneditor-dragarea,body tr.jsoneditor-selected button.jsoneditor-contextmenu-button{visibility:hidden}body tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea,body tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu-button{visibility:visible}body div.jsoneditor-tree button.jsoneditor-dragarea:hover,body div.jsoneditor-tree button.jsoneditor-dragarea:focus,body tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{background-position:-72px -48px}body div.jsoneditor tr,body div.jsoneditor th,body div.jsoneditor td{padding:0;margin:0}body div.jsoneditor-field,body div.jsoneditor-value,body div.jsoneditor td,body div.jsoneditor th,body div.jsoneditor textarea,body pre.jsoneditor-preview,body .jsoneditor-schema-error,body .jsoneditor-popover{font-family:var(--bs-font-monospace);font-size:var(--t42-font-size);color:var(--t42-content-color)}body .jsoneditor-schema-error{cursor:default;display:inline-block;height:24px;line-height:24px;position:relative;text-align:center;width:24px}body .jsoneditor-popover{background-color:Rgb(var(--t42-bg-light));border-radius:3px;box-shadow:var(--t42-shadow);color:var(--t42-content-color);padding:7px 10px;position:absolute;cursor:auto;width:200px}body .jsoneditor-popover.jsoneditor-above{bottom:32px;left:-98px}body .jsoneditor-popover.jsoneditor-above:before{border-top:7px solid Rgb(var(--t42-bg-light));bottom:-7px}body .jsoneditor-popover.jsoneditor-below{top:32px;left:-98px}body .jsoneditor-popover.jsoneditor-below:before{border-bottom:7px solid Rgb(var(--t42-bg-light));top:-7px}body .jsoneditor-popover.jsoneditor-left{top:-7px;right:32px}body .jsoneditor-popover.jsoneditor-left:before{border-left:7px solid Rgb(var(--t42-bg-light));border-top:7px solid transparent;border-bottom:7px solid transparent;content:\"\";top:19px;right:-14px;left:inherit;margin-left:inherit;margin-top:-7px;position:absolute}body .jsoneditor-popover.jsoneditor-right{top:-7px;left:32px}body .jsoneditor-popover.jsoneditor-right:before{border-right:7px solid Rgb(var(--t42-bg-light));border-top:7px solid transparent;border-bottom:7px solid transparent;content:\"\";top:19px;left:-14px;margin-left:inherit;margin-top:-7px;position:absolute}body .jsoneditor-popover:before{border-right:7px solid transparent;border-left:7px solid transparent;content:\"\";display:block;left:50%;margin-left:-7px;position:absolute}body .jsoneditor-text-errors tr.jump-to-line:hover{text-decoration:underline;cursor:pointer}body .jsoneditor-schema-error:hover .jsoneditor-popover,body .jsoneditor-schema-error:focus .jsoneditor-popover{display:block;animation:fade-in 0.3s linear 1, move-up 0.3s linear 1}@keyframes fade-in{from{opacity:0}to{opacity:1}}body .jsoneditor .jsoneditor-validation-errors-container{max-height:130px;overflow-y:auto}body .jsoneditor .jsoneditor-validation-errors{width:100%;overflow:hidden}body .jsoneditor .jsoneditor-additional-errors{position:absolute;margin:auto;bottom:31px;left:calc(50% - 92px);color:var(--t42-content-color-muted);background-color:Rgb(var(--t42-bg-mid));padding:7px 15px;border-radius:8px}body .jsoneditor .jsoneditor-additional-errors.visible{visibility:visible;opacity:1;transition:opacity 2s linear}body .jsoneditor .jsoneditor-additional-errors.hidden{visibility:hidden;opacity:0;transition:visibility 0s 2s, opacity 2s linear}body .jsoneditor .jsoneditor-text-errors{width:100%;border-collapse:collapse;border-top:1px solid #ffc700}body .jsoneditor .jsoneditor-text-errors td{padding:3px 6px;vertical-align:middle}body .jsoneditor .jsoneditor-text-errors td pre{margin:0;white-space:pre-wrap}body .jsoneditor .jsoneditor-text-errors tr{background-color:var(--t42-color-opacity-10)}body .jsoneditor .jsoneditor-text-errors tr.parse-error{background-color:var(--red)}body .jsoneditor-text-errors .jsoneditor-schema-error{border:none;width:24px;height:24px;padding:0;margin:0 4px 0 0;cursor:pointer}body .jsoneditor-text-errors tr .jsoneditor-schema-error{background-image:\"/\";background-position:-168px -48px;background-color:transparent}body .jsoneditor-text-errors tr.parse-error .jsoneditor-schema-error{background-image:\"/\";background-position:-25px 0px;background-color:transparent}body .jsoneditor-anchor{cursor:pointer}body .jsoneditor-anchor .picker_wrapper.popup.popup_bottom{top:28px;left:-10px}body .fadein{-webkit-animation:fadein 0.3s;animation:fadein 0.3s;-moz-animation:fadein 0.3s;-o-animation:fadein 0.3s}@keyframes fadein{0%{opacity:0}100%{opacity:1}}body .jsoneditor-modal input[type=\"search\"].selectr-input{border:1px solid #d3d3d3;width:calc(100% - 4px);margin:2px;padding:4px;box-sizing:border-box}body .jsoneditor-modal button.selectr-input-clear{right:8px}body .jsoneditor-menu{width:100%;height:35px;padding:2px;margin:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--t42-content-color);background-color:var(--primary);border-bottom:1px solid var(--primary)}body .jsoneditor-menu>button,body .jsoneditor-menu>.jsoneditor-modes>button{width:26px;height:26px;margin:2px;padding:0;border-radius:2px;border:1px solid transparent;background-color:transparent;background-image:\"/\";color:var(--t42-content-color);opacity:0.8;font-family:var(--t42-font-family);font-size:var(--t42-font-size);float:left}body .jsoneditor-menu>button:hover,body .jsoneditor-menu>.jsoneditor-modes>button:hover{background-color:rgba(255,255,255,0.2);border:1px solid rgba(255,255,255,0.4)}body .jsoneditor-menu>button:focus,body .jsoneditor-menu>button:active,body .jsoneditor-menu>.jsoneditor-modes>button:focus,body .jsoneditor-menu>.jsoneditor-modes>button:active{background-color:rgba(255,255,255,0.3)}body .jsoneditor-menu>button:disabled,body .jsoneditor-menu>.jsoneditor-modes>button:disabled{opacity:0.5;background-color:transparent;border:none}body .jsoneditor-menu>button.jsoneditor-collapse-all{background-position:0 -96px}body .jsoneditor-menu>button.jsoneditor-expand-all{background-position:0 -120px}body .jsoneditor-menu>button.jsoneditor-sort{background-position:-120px -96px}body .jsoneditor-menu>button.jsoneditor-transform{background-position:-144px -96px}body .jsoneditor.jsoneditor-mode-view>.jsoneditor-menu>button.jsoneditor-sort,body .jsoneditor.jsoneditor-mode-form>.jsoneditor-menu>button.jsoneditor-sort,body .jsoneditor.jsoneditor-mode-view>.jsoneditor-menu>button.jsoneditor-transform,body .jsoneditor.jsoneditor-mode-form>.jsoneditor-menu>button.jsoneditor-transform{display:none}body .jsoneditor-menu>button.jsoneditor-undo{background-position:-24px -96px}body .jsoneditor-menu>button.jsoneditor-undo:disabled{background-position:-24px -120px}body .jsoneditor-menu>button.jsoneditor-redo{background-position:-48px -96px}body .jsoneditor-menu>button.jsoneditor-redo:disabled{background-position:-48px -120px}body .jsoneditor-menu>button.jsoneditor-compact{background-position:-72px -96px}body .jsoneditor-menu>button.jsoneditor-format{background-position:-72px -120px}body .jsoneditor-menu>button.jsoneditor-repair{background-position:-96px -96px}body .jsoneditor-menu>.jsoneditor-modes{display:inline-block;float:left}body .jsoneditor-menu>.jsoneditor-modes>button{background-image:none;width:auto;padding-left:6px;padding-right:6px}body .jsoneditor-menu>button.jsoneditor-separator,body .jsoneditor-menu>.jsoneditor-modes>button.jsoneditor-separator{margin-left:10px}body .jsoneditor-menu a{font-family:var(--t42-font-family);font-size:var(--t42-font-size);color:var(--t42-content-color);opacity:0.8;vertical-align:middle}body .jsoneditor-menu a:hover{opacity:1}body .jsoneditor-menu a.jsoneditor-poweredBy{font-size:8pt;position:absolute;right:0;top:0;padding:10px}body .jsoneditor-navigation-bar{width:100%;height:26px;line-height:26px;padding:0;margin:0;border-bottom:1px solid var(--t42-color-opacity-10);-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--t42-content-color-muted);background-color:Rgb(var(--t42-bg-mid));overflow:hidden;font-family:var(--t42-font-family);font-size:var(--t42-font-size)}body .jsoneditor-search{font-family:var(--t42-font-family);position:absolute;right:4px;top:4px;border-collapse:collapse;border-spacing:0;display:flex}body .jsoneditor-search input{color:var(--t42-content-color);width:120px;border:none;outline:none;margin:1px;line-height:20px;font-family:var(--t42-font-family)}body .jsoneditor-search button{width:16px;height:24px;padding:0;margin:0;border:none;background:\"/\";vertical-align:top}body .jsoneditor-search button:hover{background-color:transparent}body .jsoneditor-search button.jsoneditor-refresh{width:18px;background-position:-99px -73px}body .jsoneditor-search button.jsoneditor-next{cursor:pointer;background-position:-124px -73px}body .jsoneditor-search button.jsoneditor-next:hover{background-position:-124px -49px}body .jsoneditor-search button.jsoneditor-previous{cursor:pointer;background-position:-148px -73px;margin-right:2px}body .jsoneditor-search button.jsoneditor-previous:hover{background-position:-148px -49px}body .jsoneditor-results{font-family:var(--t42-font-family);color:var(--t42-content-color);padding-right:5px;line-height:26px}body .jsoneditor-frame{border:1px solid transparent;background-color:var(--t42-content-color);padding:0 2px;margin:0}body .jsoneditor-statusbar{line-height:26px;height:26px;color:var(--t42-content-color-muted);background-color:Rgb(var(--t42-bg-mid));border-top:1px solid var(--t42-color-opacity-10);-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:var(--t42-font-size)}body .jsoneditor-statusbar>.jsoneditor-curserinfo-val{margin-right:12px}body .jsoneditor-statusbar>.jsoneditor-curserinfo-count{margin-left:4px}body .jsoneditor-statusbar>.jsoneditor-validation-error-icon{float:right;width:24px;height:24px;padding:0;margin-top:1px;background-image:\"/\";background-position:-168px -48px;cursor:pointer}body .jsoneditor-statusbar>.jsoneditor-validation-error-count{float:right;margin:0 4px 0 0;cursor:pointer}body .jsoneditor-statusbar>.jsoneditor-parse-error-icon{float:right;width:24px;height:24px;padding:0;margin:1px;background-image:\"/\";background-position:-25px 0px}body .jsoneditor-statusbar .jsoneditor-array-info a{color:inherit}body div.jsoneditor-statusbar>.jsoneditor-curserinfo-label,body div.jsoneditor-statusbar>.jsoneditor-size-info{margin:0 4px}body .jsoneditor-treepath{padding:0 5px;overflow:hidden;white-space:nowrap;outline:none}body .jsoneditor-treepath.show-all{word-wrap:break-word;white-space:normal;position:absolute;background-color:Rgb(var(--t42-bg-mid));z-index:1;box-shadow:var(--t42-shadow)}body .jsoneditor-treepath.show-all span.jsoneditor-treepath-show-all-btn{display:none}body .jsoneditor-treepath div.jsoneditor-contextmenu-root{position:absolute;left:0}body .jsoneditor-treepath .jsoneditor-treepath-show-all-btn{position:absolute;background-color:Rgb(var(--t42-bg-mid));left:0;height:20px;padding:0 3px;cursor:pointer}body .jsoneditor-treepath .jsoneditor-treepath-element{margin:1px;font-family:var(--t42-font-family);font-size:var(--t42-font-size)}body .jsoneditor-treepath .jsoneditor-treepath-seperator{margin:2px;font-size:9pt;font-family:var(--t42-font-family)}body .jsoneditor-treepath span.jsoneditor-treepath-element:hover,body .jsoneditor-treepath span.jsoneditor-treepath-seperator:hover{cursor:pointer;text-decoration:underline}body .selectr-container{position:relative}body .selectr-container li{list-style:none}body .selectr-hidden{position:absolute;overflow:hidden;clip:rect(0px, 0px, 0px, 0px);width:1px;height:1px;margin:-1px;padding:0;border:0 none}body .selectr-visible{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;z-index:11}body .selectr-desktop.multiple .selectr-visible{display:none}body .selectr-desktop.multiple.native-open .selectr-visible{top:100%;min-height:200px !important;height:auto;opacity:1;display:block}body .selectr-container.multiple.selectr-mobile .selectr-selected{z-index:0}body .selectr-selected{position:relative;z-index:1;box-sizing:border-box;width:100%;padding:7px 28px 7px 14px;cursor:pointer;border:1px solid Rgb(var(--t42-bg-mid));border-radius:3px;background-color:var(--t42-content-color)}body .selectr-selected::before{position:absolute;top:50%;right:10px;width:0;height:0;content:'';-o-transform:rotate(0deg) translate3d(0px, -50%, 0px);-ms-transform:rotate(0deg) translate3d(0px, -50%, 0px);-moz-transform:rotate(0deg) translate3d(0px, -50%, 0px);-webkit-transform:rotate(0deg) translate3d(0px, -50%, 0px);transform:rotate(0deg) translate3d(0px, -50%, 0px);border-width:4px 4px 0 4px;border-style:solid;border-color:#6c7a86 transparent transparent}body .selectr-container.open .selectr-selected::before,body .selectr-container.native-open .selectr-selected::before{border-width:0 4px 4px 4px;border-style:solid;border-color:transparent transparent #6c7a86}body .selectr-label{display:none;overflow:hidden;width:100%;white-space:nowrap;text-overflow:ellipsis}body .selectr-placeholder{color:#6c7a86}body .selectr-tags{margin:0;padding:0;white-space:normal}body .has-selected .selectr-tags{margin:0 0 -2px}body .selectr-tag{list-style:none;position:relative;float:left;padding:2px 25px 2px 8px;margin:0 2px 2px 0;cursor:default;color:var(--t42-content-color);border:medium none;border-radius:10px;background:#acb7bf none repeat scroll 0 0}body .selectr-container.multiple.has-selected .selectr-selected{padding:5px 28px 5px 5px}body .selectr-options-container{position:absolute;z-index:10000;top:calc(100% - 1px);left:0;display:none;box-sizing:border-box;width:100%;border-width:0 1px 1px;border-style:solid;border-color:transparent Rgb(var(--t42-bg-mid)) Rgb(var(--t42-bg-mid));border-radius:0 0 3px 3px;background-color:var(--t42-content-color)}body .selectr-container.open .selectr-options-container{display:block}body .selectr-input-container{position:relative;display:none}body .selectr-clear,body .selectr-input-clear,body .selectr-tag-remove{position:absolute;top:50%;right:22px;width:20px;height:20px;padding:0;cursor:pointer;-o-transform:translate3d(0px, -50%, 0px);-ms-transform:translate3d(0px, -50%, 0px);-moz-transform:translate3d(0px, -50%, 0px);-webkit-transform:translate3d(0px, -50%, 0px);transform:translate3d(0px, -50%, 0px);border:medium none;background-color:transparent;z-index:11}body .selectr-clear,body .selectr-input-clear{display:none}body .selectr-container.has-selected .selectr-clear,body .selectr-input-container.active .selectr-input-clear{display:block}body .selectr-selected .selectr-tag-remove{right:2px}body .selectr-clear::before,body .selectr-clear::after,body .selectr-input-clear::before,body .selectr-input-clear::after,body .selectr-tag-remove::before,body .selectr-tag-remove::after{position:absolute;top:5px;left:9px;width:2px;height:10px;content:' ';background-color:#6c7a86}body .selectr-tag-remove::before,body .selectr-tag-remove::after{top:4px;width:3px;height:12px;background-color:var(--t42-content-color)}body .selectr-clear:before,body .selectr-input-clear::before,body .selectr-tag-remove::before{-o-transform:rotate(45deg);-ms-transform:rotate(45deg);-moz-transform:rotate(45deg);-webkit-transform:rotate(45deg);transform:rotate(45deg)}body .selectr-clear:after,body .selectr-input-clear::after,body .selectr-tag-remove::after{-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}body .selectr-input-container.active,body .selectr-input-container.active .selectr-clear{display:block}body .selectr-input{top:5px;left:5px;box-sizing:border-box;width:calc(100% - 30px);margin:10px 15px;padding:7px 30px 7px 9px;border:1px solid Rgb(var(--t42-bg-mid));border-radius:3px}body .selectr-notice{display:none;box-sizing:border-box;width:100%;padding:8px 16px;border-top:1px solid Rgb(var(--t42-bg-mid));border-radius:0 0 3px 3px;background-color:var(--t42-content-color)}body .selectr-container.notice .selectr-notice{display:block}body .selectr-container.notice .selectr-selected{border-radius:3px 3px 0 0}body .selectr-options{position:relative;top:calc(100% + 2px);display:none;overflow-x:auto;overflow-y:scroll;max-height:200px;margin:0;padding:0}body .selectr-container.open .selectr-options,body .selectr-container.open .selectr-input-container,body .selectr-container.notice .selectr-options-container{display:block}body .selectr-option{position:relative;display:block;padding:5px 20px;list-style:outside none none;cursor:pointer;font-weight:normal}body .selectr-options.optgroups>.selectr-option{padding-left:25px}body .selectr-optgroup{font-weight:bold;padding:0}body .selectr-optgroup--label{font-weight:bold;margin-top:10px;padding:5px 15px}body .selectr-match{text-decoration:underline}body .selectr-option.selected{background-color:#ddd}body .selectr-option.active{color:var(--t42-content-color);background-color:#5897fb}body .selectr-option.disabled{opacity:0.4}body .selectr-option.excluded{display:none}body .selectr-container.open .selectr-selected{border-color:Rgb(var(--t42-bg-mid)) Rgb(var(--t42-bg-mid)) transparent Rgb(var(--t42-bg-mid));border-radius:3px 3px 0 0}body .selectr-container.open .selectr-selected::after{-o-transform:rotate(180deg) translate3d(0px, 50%, 0px);-ms-transform:rotate(180deg) translate3d(0px, 50%, 0px);-moz-transform:rotate(180deg) translate3d(0px, 50%, 0px);-webkit-transform:rotate(180deg) translate3d(0px, 50%, 0px);transform:rotate(180deg) translate3d(0px, 50%, 0px)}body .selectr-disabled{opacity:.6}body .selectr-empty,body .has-selected .selectr-placeholder{display:none}body .has-selected .selectr-label{display:block}body .taggable .selectr-selected{padding:4px 28px 4px 4px}body .taggable .selectr-selected::after{display:table;content:\" \";clear:both}body .taggable .selectr-label{width:auto}body .taggable .selectr-tags{float:left;display:block}body .taggable .selectr-placeholder{display:none}body .input-tag{float:left;min-width:90px;width:auto}body .selectr-tag-input{border:medium none;padding:3px 10px;width:100%;font-family:inherit;font-weight:inherit;font-size:inherit}body .selectr-input-container.loading::after{position:absolute;top:50%;right:20px;width:20px;height:20px;content:'';-o-transform:translate3d(0px, -50%, 0px);-ms-transform:translate3d(0px, -50%, 0px);-moz-transform:translate3d(0px, -50%, 0px);-webkit-transform:translate3d(0px, -50%, 0px);transform:translate3d(0px, -50%, 0px);-o-transform-origin:50% 0 0;-ms-transform-origin:50% 0 0;-moz-transform-origin:50% 0 0;-webkit-transform-origin:50% 0 0;transform-origin:50% 0 0;-moz-animation:500ms linear 0s normal forwards infinite running selectr-spin;-webkit-animation:500ms linear 0s normal forwards infinite running selectr-spin;animation:500ms linear 0s normal forwards infinite running selectr-spin;border-width:3px;border-style:solid;border-color:#aaa #ddd #ddd;border-radius:50%}@-webkit-keyframes selectr-spin{0%{-webkit-transform:rotate(0deg) translate3d(0px, -50%, 0px);transform:rotate(0deg) translate3d(0px, -50%, 0px)}100%{-webkit-transform:rotate(360deg) translate3d(0px, -50%, 0px);transform:rotate(360deg) translate3d(0px, -50%, 0px)}}@keyframes selectr-spin{0%{-webkit-transform:rotate(0deg) translate3d(0px, -50%, 0px);transform:rotate(0deg) translate3d(0px, -50%, 0px)}100%{-webkit-transform:rotate(360deg) translate3d(0px, -50%, 0px);transform:rotate(360deg) translate3d(0px, -50%, 0px)}}body .selectr-container.open.inverted .selectr-selected{border-color:transparent Rgb(var(--t42-bg-mid)) Rgb(var(--t42-bg-mid));border-radius:0 0 3px 3px}body .selectr-container.inverted .selectr-options-container{border-width:1px 1px 0;border-color:Rgb(var(--t42-bg-mid)) Rgb(var(--t42-bg-mid)) transparent;border-radius:3px 3px 0 0;background-color:var(--t42-content-color)}body .selectr-container.inverted .selectr-options-container{top:auto;bottom:calc(100% - 1px)}body .selectr-container ::-webkit-input-placeholder{color:#6c7a86;opacity:1}body .selectr-container ::-moz-placeholder{color:#6c7a86;opacity:1}body .selectr-container :-ms-input-placeholder{color:#6c7a86;opacity:1}body .selectr-container ::placeholder{color:#6c7a86;opacity:1}body #jsoneditor{height:100%}body .jsoneditor{border-color:var(--t42-color-opacity-10)}body .jsoneditor textarea{line-height:1.5;background-color:Rgb(var(--t42-bg-dark));min-height:100%}body .jsoneditor input{outline:0}body .jsoneditor input:focus{outline:0}body .jsoneditor-button:focus{outline:none}body .jsoneditor-menu{border-bottom-color:var(--t42-color-opacity-10);background-color:Rgb(var(--t42-bg-light))}body .jsoneditor-menu button{background-image:var(--t42-json-icons);background-color:transparent}body .jsoneditor-menu button:hover,body .jsoneditor-menu button:focus{color:var(--t42-link-hover-color)}body .jsoneditor-menu>button,body .jsoneditor-menu>.jsoneditor-modes>button{border-radius:0;font-size:.75rem;backdrop-filter:var(--backdrop-filter);transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-color, color}body .jsoneditor-menu>button:hover:not(.disabled):not(:disabled),body .jsoneditor-menu>button:active,body .jsoneditor-menu>.jsoneditor-modes>button:hover:not(.disabled):not(:disabled),body .jsoneditor-menu>.jsoneditor-modes>button:active{border-color:transparent;color:var(--t42-link-hover-color);background-color:var(--t42-color-opacity-10)}body .jsoneditor-menu li button.jsoneditor-selected{background-color:var(--t42-color-opacity-10)}body .jsoneditor-menu .jsoneditor-poweredBy{display:none}body .jsoneditor-frame{padding:0 .875rem;border-color:var(--t42-color-opacity-10);background-color:transparent;display:flex;transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:border-color}body .jsoneditor-frame:focus-within{border-color:var(--primary);background-color:var(--t42-input-bg);outline:0}body .jsoneditor-frame table td{vertical-align:middle}body .jsoneditor-search input[type=\"text\"]{border:0}body .jsoneditor-search input[type=\"text\"]:focus{border:0}body .jsoneditor-search input{background-color:transparent}body .jsoneditor-contextmenu{z-index:2}body .jsoneditor-contextmenu .jsoneditor-menu{border-color:var(--t42-color-opacity-10);background:linear-gradient(to bottom right, rgba(var(--t42-bg-light), 0.75) 0%, rgba(var(--t42-bg-dark), 0.75) 100%);box-shadow:var(--t42-shadow);backdrop-filter:var(--backdrop-filter)}body .jsoneditor-contextmenu .jsoneditor-menu button button .jsoneditor-expand,body .jsoneditor-contextmenu .jsoneditor-menu li button .jsoneditor-expand{background-image:var(--t42-json-icons);z-index:1}body .jsoneditor-contextmenu .jsoneditor-menu button button.jsoneditor-selected,body .jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected{background-color:var(--t42-color-opacity-10);transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-color, color}body .jsoneditor-contextmenu .jsoneditor-menu button button.jsoneditor-selected:hover,body .jsoneditor-contextmenu .jsoneditor-menu button button.jsoneditor-selected:focus,body .jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected:hover,body .jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected:focus{color:var(--t42-link-hover-color);background-color:var(--t42-color-opacity-10)}body .jsoneditor-contextmenu .jsoneditor-menu button{display:flex;justify-content:start}body .jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-default{float:left;z-index:1}body .jsoneditor-contextmenu .jsoneditor-menu li ul{padding:0 !important;left:0}body .jsoneditor-contextmenu .jsoneditor-menu li ul li button{padding-left:1rem}body .jsoneditor-contextmenu .jsoneditor-menu li ul .jsoneditor-icon{position:relative;margin-left:0}body .jsoneditor-contextmenu .jsoneditor-menu .jsoneditor-text{padding:0;line-height:1.5rem}body .jsoneditor-contextmenu .jsoneditor-icon{position:relative;background-image:var(--t42-json-icons)}body .jsoneditor-contextmenu .jsoneditor-separator{margin-top:0;padding-top:0}body .jsoneditor-mode-preview pre.jsoneditor-preview{border:0;line-height:1.5}body .jsoneditor-modal{border-top:0;background:linear-gradient(to bottom right, rgba(var(--t42-bg-light), 0.75) 0%, rgba(var(--t42-bg-dark), 0.75) 100%) !important;box-shadow:var(--t42-shadow) !important;backdrop-filter:var(--backdrop-filter)}body .jsoneditor-modal::before{position:absolute;top:0;right:0;left:0;display:block;width:100%;height:0.0625rem;background:linear-gradient(90deg, #1c89ea 0%, rgba(28,137,234,0.5) 100%);content:\"\"}body .jsoneditor-modal .pico-modal-header{padding:0.5rem 0.988rem;background:transparent;font-size:0.75rem}body .jsoneditor-modal .pico-close{top:1rem !important;right:1rem !important;color:var(--t42-content-color-muted);transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:color}body .jsoneditor-modal .pico-close:not(.disabled):not(:disabled).active,body .jsoneditor-modal .pico-close:not(.disabled):not(:disabled):focus,body .jsoneditor-modal .pico-close:not(.disabled):not(:disabled):hover{color:var(--t42-link-color)}body .jsoneditor-modal table td{font-size:0.75rem;padding:0 0.25rem}body .jsoneditor-modal table td.jsoneditor-modal-input{padding-top:0.25rem;padding-bottom:0.25rem;text-align:left}body .jsoneditor-modal table td.jsoneditor-modal-input.jsoneditor-modal-actions{text-align:right}body .jsoneditor-modal table th{font-size:0.75rem}body .jsoneditor-modal label,body .jsoneditor-modal p{font-size:0.75rem}body .jsoneditor-modal select{min-width:12.375rem}body .jsoneditor-modal .selectr-selected{padding:0 0.857rem}body .jsoneditor-modal select,body .jsoneditor-modal textarea,body .jsoneditor-modal input,body .jsoneditor-modal input[type=\"text\"],body .jsoneditor-modal input[type=\"search\"],body .jsoneditor-modal #query{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:border;border-color:var(--t42-color-opacity-10);border-radius:0;font-size:0.75rem;background-color:var(--t42-input-bg)}body .jsoneditor-modal select:focus,body .jsoneditor-modal textarea:focus,body .jsoneditor-modal input:focus,body .jsoneditor-modal input[type=\"text\"]:focus,body .jsoneditor-modal input[type=\"search\"]:focus,body .jsoneditor-modal #query:focus{border-color:var(--primary);box-shadow:none;outline:0;padding:0 0 0 .875rem;border-radius:0}body .jsoneditor-modal select:disabled,body .jsoneditor-modal select.disabled,body .jsoneditor-modal select[readonly],body .jsoneditor-modal textarea:disabled,body .jsoneditor-modal textarea.disabled,body .jsoneditor-modal textarea[readonly],body .jsoneditor-modal input:disabled,body .jsoneditor-modal input.disabled,body .jsoneditor-modal input[readonly],body .jsoneditor-modal input[type=\"text\"]:disabled,body .jsoneditor-modal input[type=\"text\"].disabled,body .jsoneditor-modal input[type=\"text\"][readonly],body .jsoneditor-modal input[type=\"search\"]:disabled,body .jsoneditor-modal input[type=\"search\"].disabled,body .jsoneditor-modal input[type=\"search\"][readonly],body .jsoneditor-modal #query:disabled,body .jsoneditor-modal #query.disabled,body .jsoneditor-modal #query[readonly]{cursor:default;opacity:0.65}body .jsoneditor-modal input[type=\"search\"].selectr-input{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:border-color;border:var(--t42-border);background-color:var(--t42-input-bg);margin:0;line-height:1.5rem;width:100%;padding:0 0.5rem}body .jsoneditor-modal input[type=\"search\"].selectr-input:hover{border-color:var(--primary)}body .jsoneditor-modal .jsoneditor-select-wrapper::after{border-top:var(--t42-color-opacity-10)}body .jsoneditor-modal input[type=\"button\"],body .jsoneditor-modal input[type=\"submit\"]{padding:0 .875rem;border-radius:0;color:var(--t42-link-color);line-height:1.875rem;background:transparent;transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-color, border-color}body .jsoneditor-modal input[type=\"button\"]:not(.disabled):not(:disabled).active,body .jsoneditor-modal input[type=\"button\"]:not(.disabled):not(:disabled):hover,body .jsoneditor-modal input[type=\"submit\"]:not(.disabled):not(:disabled).active,body .jsoneditor-modal input[type=\"submit\"]:not(.disabled):not(:disabled):hover{border-color:var(--t42-color-opacity-30);color:var(--white);background:var(--primary)}body .jsoneditor-modal .jsoneditor-button-group input.jsoneditor-button-first{border-left-style:solid;border-top-left-radius:0;border-bottom-left-radius:0}body .jsoneditor-modal .jsoneditor-button-group input.jsoneditor-button-last{border-top-right-radius:0;border-bottom-right-radius:0}body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-asc input.jsoneditor-button-asc,body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-desc input.jsoneditor-button-desc{color:var(--white);background:var(--primary)}body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-asc input.jsoneditor-button-asc:hover,body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-asc input.jsoneditor-button-asc:focus,body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-asc input.jsoneditor-button-asc:active,body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-desc input.jsoneditor-button-desc:hover,body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-desc input.jsoneditor-button-desc:focus,body .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-desc input.jsoneditor-button-desc:active{border-color:var(--t42-color-opacity-30);color:var(--white)}body .jsoneditor-modal .jsoneditor-jmespath-label{color:var(--t42-content-color);font-weight:400}body .jsoneditor-modal .jsoneditor-jmespath-filter-value input{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:border-color;line-height:1.875rem;padding:0 0 0 .875rem;font-size:0.75rem;background-color:var(--t42-input-bg)}body .jsoneditor-modal .jsoneditor-jmespath-filter-value input:focus,body .jsoneditor-modal .jsoneditor-jmespath-filter-value input:hover{background-color:var(--t42-input-bg);border-color:var(--primary)}body .jsoneditor-jmespath-block .jsoneditor-modal-actions{text-align:right}body div.jsoneditor td.jsoneditor-tree{vertical-align:middle}body div.jsoneditor td.jsoneditor-separator{vertical-align:middle}body div.jsoneditor-tree{background:transparent}body div.jsoneditor-tree button.jsoneditor-button{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-color, outline-color;background-image:var(--t42-json-icons)}body div.jsoneditor-tree button.jsoneditor-button:focus{background-color:transparent;outline-color:var(--t42-color-opacity-10)}body tr.jsoneditor-selected,body tr.jsoneditor-highlight{background-color:var(--t42-color-opacity-10)}body .selectr-selected{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:border-color;height:2rem;font-size:0.75rem;font-weight:400;line-height:1.875rem;background-color:var(--t42-input-bg);border-radius:0}body .selectr-selected::before{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:transform;right:0.5rem;border:0;width:0.75rem;height:0.75rem;background:var(--t42-select-indicator) center center/1rem 1rem no-repeat;transform:translateY(-50%)}body .selectr-placeholder{color:var(--t42-content-color-muted)}body .selectr-container.open .selectr-selected{border-radius:0;border-color:var(--primary)}body .selectr-container.open .selectr-selected::before{border:0;transform:rotate(180deg) translateY(50%)}body .selectr-container.open .selectr-options-container{border-left-color:var(--primary);border-right-color:var(--primary);border-bottom-color:var(--primary)}body .selectr-options{overflow-y:auto}body .selectr-options-container{min-height:2rem;border-color:var(--t42-color-opacity-10);border-style:solid;border-width:1px;background-color:Rgb(var(--t42-bg-dark))}body .selectr-options .active{color:var(--t42-link-hover-color);background-color:var(--t42-color-opacity-10)}body .selectr-options .selected{color:var(--t42-link-hover-color);background-color:var(--primary)}body .selectr-option{padding:0 0 0 0.875rem;line-height:2rem;font-size:0.75rem}body .selectr-input{transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:border-color;border:var(--t42-border);background-color:var(--t42-input-bg)}body .selectr-input:hover{border-color:var(--primary)}body .selectr-input-container{padding:0.25rem}body .selectr-clear::before,body .selectr-clear::after{background-color:var(--t42-content-color)}body .jsoneditor .ace-jsoneditor .ace_text-input{min-height:auto}body .jsoneditor .ace-jsoneditor.ace_editor,body .jsoneditor .ace-jsoneditor .ace_scroller{background-color:Rgb(var(--t42-bg-dark))}body .jsoneditor .ace-jsoneditor .ace_gutter{color:var(--t42-content-color-muted);background-color:Rgb(var(--t42-bg-mid))}body .jsoneditor .ace-jsoneditor .ace_gutter-active-line{background-color:Rgb(var(--t42-bg-light))}body .jsoneditor .ace-jsoneditor .ace_cursor{border-color:Rgb(var(--t42-content-color))}body .jsoneditor .ace-jsoneditor .ace_marker-layer .ace_active-line{background-color:rgba(var(--secondary), 0.25)}body .jsoneditor .ace-jsoneditor .ace_marker-layer .ace_selection{background-color:var(--t42-color-opacity-10)}body .jsoneditor .ace-jsoneditor .ace_marker-layer .ace_selected-word{border-color:var(--t42-color-opacity-10);background-color:var(--t42-color-opacity-10)}body .jsoneditor .ace-jsoneditor .ace_marker-layer .ace_bracket{border:var(--t42-border)}body .jsoneditor .ace-jsoneditor .ace_variable{color:var(--t42-content-color)}body .jsoneditor .ace-jsoneditor .ace_constant.ace_numeric{color:#ff511f}body .jsoneditor .ace-jsoneditor .ace_constant.ace_language{color:#f9a825}body .jsoneditor .ace-jsoneditor .ace_string{color:#43a047}body .jsoneditor .ace-jsoneditor .ace_fold{border-color:var(--t42-color-opacity-10);background-color:Rgb(var(--t42-bg-light));transition-timing-function:cubic-bezier(0.45, 0, 0.15, 1);transition-duration:250ms;transition-property:background-image}body .jsoneditor .ace-jsoneditor .ace_fold-widget:hover,body .jsoneditor .ace-jsoneditor .ace_fold-widget:active{border-color:var(--t42-color-opacity-30);background-color:var(--t42-color-opacity-10);box-shadow:none}body .pico-modal-contents{display:block}\n\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/browser-platform-dev-react-seed/intents-resolver-ui/static/js/787.17e09523.chunk.js b/browser-platform-dev-react-seed/intents-resolver-ui/static/js/787.17e09523.chunk.js new file mode 100644 index 0000000..ccd5fbc --- /dev/null +++ b/browser-platform-dev-react-seed/intents-resolver-ui/static/js/787.17e09523.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkintents_resolver=self.webpackChunkintents_resolver||[]).push([[787],{787:(e,t,n)=>{n.r(t),n.d(t,{getCLS:()=>y,getFCP:()=>g,getFID:()=>C,getLCP:()=>P,getTTFB:()=>D});var i,r,a,o,u=function(e,t){return{name:e,value:void 0===t?-1:t,delta:0,entries:[],id:"v2-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12)}},c=function(e,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){if("first-input"===e&&!("PerformanceEventTiming"in self))return;var n=new PerformanceObserver((function(e){return e.getEntries().map(t)}));return n.observe({type:e,buffered:!0}),n}}catch(e){}},s=function(e,t){var n=function n(i){"pagehide"!==i.type&&"hidden"!==document.visibilityState||(e(i),t&&(removeEventListener("visibilitychange",n,!0),removeEventListener("pagehide",n,!0)))};addEventListener("visibilitychange",n,!0),addEventListener("pagehide",n,!0)},f=function(e){addEventListener("pageshow",(function(t){t.persisted&&e(t)}),!0)},m=function(e,t,n){var i;return function(r){t.value>=0&&(r||n)&&(t.delta=t.value-(i||0),(t.delta||void 0===i)&&(i=t.value,e(t)))}},v=-1,p=function(){return"hidden"===document.visibilityState?0:1/0},d=function(){s((function(e){var t=e.timeStamp;v=t}),!0)},l=function(){return v<0&&(v=p(),d(),f((function(){setTimeout((function(){v=p(),d()}),0)}))),{get firstHiddenTime(){return v}}},g=function(e,t){var n,i=l(),r=u("FCP"),a=function(e){"first-contentful-paint"===e.name&&(s&&s.disconnect(),e.startTime-1&&e(t)},r=u("CLS",0),a=0,o=[],v=function(e){if(!e.hadRecentInput){var t=o[0],i=o[o.length-1];a&&e.startTime-i.startTime<1e3&&e.startTime-t.startTime<5e3?(a+=e.value,o.push(e)):(a=e.value,o=[e]),a>r.value&&(r.value=a,r.entries=o,n())}},p=c("layout-shift",v);p&&(n=m(i,r,t),s((function(){p.takeRecords().map(v),n(!0)})),f((function(){a=0,T=-1,r=u("CLS",0),n=m(i,r,t)})))},E={passive:!0,capture:!0},w=new Date,L=function(e,t){i||(i=t,r=e,a=new Date,F(removeEventListener),S())},S=function(){if(r>=0&&r1e12?new Date:performance.now())-e.timeStamp;"pointerdown"==e.type?function(e,t){var n=function(){L(e,t),r()},i=function(){r()},r=function(){removeEventListener("pointerup",n,E),removeEventListener("pointercancel",i,E)};addEventListener("pointerup",n,E),addEventListener("pointercancel",i,E)}(t,e):L(t,e)}},F=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach((function(t){return e(t,b,E)}))},C=function(e,t){var n,a=l(),v=u("FID"),p=function(e){e.startTimeperformance.now())return;n.entries=[t],e(n)}catch(e){}},"complete"===document.readyState?setTimeout(t,0):addEventListener("load",(function(){return setTimeout(t,0)}))}}}]); +//# sourceMappingURL=787.17e09523.chunk.js.map \ No newline at end of file diff --git a/browser-platform-dev-react-seed/intents-resolver-ui/static/js/787.17e09523.chunk.js.map b/browser-platform-dev-react-seed/intents-resolver-ui/static/js/787.17e09523.chunk.js.map new file mode 100644 index 0000000..51e44dd --- /dev/null +++ b/browser-platform-dev-react-seed/intents-resolver-ui/static/js/787.17e09523.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/787.17e09523.chunk.js","mappings":"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","sources":["../node_modules/web-vitals/dist/web-vitals.js"],"sourcesContent":["var e,t,n,i,r=function(e,t){return{name:e,value:void 0===t?-1:t,delta:0,entries:[],id:\"v2-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12)}},a=function(e,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){if(\"first-input\"===e&&!(\"PerformanceEventTiming\"in self))return;var n=new PerformanceObserver((function(e){return e.getEntries().map(t)}));return n.observe({type:e,buffered:!0}),n}}catch(e){}},o=function(e,t){var n=function n(i){\"pagehide\"!==i.type&&\"hidden\"!==document.visibilityState||(e(i),t&&(removeEventListener(\"visibilitychange\",n,!0),removeEventListener(\"pagehide\",n,!0)))};addEventListener(\"visibilitychange\",n,!0),addEventListener(\"pagehide\",n,!0)},u=function(e){addEventListener(\"pageshow\",(function(t){t.persisted&&e(t)}),!0)},c=function(e,t,n){var i;return function(r){t.value>=0&&(r||n)&&(t.delta=t.value-(i||0),(t.delta||void 0===i)&&(i=t.value,e(t)))}},f=-1,s=function(){return\"hidden\"===document.visibilityState?0:1/0},m=function(){o((function(e){var t=e.timeStamp;f=t}),!0)},v=function(){return f<0&&(f=s(),m(),u((function(){setTimeout((function(){f=s(),m()}),0)}))),{get firstHiddenTime(){return f}}},d=function(e,t){var n,i=v(),o=r(\"FCP\"),f=function(e){\"first-contentful-paint\"===e.name&&(m&&m.disconnect(),e.startTime-1&&e(t)},f=r(\"CLS\",0),s=0,m=[],v=function(e){if(!e.hadRecentInput){var t=m[0],i=m[m.length-1];s&&e.startTime-i.startTime<1e3&&e.startTime-t.startTime<5e3?(s+=e.value,m.push(e)):(s=e.value,m=[e]),s>f.value&&(f.value=s,f.entries=m,n())}},h=a(\"layout-shift\",v);h&&(n=c(i,f,t),o((function(){h.takeRecords().map(v),n(!0)})),u((function(){s=0,l=-1,f=r(\"CLS\",0),n=c(i,f,t)})))},T={passive:!0,capture:!0},y=new Date,g=function(i,r){e||(e=r,t=i,n=new Date,w(removeEventListener),E())},E=function(){if(t>=0&&t1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,t){var n=function(){g(e,t),r()},i=function(){r()},r=function(){removeEventListener(\"pointerup\",n,T),removeEventListener(\"pointercancel\",i,T)};addEventListener(\"pointerup\",n,T),addEventListener(\"pointercancel\",i,T)}(t,e):g(t,e)}},w=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(t){return e(t,S,T)}))},L=function(n,f){var s,m=v(),d=r(\"FID\"),p=function(e){e.startTimeperformance.now())return;n.entries=[t],e(n)}catch(e){}},\"complete\"===document.readyState?setTimeout(t,0):addEventListener(\"load\",(function(){return setTimeout(t,0)}))};export{h as getCLS,d as getFCP,L as getFID,F as getLCP,P as getTTFB};\n"],"names":["e","t","n","i","r","name","value","delta","entries","id","concat","Date","now","Math","floor","random","a","PerformanceObserver","supportedEntryTypes","includes","self","getEntries","map","observe","type","buffered","o","document","visibilityState","removeEventListener","addEventListener","u","persisted","c","f","s","m","timeStamp","v","setTimeout","firstHiddenTime","d","disconnect","startTime","push","window","performance","getEntriesByName","requestAnimationFrame","p","l","h","hadRecentInput","length","takeRecords","T","passive","capture","y","g","w","E","entryType","target","cancelable","processingStart","forEach","S","L","b","F","once","P","getEntriesByType","timing","max","navigationStart","responseStart","readyState"],"sourceRoot":""} \ No newline at end of file diff --git a/browser-platform-dev-react-seed/intents-resolver-ui/static/js/main.37f9cff4.js b/browser-platform-dev-react-seed/intents-resolver-ui/static/js/main.37f9cff4.js new file mode 100644 index 0000000..00fa0a8 --- /dev/null +++ b/browser-platform-dev-react-seed/intents-resolver-ui/static/js/main.37f9cff4.js @@ -0,0 +1,3 @@ +/*! For license information please see main.37f9cff4.js.LICENSE.txt */ +(()=>{var e={664:function(e,t,n){e.exports=function(){"use strict";var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};function t(t,n){if("function"!==typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}var i=function(){return i=Object.assign||function(e){for(var t,n=1,i=arguments.length;n0&&r[r.length-1])&&(6===a[0]||2===a[0])){s=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]0&&"/"!==e[0]?"/"+e:e}function p(e){return"timestamp"===c(e)?Date.now():f(e.value)}function f(e){return"object"!==typeof e?e:Object.keys(e).reduce((function(t,n){var i=e[n];return"object"===typeof i&&i.constructor!==Date?t[n]=f(i):i.constructor===Date?t[n]=new Date(i).getTime():i.constructor===Boolean?t[n]=i.toString():t[n]=i,t}),{})}function g(e){return e.reduce((function(e,t){return e.concat(Array.isArray(t)?g(t):t)}),[])}function m(e){return e.sort((function(e,t){return e.state?t.state?t.state-e.state:-1:1}))[0]}function v(e){var t="";return e.forEach((function(e,n,i){var r=e.path.join(".");n===i.length-1?t+=r+"."+e.name+": "+e.description:t+=r+"."+e.name+": "+e.description+","})),t.length>100?t.slice(0,100)+"...":t}function y(e){var t=g(e.root.getAggregateState()),n=m(t);return{description:v(t),value:n.state}}function w(e,t){var n,s,a=this;if(!e||"object"!==typeof e)throw new Error("Connection is required parameter");var c=function(i){var r;n=new Promise((function(e){r=e})),(s=e.domain("metrics")).onJoined((function(e){!e&&r&&(r(),r=void 0);var t={type:"define",metrics:[{name:"/State",type:"object",composite:{Description:{type:"string",description:""},Value:{type:"number",description:""}},description:"System state",context:{}}]};s.send(t),e&&u(i)})),s.join({system:t.system,service:t.service,instance:t.instance})},u=function(e){l(e.root)},l=function(e){f(e),e.metrics.forEach((function(e){m(e)})),e.subSystems.forEach((function(e){l(e)}))},f=function(e){return r(a,void 0,void 0,(function(){var t,i;return o(this,(function(r){switch(r.label){case 0:return void 0===e.parent?[2]:[4,n];case 1:return r.sent(),t={name:h(e.path.join("/")+"/"+e.name+"/State"),type:"object",composite:{Description:{type:"string",description:""},Value:{type:"number",description:""}},description:"System state",context:{}},i={type:"define",metrics:[t]},s.send(i),[2]}}))}))},g=function(t,i){return r(a,void 0,void 0,(function(){var r,a,c;return o(this,(function(o){switch(o.label){case 0:return[4,n];case 1:return o.sent(),r={type:"publish",values:[{name:h(t.path.join("/")+"/"+t.name+"/State"),value:{Description:i.description,Value:i.state},timestamp:Date.now()}]},s.send(r),a=y(t),c={type:"publish",peer_id:e.peerId,values:[{name:"/State",value:{Description:a.description,Value:a.value},timestamp:Date.now()}]},s.send(c),[2]}}))}))},m=function(e){return r(a,void 0,void 0,(function(){var t,i,r;return o(this,(function(o){switch(o.label){case 0:return t=b(e),[4,n];case 1:return o.sent(),i=d(t),r={type:"define",metrics:[i]},s.send(r),"undefined"!==typeof t.value&&w(t),[2]}}))}))},v=function(e){return r(a,void 0,void 0,(function(){var t;return o(this,(function(i){switch(i.label){case 0:return t=b(e),[4,n];case 1:return i.sent(),w(t),[2]}}))}))},w=function(e){if(_()){var t=p(e),n={type:"publish",values:[{name:h(e.path.join("/")+"/"+e.name),value:t,timestamp:Date.now()}]};return s.sendFireAndForget(n)}return Promise.resolve()},b=function(e){var t=i({},e);return"object"===typeof e.value&&null!==e.value&&(t.value=i({},e.value)),t},_=function(){var e;try{return(null!==(e=t.canUpdateMetric)&&void 0!==e?e:function(){return!0})()}catch(Bo){return!0}};return{init:c,createSystem:f,updateSystem:g,createMetric:m,updateMetric:v}}var b={validate:function(e,t,n){if(null===e||"object"!==typeof e)throw new Error("Missing definition");if(null===t||"object"!==typeof t)throw new Error("Missing parent");if(null===n||"object"!==typeof n)throw new Error("Missing transport")}},_=function(){function e(e,t,n,i,r){this.definition=e,this.system=t,this.transport=n,this.value=i,this.type=r,this.path=[],b.validate(e,t,n),this.path=t.path.slice(0),this.path.push(t.name),this.name=e.name,this.description=e.description,n.createMetric(this)}return Object.defineProperty(e.prototype,"repo",{get:function(){var e;return null===(e=this.system)||void 0===e?void 0:e.repo},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"id",{get:function(){return"".concat(this.system.path,"/").concat(name)},enumerable:!1,configurable:!0}),e.prototype.update=function(e){return this.value=e,this.transport.updateMetric(this)},e}(),C=function(e){function n(t,n,i,r){return e.call(this,t,n,i,r,a.NUMBER)||this}return t(n,e),n.prototype.incrementBy=function(e){this.update(this.value+e)},n.prototype.increment=function(){this.incrementBy(1)},n.prototype.decrement=function(){this.incrementBy(-1)},n.prototype.decrementBy=function(e){this.incrementBy(-1*e)},n}(_),I=function(e){function n(t,n,i,r){return e.call(this,t,n,i,r,a.OBJECT)||this}return t(n,e),n.prototype.update=function(e){return this.mergeValues(e),this.transport.updateMetric(this)},n.prototype.mergeValues=function(e){var t=this;return Object.keys(this.value).forEach((function(n){"undefined"!==typeof e[n]&&(t.value[n]=e[n])}))},n}(_),S=function(e){function n(t,n,i,r){return e.call(this,t,n,i,r,a.STRING)||this}return t(n,e),n}(_),k=function(e){function n(t,n,i,r){return e.call(this,t,n,i,r,a.TIMESTAMP)||this}return t(n,e),n.prototype.now=function(){this.update(new Date)},n}(_);function x(e,t,n,i,r){if(!t)throw new Error("Repository is required");if(!n)throw new Error("Transport is required");var o=n,s=e,c=r||"",u=t,d=i,l=E(i),h={},p=P(l,"/")+e,f=t.root,g=[],m=[];function v(e,t){if(!e||0===e.length)throw new Error("name is required");var n=g.filter((function(t){return t.name===e}));if(n.length>0)return n[0];var i=x(e,u,o,R,t);return g.push(i),i}function y(e,t){h={state:e,description:t},o.updateSystem(R,h)}function w(e,t){return A(e,a.STRING,t,(function(e){return new S(e,R,o,t)}))}function b(e,t){return A(e,a.NUMBER,t,(function(e){return new C(e,R,o,t)}))}function _(e,t){return A(e,a.OBJECT,t,(function(e){return new I(e,R,o,t)}))}function T(e,t){return A(e,a.TIMESTAMP,t,(function(e){return new k(e,R,o,t)}))}function A(e,t,n,i){var r={name:""};r="string"===typeof e?{name:e}:e;var o=m.filter((function(e){return e.name===r.name}));if(o.length>0){var s=o[0];if(s.type!==t)throw new Error("A metric named ".concat(r.name," is already defined with different type."));return"undefined"!==typeof n&&s.update(n).catch((function(){})),s}var a=i(r);return m.push(a),a}function E(e){if(!e||!e.parent)return[];var t=E(e.parent);return t.push(e.name),t}function P(e,t){return e&&e.length>0?e.join(t):""}function M(){var e=[];return Object.keys(h).length>0&&e.push({name:s,path:l,state:h.state,description:h.description}),g.forEach((function(t){var n=t.getAggregateState();n.length>0&&e.push.apply(e,n)})),e}var R={get name(){return s},get description(){return c},get repo(){return u},get parent(){return d},path:l,id:p,root:f,get subSystems(){return g},get metrics(){return m},subSystem:v,getState:function(){return h},setState:y,stringMetric:w,timestampMetric:T,objectMetric:_,numberMetric:b,getAggregateState:M};return o.createSystem(R),R}var T=function(){function e(e,t){t.init(this),this.root=x("",this,t),this.addSystemMetrics(this.root,e.clickStream||void 0===e.clickStream)}return e.prototype.addSystemMetrics=function(e,t){if("undefined"!==typeof navigator&&e.stringMetric("UserAgent",navigator.userAgent),t&&"undefined"!==typeof document){var n=e.subSystem("ClickStream"),i=function(e){var t;if(e.target){var i=e.target,r=i&&null!==(t=i.getAttribute("class"))&&void 0!==t?t:"";n.objectMetric("LastBrowserEvent",{type:"click",timestamp:new Date,target:{className:r,id:i.id,type:"<"+i.tagName.toLowerCase()+">",href:i.href||""}})}};n.objectMetric("Page",{title:document.title,page:window.location.href}),document.addEventListener?document.addEventListener("click",i):document.attachEvent("onclick",i)}e.stringMetric("StartTime",(new Date).toString());var r=e.stringMetric("StartURL",""),o=e.stringMetric("AppName","");if("undefined"!==typeof window){if("undefined"!==typeof window.location){var s=window.location.href;r.update(s)}"undefined"!==typeof window.glue42gd&&o.update(window.glue42gd.appName)}},e}(),A=function(){function e(){}return e.prototype.init=function(e){},e.prototype.createSystem=function(e){return Promise.resolve()},e.prototype.updateSystem=function(e,t){return Promise.resolve()},e.prototype.createMetric=function(e){return Promise.resolve()},e.prototype.updateMetric=function(e){return Promise.resolve()},e}(),E=function(){function e(e,t,n){this.api=e,this.lastCount=0,this.initialPublishTimeout=1e4,this.publishInterval=6e4,this.initialPublishTimeout=null!==t&&void 0!==t?t:this.initialPublishTimeout,this.publishInterval=null!==n&&void 0!==n?n:this.publishInterval,this.scheduleCollection(),this.system=this.api.subSystem("performance","Performance data published by the web application")}return e.prototype.scheduleCollection=function(){var e=this;setTimeout((function(){e.collect(),setInterval((function(){e.collect()}),e.publishInterval)}),this.initialPublishTimeout)},e.prototype.collect=function(){try{this.collectMemory(),this.collectEntries()}catch(Uo){}},e.prototype.collectMemory=function(){var e=window.performance.memory;this.system.stringMetric("memory",JSON.stringify({totalJSHeapSize:e.totalJSHeapSize,usedJSHeapSize:e.usedJSHeapSize}))},e.prototype.collectEntries=function(){var e=window.performance.getEntries();if(!(e.length<=this.lastCount)){this.lastCount=e.length;var t=e.map((function(e){return e.toJSON()}));this.system.stringMetric("entries",JSON.stringify(t))}},e}(),P=function(e){var t;t=e.connection&&"object"===typeof e.connection?w(e.connection,e):new A;var n=new T(e,t).root;e.disableAutoAppSystem||(n=n.subSystem("App"));var i=R(n);return M(i,e.pagePerformanceMetrics),i};function M(e,t){var n,i;if("undefined"!==typeof window){var r=null===(i=null===(n=null===window||void 0===window?void 0:window.glue42gd)||void 0===n?void 0:n.metrics)||void 0===i?void 0:i.pagePerformanceMetrics;r&&(t=r),(null===t||void 0===t?void 0:t.enabled)&&new E(e,t.initialPublishTimeout,t.publishInterval)}}function R(e){var t,n=e.subSystem("reporting"),i={name:"features"},r=function(e,r,o){if("undefined"===typeof e||""===e)throw new Error("name is mandatory");if("undefined"===typeof r||""===r)throw new Error("action is mandatory");if("undefined"===typeof o||""===o)throw new Error("payload is mandatory");t?t.update({name:e,action:r,payload:o}):t=n.objectMetric(i,{name:e,action:r,payload:o})};return e.featureMetric=r,e}var N="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof window?window:"undefined"!==typeof n.g?n.g:"undefined"!==typeof self?self:{};function O(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function j(e){if(e&&e.errorHandling&&"function"!==typeof e.errorHandling&&"log"!==e.errorHandling&&"silent"!==e.errorHandling&&"throw"!==e.errorHandling)throw new Error('Invalid options passed to createRegistry. Prop errorHandling should be ["log" | "silent" | "throw" | (err) => void], but '+typeof e.errorHandling+" was passed");var t=e&&"function"===typeof e.errorHandling&&e.errorHandling,n={};function i(e,t,i){var r=n[e];return r||(r=[],n[e]=r),r.push(t),i&&setTimeout((function(){i.forEach((function(i){var r;if(null===(r=n[e])||void 0===r?void 0:r.includes(t))try{Array.isArray(i)?t.apply(void 0,i):t.apply(void 0,[i])}catch(s){o(s,e)}}))}),0),function(){var i=n[e];i&&(0===(i=i.reduce((function(e,n,i){return n===t&&e.length===i||e.push(n),e}),[])).length?delete n[e]:n[e]=i)}}function r(e){for(var t=[],i=1;i0&&(o=r-n[n.length-1].time),n.push({name:e,time:r,diff:o})}c("start",s);var u={get startTime(){return s},get endTime(){return r},get period(){return o},stop:a,mark:c,marks:n};return B[e]=u,u}var q=L.isNode()?null:window.WebSocket,z=function(){function e(e,t){if(this.startupTimer=G("connection"),this._running=!0,this._registry=D(),this.wsRequests=[],this.settings=e,this.logger=t,!this.settings.ws)throw new Error("ws is missing")}return e.prototype.onMessage=function(e){return this._registry.add("onMessage",e)},e.prototype.send=function(e,t){var n=this;return new Promise((function(t,i){n.waitForSocketConnection((function(){var r;try{null===(r=n.ws)||void 0===r||r.send(e),t()}catch(o){i(o)}}),i)}))},e.prototype.open=function(){var e=this;return this.logger.info("opening ws..."),this._running=!0,new Promise((function(t,n){e.waitForSocketConnection(t,n)}))},e.prototype.close=function(){return this._running=!1,this.ws&&this.ws.close(),Promise.resolve()},e.prototype.onConnectedChanged=function(e){return this._registry.add("onConnectedChanged",e)},e.prototype.name=function(){return this.settings.ws},e.prototype.reconnect=function(){var e;null===(e=this.ws)||void 0===e||e.close();var t=new U;return this.waitForSocketConnection((function(){t.resolve()})),t.promise},e.prototype.waitForSocketConnection=function(e,t){var n;t=null!==t&&void 0!==t?t:function(){},this._running?1!==(null===(n=this.ws)||void 0===n?void 0:n.readyState)?(this.wsRequests.push({callback:e,failed:t}),this.wsRequests.length>1||this.openSocket()):e():t("wait for socket on ".concat(this.settings.ws," failed - socket closed by user"))},e.prototype.openSocket=function(e,t){return r(this,void 0,void 0,(function(){var n=this;return o(this,(function(i){switch(i.label){case 0:if(this.startupTimer.mark("opening-socket"),void 0===e&&(e=this.settings.reconnectInterval),"undefined"===typeof t&&(t=this.settings.reconnectAttempts),void 0!==t){if(0===t)return this.notifyForSocketState("wait for socket on ".concat(this.settings.ws," failed - no more retries left")),[2];this.logger.debug("will retry ".concat(t," more times (every ").concat(e," ms)"))}i.label=1;case 1:return i.trys.push([1,3,,4]),[4,this.initiateSocket()];case 2:return i.sent(),this.startupTimer.mark("socket-initiated"),this.notifyForSocketState(),[3,4];case 3:return i.sent(),setTimeout((function(){var i=void 0===t?void 0:t-1;n.openSocket(e,i)}),e),[3,4];case 4:return[2]}}))}))},e.prototype.initiateSocket=function(){var e=this,t=new U;return this.logger.debug("initiating ws to ".concat(this.settings.ws,"...")),this.ws=new q(this.settings.ws||""),this.ws.onerror=function(n){var i="";try{i=JSON.stringify(n)}catch(s){var r=new WeakSet,o=function(e,t){if("object"===typeof t&&null!==t){if(r.has(t))return;r.add(t)}return t};i=JSON.stringify(n,o)}t.reject("error"),e.notifyStatusChanged(!1,i)},this.ws.onclose=function(n){e.logger.info("ws closed ".concat(n)),t.reject("closed"),e.notifyStatusChanged(!1)},this.ws.onopen=function(){var n;e.startupTimer.mark("ws-opened"),e.logger.info("ws opened ".concat(null===(n=e.settings.identity)||void 0===n?void 0:n.application)),t.resolve(),e.notifyStatusChanged(!0)},this.ws.onmessage=function(t){e._registry.execute("onMessage",t.data)},t.promise},e.prototype.notifyForSocketState=function(e){this.wsRequests.forEach((function(t){e?t.failed&&t.failed(e):t.callback()})),this.wsRequests=[]},e.prototype.notifyStatusChanged=function(e,t){this._registry.execute("onConnectedChanged",e,t)},e}(),V={},J={get exports(){return V},set exports(e){V=e}},K={},$={get exports(){return K},set exports(e){K=e}},Q=1;function Y(){return(Q=(9301*Q+49297)%233280)/233280}function X(e){Q=e}var Z,ee,te,ne={nextValue:Y,seed:X},ie="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-";function re(){te=!1}function oe(e){if(e){if(e!==Z){if(e.length!==ie.length)throw new Error("Custom alphabet for shortid must be "+ie.length+" unique characters. You submitted "+e.length+" characters: "+e);var t=e.split("").filter((function(e,t,n){return t!==n.lastIndexOf(e)}));if(t.length)throw new Error("Custom alphabet for shortid must be "+ie.length+" unique characters. These characters were not unique: "+t.join(", "));Z=e,re()}}else Z!==ie&&(Z=ie,re())}function se(e){return oe(e),Z}function ae(e){ne.seed(e),ee!==e&&(re(),ee=e)}function ce(){Z||oe(ie);for(var e,t=Z.split(""),n=[],i=ne.nextValue();t.length>0;)i=ne.nextValue(),e=Math.floor(i*t.length),n.push(t.splice(e,1)[0]);return n.join("")}function ue(){return te||(te=ce())}function de(e){return ue()[e]}function le(){return Z||ie}var he,pe={get:le,characters:se,seed:ae,lookup:de,shuffled:ue},fe="object"===typeof window&&(window.crypto||window.msCrypto);he=fe&&fe.getRandomValues?function(e){return fe.getRandomValues(new Uint8Array(e))}:function(e){for(var t=[],n=0;n0&&(t+=Ce(be)),t+=Ce(n)}var xe=ke,Te=pe;function Ae(e){return!(!e||"string"!==typeof e||e.length<6)&&!new RegExp("[^"+Te.get().replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&")+"]").test(e)}var Ee=Ae;(function(e){var t=pe,n=xe,i=Ee,r=0;function o(n){return t.seed(n),e.exports}function s(t){return r=t,e.exports}function a(e){return void 0!==e&&t.characters(e),t.shuffled()}function c(){return n(r)}e.exports=c,e.exports.generate=c,e.exports.seed=o,e.exports.worker=s,e.exports.characters=a,e.exports.isValid=i})($),function(e){e.exports=K}(J);var Pe=O(V);function Me(e,t,n,i,r){null==e&&(e="global"),i=i||["success"],r=r||["error"];var o,s=!1,a=!1,c=!1,u=D();t.disconnected(f),t.loggedIn(g),t.on("success",(function(e){return w(e)})),t.on("error",(function(e){return y(e)})),t.on("result",(function(e){return w(e)})),i&&i.forEach((function(e){t.on(e,(function(e){return w(e)}))})),r&&r.forEach((function(e){t.on(e,(function(e){return y(e)}))}));var d={};function l(t){return o=t,new Promise((function(i,r){var o;s?i({}):("global"===e?o=c?Promise.resolve({}):Promise.reject("not connected to gateway"):(n.debug("joining domain ".concat(e)),o=_({type:"join",destination:e,domain:"global",options:t})),o.then((function(){p(),i({})})).catch((function(t){n.debug("error joining "+e+" domain: "+JSON.stringify(t)),r(t)})))}))}function h(){return"global"===e?Promise.resolve():(n.debug("stopping session "+e+"..."),a=!1,_({type:"leave",destination:e,domain:"global"}).then((function(){s=!1,u.execute("onLeft")})).catch((function(){s=!1,u.execute("onLeft")})))}function p(){n.debug("did join "+e),s=!0;var t=a;a=!1,u.execute("onJoined",t)}function f(){c=!1,n.debug("connection is down"),s=!1,a=!0,u.execute("onLeft",{disconnected:!0})}function g(){c=!0,a&&(n.debug("connection is now up - trying to reconnect..."),l(o))}function m(e){return s&&e(!1),u.add("onJoined",e)}function v(e){return s||e(),u.add("onLeft",e)}function y(t){if(e===t.domain){var n=t.request_id;if(n){var i=d[n];i&&i.error(t)}}}function w(t){if(t.domain===e){var n=t.request_id;if(n){var i=d[n];i&&i.success(t)}}}function b(){return Pe()}function _(i,r,o){o=o||{},i.request_id=i.request_id||b(),i.domain=i.domain||e,o.skipPeerId||(i.peer_id=t.peerId);var s=i.request_id;return new Promise((function(e,a){d[s]={success:function(t){delete d[s],t._tag=r,e(t)},error:function(e){n.warn("GW error - ".concat(JSON.stringify(e)," for request ").concat(JSON.stringify(i))),delete d[s],e._tag=r,a(e)}},t.send(i,o).catch((function(e){d[s].error({err:e})}))}))}function C(n){return n.request_id=n.request_id?n.request_id:b(),n.domain=n.domain||e,n.peer_id=t.peerId,t.send(n)}return{join:l,leave:h,onJoined:m,onLeft:v,send:_,sendFireAndForget:C,on:function(i,r){t.on(i,(function(t){if(t.domain===e)try{r(t)}catch(i){n.error("Callback failed: ".concat(i," \n ").concat(i.stack," \n msg was: ").concat(JSON.stringify(t)),i)}}))},loggedIn:function(e){return t.loggedIn(e)},connected:function(e){return t.connected(e)},disconnected:function(e){return t.disconnected(e)},get peerId(){return t.peerId},get domain(){return e}}}var Re=function(){function e(e,t,n){var i=this;this.connection=e,this.settings=t,this.logger=n,this.protocolVersion=3,this.datePrefix="#T42_DATE#",this.datePrefixLen=this.datePrefix.length,this.dateMinLen=this.datePrefixLen+1,this.datePrefixFirstChar=this.datePrefix[0],this.registry=D(),this._isLoggedIn=!1,this.shouldTryLogin=!0,this.initialLogin=!0,this.initialLoginAttempts=3,this.sessions=[],e.disconnected((function(){i.handleDisconnected()})),this.ping()}return Object.defineProperty(e.prototype,"isLoggedIn",{get:function(){return this._isLoggedIn},enumerable:!1,configurable:!0}),e.prototype.processStringMessage=function(e){var t=this,n=JSON.parse(e,(function(e,n){if("string"!==typeof n)return n;if(n.length1)return"continue";var r=e.on(n,(function(e){return t.processMessage(n,e)}));s.subs[n]=r},s=this,a=0,c=this.specs[r].types;a> ".concat(JSON.stringify(n))),this.transport.sendObject(n,t)}var i=this.protocol.createStringMessage(e);return this.isTrace&&this.logger.trace(">> ".concat(i)),this.transport.send(i,t)},e.prototype.on=function(e,t){e=e.toLowerCase(),void 0===this.messageHandlers[e]&&(this.messageHandlers[e]={});var n=this.ids++;return this.messageHandlers[e][n]=t,{type:e,id:n}},e.prototype.off=function(e){delete this.messageHandlers[e.type.toLowerCase()][e.id]},Object.defineProperty(e.prototype,"isConnected",{get:function(){return this.protocol.isLoggedIn},enumerable:!1,configurable:!0}),e.prototype.connected=function(e){var t=this;return this.protocol.loggedIn((function(){var n=t.transport.name();e(n)}))},e.prototype.disconnected=function(e){return this.registry.add("disconnected",e)},e.prototype.login=function(e,t){return r(this,void 0,void 0,(function(){var n,i,r;return o(this,(function(o){switch(o.label){case 0:this._defaultAuth||(this._defaultAuth=e),this._swapTransport&&(this.logger.trace("Detected a transport swap, swapping transports"),n=this.transportSwap(),e=null!==n&&void 0!==n?n:e),this.logger.trace("Starting login for transport: ".concat(this.transport.name()," and auth ").concat(JSON.stringify(e))),o.label=1;case 1:return o.trys.push([1,4,,5]),[4,this.transport.open()];case 2:return o.sent(),this.logger.trace("Transport: ".concat(this.transport.name()," opened, logging in")),G("connection").mark("transport-opened"),[4,this.protocol.login(e,t)];case 3:return i=o.sent(),this.logger.trace("Logged in with identity: ".concat(JSON.stringify(i))),G("connection").mark("protocol-logged-in"),[2,i];case 4:throw r=o.sent(),this._switchInProgress&&(this.logger.trace("An error while logging in after a transport swap, preparing a default swap."),this.prepareDefaultSwap()),new Error(r);case 5:return[2]}}))}))},e.prototype.logout=function(){return r(this,void 0,void 0,(function(){return o(this,(function(e){switch(e.label){case 0:return[4,this.protocol.logout()];case 1:return e.sent(),[4,this.transport.close()];case 2:return e.sent(),[2]}}))}))},e.prototype.loggedIn=function(e){return this.protocol.loggedIn(e)},e.prototype.domain=function(e,t,n){return this.protocol.domain(e,this.logger.subLogger("domain=".concat(e)),t,n)},e.prototype.authToken=function(){return this.protocol.authToken()},e.prototype.reconnect=function(){return this.transport.reconnect()},e.prototype.distributeMessage=function(e,t){var n=this,i=this.messageHandlers[t.toLowerCase()];void 0!==i&&Object.keys(i).forEach((function(t){var r=i[t];if(void 0!==r)try{r(e)}catch(o){try{n.logger.error("Message handler failed with ".concat(o.stack),o)}catch(s){console.log("Message handler failed",o)}}}))},e.prototype.handleConnectionChanged=function(e){this._connected!==e&&(this._connected=e,e?(this.settings.replaySpecs&&this.settings.replaySpecs.length&&(this.replayer=new Ne(this.settings.replaySpecs),this.replayer.init(this)),this.registry.execute("connected")):this.registry.execute("disconnected"))},e.prototype.handleTransportMessage=function(e){var t;t="string"===typeof e?this.protocol.processStringMessage(e):this.protocol.processObjectMessage(e),this.isTrace&&this.logger.trace("<< ".concat(JSON.stringify(t))),this.distributeMessage(t.msg,t.msgType)},e.prototype.verifyConnection=function(){var e=this;return Oe((function(t){var n,i=De(2,(function(){n&&n(),t()}));n=e.onLibReAnnounced((function(e){return"interop"===e.name||"contexts"===e.name?i():void 0}))}),1e4,"Transport switch timed out waiting for all libraries to be re-announced")},e.prototype.getNewSecondaryTransport=function(e){var t;if(!(null===(t=e.transportConfig)||void 0===t?void 0:t.url))throw new Error("Missing secondary transport URL.");return new z(Object.assign({},this.settings,{ws:e.transportConfig.url,reconnectAttempts:1}),this.logger.subLogger("ws-secondary"))},e.prototype.getNewSecondaryAuth=function(e){var t;if(!(null===(t=e.transportConfig)||void 0===t?void 0:t.auth))throw new Error("Missing secondary transport auth information.");return e.transportConfig.auth},e.prototype.transportSwap=function(){if(this._swapTransport=!1,this._targetTransport&&this._targetAuth){this._transportSubscriptions.forEach((function(e){return e()})),this._transportSubscriptions=[],this.transport=this._targetTransport;var e=this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this)),t=this.transport.onMessage(this.handleTransportMessage.bind(this));return this._transportSubscriptions.push(e),this._transportSubscriptions.push(t),this._targetAuth}this.logger.warn("Error while switching transports - either the target transport or auth is not defined: transport defined -> ".concat(!!this._defaultTransport,", auth defined -> ").concat(!!this._targetAuth,". Staying on the current one."))},e.prototype.prepareDefaultSwap=function(){var e=this;this._transportSubscriptions.forEach((function(e){return e()})),this._transportSubscriptions=[],this.transport.close().catch((function(t){return e.logger.warn("Error closing the ".concat(e.transport.name()," transport after a failed connection attempt: ").concat(JSON.stringify(t)))})),this._targetTransport=this._defaultTransport,this._targetAuth=this._defaultAuth,this._swapTransport=!0},e}(),Le=["trace","debug","info","warn","error","off"],Ue=function(){function e(e,t,n){this.name=e,this.parent=t,this.subLoggers=[],this.logFn=console,this.customLogFn=!1,this.name=e,this.path=t?"".concat(t.path,".").concat(e):e,this.loggerFullName="[".concat(this.path,"]"),this.includeTimeAndLevel=!n,n&&(this.logFn=n,this.customLogFn=!0)}return e.prototype.subLogger=function(t){var n=this.subLoggers.filter((function(e){return e.name===t}))[0];if(void 0!==n)return n;Object.keys(this).forEach((function(e){if(e===t)throw new Error("This sub logger name is not allowed.")}));var i=new e(t,this,this.customLogFn?this.logFn:void 0);return this.subLoggers.push(i),i},e.prototype.publishLevel=function(e){var t;return e&&(this._publishLevel=e),this._publishLevel||(null===(t=this.parent)||void 0===t?void 0:t.publishLevel())},e.prototype.consoleLevel=function(e){var t;return e&&(this._consoleLevel=e),this._consoleLevel||(null===(t=this.parent)||void 0===t?void 0:t.consoleLevel())},e.prototype.log=function(e,t,n){this.publishMessage(t||"info",e,n)},e.prototype.trace=function(e){this.log(e,"trace")},e.prototype.debug=function(e){this.log(e,"debug")},e.prototype.info=function(e){this.log(e,"info")},e.prototype.warn=function(e){this.log(e,"warn")},e.prototype.error=function(e,t){this.log(e,"error")},e.prototype.canPublish=function(e,t){return Le.indexOf(e)>=Le.indexOf(t||this.consoleLevel()||"trace")},e.prototype.publishMessage=function(t,n,i){var r=this.loggerFullName;if("error"===t&&!i){var o=new Error;o.stack&&(n=n+"\n"+o.stack.split("\n").slice(3).join("\n"))}if(this.canPublish(t,this.publishLevel())){var s=e.Interop;if(s)try{s.methods({name:e.InteropMethodName}).length>0&&s.invoke(e.InteropMethodName,{msg:"".concat(n),logger:r,level:t})}catch(Uo){}}if(this.canPublish(t)){var a="";if(this.includeTimeAndLevel){var c=new Date,u="".concat(c.getHours(),":").concat(c.getMinutes(),":").concat(c.getSeconds(),":").concat(c.getMilliseconds());a="[".concat(u,"] [").concat(t,"] ")}var d="".concat(a).concat(r,": ").concat(n);switch(t){case"trace":this.logFn.debug(d);break;case"debug":this.logFn.debug?this.logFn.debug(d):this.logFn.log(d);break;case"info":this.logFn.info(d);break;case"warn":this.logFn.warn(d);break;case"error":this.logFn.error(d,i)}}},e.InteropMethodName="T42.AppLogger.Log",e}(),Be="create-context",He="created",Ge="destroyed",qe="context-created",ze="context-added",Ve="subscribe-context",Je="subscribed-context",Ke="unsubscribe-context",$e="destroy-context",Qe="context-destroyed",Ye="update-context",Xe="context-updated",Ze="joined",et={get name(){return"context"},get types(){return[Be,He,Ge,qe,ze,Ve,Je,Ke,$e,Qe,Ye,Xe,Ze]}},tt="6.1.0";function nt(e,t,n){var i,r,o,s,a;if(L.isNode()){var c={NODE_ENV:"production",PUBLIC_URL:".",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0}._GD_STARTING_CONTEXT_;if(c)try{a=JSON.parse(c)}catch(y){}}function u(){var i,r,o,s,c,u,d,h,p,f,g,m=e.gateway,v=null!==(i=null===m||void 0===m?void 0:m.protocolVersion)&&void 0!==i?i:3,y=null===m||void 0===m?void 0:m.reconnectInterval,w=null===m||void 0===m?void 0:m.reconnectAttempts,b="ws://localhost:8385",_=null===m||void 0===m?void 0:m.ws,C=null===m||void 0===m?void 0:m.sharedWorker,I=null===m||void 0===m?void 0:m.inproc,S=null!==(r=null===m||void 0===m?void 0:m.webPlatform)&&void 0!==r?r:void 0;n&&(_=n.gwURL),L.isNode()&&a&&a.gwURL&&(_=a.gwURL),_||C||I||(_=b);var k=l(),x=k;"undefined"!==typeof n?(h=n.windowId,p=n.pid,n.env&&(f=n.env.env,g=n.env.region),x=null!==(o=n.application)&&void 0!==o?o:"glue-app",d=n.appInstanceId):L.isNode()?(p=process.pid,a&&(f=a.env,g=a.region,d=a.instanceId)):"undefined"!==typeof(null===window||void 0===window?void 0:window.glue42electron)&&(h=null===window||void 0===window?void 0:window.glue42electron.instanceId,p=null===window||void 0===window?void 0:window.glue42electron.pid,f=null===window||void 0===window?void 0:window.glue42electron.env,g=null===window||void 0===window?void 0:window.glue42electron.region,x=null!==(s=null===window||void 0===window?void 0:window.glue42electron.application)&&void 0!==s?s:"glue-app",d=null===window||void 0===window?void 0:window.glue42electron.instanceId);var T=null!==(u=null===(c=e.gateway)||void 0===c?void 0:c.replaySpecs)&&void 0!==u?u:[];T.push(et);var A={application:x,applicationName:k,windowId:h,instance:d,process:p,region:g,environment:f,api:t.version||tt};return e.identity&&(A=Object.assign(A,e.identity)),{identity:A,reconnectInterval:y,ws:_,sharedWorker:C,webPlatform:S,inproc:I,protocolVersion:v,reconnectAttempts:w,replaySpecs:T}}function d(){return"undefined"===typeof e.contexts||"boolean"===typeof e.contexts&&e.contexts?{reAnnounceKnownContexts:!0}:"object"===typeof e.contexts&&Object.assign({},{reAnnounceKnownContexts:!0},e.contexts)}function l(){if(e.application)return e.application;if(n)return n.applicationName;if("undefined"!==typeof window&&"undefined"!==typeof window.glue42electron)return window.glue42electron.application;var t=Pe();return L.isNode()?a?a.applicationConfig.name:"NodeJS"+t:"undefined"!==typeof window&&"undefined"!==typeof document?document.title+" (".concat(t,")"):t}function h(){var t,n,i;return"string"===typeof e.auth?{token:e.auth}:e.auth?e.auth:L.isNode()&&a&&a.gwToken?{gatewayToken:a.gwToken}:(null===(t=e.gateway)||void 0===t?void 0:t.webPlatform)||(null===(n=e.gateway)||void 0===n?void 0:n.inproc)||(null===(i=e.gateway)||void 0===i?void 0:i.sharedWorker)?{username:"glue42",password:"glue42"}:void 0}function p(){var t,i,r,o=e.logger,s="warn";return o||(o=s),n&&(r=n.consoleLogLevel),"string"===typeof o?{console:null!==r&&void 0!==r?r:o,publish:s}:{console:null!==(t=null!==r&&void 0!==r?r:o.console)&&void 0!==t?t:s,publish:null!==(i=o.publish)&&void 0!==i?i:s}}var f=u(),g=l();if("undefined"!==typeof window){var m=window,v=m.htmlContainer?"".concat(m.htmlContainer.containerName,".").concat(m.htmlContainer.application):null===(i=null===m||void 0===m?void 0:m.glue42gd)||void 0===i?void 0:i.application;v&&(g=v)}return{bus:null!==(r=e.bus)&&void 0!==r&&r,application:g,auth:h(),logger:p(),connection:f,metrics:null===(o=e.metrics)||void 0===o||o,contexts:d(),version:t.version||tt,libs:null!==(s=t.libs)&&void 0!==s?s:[],customLogger:e.customLogger}}var it=function(){function e(e,t,n,i){this.updateCallbacks={},this.contextId=e,this.name=t,this.isAnnounced=n,this.activityId=i,this.context={}}return e.prototype.hasCallbacks=function(){return Object.keys(this.updateCallbacks).length>0},e.prototype.getState=function(){return this.isAnnounced&&this.hasCallbacks()?3:this.isAnnounced?2:this.hasCallbacks()?1:0},e}(),rt={};!function(e,t){var n=200,i="__lodash_hash_undefined__",r=9007199254740991,o="[object Arguments]",s="[object Array]",a="[object Boolean]",c="[object Date]",u="[object Error]",d="[object Function]",l="[object GeneratorFunction]",h="[object Map]",p="[object Number]",f="[object Object]",g="[object Promise]",m="[object RegExp]",v="[object Set]",y="[object String]",w="[object Symbol]",b="[object WeakMap]",_="[object ArrayBuffer]",C="[object DataView]",I="[object Float32Array]",S="[object Float64Array]",k="[object Int8Array]",x="[object Int16Array]",T="[object Int32Array]",A="[object Uint8Array]",E="[object Uint8ClampedArray]",P="[object Uint16Array]",M="[object Uint32Array]",R=/[\\^$.*+?()[\]{}|]/g,O=/\w*$/,j=/^\[object .+?Constructor\]$/,D=/^(?:0|[1-9]\d*)$/,F={};F[o]=F[s]=F[_]=F[C]=F[a]=F[c]=F[I]=F[S]=F[k]=F[x]=F[T]=F[h]=F[p]=F[f]=F[m]=F[v]=F[y]=F[w]=F[A]=F[E]=F[P]=F[M]=!0,F[u]=F[d]=F[b]=!1;var W="object"==typeof N&&N&&N.Object===Object&&N,L="object"==typeof self&&self&&self.Object===Object&&self,U=W||L||Function("return this")(),B=t&&!t.nodeType&&t,H=B&&e&&!e.nodeType&&e,G=H&&H.exports===B;function q(e,t){return e.set(t[0],t[1]),e}function z(e,t){return e.add(t),e}function V(e,t){for(var n=-1,i=e?e.length:0;++n-1}function qe(e,t){var n=this.__data__,i=ot(n,e);return i<0?n.push([e,t]):n[i][1]=t,this}function ze(e){var t=-1,n=e?e.length:0;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=r}function Vt(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Jt(e){return!!e&&"object"==typeof e}function Kt(e){return Bt(e)?it(e):ht(e)}function $t(){return[]}function Qt(){return!1}e.exports=Ft}({get exports(){return rt},set exports(e){rt=e}},rt);var ot=rt;function st(e,t,n){try{if((null===n||void 0===n?void 0:n.canPublish("trace"))&&(null===n||void 0===n||n.trace("applying context delta ".concat(JSON.stringify(t)," on context ").concat(JSON.stringify(e)))),!t)return e;if(t.reset)return e=i({},t.reset);if(e=at(e,void 0),t.commands){for(var r=0,o=t.commands;r=2},enumerable:!1,configurable:!0}),e.prototype.dispose=function(){for(var e=0,t=this._gw3Subscriptions;e0)s(h,h[0].methods[0],a,c);else{var p=function(){if(u&&t.waitTimeoutMs)if(l+=d,(h=o.getServerMethodsByFilterAndTarget(r,u)).length>0){var n=h[0].methods[0];s(h,n,a,c)}else l>=t.waitTimeoutMs?s(h,"string"===typeof e?{name:e}:e,a,c):setTimeout(p,d)};setTimeout(p,d)}}else i(new Error('"'.concat(u,'" is not a valid target. Valid targets are "all", "best", or an instance.')))}else i("Method definition is required. Please, provide either a unique string for a method name or a \u201cmethodDefinition\u201d object with a required \u201cname\u201d property.");else i("Method definition is required. Please, provide either a unique string for a method name or a \u201cmethodDefinition\u201d object with a required \u201cname\u201d property.")})),n,i)},e.prototype.servers=function(e){var t=void 0===e?void 0:i({},e);return this.getServers(t).map((function(e){return e.server.instance}))},e.prototype.methods=function(e){return e="string"===typeof e?{name:e}:i({},e),this.getMethods(e)},e.prototype.methodsForInstance=function(e){return this.getMethodsForInstance(e)},e.prototype.methodAdded=function(e){return this.repo.onMethodAdded(e)},e.prototype.methodRemoved=function(e){return this.repo.onMethodRemoved(e)},e.prototype.serverAdded=function(e){return this.repo.onServerAdded(e)},e.prototype.serverRemoved=function(e){return this.repo.onServerRemoved((function(t,n){e(t,n)}))},e.prototype.serverMethodAdded=function(e){return this.repo.onServerMethodAdded((function(t,n){e({server:t,method:n})}))},e.prototype.serverMethodRemoved=function(e){return this.repo.onServerMethodRemoved((function(t,n){e({server:t,method:n})}))},e.prototype.invoke=function(e,t,n,s,a,c){return r(this,void 0,void 0,(function(){var u,d=this;return o(this,(function(l){return u=function(){return r(d,void 0,void 0,(function(){var r,a,c,u,d,l,h,p,f,g,m,v,y=this;return o(this,(function(o){switch(o.label){case 0:if(!(r="string"===typeof e?{name:e}:i({},e)).name)return[2,Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a \u201cmethodDefinition\u201d object with a required \u201cname\u201d property.")];if(t||(t={}),n||(n="best"),"string"===typeof n&&"all"!==n&&"best"!==n&&"skipMine"!==n)return[2,Promise.reject(new Error('"'.concat(n,'" is not a valid target. Valid targets are "all" and "best".')))];if(s||(s={}),void 0===s.methodResponseTimeoutMs&&(s.methodResponseTimeoutMs=s.method_response_timeout,void 0===s.methodResponseTimeoutMs&&(s.methodResponseTimeoutMs=this.configuration.methodResponseTimeout)),void 0===s.waitTimeoutMs&&(s.waitTimeoutMs=s.wait_for_method_timeout,void 0===s.waitTimeoutMs&&(s.waitTimeoutMs=this.configuration.waitTimeoutMs)),void 0!==s.waitTimeoutMs&&"number"!==typeof s.waitTimeoutMs)return[2,Promise.reject(new Error('"'.concat(s.waitTimeoutMs,'" is not a valid number for "waitTimeoutMs" ')))];if("object"!==typeof t)return[2,Promise.reject(new Error("The method arguments must be an object. method: ".concat(r.name)))];if(0!==(a=this.getServerMethodsByFilterAndTarget(r,n)).length)return[3,4];o.label=1;case 1:return o.trys.push([1,3,,4]),[4,this.tryToAwaitForMethods(r,n,s)];case 2:return a=o.sent(),[3,4];case 3:return o.sent(),c=i(i({},r),{getServers:function(){return[]},supportsStreaming:!1,objectTypes:null!==(g=r.objectTypes)&&void 0!==g?g:[],flags:null!==(v=null===(m=r.flags)||void 0===m?void 0:m.metadata)&&void 0!==v?v:{}}),u={method:c,called_with:t,message:"Can not find a method matching ".concat(JSON.stringify(e)," with server filter ").concat(JSON.stringify(n)),executed_by:void 0,returned:void 0,status:void 0},[2,Promise.reject(u)];case 4:return d=s.methodResponseTimeoutMs,l=s,h=a.map((function(e){var n=Pe(),i=e.methods[0],r=e.server,o=y.protocol.client.invoke(n,i,t,r,l);return Promise.race([o,vt(d,o,{invocationId:n,message:"Invocation timeout (".concat(d," ms) reached for method name: ").concat(null===i||void 0===i?void 0:i.name,", target instance: ").concat(JSON.stringify(r.instance),", options: ").concat(JSON.stringify(l)),status:pt.Error})])})),[4,Promise.all(h)];case 5:return p=o.sent(),f=this.getInvocationResultObj(p,r,t),p.every((function(e){return e.status===pt.Error}))?[2,Promise.reject(f)]:[2,f]}}))}))},[2,mt(u(),a,c)]}))}))},e.prototype.getInvocationResultObj=function(e,t,n){var i=e.filter((function(e){return e.status===pt.Success})).reduce((function(e,i){return e=s(s([],e,!0),[{executed_by:i.instance,returned:i.result,called_with:n,method:t,message:i.message,status:i.status}],!1)}),[]),r=e.filter((function(e){return e.status===pt.Error})).reduce((function(e,i){return e=s(s([],e,!0),[{executed_by:i.instance,called_with:n,name:t.name,message:i.message}],!1)}),[]),o=e[0];return{method:t,called_with:n,returned:o.result,executed_by:o.instance,all_return_values:i,all_errors:r,message:o.message,status:o.status}},e.prototype.tryToAwaitForMethods=function(e,t,n){var i=this;return new Promise((function(r,o){if(0!==n.waitTimeoutMs)var s=500,a=0,c=setInterval((function(){a+=s;var u=i.getServerMethodsByFilterAndTarget(e,t);if(u.length>0)clearInterval(c),r(u);else if(a>=(n.waitTimeoutMs||1e4))return clearInterval(c),void o()}),s);else o()}))},e.prototype.filterByTarget=function(e,t){var n=this;if("string"!==typeof e)return(Array.isArray(e)?e:[e]).reduce((function(e,i){var r=t.filter((function(e){return n.instanceMatch(i,e.server.instance)}));return e.concat(r)}),[]);if("all"===e)return s([],t,!0);if("best"===e){var i=t.find((function(e){return e.server.instance.isLocal}));if(i)return[i];if(void 0!==t[0])return[t[0]]}else if("skipMine"===e)return t.filter((function(e){return e.server.instance.peerId!==n.instance.peerId}));return[]},e.prototype.instanceMatch=function(e,t){return this.containsProps(e,t)},e.prototype.methodMatch=function(e,t){return this.containsProps(e,t)},e.prototype.containsProps=function(e,t){return Object.keys(e).filter((function(t){return void 0!==e[t]&&null!==e[t]&&"function"!==typeof e[t]&&"object_types"!==t&&"display_name"!==t&&"id"!==t&&"gatewayId"!==t&&"identifier"!==t&&"_"!==t[0]})).every((function(n){var i,r=e[n],o=t[n];switch(n){case"objectTypes":i=(r||[]).every((function(e){return(o||[]).includes(e)}));break;case"flags":i=lt(o||{},r||{});break;default:i=String(r).toLowerCase()===String(o).toLowerCase()}return i}))},e.prototype.getMethods=function(e){var t=this;return void 0===e?this.repo.getMethods():this.repo.getMethods().filter((function(n){return t.methodMatch(e,n)}))},e.prototype.getMethodsForInstance=function(e){var t=this,n=this.repo.getServers().filter((function(n){return t.instanceMatch(e,n.instance)}));if(0===n.length)return[];var i={};return 1===n.length?i=n[0].methods:n.forEach((function(e){Object.keys(e.methods).forEach((function(t){var n=e.methods[t];i[n.identifier]=n}))})),Object.keys(i).map((function(e){return i[e]}))},e.prototype.getServers=function(e){var t=this,n=this.repo.getServers();return void 0===e?n.map((function(e){return{server:e,methods:[]}})):n.reduce((function(n,i){var r=Object.values(i.methods).filter((function(n){return t.methodMatch(e,n)}));return r.length>0&&n.push({server:i,methods:r}),n}),[])},e.prototype.getServerMethodsByFilterAndTarget=function(e,t){var n=this.getServers(e);return this.filterByTarget(t,n)},e}(),wt=function(){function e(e,t,n){this.protocol=e,this.repoMethod=t,this.subscription=n}return Object.defineProperty(e.prototype,"stream",{get:function(){if(!this.repoMethod.stream)throw new Error("no stream");return this.repoMethod.stream},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"arguments",{get:function(){return this.subscription.arguments||{}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"branchKey",{get:function(){return this.subscription.branchKey},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"instance",{get:function(){if(!this.subscription.instance)throw new Error("no instance");return this.subscription.instance},enumerable:!1,configurable:!0}),e.prototype.close=function(){this.protocol.server.closeSingleSubscription(this.repoMethod,this.subscription)},e.prototype.push=function(e){this.protocol.server.pushDataToSingle(this.repoMethod,this.subscription,e)},e}(),bt=function(){function e(e,t,n){this.protocol=e,this.repoMethod=t,this.requestContext=n,this.arguments=n.arguments,this.instance=n.instance}return e.prototype.accept=function(){this.protocol.server.acceptRequestOnBranch(this.requestContext,this.repoMethod,"")},e.prototype.acceptOnBranch=function(e){this.protocol.server.acceptRequestOnBranch(this.requestContext,this.repoMethod,e)},e.prototype.reject=function(e){this.protocol.server.rejectRequest(this.requestContext,this.repoMethod,e)},e}(),_t=function(){function e(e,t){var n=this;this.protocol=e,this.server=t,e.server.onSubRequest((function(e,t){return n.handleSubRequest(e,t)})),e.server.onSubAdded((function(e,t){return n.handleSubAdded(e,t)})),e.server.onSubRemoved((function(e,t){return n.handleSubRemoved(e,t)}))}return e.prototype.handleSubRequest=function(e,t){if(t&&t.streamCallbacks&&"function"===typeof t.streamCallbacks.subscriptionRequestHandler){var n=new bt(this.protocol,t,e);t.streamCallbacks.subscriptionRequestHandler(n)}},e.prototype.handleSubAdded=function(e,t){if(t&&t.streamCallbacks&&"function"===typeof t.streamCallbacks.subscriptionAddedHandler){var n=new wt(this.protocol,t,e);t.streamCallbacks.subscriptionAddedHandler(n)}},e.prototype.handleSubRemoved=function(e,t){if(t&&t.streamCallbacks&&"function"===typeof t.streamCallbacks.subscriptionRemovedHandler){var n=new wt(this.protocol,t,e);t.streamCallbacks.subscriptionRemovedHandler(n)}},e}(),Ct=function(){function e(e,t,n){this.key=e,this.protocol=t,this.repoMethod=n}return e.prototype.subscriptions=function(){var e=this;return this.protocol.server.getSubscriptionList(this.repoMethod,this.key).map((function(t){return new wt(e.protocol,e.repoMethod,t)}))},e.prototype.close=function(){this.protocol.server.closeAllSubscriptions(this.repoMethod,this.key)},e.prototype.push=function(e){this.protocol.server.pushData(this.repoMethod,e,[this.key])},e}(),It=function(){function e(e,t,n){this._protocol=e,this._repoMethod=t,this._server=n,this.name=this._repoMethod.definition.name}return e.prototype.branches=function(e){var t=this,n=this._protocol.server.getBranchList(this._repoMethod);return e?n.indexOf(e)>-1?new Ct(e,this._protocol,this._repoMethod):void 0:n.map((function(e){return new Ct(e,t._protocol,t._repoMethod)}))},e.prototype.branch=function(e){return this.branches(e)},e.prototype.subscriptions=function(){var e=this;return this._protocol.server.getSubscriptionList(this._repoMethod).map((function(t){return new wt(e._protocol,e._repoMethod,t)}))},Object.defineProperty(e.prototype,"definition",{get:function(){var e,t=this._repoMethod.definition;return{accepts:t.accepts,description:t.description,displayName:t.displayName,name:t.name,objectTypes:t.objectTypes,returns:t.returns,supportsStreaming:t.supportsStreaming,flags:null===(e=t.flags)||void 0===e?void 0:e.metadata}},enumerable:!1,configurable:!0}),e.prototype.close=function(){this._protocol.server.closeAllSubscriptions(this._repoMethod),this._server.unregister(this._repoMethod.definition,!0)},e.prototype.push=function(e,t){if("string"!==typeof t&&!Array.isArray(t)&&void 0!==t)throw new Error("invalid branches should be string or string array");if("object"!==typeof e)throw new Error("Invalid arguments. Data must be an object.");this._protocol.server.pushData(this._repoMethod,e,t)},e.prototype.updateRepoMethod=function(e){this._repoMethod=e},e}(),St=function(){function e(e,t){this.protocol=e,this.serverRepository=t,this.invocations=0,this.currentlyUnregistering={},this.streaming=new _t(e,this),this.protocol.server.onInvoked(this.onMethodInvoked.bind(this))}return e.prototype.createStream=function(e,t,n,r,o){var s=this;return mt(new Promise((function(n,r){if(e){var a;if(!(a="string"===typeof e?{name:""+e}:i({},e)).name)return r("The \u201cname\u201d property is required for the \u201cstreamDefinition\u201d object and must be unique. Stream definition: ".concat(JSON.stringify(a)));if(s.serverRepository.getList().some((function(e){return e.definition.name===a.name})))return r('A stream with the name "'.concat(a.name,'" already exists! Please, provide a unique name for the stream.'));a.supportsStreaming=!0,t||(t={}),"function"!==typeof t.subscriptionRequestHandler&&(t.subscriptionRequestHandler=function(e){e.accept()});var c=s.serverRepository.add({definition:a,streamCallbacks:t,protocolState:{}});s.protocol.server.createStream(c).then((function(){var e;o?(e=o,o.updateRepoMethod(c)):e=new It(s.protocol,c,s),c.stream=e,n(e)})).catch((function(e){c.repoId&&s.serverRepository.remove(c.repoId),r(e)}))}else r("The stream name must be unique! Please, provide either a unique string for a stream name to \u201cglue.interop.createStream()\u201d or a \u201cmethodDefinition\u201d object with a unique \u201cname\u201d property for the stream.")})),n,r)},e.prototype.register=function(e,t){var n=this;if(!e)return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a \u201cmethodDefinition\u201d object with a required \u201cname\u201d property.");if("function"!==typeof t)return Promise.reject("The second parameter must be a callback function. Method: ".concat("string"===typeof e?e:e.name));var i=function(e,i){return r(n,void 0,void 0,(function(){var n,r,s;return o(this,(function(o){switch(o.label){case 0:return o.trys.push([0,4,,5]),(n=t(e.args,e.instance))&&"function"===typeof n.then?[4,n]:[3,2];case 1:return r=o.sent(),i(void 0,r),[3,3];case 2:i(void 0,n),o.label=3;case 3:return[3,5];case 4:return s=o.sent(),i(null!==s&&void 0!==s?s:"",null!==s&&void 0!==s?s:""),[3,5];case 5:return[2]}}))}))};return i.userCallback=t,this.registerCore(e,i)},e.prototype.registerAsync=function(e,t){if(!e)return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a \u201cmethodDefinition\u201d object with a required \u201cname\u201d property.");if("function"!==typeof t)return Promise.reject("The second parameter must be a callback function. Method: ".concat("string"===typeof e?e:e.name));var n=function(e,n){try{var i=!1,r=function(e){i||n(void 0,e),i=!0},o=function(e){i||(e||(e=""),n(e,e)),i=!0},s=t(e.args,e.instance,r,o);s&&"function"===typeof s.then&&s.then(r).catch(o)}catch(a){n(a,void 0)}};return n.userCallbackAsync=t,this.registerCore(e,n)},e.prototype.unregister=function(e,t){return void 0===t&&(t=!1),r(this,void 0,void 0,(function(){var n,i;return o(this,(function(r){switch(r.label){case 0:return void 0===e?[2,Promise.reject("Please, provide either a unique string for a name or an object containing a \u201cname\u201d property.")]:"function"!==typeof e?[3,2]:[4,this.unregisterWithPredicate(e,t)];case 1:case 3:return r.sent(),[2];case 2:return void 0===(n="string"===typeof e?{name:e}:e).name?[2,Promise.reject("Method name is required. Cannot find a method if the method name is undefined!")]:(i=this.serverRepository.getList().find((function(e){return e.definition.name===n.name&&(e.definition.supportsStreaming||!1)===t})))?[4,this.removeMethodsOrStreams([i])]:[2,Promise.reject('Method with a name "'.concat(n.name,'" does not exist or is not registered by your application!'))]}}))}))},e.prototype.unregisterWithPredicate=function(e,t){return r(this,void 0,void 0,(function(){var n;return o(this,(function(i){switch(i.label){case 0:return(n=this.serverRepository.getList().filter((function(t){return e(t.definition)})).filter((function(e){return(e.definition.supportsStreaming||!1)===t})))&&0!==n.length?[4,this.removeMethodsOrStreams(n)]:[2,Promise.reject("Could not find a ".concat(t?"stream":"method"," matching the specified condition!"))];case 1:return i.sent(),[2]}}))}))},e.prototype.removeMethodsOrStreams=function(e){var t=this,n=[];return e.forEach((function(e){var i=t.protocol.server.unregister(e).then((function(){e.repoId&&t.serverRepository.remove(e.repoId)}));n.push(i),t.addAsCurrentlyUnregistering(e.definition.name,i)})),Promise.all(n)},e.prototype.addAsCurrentlyUnregistering=function(e,t){return r(this,void 0,void 0,(function(){var n,i=this;return o(this,(function(r){return n=new Promise((function(e){return setTimeout(e,5e3)})),this.currentlyUnregistering[e]=Promise.race([t,n]).then((function(){delete i.currentlyUnregistering[e]})),[2]}))}))},e.prototype.registerCore=function(e,t){return r(this,void 0,void 0,(function(){var n,r,s,a=this;return o(this,(function(o){switch(o.label){case 0:return(n="string"===typeof e?{name:""+e}:i({},e)).name?(r=this.currentlyUnregistering[n.name])?[4,r]:[3,2]:[2,Promise.reject("Please, provide a (unique) string value for the \u201cname\u201d property in the \u201cmethodDefinition\u201d object: ".concat(JSON.stringify(e)))];case 1:o.sent(),o.label=2;case 2:return this.serverRepository.getList().some((function(e){return e.definition.name===n.name}))?[2,Promise.reject('A method with the name "'.concat(n.name,'" already exists! Please, provide a unique name for the method.'))]:n.supportsStreaming?[2,Promise.reject("When you create methods with \u201cglue.interop.register()\u201d or \u201cglue.interop.registerAsync()\u201d the property \u201csupportsStreaming\u201d cannot be \u201ctrue\u201d. If you want \u201c".concat(n.name,"\u201d to be a stream, please use the \u201cglue.interop.createStream()\u201d method."))]:(s=this.serverRepository.add({definition:n,theFunction:t,protocolState:{}}),[2,this.protocol.server.register(s).catch((function(e){throw(null===s||void 0===s?void 0:s.repoId)&&a.serverRepository.remove(s.repoId),e}))])}}))}))},e.prototype.onMethodInvoked=function(e,t,n){var i=this;e&&e.theFunction&&e.theFunction(n,(function(n,r){if(void 0!==n&&null!==n)if(n.message&&"string"===typeof n.message)n=n.message;else if("string"!==typeof n)try{n=JSON.stringify(n)}catch(o){n="un-stringifyable error in onMethodInvoked! Top level prop names: ".concat(Object.keys(n))}r?("object"!==typeof r||Array.isArray(r))&&(r={_value:r}):r={},i.protocol.server.methodInvocationResult(e,t,n,r)}))},e}(),kt=function(){function e(e,t,n){var i=this;this.wrapped={},this.wrapped.getMethods=function(){return e.methodsForInstance(this)},this.wrapped.getStreams=function(){return e.methodsForInstance(this).filter((function(e){return e.supportsStreaming}))},t&&this.refreshWrappedObject(t),n&&(n.loggedIn((function(){i.refresh(n)})),this.refresh(n))}return e.prototype.unwrap=function(){return this.wrapped},e.prototype.refresh=function(e){if(e){var t=null===e||void 0===e?void 0:e.resolvedIdentity,n=Object.assign({},null!==t&&void 0!==t?t:{},{peerId:null===e||void 0===e?void 0:e.peerId});this.refreshWrappedObject(n)}},e.prototype.refreshWrappedObject=function(e){var t,n,i,r,o=this;Object.keys(e).forEach((function(t){o.wrapped[t]=e[t]})),this.wrapped.user=e.user,this.wrapped.instance=e.instance,this.wrapped.application=null!==(t=e.application)&&void 0!==t?t:Pe(),this.wrapped.applicationName=e.applicationName,this.wrapped.pid=null!==(i=null!==(n=e.pid)&&void 0!==n?n:e.process)&&void 0!==i?i:Math.floor(1e10*Math.random()),this.wrapped.machine=e.machine,this.wrapped.environment=e.environment,this.wrapped.region=e.region,this.wrapped.windowId=e.windowId,this.wrapped.isLocal=null===(r=e.isLocal)||void 0===r||r,this.wrapped.api=e.api,this.wrapped.service=e.service,this.wrapped.peerId=e.peerId},e}(),xt=function(e){return i(i({},e),{flags:e.flags.metadata||{}})},Tt=function(){function e(e,t){this.logger=e,this.API=t,this.servers={},this.methodsCount={},this.callbacks=D();var n=this.API.instance.peerId;this.myServer={id:n,methods:{},instance:this.API.instance,wrapper:this.API.unwrappedInstance},this.servers[n]=this.myServer}return e.prototype.addServer=function(e,t){this.logger.debug("adding server ".concat(t));var n=this.servers[t];if(n)return n.id;var i=new kt(this.API,e),r={id:t,methods:{},instance:i.unwrap(),wrapper:i};return this.servers[t]=r,this.callbacks.execute("onServerAdded",r.instance),t},e.prototype.removeServerById=function(e,t){var n=this,i=this.servers[e];i?(this.logger.debug("removing server ".concat(e)),Object.keys(i.methods).forEach((function(t){n.removeServerMethod(e,t)})),delete this.servers[e],this.callbacks.execute("onServerRemoved",i.instance,t)):this.logger.warn("not aware of server ".concat(e,", my state ").concat(JSON.stringify(Object.keys(this.servers))))},e.prototype.addServerMethod=function(e,t){var n,i=this.servers[e];if(!i)throw new Error("server does not exists");if(!i.methods[t.id]){var r=this.createMethodIdentifier(t),o=this,s={identifier:r,gatewayId:t.id,name:t.name,displayName:t.display_name,description:t.description,version:t.version,objectTypes:t.object_types||[],accepts:t.input_signature,returns:t.result_signature,supportsStreaming:"undefined"!==typeof t.flags&&t.flags.streaming,flags:null!==(n=t.flags)&&void 0!==n?n:{},getServers:function(){return o.getServersByMethod(r)}};s.object_types=s.objectTypes,s.display_name=s.displayName,s.version=s.version,i.methods[t.id]=s;var a=xt(s);return this.methodsCount[r]||(this.methodsCount[r]=0,this.callbacks.execute("onMethodAdded",a)),this.methodsCount[r]=this.methodsCount[r]+1,this.callbacks.execute("onServerMethodAdded",i.instance,a),s}},e.prototype.removeServerMethod=function(e,t){var n=this.servers[e];if(!n)throw new Error("server does not exists");var i=n.methods[t];delete n.methods[t];var r=xt(i);this.methodsCount[i.identifier]=this.methodsCount[i.identifier]-1,0===this.methodsCount[i.identifier]&&this.callbacks.execute("onMethodRemoved",r),this.callbacks.execute("onServerMethodRemoved",n.instance,r)},e.prototype.getMethods=function(){return this.extractMethodsFromServers(Object.values(this.servers)).map(xt)},e.prototype.getServers=function(){return Object.values(this.servers).map(this.hideServerMethodSystemFlags)},e.prototype.onServerAdded=function(e){var t=this.callbacks.add("onServerAdded",e),n=this.getServers().map((function(e){return e.instance}));return this.returnUnsubWithDelayedReplay(t,n,e)},e.prototype.onMethodAdded=function(e){var t=this.callbacks.add("onMethodAdded",e),n=this.getMethods();return this.returnUnsubWithDelayedReplay(t,n,e)},e.prototype.onServerMethodAdded=function(e){var t=this.callbacks.add("onServerMethodAdded",e),n=!1,i=this.getServers();return setTimeout((function(){i.forEach((function(t){var i=t.methods;Object.keys(i).forEach((function(r){n||e(t.instance,i[r])}))}))}),0),function(){n=!0,t()}},e.prototype.onMethodRemoved=function(e){return this.callbacks.add("onMethodRemoved",e)},e.prototype.onServerRemoved=function(e){return this.callbacks.add("onServerRemoved",e)},e.prototype.onServerMethodRemoved=function(e){return this.callbacks.add("onServerMethodRemoved",e)},e.prototype.getServerById=function(e){return this.hideServerMethodSystemFlags(this.servers[e])},e.prototype.reset=function(){var e,t=this;Object.keys(this.servers).forEach((function(e){t.removeServerById(e,"reset")})),this.servers=((e={})[this.myServer.id]=this.myServer,e),this.methodsCount={}},e.prototype.createMethodIdentifier=function(e){var t,n,i=null!==(t=e.input_signature)&&void 0!==t?t:"",r=null!==(n=e.result_signature)&&void 0!==n?n:"";return(e.name+i+r).toLowerCase()},e.prototype.getServersByMethod=function(e){var t=[];return Object.values(this.servers).forEach((function(n){Object.values(n.methods).forEach((function(i){i.identifier===e&&t.push(n.instance)}))})),t},e.prototype.returnUnsubWithDelayedReplay=function(e,t,n){var i=!1;return setTimeout((function(){t.forEach((function(e){i||n(e)}))}),0),function(){i=!0,e()}},e.prototype.hideServerMethodSystemFlags=function(e){var t={};return Object.entries(e.methods).forEach((function(e){var n=e[0],i=e[1];t[n]=xt(i)})),i(i({},e),{methods:t})},e.prototype.extractMethodsFromServers=function(e){return Object.values(e).reduce((function(e,t){return s(s([],e,!0),Object.values(t.methods),!0)}),[])},e}(),At=function(){function e(){this.nextId=0,this.methods=[]}return e.prototype.add=function(e){return e.repoId=String(this.nextId),this.nextId+=1,this.methods.push(e),e},e.prototype.remove=function(e){if("string"!==typeof e)return new TypeError("Expecting a string");this.methods=this.methods.filter((function(t){return t.repoId!==e}))},e.prototype.getById=function(e){if("string"===typeof e)return this.methods.find((function(t){return t.repoId===e}))},e.prototype.getList=function(){return this.methods.map((function(e){return e}))},e.prototype.length=function(){return this.methods.length},e.prototype.reset=function(){this.methods=[]},e}(),Et="onSubscriptionRequest",Pt="onSubscriptionAdded",Mt="onSubscriptionRemoved",Rt=function(){function e(e,t,n){var i=this;this.session=e,this.repository=t,this.serverRepository=n,this.ERR_URI_SUBSCRIPTION_FAILED="com.tick42.agm.errors.subscription.failure",this.callbacks=D(),this.nextStreamId=0,e.on("add-interest",(function(e){i.handleAddInterest(e)})),e.on("remove-interest",(function(e){i.handleRemoveInterest(e)}))}return e.prototype.acceptRequestOnBranch=function(e,t,n){if("string"!==typeof n&&(n=""),"object"!==typeof t.protocolState.subscriptionsMap)throw new TypeError("The streaming method is missing its subscriptions.");if(!Array.isArray(t.protocolState.branchKeyToStreamIdMap))throw new TypeError("The streaming method is missing its branches.");var i=this.getStreamId(t,n),r=e.msg.subscription_id,o={id:r,arguments:e.arguments,instance:e.instance,branchKey:n,streamId:i,subscribeMsg:e.msg};t.protocolState.subscriptionsMap[r]=o,this.session.sendFireAndForget({type:"accepted",subscription_id:r,stream_id:i}),this.callbacks.execute(Pt,o,t)},e.prototype.rejectRequest=function(e,t,n){"string"!==typeof n&&(n=""),this.sendSubscriptionFailed("Subscription rejected by user. "+n,e.msg.subscription_id)},e.prototype.pushData=function(e,t,n){var i=this;if("object"===typeof e&&Array.isArray(e.protocolState.branchKeyToStreamIdMap)){if("object"!==typeof t)throw new Error("Invalid arguments. Data must be an object.");"string"===typeof n?n=[n]:(!Array.isArray(n)||n.length<=0)&&(n=[]),e.protocolState.branchKeyToStreamIdMap.filter((function(e){return!n||0===n.length||n.indexOf(e.key)>=0})).map((function(e){return e.streamId})).forEach((function(e){var n={type:"publish",stream_id:e,data:t};i.session.sendFireAndForget(n)}))}},e.prototype.pushDataToSingle=function(e,t,n){if("object"!==typeof n)throw new Error("Invalid arguments. Data must be an object.");var i={type:"post",subscription_id:t.id,data:n};this.session.sendFireAndForget(i)},e.prototype.closeSingleSubscription=function(e,t){e.protocolState.subscriptionsMap&&delete e.protocolState.subscriptionsMap[t.id];var n={type:"drop-subscription",subscription_id:t.id,reason:"Server dropping a single subscription"};this.session.sendFireAndForget(n),t.instance,this.callbacks.execute(Mt,t,e)},e.prototype.closeMultipleSubscriptions=function(e,t){var n=this;if("object"===typeof e&&"object"===typeof e.protocolState.subscriptionsMap&&e.protocolState.subscriptionsMap){var i=e.protocolState.subscriptionsMap,r=Object.keys(i).map((function(e){return i[e]}));"string"===typeof t&&(r=r.filter((function(e){return e.branchKey===t}))),r.forEach((function(e){delete i[e.id];var t={type:"drop-subscription",subscription_id:e.id,reason:"Server dropping all subscriptions on stream_id: "+e.streamId};n.session.sendFireAndForget(t)}))}},e.prototype.getSubscriptionList=function(e,t){if("object"!==typeof e)return[];if(!e.protocolState.subscriptionsMap)return[];var n=e.protocolState.subscriptionsMap,i=Object.keys(n).map((function(e){return n[e]}));return"string"!==typeof t?i:i.filter((function(e){return e.branchKey===t}))},e.prototype.getBranchList=function(e){if("object"!==typeof e)return[];if(!e.protocolState.subscriptionsMap)return[];var t=e.protocolState.subscriptionsMap,n=Object.keys(t).map((function(e){return t[e]})),i=[];return n.forEach((function(e){var t="";"object"===typeof e&&"string"===typeof e.branchKey&&(t=e.branchKey),-1===i.indexOf(t)&&i.push(t)})),i},e.prototype.onSubAdded=function(e){this.onSubscriptionLifetimeEvent(Pt,e)},e.prototype.onSubRequest=function(e){this.onSubscriptionLifetimeEvent(Et,e)},e.prototype.onSubRemoved=function(e){this.onSubscriptionLifetimeEvent(Mt,e)},e.prototype.handleRemoveInterest=function(e){var t=this.serverRepository.getById(e.method_id);if("string"===typeof e.subscription_id&&"object"===typeof t&&t.protocolState.subscriptionsMap&&"object"===typeof t.protocolState.subscriptionsMap[e.subscription_id]){var n=t.protocolState.subscriptionsMap[e.subscription_id];delete t.protocolState.subscriptionsMap[e.subscription_id],this.callbacks.execute(Mt,n,t)}},e.prototype.onSubscriptionLifetimeEvent=function(e,t){this.callbacks.add(e,t)},e.prototype.getNextStreamId=function(){return this.nextStreamId+++""},e.prototype.handleAddInterest=function(e){var t=this.repository.getServerById(e.caller_id).instance,n={msg:e,arguments:e.arguments_kv||{},instance:t},i=this.serverRepository.getById(e.method_id);if(void 0!==i)i.protocolState.subscriptionsMap&&i.protocolState.subscriptionsMap[e.subscription_id]?this.sendSubscriptionFailed("A subscription with id "+e.subscription_id+" already exists.",e.subscription_id):this.callbacks.execute(Et,n,i);else{var r="No method with id "+e.method_id+" on this server.";this.sendSubscriptionFailed(r,e.subscription_id)}},e.prototype.sendSubscriptionFailed=function(e,t){var n={type:"error",reason_uri:this.ERR_URI_SUBSCRIPTION_FAILED,reason:e,request_id:t};this.session.sendFireAndForget(n)},e.prototype.getStreamId=function(e,t){if("string"!==typeof t&&(t=""),!e.protocolState.branchKeyToStreamIdMap)throw new Error("streaming ".concat(e.definition.name," method without protocol state"));var n=e.protocolState.branchKeyToStreamIdMap.filter((function(e){return e.key===t}))[0],i=n?n.streamId:void 0;return"string"===typeof i&&""!==i||(i=this.getNextStreamId(),e.protocolState.branchKeyToStreamIdMap.push({key:t,streamId:i})),i},e}(),Nt=function(){function e(e,t,n,i){var r=this;this.session=e,this.clientRepository=t,this.serverRepository=n,this.logger=i,this.callbacks=D(),this.streaming=new Rt(e,t,n),this.session.on("invoke",(function(e){return r.handleInvokeMessage(e)}))}return e.prototype.createStream=function(e){return e.protocolState.subscriptionsMap={},e.protocolState.branchKeyToStreamIdMap=[],this.register(e,!0)},e.prototype.register=function(e,t){var n,i=this,r=e.definition,o=Object.assign({},{metadata:null!==(n=r.flags)&&void 0!==n?n:{}},{streaming:t||!1}),s={type:"register",methods:[{id:e.repoId,name:r.name,display_name:r.displayName,description:r.description,version:r.version,flags:o,object_types:r.objectTypes||r.object_types,input_signature:r.accepts,result_signature:r.returns,restrictions:void 0}]};return this.session.send(s,{methodId:e.repoId}).then((function(){i.logger.debug("registered method "+e.definition.name+" with id "+e.repoId)})).catch((function(t){throw i.logger.warn("failed to register method ".concat(e.definition.name," with id ").concat(e.repoId," - ").concat(JSON.stringify(t))),t}))},e.prototype.onInvoked=function(e){this.callbacks.add("onInvoked",e)},e.prototype.methodInvocationResult=function(e,t,n,i){var r;r=n||""===n?{type:"error",request_id:t,reason_uri:"agm.errors.client_error",reason:n,context:i,peer_id:void 0}:{type:"yield",invocation_id:t,peer_id:this.session.peerId,result:i,request_id:void 0},this.session.sendFireAndForget(r)},e.prototype.unregister=function(e){return r(this,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return t={type:"unregister",methods:[e.repoId]},[4,this.session.send(t)];case 1:return n.sent(),[2]}}))}))},e.prototype.getBranchList=function(e){return this.streaming.getBranchList(e)},e.prototype.getSubscriptionList=function(e,t){return this.streaming.getSubscriptionList(e,t)},e.prototype.closeAllSubscriptions=function(e,t){this.streaming.closeMultipleSubscriptions(e,t)},e.prototype.pushData=function(e,t,n){this.streaming.pushData(e,t,n)},e.prototype.pushDataToSingle=function(e,t,n){this.streaming.pushDataToSingle(e,t,n)},e.prototype.closeSingleSubscription=function(e,t){this.streaming.closeSingleSubscription(e,t)},e.prototype.acceptRequestOnBranch=function(e,t,n){this.streaming.acceptRequestOnBranch(e,t,n)},e.prototype.rejectRequest=function(e,t,n){this.streaming.rejectRequest(e,t,n)},e.prototype.onSubRequest=function(e){this.streaming.onSubRequest(e)},e.prototype.onSubAdded=function(e){this.streaming.onSubAdded(e)},e.prototype.onSubRemoved=function(e){this.streaming.onSubRemoved(e)},e.prototype.handleInvokeMessage=function(e){var t=e.invocation_id,n=e.caller_id,i=e.method_id,r=e.arguments_kv,o=this.serverRepository.getList().filter((function(e){return e.repoId===i}))[0];if(void 0!==o){var s={args:r,instance:this.clientRepository.getServerById(n).instance};this.callbacks.execute("onInvoked",o,t,s)}},e}(),Ot=function(){function e(e,t){this.repository=e,this.subscriptionData=t}return Object.defineProperty(e.prototype,"requestArguments",{get:function(){return this.subscriptionData.params.arguments||{}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"servers",{get:function(){var e=this;return this.subscriptionData.trackedServers.filter((function(e){return e.subscriptionId})).map((function(t){return e.repository.getServerById(t.serverId).instance}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"serverInstance",{get:function(){return this.servers[0]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"stream",{get:function(){return this.subscriptionData.method},enumerable:!1,configurable:!0}),e.prototype.onData=function(e){if("function"!==typeof e)throw new TypeError("The data callback must be a function.");this.subscriptionData.handlers.onData.push(e),1===this.subscriptionData.handlers.onData.length&&this.subscriptionData.queued.data.length>0&&this.subscriptionData.queued.data.forEach((function(t){e(t)}))},e.prototype.onClosed=function(e){if("function"!==typeof e)throw new TypeError("The callback must be a function.");this.subscriptionData.handlers.onClosed.push(e)},e.prototype.onFailed=function(e){},e.prototype.onConnected=function(e){if("function"!==typeof e)throw new TypeError("The callback must be a function.");this.subscriptionData.handlers.onConnected.push(e)},e.prototype.close=function(){this.subscriptionData.close()},e.prototype.setNewSubscription=function(e){this.subscriptionData=e},e}(),jt=function(){function e(e){this.config=e,this.cache=[],this.timeoutIds=[]}return e.prototype.add=function(e){var t=this,n=Pe();this.cache.push({id:n,element:e});var i=setTimeout((function(){var e=t.cache.findIndex((function(e){return e.id===n}));e<0||t.cache.splice(e,1)}),this.config.ELEMENT_TTL_MS);this.timeoutIds.push(i)},e.prototype.flush=function(){var e=this.cache.map((function(e){return e.element}));return this.timeoutIds.forEach((function(e){return clearInterval(e)})),this.cache=[],this.timeoutIds=[],e},e}(),Dt="awaitingAccept",Ft="subscribed",Wt="Subscription failed.",Lt="Subscription rejected.",Ut="ServerInitiated",Bt="ClientInitiated",Ht=function(){function e(e,t,n){var i=this;this.session=e,this.repository=t,this.logger=n,this.subscriptionsList={},this.timedCache=new jt({ELEMENT_TTL_MS:1e4}),this.subscriptionIdToLocalKeyMap={},this.nextSubLocalKey=0,this.handleErrorSubscribing=function(e){var t=e._tag,n=t.subLocalKey,r=i.subscriptionsList[n];if("object"===typeof r&&(r.trackedServers=r.trackedServers.filter((function(e){return e.serverId!==t.serverId})),r.trackedServers.length<=0)){if(clearTimeout(r.timeoutId),r.status===Dt){var o="string"===typeof e.reason&&""!==e.reason?' Publisher said "'+e.reason+'".':" No reason given.",s="object"===typeof r.params.arguments?JSON.stringify(r.params.arguments):"{}";r.error({message:Lt+o+" Called with:"+s,called_with:r.params.arguments,method:r.method})}else r.status===Ft&&i.callOnClosedHandlers(r);delete i.subscriptionsList[n]}},this.handleSubscribed=function(e){var t=e._tag.subLocalKey,n=i.subscriptionsList[t];if("object"===typeof n){var r=e._tag.serverId,o=n.trackedServers.filter((function(e){return e.serverId===r}))[0];if("object"===typeof o){o.subscriptionId=e.subscription_id,i.subscriptionIdToLocalKeyMap[e.subscription_id]=t;var s=n.status===Dt;if(n.status=Ft,s){var a=!1,c=n.subscription;c?(c.setNewSubscription(n),n.success(c),a=!0):(c=new Ot(i.repository,n),n.subscription=c,n.success(c));for(var u=0,d=n.handlers.onConnected;u0?c.forEach((function(e){"function"===typeof e&&e(a())})):u.push(a())}}}},this.handleSubscriptionCancelled=function(e){var t=i.subscriptionIdToLocalKeyMap[e.subscription_id];if("undefined"!==typeof t){var n=i.subscriptionsList[t];if("object"===typeof n){var r=n.trackedServers.length-1;n.trackedServers=n.trackedServers.filter((function(t){return t.subscriptionId!==e.subscription_id||(n.queued.closers.push(t.serverId),!1)})),n.trackedServers.length===r&&(n.trackedServers.length<=0&&(i.timedCache.add(n),clearTimeout(n.timeoutId),i.callOnClosedHandlers(n),delete i.subscriptionsList[t]),delete i.subscriptionIdToLocalKeyMap[e.subscription_id])}}},e.on("subscribed",this.handleSubscribed),e.on("event",this.handleEventData),e.on("subscription-cancelled",this.handleSubscriptionCancelled)}return e.prototype.subscribe=function(e,t,n,i,r,o){var s=this;if(0!==n.length){var a=this.getNextSubscriptionLocalKey(),c=this.registerSubscription(a,e,t,i,r,t.methodResponseTimeout||1e4,o);"object"===typeof c?n.forEach((function(n){var i=n.server.id,r=n.methods.find((function(t){return t.name===e.name}));if(r){c.trackedServers.push({serverId:i,subscriptionId:void 0});var o={type:"subscribe",server_id:i,method_id:r.gatewayId,arguments_kv:t.arguments};s.session.send(o,{serverId:i,subLocalKey:a}).then((function(e){return s.handleSubscribed(e)})).catch((function(e){return s.handleErrorSubscribing(e)}))}else s.logger.error("can not find method ".concat(e.name," for target ").concat(n.server.id))})):r({method:e,called_with:t.arguments,message:Wt+" Unable to register the user callbacks."})}else r({method:e,called_with:t.arguments,message:Wt+" No available servers matched the target params."})},e.prototype.drainSubscriptions=function(){var e=Object.values(this.subscriptionsList);return this.subscriptionsList={},this.subscriptionIdToLocalKeyMap={},e},e.prototype.drainSubscriptionsCache=function(){return this.timedCache.flush()},e.prototype.getNextSubscriptionLocalKey=function(){var e=this.nextSubLocalKey;return this.nextSubLocalKey+=1,e},e.prototype.registerSubscription=function(e,t,n,i,r,o,s){var a=this,c={localKey:e,status:Dt,method:t,params:n,success:i,error:r,trackedServers:[],handlers:{onData:(null===s||void 0===s?void 0:s.handlers.onData)||[],onClosed:(null===s||void 0===s?void 0:s.handlers.onClosed)||[],onConnected:(null===s||void 0===s?void 0:s.handlers.onConnected)||[]},queued:{data:[],closers:[]},timeoutId:void 0,close:function(){return a.closeSubscription(e)},subscription:null===s||void 0===s?void 0:s.subscription};return s||(n.onData&&c.handlers.onData.push(n.onData),n.onClosed&&c.handlers.onClosed.push(n.onClosed),n.onConnected&&c.handlers.onConnected.push(n.onConnected)),this.subscriptionsList[e]=c,c.timeoutId=setTimeout((function(){if(void 0!==a.subscriptionsList[e]){var i=a.subscriptionsList[e];i.status===Dt?(r({method:t,called_with:n.arguments,message:Wt+" Subscription attempt timed out after "+o+" ms."}),delete a.subscriptionsList[e]):i.status===Ft&&i.trackedServers.length>0&&(i.trackedServers=i.trackedServers.filter((function(e){return"undefined"!==typeof e.subscriptionId})),delete i.timeoutId,i.trackedServers.length<=0&&(a.callOnClosedHandlers(i),delete a.subscriptionsList[e]))}}),o),c},e.prototype.callOnClosedHandlers=function(e,t){var n,i=e.queued.closers.length,r=i>0?e.queued.closers[i-1]:null;void 0!==r&&"string"===typeof r&&(n=this.repository.getServerById(r).instance),e.handlers.onClosed.forEach((function(i){"function"===typeof i&&i({message:t||Ut,requestArguments:e.params.arguments||{},server:n,stream:e.method})}))},e.prototype.closeSubscription=function(e){var t=this,n=this.subscriptionsList[e];"object"===typeof n&&(n.trackedServers.forEach((function(e){"undefined"!==typeof e.subscriptionId&&(n.queued.closers.push(e.serverId),t.session.sendFireAndForget({type:"unsubscribe",subscription_id:e.subscriptionId,reason_uri:"",reason:Bt}),delete t.subscriptionIdToLocalKeyMap[e.subscriptionId])})),n.trackedServers=[],this.callOnClosedHandlers(n,Bt),delete this.subscriptionsList[e])},e}(),Gt=function(){function e(e,t,n){var i=this;this.session=e,this.repository=t,this.logger=n,e.on("peer-added",(function(e){return i.handlePeerAdded(e)})),e.on("peer-removed",(function(e){return i.handlePeerRemoved(e)})),e.on("methods-added",(function(e){return i.handleMethodsAddedMessage(e)})),e.on("methods-removed",(function(e){return i.handleMethodsRemovedMessage(e)})),this.streaming=new Ht(e,t,n)}return e.prototype.subscribe=function(e,t,n,i,r,o){this.streaming.subscribe(e,t,n,i,r,o)},e.prototype.invoke=function(e,t,n,i){var r=this,o=i.id,s={type:"call",server_id:o,method_id:t.gatewayId,arguments_kv:n};return this.session.send(s,{invocationId:e,serverId:o}).then((function(e){return r.handleResultMessage(e)})).catch((function(e){return r.handleInvocationError(e)}))},e.prototype.drainSubscriptions=function(){return this.streaming.drainSubscriptions()},e.prototype.drainSubscriptionsCache=function(){return this.streaming.drainSubscriptionsCache()},e.prototype.handlePeerAdded=function(e){var t=e.new_peer_id,n=e.identity,i=!e.meta||e.meta.local,r=Number(n.process),o={machine:n.machine,pid:isNaN(r)?n.process:r,instance:n.instance,application:n.application,applicationName:n.applicationName,environment:n.environment,region:n.region,user:n.user,windowId:n.windowId,peerId:t,api:n.api,isLocal:i};this.repository.addServer(o,t)},e.prototype.handlePeerRemoved=function(e){var t=e.removed_id,n=e.reason;this.repository.removeServerById(t,n)},e.prototype.handleMethodsAddedMessage=function(e){var t=this,n=e.server_id;e.methods.forEach((function(e){t.repository.addServerMethod(n,e)}))},e.prototype.handleMethodsRemovedMessage=function(e){var t=this,n=e.server_id,i=e.methods,r=this.repository.getServerById(n);Object.keys(r.methods).forEach((function(e){var o=r.methods[e];i.indexOf(o.gatewayId)>-1&&t.repository.removeServerMethod(n,e)}))},e.prototype.handleResultMessage=function(e){var t=e._tag.invocationId,n=e.result,i=e._tag.serverId;return{invocationId:t,result:n,instance:this.repository.getServerById(i).instance,status:pt.Success,message:""}},e.prototype.handleInvocationError=function(e){if(this.logger.debug("handle invocation error ".concat(JSON.stringify(e))),"_tag"in e){var t=e._tag.invocationId,n=e._tag.serverId,i=this.repository.getServerById(n),r=e.reason;return{invocationId:t,result:e.context,instance:i.instance,status:pt.Error,message:r}}return{invocationId:"",message:e.message,status:pt.Error,error:e}},e}();function qt(e,t,n,i,s,a){var c,u=s.logger.subLogger("gw3-protocol"),d=new Promise((function(e){c=e})),l=t.domain("agm",["subscribed"]),h=new Nt(l,n,i,u.subLogger("server")),p=new Gt(l,n,u.subLogger("client"));function f(){return r(this,void 0,void 0,(function(){var e,t,n,r,s,c,d,l,h,f,g;return o(this,(function(o){switch(o.label){case 0:for(u.info("reconnected - will replay registered methods and subscriptions"),p.drainSubscriptionsCache().forEach((function(e){var t=e.method,n=Object.assign({},e.params);u.info("trying to soft-re-subscribe to method ".concat(t.name,", with params: ").concat(JSON.stringify(n))),a.client.subscribe(t,n,void 0,void 0,e).then((function(){return u.info("soft-subscribing to method ".concat(t.name," DONE"))})).catch((function(e){return u.warn("subscribing to method ".concat(t.name," failed: ").concat(JSON.stringify(e),"}"))}))})),e=[],t=p.drainSubscriptions(),n=function(t){var n=t.method,i=Object.assign({},t.params);u.info("trying to re-subscribe to method ".concat(n.name,", with params: ").concat(JSON.stringify(i))),e.push(a.client.subscribe(n,i,void 0,void 0,t).then((function(){return u.info("subscribing to method ".concat(n.name," DONE"))})))},r=0,s=t;r0))return[3,4];r.label=1;case 1:return r.trys.push([1,3,,4]),[4,a.invoke(t,{appName:null===e||void 0===e?void 0:e.application,pid:process.pid})];case 2:return r.sent(),[3,4];case 3:return n=r.sent(),i=n,c.error("Cannot register as an instance: ".concat(JSON.stringify(i.message))),[3,4];case 4:return[2]}}))}))}return f.then(b).then(w).then((function(){return Promise.all([_(),C(),I(),S()])})).then((function(){return a.readyPromise})).then((function(){return E()})).then((function(){return k(m.libs||[])})).then(T).then(A).catch((function(e){return Promise.reject({err:e,libs:v})}))};"undefined"!==typeof window&&(window.IOConnectCore=Kt),Kt.version=tt,Kt.default=Kt;class $t{constructor(e){this._id=e}get id(){return this._id}_update(e){if(e._id!==this._id)throw Error("Can not update from entity with different id.");this._updateCore(e)}_updateCore(e){}_beforeDelete(e){}}function Qt(e){return"number"===typeof e}function Yt(e){return"string"===typeof e}function Xt(e){return"object"===typeof e&&null!==e}function Zt(e){return Array.isArray?Array.isArray(e):"[object Array]"===toString.call(e)}function en(e){return"undefined"===typeof e}function tn(e){return null===e||"undefined"===typeof e}function nn(e){return"string"!==typeof e||!e||0===e.length||/^\s*$/.test(e)}function rn(e){return!0===e||!1===e||"[object Boolean]"===toString.call(e)}function on(e){return!!(e&&e.constructor&&e.call&&e.apply)}function sn(e,t){for(let n=0;n{}:"function"!==typeof n&&(n=()=>{}),e.then(t,n)}class un extends $t{constructor(e,t,n,i){super(e),this._name=e,this._description=i,this._ownerWindow=t,this._helperWindows=n||[]}get name(){return this._name}get description(){return this._description}get helperWindows(){return this._helperWindows.map((e=>this.covertToWindowDef(e)))}get ownerWindow(){return this.covertToWindowDef(this._ownerWindow)}initiate(e,t,n){return this._manager.initiate(this._name,e,t,n)}_updateCore(e){super._updateCore(e),an(e._description,(e=>this._description=e)),an(e._ownerWindow,(e=>this._ownerWindow=e)),an(e._helperWindows,(e=>this._helperWindows=e))}covertToWindowDef(e){var t,n;return{type:null===(t=null===e||void 0===e?void 0:e.id)||void 0===t?void 0:t.type,name:null===(n=null===e||void 0===e?void 0:e.id)||void 0===n?void 0:n.name}}}class dn extends $t{constructor(e,t){super(e),this._name=e,this._appByWindowTypeGetter=t}get name(){return this._name}get config(){return this._appByWindowTypeGetter(this._name)}get windows(){return this._manager.getWindows({type:this._name})}create(e,t){const n=Object.assign({type:this.name,name:this.name,isIndependent:!1},t);return this._manager.createWindow(e,n)}}class ln{constructor(e,t){this.entity=e,this.context=t}}class hn{constructor(e){this.type=e}}class pn extends hn{constructor(e,t){super(gn.StatusChange),this.newStatus=e,this.oldStatus=t}}class fn extends hn{constructor(e,t,n){super(gn.ActivityContextChange),this.context="string"===typeof e?JSON.parse(e):e,this.updated=t,this.removed=n}}class gn{}gn.Added="added",gn.Removed="removed",gn.Updated="updated",gn.Closed="closed",gn.StatusChange="statusChange",gn.ActivityContextChange="activityContextUpdate",gn.ActivityWindowEvent="activityWindowEvent",gn.ActivityWindowJoinedActivity="joined",gn.ActivityWindowLeftActivity="left";class mn{}mn.Created="created",mn.Started="started",mn.Destroyed="destroyed";class vn{constructor(e){this._activity=e}register(e,t){this._ensureHasAgm(),vn.AGM.register(e,t)}servers(){return this._ensureHasAgm(),tn(this._activity)?[]:this._activity.windows.map((e=>e.instance))}methods(){if(this._ensureHasAgm(),tn(this._activity))return[];const e=this._activity.windows,t=[],n=[];return e.forEach((e=>{this.methodsForWindow(e).forEach((e=>{-1===t.indexOf(e.name)&&(t.push(e.name),n.push(e))}))})),n}methodsForWindow(e){return this._ensureHasAgm(),e.instance?vn.AGM.methodsForInstance(e.instance):[]}invoke(e,t,n,i,r,o){this._ensureHasAgm();const s=this.servers();if(tn(n)&&(n="activity.all"),Yt(n))if("activity.all"===n);else{if("activity.best"!==n){if("all"===n||"best"===n)return cn(vn.AGM.invoke(e,t,n,i),r,o);throw new Error("Invalid invoke target "+n)}{const t=s.filter((t=>vn.AGM.methodsForInstance(t).filter((t=>t.name===e)).length>0));t.length>0&&t[0]}}else if(Zt(n)){if(n.length>=0){const e=n[0];if(this._isInstance(e))n.map((e=>e));else{if(!this._isActivityWindow(e))throw new Error("Unknown target object");n.map((e=>e.instance))}}}else if(this._isInstance(n));else{if(!this._isActivityWindow(n))throw new Error("Unknown target object");n.instance}throw new Error("Not implemented")}unregister(e){return this._ensureHasAgm(),vn.AGM.unregister(e)}createStream(e,t,n){this._ensureHasAgm(),vn.AGM.createStream(e,{subscriptionAddedHandler:t,subscriptionRemovedHandler:n,subscriptionRequestHandler:void 0})}subscribe(e,t,n){return this._ensureHasAgm(),vn.AGM.subscribe(e,t)}_ensureHasAgm(){if(tn(vn.AGM))throw new Error("Agm should be configured to be used in activity")}_isInstance(e){return void 0!==e.application}_isActivityWindow(e){return void 0!==e.instance}}class yn{constructor(e,t,n){this._manager=e,this._ownerActivityId=t,this._state=n}get ownerId(){return this._state.ownerId}get windowIds(){return this._state.windowIds}get frameColor(){return this._state.frameColor}get context(){return this._state.context}get tag(){return this._state.tag}detach(e){e=e||{};const t={};return Object.keys(this._state).forEach((e=>{t[e]=this._state[e]})),t.context=e.context||t.context,t.frameColor=e.frameColor||t.frameColor,this._manager.detachActivities(this._ownerActivityId,t)}}const wn=e=>{setTimeout(e,0)};function bn(e,t){if(!on(t))return e;e.then((e=>{wn((()=>{t(null,e)}))}),(e=>{wn((()=>{t(e,null)}))}))}class _n extends $t{constructor(e,t,n,i,r){super(e),this._id=e,this._actType=t,this._status=n,this._context=i,this._ownerId=r,this._agm=new vn(this)}get type(){if(this._manager)return this._manager.getActivityType(this._actType)}get context(){return this._context}get status(){return this._status}get owner(){return this._ownerId?this._manager.getWindows({id:this._ownerId})[0]:null}get windows(){return this._manager.getWindows({activityId:this._id})}get agm(){return this._agm}addWindow(e,t){return this._manager.addWindowToActivity(this,e,t)}createWindow(e,t){return this._manager.createWindow(this,e,t)}createStackedWindows(e,t,n){return this._manager.createStackedWindows(this,e,t,n)}leave(e,t){return this._manager.leaveWindowFromActivity(this,e,t)}getWindowsByType(e){const t={activityId:this._id,type:e};return this._manager.getWindows(t)}setContext(e,t){return this._manager.setActivityContext(this,e,t)}updateContext(e,t){return this._manager.updateActivityContext(this,e,t)}onStatusChange(e){return this._manager.subscribeActivityEvents(((t,n,i)=>{t.id===this.id&&e(t,n,i)}))}onWindowEvent(e){return this._manager.subscribeWindowEvents(((t,n,i)=>{t.id===this.id&&e(t,n,i)}))}onContextChanged(e){this._manager.subscribeActivityContextChanged(((t,n,i,r)=>{t.id===this.id&&e(n,i,r,t)}));try{e(this.context,this.context,[],this)}catch(t){return}}stop(){this._manager.stopActivity(this)}clone(e){return this._manager.clone(this,e)}attach(e,t){let n;return n="string"===typeof e?e:e.id,this._manager.attachActivities(n,this.id,t)}onActivityAttached(e){this._manager.subscribeActivitiesAttached(((t,n,i)=>{t===this._id&&e(i)}))}onDetached(e){this._manager.subscribeActivitiesDetached(((t,n,i)=>{n.id===this._id&&e(t,i)}))}_updateCore(e){super._updateCore(e),an(e._actType,(e=>this._actType=e)),an(e._context,(e=>this._context=e)),an(e._ownerId,(e=>this._ownerId=e)),!e._status||this._status&&this._status.state===e._status.state||(this._status=e._status)}_updateDescriptors(e){this._attached=e.map((e=>new yn(this._manager,this._id,e)))}get attached(){return this._attached}setFrameColor(e,t){return bn(new Promise(((t,n)=>{let i=this.windows.length;0===i&&t(this),this.windows.forEach((n=>{n.underlyingWindow.setFrameColor(e,(()=>{i--,i<=0&&t(this)}))})),setTimeout((()=>{i>0&&n(this.id+" - timed out waiting for setFrameColor with"+e)}),5e3)})),t)}getFrameColor(){return this.windows&&0!==this.windows.length?this.windows[0].underlyingWindow.frameColor:""}}class Cn{}Cn.Trace="trace",Cn.Debug="debug",Cn.Info="info",Cn.Warn="warn",Cn.Error="error";class In{static GetNamed(e){return new In(e)}static Get(e){return new In(In.GetTypeName(e))}constructor(e){this._name=e,tn(In.GlueLogger)||(this._glueLogger=In.GlueLogger.subLogger(e))}trace(e){tn(this._glueLogger)?In.Level===Cn.Trace&&console.info(this._getMessage(e,Cn.Trace)):this._glueLogger.trace(e)}debug(e){tn(this._glueLogger)?In.Level!==Cn.Debug&&In.Level!==Cn.Trace||console.info(this._getMessage(e,Cn.Debug)):this._glueLogger.debug(e)}info(e){tn(this._glueLogger)?In.Level!==Cn.Debug&&In.Level!==Cn.Trace&&In.Level!==Cn.Info||console.info(this._getMessage(e,Cn.Info)):this._glueLogger.info(e)}warn(e){tn(this._glueLogger)?In.Level!==Cn.Debug&&In.Level!==Cn.Trace&&In.Level!==Cn.Info&&In.Level!==Cn.Warn||console.info(this._getMessage(e,Cn.Info)):this._glueLogger.warn(e)}error(e){tn(this._glueLogger)?(console.error(this._getMessage(e,Cn.Error)),console.trace()):this._glueLogger.error(e)}_getMessage(e,t){return"["+t+"] "+this._name+" - "+e}static GetTypeName(e){const t=/function (.{1,})\(/.exec(e.constructor.toString());return t&&t.length>1?t[1]:""}}In.Level=Cn.Info;class Sn extends $t{constructor(e,t,n,i,r,o,s,a){super(e),this._logger=In.Get("window"),this._type=n,this._activityId=i,this._name=t,this._instance=r,this._isIndependent=o,this._windowGetter=s,this._hcWindowId=a}getBounds(){return this._manager.getWindowBounds(this.id)}get name(){return this._name}get isIndependent(){return this._isIndependent}get type(){if(this._manager)return this._manager.getWindowType(this._type)}get activity(){if(!en(this._activityId))return this._manager.getActivityById(this._activityId)}get isOwner(){const e=this.activity;return!en(e)&&e.owner.id===this.id}setVisible(e,t){return this._manager.setWindowVisibility(this.id,e)}activate(e){return this._manager.activateWindow(this.id,e)}setBounds(e,t){return this._manager.setWindowBounds(this.id,e,t)}close(){return this._manager.closeWindow(this.id)}get instance(){return this._instance}get underlyingWindow(){const e=this._windowGetter();return e||{id:this._hcWindowId}}onActivityJoined(e){this._subscribeForActivityWindowEvent(gn.ActivityWindowJoinedActivity,e)}onActivityRemoved(e){this._subscribeForActivityWindowEvent(gn.ActivityWindowLeftActivity,e)}_updateCore(e){an(e._activityId,(e=>this._activityId=e)),an(e._isIndependent,(e=>this._isIndependent=e)),an(e._hcWindowId,(e=>this._hcWindowId=e)),an(e._type,(e=>this._type=e)),an(e._name,(e=>this._name=e)),tn(e._instance)||(this._instance=e._instance)}_subscribeForActivityWindowEvent(e,t){this._manager.subscribeWindowEvents(((n,i,r)=>{i.id===this.id&&r===e&&t(n)}))}_beforeDelete(e){this._hcWindowId=e._hcWindowId}}class kn{constructor(e,t,n){this.state=e,this.message=t,this.time=n}getState(){return this.state}getMessage(){return this.message}getTime(){return this.time}}const xn="error",Tn="add-types",An="types-added",En="remove-types",Pn="types-removed",Mn="created",Rn="destroyed",Nn="initiated",On="join-activity",jn="joined",Dn="activity-joined",Fn="leave-activity",Wn="left",Ln="merge",Un="split",Bn="owner-changed",Hn="add-peer-factories",Gn="peer-factories-added",qn="remove-peer-factories",zn="peer-factories-removed",Vn="create",Jn="create-peer",Kn="peer-requested",$n="ready",Qn="peer-created",Yn="destroy",Xn="dispose-peer",Zn="destroy-peer";class ei{static activityTypeGwMessageEntityToActivityType(e,t){const n=e=>new dn(e,void 0);return new un(e.name,e.owner_type&&n(e.owner_type),e.helper_types&&e.helper_types.map(n),t)}static peerFactoryGwMessageEntityToWindowType(e){return new dn(e.peer_type,(e=>{}))}static activityGwMessageToActivity(e,t){const n=void 0!==e.owner?e.owner.peer_id:e.owner_id;return new _n(e.activity_id,e.activity_type,t,e.context_snapshot,n)}static activityToActivityStatusChangeEvent(e){return new ln(e,new pn(e.status,void 0))}constructor(e){if(this._activityChangeCallbacks=[],this._activityTypeStatusChangeCallbacks=[],this._activityWindowChangeCallbacks=[],this._windowTypeStatusChangeCallbacks=[],this._peerIdAndFactoryIdToPeerType={},this._peerFactoriesRegisteredByUs={},this._gw3Subscriptions=[],this._contextSubscriptions={},this._activityTypesInitiatedFromMe={},this._config=e,this._connection=e.connection,this._logger=e.logger,this._contexts=e.contexts,this._windows=e.windows,this._sessionJoinedPromise=new Promise((e=>{this._sessionJoinedPromiseResolve=e})),this._activityJoinedPromise=new Promise((e=>{this._activityJoinedPromiseResolve=e})),this._config.activityId||this._activityJoinedPromiseResolve({}),this._gw3Session=this._connection.domain("activity",["joined","initiated","peer-created","token"]),"undefined"!==typeof window){const e=window.glue42gd;e&&e.activityInfo&&("function"===typeof e.addRefreshHandler&&e.addRefreshHandler(((t,n)=>{this._gw3Session.send({type:"reload"}).then((i=>{if(i.token){try{e.setGWToken(i.token)}catch(r){return void n(r.message||r)}t()}else n("Expected gateway token for refreshing.")}),n)})),e&&"function"===typeof e.addWillNavigateHandler&&e.addWillNavigateHandler(((t,n)=>{this._gw3Session.send({type:"reload"}).then((i=>{if(i.token){try{e.setGWToken(i.token)}catch(r){return void n(r.message||r)}t()}else n("Expected gateway token for refreshing.")}),n)})))}}get bridgeType(){return"GW3"}init(){this.forwardActivityTypeMessagesToStatusEventHandlers(),this.subscribe(Mn,this.handleActivityCreatedMessage),this.subscribe(Rn,this.handleActivityDestroyedMessage),this.forwardActivityMessagesToStatusEventHandlers(),this.forwardActivityCreatedAndJoinedActivityToActivityWindowEventHandlers(),this.forwardPeerFactoryMessagesToStatusEventHandlers(),this.forwardPeerFactoryMessagesToPeerFactoryRequests(),this.subscribe(Gn,this.handlePeerFactoriesAdded),this.subscribe(zn,this.handlePeerFactoriesRemoved),this.forwardActivityWindowMessagesToEventHandlers(),this.subscribe(Xn,(()=>{if("dispose"!==this._config.disposeRequestHandling){if("exit"===this._config.disposeRequestHandling){if(this._windows&&"undefined"!==typeof this._windows.my())return void this._windows.my().close();if("undefined"!==typeof window&&"function"===typeof window.close)return void window.close();if("undefined"!==typeof process&&"function"===typeof process.exit)return void process.exit()}}else this.dispose()})),this._gw3Session.onJoined((()=>{"trackMyOnly"===this._config.mode||"trackMyTypeAndInitiatedFromMe"===this._config.mode?this._sessionJoinedPromiseResolve(this):this._gw3Session.send({type:"subscribe",activity_types:"trackAll"===this._config.mode?[]:"trackTypes"===this._config.mode?this._config.typesToTrack:[]}).then((()=>{this._sessionJoinedPromiseResolve(this)}))})),this._gw3Session.join()}dispose(){this._gw3Subscriptions.forEach((e=>e&&this._connection.off(e))),this._gw3Subscriptions.length=0}ready(){return Promise.all([this._sessionJoinedPromise,this._activityJoinedPromise])}initReady(){return this._sessionJoinedPromise}onActivityTypeStatusChange(e){this._activityTypeStatusChangeCallbacks.push(e)}registerActivityType(e,t,n,i,r){const o={};o.name=e;const s=e=>({type:e.type,name:e.name,configuration:e});return o.owner_type=s(t),o.helper_types=n.map(s),this._gw3Session.send({type:Tn,types:[o]}).then((()=>{const e=ei.activityTypeGwMessageEntityToActivityType(o,r);return this.invokeCallbacks(this._activityTypeStatusChangeCallbacks,new ln(e,new hn(gn.Added)),Tn),e}))}unregisterActivityType(e){return this._gw3Session.send({type:En,types:[e]}).then((()=>{const t=new un(e,void 0,void 0,void 0);this.invokeCallbacks(this._activityTypeStatusChangeCallbacks,new ln(t,new hn(gn.Removed)),Tn)}))}onWindowTypeStatusChange(e){this._windowTypeStatusChangeCallbacks.push(e)}registerWindowFactory(e,t,n){if(this._peerFactoriesRegisteredByUs[e])return Promise.reject(new Error("Factory for windowType ".concat(e," already registered.")));this._peerFactoriesRegisteredByUs[e]=t;const i={id:e,peer_type:e,configuration:n};return this._gw3Session.send({type:Hn,factories:[i]}).then((()=>{this.invokeCallbacks(this._windowTypeStatusChangeCallbacks,new ln(ei.peerFactoryGwMessageEntityToWindowType(i),new hn(gn.Added)),Hn)})).catch((()=>{delete this._peerFactoriesRegisteredByUs[e]}))}unregisterWindowFactory(e){return this._peerFactoriesRegisteredByUs[e]?(delete this._peerFactoriesRegisteredByUs[e],this._gw3Session.send({type:qn,factory_ids:[e]}).then((()=>{this.invokeCallbacks(this._windowTypeStatusChangeCallbacks,new ln(new dn(e,void 0),new hn(gn.Removed)),Hn)}))):Promise.reject(new Error("Factory for windowType ".concat(e," not registered.")))}onActivityStatusChange(e){this._activityChangeCallbacks.push(e)}initiateActivity(e,t,n){const i={type:Vn,activity_type:e,initial_context:t};return this.isOverrideTypeDefinition(n)?i.types_override={owner_type:{type:n.owner.type,name:n.owner.name,configuration:n.owner},helper_types:n.helpers&&n.helpers.map((e=>({type:e.type,name:e.name,configuration:e})))}:i.configuration=n&&n.map((e=>({type:e.type,name:e.name,configuration:e}))),this.sendCreateAndMapResultingMessagesToPromise(i,Nn,((e,t)=>e.request_id===t),Mn,((e,t,n)=>e.activity_id===n.activity_id),Rn,((e,t,n)=>e.activity_id===n.activity_id),(e=>e.activity_id),null).then((t=>"trackMyTypeAndInitiatedFromMe"!==this._config.mode||this._activityTypesInitiatedFromMe[e]?t:(this._activityTypesInitiatedFromMe[e]=!0,this._gw3Session.send({type:"subscribe",activity_types:[e]}).then((()=>t)))))}stopActivity(e){return this._gw3Session.send({type:Yn,activity_id:e.id,reason_uri:"com.tick42.glue.activity.constants.destroyReason.general",reason:"Destroying activity"}).then((e=>!0))}updateActivityContext(e,t,n,i){if(n)return this._contexts.set(e.id,t);i=i||[];for(const r of i)t[r]=null;return this._contexts.update(e.id,t)}announceWindow(e,t){throw new Error("Invalid operation 'announceWindow' for GW3 protocol")}registerWindow(e,t,n){let i="undefined"!==typeof this._connection.gatewayToken;const r=this._connection.peerId;if("undefined"!==typeof window){const e=window.glue42gd;e&&(i="undefined"!==typeof e.activityInfo)}return i&&this._gw3Session.send({type:$n}),this.invokeCallbacks(this._activityWindowChangeCallbacks,new ln(new Sn(r,t,e,void 0,this.getAgmInstance(r),n,this.generateWindowGetter(r),void 0),new hn(gn.Added)),"register window"),Promise.resolve(r)}onActivityWindowChange(e){this._activityWindowChangeCallbacks.push(e)}createWindow(e,t){t.layout||(t.left||t.width||t.height||t.top)&&(t.layout={mode:"pixels",cellSize:1});const n=n=>{if(e)return this.joinActivity(e,n,t.name).then((()=>n))};return this.sendCreateAndMapResultingMessagesToPromise({type:Jn,peer_type:t.type,peer_name:t.name||t.type,configuration:t,activity_id:e},void 0,void 0,Qn,((e,t)=>e.request_id===t),void 0,void 0,(e=>e.created_id),n).then(n)}closeWindow(e){return this._gw3Session.send({type:Zn,destroy_peer_id:e}).then((e=>{}))}getAnnouncementInfo(){let e=this._config.activityId||this._config.announcementInfo&&this._config.announcementInfo.activityId,t=this._config.announcementInfo&&this._config.announcementInfo.activityWindowType,n=this._config.announcementInfo&&this._config.announcementInfo.activityWindowIndependent,i=this._config.announcementInfo&&this._config.announcementInfo.activityWindowName;if("undefined"!==typeof window&&"undefined"!==typeof window.location&&window.location.search&&"function"===typeof URLSearchParams){const r=new URLSearchParams(location.search.slice(1));t=t||r.get("t42PeerType"),t=t||r.get("t42ActivityWindowType"),"undefined"===typeof n&&(n=r.get("t42ActivityWindowIndependent")),i=i||r.get("t42ActivityWindowName"),e=e||r.get("t42ActivityId")}return t=t||"unknown",n=n||!1,i=i||this._connection.peerId,{activityWindowId:void 0,activityId:e,activityWindowType:t,activityWindowIndependent:n,activityWindowName:i}}joinActivity(e,t,n){const i=n&&{name:n}||{};return this._gw3Session.send({type:On,target_id:t,activity_id:e,...i}).then((()=>{this.invokeCallbacks(this._activityWindowChangeCallbacks,new ln(new Sn(t,void 0,void 0,e,this.getAgmInstance(t),void 0,this.generateWindowGetter(t),void 0),new hn(gn.ActivityWindowJoinedActivity)),"activity joined - ActivityWindow"),this.invokeCallbacks(this._activityChangeCallbacks,new ln(new _n(e,void 0,new kn("created",void 0,void 0),void 0,void 0),new hn(gn.Updated)),"activity joined - Activity")}))}leaveActivity(e,t){return this._gw3Session.send({type:Fn,target_id:t,activity_id:e}).then((()=>{this.invokeCallbacks(this._activityWindowChangeCallbacks,new ln(new Sn(t,void 0,void 0,null,this.getAgmInstance(t),void 0,this.generateWindowGetter(t),void 0),new hn(gn.ActivityWindowLeftActivity)),"activity left - ActivityWindow"),this.invokeCallbacks(this._activityChangeCallbacks,new ln(new _n(e,void 0,new kn("created",void 0,void 0),void 0,void 0),new hn(gn.Updated)),"activity left - Activity")}))}getActivityTypes(){return Promise.resolve([])}getWindowTypes(){return Promise.resolve([])}getActivities(){return Promise.resolve([])}getActivityWindows(){return Promise.resolve([])}createStackedWindows(e,t,n){}getWindowBounds(e){}setWindowBounds(e,t){}activateWindow(e,t){}setWindowVisibility(e,t){}cloneActivity(e,t){}attachActivities(e,t,n){return this._gw3Session.send({type:Ln,into:t,merge:e})}detachActivities(e,t){return this._gw3Session.send({type:Un,from:e}).then((()=>""))}onActivitiesAttached(e){}onActivitiesDetached(e){}onActivityAttachedDescriptorsRefreshed(e){}getAttachedDescriptors(){return Promise.resolve([])}getRandomRequestId(){return this._connection.peerId+":"+Math.floor(1e9*Math.random())}forwardAddedAndRemovedMessagesToEventHandler(e,t,n,i){const r=e=>t=>new ln(t,new hn(e?gn.Added:gn.Removed));return[e&&this.forwardMessageToEventHandler(e,(e=>n(e,!0)),r(!0),i),t&&this.forwardMessageToEventHandler(t,(e=>n(e,!1)),r(!1),i)].filter((e=>e))}forwardMessageToEventHandler(e,t,n,i){return this.subscribe(e,(e=>{t(e).forEach((t=>i.forEach((i=>i(n(t,e))))))}))}sendCreateAndMapResultingMessagesToPromise(e,t,n,i,r,o,s,a,c){const u=this.getRandomRequestId();let d,l;const h=new Promise(((e,t)=>{d=e,l=t}));let p,f,g,m,v=null;const y=()=>{this.dropSubscription(p),c||this.dropSubscription(f),this.dropSubscription(g),this.dropSubscription(m)};p=t&&this.subscribe(t,(e=>{n(e,u)&&(v=e,this.dropSubscription(p))}));let w=!1;f=this.subscribe(i,(e=>{r(e,u,v)&&(w?c&&c(a(e)):(w=!0,d(a(e))))})),g=o&&this.subscribe(o,(e=>{s(e,u,v)&&l(e)})),m=o&&this.subscribe(xn,(e=>{e.request_id===u&&l(e)})),e.request_id=u;const b=this._gw3Session.send(e).then((()=>h));return b.then(y,y),b}peerFactoryIdAndOwnerIdToWindowType(e,t){const n=this._peerIdAndFactoryIdToPeerType[t+":"+e];return n?new dn(n,void 0):null}subscribe(e,t){const n=this._connection.on(e,(e=>t.bind(this)(e)));return this._gw3Subscriptions.push(n),n}dropSubscription(e){e&&(this._connection.off(e),delete this._gw3Subscriptions[this._gw3Subscriptions.indexOf(e)])}invokeCallbacks(e,t,n){e.forEach((e=>{try{e(t)}catch(i){this._logger.error("Error in ".concat(n||t.context.type," callback: ")+JSON.stringify(i))}}))}handleActivityCreatedMessage(e){e.context_id?this._contextSubscriptions[e.activity_id]||this.subscribeToContext(e):this._logger.error("Activity created with unknown context_id: "+e.activity_id)}async subscribeToContext(e){const t=e.activity_id;this._contextSubscriptions[t]=await this._contexts.subscribe(t,((e,n,i)=>{const r=new ln(new _n(t,void 0,void 0,e,void 0),new fn(e,n,i));this.invokeCallbacks(this._activityChangeCallbacks,r,"context updated")}))}handleActivityDestroyedMessage(e){const t=this._contextSubscriptions[e.activity_id];"function"===typeof t&&t(),delete this._contextSubscriptions[e.activity_id]}handlePeerFactoriesAdded(e){e.factories.forEach((t=>{this._peerIdAndFactoryIdToPeerType[e.owner_id+":"+t.id]=t.peer_type}))}handlePeerFactoriesRemoved(e){e.factory_ids.forEach((t=>{delete this._peerIdAndFactoryIdToPeerType[e.owner_id+":"+t]}))}forwardActivityTypeMessagesToStatusEventHandlers(){this.forwardAddedAndRemovedMessagesToEventHandler(An,Pn,((e,t)=>t?e.types.map((e=>ei.activityTypeGwMessageEntityToActivityType(e,void 0))):e.types.map((e=>new un(e.name,void 0,void 0,void 0)))),this._activityTypeStatusChangeCallbacks)}forwardActivityCreatedAndJoinedActivityToActivityWindowEventHandlers(){for(const e of[Mn,jn,Bn])this.forwardMessageToEventHandler(e,(e=>[e.owner||{...e,type:e.peer_type,name:e.peer_name,peer_id:e.owner_id}].concat(e.participants||[]).map((t=>new Sn(t.peer_id,t.name,t.type,e.activity_id,this.getAgmInstance(t.peer_id),void 0,this.generateWindowGetter(t.peer_id),void 0)))),((e,t)=>new ln(e,new hn(gn.ActivityWindowJoinedActivity))),this._activityWindowChangeCallbacks)}forwardActivityMessagesToStatusEventHandlers(){for(const e of[Mn,jn])this.forwardMessageToEventHandler(e,(e=>[ei.activityGwMessageToActivity(e,new kn("started","",new Date))]),((e,t)=>ei.activityToActivityStatusChangeEvent(e)),this._activityChangeCallbacks);this.forwardMessageToEventHandler(Rn,(e=>[ei.activityGwMessageToActivity(e,new kn("destroyed",e.reason,new Date))]),((e,t)=>ei.activityToActivityStatusChangeEvent(e)),this._activityChangeCallbacks),this.forwardMessageToEventHandler(Nn,(e=>[ei.activityGwMessageToActivity(e,new kn("created","",new Date))]),((e,t)=>ei.activityToActivityStatusChangeEvent(e)),this._activityChangeCallbacks),this.forwardMessageToEventHandler(Bn,(e=>[ei.activityGwMessageToActivity(e,new kn("created","",new Date))]),((e,t)=>ei.activityToActivityStatusChangeEvent(e)),this._activityChangeCallbacks)}forwardPeerFactoryMessagesToStatusEventHandlers(){this.forwardAddedAndRemovedMessagesToEventHandler(Gn,zn,((e,t)=>t?e.factories.map(ei.peerFactoryGwMessageEntityToWindowType):e.factory_ids.map((t=>this.peerFactoryIdAndOwnerIdToWindowType(t,e.owner_id))).filter((e=>null!=e))),this._windowTypeStatusChangeCallbacks)}forwardPeerFactoryMessagesToPeerFactoryRequests(){this.subscribe(Kn,(e=>{const t=this._peerFactoriesRegisteredByUs[e.peer_factory];if(t)try{const n=e.configuration||{};n.gateway_token=n.gateway_token||e.gateway_token,n.peer_factory=n.peer_factory||e.peer_factory;const i=t({activityId:e.activity&&e.activity.id,activityType:e.activity&&e.activity.type,type:e.configuration&&e.configuration.type,gwToken:n.gateway_token,configuration:n});i&&i.then&&i.catch&&i.catch((t=>this._gw3Session.send({type:xn,request_id:e.request_id,reason:t&&(t.message||JSON.stringify(t))})))}catch(n){this._gw3Session.send({type:xn,request_id:e.request_id,reason:n&&(n.message||JSON.stringify(n))})}else this._gw3Session.send({type:xn,request_id:e.request_id,reason:"Unknown peer factory ".concat(e.peer_factory)})}))}forwardActivityWindowMessagesToEventHandlers(){for(const e of[Dn,jn])this.subscribe(e,(t=>{const n=e===Dn?t.joined_id:t.peer_id,i=e===Dn?t.joined_type:t.peer_type,r=e===Dn?t.joined_name:t.peer_name,o=new Sn(n,r,i,t.activity_id,this.getAgmInstance(n),void 0,this.generateWindowGetter(n),void 0);this._contextSubscriptions[t.activity_id]?e===jn&&this._activityJoinedPromiseResolve({}):this.subscribeToContext(t).then((()=>{e===jn&&this._activityJoinedPromiseResolve({})})),this.invokeCallbacks(this._activityWindowChangeCallbacks,new ln(o,new hn(gn.ActivityWindowJoinedActivity)),e)}));this.subscribe(Wn,(e=>{const t=new Sn(e.left_id,void 0,void 0,null,this.getAgmInstance(e.left_id),void 0,this.generateWindowGetter(e.left_id),void 0);this.invokeCallbacks(this._activityWindowChangeCallbacks,new ln(t,new hn(gn.ActivityWindowLeftActivity)),Wn)})),this.forwardAddedAndRemovedMessagesToEventHandler(Qn,void 0,(e=>[new Sn(e.created_id,void 0,void 0,void 0,void 0,void 0,this.generateWindowGetter(e.created_id),void 0)]),this._activityWindowChangeCallbacks)}getAgmInstance(e){return this._config.agm.servers().find((t=>t.peerId===e||t.windowId===e))}generateWindowGetter(e){return()=>{const t=this.getAgmInstance(e);if(!t)return;const n=t.windowId;return this._config.windows.list().filter((e=>e.id===n))[0]}}isOverrideTypeDefinition(e){return"undefined"!==typeof e&&!!e.owner}}class ti{constructor(e,t){this._myAttached=[],this._myDetached=[],this._myAttachedTo=[],this._myDetachedFrom=[],this._myActivityFrameColorChanged=[],this._myActivityJoinedCallbacks=[],this._myActivityRemovedCallbacks=[],this._myContextUpdateCallbacks=[],this._logger=In.Get(this),this._m=e,e.ready().then((e=>{e.subscribeActivityContextChanged(this._subscribeMyContextChanged.bind(this)),e.subscribeWindowEvents(this._subscribeMyWindowEvent.bind(this)),e.subscribeActivitiesAttached(this._subscribeActivitiesAttached.bind(this)),e.subscribeActivitiesDetached(this._subscribeActivitiesDetached.bind(this)),t&&t.onWindowFrameColorChanged(this._subscribeWindowFrameColorChanged.bind(this))}))}get window(){if(tn(this._w)){const e=this._m.announcedWindows;e.length>0&&(this._w=e[0])}return this._w}get activity(){const e=this.window;if(!tn(e))return e.activity}createWindow(e){return this._m.createWindow(this.activity,e)}createStackedWindows(e,t){return this._m.createStackedWindows(this.activity,e,t)}get context(){const e=this.activity;return en(e)?{}:e.context}updateContext(e,t){const n=this.activity;return en(n)?new Promise(((e,t)=>{t("Not in activity")})):n.updateContext(e,t)}setContext(e,t){const n=this.activity;return en(n)?new Promise(((e,t)=>{t("Not in activity")})):n.setContext(e,t)}onActivityJoined(e){this._myActivityJoinedCallbacks.push(e);const t=this.window;tn(t)||tn(t.activity)||e(t.activity)}onActivityLeft(e){this._myActivityRemovedCallbacks.push(e)}onContextChanged(e){this._myContextUpdateCallbacks.push(e);const t=this.window;if(tn(t))return;const n=t.activity;tn(n)||e(n.context,n.context,[],n)}clone(e,t){const n=this.activity;return this._m.clone(n,e,t)}attach(e,t){let n;return n="string"===typeof e?e:e.id,this._m.attachActivities(n,this.activity.id,t)}onActivityAttached(e){this._myAttached.push(e)}onActivityDetached(e){this._myDetached.push(e)}onAttachedToActivity(e){this._myAttachedTo.push(e)}onDetachedFromActivity(e){this._myDetachedFrom.push(e)}get attached(){return this.activity?this.activity.attached:[]}setFrameColor(e,t){return this.activity?this.activity.setFrameColor(e,t):Promise.resolve(null)}getFrameColor(){return this.activity?this.activity.getFrameColor():""}onFrameColorChanged(e){this._myActivityFrameColorChanged.push(e)}_subscribeMyContextChanged(e,t,n,i){const r=this.window;if(tn(r))return;const o=r.activity;tn(o)||e.id===o.id&&this._notifyMyContextChanged(e,t,n,i)}_subscribeMyWindowEvent(e,t,n){tn(this.window)||this.window.id===t.id&&(n===gn.ActivityWindowJoinedActivity?(this._notifyMyWindowEvent(e,this._myActivityJoinedCallbacks),this._notifyMyContextChanged(e,e.context,null,null)):n===gn.ActivityWindowLeftActivity&&this._notifyMyWindowEvent(e,this._myActivityRemovedCallbacks))}_notifyMyWindowEvent(e,t){t.forEach((t=>{try{t(e,event)}catch(n){this._logger.warn("error in user callback "+n)}}))}_notifyMyContextChanged(e,t,n,i){n=n||{},i=i||[],this._myContextUpdateCallbacks.forEach((r=>{try{r(t,n,i,e)}catch(o){this._logger.warn("error in user callback "+o)}}))}_notifyAttached(e){this._myAttached.forEach((t=>{try{t(e)}catch(n){this._logger.warn("error in user callback "+n)}}))}_notifyDetached(e){this._myDetached.forEach((t=>{try{t(e)}catch(n){this._logger.warn("error in user callback "+n)}}))}_notifyAttachedTo(e){this._myAttachedTo.forEach((t=>{try{t(this.activity,e)}catch(n){this._logger.warn("error in user callback "+n)}}))}_notifyDetachedFrom(e,t,n){this._myDetachedFrom.forEach((i=>{try{i(e,t,n)}catch(r){this._logger.warn("error in user callback "+r)}}))}_subscribeActivitiesAttached(e,t){const n=this.window;if(tn(n))return;const i=n.activity;tn(i)||e.id===i.id&&(t.windowIds.indexOf(n.id)>=0?this._notifyAttachedTo(t):this._notifyAttached(t))}_subscribeActivitiesDetached(e,t,n){const i=this.window;if(tn(i))return;const r=i.activity;tn(r)||(t.id===r.id&&this._notifyDetached(n),e.id===r.id&&this._notifyDetachedFrom(e,t,n))}_subscribeWindowFrameColorChanged(e){const t=this.activity;t&&t.owner&&t.owner.underlyingWindow.id===e.id&&this._myActivityFrameColorChanged.forEach((t=>{t(e.frameColor)}))}}class ni{constructor(e,t){if(this._logger=In.Get("ReadyMarker ["+e+"]"),this._logger.debug("Initializing ready marker for '"+e+"' with "+t+" signals to wait"),t<=0)throw new Error("Invalid signal number. Should be > 0");this._signals=t,this._callbacks=[],this._name=e}setCallback(e){this.isSet()?e(void 0):this.isError()?e(this._error):this._callbacks.push(e)}signal(e){if(this._logger.debug("Signaled - "+e+" - signals left "+(this._signals-1)),this._signals--,this._signals<0)throw new Error("Error in ready marker '"+this._name+" - signals are "+this._signals);this.isSet()&&this._callbacks.forEach((e=>{e(void 0)}))}error(e){this._error=e,this._callbacks.forEach((t=>{t(e)}))}isSet(){return!this.isError()&&0===this._signals}isError(){return!en(this._error)}getError(){return this._error}}class ii{constructor(e){this._items={},this._listeners=[],this._processNew=e}addOne(e){this.add([e])}add(e){e.forEach((e=>{this.process(new ln(e,new hn(gn.Added)))}))}process(e){const t=e.context,n=t.type,i=e.entity;if(n===gn.StatusChange&&!t.oldStatus){const e=this._items[i.id];e&&(t.oldStatus=e.status)}n===gn.StatusChange&&t.oldStatus&&t.newStatus&&t.oldStatus.state===t.newStatus.state&&(t.type=gn.Updated),"undefined"===typeof htmlContainer&&(n===gn.ActivityWindowJoinedActivity&&this._items[i.id]&&this._items[i.id].activity&&(t.type=gn.Updated),n===gn.ActivityWindowLeftActivity&&this._items[i.id]&&!this._items[i.id].activity&&(t.type=gn.Updated));const r=this._updateInternalCollections(i,n,t);return this._notifyListeners(r,t),r}get(){const e=[];for(const t in this._items)if(this._items.hasOwnProperty(t)){const n=this._items[t];e.push(n)}return e}getByName(e){for(const t in this._items)if(t===e)return this._items[t]}getOrWait(e){return new Promise((t=>{const n=i=>{i.id===e&&(t(i),this.unsubscribe(n))};this.subscribe(n);const i=this.getByName(e);if(i)return this.unsubscribe(n),void t(i)}))}subscribe(e){return this._listeners.push(e),Object.keys(this._items).forEach((t=>{const n=this._items[t];e(n,new hn(gn.Added.toString()))})),()=>{this.unsubscribe(e)}}unsubscribe(e){const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}_notifyListeners(e,t){this._listeners.forEach((n=>{try{n(e,t)}catch(i){return}}))}_updateInternalCollections(e,t,n){const i=e,r=t===gn.StatusChange&&i.status&&i.status.state===mn.Destroyed||t===gn.StatusChange&&n&&n.newStatus&&n.newStatus.state===mn.Destroyed,o=t===gn.Closed;if(t===gn.Removed&&"undefined"===typeof i.isIndependent||o||r){const t=this._items[e.id];return delete this._items[e.id],this._processNew(e),t&&e._beforeDelete(t),e}{const t=e.id;this._items.hasOwnProperty(t)?this._items[e.id]._update(e):(this._processNew(e),this._items[e.id]=e)}return this._items[e.id]}}class ri{get usingHc(){return"HC"===this._bridge.bridgeType}get announcedWindows(){return this._announcedWindows}set announcedWindows(e){throw new Error("not allowed")}constructor(e,t,n){this._logger=In.Get("activityManager"),this._announcedWindows=[],this._attachedCallbacks=[],this._detachedCallbacks=[],this._frameColorChangesCallbacks=[],this._windowHandlers=[],this._bridge=e,this._activityTypes=new ii((e=>this._grabEntity(e))),this._windowTypes=new ii((e=>this._grabEntity(e))),this._activities=new ii((e=>this._grabEntity(e))),this._windows=new ii((e=>this._grabEntity(e))),this._dataReadyMarker=new ni("Activity Manager Data",4),this._descriptorsMarker=new ni("Attached Activities Descriptors",1),t?(this._readyMarker=new ni("Activity Manager Announce",1),this._dataReadyMarker.setCallback((e=>{e&&this._readyMarker.error(e),this._descriptorsMarker.setCallback((e=>{e&&this._readyMarker.error(e),this._logger.debug("Auto announcing window"),this.announceWindow().then((e=>{this._announcedWindows.push(e),this._readyMarker.signal("Successfully announced window with id '"+e.id+"'")})).catch((e=>{this._logger.debug("Will not announce window - "+e),this._readyMarker.signal()}))})),this.refreshDescriptors()}))):this._readyMarker=this._dataReadyMarker,this._bridge.onActivitiesAttached((e=>{this._handleActivitiesAttached(e)})),this._bridge.onActivitiesDetached((e=>{this._handleActivitiesDetached(e)})),this._bridge.onActivityAttachedDescriptorsRefreshed((e=>{this._handleActivityDescriptorsRefreshed(e)})),n&&n.onWindowFrameColorChanged(this._handleWindowFrameColorChanged.bind(this)),this._bridge.init(),this._subscribeForData(),this._bridge.initReady().then((e=>{this._getInitialData()})).catch((e=>{console.log(e)}))}ready(e){const t=new Promise(((e,t)=>{this._readyMarker.setCallback((n=>{n?t(this._readyMarker.getError()):e(this)}))}));return bn(Promise.all([this._bridge.ready(),t]).then((()=>this)),e)}getActivityTypes(){return this._activityTypes.get()}getActivityType(e){return this._activityTypes.getByName(e)}registerActivityType(e,t,n,i,r,o){return bn(new Promise(((o,s)=>{if(tn(e))return void s("activityTypeName argument can not be undefined");if(!Yt(e))return void s("activityTypeName should be string");if(!tn(this.getActivityType(e)))return void s("Activity type '"+e+"' already exists");let a;if(en(t))return void s("Owner window type can not be undefined");a=Yt(t)?{type:t,name:"",isIndependent:!1,arguments:{}}:t;const c=[];if(!en(n)&&Zt(n))for(const e in n){const t=n[e];if(Yt(t)){const e={type:t,name:"",isIndependent:!1,arguments:{},relativeTo:"",relativeDirection:"",windowStyleAttributes:{}};c.push(e)}else c.push(t)}this._bridge.registerActivityType(e,a,c,i,r).then((e=>{this._grabEntity(e),o(e)})).catch((e=>{s(e)}))})),o)}unregisterActivityType(e,t){return bn(new Promise(((t,n)=>{const i=this.getActivityType(e);en(i)?n("Activity type '"+e+"' does not exists"):this._bridge.unregisterActivityType(e).then((()=>t(i)),n)})),t)}initiate(e,t,n,i){return bn(new Promise(((n,r)=>{en(this.getActivityType(e))?r("Activity type '"+e+"' does not exists"):this._bridge.initiateActivity(e,t,i).then((e=>{this._activities.getOrWait(e).then((e=>{n(e)})).catch((e=>r(e)))})).catch((e=>{r(e)}))})),n)}subscribeActivityTypeEvents(e){this._activityTypes.subscribe(((t,n)=>{e(t,n.type)}))}getWindowTypes(){return this._windowTypes.get()}getWindowType(e){return this._windowTypes.getByName(e)}registerWindowFactory(e,t,n){return bn(new Promise(((n,i)=>{if(tn(e))i("no windowType specified");else{if(Xt(e))e=e.getName();else if(!Yt(e))return void i("windowType should be string or object that has getName method");this._bridge.registerWindowFactory(e,t).then((e=>{n(e)})).catch((e=>{i(e)}))}})),n)}unregisterWindowFactory(e,t){return bn(new Promise(((t,n)=>{tn(e)?n("no windowType specified"):Yt(e)?this._bridge.unregisterWindowFactory(e).then((e=>{t(e)})).catch((e=>{n(e)})):n("windowType should be a string")})),t)}getActivities(e){let t=this._activities.get();if(t=t.filter((e=>e._ownerId)),!e)return t;let n=e;if(Yt(e))n=[e];else if(e instanceof un)n=[e.name];else if(!(e instanceof Array))throw new Error("Invalid input argument 'activityType' = "+e);return t.filter((e=>{const t=e.type;return sn(n,(e=>t.id===e.id))}))}getActivityById(e){return this._activities.getByName(e)}announceWindow(e,t){return new Promise(((n,i)=>{const r=this._bridge.getAnnouncementInfo();if(en(e)&&(e=r.activityWindowId),en(t)&&(t=r.activityWindowType),tn(t))throw new Error("Can not announce - unknown windowType");const o=r&&r.activityId;if(tn(e))this._logger.debug("Registering window with type:'"+t+"', name:'"+r.activityWindowName+"', ind.:'"+r.activityWindowIndependent+"'"),this._bridge.registerWindow(t,r.activityWindowName,r.activityWindowIndependent).then(this._windows.getOrWait.bind(this._windows)).then((e=>o?this._activities.getOrWait(o).then((t=>e)):e)).then((e=>{n(e)})).catch((e=>{this._logger.error(e)}));else{this._logger.debug("Announcing window with id '"+e+"' and type '"+t+"'");const r=this._windows.getByName(e);if(!tn(r))return this._logger.debug("Window with id '"+e+"' already announced - reusing the window"),void n(r);const o=(t,r,s)=>{e===r.id&&s===gn.ActivityWindowJoinedActivity&&(en(r.activity)&&i("UNDEFINED ACTIVITY"),this._logger.trace("Got joined event for id '"+e+"'"),n(r),this.unsubscribeWindowEvents(o))};this.subscribeWindowEvents(o),this._logger.trace("Waiting for joined event for id '"+e+"'"),this._bridge.announceWindow(t,e)}}))}subscribeWindowTypeEvents(e){this._windowTypes.subscribe(((t,n)=>{e(t,n.type)}))}subscribeActivityEvents(e){return this._activities.subscribe(((t,n)=>{if(n.type===gn.StatusChange){const i=n;e(t,i.newStatus,i.oldStatus)}if(n.type===gn.Removed||n.type===gn.StatusChange&&n.newStatus.getState()===mn.Destroyed)for(const e of this._windows.get())e.activity&&e.activity.id===t.id&&this._windows.process(new ln(e,new hn(gn.ActivityWindowLeftActivity)))}))}subscribeWindowEvents(e){const t=(t,n)=>{let i=n.type;i===gn.Added&&(i="opened"),e(t.activity,t,i)};return this._windowHandlers.push([e,t]),this._windows.subscribe(t)}unsubscribeWindowEvents(e){const t=this._windowHandlers.find((t=>t[0]===e));t&&(this._windowHandlers.splice(this._windowHandlers.indexOf(t),1),this._windows.unsubscribe(t[1]))}createWindow(e,t,n){return bn(new Promise(((n,i)=>{let r,o;if(tn(t)&&i("windowType is undefined"),Yt(t))r={type:t,name:"",isIndependent:!1,arguments:{}};else if(t instanceof dn)r={type:t.type||t.id,name:t.name||t.type||t.id,isIndependent:!1};else{const e=["url"],n={};Object.keys(t).forEach((i=>{-1===e.indexOf(i)&&(n[i]=t[i])})),r=n}if(!tn(r.relativeTo))if(o=r.relativeTo,"string"===typeof o){const e=this.getWindows({type:o});!tn(e)&&e.length>0&&(r.relativeTo=e[0].id)}else if(tn(o.type))tn(o.windowId)||(r.relativeTo=o.windowId);else{const e=this.getWindows({type:o.type});!tn(e)&&e.length>0&&(r.relativeTo=e[0].id)}this._bridge.createWindow(e&&e.id,r).then((t=>{this._logger.debug("Window created, waiting for window entity with id "+t);const i=(r,o)=>{r.id!==t||e&&!r.activity||(this._logger.debug("Got entity window with id "+t),n(r),this._windows.unsubscribe(i))};this._windows.subscribe(i)})).catch((e=>{i(e)}))})),n)}createStackedWindows(e,t,n,i){return bn(new Promise(((i,r)=>{tn(e)&&r("activity is undefined"),tn(t)&&r("relativeWindowTypes is undefined"),Array.isArray(t)||r("relativeWindowTypes has to be an array"),tn(n)&&(n=2e4);const o=[];t.forEach((e=>{let t,i;if(t=Yt(e)?{type:e,name:"",isIndependent:!1,arguments:{}}:e,t.stackedWindow=!0,t.timeout=n,!tn(t.relativeTo))if(i=t.relativeTo,tn(i.type)){if(!tn(i.windowId)){const e=this.getWindows({id:i.windowId});!tn(e)&&e.length>0&&(t.relativeTo=e[0].type.name)}}else t.relativeTo=i.type;o.push(t)}));const s=[];o.forEach((t=>s.push(this.createWindow(e,t)))),Promise.all(s).then(i).catch(r)})),i)}addWindowToActivity(e,t,n){const i=this._bridge.joinActivity(e.id,t.id).then((()=>t));return bn(i,n),i}leaveWindowFromActivity(e,t,n){const i=this._bridge.leaveActivity(e.id,t.id).then((()=>t));return bn(i,n),i}setActivityContext(e,t,n){return bn(new Promise(((n,i)=>{tn(e)&&i("activity can not be null"),this._bridge.updateActivityContext(e,t,!0).then((t=>{n(e)})).catch((e=>{i(e)}))})),n)}updateActivityContext(e,t,n){return bn(new Promise(((n,i)=>{tn(e)&&i("activity can not be null");const r=[];for(const e in t)t.hasOwnProperty(e)&&null===t[e]&&r.push(e);for(const e of r)delete t[e];this._bridge.updateActivityContext(e,t,!1,r).then((t=>{n(e)})).catch((e=>{i(e)}))})),n)}subscribeActivityContextChanged(e){this._activities.subscribe(((t,n)=>{if(n.type===gn.ActivityContextChange){const i=n;e(t,i.context,i.updated,i.removed)}}))}stopActivity(e,t){return bn(this._bridge.stopActivity(e),t)}getWindows(e){return en(e)?this._windows.get():en(e.id)?this._windows.get().filter((t=>{if(!en(e.type)&&t.type.id!==e.type)return!1;if(!en(e.name)&&t.name!==e.name)return!1;if(!en(e.activityId)){if(tn(t.activity))return!1;if(t.activity.id!==e.activityId)return!1}return!0})):[this._windows.getByName(e.id)]}getWindowBounds(e){return this._bridge.getWindowBounds(e)}setWindowBounds(e,t,n){return bn(new Promise(((n,i)=>{this._bridge.setWindowBounds(e,t).then((()=>n())).catch((e=>i(e)))})),n)}closeWindow(e){return this._bridge.closeWindow(e)}activateWindow(e,t){return this._bridge.activateWindow(e,t)}setWindowVisibility(e,t){return this._bridge.setWindowVisibility(e,t)}clone(e,t,n){return bn(new Promise(((n,i)=>{e||i("activity can not be null"),this._bridge.cloneActivity(e.id,t).then((e=>{this._activities.getOrWait(e).then((e=>{n(e)})).catch((e=>i(e)))})).catch((e=>i(e)))})),n)}attachActivities(e,t,n,i){return n=n||{},bn(new Promise(((i,r)=>{if(this._activities.getByName(e))return this._activities.getByName(t)?this._bridge.attachActivities(e,t,n).then((e=>{const t=e.to,n=e.descriptor,r=e.descriptors;this._activities.getOrWait(t).then((e=>{e._updateDescriptors(r);const t=e.attached.filter((e=>e.ownerId===n.ownerId))[0];i(t)}))})).catch((e=>{r(e)})):void r("can not find activity with id "+t);r("can not find activity with id "+e)})),i)}detachActivities(e,t,n){return bn(new Promise(((n,i)=>this._bridge.detachActivities(e,t).then((()=>{const e=void 0,t=void 0,r=void 0;this._activities.getOrWait(e).then((e=>{e._updateDescriptors(r),this._activities.getOrWait(t).then((e=>{n(e)}))})).catch((e=>i(e)))})).catch((e=>{i(e)})))),n)}subscribeActivitiesAttached(e){this._attachedCallbacks.push(e)}subscribeActivitiesDetached(e){this._detachedCallbacks.push(e)}subscribeActivityFrameColorChanged(e){this._frameColorChangesCallbacks.push(e)}_grabEntity(e){e._manager=this}_getInitialData(){this._logger.debug("Request initial data..."),this._bridge.getActivityTypes().then((e=>{this._activityTypes.add(e),this._dataReadyMarker.signal("Got act types")})).catch((e=>{this._logger.error(e),this._dataReadyMarker.error("Can not initialize ActivityManager - error getting activity types -"+e)})),this._bridge.getWindowTypes().then((e=>{this._windowTypes.add(e),this._dataReadyMarker.signal("Got window types")})).catch((e=>{this._logger.error(e),this._dataReadyMarker.error("Can not initialize ActivityManager - error getting window types "+e)})),this._bridge.getActivities().then((e=>{this._activities.add(e),this._dataReadyMarker.signal("Got activities")})).catch((e=>{this._logger.error(e),this._dataReadyMarker.error("Can not initialize ActivityManager - error getting activity instances -"+e)})),this._bridge.getActivityWindows().then((e=>{this._windows.add(e),this._dataReadyMarker.signal("Got windows")})).catch((e=>{this._logger.error(e),this._dataReadyMarker.error("Can not initialize ActivityManager - error getting activity windows -"+e)}))}_subscribeForData(){this._logger.debug("Subscribe for data..."),this._bridge.onActivityTypeStatusChange((e=>{this._activityTypes.process(e)})),this._bridge.onWindowTypeStatusChange((e=>{this._windowTypes.process(e)})),this._bridge.onActivityWindowChange((e=>{this._windows.process(e)})),this._bridge.onActivityStatusChange((e=>{this._activities.process(e)}))}_handleActivitiesAttached(e){const t=e.to,n=e.descriptor,i=e.descriptors;this._activities.getOrWait(t).then((e=>{e._updateDescriptors(i);const t=e.attached.filter((e=>e.ownerId===n.ownerId))[0];this._attachedCallbacks.forEach((n=>{try{n(e,t)}catch(i){return}}))}))}_handleActivitiesDetached(e){const t=e.oldActivityId,n=e.newActivityId,i=e.descriptors,r=e.descriptor;this._activities.getOrWait(t).then((e=>{e._updateDescriptors(i),this._activities.getOrWait(n).then((t=>{this._detachedCallbacks.forEach((n=>{try{n(t,e,r)}catch(i){return}}))}))}))}_handleActivityDescriptorsRefreshed(e){const t=e.id,n=e.descriptors,i=this._activities.getByName(t);i&&i._updateDescriptors(n)}refreshDescriptors(){this._bridge.getAttachedDescriptors().then((e=>{e&&Object.keys(e).forEach((t=>{const n=t,i=e[t],r=this._activities.getByName(n);r&&r._updateDescriptors(i)})),this._descriptorsMarker.signal("Successfully got descriptors")})).catch((e=>{this._descriptorsMarker.error("failed to get descriptors - "+e)}))}_handleWindowFrameColorChanged(e){if(!e.activityId)return;const t=this._activities.getByName(e.activityId);t&&t.owner&&t.owner.underlyingWindow.id===e.id&&this._frameColorChangesCallbacks.forEach((n=>{try{n(t,e.frameColor)}catch(i){return}}))}}class oi{constructor(e,t){this._m=e,this._my=t,this.activityTypes={get:this._getActivityTypesWrapper.bind(this),register:this._m.registerActivityType.bind(this._m),unregister:this._m.unregisterActivityType.bind(this._m),subscribe:this._m.subscribeActivityTypeEvents.bind(this._m),unsubscribe:void 0,initiate:this._m.initiate.bind(this._m)},this.windowTypes={get:this._getWindowTypesWrapper.bind(this),registerFactory:this._m.registerWindowFactory.bind(this._m),unregisterFactory:this._m.unregisterWindowFactory.bind(this._m),subscribe:this._m.subscribeWindowTypeEvents.bind(this._m),unsubscribe:void 0},this.windows={get:this._m.getWindows.bind(this._m),subscribe:this._m.subscribeWindowEvents.bind(this._m),announce:this._m.announceWindow.bind(this._m),unsubscribe:void 0,create:this._m.createWindow.bind(this._m)},this.instances={get:this._m.getActivities.bind(this._m),subscribe:this._m.subscribeActivityEvents.bind(this._m),unsubscribe:void 0}}onAttached(e){this._m.subscribeActivitiesAttached(e)}onDetached(e){this._m.subscribeActivitiesDetached(e)}onActivityFrameColorChanged(e){this._m.subscribeActivityFrameColorChanged(e)}_getActivityTypesWrapper(e){return en(e)?this._m.getActivityTypes():this._m.getActivityType(e)}_getWindowTypesWrapper(e){return en(e)?this._m.getWindowTypes():this._m.getWindowType(e)}}class si{constructor(e,t){this._mgr=e,this._my=t,this.all=new oi(e,t)}ready(e){return bn(new Promise(((e,t)=>{this._mgr.ready().then((()=>{e(this)})).catch((e=>{t(e)}))})),e)}get my(){return this._my}get aware(){return void 0!==this._my.window}get inActivity(){return this.aware&&void 0!==this._my.activity}get agm(){if(this.aware)return this.inActivity?this._my.activity.agm:new vn(null)}getAvailableFrameColors(){return[]}}class ai{static checkIsUsingGW3Implementation(e){return 3===e.protocolVersion}get api(){return this._api}set api(e){this._api=e}constructor(e){if(!e)throw new Error("config can not be null");let t;if(en(e.logLevel)||(In.Level=e.logLevel),tn(e.logger)||(In.GlueLogger=e.logger),this._isUsingHCImplementation=2===e.gdMajorVersion,this._isUsingGW3Implementation=ai.checkIsUsingGW3Implementation(e.connection),this._isUsingHCImplementation)throw new Error("GD2 not supported");if(!this._isUsingGW3Implementation)throw new Error("Unable to instantiate activity bridge implementation");if(t=new ei(e),!t)throw new Error("A bridge to native activity is needed to create activity lib.");vn.AGM=e.agm;const n=new ri(t,!e.disableAutoAnnounce,e.windows),i=new ti(n,e.windows);this._api=new si(n,i),this._readyPromise=n.ready().then((e=>this))}get isUsingHCImplementation(){return this._isUsingHCImplementation}get isUsingGW3Implementation(){return this._isUsingGW3Implementation}ready(e){return bn(this._readyPromise,e)}}const ci="T42.ACS.Shutdown",ui="T42.ACS.OnGDShutdown",di="T42.ACS.Restart",li="T42.ACS.GetConfigurationRegion",hi="T42.ACS.SetConfigurationRegion",pi="T42.ACS.GetUser",fi="T42.ACS.GetBranches",gi="T42.ACS.GetCurrentBranch",mi="T42.ACS.SetCurrentBranch",vi="T42.ACS.GetFunctionalEntitlement",yi="T42.ACS.CanI",wi="T42.ACS.StartApplication",bi="T42.ACS.StopApplication",_i="T42.ACS.ActivateApplication",Ci="T42.ACS.OnEvent",Ii="T42.ACS.GetApplications";function Si(e){if(e&&e.errorHandling&&"function"!==typeof e.errorHandling&&"log"!==e.errorHandling&&"silent"!==e.errorHandling&&"throw"!==e.errorHandling)throw new Error('Invalid options passed to createRegistry. Prop errorHandling should be ["log" | "silent" | "throw" | (err) => void], but '+typeof e.errorHandling+" was passed");var t=e&&"function"===typeof e.errorHandling&&e.errorHandling,n={};function i(e,t,i){var r=n[e];return r||(r=[],n[e]=r),r.push(t),i&&setTimeout((function(){i.forEach((function(i){var r;if(null===(r=n[e])||void 0===r?void 0:r.includes(t))try{Array.isArray(i)?t.apply(void 0,i):t.apply(void 0,[i])}catch(s){o(s,e)}}))}),0),function(){var i=n[e];i&&(0===(i=i.reduce((function(e,n,i){return n===t&&e.length===i||e.push(n),e}),[])).length?delete n[e]:n[e]=i)}}function r(e){for(var t=[],i=1;ie[t])):[]}function Ti(e){let t;try{t=JSON.parse(JSON.stringify(e||{}))}catch(n){t={}}return t}function Ai(e,t){if(t.throwErrors&&"function"!==typeof e)throw new Error("Please provide the callback as a function!")}class Ei{constructor(e,t,n,i){this._appManager=e,this._name=t,this._agm=n,this._configuration=i,this._registry=ki(),e.onInstanceStarted((e=>{e.application&&e.application.name!==this._name||this._registry.execute("instanceStarted",e)})),e.onInstanceStopped((e=>{e.application&&e.application.name!==this._name||this._registry.execute("instanceStopped",e)})),e.onAppRemoved((e=>{e.name===this._name&&this._registry.execute("appRemoved",e)})),e.onAppChanged((e=>{e.name===this._name&&this._registry.execute("appChanged",e)})),e.onAppAvailable((e=>{e.name===this._name&&(this._props.IsReady=!0,this._registry.execute("appAvailable",e))})),e.onAppUnavailable((e=>{e.name===this._name&&(this._props.IsReady=!1,this._registry.execute("appUnavailable",e))}))}get name(){return this._name}get title(){return this._props.Title}get version(){return this._props.Version}get autoStart(){return this._props.AutoStart}get isShell(){return this._props.IsShell}get caption(){return this._props.Caption}get hidden(){return this._props.IsHidden}get container(){return this._props.ApplicationName}get activityType(){return this._props.ActivityType}get activityWindowType(){return this._props.ActivityWindowType}get windowSettings(){return this._props.Arguments?Ti(this._props.Arguments):{}}get allowMultiple(){return this._props.AllowMultiple}get available(){return this._props.IsReady||!0}get icon(){return this._props.Icon}get iconURL(){return this._props.IconUrl}get sortOrder(){return this._props.SortOrder}get userProperties(){return this._props.UserProperties?Ti(this._props.UserProperties):{}}get keywords(){return this._props.Keywords?this._props.Keywords:[]}get isActivity(){return void 0!==this._props.ActivityType&&""!==this._props.ActivityType}get configuration(){return{autoStart:this._props.AutoStart,caption:this._props.Caption,hidden:this._props.IsHidden,container:this._props.ApplicationName,activityType:this._props.ActivityType,allowMultiple:this._props.AllowMultiple}}get instances(){return this._appManager.instances().filter((e=>e.application.name===this._name))}get type(){return this._props.Type}get mode(){if(!this._props)return"unknown";if(this._props.Mode&&"string"===typeof this._props.Mode)return this._props.Mode.toLowerCase();if(this.isActivity)return"unknown";if(this._props.Arguments&&this._props.Arguments.mode&&"string"===typeof this._props.Arguments.mode)return this._props.Arguments.mode.toLowerCase();let e=this._props.WindowStyleAttributes;if(e){e=e.split(" ").join("");const t='mode:"',n=e.indexOf(t);if(-1!==n){const i=n+t.length,r=e.indexOf('"',i),o=e.substr(i,r-i);if(o&&"string"===typeof o)return o.toLowerCase()}}return"flat"}async getConfiguration(){return(await this._agm.invoke(Ii,{v2:{apps:[this._name]}})).returned.applications[0]}updateFromProps(e){this._props||(this._props={Name:e.Name}),Object.keys(e).forEach((t=>{this._props[t]=e[t]}))}start(e,t){return new Promise((async(n,i)=>{var r,o,s,a,c;const u=this._name;let d=6e4;if(tn(e))e={};else if((null===(r=this._configuration())||void 0===r?void 0:r.throwErrors)&&"object"!==typeof e||Array.isArray(e))return i(new Error('Invalid "context" parameter - must be an object.'));if(tn(t))t={};else if((null===(o=this._configuration())||void 0===o?void 0:o.throwErrors)&&"object"!==typeof t)return i(new Error('Invalid "options" parameter - must be an object.'));let l=null===(a=null!==(s=t.awaitInterop)&&void 0!==s?s:t.waitForAGMReady)||void 0===a||a;const h=e=>{let t;const r=setTimeout((()=>{t&&t(),i("timed out while waiting for instance id ".concat(e," for app ").concat(this.name))}),d),o=i=>{i.id===e&&(t&&(t(),t=void 0),clearTimeout(r),n(i))};t=l?this._appManager.onInstanceAgmServerReady(o):this._appManager.onInstanceStarted(o)};try{const i=(await this._agm.invoke(wi,{Name:u,Context:e,Options:t},"best",{methodResponseTimeoutMs:d})).returned;if("undefined"!==typeof i.timeout&&(d=1e3*i.timeout),"undefined"!==typeof i.waitForInterop&&"undefined"===typeof t.waitForAGMReady&&"undefined"===typeof t.awaitInterop&&(l=i.waitForInterop),i&&i.Id)if("startOnly"===this._appManager.mode){const e=this._appManager.handleInstanceStarted({ActivityId:void 0,IsActivityOwner:void 0,Context:void 0,Title:void 0,AgmServers:void 0,Id:i.Id,Name:i.Name});n(e)}else h(i.Id);else n(void 0)}catch(p){i(null!==(c=p.message)&&void 0!==c?c:p)}}))}onInstanceStarted(e){return Ai(e,this._configuration()),this._registry.add("instanceStarted",e)}onInstanceStopped(e){return Ai(e,this._configuration()),this._registry.add("instanceStopped",e)}onAvailable(e){return Ai(e,this._configuration()),this._props.IsReady&&setTimeout((()=>{this._registry.execute("appAvailable",this)}),0),this._registry.add("appAvailable",e)}onUnavailable(e){return Ai(e,this._configuration()),!1===this._props.IsReady&&setTimeout((()=>{this._registry.execute("appUnavailable",this)}),0),this._registry.add("appUnavailable",e)}onChanged(e){Ai(e,this._configuration()),this._registry.add("appChanged",e)}onRemoved(e){Ai(e,this._configuration()),this._registry.add("appRemoved",e)}}class Pi{constructor(e,t,n,i,r,o,s,a){this._id=e,this._appName=t,this._appManager=n,this._agm=i,this._activities=r,this._windows=o,this._configuration=a,this._registry=ki(),s||(this._unsubscribeInstanceStopped=this._appManager.onInstanceStopped((e=>{e.id===this._id&&this._registry.execute("stopped",e)})),this._unsubscribeInstanceAgmServerReady=this._appManager.onInstanceAgmServerReady((e=>{e.id===this._id&&this._registry.execute("agmReady",e)})))}get id(){return this._id}get application(){return this._appManager.application(this._appName)}get activity(){if(!this._activities)throw new Error("This method requires glue.activities library to be enabled.");return this._activities.all.instances.get().filter((e=>e.id===this._activityId))[0]}get isActivityOwner(){return this._isActivityOwner}get activityInstances(){return this._appManager.instances().filter((e=>"activity"!==e.application.type&&e.activityId&&e.activityId===this._activityId))}get activityOwnerInstance(){if(this._activityId)return this.activityInstances.filter((e=>null===e||void 0===e?void 0:e.isActivityOwner))[0]}get window(){if(!this._windows)throw new Error("This method requires glue.windows library to be enabled.");let e=this._windows.list().filter((e=>e.id===this._id))[0];return!e&&this._activities&&this.activity&&this.activityOwnerInstance&&(e=this.activityOwnerInstance.window),e}get context(){var e,t,n;return null!==(n=null!==(e=this._startUpContext)&&void 0!==e?e:null===(t=this.window)||void 0===t?void 0:t.context)&&void 0!==n?n:{}}get title(){return this._title}get isActivityInstance(){return this._isActivityInstance}get activityId(){return this._activityId}get inActivity(){return this._inActivity}get isSingleWindowApp(){return!this._inActivity}get agm(){return this._agmInstance}get interopInstance(){return this._agmInstance}onInteropReady(e){return Ai(e,this._configuration()),this._agmInstance&&setTimeout((()=>{this._registry.execute("agmReady",this)}),0),this._registry.add("agmReady",e)}onAgmReady(e){return this.onInteropReady(e)}onStopped(e){return Ai(e,this._configuration()),this._registry.add("stopped",e)}getWindow(){return new Promise(((e,t)=>{const n=this.window;if(n)return void e(n);const i=(n,i)=>{n&&t(n),i&&e(i),setTimeout((()=>{clearTimeout(r),o()}),0)},r=setTimeout((()=>{i(new Error("can not find a window with id ".concat(this._id)))}),3e4),o=this._windows.onWindowAdded((e=>{e.id===this._id&&i(void 0,e)}))}))}updateFromProps(e){this._startUpContext=e.Context,this._title=e.Title,this._isActivityInstance=!1,e.ActivityId&&""!==e.ActivityId&&(this._activityId=e.ActivityId,this._isActivityInstance=!0),this._isActivityOwner=e.IsActivityOwner,!this._activityId&&this._startUpContext&&this._startUpContext.activityId&&(this._activityId=this._startUpContext.activityId),this._inActivity=Boolean(this._activityId),this.updateAgmInstanceFromProps(e)}updateAgmInstanceFromProps(e){if(!e.AgmServers)return;const t=e.AgmServers;t&&t.length>0&&!tn(t[0])&&(this._agmInstance=t[0])}stop(){return new Promise(((e,t)=>{let n=this._id;this.isActivityOwner&&(n=this.activityId);const i=this._appManager.onInstanceStopped((t=>{t.id===n&&(i(),e())}));this._agm.invoke(bi,{Name:this._appName,Id:this._id}).then((()=>{"startOnly"===this._appManager.mode&&(this._appManager.handleInstanceStopped({Name:this._appName,Id:this.id}),e())})).catch((e=>t(e)))}))}activate(){return this._agm.invoke(_i,{Name:this._appName,Id:this._id})}done(){this._registry.clear(),this._unsubscribeInstanceAgmServerReady(),this._unsubscribeInstanceStopped()}getContext(){return Promise.resolve(this.context)}}class Mi{constructor(e,t,n,i,r,o,s){this.mode=e,this._agm=t,this._activities=n,this._windows=i,this._logger=r,this._gdMajorVersion=o,this._configuration=s,this._apps={},this._instances=[],this._registry=ki(),this.getConfigurations=async e=>{const t={v2:{apps:void 0}};return Array.isArray(e)&&(t.v2={apps:e}),(await this._agm.invoke(Ii,t)).returned.applications},this.application=e=>{var t;if((null===(t=this._configuration())||void 0===t?void 0:t.throwErrors)&&"string"!==typeof e)throw new Error('"name" must be string');return this._apps[e]},this.applications=()=>Object.keys(this._apps).map((e=>this._apps[e])),this.instances=()=>this._instances.map((e=>e)),this.getMyInstance=()=>{const e="undefined"!==typeof window&&window.glue42gd;if(!e){const e=this._agm.instance.instance;return this._instances.find((t=>t.id===e))}if(this._gdMajorVersion>=3){const t=e.appInstanceId;return this._instances.find((e=>e.id===t))}},this.getMyApplication=()=>{if(this._agm.instance)return this.application(this._agm.instance.applicationName)},this.handleSnapshotAppsAdded=e=>{const t=this.applications();t.length>0&&t.forEach((t=>{const n=t.name;e.find((e=>e.Name===t.name))||this.handleAppRemoved({Name:n})})),e.forEach((e=>{t.find((t=>t.name===e.Name))||this.handleAppAdded(e)}))},this.handleSnapshotInstanceStarted=e=>{const t=this.instances();t.length>0&&t.forEach((t=>{const n=t.id;e.find((e=>e.Id===n))||this.handleInstanceStopped({Name:t.application.name,Id:n})})),e.forEach((e=>{t.find((t=>t.id===e.Id))||this.handleInstanceStarted(e)}))},this.handleAppAdded=e=>{const t=this._getAppId(e);this._logger.trace("adding app ".concat(t)),this._apps[t]=new Ei(this,t,this._agm,this._configuration);const n=this._updateAppFromProps(e);this._registry.execute("appAdded",n),this._registry.execute("appAvailable",n)},this.handleAppUpdated=e=>{const t=this._updateAppFromProps(e);this._registry.execute("appChanged",t)},this.handleAppRemoved=e=>{const t=this._getAppId(e);this._logger.trace("removing app ".concat(t));const n=this.application(t);this._instances=this._instances.filter((e=>e.application.name!==n.name)),delete this._apps[t],this._registry.execute("appRemoved",n)},this.handleAppReady=e=>{const t=this._getAppId(e),n=this._getAppOrThrow(t);n.updateFromProps(e),n.available?this._registry.execute("appAvailable",n):this._registry.execute("appUnavailable",n)},this.handleInstanceStarted=e=>{this._logger.trace("started app ".concat(e.Name," ").concat(e.Id));const t=this._getInstanceId(e),n=this._getInstanceAppName(e),i=new Pi(t,n,this,this._agm,this._activities,this._windows,!1,this._configuration);return this._updateInstanceFromProps(i,e),this._instances.push(i),this._registry.execute("instanceStarted",i),i},this.handleInstanceStopped=e=>{this._logger.trace("failed to start app ".concat(e.Name," ").concat(e.Id));const t=this._getInstanceId(e),n=this._getInstanceAppName(e),i=this._getInstanceOrThrow(t,n);this._instances=this._instances.filter((e=>!this._matchInstance(e,t,n))),this._registry.execute("instanceStopped",i),i.done()},this.handleInstanceAgmServerReady=e=>{const t=this._getInstanceId(e),n=this._getInstanceAppName(e),i=this._getInstanceOrThrow(t,n);i.updateAgmInstanceFromProps(e),this._registry.execute("instanceAgmServerReady",i)},this.handleInstanceStartFailed=e=>{const t=this._getInstanceId(e),n=this._getInstanceAppName(e),i=new Pi(t,n,void 0,void 0,void 0,void 0,!0,this._configuration);this._updateInstanceFromProps(i,e),this._registry.execute("instanceStartFailed",i)},this.handleInstanceUpdated=e=>{const t=this._getInstanceId(e),n=this._getInstanceAppName(e),i=this._getInstanceOrThrow(t,n);this._updateInstanceFromProps(i,e)},this.onInstanceStarted=e=>(Ai(e,this._configuration()),this._registry.add("instanceStarted",e,this._instances)),this.onInstanceStartFailed=e=>(Ai(e,this._configuration()),this._registry.add("instanceStartFailed",e)),this.onInstanceStopped=e=>(Ai(e,this._configuration()),this._registry.add("instanceStopped",e)),this.onInstanceUpdated=e=>(Ai(e,this._configuration()),this._registry.add("instanceChanged",e)),this.onInstanceAgmServerReady=e=>(Ai(e,this._configuration()),this._registry.add("instanceAgmServerReady",e)),this.onAppAdded=e=>(Ai(e,this._configuration()),this._registry.add("appAdded",e,Object.values(this._apps))),this.onAppRemoved=e=>(Ai(e,this._configuration()),this._registry.add("appRemoved",e)),this.onAppAvailable=e=>(Ai(e,this._configuration()),this._registry.add("appAvailable",e)),this.onAppUnavailable=e=>(Ai(e,this._configuration()),this._registry.add("appUnavailable",e)),this.onAppChanged=e=>(Ai(e,this._configuration()),this._registry.add("appChanged",e))}_getAppOrThrow(e){const t=this.application(e);if(!t)throw Error("app with id ".concat(e," not found"));return t}_getAppId(e){return e.Name}_matchInstance(e,t,n){return e.id===t&&e.application.name===n}_getInstanceByIdAndName(e,t){return this._instances.filter((n=>this._matchInstance(n,e,t)))[0]}_getInstanceOrThrow(e,t){const n=this._getInstanceByIdAndName(e,t);if(!n)throw Error("instance with id ".concat(e," not found"));return n}_getInstanceId(e){return e.Id}_getInstanceAppName(e){return e.Name}_updateAppFromProps(e){const t=this._getAppId(e);this._logger.trace("updating app with + ".concat(t,", ").concat(JSON.stringify(e)));const n=this._getAppOrThrow(t);return n.updateFromProps(e),n}_updateInstanceFromProps(e,t){this._logger.trace("updating instance with "+this._getInstanceId(t)+" for app "+this._getInstanceAppName(t)),e.updateFromProps(t)}}function Ri(e,t,n){const i=e=>!!(e&&e.constructor&&e.call&&e.apply);return i(t)||i(n)?(i(t)?i(n)||(n=()=>{}):t=()=>{},e.then(t,n)):e}class Ni{constructor(e){this._agm=e,this._registry=ki(),this._isMethodRegistered=!1,this.handleBranchModified=e=>{this._registry.execute("branchChanged",e)},this.handleBranchesModified=e=>{this._registry.execute("branchesChanged",e)},this.getRegion=(e,t)=>Ri(this._agmInvoke(li,(e=>e.returned.Region)),e,t),this.getBranches=(e,t)=>Ri(this._agmInvoke(fi,(e=>{const t=e.returned.Branches;return Object.keys(t).map((e=>t[e]))})),e,t),this.getCurrentBranch=(e,t)=>Ri(this._agmInvoke(gi,(e=>e.returned.Branch),void 0),e,t),this.setRegion=(e,t,n)=>Ri(this._agmInvoke(hi,(e=>e.returned.ResultMessage),{Region:e}),t,n),this.setCurrentBranch=(e,t,n)=>Ri(this._agmInvoke(mi,(e=>e.returned.ResultMessage),{Branch:e}),t,n),this.currentUser=(e,t)=>Ri(this._agmInvoke(pi),e,t),this.getFunctionalEntitlement=(e,t,n)=>Ri(this._agmInvoke(vi,(e=>e.returned.Entitlement),{Function:e}),t,n),this.getFunctionalEntitlementBranch=(e,t,n,i)=>Ri(this._agmInvoke(vi,(e=>e.returned.Entitlement),{Function:e,Branch:t}),n,i),this.canI=(e,t,n)=>Ri(this._agmInvoke(yi,(e=>e.returned.Result),{Function:e}),t,n),this.canIBranch=(e,t,n,i)=>Ri(this._agmInvoke(yi,(e=>e.returned.Result),{Function:e,Branch:t}),n,i),this.onBranchesChanged=e=>this._registry.add("branchesChanged",e),this.onBranchChanged=e=>this._registry.add("branchChanged",e),this.exit=e=>this._agmInvoke(ci,null,e),this.onShuttingDown=e=>(this.registerMethod(),this._registry.add("onShuttingDown",e)),this.restart=e=>this._agmInvoke(di,null,e),this._agmInvoke=(e,t,n)=>(n=n||{},new Promise(((i,r)=>{const o=e=>r(e);this._agm.invoke(e,n).then((e=>{t||(t=e=>e.returned),i(t(e))})).catch(o)})))}registerMethod(){this._isMethodRegistered||(this._agm.register(ui,(async e=>{try{const t=await Promise.all(this._registry.execute("onShuttingDown",e));return{prevent:t.some((e=>e.prevent))}}catch(t){}})),this._isMethodRegistered=!0)}}function Oi(e,t){return new Promise(((n,i)=>{e.invoke(Ii,{skipIcon:!0}).then((e=>{var i;const r=e.returned,o=null!==(i=e.returned.configuration)&&void 0!==i?i:{};r||n(o);const s=r.applications;s||n(o),xi(s).map((e=>t.handleAppAdded(e))),n(o)})).catch((e=>i("Error getting application snapshot: ".concat(e.message))))}))}const ji="OnBranchChanged",Di="OnBranchesModified",Fi="OnApplicationAdded",Wi="OnApplicationRemoved",Li="OnApplicationChanged",Ui="OnApplicationReady",Bi="OnApplicationStarted",Hi="OnApplicationAgmServerReady",Gi="OnApplicationUpdated",qi="OnApplicationStopped",zi="OnApplicationStartFailed";function Vi(e,t,n,i){let r,o=!1;const s=()=>{let s,a;const c=new Promise(((e,t)=>{s=e,a=t}));return e.subscribe(Ci,{arguments:{skipIcon:i},waitTimeoutMs:1e4}).then((i=>{r=i,r.onData((i=>{var r;const a=i.data,c=null!==(r=a.configuration)&&void 0!==r?r:{},u=xi(a[Fi]);i.data.isSnapshot?t.handleSnapshotAppsAdded(u):u.forEach((e=>t.handleAppAdded(e))),xi(a[Li]).forEach((e=>t.handleAppUpdated(e))),xi(a[Wi]).forEach((e=>t.handleAppRemoved(e))),xi(a[Ui]).forEach((e=>t.handleAppReady(e)));const d=xi(a[Bi]);if(i.data.isSnapshot?t.handleSnapshotInstanceStarted(d):d.forEach((e=>t.handleInstanceStarted(e))),xi(a[zi]).forEach((e=>t.handleInstanceStartFailed(e))),xi(a[qi]).forEach((e=>t.handleInstanceStopped(e))),xi(a[Gi]).forEach((e=>t.handleInstanceUpdated(e))),xi(a[Hi]).forEach((e=>t.handleInstanceAgmServerReady(e))),xi(a[ji]).forEach((e=>n.handleBranchModified(e))),xi(a[Di]).forEach((e=>n.handleBranchesModified(e))),!o){o=!0;const n=u.some((t=>t.Name===e.instance.application)),i=d.some((t=>t.Id===e.instance.instance));if(n)if(i)s(c);else{const n=t.onInstanceStarted((t=>{t.id===e.instance.instance&&(n(),s(c))}))}else s(c)}})),r.onFailed((e=>a(e)))})).catch((e=>{var t;return a("Error subscribing for ".concat(Ci," stream. Err: ").concat(null!==(t=e.message)&&void 0!==t?t:JSON.stringify(e)))})),c};return{start:s,stop:()=>{r&&r.close()}}}const Ji="T42.ACS.InMemoryStoreCommand";class Ki{constructor(e){this.interop=e}import(e,t){if(!e||!Array.isArray(e))return Promise.reject("invalid apps argument - should be an array of application definitions");if(t&&"replace"!==t&&"merge"!==t)return Promise.reject("invalid mode argument - should be 'replace' or 'merge'");const n={command:"import",args:{apps:e,mode:t=null!==t&&void 0!==t?t:"replace"}};return this.interop.invoke(Ji,n).then((e=>e.returned))}export(){return this.interop.invoke(Ji,{command:"export"}).then((e=>e.returned.apps))}remove(e){if(!e||"string"!==typeof e)return Promise.reject("invalid app name, should be a string value");const t={command:"remove",args:{apps:[e]}};return this.interop.invoke(Ji,t).then((e=>e.returned))}clear(){const e={command:"clear"};return this.interop.invoke(Ji,e).then((e=>e.returned))}createAppDef(e,t){return t||(t="https://google.com"),{name:e,type:"window",title:e,details:{url:t}}}}var $i=e=>{if(!e)throw Error("config not set");if(!e.agm)throw Error("config.agm is missing");const t="startOnly",n="skipIcons",i="full",r=e.mode||t;if(r!==t&&r!==n&&r!==i)throw new Error("Invalid mode for appManager lib - ".concat(r," is not supported"));const o=e.activities,s=e.agm,a=e.logger,c=e.windows;let u={};const d=new Mi(r,s,o,c,a.subLogger("applications"),e.gdMajorVersion,(()=>u)),l=new Ni(s);let h;if(r===t)h=Oi(s,d);else{const e=Vi(s,d,l,r===n);h=e.start()}return{ready:()=>h.then((e=>{u=e})),applications:d.applications,application:d.application,getConfigurations:d.getConfigurations,onAppAdded:d.onAppAdded,onAppRemoved:d.onAppRemoved,onAppChanged:d.onAppChanged,onAppAvailable:d.onAppAvailable,onAppUnavailable:d.onAppUnavailable,instances:d.instances,get myInstance(){return d.getMyInstance()},get myApplication(){return d.getMyApplication()},onInstanceStarted:d.onInstanceStarted,onInstanceStopped:d.onInstanceStopped,onInstanceUpdated:d.onInstanceUpdated,onInstanceStartFailed:d.onInstanceStartFailed,getRegion:l.getRegion,getBranches:l.getBranches,getCurrentBranch:l.getCurrentBranch,getFunctionalEntitlement:l.getFunctionalEntitlement,getFunctionalEntitlementBranch:l.getFunctionalEntitlementBranch,setCurrentBranch:l.setCurrentBranch,setRegion:l.setRegion,currentUser:l.currentUser,canI:l.canI,canIBranch:l.canIBranch,onBranchesChanged:l.onBranchesChanged,exit:l.exit,restart:l.restart,onShuttingDown:l.onShuttingDown,inMemory:new Ki(s)}};let Qi="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",Yi=function(){let e="",t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:21;for(;t--;)e+=Qi[64*Math.random()|0];return e};class Xi{static getGDMajorVersion(){if("undefined"===typeof window)return-1;if(!window.glueDesktop)return-1;if(!window.glueDesktop.version)return-1;const e=Number(window.glueDesktop.version.substr(0,1));return isNaN(e)?-1:e}static callbackifyPromise(e,t,n){const i=e=>{let t=e;if(e instanceof Error&&(t=e.message),"function"!==typeof n)return Promise.reject(t);n(t)};try{return e().then((e=>("function"===typeof t&&t(e),e))).catch((e=>i(e)))}catch(r){return i(r)}}static getMonitor(e,t){return t.map((t=>{const{left:n,top:i,workingAreaWidth:r,workingAreaHeight:o}=t;return{monitor:t,totalOverlap:this.calculateTotalOverlap({left:n,top:i,width:r,height:o},e)}})).sort(((e,t)=>t.totalOverlap-e.totalOverlap))[0].monitor}static getDisplayCenterOfScreen(e,t,n){const i=e.width/t.scaleFactor,r=e.height/t.scaleFactor,o=t.workArea.left/n.scaleFactor,s=t.workArea.top/n.scaleFactor,a=t.workArea.width/t.scaleFactor,c=t.workArea.height/t.scaleFactor,u=Math.max((a-i)/2,0),d=Math.max((c-r)/2,0),l=Math.floor(o+u),h=Math.floor(s+d);return{left:l*n.scaleFactor,top:h*n.scaleFactor,width:e.width,height:e.height}}static isNode(){if("undefined"!==typeof Xi._isNode)return Xi._isNode;if("undefined"!==typeof window)return Xi._isNode=!1,!1;try{Xi._isNode="[object process]"===Object.prototype.toString.call(n.g.process)}catch(e){Xi._isNode=!1}return Xi._isNode}static generateId(){return Yi(10)}static calculateTotalOverlap(e,t){const n=e.left,i=e.top,r=n+e.width,o=i+e.height,s=t.left,a=t.top,c=s+t.width,u=a+t.height;return Math.max(0,Math.min(r,c)-Math.max(n,s))*Math.max(0,Math.min(o,u)-Math.max(i,a))}}const Zi="T42.JumpList.Action";class er{constructor(){this._groupActionCallbacks=new Map,this._registered=!1}init(e,t,n){this._executor=e,this._agm=t,this._logger=n,this.registerCallbackMethod()}setEnabled(e,t){const n={enabled:t};return this._executor.updateJumpList(e,n)}createCategory(e,t,n){this.validateActions(t,n);const i={category:{title:t,operation:"create",actions:this.toUpdateActions(e,"create",t,n)}};return this._executor.updateJumpList(e,i)}removeCategory(e,t){const n={category:{title:t,operation:"remove",actions:[]}};return this.manageActionCallback(e,n.category.operation,t),this._executor.updateJumpList(e,n)}createActions(e,t,n){this.validateActions(t,n);const i={category:{title:t,operation:"update",actions:this.toUpdateActions(e,"create",t,n)}};return this._executor.updateJumpList(e,i)}removeActions(e,t,n){const i={category:{title:t,operation:"update",actions:this.toUpdateActions(e,"remove",t,n)}};return this._executor.updateJumpList(e,i)}async getActions(e,t){const n=[],i=(await this.getJumpListSettings(e)).categories.find((e=>e.title===t));return i&&i.actions.forEach((e=>{const t=this.getActionCallback(e.callbackId);t&&(e.callback=t.callback),n.push({icon:e.icon,callback:e.callback,singleInstanceTitle:e.singleInstanceTitle,multiInstanceTitle:e.multiInstanceTitle})})),Promise.resolve(n)}getJumpListSettings(e){return this._executor.getJumpList(e)}toUpdateActions(e,t,n,i){return i.map((i=>{const r={icon:i.icon,callback:i.callback,callbackId:Xi.generateId(),singleInstanceTitle:i.singleInstanceTitle,multiInstanceTitle:i.multiInstanceTitle,operation:t};return this.manageActionCallback(e,t,n,r),r}))}manageActionCallback(e,t,n,i){var r;const o="".concat(n,"-").concat(e);if("create"===t)this._groupActionCallbacks.has(o)||this._groupActionCallbacks.set(o,[]),this._groupActionCallbacks.get(o).push({callbackId:i.callbackId,callback:i.callback});else if("remove"===t)if(i){let e=null!==(r=this._groupActionCallbacks.get(o))&&void 0!==r?r:[];e=e.filter((e=>e.callbackId!==i.callbackId)),0===e.length?this._groupActionCallbacks.delete(o):this._groupActionCallbacks.set(o,e)}else this._groupActionCallbacks.delete(o)}registerCallbackMethod(){if(!this._registered){this._registered=!0;try{this._agm.register(Zi,((e,t)=>{const n=this.getActionCallback(e.callbackId);if(n)try{n.callback()}catch(i){this._logger.error("Unable to execute user callback for jump list action!",i)}}))}catch(e){return this._logger.error("Unable to register method ".concat(Zi," for invoking jump list action callbacks!"),e),Promise.reject(e)}}}getActionCallback(e){let t;return[...this._groupActionCallbacks.values()].forEach((n=>{const i=n.find((t=>t.callbackId===e));i&&(t=i)})),t}validateActions(e,t){if(!(t&&t.length>0))throw new Error("Category '".concat(e,"' doesn't contain any actions!"));t.forEach((t=>{if(!t.singleInstanceTitle)throw new Error("Category '".concat(e,"' contains an action with undefined singleInstanceTitle!"));if(!t.multiInstanceTitle)throw new Error("Category '".concat(e,"' contains an action with undefined multiInstanceTitle!"));if(!t.callback)throw new Error("Category '".concat(e,"' contains an action with undefined callback function!"))}))}}var tr=new er;class nr{constructor(){this.waitForTimeoutInMilliseconds=6e4,this._windows={},this._pendingWindows={},this._pendingWindowsStates={},this._registry=ki()}init(e){this._logger=e}get(e){return this._windows[e]||this._pendingWindows[e]}getIfReady(e){return this._windows[e]}get list(){return this._windows}add(e){if(this._pendingWindows[e.API.id])return void this._logger.error("trying to add window with id ".concat(e.API.id," from windowStore, which already exists"));const t="remote"===e.API.windowType;this._pendingWindows[e.API.id]=e,this._pendingWindowsStates[e.API.id]={ready:!1,urlChanged:t},this._registry.execute("on-added",e)}remove(e){delete this._windows[e.API.id],delete this._pendingWindows[e.API.id],delete this._pendingWindowsStates[e.API.id],this._registry.execute("on-removed",e)}setReadyState(e){const t=this._pendingWindowsStates[e];"undefined"!==typeof t&&(t.ready=!0,t.urlChanged&&this.markReadyToShow(e))}setUrlChangedState(e){const t=this._pendingWindowsStates[e];"undefined"!==typeof t&&(t.urlChanged=!0,t.ready&&this.markReadyToShow(e))}setCompositionChangedState(e,t){"undefined"!==typeof this._pendingWindowsStates[e]&&!1===t&&this.markReadyToShow(e)}waitFor(e){return new Promise(((t,n)=>{let i,r;const o=setTimeout((()=>{i(),r(),n('Window with id "'.concat(e,'" was not ready within ').concat(this.waitForTimeoutInMilliseconds," milliseconds."))}),this.waitForTimeoutInMilliseconds),s=this._windows[e];if(s)clearTimeout(o),t(s);else{const s=()=>{clearTimeout(o),i(),r()};i=this.onReadyWindow((n=>{n.API.id===e&&(s(),t(n))})),r=this.onRemoved((t=>{t.API.id===e&&(s(),n('Window with id "'.concat(e,'" was removed before it became ready.')))}))}}))}onReadyWindow(e){return this._registry.add("on-ready",e)}onAdded(e){return this._registry.add("on-added",e)}onRemoved(e){return this._registry.add("on-removed",e)}markReadyToShow(e){this._pendingWindows[e]&&(this._windows[e]=this._pendingWindows[e],delete this._pendingWindows[e],delete this._pendingWindowsStates[e]),this._registry.execute("on-ready",this._windows[e])}}var ir=new nr;class rr{constructor(e,t){this.windowId=e,this._categoryTitle=t.title}list(){return tr.getActions(this.windowId,this._categoryTitle)}create(e){return tr.createActions(this.windowId,this._categoryTitle,e)}remove(e){return tr.removeActions(this.windowId,this._categoryTitle,e)}}class or{constructor(e){this.windowId=e}list(){return this.getCategories()}create(e,t){return tr.createCategory(this.windowId,e,t)}remove(e){return tr.removeCategory(this.windowId,e)}async find(e){return(await this.getCategories()).find((t=>t.title===e))}async getCategories(){const e=[];return(await tr.getJumpListSettings(this.windowId)).categories.forEach((t=>{e.push({title:t.title,actions:new rr(this.windowId,t)})})),e}}class sr{constructor(e){this.windowId=e,this._categories=new or(e)}get categories(){return this._categories}async isEnabled(){return(await tr.getJumpListSettings(this.windowId)).enabled}setEnabled(e){return tr.setEnabled(this.windowId,e)}}var ar=(e,t,n,i,r,o,s,a)=>{var c,u,d,l;const h=ki(),p=()=>{const e=s();if(!e)throw new Error("To use this method you need to enable channels API - set the channels property to true when initializing the Glue42 library");return e},f=e,g=t.name,m=t.mode;let v=t.bounds,y=t.url,w=t.title,b=null!==(c=t.context)&&void 0!==c?c:{},_=t.frameColor,C=t.focus,I=null!==(u=t.neighbours)&&void 0!==u?u:{},S=t.groupId,k=t.isGroupHeaderVisible,x=t.isTabHeaderVisible,T=t.isGroupHibernated,A=t.isGroupVisible,E=null!==(d=t.isTabSelected)&&void 0!==d&&d,P=t.settings;const M=t.applicationName;let R,N=t.isVisible,O=t.isSticky,j=t.isCollapsed,D=t.state,F=t.tabGroupId,W=t.tabIndex,L=t.frameId,U=t.isLocked,B=null!==(l=t.frameButtons)&&void 0!==l?l:[],H=t.zoomFactor,G=t.placementSettings;const q=new sr(e);function z(t,i){return"undefined"===typeof t||"function"===typeof t?Xi.callbackifyPromise((()=>{if(!e)throw new Error("The window is already closed.");return n.close(wn)}),t,i):n.close(wn,t)}function V(e,t,i){if("function"===typeof t)return Xi.callbackifyPromise((()=>{if(nn(e))throw new Error("The new URL must be a non-empty string.");return n.navigate(wn,e)}),t,i);if(nn(e))throw new Error("The new URL must be a non-empty string.");return n.navigate(wn,e,t)}function J(e,t,i){return Xi.callbackifyPromise((()=>{if(!e||0===Object.keys(e).length||Object.keys(e).every((e=>!e)))throw new Error("Invalid style arguments: "+JSON.stringify(e));if(e&&void 0!==e.focus){if("boolean"!==typeof e.focus)throw new Error("Focus must be a boolean value. Currently, only `focus: true` is supported.");!1===e.focus&&console.warn("`focus: false` is not supported!")}if(e&&void 0!==e.hidden&&"boolean"!==typeof e.hidden)throw new Error("The `hidden` property must hold a boolean value.");for(const t of["minHeight","maxHeight","minWidth","maxWidth"]){const n=e,i=n[t];if(t in e){if(tn(i)){delete n[t];continue}if(!Qt(n[t]))throw new Error('"'.concat(t,'" must be a number'))}}return n.setStyle(wn,e)}),t,i)}function K(e,t,i){return Xi.callbackifyPromise((()=>n.resetButtons(wn,e)),t,i)}function $(){return n.getButtons(wn)}function Q(e,t,i){return Xi.callbackifyPromise((()=>{if("string"===typeof e){if("always"!==e)throw new Error("`onTop` must hold a `always` value.")}else if("boolean"!==typeof e)throw new Error("`onTop` must hold a boolean or `always` value.");return n.setOnTop(wn,e)}),t,i)}function Y(e,t,i){return Xi.callbackifyPromise((()=>{if(!e||Object.keys(e).every((e=>void 0===e)))throw new Error("The properties of `constraints` cannot be null or undefined.");return n.setSizeConstraints(wn,e)}),t,i)}function X(){return n.getSizeConstraints(wn)}function Z(e,t,i){return Xi.callbackifyPromise((()=>{if(tn(e))throw new Error("`newTitle` must not be null or undefined.");return e===w?Promise.resolve(wn):n.setTitle(wn,e)}),t,i)}function ee(e,t,i){return Xi.callbackifyPromise((()=>{if("boolean"!==typeof e)throw new Error("`isSticky` must hold a boolean value.");return n.setSticky(wn,e)}),t,i)}function te(e,t,i){return Xi.callbackifyPromise((()=>{if(tn(e))throw new Error("The properties of `bounds` cannot be null or undefined.");return n.moveResize(wn,e)}),t,i)}function ne(e,t,i){return Xi.callbackifyPromise((()=>{if("undefined"===typeof e||0===Object.keys(e).length)throw new Error("Button info is not available.");if(nn(e.buttonId))throw new Error("`buttonId` must not be null or undefined.");if(nn(e.imageBase64))throw new Error("`imageBase64` must not be null or undefined.");return n.addFrameButton(wn,e)}),t,i)}function ie(e,t,i){return Xi.callbackifyPromise((()=>{if(nn(e))throw new Error("`buttonId` must not be null or undefined.");return n.removeFrameButton(wn,e)}),t,i)}function re(e,t){return Xi.callbackifyPromise((()=>C?Promise.resolve(wn):n.activate(wn)),e,t)}function oe(e,t){return Xi.callbackifyPromise((()=>C?Promise.resolve(wn):n.focus(wn)),e,t)}function se(e,t){return Xi.callbackifyPromise((()=>n.maximizeRestore(wn)),e,t)}function ae(e,t){return Xi.callbackifyPromise((()=>"maximized"===D?Promise.resolve(wn):n.maximize(wn)),e,t)}function ce(e,t){return Xi.callbackifyPromise((()=>"normal"===D?Promise.resolve(wn):n.restore(wn)),e,t)}function ue(e,t){return Xi.callbackifyPromise((()=>"minimized"===D?Promise.resolve(wn):n.minimize(wn)),e,t)}function de(e,t){return Xi.callbackifyPromise((()=>j?Promise.resolve(wn):n.collapse(wn)),e,t)}function le(e,t){return Xi.callbackifyPromise((()=>j?n.expand(wn):Promise.resolve(wn)),e,t)}function he(e,t){return Xi.callbackifyPromise((()=>n.toggleCollapse(wn)),e,t)}function pe(e,t,i,r){return Xi.callbackifyPromise((()=>{if(tn(e))throw new Error("A target window is not specified - ".concat("string"===typeof e?e:JSON.stringify(e)));if("string"===typeof e){const t=ir.get(e);if(!t)throw new Error('Invalid "target" parameter or no such window. Invoked with: '.concat(e));e=t.API}return"string"===typeof t&&(t={direction:t,autoAlign:!0}),n.snap(wn,e,t)}),i,r)}function fe(e,t,i,r){return Xi.callbackifyPromise((()=>{var i;const r='Invalid "tab" parameter - must be an object with an "id" property or a string. Invoked for source window with ID:';if(tn(e)){const t="".concat(r," ").concat("string"===typeof e?e:JSON.stringify(e));throw new Error(t)}let o;if("string"===typeof e){if(o=null===(i=ir.get(e))||void 0===i?void 0:i.API,tn(o)){const e="".concat(r," ").concat("string"===typeof o?o:JSON.stringify(o));throw new Error(e)}}else{if(tn(e.id))throw new Error(r);o=e}const s={};return tn(t)||("number"===typeof t?s.index=t:(s.selected=t.selected,s.index=t.index)),n.attachTab(wn,o,s)}),i,r)}function ge(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,i=arguments.length>2?arguments[2]:void 0;return Xi.callbackifyPromise((()=>{const t={};function i(e){return void 0!==e.relativeTo}return i(e)?("string"===typeof e.relativeTo?t.relativeTo=e.relativeTo:tn(e.relativeTo.id)||(t.relativeTo=e.relativeTo.id),tn(e.relativeDirection)||(t.relativeDirection=e.relativeDirection),tn(e.width)||(t.width=e.width),tn(e.height)||(t.height=e.height)):tn(e.bounds)||(t.bounds=e.bounds),tn(e.hideTabHeader)||(t.hideTabHeader=e.hideTabHeader),n.detachTab(wn,t)}),t,i)}function me(e,t,i){return Xi.callbackifyPromise((()=>n.setVisible(wn,e)),t,i)}async function ve(e){return e&&ye(e),n.center(wn,e)}function ye(e){if("object"!==typeof e)throw Error("display argument must be a valid display object");if(!e.workArea||!e.scaleFactor)throw Error("display argument is not a valid display object")}function we(e){return n.showLoader(wn,e)}function be(){return n.hideLoader(wn)}function _e(e,t,i){return Xi.callbackifyPromise((()=>{if(tn(e))throw new Error('"context" must not be null or undefined.');return n.updateContext(wn,e,!1)}),t,i)}function Ce(e,t){return Xi.callbackifyPromise((()=>n.lock(wn)),e,t)}function Ie(e,t){return Xi.callbackifyPromise((()=>n.unlock(wn)),e,t)}function Se(e,t){return Xi.callbackifyPromise((()=>n.getIcon(wn)),e,t)}function ke(e,t,i){return Xi.callbackifyPromise((()=>{if(nn(e))throw new Error('"base64Image" must be a non-empty string.');return n.setIcon(wn,e)}),t,i)}function xe(e,t,i){return Xi.callbackifyPromise((()=>{if(nn(e))throw new Error('"frameColor" must be a non-empty string');return n.setFrameColor(wn,e)}),t,i)}function Te(e,t,i){return Xi.callbackifyPromise((()=>{if("boolean"!==typeof e)throw new Error('"toBeTabHeaderVisible" must hold a boolean value.');return n.setTabHeaderVisible(wn,e)}),t,i)}async function Ae(e){if(nn(e))throw new Error('"'.concat(e,'" must not be null or undefined'));return n.setTabTooltip(wn,e)}async function Ee(){return n.getTabTooltip(wn)}function Pe(e){return n.showPopup(wn,e)}function Me(e){return n.createFlydown(wn.id,e)}function Re(e){return n.setModalState(wn.id,e||!1)}function Ne(e,t){return Xi.callbackifyPromise((()=>n.zoomIn(wn)),e,t)}function Oe(e,t){return Xi.callbackifyPromise((()=>n.zoomOut(wn)),e,t)}function je(e,t,i){return Xi.callbackifyPromise((()=>{if(isNaN(e))throw new Error("zoomFactor is not a number");return n.setZoomFactor(wn,e)}),t,i)}function De(){return n.showDevTools(wn)}function Fe(e){return n.capture(wn,e)}function We(e,t){const i={shouldFlash:!0,mode:"auto"};return"boolean"===typeof e&&(i.shouldFlash=e),"undefined"!==typeof t&&(i.mode=t),n.flash(wn,i)}function Le(e){const t={shouldFlash:!0};return"boolean"===typeof e&&(t.shouldFlash=e),n.flashTab(wn,t)}function Ue(e){return n.print(wn,e)}function Be(e){return n.printToPDF(wn,e)}function He(t){return new Promise(((i,r)=>{const o=bt(((t,n,r)=>{e===t.id&&(o(),i(wn))}));n.ungroup(wn,t).catch((e=>{o(),r(e)}))}))}function Ge(e){return n.place(wn,e)}function qe(e){return n.refresh(wn,e)}function ze(e,t){return n.download(wn,e,t)}function Ve(e){return n.configureWindow(wn,e)}function Je(){return n.getWindowConfiguration(wn)}function Ke(){return n.getDockingPlacement(wn)}function $e(e){return n.dock(wn,e)}async function Qe(e){return n.clone(wn,e)}function Ye(e){if(!on(e))throw new Error("callback should be a function");return e(wn.title,wn),Et("onTitleChanged",e)}function Xe(t){if(!on(t))throw new Error("callback should be a function");return void 0===e&&t(wn),h.add("onClose",t)}function Ze(e){return Et("onUrlChanged",e)}function et(e){return Et("onFrameButtonAdded",e)}function tt(e){return Et("onFrameButtonRemoved",e)}function nt(e){return Et("onFrameButtonClicked",e)}function it(e){if(!on(e))throw new Error("callback should be a function");return j&&e(wn),h.add("collapsed",e)}function rt(e){if(!on(e))throw new Error("callback should be a function");return j||e(wn),h.add("expanded",e)}function ot(e){return"maximized"===D?Et("maximized",e,[wn]):Et("maximized",e)}function st(e){return"minimized"===D?Et("minimized",e,[wn]):Et("minimized",e)}function at(e){return"normal"===D?Et("normal",e,[wn]):Et("normal",e)}function ct(e){return Et("attached",e)}function ut(e){return Et("detached",e)}function dt(e){return Et("visibility-changed",e)}function lt(e){return Et("context-updated",e)}function ht(e){return Et("lock-changed",e)}function pt(e){return Et("bounds-changed",e)}function ft(e){return Et("focus-changed",e)}function gt(e){return Et("sticky-changed",e)}function mt(e){return Et("frame-color-changed",e)}function vt(e){return Et("tab-header-visibility-changed",e)}function yt(e){return Et("window-attached",e)}function wt(e){return Et("window-detached",e)}function bt(e){return Et("group-changed",e)}function _t(e){return Et("tab-selection-changed",e)}function Ct(e){if(!on(e))throw new Error("callback must be a function");const t=(t,n,i)=>{const r=e(i);(null===r||void 0===r?void 0:r.then)?r.then(t).catch(n):t()};return n.onClosing(t,wn)}function It(e){if(!on(e))throw new Error("callback must be a function");const t=(t,n,i)=>{const r=e(i);(null===r||void 0===r?void 0:r.then)?r.then(t).catch(n):t()};return n.onRefreshing(t,wn)}function St(e){if(!on(e))throw new Error("callback must be a function");const t=(t,n,i,r)=>{const o=e(r);(null===o||void 0===o?void 0:o.then)?o.then(t).catch(n):t()};return n.onNavigating(t,wn)}function kt(e){return Et("zoom-factor-changed",e)}function xt(e){return Et("placementSettingsChanged",e)}function Tt(e){return Et("neighbours-changed",e)}function At(e){return Et("docking-changed",e)}function Et(e,t,n){if(!on(t))throw new Error("callback must be a function");return h.add(e,t,n)}function Pt(){return n.goBack(wn)}function Mt(){return n.goForward(wn)}function Rt(e){return n.startDrag(wn,e)}function Nt(e){if((null===e||void 0===e?void 0:e.timerDuration)&&isNaN(null===e||void 0===e?void 0:e.timerDuration))throw new Error("timerDuration must be a number");if((null===e||void 0===e?void 0:e.showTimer)&&"boolean"!==typeof(null===e||void 0===e?void 0:e.showTimer))throw new Error("showTimer must be a boolean");return n.showDialog(wn,e)}function Ot(e){y=e.url,w=e.title,b=e.context||{},v=e.bounds,_=e.frameColor,C=e.focus,I=e.neighbours||{},S=e.groupId,k=e.isGroupHeaderVisible,x=e.isTabHeaderVisible,T=e.isGroupHibernated,A=e.isGroupVisible,E=e.isTabSelected,P=e.settings,N=e.isVisible,O=e.isSticky,j=e.isCollapsed,D=e.state,F=e.tabGroupId,L=e.frameId,U=e.isLocked,H=e.zoomFactor,G=e.placementSettings}function jt(e){w=e,n.finished.finally((()=>{h.execute("onTitleChanged",e,wn)}))}function Dt(e){y=e,h.execute("onUrlChanged",e,wn)}function Ft(e){e!==N&&(N=e,h.execute("visibility-changed",wn))}function Wt(e){P=e,h.execute("settings-changed",wn)}function Lt(e){b=e,h.execute("context-updated",b,wn)}function Ut(){void 0!==e&&(h.execute("onClose",wn),e=void 0)}function Bt(e){const t=["buttonId","imageBase64","order","tooltip"].reduce(((t,n)=>(t[n]=e[n],t)),{});-1===B.map((e=>e.buttonId)).indexOf(e.buttonId)&&B.push(t),h.execute("onFrameButtonAdded",t,wn)}function Ht(e){let t;B=B.reduce(((n,i)=>(i.buttonId===e?t=i:n.push(i),n)),[]),void 0!==t&&h.execute("onFrameButtonRemoved",t,wn)}function Gt(e){const t=B.filter((t=>t.buttonId===e.buttonId));t.length>0&&h.execute("onFrameButtonClicked",t[0],wn)}async function qt(e){"collapsed"===e?j=!0:"expanded"===e?j=!1:D=e,await n.finished,h.execute(e,wn)}function zt(e){U=e,h.execute("lock-changed",wn)}function Vt(e){v.top===e.top&&v.left===e.left&&v.width===e.width&&v.height===e.height||(v=e,h.execute("bounds-changed",wn))}function Jt(e){C=e,h.execute("focus-changed",wn)}function Kt(e){O=e,h.execute("sticky-changed",e,wn)}function $t(e){_=e,h.execute("frame-color-changed",wn)}function Yt(e,t,n){F=e,L=t,x=n,h.execute("frame-attached",wn)}function Xt(e){I=e.neighbors||{},W=e.index,h.execute("neighbours-changed",I,wn)}function Zt(e){k=e}function en(e){x!==e&&(x=e,h.execute("tab-header-visibility-changed",wn))}async function rn(t,i){let r;t===e?(E=!0,r=wn):(E=!1,r=ir.get(t)?ir.get(t).API:void 0);const o=ir.get(i)?ir.get(i).API:void 0;await n.finished,h.execute("tab-selection-changed",r,o,wn)}async function sn(e,t,i,r,o){F=e,x=i,L=t,"undefined"!==typeof r&&(U=r),await n.finished,o.forEach((e=>{e.Events.handleWindowAttached(wn)})),h.execute("attached",wn)}function an(e){h.execute("window-attached",e)}async function cn(e,t){F=void 0,E=!1,"undefined"!==typeof e&&(U=e),await n.finished,t.forEach((e=>{e.Events.handleWindowDetached(wn)})),h.execute("detached",wn)}function un(e){h.execute("window-detached",e)}function dn(e){H=e,h.execute("zoom-factor-changed",wn)}function ln(e){let t;const n=e;if(n.display){const e=o();if(e){const i=n.display-1;t=new Promise(((t,n)=>{e.all().then((e=>{const n=e.find((e=>e.index===i));t(n)})).catch(n)}))}else t=Promise.resolve(void 0)}else t=Promise.resolve(void 0);t.then((e=>{n.display=e,G=n,h.execute("placementSettingsChanged",wn)}))}function hn(e){h.execute("docking-changed",wn,{docked:e.docked,position:e.position,claimScreenArea:e.claimScreenArea})}function pn(e,t){R=e,S=null===e||void 0===e?void 0:e.id,tn(e)||tn(t)||h.execute("group-changed",wn,e,t)}function fn(){const e=ir.list;return"tab"!==m.toLowerCase()?[]:Object.keys(e).reduce(((t,n)=>{const i=e[n];return i&&i.API.tabGroupId&&"undefined"!==typeof i.API.tabGroupId&&"undefined"!==typeof wn.tabGroupId&&i.API.tabGroupId===wn.tabGroupId&&t.push(i.API),t}),[]).sort(((e,t)=>{if(e.tabIndex!==t.tabIndex){if(-1===e.tabIndex)return Number.MAX_SAFE_INTEGER;if(-1===t.tabIndex)return Number.MIN_SAFE_INTEGER}return e.tabIndex-t.tabIndex}))}function gn(e){return e.reduce(((e,t)=>{const n=ir.get(t);return n&&e.push(n.API),e}),[])}function mn(e){const t=I[e];if("undefined"!==typeof t)return gn(t)}function vn(){var t;if(M)return M;if(b._APPLICATION_NAME)return b._APPLICATION_NAME;if(b&&b._t42&&b._t42.application)return b._t42.application;const n=yn();if(n&&n.applicationName)return n.applicationName;const i=r();if(i){const n=i.instances().find((t=>e===t.id));if(n)return null===(t=n.application)||void 0===t?void 0:t.name}}function yn(){if("undefined"!==typeof window&&window.glue42gd&&window.glue42gd.getWindowInfo){const t=window.glue42gd.getWindowInfo(e);return t||void 0}}const wn={get id(){return f},get name(){return g},get application(){const e=r(),t=vn();if(t&&e)return e.application(t)},get hostInstance(){return n.hostInstance},get interopInstance(){const e=a.servers().find((e=>e.windowId===this.id));if(e)return e;{const e=vn();if(e)return{application:e}}},get agmInstance(){return wn.interopInstance},get url(){return y},get title(){return w},get windowStyleAttributes(){return P},get settings(){return P},get tabGroupId(){return"tab"===m.toLowerCase()?F:void 0},get tabIndex(){return"tab"===m.toLowerCase()?W:void 0},get frameId(){return L},get frameButtons(){return B.sort(((e,t)=>e.order-t.order))},get mode(){return m},get state(){return D},get isCollapsed(){return j},get isVisible(){return N},get isLocked(){return U},get context(){return b},get bounds(){return v},get minHeight(){return P.minHeight},get maxHeight(){return P.maxHeight},get minWidth(){return P.minWidth},get maxWidth(){return P.maxWidth},get isFocused(){return C},get frameColor(){return _},get opened(){return void 0!==wn.id},get group(){return R},get groupId(){return S},get isSticky(){return O},get topNeighbours(){return mn("top")},get leftNeighbours(){return mn("left")},get rightNeighbours(){return mn("right")},get bottomNeighbours(){return mn("bottom")},get isGroupHeaderVisible(){return k},get activityId(){if(b._t42)return b._t42.activityId;const e=yn();return e?e.activityId:void 0},get activityWindowId(){if(b._t42)return b._t42.activityWindowId;const e=yn();return e?e.activityWindowId:void 0},get windowType(){return t.windowType||"electron"},get zoomFactor(){return H},get screen(){if("undefined"!==typeof window&&window.glue42gd)return Xi.getMonitor(wn.bounds,window.glue42gd.monitors)},get placementSettings(){return Object.assign({},G)},get jumpList(){return q},maximize:ae,restore:ce,minimize:ue,maximizeRestore:se,collapse:de,expand:le,toggleCollapse:he,focus:oe,activate:re,moveResize:te,setTitle:Z,setStyle:J,setOnTop:Q,resetButtons:K,getButtons:$,setSizeConstraints:Y,getSizeConstraints:X,navigate:V,addFrameButton:ne,removeFrameButton:ie,setVisible:me,show:()=>me(!0),hide:()=>me(!1),center:ve,close:z,snap:pe,showLoader:we,hideLoader:be,updateContext:_e,lock:Ce,unlock:Ie,getIcon:Se,setIcon:ke,setFrameColor:xe,setTabTooltip:Ae,getTabTooltip:Ee,attachTab:fe,detachTab:ge,setTabHeaderVisible:Te,showPopup:Pe,createFlydown:Me,setModalState:Re,setZoomFactor:je,zoomIn:Ne,zoomOut:Oe,showDevTools:De,capture:Fe,flash:We,flashTab:Le,setSticky:ee,print:Ue,printToPDF:Be,place:Ge,ungroup:He,refresh:qe,goBack:Pt,goForward:Mt,download:ze,configure:Ve,getConfiguration:Je,getDockingPlacement:Ke,dock:$e,clone:Qe,getChannel:async()=>{var e;return null===(e=(await p().getWindowsWithChannels({windowIds:[f]}))[0])||void 0===e?void 0:e.channel},startDrag:Rt,showDialog:Nt,onClose:Xe,onUrlChanged:Ze,onTitleChanged:Ye,onFrameButtonAdded:et,onFrameButtonRemoved:tt,onFrameButtonClicked:nt,onCollapsed:it,onExpanded:rt,onMinimized:st,onMaximized:ot,onNormal:at,onAttached:ct,onDetached:ut,onVisibilityChanged:dt,onContextUpdated:lt,onLockingChanged:ht,onBoundsChanged:pt,onFrameColorChanged:mt,onFocusChanged:ft,onStickyChanged:gt,onGroupChanged:bt,onWindowAttached:yt,onWindowDetached:wt,onTabSelectionChanged:_t,onTabHeaderVisibilityChanged:vt,onClosing:Ct,onRefreshing:It,onZoomFactorChanged:kt,onPlacementSettingsChanged:xt,onNeighboursChanged:Tt,onDockingChanged:At,onNavigating:St,get tabs(){return fn()},get isTabHeaderVisible(){return x},get isTabSelected(){return E},getURL:()=>Promise.resolve(y),getTitle:()=>Promise.resolve(w),getBounds:()=>Promise.resolve(v),getContext:()=>Promise.resolve(b),setContext(e){if(tn(e))throw new Error('"context" must not be null or undefined, set to empty object if you want to clear it out.');return n.updateContext(wn,e,!0)},getDisplay:()=>o().getByWindowId(e),resizeTo:(e,t)=>te({width:e,height:t}),moveTo:(e,t)=>te({top:e,left:t}),async getParentWindow(){var e;const t=P.parentInstanceId;if(t)return null===(e=ir.list[t])||void 0===e?void 0:e.API},getChildWindows:async()=>Object.keys(ir.list).map((e=>ir.list[e].API)).filter((t=>t.settings.parentInstanceId===e)),joinChannel:t=>p().join(t,e),leaveChannel:()=>p().leave(e)};return{API:wn,Events:{handleUpdate:Ot,handleWindowClose:Ut,handleWindowChangeState:qt,handleTitleChanged:jt,handleVisibilityChanged:Ft,handleUrlChanged:Dt,handleWindowSettingsChanged:Wt,handleContextUpdated:Lt,handleFrameIsLockedChanged:zt,handleBoundsChanged:Vt,handleFocusChanged:Jt,handleFrameButtonAdded:Bt,handleFrameButtonRemoved:Ht,handleFrameButtonClicked:Gt,handleFrameColorChanged:$t,handleFrameAttached:Yt,handleFrameSelectionChanged:rn,handleCompositionChanged:Xt,handleGroupHeaderVisibilityChanged:Zt,handleTabHeaderVisibilityChanged:en,handleGroupChanged:pn,handleAttached:sn,handleDetached:cn,handleWindowAttached:an,handleWindowDetached:un,handleZoomFactorChanged:dn,handleIsStickyChanged:Kt,handlePlacementSettingsChanged:ln,handleDockingChanged:hn},GroupCreationArgs:{get isGroupHibernated(){return T},get isGroupVisible(){return A}}}};function cr(e,t){const n=ir.list;return Object.keys(n).reduce(((i,r)=>{const o=n[r];return o.API.tabGroupId===t&&o.API.id!==e&&i.push(o),i}),[])}function ur(e){return!(e&&!Object.keys(e).every((t=>void 0===e[t])))}class dr{constructor(){this.GroupMethodName="T42.Group.Execute",this.WndMethodName="T42.Wnd.Execute",this._registry=ki(),this._finished=Promise.resolve(),this.unsubCallbacks={}}get hostInstance(){return this.agmTarget}get finished(){return this._finished}get configuration(){return this._configuration}init(e,t){this.agm=e,this.agmTarget=t,this._registry.add("event",(e=>{"Closed"===e.type&&Object.keys(this.unsubCallbacks).forEach((t=>{t.startsWith(e.windowId)&&delete this.unsubCallbacks[t]}))}))}setConfiguration(e){this._configuration=e}handleEvent(e){this._registry.execute("event",e)}async open(e){let t;this._finished=new Promise((e=>{t=e}));try{const t=await this.agm.invoke("T42.Wnd.Create",e,this.agmTarget);if(void 0===t.returned)throw new Error("failed to execute T42.Wnd.Create - unknown reason");const n=t.returned.id,i=await ir.waitFor(n);return this.configuration&&!this.configuration.windowAvailableOnURLChanged||setTimeout((()=>{"electron"===i.API.windowType&&i.Events.handleUrlChanged(i.API.url)}),0),i.API}catch(n){throw n}finally{t()}}async close(e,t){const n=await this.execute("close",{windowId:e.id,options:t},"Closed");return t?n.closed:e}async navigate(e,t,n){return await this.execute("navigate",{windowId:e.id,options:{url:t,urlLoadOptions:n}},"UrlChanged"),e}async setStyle(e,t){var n;const i=[],r=e=>i.push(e);if(tn(t.focus)||e.isFocused||r(e.focus()),!tn(t.hidden)){const n=!t.hidden;r(e.setVisible(n))}if(tn(t.onTop)||r(e.setOnTop(t.onTop)),!nn(t.tabTooltip)||!nn(t.tabToolTip)){const i=null!==(n=t.tabTooltip)&&void 0!==n?n:t.tabToolTip;r(e.setTabTooltip(i))}nn(t.tabTitle)||r(this.execute("setTabTitle",{windowId:e.id,options:{tabTitle:t.tabTitle}}));const o={minHeight:t.minHeight,minWidth:t.minWidth,maxHeight:t.maxHeight,maxWidth:t.maxWidth};!ur(o)&&r(e.setSizeConstraints(o));const s={allowClose:t.allowClose,allowCollapse:t.allowCollapse,allowLockUnlock:t.allowLockUnlock,allowMaximize:t.allowMaximize,allowMinimize:t.allowMinimize};return!ur(s)&&r(e.resetButtons(s)),await Promise.all(i),e}async setSizeConstraints(e,t){return await this.execute("setSizeConstraints",{windowId:e.id,options:t}),e}async getSizeConstraints(e){return await this.execute("getSizeConstraints",{windowId:e.id})}async setTabTooltip(e,t){return await this.execute("setTabTooltip",{windowId:e.id,options:{tabTooltip:t}}),e}async getTabTooltip(e){return(await this.execute("getTabTooltip",{windowId:e.id})).tabTooltip}async resetButtons(e,t){return await this.execute("resetButtons",{windowId:e.id,options:t}),e}async getButtons(e){return await this.execute("getButtons",{windowId:e.id})}async setOnTop(e,t){return await this.execute("setOnTop",{windowId:e.id,options:{onTop:t}}),e}async setTitle(e,t){const n={windowId:e.id,options:{title:t}};return await this.execute("setTitle",n,"TitleChanged"),e}async setSticky(e,t){const n={windowId:e.id,options:{isSticky:t}};return await this.execute("setSticky",n),e}async moveResize(e,t){return"undefined"!==typeof window&&window.glueDesktop.versionNum<31200?new Promise((async(n,i)=>{const r=this.areBoundsEqual(t,e);let o=!1;const s=()=>{o||(o=!0,c&&(c(),c=void 0),n(e),a&&(clearTimeout(a),a=void 0))};let a,c;r||(c=e.onBoundsChanged((e=>{this.areBoundsEqual(t,e)&&s()})));try{await this.execute("moveResize",{windowId:e.id,options:{bounds:t}})}catch(u){return void i(u)}r?s():a=setTimeout((()=>{s()}),1e3)})):(await this.execute("moveResize",{windowId:e.id,options:{bounds:t}}),e)}async addFrameButton(e,t){return await this.execute("addButton",{windowId:e.id,options:t},"ButtonAdded"),e}async removeFrameButton(e,t){return await this.execute("removeButton",{windowId:e.id,options:t},"ButtonRemoved"),e}async activate(e){let t;try{const n=new Promise(((n,i)=>{t=e.onFocusChanged((()=>{n()}))}));return await Promise.all([this.execute("activate",{windowId:e.id},"FocusChanged"),n]),e}catch(n){throw n}finally{t&&t()}}async focus(e){let t;try{const n=new Promise(((n,i)=>{t=e.onFocusChanged((()=>{n()}))}));return await Promise.all([this.execute("focus",{windowId:e.id},"FocusChanged"),n]),e}catch(n){throw n}finally{t&&t()}}async maximizeRestore(e){return await this.execute("maximizeRestore",{windowId:e.id},"StateChanged"),e}async maximize(e){return await this.execute("maximize",{windowId:e.id},"StateChanged"),e}async restore(e){return await this.execute("restore",{windowId:e.id},"StateChanged"),e}async minimize(e){return await this.execute("minimize",{windowId:e.id},"StateChanged"),e}async collapse(e){return await this.execute("collapse",{windowId:e.id},"StateChanged"),e}async expand(e){return await this.execute("expand",{windowId:e.id},"StateChanged"),e}async toggleCollapse(e){return await this.execute("toggleCollapse",{windowId:e.id},"StateChanged"),e}async snap(e,t,n){const i={targetWindowId:t.id};return i.snappingEdge=n.direction,i.autoAlign=n.autoAlign,await this.execute("snap",{windowId:e.id,options:i},"CompositionChanged","CompositionChanged-".concat(t.id)),e}async attachTab(e,t,n){return await this.execute("attachTab",{windowId:e.id,options:{index:n,sourceWindowId:t.id,targetWindowId:e.id}},"WindowFrameAdded-".concat(t.id),"WindowFrameRemoved-".concat(t.id)),e}async detachTab(e,t){const n=["WindowFrameRemoved","WindowFrameAdded"];return tn(null===t||void 0===t?void 0:t.relativeTo)?n.push("BoundsChanged"):(n.push("CompositionChanged"),n.push("CompositionChanged-".concat(t.relativeTo))),await this.execute("detachTab",{windowId:e.id,options:t},...n),e}async setVisible(e){let t;return t=arguments.length>1&&void 0!==arguments[1]&&!arguments[1]?"hide":"show",await this.execute(t,{windowId:e.id},"VisibilityChanged"),e}async center(e,t){return await this.execute("center",{windowId:e.id,options:t}),e}async showLoader(e,t){return await this.execute("showLoadingAnimation",{windowId:e.id,options:t}),e}async hideLoader(e){return await this.execute("hideLoadingAnimation",{windowId:e.id}),e}async updateContext(e,t,n){let i;try{const r=this.swapUndefinedToNull(t),o=new Promise(((t,n)=>{i=e.onContextUpdated((()=>{t()}))}));return await Promise.all([this.execute("updateContext",{windowId:e.id,context:r,replace:n}),o]),e}catch(r){throw r}finally{i&&i()}}async lock(e){return await this.execute("lockUnlock",{windowId:e.id,options:{lock:!0}},"FrameIsLockedChanged"),e}async unlock(e){return await this.execute("lockUnlock",{windowId:e.id,options:{lock:!1}},"FrameIsLockedChanged"),e}async getIcon(e){return(await this.execute("getIcon",{windowId:e.id,options:{}})).icon}async setIcon(e,t){return await this.execute("setIcon",{windowId:e.id,options:{dataURL:t}}),e}async setFrameColor(e,t){return await this.execute("setFrameColor",{windowId:e.id,options:{frameColor:t}},"FrameColorChanged"),e}async setTabHeaderVisible(e,t){return await this.execute("setTabHeaderVisible",{windowId:e.id,options:{toShow:t}},"TabHeaderVisibilityChanged"),e}async showPopup(e,t){if(!t)throw new Error("The options object is not valid!");const n={...t};n.targetLocation||(n.targetLocation="bottom");const i={...n,popupBounds:n.size,targetId:e.id,popupId:n.windowId};return await this.execute("showPopupWindow",{windowId:e.id,options:i}),e}async createFlydown(e,t){if(!t)throw new Error("The options object is not valid!");const n={...t};n.horizontalOffset||(n.horizontalOffset=0),n.verticalOffset||(n.verticalOffset=0);const i=this.reformatFlydownOptions(e,n);return this.execute("setFlydownArea",{windowId:e,options:i}).then((()=>{const e=i.zones.map((e=>e.id));return i.zones.forEach((e=>{let n="function"===typeof e.flydownSize?e.flydownSize:()=>e.flydownSize;t.size instanceof Function&&e.flydownSize&&(n=async(n,i)=>{let r;return t.size instanceof Function&&(r=await t.size(n,i)),e.flydownSize instanceof Function&&e.flydownSize!==t.size?await e.flydownSize(n,i)||r:r||e.flydownSize}),this._registry.clearKey("".concat(i.targetId,"_").concat(e.id)),this._registry.add("".concat(i.targetId,"_").concat(e.id),n)})),{destroy:()=>this.clearFlydownArea(i.targetId,e),options:n}}))}async setModalState(e,t){return this.execute("setModalState",{windowId:e,options:{isModal:t}})}async autoArrange(e){return this.execute("autoArrange",{options:{displayId:e}})}async handleFlydownBoundsRequested(e,t){const n=()=>t.cancel=!0,i={zoneId:t.flydownId,flydownWindowBounds:t.flydownWindowBounds,flydownWindowId:t.flydownWindowId},r=await Promise.all(this._registry.execute("".concat(e,"_").concat(t.flydownId),i,n));if(1===r.length){const e={height:0,width:0,top:0,left:0},n="object"!==typeof r[0]||Array.isArray(r[0])?e:r[0];return{...t,flydownWindowBounds:n}}}async handleOnEventRequested(e,t){var n;const i=null!==(n=this.unsubCallbacks[e])&&void 0!==n?n:[];let r=!1;const o=[];return await Promise.all(i.map((e=>new Promise(((n,i)=>{e((()=>{n()}),(()=>{i()}),(e=>{r=!0,o.push(e)}),t)}))))),{prevented:r,preventArgs:o}}async zoomIn(e){return await this.execute("zoomIn",{windowId:e.id}),e}async zoomOut(e){return await this.execute("zoomOut",{windowId:e.id}),e}async setZoomFactor(e,t){return await this.execute("setZoomFactor",{windowId:e.id,options:{zoomFactor:t}}),e}async showDevTools(e){return await this.execute("showDevTools",{windowId:e.id}),e}async capture(e,t){return(await this.execute("captureScreenshot",{windowId:e.id,options:{...t}})).data}async captureGroup(e,t){return(await this.execute("captureGroupScreenshot",{windowId:e[0],options:{groupWindowIds:e,...t}})).data}async flash(e,t){return await this.execute("flash",{windowId:e.id,options:{...t}}),e}async flashTab(e,t){return await this.execute("flashTab",{windowId:e.id,options:{...t}}),e}async configure(e,t){return this.execute("configure",{windowId:e,options:{...t}})}async print(e,t){return await this.execute("print",{windowId:e.id,options:{...t}}),e}async printToPDF(e,t){return(await this.execute("printToPDF",{windowId:e.id,options:{...t}})).filePath}async place(e,t){const n={...t};return t.display&&"current"!==t.display||(n.display=await e.getDisplay()),n.display&&"string"!==typeof n.display&&"number"!==typeof n.display&&(n.display=n.display.index+1),this.execute("place",{windowId:e.id,options:{...n}})}async refresh(e,t){return await this.execute("refresh",{windowId:e.id,options:{ignoreCache:t}}),e}async download(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};n.enableDownloadBar=!n.silent;const i=await this.execute("downloadURL",{windowId:e.id,options:{url:t,options:n}});return{url:t,path:i.fullPath,size:i.fileSize}}async configureWindow(e,t){return await this.execute("configureWindow",{windowId:e.id,options:t}),e}async getWindowConfiguration(e){return await this.execute("getWindowConfiguration",{windowId:e.id})}async startDrag(e,t){return await this.execute("startDrag",{windowId:e.id,options:t}),e}showDialog(e,t){return new Promise(((n,i)=>{const r=Xi.generateId(),o=this._registry.add("event",(t=>{if("DialogResult"===t.type&&t.windowId===e.id&&t.data.token===r){o();const e=t.data;"status"in e&&("failed"===e.status?i(e.message):"successful"===e.status&&n(e.result))}}));this.execute("showDialog",{windowId:e.id,options:Object.assign({},{...t},{token:r})})}))}async execute(e,t){for(var n=arguments.length,i=new Array(n>2?n-2:0),r=2;r2?n-2:0),r=2;r{t.startsWith(e)&&delete this.unsubCallbacks[t]}))}nonWindowHandlers(e,t,n){return this.nonWindowHandlersCore(t,n,!1,e)}nonWindowHandlersCore(e,t,n,i){const r="".concat(e,"-").concat(t),o=()=>{var o;if(this.unsubCallbacks[r]){const e=this.unsubCallbacks[r];this.unsubCallbacks[r]=e.filter((e=>e!==i)),0===this.unsubCallbacks[r].length&&delete this.unsubCallbacks[r]}if(0===(null!==(o=this.unsubCallbacks[r])&&void 0!==o?o:[]).length){const i={unsubscribe:!0};n?this.executeGroup(t,{groupId:e,options:i}):this.execute(t,{windowId:e,options:i})}};return this.unsubCallbacks[r]?(this.unsubCallbacks[r].push(i),o):(this.unsubCallbacks[r]=[i],n?this.executeGroup(t,{groupId:e}):this.execute(t,{windowId:e}),o)}reformatFlydownOptions(e,t){const n=(e,n)=>{if(t[n]&&(void 0===e[n]||null===e[n])){const i=t[n];e[n]=i}},i=t.zones.map((e=>(n(e,"windowId"),n(e,"targetLocation"),!t.size||void 0!==e.flydownSize&&null!==e.flydownSize||(e.flydownSize=t.size),e.flydownBounds=e.flydownSize,e.flydownId=e.windowId,e.targetLocation||(e.targetLocation="bottom"),e)));return{...t,zones:i,targetId:e,flydownBounds:t.size,flydownActiveArea:t.activeArea}}clearFlydownArea(e,t){return this.execute("clearFlydownWindowArea",{windowId:e,options:{}}).then((()=>{t.forEach((t=>{this._registry.clearKey("".concat(e,"_").concat(t))}))}))}executeWithoutToken(e){const t=[];for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r!tn(e))).map((n=>new Promise((i=>{const[r,o=e.windowId]=n.split("-");t.push(this._registry.add("event",(e=>{e.type===r&&e.windowId===o&&i()})))})))),s=new Promise(((t,n)=>{this.agm.invoke("T42.Wnd.Execute",e,this.agmTarget).then((e=>{e.returned&&e.returned.errorMsg?n(e):t(e.returned)})).catch((e=>n(e)))}));return Promise.all([s,...o]).then((e=>e[0])).finally((()=>{t.forEach((e=>e()))}))}async executeCore(e,t,n){const i={...n,command:t};let r;this._finished=new Promise((e=>{r=e}));try{if("undefined"!==typeof window&&window.glueDesktop.versionNum<31200){for(var o=arguments.length,s=new Array(o>3?o-3:0),a=3;a{n=this._registry.add("event",(t=>{t.token===i&&e()}))})),o=new Promise(((n,r)=>{t.token=i,this.agm.invoke(e,t,this.agmTarget).then((e=>{e.returned&&e.returned.errorMsg?r(e):n(e.returned)})).catch((e=>{r(e)}))}));return(await Promise.all([o,r]))[0]}catch(i){throw i}finally{n&&n()}}areBoundsEqual(e,t){const n=t.bounds,i=t.settings;let r=e.height,o=e.width;e.heighti.maxHeight&&(r=i.maxHeight),e.widthi.maxWidth&&(o=i.maxWidth);const s=!r||n.height===r,a=!o||n.width===o,c=!e.left||n.left===e.left,u=!e.top||n.top===e.top;return s&&a&&c&&u}swapUndefinedToNull(e){try{const t={};for(const n of Object.keys(e)){let i=e[n];"undefined"===typeof i&&(i=null),t[n]=i}return t}catch{return e}}}var lr=new dr;class hr{constructor(e,t,n,i,r,o){this._registry=ki(),this._waitTimeout=1e4,this._agm=e,this._logger=t.subLogger("gd-env"),this._windowId=o,this._appManagerGetter=n,this._displayAPIGetter=i,this._channelsAPIGetter=r}init(){return new Promise(((e,t)=>{this._agm.register("T42.Wnd.OnEventWithResponse",((e,t)=>this.respondToEvent(e))),new Promise(((n,i)=>{this._agm.subscribe("T42.Wnd.OnEvent",{waitTimeoutMs:this._waitTimeout,target:"best",arguments:{withConfig:!0},onData:t=>{if("Configuration"===t.data.type)return this._configuration=t.data,void lr.setConfiguration(this._configuration);this.updateWindow(t.data,e),lr.handleEvent(t.data)},onConnected:e=>{this._agmInstance=e,lr.init(this._agm,this._agmInstance)}}).catch((e=>{var n;const i="".concat(null===(n=null===e||void 0===e?void 0:e.method)||void 0===n?void 0:n.name," - ").concat(JSON.stringify(null===e||void 0===e?void 0:e.called_with)," - ").concat(null===e||void 0===e?void 0:e.message);t(new Error(i))}))}))}))}get executor(){return lr}open(e,t,n){n=n||{};const i={...n};return void 0!==i.relativeTo&&"string"!==typeof i.relativeTo&&(i.relativeTo=i.relativeTo.id||""),i.name=e,i.url=t,i.windowState=n.windowState||n.state,delete i.state,this.executor.open(i)}createFlydown(e,t){return this.executor.createFlydown(e,t)}async showPopup(e,t){const n=ir.get(e);await this.executor.showPopup(n.API,t)}tabAttached(e){return this._registry.add("tab-attached",e)}tabDetached(e){return this._registry.add("tab-detached",e)}onWindowFrameColorChanged(e){return this._registry.add("frame-color-changed",e)}onEvent(e){return this._registry.add("window-event",e)}my(){return this._windowId}execute(e,t,n){return this._agm.invoke("T42.Wnd.Execute",{command:e,options:n,windowId:t})}onCompositionChanged(e){return this._registry.add("composition-changed",e)}onGroupHeaderVisibilityChanged(e){return this._registry.add("group-header-changed",e)}onGroupVisibilityChanged(e){return this._registry.add("group-visibility-changed",e)}onGroupStateChanged(e){return this._registry.add("group-state-changed",e)}onWindowGotFocus(e){return this._registry.add("got-focus",e)}onWindowLostFocus(e){return this._registry.add("lost-focus",e)}onWindowsAutoArrangeChanged(e){return this._registry.add("windows-auto-arranged-changed",e)}respondToEvent(e){return"ShowFlydownBoundsRequested"===e.type?this.executor.handleFlydownBoundsRequested(e.data.windowId,e.data):"OnClosing"===e.type||"OnRefreshing"===e.type||"OnNavigating"===e.type?this.executor.handleOnEventRequested(e.data.callbackId,e.data.args):Promise.reject("There isn't a handler for ".concat(e.type))}updateWindow(e,t){var n;const i=this.getExtendedStreamEvent(e);if("Snapshot"===e.type)return e.windows.forEach((e=>{const t=ir.get(e.id);if(t)t.Events.handleUpdate(this.mapToWindowConstructorOptions(e)),t.GroupCreationArgs=this.mapToGroupCreationArgs(e);else{const t=this.createWindow(e.id,e);ir.markReadyToShow(t.API.id)}this._registry.execute("window-event",i)})),void t(this);if("CommandExecuted"===e.type)return void this._registry.execute("window-event",i);if("Created"===e.type){const t=e,n=this.createWindow(t.windowId,t.data||{});return ir.setReadyState(n.API.id),void this._registry.execute("window-event",i)}if("OnGroupVisibilityChanged"===e.type){const t=e;return this._registry.execute("group-visibility-changed",t.data),void this._registry.execute("window-event",e)}if("OnGroupStateChanged"===e.type){const t=e;return this._registry.execute("group-state-changed",t.data),void this._registry.execute("window-event",e)}if("OnWindowsAutoArrangeChanged"===e.type){const t=e;return this._registry.execute("windows-auto-arranged-changed",t.data),void this._registry.execute("window-event",e)}const r=ir.get(e.windowId);if(!r)return void this._logger.error("received update for unknown window. Stream:', ".concat(JSON.stringify(e,null,4)));const o=r.API,s=r.Events;if("BoundsChanged"===e.type){const t=e;s.handleBoundsChanged(t.data)}if("UrlChanged"===e.type){const t=e;ir.setUrlChangedState(t.windowId),s.handleUrlChanged(t.data)}if("TitleChanged"===e.type){const t=e;s.handleTitleChanged(t.data)}if("IsStickyChanged"===e.type){const t=e;s.handleIsStickyChanged(t.data)}if("VisibilityChanged"===e.type&&s.handleVisibilityChanged(e.data),"ContextChanged"===e.type&&s.handleContextUpdated(e.data),"StateChanged"===e.type&&s.handleWindowChangeState(e.data),"FrameColorChanged"===e.type&&(s.handleFrameColorChanged(e.data),this._registry.execute("frame-color-changed",o)),"CompositionChanged"===e.type){const t=e;s.handleCompositionChanged(t.data),ir.setCompositionChangedState(t.data.windowId,null===(n=this._configuration)||void 0===n?void 0:n.windowAvailableOnURLChanged),this._registry.execute("composition-changed",t.data)}if("GroupHeaderVisibilityChanged"===e.type){const t=e;s.handleGroupHeaderVisibilityChanged(t.data.groupHeaderVisible),this._registry.execute("group-header-changed",t.data)}if("FocusChanged"===e.type){const t=e;this.focusChanged(s,o,t.data)}if("WindowFrameChanged"===e.type&&(s.handleFrameAttached(e.data.frameId,e.data.frameId,e.data.isTabHeaderVisible),this._registry.execute("frame-changed")),"WindowFrameAdded"===e.type){const t=cr(o.id,e.data.frameId),n=e.data;s.handleAttached(n.frameId,n.frameId,n.isTabHeaderVisible,n.isLocked,t).then((async()=>{t.length>0&&(await lr.finished,this._registry.execute("tab-attached",o,e.data.frameId,e.data.isTabHeaderVisible))}))}if("WindowFrameRemoved"===e.type){const t=o.tabGroupId,n=cr(o.id,t);s.handleDetached(e.data.isLocked,n).then((async()=>{n.length>0&&(await lr.finished,this._registry.execute("tab-detached",o,e.data.frameId,o.tabGroupId))}))}"TabHeaderVisibilityChanged"===e.type&&s.handleTabHeaderVisibilityChanged(e.data.isTabHeaderVisible),"FrameSelectionChanged"===e.type&&s.handleFrameSelectionChanged(e.data.newWindowId,e.data.prevWindowId),"ButtonClicked"===e.type&&s.handleFrameButtonClicked(e.data),"ButtonAdded"===e.type&&s.handleFrameButtonAdded(e.data),"ButtonRemoved"===e.type&&s.handleFrameButtonRemoved(e.data),"WindowZoomFactorChanged"===e.type&&s.handleZoomFactorChanged(e.data),"Closed"===e.type&&(ir.remove(r),s.handleWindowClose()),"FrameIsLockedChanged"===e.type&&s.handleFrameIsLockedChanged(e.data),"PlacementSettingsChanged"===e.type&&s.handlePlacementSettingsChanged(e.data),"DockingChanged"===e.type&&s.handleDockingChanged(e.data),this._registry.execute("window-event",i)}createWindow(e,t){const n=ar(e,this.mapToWindowConstructorOptions(t),lr,this._logger,this._appManagerGetter,this._displayAPIGetter,this._channelsAPIGetter,this._agm);return n.GroupCreationArgs=this.mapToGroupCreationArgs(t),ir.add(n),n}async focusChanged(e,t,n){e.handleFocusChanged(n);try{this._configuration.windowAvailableOnURLChanged||await ir.waitFor(t.id)}catch(i){return}n?this._registry.execute("got-focus",t):this._registry.execute("lost-focus",t)}mapToWindowConstructorOptions(e){return{name:e.name,context:e.context,bounds:e.bounds,url:e.url,title:e.title,isVisible:e.isVisible,focus:e.isFocused,state:e.state,frameColor:e.frameColor,groupId:e.groupId,neighbours:e.neighbors,isFocused:e.isFocused,isGroupHeaderVisible:e.groupHeaderVisible,isCollapsed:e.isCollapsed,tabGroupId:e.frameId,frameId:e.frameId,mode:e.mode,isTabHeaderVisible:e.isTabHeaderVisible,isTabSelected:e.isActiveTab,settings:e.settings,windowType:e.windowType,zoomFactor:e.zoomFactor,isLocked:e.isLocked,placementSettings:e.placementSettings,isSticky:e.isSticky,tabIndex:e.tabIndex,frameButtons:e.frameButtons,jumpListOptions:e.jumpList,applicationName:e.applicationName}}mapToGroupCreationArgs(e){return{isGroupHibernated:e.isGroupHibernated,isGroupVisible:e.isGroupVisible}}getExtendedStreamEvent(e){try{if(!e.windowId)return e;const t=ir.get(e.windowId);if(!t)return e;const n={state:e.type,windowName:t.API.name,...e};return"WindowFrameAdded"===n.state&&(n.state="TabAttached"),"StateChanged"===n.state&&(n.state=n.data.charAt(0).toUpperCase()+n.data.slice(1)),"ButtonAdded"===n.state&&(n.state="FrameButtonAdded"),"ButtonRemoved"===n.state&&(n.state="FrameButtonRemoved"),n}catch(t){return e}}}var pr=(e,t,n,i,r,o)=>{const s=t;if(2===o)throw s.trace("running in HC"),new Error("GD2 not supported");return o>=3?(s.trace("running in GD 3"),new hr(e,s,n,i,r,window.glue42gd.windowId).init()):new hr(e,s,n,i,r).init()},fr=(e,t)=>{const n=ki(),i=[];let r,o;async function s(e){var s,a,c,u;if(-1===i.indexOf(e)){i.push(e);const d=ir.get(e);d.Events.handleGroupChanged(I,void 0),r=null!==(a=null!==(s=d.GroupCreationArgs.isGroupHibernated)&&void 0!==s?s:r)&&void 0!==a&&a,o=null===(u=null!==(c=d.GroupCreationArgs.isGroupVisible)&&void 0!==c?c:o)||void 0===u||u,await t.finished,n.execute("window-added",I,d.API)}}async function a(e){const r=i.indexOf(e.API.id);-1!==r&&(i.splice(r,1),e.Events.handleGroupChanged(void 0,I),await t.finished,n.execute("window-removed",I,e.API))}function c(e,t,n){let i;"string"===typeof e?i=e:tn(e)||(i=e.id);const r=g(i);if(r)return"function"===typeof t&&t(r),r;"function"===typeof n&&n("No window with ID: ".concat(i))}function u(e){const t=f();return"function"===typeof e&&e(t),t}async function d(e,n){for(var i=arguments.length,r=new Array(i>2?i-2:0),o=2;o{const n=g(t);"undefined"!==typeof n&&e.push(n)})),e}function g(e){return ir.get(e)?ir.get(e).API:void 0}function m(){return void 0===f().find((e=>!e.isGroupHeaderVisible))}function v(){return r}function y(e){return n.add("header-visibility-changed",e)}function w(e){return n.add("window-added",e)}function b(e){return n.add("window-removed",e)}function _(e){if(!e)throw new Error("Callback argument is required");if(e&&"function"!==typeof e)throw new Error("Callback argument must be a function");return n.add("group-visibility-changed",e)}function C(e){if("function"!==typeof e)throw new Error("callback must be a function");const n=(t,n,i)=>{const r=e(i);(null===r||void 0===r?void 0:r.then)?r.then(t).catch(n):t()};return t.onGroupClosing(n,I)}const I={id:e,get windows(){return u()},find:c,get isHeaderVisible(){return m()},get isHibernated(){return v()},get isVisible(){return o},showHeader:(e,t)=>Xi.callbackifyPromise((()=>d("setGroupHeaderVisibility",{windowId:i[0],options:{toShow:!0}},...i.map((e=>"GroupHeaderVisibilityChanged-".concat(e))))),e,t),hideHeader:(e,t)=>Xi.callbackifyPromise((()=>d("setGroupHeaderVisibility",{windowId:i[0],options:{toShow:!1}},...i.map((e=>"GroupHeaderVisibilityChanged-".concat(e))))),e,t),getTitle:async()=>(await t.execute("getGroupTitle",{windowId:i[0]})).title,setTitle:async e=>{if(nn(e))throw new Error("`title` must not be null or undefined.");return d("setGroupTitle",{windowId:i[0],options:{title:e}})},capture:e=>t.captureGroup(i,e),maximize:(e,t)=>Xi.callbackifyPromise((()=>d("maximizeGroup",{windowId:i[0]},...i.map((e=>"StateChanged-".concat(e))))),e,t),restore:(e,t)=>Xi.callbackifyPromise((()=>d("restoreGroup",{windowId:i[0]},...i.map((e=>"StateChanged-".concat(e))))),e,t),show:n=>{if(!tn(n)&&!rn(n))throw new Error("Activate flag must be a boolean!");return n=!!tn(n)||n,t.executeGroup("showGroup",{groupId:e,options:{activate:n}})},hide:()=>t.executeGroup("hideGroup",{groupId:e}),onHeaderVisibilityChanged:y,onWindowAdded:w,onWindowRemoved:b,onVisibilityChanged:_,onClosing:C};return{groupAPI:I,groupInternal:{get windows(){return i},addWindow:s,removeWindow:a,handleGroupHeaderVisibilityChanged:l,handleGroupVisibilityChanged:h,handleGroupHibernateChanged:p}}},gr=(e,t)=>{const n=ki(),i={};let r=-1;const o=ir.list;function s(){return c(e.my())}function a(e){const t=Object.keys(i).map((e=>{if(i[e])return i[e].groupAPI}));return"function"===typeof e&&e(t),t}function c(e,t,n){let r;"string"===typeof e?r=e:tn(e)||(r=e.id);const o=Object.values(i).find((e=>e.groupAPI.windows.filter((e=>e.id===r)).length));if(o)return"function"===typeof t&&t(o.groupAPI),o.groupAPI;"function"===typeof n&&n("Cannot find the group of the window.")}function u(e){return e?new Promise(((t,n)=>{const r=i[e];if(r)t(r.groupAPI);else{const n=h((i=>{i.id===e&&(n(),t(i))}))}})):Promise.reject("groupId must be defined")}async function d(e,t){if(!tn(t)&&!rn(t))throw new Error("Activate flag must be a boolean!");t=!!tn(t)||t,await lr.executeGroup("resumeGroup",{groupId:e,options:{activate:t}})}async function l(e){return await lr.executeGroup("hibernateGroup",{groupId:e}),e}function h(e){return n.add("group-added",e)}function p(e){return n.add("group-removed",e)}function f(e){return n.add("window-moved",e)}function g(e){if(!e)throw new Error("Callback argument is required");if(e&&"function"!==typeof e)throw new Error("Callback argument must be a function");return n.add("group-hibernated",e)}function m(e){if(!e)throw new Error("Callback argument is required");if(e&&"function"!==typeof e)throw new Error("Callback argument must be a function");return n.add("group-resumed",e)}function v(t){if(i.hasOwnProperty(t))return i[t];{const r=fr(t,e.executor);i[t]=r;const o=r.groupAPI;return n.execute("group-added",o),r}}function y(e){const t=e.groupAPI;0===t.windows.length&&(delete i[t.id],lr.clearCallbacks(t.id),n.execute("group-removed",t))}function w(e,t){const n=v(e);return n.groupInternal.addWindow(t),n}function b(e,t){e&&(e.groupInternal.removeWindow(t),y(e))}function _(e){const t=e.groupId,n=e.windowId,i=ir.get(n);if(!i)return;const r=I(i.API);tn(t)?b(r,i):!tn(r)||tn(t)?r.groupAPI.id!==t&&C(i,r.groupAPI.id,t):w(t,i.API.id)}function C(e,t,r){const o=e.API.id,s=i[t];b(s,e);const a=w(r,o);e.Events.handleGroupChanged(a.groupAPI,s.groupAPI),n.execute("window-moved",o,t,r)}function I(e){let t;return"string"===typeof e?t=e:tn(e)||(t=e.id),Object.values(i).find((e=>e.groupInternal.windows.filter((e=>e===t)).length))}return Object.keys(o).forEach((e=>{const t=o[e],n=t.API.groupId,i=t.API.id;nn(n)||w(n,i)})),ir.onRemoved((e=>{b(I(e.API),e)})),e.onCompositionChanged((e=>{_(e)})),e.onGroupHeaderVisibilityChanged((e=>{const t=c(e.windowId);if("undefined"!==typeof t){const n=i[t.id];-1===r&&(r=t.windows.length),r--,0===r&&(r=-1,n.groupInternal.handleGroupHeaderVisibilityChanged(e))}})),e.onGroupVisibilityChanged((e=>{const t=i[e.groupId];t&&t.groupInternal.handleGroupVisibilityChanged(e.visible)})),e.onGroupStateChanged((e=>{const t=i[e.groupId];"hibernated"===e.state?(t&&t.groupAPI&&t.groupInternal.handleGroupHibernateChanged(!0),n.execute("group-hibernated",e.groupId)):"resumed"===e.state&&(t&&t.groupAPI&&t.groupInternal.handleGroupHibernateChanged(!1),n.execute("group-resumed",t.groupAPI))})),{groupsAPI:{get my(){return s()},list:a,findGroupByWindow:c,waitForGroup:u,onGroupAdded:h,onGroupRemoved:p,hibernate:l,resume:d,onHibernated:g,onResumed:m},groupsEvents:{onWindowMoved:f}}},mr=(e,t,n,i,r,o)=>{const s=ki(),a=t;let c,u;ir.init(a);const d=new Promise(((t,s)=>{pr(e,a,n,i,r,o).then((n=>{u=n,c=gr(n),tr.init(n.executor,e,a),t()})).catch((e=>{const t="Timed out waiting for connection to Glue42 Enterprise: Error: ".concat(e.message);a.error(t,e),s(new Error(t))}))}));function l(){return d}function h(){const e=ir.getIfReady(u.my());return e?e.API:void 0}function p(e,t,n,i,r){return Xi.callbackifyPromise((()=>{if(nn(e))throw new Error("The window name is missing.");if(nn(t))throw new Error("The window URL is missing.");if(!tn(n)){const e=n;for(const t of["minHeight","maxHeight","minWidth","maxWidth","width","height","top","left"])if(t in e){const n=e[t];if(tn(n)){delete e[t];continue}if(!Qt(n)){const e="".concat(t," must be a number");throw new Error(e)}if(("width"===e[t]||"height"===e[t])&&n<=0){const e="".concat(t," must be a positive number");throw new Error(e)}}}return u.open(e,t,n)}),i,r)}function f(e,t,n){const i=ir.list,r=Object.keys(i).reduce(((t,n)=>{var r;const o=i[n];return(null===(r=null===o||void 0===o?void 0:o.API)||void 0===r?void 0:r.name)===e&&t.push(o.API),t}),[]);if(r[0])return"function"===typeof t&&t(r[0]),r[0];"function"===typeof n&&n("There is no window with name:"+e)}function g(e,t,n){const i=ir.list,r=Object.keys(i).reduce(((t,n)=>{const r=i[n];return"undefined"!==typeof r&&r.API.id===e&&t.push(r.API),t}),[]);if(r[0])return"function"===typeof t&&t(r[0]),r[0];"function"===typeof n&&n("There is no window with such id:"+e)}function m(e){const t=ir.list,n=Object.keys(t).map((e=>t[e].API));if("function"!==typeof e)return n;e(n)}function v(e){const t=h(),n=t?t.id:"";return lr.configure(n,e)}function y(e){return lr.autoArrange(e)}function w(e){return s.add("window-added",e)}function b(e){return s.add("window-removed",e)}function _(e){let t,n=!1;return d.then((()=>{n||(t=u.tabAttached(e))})),()=>{n=!0,t&&t()}}function C(e){let t,n=!1;return d.then((()=>{n||(t=u.tabDetached(e))})),()=>{n=!0,t&&t()}}function I(e){let t,n=!1;return d.then((()=>{n||(t=u.onWindowFrameColorChanged(e))})),()=>{n=!0,t&&t()}}function S(e){let t,n=!1;return d.then((()=>{n||(t=u.onWindowGotFocus(e))})),()=>{n=!0,t&&t()}}function k(e){let t,n=!1;return d.then((()=>{n||(t=u.onWindowLostFocus(e))})),()=>{n=!0,t&&t()}}function x(e){return u.onWindowsAutoArrangeChanged(e)}function T(e){let t,n=!1;return d.then((()=>{n||(t=u.onEvent(e))})),()=>{n=!0,t&&t()}}function A(e,t){return u.createFlydown(e,t)}function E(e,t){return u.showPopup(e,t)}function P(e){s.execute("window-added",e.API)}function M(e){s.execute("window-removed",e.API)}return ir.onReadyWindow(P),ir.onRemoved(M),{my:h,open:p,find:f,findById:g,list:m,ready:l,onWindowAdded:w,windowAdded:w,onWindowRemoved:b,windowRemoved:b,onTabAttached:_,onTabDetached:C,onWindowFrameColorChanged:I,onArrangementChanged:x,get groups(){return c.groupsAPI},onWindowGotFocus:S,onWindowLostFocus:k,onEvent:T,createFlydown:A,showPopup:E,configure:v,autoArrange:y}};class vr{constructor(){this.layouts=[]}removeWhere(e){this.layouts=this.layouts.filter(e)}removeAll(){this.layouts=[]}add(e){this.layouts.push(e)}get all(){return this.layouts}where(e){return this.layouts.filter(e)}first(e){return this.where(e)[0]}}var yr=new vr;const wr="T42.HC.GetSaveContext";class br{constructor(e,t,n,i){this.config=e,this.activitiesGetter=t,this.callbacks=n,this.logger=i,this.interop=e.agm,this.registerRequestMethods()}onSaveRequested(e){return this.callbacks.add("saveRequested",e)}isActivityOwner(){if("undefined"!==typeof htmlContainer){const e=htmlContainer.getContext();return e&&e._t42&&e._t42.activityIsOwner}const e=this.activitiesGetter();if(!e)return!1;if(!e.inActivity)return!1;const t=e.my.window,n=e.my.activity;return!(!n&&!t)&&n.owner.id===t.id}registerRequestMethods(){this.interop.register(wr,(e=>{const t=this.callbacks.execute("saveRequested",e);(null===t||void 0===t?void 0:t.length)>1&&this.logger.warn('Multiple subscriptions for "glue.layouts.onSaveRequested" - only the first one will be used');const n=t[0],i=this.config.autoSaveWindowContext;if("boolean"===typeof i&&i)return{autoSaveWindowContext:i};if(Array.isArray(i)&&i.length>0)return{autoSaveWindowContext:i};const r={windowContext:null===n||void 0===n?void 0:n.windowContext,activityContext:void 0};return this.isActivityOwner()&&(r.activityContext=null===n||void 0===n?void 0:n.activityContext),r}))}}function _r(e){if(!e)return e;if(Array.isArray(e))return e.map((e=>_r(e)));if("string"===typeof e||"number"===typeof e||"boolean"===typeof e)return e;const t={};return Object.keys(e).reduce(((t,n)=>{var i;const r=_r(e[n]);let o=n;return(null===(i=n[0])||void 0===i?void 0:i.toLowerCase())!==n[0]&&(o=n[0].toLowerCase()+n.substr(1)),t[o]=r,t}),t)}class Cr{constructor(e){this.name=e.name,this.type=e.type,this.components=e.components,this.context=e.context,this.metadata=e.metadata,this.version=e.version,this.displays=e.displays}}const Ir="T42.ACS.Command";class Sr{constructor(e,t,n,i){this.config=e,this.stream=t,this.callbacks=n,this.isRegisterMethodForLayoutModified=!1,this.appManager=e.appManager,this.provider=new br(e,e.activityGetter,n,i),t.subscribe()}async setDefaultGlobal(e){const t="SelectDefaultLayout";await this.invokeMethodCore(t,{name:e})}async clearDefaultGlobal(){const e="DeselectDefaultLayout";this.invokeMethodCore(e)}async getDefaultGlobal(){const e="GetDefaultLayout",t=(await this.invokeMethodCore(e)).returned;if(t)return this.isSlimMode()?t:this.list().find((e=>e.name===t.name&&"Global"===e.type))}ready(){return"fullWaitSnapshot"===this.config.mode?this.stream.gotSnapshot:this.stream.ready}save(e){return new Promise(((t,n)=>{var i,r;if(this.verifyNotSlimMode(),tn(e))return n(new Error("layout is required"));if(nn(e.name))return n(new Error("layout.name argument is required"));nn(e.type)&&(e.type="Global"),nn(e.activityId)||(e.type="Activity");const o={name:e.name,type:e.type,context:null!==(i=e.context)&&void 0!==i?i:{},metadata:null!==(r=e.metadata)&&void 0!==r?r:{},options:{}};if("Activity"===e.type){let t=e.activityId;if(!t){if(!this.appManager.myInstance.inActivity)return n(new Error("Current application is not in activity. Cannot save activity layout for it."));t=this.appManager.myInstance.activityId}o.activityId=t}else{if("Global"!==e.type)return n(new Error("layout type ".concat(e.type," is not supported")));Array.isArray(e.ignoreInstances)&&(o.options.ignoreInstances=e.ignoreInstances),Array.isArray(e.instances)&&(o.options.instances=e.instances),"boolean"===typeof e.setAsCurrent&&(o.options.setAsCurrent=e.setAsCurrent)}this.invokeMethodAndTrack("SaveLayout",o,t,n)}))}restore(e){return new Promise(((t,n)=>{var i,r,o;if(this.verifyNotSlimMode(),tn(e))return n(new Error("options argument is required"));if(nn(e.name))return n(new Error("options.name argument is required"));if(nn(e.type)&&(e.type="Global"),nn(e.activityIdToJoin)||(e.type="Activity"),"Activity"===e.type){if(tn(e.setActivityContext)&&(e.setActivityContext=!0),"boolean"!==typeof e.setActivityContext)return n(new Error("`setActivityContext` must hold a boolean value."));e.activityIdToJoin=null!==(i=e.activityIdToJoin)&&void 0!==i?i:this.appManager.myInstance.activityId}if(tn(e.closeRunningInstance)||(e.closeRunningInstances=e.closeRunningInstance),tn(e.closeRunningInstances)&&(e.closeRunningInstances=!0),!rn(e.closeRunningInstances))return n(new Error("`closeRunningInstances` must hold a boolean value."));if(tn(e.closeMe)&&(e.closeMe=e.closeRunningInstances),!rn(e.closeMe))return n(new Error("`closeMe` must hold a boolean value."));if(!tn(e.context)&&!Xt(e.context))return n(new Error("`context` must hold an object value."));if(!tn(e.timeout)&&"number"!==typeof e.timeout)return n(new Error("`timeout` must hold an number value."));e.context=null!==(r=e.context)&&void 0!==r?r:{};const s={activityToJoin:e.activityIdToJoin,setActivityContext:e.setActivityContext,ignoreActivityWindowTypes:e.ignoreActivityWindowTypes,reuseExistingWindows:e.reuseWindows,closeRunningInstances:e.closeRunningInstances,excludeFromClosing:e.closeMe?[]:[null===(o=this.appManager.myInstance)||void 0===o?void 0:o.id]},a={type:e.type,name:e.name,context:e.context,options:s};e.timeout&&(a.timeout=e.timeout),this.invokeMethodAndTrack("RestoreLayout",a,t,n,!0)}))}remove(e,t){return new Promise(((n,i)=>{if(this.verifyNotSlimMode(),!t)return i(new Error("name argument is required"));if(!e)return i(new Error("type argument is required"));const r={type:e,name:t};this.invokeMethodAndTrack("RemoveLayout",r,n,i)}))}list(){return this.verifyNotSlimMode(),yr.all}import(e,t){return new Promise(((n,i)=>{if(this.verifyNotSlimMode(),!tn(t)&&"merge"!==t&&"replace"!==t)return i(new Error("".concat(t,' is not supported - only "merge" and "replace"')));if(!Array.isArray(e))return i(new Error("layouts arguments is not an array"));const r={mode:t||"replace",layouts:e};this.invokeMethodAndTrack("ImportLayouts",r,n,i,!0)}))}export(e){return new Promise(((t,n)=>{const i=n=>{let i=this.getObjectValues(n.Layouts).map((e=>new Cr(_r(e))));e&&(i=i.filter((t=>t.type===e))),t(i)};this.invokeMethodAndTrack("ExportLayouts",{},i,n,!0)}))}rename(e,t){return new Promise(((n,i)=>{if(this.verifyNotSlimMode(),!e)return i(new Error("layout argument is required"));if(!e.name)return i(new Error("name argument is required"));if(!e.type)return i(new Error("type argument is required"));const r={type:e.type,oldName:e.name,newName:t};this.invokeMethodAndTrack("RenameLayout",r,n,i)}))}updateMetadata(e){return new Promise(((t,n)=>{if(!e)return n(new Error("layout argument is required"));if(!e.name)return n(new Error("name argument is required"));if(!e.type)return n(new Error("type argument is required"));if(!e.metadata)return n(new Error("metadata argument is required"));const i={name:e.name,type:e.type,metadata:e.metadata};this.invokeMethodAndTrack("UpdateMetadata",i,t,n,!0)}))}hibernate(e,t){return new Promise(((n,i)=>{if(!e)return i(new Error("name cannot be empty"));const r={name:e,type:"Global",context:(t=t||{}).context||{},metadata:t.metadata||{}};this.invokeMethodAndTrack("HibernateLayout",r,n,i,!0)}))}resume(e,t,n){return new Promise(((i,r)=>{if(!e)return r(new Error("name cannot be empty"));const o={name:e,type:"Global",context:t,...n};this.invokeMethodAndTrack("ResumeLayout",o,i,r,!0)}))}async getCurrentLayout(){const e="GetCurrentLayout";let t=(await this.invokeMethodCore(e)).returned.layout;if(t)return this.isSlimMode()||(t=this.list().find((e=>e.name===t.name&&e.type===t.type))),t}onAdded(e){const t=this.callbacks.add("added",e);return yr.all.length>0&&yr.all.forEach((t=>{try{e(t)}catch(n){}})),t}onRemoved(e){return this.callbacks.add("removed",e)}onChanged(e){return this.callbacks.add("changed",e)}onRestored(e){return this.callbacks.add("restored",e)}onRenamed(e){return this.callbacks.add("renamed",e)}onEvent(e){return this.stream.onEvent(e)}onSaveRequested(e){return this.provider.onSaveRequested(e)}onLayoutModified(e){return!1===this.isRegisterMethodForLayoutModified&&(this.isRegisterMethodForLayoutModified=!0,this.registerMethodForLayoutModified()),this.callbacks.add("layout-modified",e)}updateAppContextInCurrent(e){return new Promise(((t,n)=>{if(e&&"object"!==typeof e)return n(new Error("context must be an object"));const i={context:e=null!==e&&void 0!==e?e:{}};this.invokeMethodAndTrack("UpdateLayoutComponentContext",i,t,n,!0)}))}updateDefaultContext(e){return new Promise(((t,n)=>{if(e&&"object"!==typeof e)return n(new Error("context must be an object"));const i={context:e=null!==e&&void 0!==e?e:{}};this.invokeMethodAndTrack("UpdateDefaultContext",i,t,n,!0)}))}async get(e,t){const n=this.list().find((n=>n.name===e&&n.type===t));if(!n)throw new Error("cannot find layout with name=".concat(e," and type=").concat(t));return n}async getAll(e){return this.list().filter((t=>e===t.type))}async forceRefresh(){const e="RefreshLayouts";await this.invokeMethodCore(e)}isSlimMode(){return"slim"===this.config.mode}verifyNotSlimMode(){if(this.isSlimMode())throw Error("Operation not allowed in slim mode. Run in full mode.")}async registerMethodForLayoutModified(){await this.config.agm.register("T42.ACS.LayoutModified",((e,t)=>{this.callbacks.execute("layout-modified",e)}))}invokeMethodAndTrack(e,t,n,i,r){let o,s=r;const a=Xi.generateId();t.token=a;const c=()=>{s&&o&&n(o)},u=12e4;r||this.stream.waitFor(a,u).then((()=>{s=!0,c()})).catch((e=>{i(e)}));const d=t=>{if(!t.returned)return i(new Error("No result from method "+e));if(t.returned.status&&"Success"!==t.returned.status&&"PartialSuccess"!==t.returned.status){if("string"===typeof t.returned)return i(new Error(t.returned));if("object"===typeof t.returned)return t.returned.status&&t.returned.failed?i(new Error("".concat(t.returned.status,": ").concat(JSON.stringify(t.returned.failed)))):i(new Error(t.returned))}o=t.returned,c()};this.invokeMethodCore(e,t,"best",{methodResponseTimeoutMs:u}).then(d).catch((e=>i(e)))}async invokeMethodCore(e,t,n,i){return this.isCommandMethodPresent()?await this.config.agm.invoke(Ir,{command:e,data:t},n,i):await this.config.agm.invoke("T42.ACS.".concat(e),t,n,i)}getObjectValues(e){return e?Object.keys(e).map((t=>e[t])):[]}isCommandMethodPresent(){return this.config.agm.methods().some((e=>e.name===Ir))}}class kr{constructor(e,t){this.agm=e,this.callbacks=t,this.StreamName="T42.ACS.OnLayoutEvent",this.ready=new Promise(((e,t)=>{this.resolveReady=e,this.rejectReady=t})),this.gotSnapshot=new Promise(((e,t)=>{this.resolveGotSnapshot=e,this.rejectGotSnapshot=t}))}subscribe(e){const t=e=>this.getObjectValues(e).map((e=>_r(e)));this.checkForLayoutEventMethod()?this.agm.subscribe(this.StreamName,{waitTimeoutMs:1e4}).then((e=>{e.onData((e=>{const n=e.data;n.IsSnapshot&&this.resolveGotSnapshot(),this.addLayouts(t(n.OnLayoutAdded),n.IsSnapshot),this.removeLayouts(t(n.OnLayoutRemoved)),this.changeLayouts(t(n.OnLayoutChanged)),this.renameLayouts(t(n.OnLayoutRenamed)),this.restoredLayout(t(n.OnLayoutRestored)),this.callbacks.execute("streamEvent",n)})),e.onFailed((e=>{const t='Can not subscribe to "'.concat(this.StreamName,'" stream - ').concat(JSON.stringify(e));this.rejectReady(t),this.rejectGotSnapshot(t)})),this.resolveReady()})).catch((e=>{const t='Error subscribing to "'.concat(this.StreamName,'" stream - ').concat(JSON.stringify(e));this.rejectReady(t),this.rejectGotSnapshot(t)})):(e&&this.resolveReady(),setTimeout((()=>{this.subscribe(!0)}),500))}onEvent(e){return this.callbacks.add("streamEvent",e)}waitFor(e,t){return t||(t=3e4),new Promise(((n,i)=>{let r=!1;const o=this.onEvent((t=>{t.Token===e&&(r=!0,o(),n())}));setTimeout((()=>{r||i("timed out")}),t)}))}checkForLayoutEventMethod(){try{return-1!==this.agm.methods().map((e=>e.name)).indexOf(this.StreamName)}catch(e){return!1}}addLayouts(e,t){if(!e)return;const n=e=>{const t=new Cr(e);yr.add(t),this.callbacks.execute("added",t)};e.forEach((e=>{t&&yr.first((t=>this.compareLayouts(t,e)))||n(e)}))}removeLayouts(e){e&&e.forEach((e=>{yr.removeWhere((t=>!this.compareLayouts(t,e))),this.callbacks.execute("removed",e)}))}changeLayouts(e){e&&e.forEach((e=>{yr.removeWhere((t=>!this.compareLayouts(t,e))),yr.add(new Cr(e)),this.callbacks.execute("changed",e)}))}renameLayouts(e){e&&e.forEach((e=>{const t=yr.first((t=>this.compareLayouts(t,{type:e.type,name:e.oldName})));if(!t)throw Error("received rename event for unknown layout with type ".concat(e.type," and name ").concat(e.oldName));t.name=e.newName,this.callbacks.execute("renamed",t)}))}compareLayouts(e,t){return e.name===t.name&&e.type===t.type}getObjectValues(e){return e?Object.keys(e).map((t=>e[t])):[]}restoredLayout(e){e&&e.forEach((e=>{const t=yr.first((t=>this.compareLayouts(t,{type:e.type,name:e.name})));this.callbacks.execute("restored",t)}))}}function xr(e){if(!e.agm)throw Error("config.agm is required");if(!e.logger)throw Error("config.logger is required");e.mode=e.mode||"slim";const t=e.logger,n=ki();let i;return e.mode,i=new kr(e.agm,n),new Sr(e,i,n,t)}const Tr="T42.Displays.Command",Ar="T42.Displays.OnEvent";class Er{constructor(e,t){this._agm=e,this._logger=t,this._registry=ki(),this._registered=!1,this.all=async()=>(await this.callGD(Pr.GetAll,{})).map(this.decorateDisplay),this.get=async e=>{const t=await this.callGD(Pr.Get,{id:e});return this.decorateDisplay(t)},this.getPrimary=async()=>(await this.all()).find((e=>e.isPrimary)),this.capture=async e=>await this.callGD(Pr.Capture,{...e}),this.captureAll=async e=>await this.callGD(Pr.CaptureAll,{...e}),this.getMousePosition=async()=>await this.callGD(Pr.GetMousePosition),this.callGD=async(e,t)=>(await this._agm.invoke(Tr,{options:{...t},command:e})).returned.data,this.decorateDisplay=e=>{const t={...e,capture:t=>this.capture({id:e.id,size:t})},n=t.workArea;return n.x=n.left,n.y=t.workArea.top,t}}getByWindowId(e){return this.callGD(Pr.GetByWindowId,{id:e})}onDisplayChanged(e){return this.register(),this._registry.add("on-display-changed",e)}register(){this._registered||(this._registered=!0,this._agm.register(Ar,((e,t)=>{const n=e.event,i=e.data;"display-changed"===n?this._registry.execute("on-display-changed",i.displays.map(this.decorateDisplay)):this._logger.warn("unknown event - ".concat(n))})))}}var Pr;let Mr,Rr;!function(e){e.Capture="capture",e.CaptureAll="captureAll",e.GetAll="getAll",e.Get="get",e.GetByWindowId="getByWindowId",e.GetMousePosition="getMousePosition"}(Pr||(Pr={}));const Nr="T42.Channels.Announce";async function Or(e,t){Mr=e,"undefined"!==typeof window&&window.glue42gd&&(Rr=window.glue42gd.windowId),Rr&&(await Mr.register("T42.Channels.Command",(e=>{const n=e.command;if(!n)throw new Error("missing command argument");if("join"!==n){if("leave"!==n){if("get"===n)return{id:t.current()};throw new Error("unknown command ".concat(n))}t.leaveNoSelectorSwitch()}else{const n=e.channel;if(!n)throw new Error("missing argument id");t.joinNoSelectorSwitch(n)}})),await Mr.invoke("T42.Channels.Announce",{swId:Rr,instance:Mr.instance.instance}))}async function jr(e,t){Mr.invoke("T42.Channels.Announce",{swId:null!==t&&void 0!==t?t:Rr,command:"switchChannel",data:{newChannel:e}})}async function Dr(e){return(await Mr.invoke(Nr,{command:"getChannelsInfo",data:{filter:e}})).returned}async function Fr(e,t,n){await Mr.invoke(Nr,{command:e,data:{id:t,color:n}})}const Wr="___channel___",Lr="latest_fdc3_type";class Ur{constructor(e){this.contexts=e}subscribe(e){this.callback=e}subscribeFor(e,t){if(!this.isChannel(e))return Promise.reject(new Error("Channel with name: ".concat(e," doesn't exist!")));const n=this.createContextName(e);return this.contexts.subscribe(n,((e,n,i,r,o)=>{t(e.data,e,null===o||void 0===o?void 0:o.updaterId)}))}async switchChannel(e){this.unsubscribe();const t=this.createContextName(e);this.unsubscribeFunc=await this.contexts.subscribe(t,((e,t,n,i,r)=>{this.callback&&this.callback(e.data,e,null===r||void 0===r?void 0:r.updaterId)}))}leave(){this.callback&&this.callback({},void 0),this.unsubscribe()}all(){return this.contexts.all().filter((e=>e.startsWith(Wr))).map((e=>e.substr(Wr.length)))}async getContextData(e){if(!this.isChannel(e))throw new Error("A channel with name: ".concat(e," doesn't exist!"));const t=this.createContextName(e),n=await this.contexts.get(t);if(n[Lr]){const{latest_fdc3_type:e,...t}=n;return t}return n}updateChannel(e,t){const n=this.createContextName(e);return this.contexts.update(n,t)}updateData(e,t){const n=this.createContextName(e),i=this.getFDC3Type(t);if(this.contexts.setPathSupported){const e=Object.keys(t).map((e=>({path:"data."+e,value:t[e]})));return i&&e.push({path:Lr,value:i}),this.contexts.setPaths(n,e)}return i&&(t[Lr]=i),this.contexts.update(n,{data:t})}isChannel(e){return this.all().some((t=>t===e))}async remove(e){if(!this.isChannel(e))throw new Error("A channel with name: ".concat(e," doesn't exist!"));const t=this.createContextName(e);await this.contexts.destroy(t)}unsubscribe(){this.unsubscribeFunc&&this.unsubscribeFunc()}createContextName(e){return Wr+e}getFDC3Type(e){const t=Object.keys(e).filter((e=>0===e.indexOf("fdc3_")));if(0!==t.length){if(t.length>1)throw new Error("FDC3 does not support updating of multiple context keys");return t[0].split("_").slice(1).join("_")}}}class Br{constructor(e,t,n,i){this.shared=e,this.interop=t,this.getWindows=n,this.logger=i,this.subsKey="subs",this.changedKey="changed",this.isInitialJoin=!0,this.registry=ki(),this.pendingReplays={},this.shared.subscribe(this.handler.bind(this)),"undefined"!==typeof window&&"undefined"!==typeof window.glue42gd&&(this.currentContext=window.glue42gd.initialChannel,this.currentContext&&this.joinNoSelectorSwitch(this.currentContext))}subscribe(e){if("function"!==typeof e)throw new Error("Please provide the callback as a function!");const t=Xi.generateId();if(this.pendingReplays[t]=!0,this.lastUpdate){let n=Object.assign({},this.lastUpdate);setTimeout((()=>{this.pendingReplays[t]&&(this.lastUpdate&&(n=this.lastUpdate),e(n.context.data,n.context,n.updaterId)),delete this.pendingReplays[t]}),0)}const n=this.registry.add(this.subsKey,e);return()=>{this.pendingReplays[t]=!1,n()}}async subscribeFor(e,t){if("string"!==typeof e)throw new Error("Please provide the name as a string!");if("function"!==typeof t)throw new Error("Please provide the callback as a function!");return await this.shared.subscribeFor(e,t)}async publish(e,t){if("object"!==typeof e)throw new Error("Please provide the data as an object!");if(t){if("string"!==typeof t)throw new Error("Please provide the name as a string!");return this.shared.isChannel(t)?this.shared.updateData(t,e):Promise.reject(new Error("A channel with name: ".concat(t," doesn't exist!")))}if(!this.currentContext)throw new Error("Not joined to any channel!");return this.shared.updateData(this.currentContext,e)}all(){const e=this.shared.all();return Promise.resolve(e)}async list(){const e=await this.all();return await Promise.all(e.map((e=>this.get(e))))}get(e){return"string"!==typeof e?Promise.reject(new Error("Please provide the channel name as a string!")):this.shared.getContextData(e)}getMy(){return this.currentContext?this.get(this.currentContext):Promise.resolve(void 0)}async join(e,t){return t?jr(e,t):this.joinCore(e)}async joinNoSelectorSwitch(e){return this.joinCore(e,!1)}leave(e){return e?jr(void 0,e):this.leaveCore()}leaveNoSelectorSwitch(){return this.leaveCore(!1)}current(){return this.currentContext}my(){return this.current()}changed(e){if("function"!==typeof e)throw new Error("Please provide the callback as a function!");return this.current()&&setTimeout((()=>{e(this.current())}),0),this.registry.add(this.changedKey,e)}onChanged(e){return this.changed(e)}async add(e){if("object"!==typeof e)throw new Error("Please provide the info as an object!");if("undefined"===typeof e.name)throw new Error("info.name is missing!");if("string"!==typeof e.name)throw new Error("Please provide the info.name as a string!");if("undefined"===typeof e.meta)throw new Error("info.meta is missing!");if("object"!==typeof e.meta)throw new Error("Please provide the info.meta as an object!");if("undefined"===typeof e.meta.color)throw new Error("info.meta.color is missing!");if("string"!==typeof e.meta.color)throw new Error("Please provide the info.meta.color as a string!");const t={name:e.name,meta:e.meta||{},data:e.data||{}};return await this.shared.updateChannel(e.name,t),await Fr("addChannel",e.name,e.meta.color),t}async remove(e){if("string"!==typeof e)throw new Error("Please provide the channel name as a string!");await this.shared.remove(e),await Fr("removeChannel",e)}async getWindowsOnChannel(e){if("string"!==typeof e)throw new Error("Please provide the channel name as a string!");return(await this.getWindowsWithChannels({channels:[e]})).map((e=>e.window))}async getWindowsWithChannels(e){try{const t=await Dr(e),n=this.getWindows();if(null===t||void 0===t?void 0:t.windows)return t.windows.map((e=>({window:n.findById(e.windowId),channel:e.channel,application:e.application})))}catch(t){this.logger.error("Error getting all channel enabled windows. This method is available since Glue42 3.12",t)}return[]}handler(e,t,n){t||n?(this.lastUpdate={context:t,updaterId:n},this.pendingReplays={},this.registry.execute(this.subsKey,e,t,n)):this.lastUpdate=void 0}async joinCore(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if("string"!==typeof e)throw new Error("Please provide the channel name as a string!");if(!this.isInitialJoin&&e===this.currentContext)return;this.isInitialJoin=!1;const n=e=>this.shared.all().includes(e);if(!n(e)){const t=new Promise(((t,i)=>{const r=setInterval((()=>{n(e)&&(clearTimeout(o),clearInterval(r),t())}),100),o=setTimeout((()=>(clearInterval(r),i(new Error("A channel with name: ".concat(e," doesn't exist!"))))),3e3)}));await t}this.currentContext=e,this.lastUpdate=void 0,await this.shared.switchChannel(e),t&&jr(e),this.registry.execute(this.changedKey,e)}leaveCore(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this.currentContext=void 0,this.registry.execute(this.changedKey,void 0),this.shared.leave(),e&&jr(),Promise.resolve()}}function Hr(e,t,n,i){const r=new Ur(e),o=new Br(r,t,n,i),s=Or(t,o);return{subscribe:o.subscribe.bind(o),subscribeFor:o.subscribeFor.bind(o),publish:o.publish.bind(o),all:o.all.bind(o),list:o.list.bind(o),get:o.get.bind(o),join:o.join.bind(o),leave:o.leave.bind(o),current:o.current.bind(o),my:o.my.bind(o),changed:o.changed.bind(o),onChanged:o.onChanged.bind(o),add:o.add.bind(o),remove:o.remove.bind(o),getWindowsOnChannel:o.getWindowsOnChannel.bind(o),getWindowsWithChannels:o.getWindowsWithChannels.bind(o),getMy:o.getMy.bind(o),ready:async()=>{await Promise.all([e.ready(),s])}}}const Gr="T42.Hotkeys.Command",qr="T42.Hotkeys.Invoke",zr="register",Vr="unregister",Jr="unregisterAll";class Kr{constructor(e){this.agm=e,this.registry=ki(),this.firstHotkey=!0,this.hotkeys=new Map}async register(e,t){if("undefined"===typeof e)throw new Error("Hotkey parameter missing");if("string"===typeof e)e={hotkey:e};else{if(!e.hotkey)throw new Error("Info's hotkey parameter missing");e={hotkey:e.hotkey,description:e.description}}const n=this.formatHotkey(e.hotkey);if(this.hotkeys.has(n))throw new Error("Shortcut for ".concat(n," already registered"));this.firstHotkey&&(this.firstHotkey=!1,await this.registerInvokeAGMMethod()),this.registry.add(n,t),await this.agm.invoke(Gr,{command:zr,hotkey:n,description:e.description}),this.hotkeys.set(n,e)}async unregister(e){if("undefined"===typeof e)throw new Error("hotkey parameter missing");if("string"!==typeof e)throw new Error("hotkey parameter must be string");const t=this.formatHotkey(e);await this.agm.invoke(Gr,{command:Vr,hotkey:t}),this.hotkeys.delete(t),this.registry.clearKey(t)}async unregisterAll(){await this.agm.invoke(Gr,{command:Jr}),this.hotkeys.clear(),this.registry.clear()}isRegistered(e){const t=this.formatHotkey(e);return this.hotkeys.has(t)}registerInvokeAGMMethod(){return this.agm.register(qr,(e=>{const t=e.key.toLowerCase(),n=this.hotkeys.get(t);this.registry.execute(t,n)}))}formatHotkey(e){if(e)return e.replace(/\s/g,"").toLowerCase()}}function $r(e){const t=new Kr(e);return{register:t.register.bind(t),unregister:t.unregister.bind(t),unregisterAll:t.unregisterAll.bind(t),isRegistered:t.isRegistered.bind(t),ready:()=>Promise.resolve()}}var Qr="6.2.2",Yr=e=>{function t(e,t,i){if("boolean"===typeof e&&!e)return;const r=n(e,t,i);return"undefined"!==typeof r?"object"===typeof e?(e.mode=r,e):{mode:r}:void 0}function n(e,t,i){return"object"===typeof e?n(e.mode,t,i).toString():"undefined"===typeof e?"boolean"!==typeof t||t?"boolean"===typeof t&&t?"undefined"===typeof i?t:i:"undefined"===typeof t?void 0:t:void 0:"boolean"===typeof e?e?"undefined"===typeof i?t:i:void 0:e}const i=!0,r="startOnly",o=!Xi.isNode()&&"trackMyTypeAndInitiatedFromMe",s="trackMyTypeAndInitiatedFromMe",a="slim",c=a,u="boolean"===typeof e.exposeAPI||"boolean"===typeof e.exposeGlue;return{layouts:t(e.layouts,a,c),activities:t(e.activities,o,s),appManager:t(e.appManager,i,r),windows:t(e.windows,!0,!0),channels:t(e.channels,!1,!0),displays:t(e.displays,!0,!0),exposeAPI:u||!0}};class Xr{constructor(e){this.options=e,this.callbacks=ki(),this.actions=e.actions,this.body=e.body,this.badge=e.badge,this.data=e.data,this.dir=e.dir,this.icon=e.icon,this.image=e.image,this.lang=e.lang,this.renotify=e.renotify,this.requireInteraction=e.requireInteraction,this.silent=e.silent,this.tag=e.tag,this.timestamp=e.timestamp,this.title=e.title}close(){throw new Error("Method not implemented.")}addEventListener(e,t,n){this.callbacks.add(e,t)}removeEventListener(e,t,n){}dispatchEvent(e){return this.callbacks.execute(e.type,e),!0}}class Zr{constructor(e,t){this.interop=e,this.onStreamEvent=t}onVisibilityChanged(e){return this.onStreamEvent("on-panel-visibility-changed",e)}toggle(){return this.interop.invoke("T42.Notifications.Show")}show(){return this.interop.invoke("T42.Notifications.Show",{show:!0})}hide(){return this.interop.invoke("T42.Notifications.Hide")}async isVisible(){return(await this.interop.invoke("T42.Notifications.Execute",{command:"isPanelVisible"})).returned.panelVisible}toAPI(){return{onVisibilityChanged:this.onVisibilityChanged.bind(this),toggle:this.toggle.bind(this),show:this.show.bind(this),hide:this.hide.bind(this),isVisible:this.isVisible.bind(this)}}}const eo=0;class to{constructor(e,t){this.interop=e,this.NotificationsSubscribeStream="T42.GNS.Subscribe.Notifications",this.NotificationsCounterStream="T42.Notifications.Counter",this.RaiseNotificationMethodName="T42.GNS.Publish.RaiseNotification",this.NotificationsExecuteMethod="T42.Notifications.Execute",this.methodsRegistered=!1,this.NOTIFICATIONS_CONFIGURE_METHOD_NAME="T42.Notifications.Configure",this.methodNameRoot="T42.Notifications.Handler-"+Xi.generateId(),this.nextId=0,this.notifications={},this.registry=ki(),this.subscribedForNotifications=!1,this.subscribedCounterStream=!1,this.subscriptionsCountForNotifications=0,this.subscriptionsCountForCounter=0,this.logger=t.subLogger("notifications"),this._panel=new Zr(e,this.onStreamEventCore.bind(this)),this.subscribeInternalEvents()}get maxActions(){return 2}get panel(){return this._panel.toAPI()}async raise(e){var t,n,i,r;if(this.validate(e),!this.methodsRegistered){const e=[];for(let t=eo;t{this.handleNotificationErrorEvent(c,e)}),1)}return c}async setFilter(e){return(await this.interop.invoke("T42.Notifications.Filter",e)).returned}async getFilter(){return(await this.interop.invoke("T42.Notifications.Filter")).returned}async configure(e){var t,n,i,r,o,s,a,c;if(!e||Array.isArray(e))throw new Error("Invalid options - should be an object.");if(0===Object.values(e).length)throw new Error("The argument must be a non-empty object.");if("undefined"!==typeof e.enable&&"boolean"!==typeof e.enable)throw new Error("Expected type of enabled - boolean.");if("undefined"!==typeof e.enableToasts&&"boolean"!==typeof e.enableToasts)throw new Error("Expected type of enableToasts - boolean.");if("undefined"!==typeof e.toastExpiry&&"number"!==typeof e.toastExpiry)throw new Error("Expected type of toastExpiry - number.");if(e.sourceFilter&&"object"!==typeof e.sourceFilter)throw new Error("Expected type of sourceFilter - object.");if((null===(t=e.sourceFilter)||void 0===t?void 0:t.allowed)&&!Array.isArray(null===(n=e.sourceFilter)||void 0===n?void 0:n.allowed))throw new Error("Expected type of sourceFilter.allowed - array.");if((null===(i=e.sourceFilter)||void 0===i?void 0:i.blocked)&&!Array.isArray(null===(r=e.sourceFilter)||void 0===r?void 0:r.blocked))throw new Error("Expected type of sourceFilter.blocked - array.");if(e.toasts&&"object"!==typeof e.toasts)throw new Error("Expected type of (options.toasts - object.");if((null===(o=e.toasts)||void 0===o?void 0:o.mode)&&"string"!==typeof e.toasts.mode)throw new Error("Expected type of (options.toasts.mode - string.");if((null===(s=e.toasts)||void 0===s?void 0:s.stackBy)&&"string"!==typeof e.toasts.stackBy)throw new Error("Expected type of (options.toasts.stackBy - string.");if(e.placement&&"object"!==typeof e.placement)throw new Error("Expected type of (options.placement - object.");if((null===(a=e.placement)||void 0===a?void 0:a.toasts)&&"string"!==typeof e.placement.toasts)throw new Error("Expected type of (options.placement.toasts - string.");if((null===(c=e.placement)||void 0===c?void 0:c.panel)&&"string"!==typeof e.placement.panel)throw new Error("Expected type of (options.placement.panel - string.");return(await this.interop.invoke(this.NOTIFICATIONS_CONFIGURE_METHOD_NAME,e)).returned}async getConfiguration(){return(await this.interop.invoke(this.NotificationsExecuteMethod,{command:"getConfiguration"})).returned}async list(){return(await this.interop.invoke(this.NotificationsExecuteMethod,{command:"list"})).returned.notifications}async updateData(e,t){const n=(e,t)=>"undefined"===typeof t?null:t,i={key:"data",value:{stringValue:JSON.stringify(t,n)}};return(await this.interop.invoke(this.NotificationsExecuteMethod,{command:"create-or-update-attribute",data:{id:e,attribute:i}})).returned}onRaised(e){return this.onStreamEventCore("on-notification-raised",e)}onStateChanged(e){return this.onStreamEventCore("on-state-changed",e)}onClosed(e){return this.onStreamEventCore("on-notification-closed",e)}onConfigurationChanged(e){if("function"!==typeof e)throw new Error("Please provide the callback as a function!");this.subscribe();const t=this.registry.add("on-configuration-changed",e);return()=>{t(),this.closeStreamSubscriptionIfNoNeeded()}}onCounterChanged(e){if("function"!==typeof e)throw new Error("Please provide the callback as a function!");this.subscribeForCounterStream();const t=this.registry.add("on-counter-changed",e);return()=>{t(),this.closeStreamCounterSubscriptionIfNoNeeded()}}onDataChanged(e){if("function"!==typeof e)throw new Error("Please provide the callback as a function!");this.subscribe();const t=this.registry.add("on-notification-data-changed",e);return()=>{t(),this.closeStreamSubscriptionIfNoNeeded()}}async clearAll(){await this.interop.invoke(this.NotificationsExecuteMethod,{command:"clearAll"})}async clearOld(){await this.interop.invoke(this.NotificationsExecuteMethod,{command:"clearAllOld"})}async clear(e){if(!e)throw new Error("The 'id' argument cannot be null or undefined");if("string"!==typeof e)throw new Error("The 'id' argument must be a string");await this.interop.invoke(this.NotificationsExecuteMethod,{command:"clear",data:{id:e}})}async click(e,t,n){await this.interop.invoke(this.NotificationsExecuteMethod,{command:"click",data:{id:e,action:t,options:n}})}async setState(e,t){if(!e)throw new Error("The 'id' argument cannot be null or undefined");if("string"!==typeof e)throw new Error("The 'id' argument must be a string");if(!t)throw new Error("The 'state' argument cannot be null or undefined");this.validateState(t),await this.interop.invoke(this.NotificationsExecuteMethod,{command:"updateState",data:{id:e,state:t}})}toAPI(){return{maxActions:this.maxActions,panel:this._panel.toAPI(),raise:this.raise.bind(this),setFilter:this.setFilter.bind(this),getFilter:this.getFilter.bind(this),configure:this.configure.bind(this),getConfiguration:this.getConfiguration.bind(this),list:this.list.bind(this),onRaised:this.onRaised.bind(this),onStateChanged:this.onStateChanged.bind(this),onClosed:this.onClosed.bind(this),onConfigurationChanged:this.onConfigurationChanged.bind(this),onCounterChanged:this.onCounterChanged.bind(this),onDataChanged:this.onDataChanged.bind(this),clearAll:this.clearAll.bind(this),clearOld:this.clearOld.bind(this),clear:this.clear.bind(this),click:this.click.bind(this),setState:this.setState.bind(this),updateData:this.updateData.bind(this)}}onStreamEventCore(e,t){if("function"!==typeof t)throw new Error("Please provide the callback as a function!");this.subscribe();const n=this.registry.add(e,t);return()=>{n(),this.closeStreamSubscriptionIfNoNeeded()}}handleOptions(e,t){if(e.icon&&(t.attributes=t.attributes||[],t.attributes.push({key:"icon",value:{stringValue:e.icon}})),e.data){t.attributes=t.attributes||[];const n=JSON.stringify(e.data);t.attributes.push({key:"data",value:{stringValue:n}})}"number"===typeof e.panelExpiry&&(t.attributes=t.attributes||[],t.attributes.push({key:"panelExpiry",value:{stringValue:e.panelExpiry.toString()}})),"number"===typeof e.toastExpiry&&(t.attributes=t.attributes||[],t.attributes.push({key:"toastExpiry",value:{stringValue:e.toastExpiry.toString()}}))}handleActions(e,t,n){var i,r,o;const s=e.actions.slice(0,this.maxActions);let a=eo;for(const c of s){const e={g42notificationId:t,g42action:c.action,g42interopMethod:null===(i=c.interop)||void 0===i?void 0:i.method,g42interopTarget:null===(r=c.interop)||void 0===r?void 0:r.target,g42interopArguments:JSON.stringify(null===(o=c.interop)||void 0===o?void 0:o.arguments)},s=Object.keys(e).map((t=>({name:t,value:{stringValue:e[t]}}))),u={name:"".concat(this.methodNameRoot,"_").concat(a),description:c.title,displayName:c.title,parameters:s};n.actions.push(u),a++}}validate(e){if(!e)throw new Error("invalid options - should be an object");if("object"!==typeof e)throw new Error("invalid options - should be an object");if(!e.title)throw new Error("invalid options - should have a title");if("string"!==typeof e.title)throw new Error("invalid options - title should be a string");if(e.severity&&"string"!==typeof e.severity)throw new Error("invalid options - severity should be a string");if(e.panelExpiry&&"number"!==typeof e.panelExpiry)throw new Error("invalid options - panelExpiry should be a number");if(e.toastExpiry&&"number"!==typeof e.toastExpiry)throw new Error("invalid options - toastExpiry should be a number");e.state&&this.validateState(e.state)}validateState(e){if("string"!==typeof e)throw new Error("The 'state' argument must be a string");if(!["Active","Acknowledged","Stale"].includes(e))throw new Error("The state argument: ".concat(e," is not valid!"))}subscribe(){var e=this;this.subscriptionsCountForNotifications++,this.subscribedForNotifications||(this.subscribedForNotifications=!0,this.logger.info('Attempting to subscribe to "'.concat(this.NotificationsSubscribeStream,'".')),this.interop.subscribe(this.NotificationsSubscribeStream,{arguments:{sendDeltaOnly:!0}}).then((t=>{this.subscriptionForNotifications=t,this.logger.info('Successfully subscribed to "'.concat(this.NotificationsSubscribeStream,'".')),t.onData((e=>{let{data:t}=e;this.handleData(t)})),t.onClosed((function(){e.subscribedForNotifications=!1;for(var t=arguments.length,n=new Array(t),i=0;i{this.subscribedForNotifications=!1,this.logger.error('Unable to subscribe to "'.concat(this.NotificationsSubscribeStream,'"'),e)})))}subscribeForCounterStream(){var e=this;this.subscriptionsCountForCounter++,this.subscribedCounterStream||(this.subscribedCounterStream=!0,this.logger.info('Attempting to subscribe to "'.concat(this.NotificationsCounterStream,'".')),this.interop.subscribe(this.NotificationsCounterStream,{arguments:{sendDeltaOnly:!0}}).then((t=>{this.subscriptionForCounter=t,this.logger.info('Successfully subscribed to "'.concat(this.NotificationsCounterStream,'".')),t.onData((e=>{let{data:t}=e;this.registry.execute("on-counter-changed",{count:t.count})})),t.onClosed((function(){e.subscribedCounterStream=!1;for(var t=arguments.length,n=new Array(t),i=0;i{this.subscribedCounterStream=!1,this.logger.error('Unable to subscribe to "'.concat(this.NotificationsCounterStream,'"'),e)})))}subscribeInternalEvents(){this.registry.add("on-notification-closed",(e=>{this.handleOnClosed(e)})),this.registry.add("on-notification-raised",(e=>{this.handleOnShow(e.id)}))}handleData(e){var t;try{"items"in e&&Array.isArray(e.items)?this.handleItemsData(e):"deltas"in e&&Array.isArray(e.deltas)&&this.handleDeltas(e),"configuration"in e&&"object"===typeof e.configuration&&(this.logger.info("Received configuration ".concat(JSON.stringify(e.configuration)," from the stream")),this.registry.execute("on-configuration-changed",e.configuration,e.configuration.allApplications)),"command"in e&&"string"===typeof e.command&&(this.logger.info('Received command "'.concat(null!==(t=e.command)&&void 0!==t?t:JSON.stringify(e),'" from the stream')),"showPanel"!==e.command&&"hidePanel"!==e.command||this.registry.execute("on-panel-visibility-changed","showPanel"===e.command))}catch(n){this.logger.error("Failed to parse data from the stream",n)}}handleItemsData(e){const t=e.items;this.logger.info("Received ".concat(t.length," notifications from the stream"));const n=t;if(e.isSnapshot)n.forEach((e=>{this.registry.execute("on-notification-raised",e)}));else{const e=n[0];"Closed"===e.state?this.registry.execute("on-notification-closed",{id:e.id}):this.registry.execute("on-notification-raised",e)}}handleDeltas(e){e.deltas.forEach((e=>{var t;const n=e.id,i=null!==(t=e.delta)&&void 0!==t?t:{};if("Closed"===i.state)this.registry.execute("on-notification-closed",{id:n,...i});else if(i.state)this.registry.execute("on-state-changed",{id:n},i.state);else if(i.attributes){const e=i.attributes.find((e=>"data"===e.key));e&&this.registry.execute("on-notification-data-changed",{id:n},JSON.parse(e.value.stringValue))}}))}handleOnClosed(e){const{notification:t,key:n}=this.getNotification(e);t&&(this.handleEvent(t,"close"),delete this.notifications[n])}handleOnShow(e){const{notification:t}=this.getNotification(e);t&&this.handleEvent(t,"show")}getNotification(e){let t,n;for(const i in this.notifications)if(this.notifications[i].id===e){t=this.notifications[i],n=i;break}return{notification:t,key:n}}handleNotificationEvent(e){const t=this.getGnsNotificationArgs(e);if("unknown"===t.event)return;const n=this.notifications[t.notificationId];n&&this.handleNotificationEventCore(n,t)}handleNotificationEventCore(e,t){switch(t.event){case"action":return this.handleNotificationActionEvent(e,t.notificationActionPayload);case"click":return this.handleNotificationClickEvent(e);case"close":return this.handleEvent(e,"close");case"error":return this.handleNotificationErrorEvent(e,t.error);case"show":return this.handleEvent(e,"show")}}handleNotificationActionEvent(e,t){const n={type:"onaction",action:t.g42action};e.onaction&&e.onaction(n),e.dispatchEvent(n)}handleNotificationClickEvent(e){const t={type:"onclick"};e.onclick&&e.onclick(t),e.dispatchEvent(t)}handleEvent(e,t){var n;const i={type:t};null===(n=e["on".concat(t)])||void 0===n||n.call(e,i),e.dispatchEvent(i)}handleNotificationErrorEvent(e,t){const n={type:"onerror",error:t};e.onerror&&e.onerror(n),e.dispatchEvent(n)}getGnsNotificationArgs(e){var t;let n;const i=null===(t=e.notification)||void 0===t?void 0:t.event;return n=i?{event:i,notificationId:e.notification.sourceNotificationId,notificationActionPayload:e}:this.getBackwardGnsNotificationArgs(e),n}getBackwardGnsNotificationArgs(e){var t;let n;return n=e.g42notificationId?{event:"action",notificationId:e.g42notificationId,notificationActionPayload:e}:(null===(t=e.notification)||void 0===t?void 0:t.sourceNotificationId)?{event:"click",notificationId:e.notification.sourceNotificationId,notificationActionPayload:e}:{event:"unknown",notificationId:void 0,notificationActionPayload:e},n}closeStreamSubscriptionIfNoNeeded(){this.subscriptionsCountForNotifications--,this.subscriptionForNotifications&&0===this.subscriptionsCountForNotifications&&(this.subscriptionForNotifications.close(),this.subscriptionForNotifications=void 0)}closeStreamCounterSubscriptionIfNoNeeded(){this.subscriptionsCountForCounter--,this.subscriptionForCounter&&0===this.subscriptionsCountForCounter&&(this.subscriptionForCounter.close(),this.subscriptionForCounter=void 0)}}const no="T42.Themes.Configuration";class io{constructor(e,t){this.contexts=e,this.interop=t,this.registry=ki(),this.isSubscribed=!1,this.getConfiguration()}async list(){if(await this.getConfiguration(),!this.getMethodName)throw new Error("not supported");return(await this.getAll()).returned.all}async getCurrent(){if(await this.getConfiguration(),!this.getMethodName)throw new Error("not supported");const e=await this.getAll();return e.returned.all.find((t=>t.name===e.returned.selected))}async select(e){if(await this.getConfiguration(),!this.setMethodName)throw new Error("not supported");await this.interop.invoke(this.setMethodName,{theme:e})}onChanged(e){return this.subscribe(),this.registry.add("changed",e)}async getConfiguration(){try{if(this.sharedContextName)return;const e=await this.interop.invoke(no);this.sharedContextName=e.returned.sharedContextName,this.getMethodName=e.returned.getThemesMethodName,this.setMethodName=e.returned.setThemesMethodName}catch(e){return}}async getAll(){return await this.getConfiguration(),await this.interop.invoke(this.getMethodName)}async subscribe(){await this.getConfiguration(),this.isSubscribed||(this.isSubscribed=!0,this.contexts.subscribe(this.sharedContextName,(e=>{e&&e.all&&e.selected&&this.registry.execute("changed",e.all.find((t=>t.name===e.selected)))})))}}function ro(e,t){const n=new io(e,t);return{list:n.list.bind(n),getCurrent:n.getCurrent.bind(n),select:n.select.bind(n),onChanged:n.onChanged.bind(n),ready:()=>Promise.resolve()}}const oo="Tick42.FDC3.Intents.",so="T42.Intents.Resolver.Control",ao=400,co=440,uo=6e4,lo=["applicationName","type"],ho="intentsResolver",po=6e4,fo=9e4,go=9e4,mo=(e,t,n)=>new Promise(((i,r)=>{const o=setTimeout((()=>{const e=n||"Promise timeout hit: ".concat(t);r(e)}),t);new Promise(e).then((e=>{clearTimeout(o),i(e)})).catch((e=>{clearTimeout(o),r(e)}))})),vo=(e,t,n)=>new Promise(((i,r)=>{let o=!0;const s=setTimeout((()=>{if(!o)return;o=!1;const e=n||"Promise timeout hit: ".concat(t);r(e)}),t);e().then((e=>{o&&(o=!1,clearTimeout(s),i(e))})).catch((e=>{o&&(o=!1,clearTimeout(s),r(e))}))})),yo=e=>{if("object"!==typeof e)return{isValid:!1,error:"Response object has invalid 'handler' key. Expected an object, got ".concat(typeof e)};const t=lo.filter((t=>!(t in e)));return t.length?{isValid:!1,error:"Handler in Response object does not provide compulsory keys: ".concat(t.join(", "))}:{isValid:!0,ok:e}},wo=e=>{if(Object.keys(e).some((e=>"intent"!==e&&"handler"!==e)))return{isValid:!1,error:"Response is not a valid object. Expected { intent: string, handler: IntentHandler }"};if("string"!==typeof e.intent)return{isValid:!1,error:"Response object has invalid 'intent' key. Expected a string, got ".concat(typeof e.intent)};const{isValid:t,error:n}=yo(e.handler);return t?{isValid:!0,ok:{intent:e.intent,handler:e.handler}}:{isValid:!1,error:n}},bo=e=>{if(!e.handler)return{isValid:!1,error:"Response is not a valid object. Expected { handler: IntentHandler }"};const{isValid:t,error:n}=yo(e.handler);return t?{isValid:!0,ok:{handler:e.handler}}:{isValid:!1,error:n}},_o=e=>{if(e&&"string"!==typeof e&&"object"!==typeof e)throw new Error('Please provide the intent target as one of the valid values: "reuse", "startNew", { app: string }, { instance: string } ')},Co=e=>{if(e){if("object"!==typeof e)throw new Error("Please provide the intent context as an object");if(e.type&&"string"!==typeof e.type)throw new Error("Please provide the intent context as an object with 'type' property as string");if(e.data&&"object"!==typeof e.data)throw new Error("Please provide the intent context as an object with 'data' property as object")}},Io=e=>{if(!e.applicationName)throw new Error("Please provide applicationName for handler ".concat(JSON.stringify(e)));if(!e.type)throw new Error("Please provide type for handler ".concat(JSON.stringify(e)));if("instance"===e.type&&!e.instanceId)throw new Error("Please provide instanceId for handler ".concat(JSON.stringify(e)))},So=e=>{if(e){if("number"!==typeof e)throw new Error("Please provide the timeout as a number");if(e<=0)throw new Error("Please provide the timeout as a positive number")}},ko=e=>{if(e&&"boolean"!==typeof e)throw new Error("Please provide waitUserResponseIndefinitely as a boolean")},xo=e=>{if(!e)throw new Error("Provide 'handlerFilter' with at least one filter criteria of the following: 'intent' | 'contextTypes' | 'resultType' | 'applicationNames'");const{title:t,openResolver:n,timeout:i,intent:r,contextTypes:o,resultType:s,applicationNames:a}=e;if("undefined"!==typeof t&&("string"!==typeof t||!t.length))throw new Error("Provide 'title' as a non empty string");if("undefined"!==typeof n&&"boolean"!==typeof n)throw new Error("Provide 'openResolver' prop as a boolean");if("undefined"!==typeof i&&("number"!==typeof i||i<=0))throw new Error("Provide 'timeout' prop as a positive number");if("undefined"!==typeof r&&("string"!==typeof r||!r.length))throw new Error("Provide 'intent' as a non empty string");if("undefined"!==typeof o&&(!Array.isArray(o)||o.some((e=>"string"!==typeof e))))throw new Error("Provide 'contextTypes' as an array of non empty strings");if("undefined"!==typeof s&&("string"!==typeof s||!s.length))throw new Error("Provide 'resultType' as a non empty string");if("undefined"!==typeof a&&(!Array.isArray(a)||a.some((e=>"string"!==typeof e))))throw new Error("Provide 'applicationNames' as an array of non empty strings");const c="Provide at least one filter criteria of the following: 'intent' | 'contextTypes' | 'resultType' | 'applicationNames'";if(!Object.keys(e).length)throw new Error(c);if(!r&&!s&&(!o||!o.length)&&(!a||!a.length))throw new Error(c)},To=(e,t)=>"raise"===e?wo(t):bo(t),Ao=e=>{Co(e.context),_o(e.target),So(e.timeout),ko(e.waitUserResponseIndefinitely),e.handlers&&e.handlers.forEach((e=>Io(e)))},Eo=e=>{if("object"!==typeof e)throw new Error("IntentHandler must be an object");if("string"!==typeof e.applicationName||!e.applicationName.length)throw new Error("Please provide 'applicationName' as a non-empty string");if("string"!==typeof e.type||!["app","instance"].includes(e.type))throw new Error("Invalid 'type' property. Expected 'app' | 'instance' got ".concat(e.type));if("undefined"!==typeof e.applicationTitle&&"string"!==typeof e.applicationTitle)throw new Error("Provide 'applicationTitle' as a string");if("undefined"!==typeof e.applicationDescription&&"string"!==typeof e.applicationDescription)throw new Error("Provide 'applicationDescription' as a string");if("undefined"!==typeof e.applicationIcon&&"string"!==typeof e.applicationIcon)throw new Error("Provide 'applicationIcon' as a string");if("undefined"!==typeof e.displayName&&"string"!==typeof e.displayName)throw new Error("Provide 'displayName' as a string");if("undefined"!==typeof e.contextTypes&&(!Array.isArray(e.contextTypes)||e.contextTypes.some((e=>"string"!==typeof e))))throw new Error("Provide 'contextTypes' as an array of non empty strings");if("undefined"!==typeof e.instanceId&&"string"!==typeof e.instanceId)throw new Error("Provide 'instanceId' as a string");if("undefined"!==typeof e.instanceTitle&&"string"!==typeof e.instanceTitle)throw new Error("Provide 'instanceTitle' as a string");if("undefined"!==typeof e.resultType&&"string"!==typeof e.resultType)throw new Error("Provide 'resultType' as a string")},Po=e=>{Object.keys(e).forEach((t=>{null!==e[t]&&void 0!==e[t]||delete e[t]}))};class Mo{constructor(e,t,n,i,r){this.interop=e,this.windows=t,this.logger=n,this.appManager=r,this.myIntents=new Set,this.intentsResolverResponsePromises={},this.useIntentsResolverUI=!0,this.unregisterIntentPromises=[],this.checkIfIntentsResolverIsEnabled(i,r)}async find(e){await Promise.all(this.unregisterIntentPromises);let t=await this.all();if("undefined"===typeof e)return t;if("string"===typeof e)return t.filter((t=>t.name===e));if("object"!==typeof e)throw new Error("Please provide the intentFilter as a string or an object!");if(e.contextType){const n=e.contextType.toLowerCase();t=t.filter((e=>e.handlers.some((e=>{var t;return null===(t=e.contextTypes)||void 0===t?void 0:t.some((e=>e.toLowerCase()===n))}))))}if(e.resultType){const n=e.resultType.toLowerCase();t=t.filter((e=>e.handlers.some((e=>{var t;return(null===(t=e.resultType)||void 0===t?void 0:t.toLowerCase())===n}))))}return e.name&&(t=t.filter((t=>t.name===e.name))),t}async raise(e){if("string"!==typeof e&&"object"!==typeof e||"object"===typeof e&&"string"!==typeof e.intent)throw new Error("Please provide the intent as a string or an object with an intent property!");"string"===typeof e&&(e={intent:e}),Ao(e),await Promise.all(this.unregisterIntentPromises);const t=e.timeout||fo,n={},i=this.coreRaiseIntent.bind(this,{request:e,resolverInstance:n,timeout:t});if(e.waitUserResponseIndefinitely)return i();const r=vo(i,t,"Timeout of ".concat(t,"ms hit for intent request ").concat(JSON.stringify(e)));return r.catch((()=>this.handleRaiseOnError(n.instanceId))),r}async all(){let e;await Promise.all(this.unregisterIntentPromises);try{const t=await this.interop.invoke("T42.ACS.GetApplications",{withIntentsInfo:!0});e=t.returned.applications}catch(a){return this.logger.error("Failed to get the applications!",a),[]}const t={},n=e.filter((e=>e.intents&&e.intents.length>0));for(const c of n)for(const e of c.intents){let n=t[e.name];n||(n={name:e.name,handlers:[]},t[e.name]=n);const i={applicationName:c.name,applicationTitle:c.title||"",applicationDescription:c.caption,displayName:e.displayName,contextTypes:e.contexts,applicationIcon:c.icon,type:"app",resultType:e.resultType};n.handlers.push(i)}const i=this.interop.servers(),r=i.map((e=>e.windowId)).filter((e=>"undefined"!==typeof e)),o="T42.Wnd.GetInfo";let s;if(this.interop.methods().some((e=>e.name===o)))try{const e=await this.interop.invoke(o,{ids:r});s=e.returned.windows}catch(a){}for(const c of i)await Promise.all(c.getMethods().filter((e=>e.name.startsWith(oo))).map((async n=>{const i=n.name.replace(oo,"");let r=t[i];r||(r={name:i,handlers:[]},t[i]=r);const o=n.flags.intent,a=e.find((e=>e.name===c.application));let u;a&&a.intents&&(u=a.intents.find((e=>e.name===i)));const d=await this.windowsIdToTitle(c.windowId,s),l={instanceId:c.instance,applicationName:c.application,applicationIcon:o.icon||(null===a||void 0===a?void 0:a.icon),applicationTitle:(null===a||void 0===a?void 0:a.title)||"",applicationDescription:o.description||(null===a||void 0===a?void 0:a.caption),displayName:o.displayName||(null===u||void 0===u?void 0:u.displayName),contextTypes:o.contextTypes||(null===u||void 0===u?void 0:u.contexts),instanceTitle:d,type:"instance",resultType:(null===u||void 0===u?void 0:u.resultType)||o.resultType};r.handlers.push(l)})));return Object.values(t)}addIntentListener(e,t){if("string"!==typeof e&&"object"!==typeof e||"object"===typeof e&&"string"!==typeof e.intent)throw new Error("Please provide the intent as a string or an object with an intent property!");if("function"!==typeof t)throw new Error("Please provide the handler as a function!");const n="string"===typeof e?e:e.intent,i="".concat(oo).concat(n);let r,o={};if(this.myIntents.has(n))throw new Error("Intent listener for intent ".concat(n," already registered!"));this.myIntents.add(n);const s={unsubscribe:()=>{this.myIntents.delete(n),r.then((()=>this.interop.unregister(i))).catch((e=>this.logger.trace("Unregistration of a method with name ".concat(i," failed with reason: ").concat(JSON.stringify(e)))))}};if("object"===typeof e){const{intent:t,...n}=e;o=n}return r=this.interop.register({name:i,flags:{intent:o}},(e=>{if(this.myIntents.has(n))return t(e)})),r.catch((e=>{this.myIntents.delete(n),this.logger.warn("Registration of a method with name ".concat(i," failed with reason: ").concat(JSON.stringify(e)))})),s}async register(e,t){if("string"!==typeof e&&"object"!==typeof e||"object"===typeof e&&"string"!==typeof e.intent)throw new Error("Please provide the intent as a string or an object with an intent property!");if("function"!==typeof t)throw new Error("Please provide the handler as a function!");await Promise.all(this.unregisterIntentPromises);const n="string"===typeof e?e:e.intent,i=this.buildInteropMethodName(n);let r={};if(this.myIntents.has(n))throw new Error("Intent listener for intent ".concat(n," already registered!"));if(this.myIntents.add(n),"object"===typeof e){const{intent:t,...n}=e;r=n}try{await this.interop.register({name:i,flags:{intent:r}},((e,i)=>{if(this.myIntents.has(n))return t(e,i)}))}catch(o){throw this.myIntents.delete(n),new Error("Registration of a method with name ".concat(i," failed with reason: ").concat(JSON.stringify(o)))}return{unsubscribe:()=>this.unsubscribeIntent(n)}}async filterHandlers(e){var t,n;if(xo(e),e.openResolver&&!this.useIntentsResolverUI)throw new Error("Cannot resolve 'filterHandlers' request using Intents Resolver UI because it's globally disabled");null===(t=this.logger)||void 0===t||t.trace("Received 'filterHandlers' command with request: ".concat(JSON.stringify(e)));const i=this.filterHandlersBy(await this.all(),e);if(!i||!i.length)return{handlers:[]};const{open:r,reason:o}=this.checkIfResolverShouldBeOpenedForFilterHandlers(i,e);if(!r)return null===(n=this.logger)||void 0===n||n.trace("Intent Resolver UI won't be used. Reason: ".concat(o)),{handlers:i};const s={instanceId:void 0},a=e.timeout||go;return{handlers:[await vo((()=>this.startResolverApp({request:e,resolverInstance:s,method:"filterHandlers"})),a,"Timeout of ".concat(a,"ms hit for 'filterHandlers' request with filter: ").concat(JSON.stringify(e)))]}}async getIntents(e){var t;this.logger.trace("Received 'getIntents' command with handler ".concat(JSON.stringify(e))),Eo(e);const n=await this.all();Po(e),null===(t=this.logger)||void 0===t||t.trace("Extracting valid intents for the passed handler");const i=this.extractIntentsWithInfoByHandler(n,e);return this.logger.trace("Returning intents for handler ".concat(JSON.stringify(e))),{intents:i}}filterHandlersBy(e,t){const n=e.filter((e=>{if(!t.intent||t.intent===e.name){if(t.resultType){const n=e.handlers.filter((e=>e.resultType&&e.resultType===t.resultType));if(!n.length)return;e.handlers=n}if(t.contextTypes){const n=e.handlers.filter((e=>{var n;return null===(n=t.contextTypes)||void 0===n?void 0:n.every((t=>{var n;return null===(n=e.contextTypes)||void 0===n?void 0:n.includes(t)}))}));if(!n.length)return;e.handlers=n}if(t.applicationNames){const n=e.handlers.filter((e=>{var n;return null===(n=t.applicationNames)||void 0===n?void 0:n.includes(e.applicationName)}));if(!n.length)return;e.handlers=n}return e}}));return n.map((e=>e.handlers)).flat(1)}async coreRaiseIntent(e){let{request:t,resolverInstance:n,timeout:i}=e;var r,o;const s=await this.get(t.intent);if("undefined"===typeof s)throw new Error("Intent ".concat(t.intent," not found."));const{open:a,reason:c}=this.checkIfResolverShouldBeOpenedForRaise(s,t);if(!a)return this.logger.trace("Intent Resolver UI won't be used. Reason: ".concat(c)),t.waitUserResponseIndefinitely?vo((()=>this.raiseIntent(t,i)),i,"Timeout of ".concat(i,"ms hit for raise to resolve")):this.raiseIntent(t,i);const u=await this.startResolverApp({request:t,method:"raise",resolverInstance:n});if(null===(r=this.logger)||void 0===r||r.trace("Raising intent to target handler: ".concat(JSON.stringify(u)," with timeout of ").concat(i)),t.waitUserResponseIndefinitely)return vo((()=>this.raiseIntentToTargetHandler(t,u,i)),i,"Timeout of ".concat(i,"ms hit for raise to resolve"));const d=await this.raiseIntentToTargetHandler(t,u,i);return null===(o=this.logger)||void 0===o||o.trace("Result from raise() method for intent ".concat(JSON.stringify(t.intent),": ").concat(JSON.stringify(d))),d}async get(e){return(await this.all()).find((t=>t.name===e))}async raiseIntent(e,t){const n=e.intent,i=await this.get(n);if("undefined"===typeof i)throw new Error("Intent ".concat(n," not found."));const r=e.handlers?this.findHandlerByFilter(e.handlers,{type:"app"}):this.findHandlerByFilter(i.handlers,{type:"app"}),o=e.handlers?this.findHandlerByFilter(e.handlers,{type:"instance"}):this.findHandlerByFilter(i.handlers,{type:"instance"});let s;if(e.target&&"reuse"!==e.target||(s=o||r),"startNew"===e.target&&(s=r),"object"===typeof e.target&&e.target.app&&(s=this.findHandlerByFilter(i.handlers,{app:e.target.app})),"object"===typeof e.target&&e.target.instance&&(s=this.findHandlerByFilter(i.handlers,{instance:e.target.instance,app:e.target.app})),!s)throw new Error("Can not raise intent for request ".concat(JSON.stringify(e)," - can not find intent handler!"));return await this.raiseIntentToTargetHandler(e,s,t)}async raiseIntentToTargetHandler(e,t,n){var i,r;null===(i=this.logger)||void 0===i||i.trace("Raising intent to target handler:".concat(JSON.stringify(t))),t.instanceId||(t.instanceId=await this.invokeStartApp(t.applicationName,e.context,e.options));const o="".concat(oo).concat(e.intent),s={methodResponseTimeoutMs:n?n+1e3:po,waitTimeoutMs:n?n+1e3:po},a=await this.interop.invoke(o,e.context,{instance:t.instanceId},s);return null===(r=this.logger)||void 0===r||r.trace("raiseIntent command completed. Returning result: ".concat(JSON.stringify(a))),{request:e,handler:{...t,type:"instance"},result:a.returned}}async startResolverApp(e){let{request:t,method:n,resolverInstance:i}=e;var r,o,s,a;null===(r=this.logger)||void 0===r||r.trace("Intents Resolver UI with app name ".concat(this.intentsResolverAppName," will be used for request: ").concat(JSON.stringify(t)));const c=await this.registerIntentResolverMethod(n);null===(o=this.logger)||void 0===o||o.trace("Registered interop method ".concat(c));const u=this.buildStartContext(n,t,c),d=await this.buildStartOptions();null===(s=this.logger)||void 0===s||s.trace("Starting Intents Resolver UI with context: ".concat(JSON.stringify(u)," and options: ").concat(JSON.stringify(d)));const l=await this.appManager.application(this.intentsResolverAppName).start(u,d);i.instanceId=l.id,null===(a=this.logger)||void 0===a||a.trace("Intents Resolver instance with id ".concat(l.id," opened")),this.subscribeOnInstanceStopped(l,n);const h=t.timeout||"raise"===n?fo:go;return this.createResponsePromise({intent:"raise"===n?t.intent:void 0,instanceId:l.id,responseMethodName:c,timeout:h,errorMsg:"Timeout of ".concat(h,"ms hit waiting for the user to choose a handler ").concat("raise"===n?"for intent ".concat(t.intent):"for '".concat(n,"' method with filter ").concat(JSON.stringify(t)))}),await this.handleInstanceResponse(l.id,n)}async windowsIdToTitle(e,t){var n,i;if("undefined"!==typeof t)return null===(n=t.find((t=>t.id===e)))||void 0===n?void 0:n.title;const r=null===(i=this.windows)||void 0===i?void 0:i.findById(e);return await(null===r||void 0===r?void 0:r.getTitle())}async handleInstanceResponse(e,t){var n,i;try{const r=await this.intentsResolverResponsePromises[e].promise;return null===(n=this.logger)||void 0===n||n.trace("Intent handler chosen ".concat("raise"===t?"for intent ".concat(r.intent," "):"",": ").concat(JSON.stringify(r.handler),". Stopping resolver instance with id ").concat(e)),this.stopResolverInstance(e),null===(i=this.logger)||void 0===i||i.trace("Instance with id ".concat(e," successfully stopped")),r.handler}catch(r){throw this.stopResolverInstance(e),new Error(r)}}async registerIntentResolverMethod(e){const t=so+Xi.generateId();return await this.interop.register(t,((t,n)=>this.resolverResponseHandler(t,n,e))),t}resolverResponseHandler(e,t,n){const{instance:i}=t,r=To(n,e);if(!r)return this.logger.trace("Intent Resolver instance with id ".concat(t.instance," sent invalid response. Error: ").concat(r.error)),this.intentsResolverResponsePromises[i].reject(r.error),void this.stopResolverInstance(i);const o=r.ok;this.intentsResolverResponsePromises[i].resolve(o),this.cleanUpIntentResolverPromise(i)}buildStartContext(e,t,n){const i={callerId:this.interop.instance.instance,methodName:n};return"raise"===e?{...i,intent:t}:{...i,handlerFilter:t}}async buildStartOptions(){const e=this.windows.my();if(!e)return;const t=await e.getBounds();return{top:(t.height-co)/2+t.top,left:(t.width-ao)/2+t.left,width:ao,height:co}}createResponsePromise(e){let{instanceId:t,intent:n,responseMethodName:i,timeout:r,errorMsg:o}=e,s=()=>{},a=()=>{};const c=mo(((e,t)=>{s=e,a=t}),r,o);this.intentsResolverResponsePromises[t]={intent:n,resolve:s,reject:a,promise:c,methodName:i}}async invokeStartApp(e,t,n){return(await this.interop.invoke("T42.ACS.StartApplication",{Name:e,options:n})).returned.Id}subscribeOnInstanceStopped(e,t){const{application:n}=e,i=n.onInstanceStopped((n=>{if(n.id!==e.id)return;const r=this.intentsResolverResponsePromises[n.id];if(!r)return i();const o="Cannot resolve ".concat("raise"===t?"raised intent ".concat(r.intent):"'".concat(t,"' method")," - User closed ").concat(e.application.name," app without choosing a handler");r.reject(o),this.cleanUpIntentResolverPromise(n.id),i()}))}async cleanUpIntentResolverPromise(e){const t=this.intentsResolverResponsePromises[e];t&&(this.interop.unregister(t.methodName).catch((e=>this.logger.warn(e))),delete this.intentsResolverResponsePromises[e])}handleRaiseOnError(e){e&&this.stopResolverInstance(e)}stopResolverInstance(e){const t=this.windows.findById(e);null===t||void 0===t||t.close().catch((e=>this.logger.error(e)))}checkIfIntentsResolverIsEnabled(e,t){var n,i,r,o,s;t?(this.useIntentsResolverUI="boolean"!==typeof(null===(n=e.intents)||void 0===n?void 0:n.enableIntentsResolverUI)||e.intents.enableIntentsResolverUI,this.intentsResolverAppName=null!==(r=null===(i=e.intents)||void 0===i?void 0:i.intentsResolverAppName)&&void 0!==r?r:ho,this.intentsResolverResponseTimeout=null!==(s=null===(o=e.intents)||void 0===o?void 0:o.methodResponseTimeoutMs)&&void 0!==s?s:uo):this.useIntentsResolverUI=!1}checkIfResolverShouldBeOpenedForRaise(e,t){const n=this.checkIfIntentsResolverShouldBeOpened();return n.open?this.checkIfIntentHasMoreThanOneHandler(e,t)?{open:!0}:{open:!1,reason:"Raised intent ".concat(e.name," has only one handler")}:n}checkIfResolverShouldBeOpenedForFilterHandlers(e,t){return 1===e.length?{open:!1,reason:"There's only one valid intent handler for filter ".concat(JSON.stringify(t))}:"boolean"!==typeof(null===t||void 0===t?void 0:t.openResolver)||t.openResolver?this.checkIfIntentsResolverShouldBeOpened():{open:!1,reason:"Intents resolver is disabled by IntentHandler filter"}}checkIfIntentsResolverShouldBeOpened(){return this.useIntentsResolverUI?this.appManager.application(this.intentsResolverAppName)?{open:!0}:{open:!1,reason:"Intent Resolver Application with name ".concat(this.intentsResolverAppName," not found.")}:{open:!1,reason:"Intent Resolver is disabled. Resolving to first found handler"}}checkIfIntentHasMoreThanOneHandler(e,t){return t.target?"reuse"===t.target?t.handlers?t.handlers.filter((e=>"instance"===e.type&&e.instanceId)).length>1||t.handlers.filter((e=>"app"===e.type)).length>1:e.handlers.filter((e=>"instance"===e.type&&e.instanceId)).length>1||e.handlers.filter((e=>"app"===e.type)).length>1:"startNew"===t.target?t.handlers?t.handlers.filter((e=>"app"===e.type)).length>1:e.handlers.filter((e=>"app"===e.type)).length>1:(t.target,!1):t.handlers?t.handlers.length>1:e.handlers.length>1}buildInteropMethodName(e){return"".concat(oo).concat(e)}clearUnregistrationPromise(e){this.unregisterIntentPromises=this.unregisterIntentPromises.filter((t=>t!==e))}unsubscribeIntent(e){this.myIntents.delete(e);const t=this.buildInteropMethodName(e),n=this.interop.unregister(t);this.unregisterIntentPromises.push(n),n.then((()=>{this.clearUnregistrationPromise(n)})).catch((e=>{this.logger.error("Unregistration of a method with name ".concat(t," failed with reason: "),e),this.clearUnregistrationPromise(n)}))}findHandlerByFilter(e,t){return t.type?e.find((e=>e.type===t.type)):t.instance?e.find((e=>t.app?e.applicationName===t.app&&e.instanceId===t.instance:e.instanceId===t.instance)):t.app?e.find((e=>e.applicationName===t.app)):void 0}extractIntentsWithInfoByHandler(e,t){const n=e.reduce(((e,n)=>(n.handlers.forEach((i=>{const r=Object.keys(t).every((e=>{var n;return"contextTypes"===e?null===(n=t.contextTypes)||void 0===n?void 0:n.every((e=>{var t;return null===(t=i.contextTypes)||void 0===t?void 0:t.includes(e)})):i[e]===t[e]}));if(!r)return;const o={intent:n.name,contextTypes:i.contextTypes,description:i.applicationDescription,displayName:i.displayName,icon:i.applicationIcon,resultType:i.resultType};e.push(o)})),e)),[]);return n}}class Ro{constructor(){this.initialized=!1,this.details=[],this.reject=()=>{},this.resolve=()=>{}}init(e){this.initialized=!0,this.addCall(e),this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}addCall(e){this.details.push({date:new Date,config:e})}done(e){this.resolve(e)}error(e){this.reject(e)}}class No{constructor(e,t){this.appName=e,this.interop=t,this.registry=ki(),this.interopMethodRegistered=!1}async get(e){return(await this.interop.invoke("T42.Prefs.Get",{app:null!==e&&void 0!==e?e:this.appName})).returned}async set(e,t){var n;this.verifyDataObject(e),await this.interop.invoke("T42.Prefs.Set",{app:null!==(n=null===t||void 0===t?void 0:t.app)&&void 0!==n?n:this.appName,data:e,merge:!1})}async setFor(e,t){return this.verifyApp(e),this.verifyDataObject(t),this.set(t,{app:e})}async update(e,t){var n;this.verifyDataObject(e),await this.interop.invoke("T42.Prefs.Set",{app:null!==(n=null===t||void 0===t?void 0:t.app)&&void 0!==n?n:this.appName,data:e,merge:!0})}async updateFor(e,t){return this.verifyApp(e),this.verifyDataObject(t),this.update(t,{app:e})}async clear(e){await this.interop.invoke("T42.Prefs.Set",{app:null!==e&&void 0!==e?e:this.appName,clear:!0})}async clearFor(e){this.verifyApp(e),await this.interop.invoke("T42.Prefs.Set",{app:e,clear:!0})}async getAll(){return(await this.interop.invoke("T42.Prefs.Get")).returned}async clearAll(){await this.interop.invoke("T42.Prefs.Set",{clear:!0})}subscribe(e){return this.verifyCallback(e),this.subscribeFor(this.appName,e)}subscribeFor(e,t){this.verifyApp(e),this.verifyCallback(t);const n=this.registry.add(e,t);return this.registerInteropIfNeeded().then((()=>{this.interop.invoke("T42.Prefs.Get",{app:e,subscribe:!0})})),()=>{n()}}async registerInteropIfNeeded(){this.interopMethodRegistered||(this.interopMethodRegistered=!0,await this.interop.register("T42.Prefs.Update",(e=>{this.registry.execute(e.app,e)})))}verifyApp(e){if(!e)throw new Error("app should be defined");if(!Yt(e))throw new Error("app should be a string")}verifyDataObject(e){if(!e)throw new Error("data should be defined");if(!Xt(e))throw new Error("data should be an object")}verifyCallback(e){if(!on(e))throw new Error("callback should be defined")}}class Oo{constructor(e,t){this.methodName=e,this.interop=t}async get(e){return(await this.invoke("get-cookies",{filter:e})).returned.cookies}async set(e){this.verifyCookieObject(e),await this.invoke("set-cookie",e)}async remove(e,t){if(!Yt(e))throw new Error("url should be a string");if(!Yt(t))throw new Error("name should be a string");await this.invoke("remove-cookie",{url:e,name:t})}invoke(e,t){return this.interop.invoke(this.methodName,{command:e,args:t})}verifyCookieObject(e){if(!e)throw new Error("cookie should be defined");if(!Xt(e))throw new Error("cookie should be an object")}}function jo(e,t){const n=new Oo(t,e);return{get:n.get.bind(n),remove:n.remove.bind(n),set:n.set.bind(n),ready:()=>Promise.resolve()}}class Do{constructor(e){this.config=e,this.glue42EventName="Glue42",this.events={notifyStarted:{name:"notifyStarted",handle:this.handleNotifyStarted.bind(this)},requestGlue:{name:"requestGlue",handle:this.handleRequestGlue.bind(this)}}}start(e){Xi.isNode()||(this.glue=e,this.wireCustomEventListener(),this.announceStarted())}wireCustomEventListener(){window.addEventListener(this.glue42EventName,(e=>{const t=e.detail;if(!t||!t.glue42)return;const n=t.glue42.event,i=this.events[n];i&&i.handle(t.glue42.message)}))}announceStarted(){this.send("start")}handleRequestGlue(){this.config.exposeAPI?this.send("requestGlueResponse",{glue:this.glue}):this.send("requestGlueResponse",{error:"Will not give access to the underlying Glue API, because it was explicitly denied upon initialization."})}handleNotifyStarted(){this.announceStarted()}send(e,t){const n={glue42:{event:e,message:t}},i=new CustomEvent(this.glue42EventName,{detail:n});window.dispatchEvent(i)}}const Fo=new Ro,Wo=async e=>{let t=!1;Fo.initialized||(t=!0,Fo.init(e));const n="undefined"!==typeof window&&window.glue42gd;if(n&&!t)return Fo.addCall(e),Fo.promise;const i=await Lo(e,n);return Fo.resolve(i),i},Lo=async(e,t)=>{const n="T42.GD.Execute",i=Xi.getGDMajorVersion(),r=Yr(e=e||{});let o,s,a,c,u;e.gateway=e.gateway||{};const d=new Do(r);function l(e){if(r.windows){const t=I("windows",e.logger,r.windows);return a=mr(e.agm,t,(()=>o),(()=>c),(()=>u),i),x(a),a}}function h(e){var n;if(r.activities&&ai.checkIsUsingGW3Implementation&&ai.checkIsUsingGW3Implementation(e.connection)){const c=I("activity",e.logger,r.activities);return s=new ai({connection:e.connection,contexts:e.contexts,agm:e.agm,logger:c,logLevel:"info",disableAutoAnnounce:!1,disposeRequestHandling:"exit",announcementInfo:null,windows:a,appManagerGetter:()=>o,mode:r.activities.mode,typesToTrack:r.activities.typesToTrack,activityId:null===(n=null===t||void 0===t?void 0:t.activityInfo)||void 0===n?void 0:n.activityId,gdMajorVersion:i}).api,x(s),s}}function p(e){if(!r.appManager)return;const t=I("appManager",e.logger,r.appManager);return o=$i({agm:e.agm,windows:a,logger:t,activities:s,mode:r.appManager.mode,gdMajorVersion:i}),x(o),o}function f(e){var t;if(!r.layouts)return;const n=I("layouts",e.logger,r.layouts),a=r.layouts,c=xr({agm:e.agm,appManager:o,activityGetter:()=>s,logger:n,mode:a.mode,autoSaveWindowContext:null!==(t=a.autoSaveWindowContext)&&void 0!==t&&t,gdMajorVersion:i});return x(c),c}function g(e){if(!r.channels)return;if(!e.contexts)return;const t=I("channels",e.logger,r.channels);return u=Hr(e.contexts,e.agm,(()=>a),t),x(u),u}function m(e){const t=$r(e.agm);return x(t),t}function v(t){const n=new Mo(t.agm,a,t.logger.subLogger("intents"),e,o);return x(n),n}function y(e){const t=new to(e.interop,e.logger).toAPI();return x(t),t}function w(e){if(r.displays){const t=I("displays",e.logger,r.displays);return c=new Er(e.agm,t),x(c),c}}function b(e){if(!e.contexts)return;const t=ro(e.contexts,e.interop);return x(t),t}function _(n){var i,r;const o=null!==(r=null!==(i=e.application)&&void 0!==i?i:null===t||void 0===t?void 0:t.application)&&void 0!==r?r:n.interop.instance.application,s=new No(o,n.interop);return x(s),s}function C(e){const t=jo(e.interop,n);return x(t),t}function I(e,t,n){const i=t.subLogger(e);if(n&&n.logger){const e=n.logger;e.console&&i.consoleLevel(e.console),e.publish&&i.publishLevel(e.publish)}return i}const S={libs:[{name:"windows",create:l},{name:"activities",create:h},{name:"appManager",create:p},{name:"layouts",create:f},{name:"channels",create:g},{name:"hotkeys",create:m},{name:"displays",create:w},{name:"intents",create:v},{name:"notifications",create:y},{name:"themes",create:b},{name:"prefs",create:_},{name:"cookies",create:C}],version:Qr,enrichGlue:e=>{e.config.activities=r.activities,e.config.windows=r.windows,e.config.appManager=r.appManager,e.config.layouts=r.layouts,e.config.channels=r.channels,e.config.displays=r.displays}},k=[];function x(e){k.push(e)}"undefined"!==typeof window&&(window.glueFactoryLog||(window.glueFactoryLog=[]),window.glueFactoryLog.push(k));const T=await Kt(e,S);return Array.isArray(null===e||void 0===e?void 0:e.libraries)&&e.libraries.length&&await Promise.all(e.libraries.map((t=>t(T,e)))),d.start(T),T};var Uo,Bo;Wo.coreVersion=Kt.version,Wo.version=Qr,Wo.calls=Fo;let Ho=Wo,Go=!0;if("undefined"!==typeof window){const e=window,t=null!==(Uo=e.iodesktop)&&void 0!==Uo?Uo:e.glue42gd;t&&t.autoInjected&&(Ho=null!==(Bo=e.IODesktop)&&void 0!==Bo?Bo:e.Glue,Go=!1),Go&&(e.Glue=Ho,e.IODesktop=Ho),delete e.IOBrowser,delete e.GlueCore}return Ho.default=Ho,Ho}()},888:(e,t,n)=>{"use strict";var i=n(47);function r(){}function o(){}o.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,o,s){if(s!==i){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:r};return n.PropTypes=n,n}},7:(e,t,n)=>{e.exports=n(888)()},47:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},463:(e,t,n)=>{"use strict";var i=n(791),r=n(296);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n