@odx/auth 5.1.1 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +4 -4
  3. package/{esm2020 → esm2022}/lib/auth.component.mjs +4 -4
  4. package/{esm2020 → esm2022}/lib/auth.directive.mjs +4 -4
  5. package/{esm2020 → esm2022}/lib/auth.module.mjs +5 -5
  6. package/{esm2020 → esm2022}/lib/auth.service.mjs +4 -4
  7. package/esm2022/lib/components/auth-actions/auth-actions.component.mjs +29 -0
  8. package/esm2022/lib/components/auth-loading-screen/auth-loading-screen.component.mjs +41 -0
  9. package/{esm2020 → esm2022}/lib/directives/auth-action.directive.mjs +4 -4
  10. package/{esm2020 → esm2022}/lib/directives/sign-in.directive.mjs +4 -4
  11. package/{esm2020 → esm2022}/lib/directives/sign-out.directive.mjs +4 -4
  12. package/esm2022/lib/models/auth-http-cache.mjs +50 -0
  13. package/{esm2020 → esm2022}/lib/models/auth-plugin-manager.mjs +4 -4
  14. package/{esm2020 → esm2022}/plugins/service-connect/lib/service-connect-rights.directive.mjs +4 -4
  15. package/{fesm2020 → fesm2022}/odx-auth-plugins-service-connect.mjs +3 -3
  16. package/{fesm2020 → fesm2022}/odx-auth-plugins-service-connect.mjs.map +1 -1
  17. package/{fesm2020 → fesm2022}/odx-auth.mjs +37 -37
  18. package/{fesm2020 → fesm2022}/odx-auth.mjs.map +1 -1
  19. package/lib/auth.directive.d.ts +1 -1
  20. package/lib/components/auth-actions/auth-actions.component.d.ts +1 -1
  21. package/package.json +9 -17
  22. package/plugins/service-connect/lib/service-connect-rights.directive.d.ts +1 -1
  23. package/esm2020/lib/components/auth-actions/auth-actions.component.mjs +0 -30
  24. package/esm2020/lib/components/auth-loading-screen/auth-loading-screen.component.mjs +0 -41
  25. package/esm2020/lib/models/auth-http-cache.mjs +0 -50
  26. package/fesm2015/odx-auth-plugins-service-connect.mjs +0 -93
  27. package/fesm2015/odx-auth-plugins-service-connect.mjs.map +0 -1
  28. package/fesm2015/odx-auth.mjs +0 -749
  29. package/fesm2015/odx-auth.mjs.map +0 -1
  30. /package/{esm2020 → esm2022}/index.mjs +0 -0
  31. /package/{esm2020 → esm2022}/lib/auth.config.mjs +0 -0
  32. /package/{esm2020 → esm2022}/lib/auth.guard.mjs +0 -0
  33. /package/{esm2020 → esm2022}/lib/auth.i18n.mjs +0 -0
  34. /package/{esm2020 → esm2022}/lib/auth.providers.mjs +0 -0
  35. /package/{esm2020 → esm2022}/lib/auth.typings.mjs +0 -0
  36. /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
  37. /package/{esm2020 → esm2022}/lib/directives/index.mjs +0 -0
  38. /package/{esm2020 → esm2022}/lib/helpers/create-inititals.mjs +0 -0
  39. /package/{esm2020 → esm2022}/lib/helpers/handle-auth-error.mjs +0 -0
  40. /package/{esm2020 → esm2022}/lib/helpers/handle-oauth-event.mjs +0 -0
  41. /package/{esm2020 → esm2022}/lib/helpers/index.mjs +0 -0
  42. /package/{esm2020 → esm2022}/lib/helpers/resolve-email.mjs +0 -0
  43. /package/{esm2020 → esm2022}/lib/helpers/resolve-username.mjs +0 -0
  44. /package/{esm2020 → esm2022}/lib/models/auth-environment.mjs +0 -0
  45. /package/{esm2020 → esm2022}/lib/models/authorized-handler.mjs +0 -0
  46. /package/{esm2020 → esm2022}/lib/models/index.mjs +0 -0
  47. /package/{esm2020 → esm2022}/lib/models/offline-auth-error-handler.mjs +0 -0
  48. /package/{esm2020 → esm2022}/lib/plugins/core-identity.plugin.mjs +0 -0
  49. /package/{esm2020 → esm2022}/lib/plugins/index.mjs +0 -0
  50. /package/{esm2020 → esm2022}/lib/plugins/user-profile-link.plugin.mjs +0 -0
  51. /package/{esm2020 → esm2022}/lib/unauth.guard.mjs +0 -0
  52. /package/{esm2020 → esm2022}/odx-auth.mjs +0 -0
  53. /package/{esm2020 → esm2022}/plugins/service-connect/index.mjs +0 -0
  54. /package/{esm2020 → esm2022}/plugins/service-connect/lib/dtos/get-service-connect-rights-response.dto.mjs +0 -0
  55. /package/{esm2020 → esm2022}/plugins/service-connect/lib/dtos/index.mjs +0 -0
  56. /package/{esm2020 → esm2022}/plugins/service-connect/lib/helpers/build-service-connect-url.mjs +0 -0
  57. /package/{esm2020 → esm2022}/plugins/service-connect/lib/helpers/has-roles-or-rights-handler.mjs +0 -0
  58. /package/{esm2020 → esm2022}/plugins/service-connect/lib/helpers/has-roles-or-rights.mjs +0 -0
  59. /package/{esm2020 → esm2022}/plugins/service-connect/lib/helpers/index.mjs +0 -0
  60. /package/{esm2020 → esm2022}/plugins/service-connect/lib/helpers/service-connect-plugin-factory.mjs +0 -0
  61. /package/{esm2020 → esm2022}/plugins/service-connect/lib/service-connect-rights.guard.mjs +0 -0
  62. /package/{esm2020 → esm2022}/plugins/service-connect/lib/service-connect-rights.plugin.mjs +0 -0
  63. /package/{esm2020 → esm2022}/plugins/service-connect/lib/service-connect.config.mjs +0 -0
  64. /package/{esm2020 → esm2022}/plugins/service-connect/lib/service-connect.typings.mjs +0 -0
  65. /package/{esm2020 → esm2022}/plugins/service-connect/odx-auth-plugins-service-connect.mjs +0 -0
