ngx-cookie
Version:
Implementation of Angular 1.x $cookies service to Angular
1 lines • 21 kB
Source Map (JSON)
{"version":3,"file":"ngx-cookie.mjs","sources":["../../../projects/ngx-cookie/src/lib/tokens.ts","../../../projects/ngx-cookie/src/lib/utils.ts","../../../projects/ngx-cookie/src/lib/cookie-options.provider.ts","../../../projects/ngx-cookie/src/lib/cookie.service.ts","../../../projects/ngx-cookie/src/lib/cookie-writer.service.ts","../../../projects/ngx-cookie/src/lib/cookie.factory.ts","../../../projects/ngx-cookie/src/lib/cookie.module.ts","../../../projects/ngx-cookie/src/public-api.ts","../../../projects/ngx-cookie/src/ngx-cookie.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { CookieOptions, ICookieWriterService } from './cookie.model';\n\nexport const COOKIE_OPTIONS = new InjectionToken<CookieOptions>('COOKIE_OPTIONS');\nexport const COOKIE_WRITER = new InjectionToken<ICookieWriterService>('COOKIE_WRITER');\n","import { CookieDict, CookieOptions } from './cookie.model';\n\ntype EmptyArray = never[] & { length: 0 };\ntype EmptyObject = Record<any, never>;\n\nexport function isNil(obj: unknown): obj is undefined | null {\n return obj === undefined || obj === null;\n}\n\nexport function isPresent(obj: unknown): obj is Exclude<typeof obj, undefined | null> {\n return !isNil(obj);\n}\n\nexport function isString(obj: unknown): obj is string {\n return typeof obj === 'string';\n}\n\n// noinspection JSUnusedGlobalSymbols\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isEmpty(value: unknown): value is undefined | null | '' | EmptyArray | EmptyObject {\n if (isNil(value)) {\n return true;\n }\n if (value === {}) {\n return true;\n }\n if (isString(value) && value.length === 0) {\n return true;\n }\n if (Array.isArray(value) && value.length === 0) {\n return true;\n }\n if (typeof value !== 'boolean' && !value) {\n return true;\n }\n // noinspection RedundantIfStatementJS\n if (typeof value === 'object' && Object.keys(value).length === 0 && value.constructor === Object) {\n return true;\n }\n return false;\n}\n\nexport function mergeOptions(oldOptions: CookieOptions, newOptions?: CookieOptions): CookieOptions {\n if (!newOptions) {\n return oldOptions;\n }\n return {\n path: isPresent(newOptions.path) ? newOptions.path : oldOptions.path,\n domain: isPresent(newOptions.domain) ? newOptions.domain : oldOptions.domain,\n expires: isPresent(newOptions.expires) ? newOptions.expires : oldOptions.expires,\n secure: isPresent(newOptions.secure) ? newOptions.secure : oldOptions.secure,\n sameSite: isPresent(newOptions.sameSite) ? newOptions.sameSite : oldOptions.sameSite,\n httpOnly: isPresent(newOptions.httpOnly) ? newOptions.httpOnly : oldOptions.httpOnly,\n storeUnencoded: isPresent(newOptions.storeUnencoded) ? newOptions.storeUnencoded : oldOptions.storeUnencoded\n };\n}\n\nexport function parseCookieString(currentCookieString: string): CookieDict {\n let lastCookies: CookieDict = {};\n let lastCookieString = '';\n let cookieArray: string[];\n let cookie: string;\n let i: number;\n let index: number;\n let name: string;\n if (currentCookieString !== lastCookieString) {\n lastCookieString = currentCookieString;\n cookieArray = lastCookieString.split(';');\n lastCookies = {};\n for (i = 0; i < cookieArray.length; i++) {\n cookie = cookieArray[i];\n index = cookie.indexOf('=');\n if (index > 0) { // ignore nameless cookies\n name = safeDecodeURIComponent((cookie.substring(0, index)).trim());\n // the first value that is seen for a cookie is the most\n // specific one. values for the same cookie name that\n // follow are for less specific paths.\n if (isNil((lastCookies)[name])) {\n lastCookies[name] = safeDecodeURIComponent((cookie.substring(index + 1)).trim());\n }\n }\n }\n }\n return lastCookies;\n}\n\nexport function buildCookieString(name: string, value: string | undefined, options?: CookieOptions): string {\n let expires: string | Date | undefined = options?.expires;\n let val: string;\n if (isNil(value)) {\n expires = 'Thu, 01 Jan 1970 00:00:00 GMT';\n val = '';\n } else {\n val = value as string;\n }\n if (isString(expires)) {\n expires = new Date(expires);\n }\n const cookieValue = options?.storeUnencoded ? value : encodeURIComponent(val);\n let str = encodeURIComponent(name) + '=' + cookieValue;\n str += options?.path ? ';path=' + options.path : '';\n str += options?.domain ? ';domain=' + options.domain : '';\n str += expires ? ';expires=' + expires.toUTCString() : '';\n str += options?.sameSite ? '; SameSite=' + options.sameSite : '';\n str += options?.secure ? ';secure' : '';\n str += options?.httpOnly ? '; HttpOnly' : '';\n\n // per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum:\n // - 300 cookies\n // - 20 cookies per unique domain\n // - 4096 bytes per cookie\n const cookieLength = str.length + 1;\n if (cookieLength > 4096) {\n console.log('Cookie \\'' + name + '\\' possibly not set or overflowed because it was too large (' + cookieLength + ' > 4096 bytes)!');\n }\n return str;\n}\n\nexport function safeDecodeURIComponent(str: string): string {\n try {\n return decodeURIComponent(str);\n } catch (e) {\n return str;\n }\n}\n","import { APP_BASE_HREF } from '@angular/common';\nimport { Inject, Injectable, Injector } from '@angular/core';\n\nimport { CookieOptions } from './cookie.model';\nimport { COOKIE_OPTIONS } from './tokens';\nimport { mergeOptions } from './utils';\n\n@Injectable()\nexport class CookieOptionsProvider {\n\n readonly options: CookieOptions;\n private readonly defaultOptions: CookieOptions;\n\n constructor(@Inject(COOKIE_OPTIONS) options: CookieOptions = {},\n private injector: Injector) {\n this.defaultOptions = {\n path: this.injector.get(APP_BASE_HREF, '/'),\n domain: undefined,\n expires: undefined,\n secure: false,\n httpOnly: false\n };\n this.options = mergeOptions(this.defaultOptions, options);\n }\n\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { CookieOptionsProvider } from './cookie-options.provider';\n\nimport { CookieDict, CookieOptions, ICookieService, ICookieWriterService } from './cookie.model';\nimport { COOKIE_WRITER } from './tokens';\nimport { isNil, isPresent, mergeOptions, parseCookieString } from './utils';\n\n@Injectable()\nexport class CookieService implements ICookieService {\n\n protected options: CookieOptions;\n\n constructor(@Inject(DOCUMENT) private document: any,\n private optionsProvider: CookieOptionsProvider,\n @Inject(COOKIE_WRITER) private cookieWriterService: ICookieWriterService) {\n this.options = this.optionsProvider.options;\n }\n\n /**\n * @description\n * Returns if the given cookie key exists or not.\n *\n * @param key Id to use for lookup.\n * @returns true if key exists, otherwise false.\n */\n hasKey(key: string): boolean {\n const value = this.get(key);\n return isPresent(value);\n }\n\n /**\n * @description\n * Returns the value of given cookie key.\n *\n * @param key Id to use for lookup.\n * @returns Raw cookie value.\n */\n get(key: string): string | undefined {\n return this.getAll()?.[key];\n }\n\n /**\n * @description\n * Returns the deserialized value of given cookie key.\n *\n * @param key Id to use for lookup.\n * @returns Deserialized cookie value.\n */\n getObject(key: string): object | undefined {\n const value = this.get(key);\n if (isNil(value)) {\n return undefined;\n } else if (value === '') {\n return {};\n }\n return JSON.parse(value);\n }\n\n /**\n * @description\n * Returns a key value object with all the cookies.\n *\n * @returns All cookies\n */\n getAll(): CookieDict {\n const cookieString = this.cookieWriterService.readAllAsString();\n return parseCookieString(cookieString);\n }\n\n /**\n * @description\n * Sets a value for given cookie key.\n *\n * @param key Id for the `value`.\n * @param value Raw value to be stored.\n * @param options (Optional) Options object.\n */\n put(key: string, value: string | undefined, options?: CookieOptions): void {\n const opts = mergeOptions(this.options, options);\n this.cookieWriterService.write(key, value, opts);\n }\n\n /**\n * @description\n * Serializes and sets a value for given cookie key.\n *\n * @param key Id for the `value`.\n * @param value Value to be stored.\n * @param options (Optional) Options object.\n */\n putObject(key: string, value: object, options?: CookieOptions): void {\n this.put(key, JSON.stringify(value), options);\n }\n\n /**\n * @description\n * Remove given cookie.\n *\n * @param key Id of the key-value pair to delete.\n * @param options (Optional) Options object.\n */\n remove(key: string, options?: CookieOptions): void {\n this.put(key, undefined, options);\n }\n\n /**\n * @description\n * Remove all cookies.\n */\n removeAll(options?: CookieOptions): void {\n const cookies = this.getAll();\n Object.keys(cookies).forEach(key => this.remove(key, options));\n }\n\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { CookieOptions, ICookieWriterService } from './cookie.model';\nimport { buildCookieString } from './utils';\n\n@Injectable()\nexport class CookieWriterService implements ICookieWriterService {\n\n constructor(@Inject(DOCUMENT) private document: any) {}\n\n readAllAsString(): string {\n return this.document.cookie || '';\n }\n\n write(name: string, value: string | undefined, options?: CookieOptions): void {\n this.document.cookie = buildCookieString(name, value, options);\n }\n\n}\n","import { CookieOptionsProvider } from './cookie-options.provider';\nimport { ICookieWriterService } from './cookie.model';\nimport { CookieService } from './cookie.service';\n\nexport function cookieServiceFactory(document: Document,\n cookieOptionsProvider: CookieOptionsProvider,\n cookieWriterService: ICookieWriterService): CookieService {\n return new CookieService(document, cookieOptionsProvider, cookieWriterService);\n}\n","import { DOCUMENT } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CookieWriterService } from './cookie-writer.service';\n\nimport { CookieOptions } from './cookie.model';\nimport { CookieOptionsProvider } from './cookie-options.provider';\nimport { cookieServiceFactory } from './cookie.factory';\nimport { CookieService } from './cookie.service';\nimport { COOKIE_OPTIONS, COOKIE_WRITER } from './tokens';\n\n\n@NgModule({\n providers: [CookieOptionsProvider]\n})\nexport class CookieModule {\n\n /**\n * Use this method in your root module to provide the CookieService\n */\n static withOptions(options: CookieOptions = {}): ModuleWithProviders<CookieModule> {\n return {\n ngModule: CookieModule,\n providers: [\n {provide: COOKIE_OPTIONS, useValue: options},\n {provide: COOKIE_WRITER, useClass: CookieWriterService},\n {provide: CookieService, useFactory: cookieServiceFactory, deps: [DOCUMENT, CookieOptionsProvider, COOKIE_WRITER]}\n ]\n };\n }\n\n /**\n * @deprecated use `CookieModule.withOptions()` instead\n * Use this method in your root module to provide the CookieService\n */\n static forRoot(options: CookieOptions = {}): ModuleWithProviders<CookieModule> {\n return this.withOptions(options);\n }\n\n /**\n * @deprecated use `CookieModule.withOptions()` instead\n * Use this method in your other (non root) modules to import the directive/pipe\n */\n static forChild(options: CookieOptions = {}): ModuleWithProviders<CookieModule> {\n return this.withOptions(options);\n }\n\n}\n","/*\n * Public API Surface of ngx-cookie\n */\n\nexport * from './lib/tokens';\nexport * from './lib/cookie.service';\nexport * from './lib/cookie.module';\nexport * from './lib/cookie.model';\nexport * from './lib/cookie-options.provider';\nexport * from './lib/cookie-writer.service';\nexport * from './lib/cookie.factory';\nexport * from './lib/utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CookieOptionsProvider"],"mappings":";;;;MAIa,cAAc,GAAG,IAAI,cAAc,CAAgB,gBAAgB,EAAE;MACrE,aAAa,GAAG,IAAI,cAAc,CAAuB,eAAe;;ACA/E,SAAU,KAAK,CAAC,GAAY,EAAA;AAChC,IAAA,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC;AAC3C,CAAC;AAEK,SAAU,SAAS,CAAC,GAAY,EAAA;AACpC,IAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAEK,SAAU,QAAQ,CAAC,GAAY,EAAA;AACnC,IAAA,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC;AACjC,CAAC;AAED;AACA;AACM,SAAU,OAAO,CAAC,KAAc,EAAA;AACpC,IAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAChB,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IACD,IAAI,KAAK,KAAK,EAAE,EAAE;AAChB,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACzC,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AACD,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9C,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AACD,IAAA,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE;AACxC,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,EAAE;AAChG,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAEe,SAAA,YAAY,CAAC,UAAyB,EAAE,UAA0B,EAAA;IAChF,IAAI,CAAC,UAAU,EAAE;AACf,QAAA,OAAO,UAAU,CAAC;AACnB,KAAA;IACD,OAAO;AACL,QAAA,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI;AACpE,QAAA,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;AAC5E,QAAA,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO;AAChF,QAAA,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;AAC5E,QAAA,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ;AACpF,QAAA,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ;AACpF,QAAA,cAAc,EAAE,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc;KAC7G,CAAC;AACJ,CAAC;AAEK,SAAU,iBAAiB,CAAC,mBAA2B,EAAA;IAC3D,IAAI,WAAW,GAAe,EAAE,CAAC;IACjC,IAAI,gBAAgB,GAAG,EAAE,CAAC;AAC1B,IAAA,IAAI,WAAqB,CAAC;AAC1B,IAAA,IAAI,MAAc,CAAC;AACnB,IAAA,IAAI,CAAS,CAAC;AACd,IAAA,IAAI,KAAa,CAAC;AAClB,IAAA,IAAI,IAAY,CAAC;IACjB,IAAI,mBAAmB,KAAK,gBAAgB,EAAE;QAC5C,gBAAgB,GAAG,mBAAmB,CAAC;AACvC,QAAA,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,WAAW,GAAG,EAAE,CAAC;AACjB,QAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,YAAA,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AACxB,YAAA,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5B,YAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,gBAAA,IAAI,GAAG,sBAAsB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;;;;gBAInE,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,EAAE;oBAC9B,WAAW,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAClF,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA,OAAO,WAAW,CAAC;AACrB,CAAC;SAEe,iBAAiB,CAAC,IAAY,EAAE,KAAyB,EAAE,OAAuB,EAAA;AAChG,IAAA,IAAI,OAAO,GAA8B,OAAO,EAAE,OAAO,CAAC;AAC1D,IAAA,IAAI,GAAW,CAAC;AAChB,IAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;QAChB,OAAO,GAAG,+BAA+B,CAAC;QAC1C,GAAG,GAAG,EAAE,CAAC;AACV,KAAA;AAAM,SAAA;QACL,GAAG,GAAG,KAAe,CAAC;AACvB,KAAA;AACD,IAAA,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE;AACrB,QAAA,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,KAAA;AACD,IAAA,MAAM,WAAW,GAAG,OAAO,EAAE,cAAc,GAAG,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC9E,IAAI,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC;AACvD,IAAA,GAAG,IAAI,OAAO,EAAE,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;AACpD,IAAA,GAAG,IAAI,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;AAC1D,IAAA,GAAG,IAAI,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;AAC1D,IAAA,GAAG,IAAI,OAAO,EAAE,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;AACjE,IAAA,GAAG,IAAI,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,EAAE,CAAC;AACxC,IAAA,GAAG,IAAI,OAAO,EAAE,QAAQ,GAAG,YAAY,GAAG,EAAE,CAAC;;;;;AAM7C,IAAA,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IACpC,IAAI,YAAY,GAAG,IAAI,EAAE;AACvB,QAAA,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,GAAG,8DAA8D,GAAG,YAAY,GAAG,iBAAiB,CAAC,CAAC;AACrI,KAAA;AACD,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAEK,SAAU,sBAAsB,CAAC,GAAW,EAAA;IAChD,IAAI;AACF,QAAA,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAChC,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACV,QAAA,OAAO,GAAG,CAAC;AACZ,KAAA;AACH;;MCpHa,qBAAqB,CAAA;IAKhC,WAAoC,CAAA,OAAA,GAAyB,EAAE,EAC3C,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QACpC,IAAI,CAAC,cAAc,GAAG;YACpB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC;AAC3C,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;KAC3D;;AAfU,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,kBAKZ,cAAc,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;sHALvB,qBAAqB,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;;0BAMI,MAAM;2BAAC,cAAc,CAAA;;;MCJvB,aAAa,CAAA;AAIxB,IAAA,WAAA,CAAsC,QAAa,EAC/B,eAAsC,EACf,mBAAyC,EAAA;QAF9C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAK;QAC/B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAuB;QACf,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAsB;QAClF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;KAC7C;AAED;;;;;;AAMG;AACH,IAAA,MAAM,CAAC,GAAW,EAAA;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,QAAA,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;KACzB;AAED;;;;;;AAMG;AACH,IAAA,GAAG,CAAC,GAAW,EAAA;QACb,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;KAC7B;AAED;;;;;;AAMG;AACH,IAAA,SAAS,CAAC,GAAW,EAAA;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAChB,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;aAAM,IAAI,KAAK,KAAK,EAAE,EAAE;AACvB,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC1B;AAED;;;;;AAKG;IACH,MAAM,GAAA;QACJ,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAC;AAChE,QAAA,OAAO,iBAAiB,CAAC,YAAY,CAAC,CAAC;KACxC;AAED;;;;;;;AAOG;AACH,IAAA,GAAG,CAAC,GAAW,EAAE,KAAyB,EAAE,OAAuB,EAAA;QACjE,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;KAClD;AAED;;;;;;;AAOG;AACH,IAAA,SAAS,CAAC,GAAW,EAAE,KAAa,EAAE,OAAuB,EAAA;AAC3D,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;KAC/C;AAED;;;;;;AAMG;IACH,MAAM,CAAC,GAAW,EAAE,OAAuB,EAAA;QACzC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;KACnC;AAED;;;AAGG;AACH,IAAA,SAAS,CAAC,OAAuB,EAAA;AAC/B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;KAChE;;0GAxGU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAIJ,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAER,aAAa,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GANtB,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;0BAKI,MAAM;2BAAC,QAAQ,CAAA;;0BAEf,MAAM;2BAAC,aAAa,CAAA;;;MCRtB,mBAAmB,CAAA;AAE9B,IAAA,WAAA,CAAsC,QAAa,EAAA;QAAb,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAK;KAAI;IAEvD,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;KACnC;AAED,IAAA,KAAK,CAAC,IAAY,EAAE,KAAyB,EAAE,OAAuB,EAAA;AACpE,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;KAChE;;AAVU,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBAEV,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAFjB,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;0BAGI,MAAM;2BAAC,QAAQ,CAAA;;;SCLd,oBAAoB,CAAC,QAAkB,EAClB,qBAA4C,EAC5C,mBAAyC,EAAA;IAC5E,OAAO,IAAI,aAAa,CAAC,QAAQ,EAAE,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;AACjF;;MCMa,YAAY,CAAA;AAEvB;;AAEG;AACH,IAAA,OAAO,WAAW,CAAC,OAAA,GAAyB,EAAE,EAAA;QAC5C,OAAO;AACL,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,SAAS,EAAE;AACT,gBAAA,EAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAC;AAC5C,gBAAA,EAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,mBAAmB,EAAC;AACvD,gBAAA,EAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,qBAAqB,EAAE,aAAa,CAAC,EAAC;AACnH,aAAA;SACF,CAAC;KACH;AAED;;;AAGG;AACH,IAAA,OAAO,OAAO,CAAC,OAAA,GAAyB,EAAE,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KAClC;AAED;;;AAGG;AACH,IAAA,OAAO,QAAQ,CAAC,OAAA,GAAyB,EAAE,EAAA;AACzC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KAClC;;yGA9BU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;0GAAZ,YAAY,EAAA,CAAA,CAAA;0GAAZ,YAAY,EAAA,SAAA,EAFZ,CAAC,qBAAqB,CAAC,EAAA,CAAA,CAAA;2FAEvB,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,SAAS,EAAE,CAAC,qBAAqB,CAAC;AACnC,iBAAA,CAAA;;;ACbD;;AAEG;;ACFH;;AAEG;;;;"}