@@ -1,93 +0,0 @@
1
- import { isString, buildUrl } from '@odx/angular/utils';
2
- import * as i0 from '@angular/core';
3
- import { inject, Directive, Input } from '@angular/core';
4
- import * as i1 from '@odx/auth';
5
- import { injectAuthConfig, AuthHttpCache, AuthDirective, authGuard } from '@odx/auth';
6
- import { defer, map } from 'rxjs';
7
-
8
- const ServiceConnnectEnvironments = {
9
- dev: 'https://api.test.connect.draeger.com',
10
- stage: 'https://api.staging.connect.draeger.com',
11
- prod: 'https://api.connect.draeger.com',
12
- };
13
- const ServiceConnectScopes = {
14
- BASE: 'dcid',
15
- PROFILE: 'dcid.profile',
16
- RIGHTS: 'dcid.rights',
17
- INSTITUTION: 'dcid.institution',
18
- };
19
- const ServiceConnectEndpoints = {
20
- userRights: '/users/me/rights',
21
- };
22
-
23
- function buildServiceConnectUrl(environment, ...endpoints) {
24
- if (isString(environment)) {
25
- return buildUrl(ServiceConnnectEnvironments[environment], ...endpoints);
26
- }
27
- return buildUrl(environment.custom, ...endpoints);
28
- }
29
-
30
- function hasRolesOrRights(userRights, rolesOrRights) {
31
- return rolesOrRights.some((rights) => { var _a; return (_a = (Array.isArray(rights) ? rights : [rights])) === null || _a === void 0 ? void 0 : _a.every((right) => userRights.includes(right)); });
32
- }
33
-
34
- function hasRolesOrRightsHandler(rolesOrRights) {
35
- return (claims) => { var _a; return hasRolesOrRights((_a = claims === null || claims === void 0 ? void 0 : claims.rights) !== null && _a !== void 0 ? _a : [], rolesOrRights); };
36
- }
37
-
38
- function serviceConnectPluginFactory(options) {
39
- return (pluginOptions) => () => {
40
- var _a, _b;
41
- (_a = options.setup) === null || _a === void 0 ? void 0 : _a.call(options, pluginOptions);
42
- const { environment } = injectAuthConfig();
43
- const httpCache = inject(AuthHttpCache);
44
- const url = buildServiceConnectUrl((_b = pluginOptions === null || pluginOptions === void 0 ? void 0 : pluginOptions.environment) !== null && _b !== void 0 ? _b : environment, ...options.endpoint);
45
- const parseResponse = (dto) => { var _a, _b; return (_b = (_a = options.parseResponse(dto)) !== null && _a !== void 0 ? _a : options.defaultValue) !== null && _b !== void 0 ? _b : {}; };
46
- return () => defer(() => httpCache.request(url, true)).pipe(map((dto) => parseResponse(dto)));
47
- };
48
- }
49
-
50
- class ServiceConnectRightsDirective {
51
- constructor() {
52
- this.authDirective = inject(AuthDirective, { host: true });
53
- }
54
- set rolesOrRights(value) {
55
- this.authDirective.authorizationHandler = hasRolesOrRightsHandler(value !== null && value !== void 0 ? value : []);
56
- }
57
- }
58
- ServiceConnectRightsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ServiceConnectRightsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
59
- ServiceConnectRightsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: ServiceConnectRightsDirective, isStandalone: true, selector: "ng-template[odxAuthServiceConnectRights]", inputs: { rolesOrRights: ["odxAuthServiceConnectRights", "rolesOrRights"] }, hostDirectives: [{ directive: i1.AuthDirective, inputs: ["odxAuthElse", "odxAuthServiceConnectRightsElse"] }], ngImport: i0 });
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ServiceConnectRightsDirective, decorators: [{
61
- type: Directive,
62
- args: [{
63
- standalone: true,
64
- selector: 'ng-template[odxAuthServiceConnectRights]',
65
- hostDirectives: [
66
- {
67
- directive: AuthDirective,
68
- inputs: ['odxAuthElse:odxAuthServiceConnectRightsElse'],
69
- },
70
- ],
71
- }]
72
- }], propDecorators: { rolesOrRights: [{
73
- type: Input,
74
- args: ['odxAuthServiceConnectRights']
75
- }] } });
76
-
77
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
78
- function serviceConnectRightsGuard(rolesOrRights, redirectTo) {
79
- return authGuard(hasRolesOrRightsHandler(rolesOrRights), redirectTo);
80
- }
81
-
82
- const serviceConnectRightsPlugin = serviceConnectPluginFactory({
83
- endpoint: [ServiceConnectEndpoints.userRights],
84
- parseResponse: (res) => { var _a; return ({ rights: (_a = res === null || res === void 0 ? void 0 : res.rights) !== null && _a !== void 0 ? _a : [] }); },
85
- defaultValue: { rights: [] },
86
- });
87
-
88
- /**
89
- * Generated bundle index. Do not edit.
90
- */
91
-
92
- export { ServiceConnectEndpoints, ServiceConnectRightsDirective, ServiceConnectScopes, ServiceConnnectEnvironments, buildServiceConnectUrl, hasRolesOrRights, hasRolesOrRightsHandler, serviceConnectPluginFactory, serviceConnectRightsGuard, serviceConnectRightsPlugin };
93
- //# sourceMappingURL=odx-auth-plugins-service-connect.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"odx-auth-plugins-service-connect.mjs","sources":["../../../../libs/auth/plugins/service-connect/src/lib/service-connect.config.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/build-service-connect-url.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/has-roles-or-rights.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/has-roles-or-rights-handler.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/service-connect-plugin-factory.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-rights.directive.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-rights.guard.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-rights.plugin.ts","../../../../libs/auth/plugins/service-connect/src/odx-auth-plugins-service-connect.ts"],"sourcesContent":["import { AuthEnvironment } from '@odx/auth';\n\nexport type ServiceConnectEnvironment = { custom: string };\nexport const ServiceConnnectEnvironments: Record<AuthEnvironment, string> = {\n dev: 'https://api.test.connect.draeger.com',\n stage: 'https://api.staging.connect.draeger.com',\n prod: 'https://api.connect.draeger.com',\n};\nexport const ServiceConnectScopes = {\n BASE: 'dcid',\n PROFILE: 'dcid.profile',\n RIGHTS: 'dcid.rights',\n INSTITUTION: 'dcid.institution',\n};\nexport const ServiceConnectEndpoints = {\n userRights: '/users/me/rights',\n};\n","import { buildUrl, isString } from '@odx/angular/utils';\nimport { AuthEnvironment } from '@odx/auth';\nimport { ServiceConnectEnvironment, ServiceConnnectEnvironments } from '../service-connect.config';\n\nexport function buildServiceConnectUrl(environment: ServiceConnectEnvironment | AuthEnvironment, ...endpoints: string[]): string {\n if (isString(environment)) {\n return buildUrl(ServiceConnnectEnvironments[environment], ...endpoints);\n }\n return buildUrl(environment.custom, ...endpoints);\n}\n","export type Right = string | number;\nexport type Role = Right[];\nexport type RolesOrRights = Array<Role | Right>;\n\nexport function hasRolesOrRights(userRights: Right[], rolesOrRights: RolesOrRights): boolean {\n return rolesOrRights.some((rights) => (Array.isArray(rights) ? rights : [rights])?.every((right) => userRights.includes(right)));\n}\n","import { AuthorizedHandler } from '@odx/auth';\nimport { hasRolesOrRights, RolesOrRights } from './has-roles-or-rights';\n\nexport function hasRolesOrRightsHandler(rolesOrRights: RolesOrRights): AuthorizedHandler {\n return (claims) => hasRolesOrRights(claims?.rights ?? [], rolesOrRights);\n}\n","import { inject } from '@angular/core';\nimport { AuthHttpCache, AuthPluginFactory, injectAuthConfig } from '@odx/auth';\nimport { defer, map } from 'rxjs';\nimport { ServiceConnectEnvironment } from '../service-connect.config';\nimport { buildServiceConnectUrl } from './build-service-connect-url';\n\nexport interface ServiceConnectPluginOptions {\n environment?: ServiceConnectEnvironment;\n}\n\nexport interface ServiceConnectPluginFactoryOptions<Dto> {\n endpoint: string[];\n parseResponse: (res: Dto | null) => Partial<OdxAuth.AuthPluginResult>;\n defaultValue?: Partial<OdxAuth.AuthPluginResult>;\n setup?: (pluginOptions?: ServiceConnectPluginOptions) => void;\n}\n\nexport type ServiceConnectPluginFactory = (pluginOptions?: ServiceConnectPluginOptions) => AuthPluginFactory;\n\nexport function serviceConnectPluginFactory<Dto = unknown>(options: ServiceConnectPluginFactoryOptions<Dto>): ServiceConnectPluginFactory {\n return (pluginOptions) => () => {\n options.setup?.(pluginOptions);\n const { environment } = injectAuthConfig();\n const httpCache = inject(AuthHttpCache);\n const url = buildServiceConnectUrl(pluginOptions?.environment ?? environment, ...options.endpoint);\n const parseResponse = (dto: Dto | null) => options.parseResponse(dto) ?? options.defaultValue ?? {};\n\n return () => defer(() => httpCache.request<Dto>(url, true)).pipe(map((dto) => parseResponse(dto)));\n };\n}\n","import { Directive, inject, Input } from '@angular/core';\nimport { AuthDirective } from '@odx/auth';\nimport { hasRolesOrRightsHandler, RolesOrRights } from './helpers';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[odxAuthServiceConnectRights]',\n hostDirectives: [\n {\n directive: AuthDirective,\n inputs: ['odxAuthElse:odxAuthServiceConnectRightsElse'],\n },\n ],\n})\nexport class ServiceConnectRightsDirective {\n private readonly authDirective = inject(AuthDirective, { host: true });\n\n @Input('odxAuthServiceConnectRights')\n public set rolesOrRights(value: RolesOrRights | null | undefined) {\n this.authDirective.authorizationHandler = hasRolesOrRightsHandler(value ?? []);\n }\n}\n","import { CanActivateFn } from '@angular/router';\nimport { authGuard } from '@odx/auth';\nimport { hasRolesOrRightsHandler, RolesOrRights } from './helpers';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function serviceConnectRightsGuard(rolesOrRights: RolesOrRights, redirectTo?: string | any[]): CanActivateFn {\n return authGuard(hasRolesOrRightsHandler(rolesOrRights), redirectTo);\n}\n","import { GetServiceConnectRightsResponseDto } from './dtos';\nimport { serviceConnectPluginFactory } from './helpers';\nimport { ServiceConnectEndpoints } from './service-connect.config';\nimport './service-connect.typings';\n\nexport const serviceConnectRightsPlugin = serviceConnectPluginFactory<GetServiceConnectRightsResponseDto>({\n endpoint: [ServiceConnectEndpoints.userRights],\n parseResponse: (res) => ({ rights: res?.rights ?? [] }),\n defaultValue: { rights: [] },\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAGa,MAAA,2BAA2B,GAAoC;AAC1E,IAAA,GAAG,EAAE,sCAAsC;AAC3C,IAAA,KAAK,EAAE,yCAAyC;AAChD,IAAA,IAAI,EAAE,iCAAiC;EACvC;AACW,MAAA,oBAAoB,GAAG;AAClC,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,WAAW,EAAE,kBAAkB;EAC/B;AACW,MAAA,uBAAuB,GAAG;AACrC,IAAA,UAAU,EAAE,kBAAkB;;;SCXhB,sBAAsB,CAAC,WAAwD,EAAE,GAAG,SAAmB,EAAA;AACrH,IAAA,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;QACzB,OAAO,QAAQ,CAAC,2BAA2B,CAAC,WAAW,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;AACzE,KAAA;IACD,OAAO,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AACpD;;ACLgB,SAAA,gBAAgB,CAAC,UAAmB,EAAE,aAA4B,EAAA;IAChF,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,OAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,0CAAE,KAAK,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;AACnI;;ACHM,SAAU,uBAAuB,CAAC,aAA4B,EAAA;IAClE,OAAO,CAAC,MAAM,eAAK,OAAA,gBAAgB,CAAC,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,EAAE,aAAa,CAAC,CAAA,EAAA,CAAC;AAC3E;;ACcM,SAAU,2BAA2B,CAAgB,OAAgD,EAAA;AACzG,IAAA,OAAO,CAAC,aAAa,KAAK,MAAK;;AAC7B,QAAA,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAA,aAAa,CAAC,CAAC;AAC/B,QAAA,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,EAAE,CAAC;AAC3C,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,sBAAsB,CAAC,MAAA,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,WAAW,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnG,MAAM,aAAa,GAAG,CAAC,GAAe,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,OAAO,CAAC,YAAY,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAA,EAAA,CAAC;AAEpG,QAAA,OAAO,MAAM,KAAK,CAAC,MAAM,SAAS,CAAC,OAAO,CAAM,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrG,KAAC,CAAC;AACJ;;MCfa,6BAA6B,CAAA;AAV1C,IAAA,WAAA,GAAA;AAWmB,QAAA,IAAa,CAAA,aAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KAMxE;IAJC,IACW,aAAa,CAAC,KAAuC,EAAA;AAC9D,QAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,GAAG,uBAAuB,CAAC,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAK,GAAI,EAAE,CAAC,CAAC;KAChF;;2HANU,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+GAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,CAAA,6BAAA,EAAA,eAAA,CAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iCAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAVzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,0CAA0C;AACpD,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,aAAa;4BACxB,MAAM,EAAE,CAAC,6CAA6C,CAAC;AACxD,yBAAA;AACF,qBAAA;iBACF,CAAA;8BAKY,aAAa,EAAA,CAAA;sBADvB,KAAK;uBAAC,6BAA6B,CAAA;;;ACbtC;AACgB,SAAA,yBAAyB,CAAC,aAA4B,EAAE,UAA2B,EAAA;IACjG,OAAO,SAAS,CAAC,uBAAuB,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,CAAC;AACvE;;ACFO,MAAM,0BAA0B,GAAG,2BAA2B,CAAqC;AACxG,IAAA,QAAQ,EAAE,CAAC,uBAAuB,CAAC,UAAU,CAAC;IAC9C,aAAa,EAAE,CAAC,GAAG,eAAK,QAAC,EAAE,MAAM,EAAE,CAAA,EAAA,GAAA,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,MAAM,mCAAI,EAAE,EAAE,EAAC,EAAA;AACvD,IAAA,YAAY,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AAC7B,CAAA;;ACTD;;AAEG;;;;"}