ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
1 lines • 24.4 kB
Source Map (JSON)
{"version":3,"file":"ng-zorro-antd-core-config.mjs","sources":["../../components/core/config/config.ts","../../components/core/config/css-variables.ts","../../components/core/config/config.service.ts","../../components/core/config/public-api.ts","../../components/core/config/ng-zorro-antd-core-config.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Direction } from '@angular/cdk/bidi';\nimport { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, TemplateRef, Type } from '@angular/core';\nimport { SafeUrl } from '@angular/platform-browser';\n\nimport { ThemeType } from '@ant-design/icons-angular';\n\nimport { NzBreakpointEnum } from 'ng-zorro-antd/core/services';\nimport {\n NzSafeAny,\n NzShapeSCType,\n NzSizeDSType,\n NzSizeLDSType,\n NzSizeMDSType,\n NzTSType\n} from 'ng-zorro-antd/core/types';\n\ninterface MonacoEnvironment {\n globalAPI?: boolean;\n baseUrl?: string;\n getWorker?(workerId: string, label: string): Promise<Worker> | Worker;\n getWorkerUrl?(workerId: string, label: string): string;\n}\n\nexport interface NzConfig {\n affix?: AffixConfig;\n select?: SelectConfig;\n alert?: AlertConfig;\n anchor?: AnchorConfig;\n avatar?: AvatarConfig;\n backTop?: BackTopConfig;\n badge?: BadgeConfig;\n button?: ButtonConfig;\n card?: CardConfig;\n carousel?: CarouselConfig;\n cascader?: CascaderConfig;\n codeEditor?: CodeEditorConfig;\n collapse?: CollapseConfig;\n collapsePanel?: CollapsePanelConfig;\n datePicker?: DatePickerConfig;\n descriptions?: DescriptionsConfig;\n drawer?: DrawerConfig;\n dropDown?: DropDownConfig;\n empty?: EmptyConfig;\n filterTrigger?: FilterTriggerConfig;\n form?: FormConfig;\n icon?: IconConfig;\n message?: MessageConfig;\n modal?: ModalConfig;\n notification?: NotificationConfig;\n pageHeader?: PageHeaderConfig;\n pagination?: PaginationConfig;\n progress?: ProgressConfig;\n rate?: RateConfig;\n segmented?: SegmentedConfig;\n space?: SpaceConfig;\n spin?: SpinConfig;\n switch?: SwitchConfig;\n table?: TableConfig;\n tabs?: TabsConfig;\n timePicker?: TimePickerConfig;\n tree?: TreeConfig;\n treeSelect?: TreeSelectConfig;\n typography?: TypographyConfig;\n image?: ImageConfig;\n popconfirm?: PopConfirmConfig;\n popover?: PopoverConfig;\n imageExperimental?: ImageExperimentalConfig;\n theme?: Theme;\n prefixCls?: PrefixCls;\n}\n\nexport interface PrefixCls {\n prefixCls?: string;\n iconPrefixCls?: string;\n}\n\nexport interface Theme {\n primaryColor?: string;\n infoColor?: string;\n successColor?: string;\n processingColor?: string;\n errorColor?: string;\n warningColor?: string;\n [key: string]: string | undefined;\n}\n\nexport interface SelectConfig {\n nzBorderless?: boolean;\n nzSuffixIcon?: TemplateRef<NzSafeAny> | string | null;\n nzBackdrop?: boolean;\n nzOptionHeightPx?: number;\n}\n\nexport interface AffixConfig {\n nzOffsetBottom?: number;\n nzOffsetTop?: number;\n}\n\nexport interface AlertConfig {\n nzCloseable?: boolean;\n nzShowIcon?: boolean;\n}\n\nexport interface AvatarConfig {\n nzShape?: NzShapeSCType;\n nzSize?: NzSizeLDSType | number;\n nzGap?: number;\n}\n\nexport interface AnchorConfig {\n nzBounds?: number;\n nzOffsetBottom?: number;\n nzOffsetTop?: number;\n nzShowInkInFixed?: boolean;\n}\n\nexport interface BackTopConfig {\n nzVisibilityHeight?: number;\n}\n\nexport interface BadgeConfig {\n nzColor?: number;\n nzOverflowCount?: number;\n nzShowZero?: number;\n}\n\nexport interface ButtonConfig {\n nzSize?: 'large' | 'default' | 'small';\n}\n\nexport interface CodeEditorConfig {\n assetsRoot?: string | SafeUrl;\n extraConfig?: NzSafeAny;\n defaultEditorOption?: NzSafeAny;\n useStaticLoading?: boolean;\n monacoEnvironment?: MonacoEnvironment;\n\n onLoad?(): void;\n\n onFirstEditorInit?(): void;\n\n onInit?(): void;\n}\n\nexport interface CardConfig {\n nzSize?: NzSizeDSType;\n nzHoverable?: boolean;\n nzBordered?: boolean;\n nzBorderless?: boolean;\n}\n\nexport interface CarouselConfig {\n nzAutoPlay?: boolean;\n nzAutoPlaySpeed?: boolean;\n nzDots?: boolean;\n nzEffect?: 'scrollx' | 'fade' | string;\n nzEnableSwipe?: boolean;\n nzVertical?: boolean;\n nzLoop?: boolean;\n}\n\nexport interface CascaderConfig {\n nzSize?: string;\n nzBackdrop?: boolean;\n}\n\nexport interface CollapseConfig {\n nzAccordion?: boolean;\n nzBordered?: boolean;\n nzGhost?: boolean;\n}\n\nexport interface CollapsePanelConfig {\n nzShowArrow?: boolean;\n}\n\nexport interface DatePickerConfig {\n nzSeparator?: string;\n nzSuffixIcon?: string | TemplateRef<NzSafeAny>;\n nzBackdrop?: boolean;\n}\n\nexport interface DescriptionsConfig {\n nzBordered?: boolean;\n nzColumn?: { [key in NzBreakpointEnum]?: number } | number;\n nzSize?: 'default' | 'middle' | 'small';\n nzColon?: boolean;\n}\n\nexport interface DrawerConfig {\n nzMask?: boolean;\n nzMaskClosable?: boolean;\n nzCloseOnNavigation?: boolean;\n nzDirection?: Direction;\n}\n\nexport interface DropDownConfig {\n nzBackdrop?: boolean;\n}\n\nexport interface EmptyConfig {\n nzDefaultEmptyContent?: Type<NzSafeAny> | TemplateRef<string> | string | undefined;\n}\n\nexport interface FilterTriggerConfig {\n nzBackdrop?: boolean;\n}\n\nexport interface FormConfig {\n nzNoColon?: boolean;\n nzAutoTips?: Record<string, Record<string, string>>;\n nzTooltipIcon?: string | { type: string; theme: ThemeType };\n}\n\nexport interface IconConfig {\n nzTheme?: 'fill' | 'outline' | 'twotone';\n nzTwotoneColor?: string;\n}\n\nexport interface MessageConfig {\n nzAnimate?: boolean;\n nzDuration?: number;\n nzMaxStack?: number;\n nzPauseOnHover?: boolean;\n nzTop?: number | string;\n nzDirection?: Direction;\n}\n\nexport interface ModalConfig {\n nzMask?: boolean;\n nzMaskClosable?: boolean;\n nzCloseOnNavigation?: boolean;\n nzDirection?: Direction;\n}\n\nexport interface NotificationConfig extends MessageConfig {\n nzTop?: string | number;\n nzBottom?: string | number;\n nzPlacement?: 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'top' | 'bottom';\n}\n\nexport interface PageHeaderConfig {\n nzGhost: boolean;\n}\n\nexport interface PaginationConfig {\n nzSize?: 'default' | 'small';\n nzPageSizeOptions?: number[];\n nzShowSizeChanger?: boolean;\n nzShowQuickJumper?: boolean;\n nzSimple?: boolean;\n}\n\nexport interface ProgressConfig {\n nzGapDegree?: number;\n nzGapPosition?: 'top' | 'right' | 'bottom' | 'left';\n nzShowInfo?: boolean;\n nzStrokeSwitch?: number;\n nzStrokeWidth?: number;\n nzSize?: 'default' | 'small';\n nzStrokeLinecap?: 'round' | 'square';\n nzStrokeColor?: string;\n}\n\nexport interface RateConfig {\n nzAllowClear?: boolean;\n nzAllowHalf?: boolean;\n}\n\nexport interface SegmentedConfig {\n nzSize?: NzSizeLDSType;\n}\n\nexport interface SpaceConfig {\n nzSize?: 'small' | 'middle' | 'large' | number;\n}\n\nexport interface SpinConfig {\n nzIndicator?: TemplateRef<NzSafeAny>;\n}\n\nexport interface SwitchConfig {\n nzSize: NzSizeDSType;\n}\n\nexport interface TableConfig {\n nzBordered?: boolean;\n nzSize?: NzSizeMDSType;\n nzShowQuickJumper?: boolean;\n nzLoadingIndicator?: TemplateRef<NzSafeAny>;\n nzShowSizeChanger?: boolean;\n nzSimple?: boolean;\n nzHideOnSinglePage?: boolean;\n}\n\nexport interface TabsConfig {\n nzAnimated?:\n | boolean\n | {\n inkBar: boolean;\n tabPane: boolean;\n };\n nzSize?: NzSizeLDSType;\n nzType?: 'line' | 'card';\n nzTabBarGutter?: number;\n nzShowPagination?: boolean;\n}\n\nexport interface TimePickerConfig {\n nzAllowEmpty?: boolean;\n nzClearText?: string;\n nzNowText?: string;\n nzOkText?: string;\n nzFormat?: string;\n nzHourStep?: number;\n nzMinuteStep?: number;\n nzSecondStep?: number;\n nzPopupClassName?: string;\n nzUse12Hours?: string;\n nzSuffixIcon?: string | TemplateRef<NzSafeAny>;\n nzBackdrop?: boolean;\n}\n\nexport interface TreeConfig {\n nzBlockNode?: boolean;\n nzShowIcon?: boolean;\n nzHideUnMatched?: boolean;\n}\n\nexport interface TreeSelectConfig {\n nzShowIcon?: string;\n nzShowLine?: boolean;\n nzDropdownMatchSelectWidth?: boolean;\n nzHideUnMatched?: boolean;\n nzSize?: 'large' | 'small' | 'default';\n nzBackdrop?: boolean;\n}\n\nexport interface TypographyConfig {\n nzEllipsisRows?: number;\n nzCopyTooltips?: [NzTSType, NzTSType] | null;\n nzCopyIcons: [NzTSType, NzTSType];\n nzEditTooltip?: null | NzTSType;\n nzEditIcon: NzTSType;\n}\n\nexport interface ImageConfig {\n nzFallback?: string;\n nzPlaceholder?: string;\n nzDisablePreview?: string;\n nzCloseOnNavigation?: boolean;\n nzDirection?: Direction;\n nzScaleStep?: number;\n}\n\nexport interface ImageExperimentalConfig {\n nzFallback?: string;\n nzPlaceholder?: string;\n nzDisablePreview?: string;\n nzCloseOnNavigation?: boolean;\n nzDirection?: Direction;\n nzAutoSrcset?: boolean;\n nzSrcLoader?(params: { src: string; width: number }): string;\n}\n\nexport interface PopConfirmConfig {\n nzPopconfirmBackdrop?: boolean;\n nzAutofocus?: null | 'ok' | 'cancel';\n}\n\nexport interface PopoverConfig {\n nzPopoverBackdrop?: boolean;\n}\n\nexport type NzConfigKey = keyof NzConfig;\n\n/**\n * User should provide an object implements this interface to set global configurations.\n */\nexport const NZ_CONFIG = new InjectionToken<NzConfig>('nz-config');\n\nexport function provideNzConfig(config: NzConfig): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: NZ_CONFIG, useValue: config }]);\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Sync from @ant-design/colors(https://github.com/ant-design/ant-design-colors)\n */\nimport { TinyColor } from '@ctrl/tinycolor';\n\nimport { generate } from 'ng-zorro-antd/core/color';\nimport { warn } from 'ng-zorro-antd/core/logger';\nimport { canUseDom, updateCSS } from 'ng-zorro-antd/core/util';\n\nimport { Theme } from './config';\n\nconst dynamicStyleMark = `-ant-${Date.now()}-${Math.random()}`;\n\nexport function getStyle(globalPrefixCls: string, theme: Theme): string {\n const variables: Record<string, string> = {};\n\n const formatColor = (color: TinyColor, updater?: (cloneColor: TinyColor) => TinyColor | undefined): string => {\n let clone = color.clone();\n clone = updater?.(clone) || clone;\n return clone.toRgbString();\n };\n\n const fillColor = (colorVal: string, type: string): void => {\n const baseColor = new TinyColor(colorVal);\n const colorPalettes = generate(baseColor.toRgbString());\n\n variables[`${type}-color`] = formatColor(baseColor);\n variables[`${type}-color-disabled`] = colorPalettes[1];\n variables[`${type}-color-hover`] = colorPalettes[4];\n variables[`${type}-color-active`] = colorPalettes[7];\n variables[`${type}-color-outline`] = baseColor.clone().setAlpha(0.2).toRgbString();\n variables[`${type}-color-deprecated-bg`] = colorPalettes[1];\n variables[`${type}-color-deprecated-border`] = colorPalettes[3];\n };\n\n // ================ Primary Color ================\n if (theme.primaryColor) {\n fillColor(theme.primaryColor, 'primary');\n\n const primaryColor = new TinyColor(theme.primaryColor);\n const primaryColors = generate(primaryColor.toRgbString());\n\n // Legacy - We should use semantic naming standard\n primaryColors.forEach((color, index) => {\n variables[`primary-${index + 1}`] = color;\n });\n // Deprecated\n variables['primary-color-deprecated-l-35'] = formatColor(primaryColor, c => c.lighten(35));\n variables['primary-color-deprecated-l-20'] = formatColor(primaryColor, c => c.lighten(20));\n variables['primary-color-deprecated-t-20'] = formatColor(primaryColor, c => c.tint(20));\n variables['primary-color-deprecated-t-50'] = formatColor(primaryColor, c => c.tint(50));\n variables['primary-color-deprecated-f-12'] = formatColor(primaryColor, c => c.setAlpha(c.getAlpha() * 0.12));\n\n const primaryActiveColor = new TinyColor(primaryColors[0]);\n variables['primary-color-active-deprecated-f-30'] = formatColor(primaryActiveColor, c =>\n c.setAlpha(c.getAlpha() * 0.3)\n );\n variables['primary-color-active-deprecated-d-02'] = formatColor(primaryActiveColor, c => c.darken(2));\n }\n\n // ================ Success Color ================\n if (theme.successColor) {\n fillColor(theme.successColor, 'success');\n }\n\n // ================ Warning Color ================\n if (theme.warningColor) {\n fillColor(theme.warningColor, 'warning');\n }\n\n // ================= Error Color =================\n if (theme.errorColor) {\n fillColor(theme.errorColor, 'error');\n }\n\n // ================= Info Color ==================\n if (theme.infoColor) {\n fillColor(theme.infoColor, 'info');\n }\n\n // Convert to css variables\n const cssList = Object.keys(variables).map(key => `--${globalPrefixCls}-${key}: ${variables[key]};`);\n\n return `\n :root {\n ${cssList.join('\\n')}\n }\n `.trim();\n}\n\nexport function registerTheme(globalPrefixCls: string, theme: Theme, cspNonce: string | null | undefined): void {\n const style = getStyle(globalPrefixCls, theme);\n\n if (canUseDom()) {\n updateCSS(style, `${dynamicStyleMark}-dynamic-theme`, { cspNonce });\n } else {\n warn(`NzConfigService: SSR do not support dynamic theme with css variables.`);\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { CSP_NONCE, Injectable, inject } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, mapTo } from 'rxjs/operators';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { NZ_CONFIG, NzConfig, NzConfigKey } from './config';\nimport { registerTheme } from './css-variables';\n\nconst isDefined = function (value?: NzSafeAny): boolean {\n return value !== undefined;\n};\n\nconst defaultPrefixCls = 'ant';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NzConfigService {\n private configUpdated$ = new Subject<keyof NzConfig>();\n\n /** Global config holding property. */\n private readonly config: NzConfig = inject(NZ_CONFIG, { optional: true }) || {};\n\n private readonly cspNonce: string | null = inject(CSP_NONCE, { optional: true });\n\n constructor() {\n if (this.config.theme) {\n // If theme is set with NZ_CONFIG, register theme to make sure css variables work\n registerTheme(this.getConfig().prefixCls?.prefixCls || defaultPrefixCls, this.config.theme, this.cspNonce);\n }\n }\n\n getConfig(): NzConfig {\n return this.config;\n }\n\n getConfigForComponent<T extends NzConfigKey>(componentName: T): NzConfig[T] {\n return this.config[componentName];\n }\n\n getConfigChangeEventForComponent(componentName: NzConfigKey): Observable<void> {\n return this.configUpdated$.pipe(\n filter(n => n === componentName),\n mapTo(undefined)\n );\n }\n\n set<T extends NzConfigKey>(componentName: T, value: NzConfig[T]): void {\n this.config[componentName] = { ...this.config[componentName], ...value };\n if (componentName === 'theme' && this.config.theme) {\n registerTheme(this.getConfig().prefixCls?.prefixCls || defaultPrefixCls, this.config.theme, this.cspNonce);\n }\n this.configUpdated$.next(componentName);\n }\n}\n\n/* eslint-disable no-invalid-this */\n\n/**\n * This decorator is used to decorate properties. If a property is decorated, it would try to load default value from\n * config.\n */\n// eslint-disable-next-line\nexport function WithConfig<T>() {\n return function ConfigDecorator(\n target: NzSafeAny,\n propName: NzSafeAny,\n originalDescriptor?: TypedPropertyDescriptor<T>\n ): NzSafeAny {\n const privatePropName = `$$__zorroConfigDecorator__${propName}`;\n\n Object.defineProperty(target, privatePropName, {\n configurable: true,\n writable: true,\n enumerable: false\n });\n\n return {\n get(): T | undefined {\n const originalValue = originalDescriptor?.get ? originalDescriptor.get.bind(this)() : this[privatePropName];\n const assignedByUser = (this.propertyAssignCounter?.[propName] || 0) > 1;\n const configValue = this.nzConfigService.getConfigForComponent(this._nzModuleName)?.[propName];\n if (assignedByUser && isDefined(originalValue)) {\n return originalValue;\n } else {\n return isDefined(configValue) ? configValue : originalValue;\n }\n },\n set(value?: T): void {\n // If the value is assigned, we consider the newly assigned value as 'assigned by user'.\n this.propertyAssignCounter = this.propertyAssignCounter || {};\n this.propertyAssignCounter[propName] = (this.propertyAssignCounter[propName] || 0) + 1;\n\n if (originalDescriptor?.set) {\n originalDescriptor.set.bind(this)(value!);\n } else {\n this[privatePropName] = value;\n }\n },\n configurable: true,\n enumerable: true\n };\n };\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './config.service';\nexport * from './config';\nexport * from './css-variables';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;AAAA;;;AAGG;AA0XH;;AAEG;MACU,SAAS,GAAG,IAAI,cAAc,CAAW,WAAW,EAAE;AAE7D,SAAU,eAAe,CAAC,MAAgB,EAAA;AAC9C,IAAA,OAAO,wBAAwB,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC9E;;ACpYA;;;AAGG;AAEH;;AAEG;AASH,MAAM,gBAAgB,GAAG,CAAQ,KAAA,EAAA,IAAI,CAAC,GAAG,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;AAE/C,SAAA,QAAQ,CAAC,eAAuB,EAAE,KAAY,EAAA;IAC5D,MAAM,SAAS,GAA2B,EAAE,CAAC;AAE7C,IAAA,MAAM,WAAW,GAAG,CAAC,KAAgB,EAAE,OAA0D,KAAY;AAC3G,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC;AAClC,QAAA,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AAC7B,KAAC,CAAC;AAEF,IAAA,MAAM,SAAS,GAAG,CAAC,QAAgB,EAAE,IAAY,KAAU;AACzD,QAAA,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QAExD,SAAS,CAAC,CAAG,EAAA,IAAI,CAAQ,MAAA,CAAA,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACpD,SAAS,CAAC,CAAG,EAAA,IAAI,CAAiB,eAAA,CAAA,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACvD,SAAS,CAAC,CAAG,EAAA,IAAI,CAAc,YAAA,CAAA,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACpD,SAAS,CAAC,CAAG,EAAA,IAAI,CAAe,aAAA,CAAA,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AACrD,QAAA,SAAS,CAAC,CAAG,EAAA,IAAI,gBAAgB,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QACnF,SAAS,CAAC,CAAG,EAAA,IAAI,CAAsB,oBAAA,CAAA,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5D,SAAS,CAAC,CAAG,EAAA,IAAI,CAA0B,wBAAA,CAAA,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AAClE,KAAC,CAAC;;AAGF,IAAA,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,QAAA,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAEzC,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,aAAa,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;;QAG3D,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;YACrC,SAAS,CAAC,WAAW,KAAK,GAAG,CAAC,CAAE,CAAA,CAAC,GAAG,KAAK,CAAC;AAC5C,SAAC,CAAC,CAAC;;AAEH,QAAA,SAAS,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3F,QAAA,SAAS,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3F,QAAA,SAAS,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACxF,QAAA,SAAS,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACxF,SAAS,CAAC,+BAA+B,CAAC,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAE7G,MAAM,kBAAkB,GAAG,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,SAAS,CAAC,sCAAsC,CAAC,GAAG,WAAW,CAAC,kBAAkB,EAAE,CAAC,IACnF,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,CAC/B,CAAC;AACF,QAAA,SAAS,CAAC,sCAAsC,CAAC,GAAG,WAAW,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KACvG;;AAGD,IAAA,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,QAAA,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;KAC1C;;AAGD,IAAA,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,QAAA,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;KAC1C;;AAGD,IAAA,IAAI,KAAK,CAAC,UAAU,EAAE;AACpB,QAAA,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;KACtC;;AAGD,IAAA,IAAI,KAAK,CAAC,SAAS,EAAE;AACnB,QAAA,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;KACpC;;IAGD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA,EAAA,EAAK,eAAe,CAAA,CAAA,EAAI,GAAG,CAAA,EAAA,EAAK,SAAS,CAAC,GAAG,CAAC,CAAG,CAAA,CAAA,CAAC,CAAC;IAErG,OAAO,CAAA;;AAEH,IAAA,EAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;;GAErB,CAAC,IAAI,EAAE,CAAC;AACX,CAAC;SAEe,aAAa,CAAC,eAAuB,EAAE,KAAY,EAAE,QAAmC,EAAA;IACtG,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAE/C,IAAI,SAAS,EAAE,EAAE;QACf,SAAS,CAAC,KAAK,EAAE,CAAG,EAAA,gBAAgB,CAAgB,cAAA,CAAA,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;KACrE;SAAM;QACL,IAAI,CAAC,CAAuE,qEAAA,CAAA,CAAC,CAAC;KAC/E;AACH;;ACvGA;;;AAGG;AAWH,MAAM,SAAS,GAAG,UAAU,KAAiB,EAAA;IAC3C,OAAO,KAAK,KAAK,SAAS,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,KAAK,CAAC;MAKlB,eAAe,CAAA;AAQ1B,IAAA,WAAA,GAAA;AAPQ,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAkB,CAAC;;AAGtC,QAAA,IAAA,CAAA,MAAM,GAAa,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QAE/D,IAAQ,CAAA,QAAA,GAAkB,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAG/E,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;;YAErB,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,IAAI,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC5G;KACF;IAED,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED,IAAA,qBAAqB,CAAwB,aAAgB,EAAA;AAC3D,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KACnC;AAED,IAAA,gCAAgC,CAAC,aAA0B,EAAA;QACzD,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAC7B,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,EAChC,KAAK,CAAC,SAAS,CAAC,CACjB,CAAC;KACH;IAED,GAAG,CAAwB,aAAgB,EAAE,KAAkB,EAAA;AAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;QACzE,IAAI,aAAa,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YAClD,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,IAAI,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC5G;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACzC;8GApCU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;AAwCD;AAEA;;;AAGG;AACH;SACgB,UAAU,GAAA;AACxB,IAAA,OAAO,SAAS,eAAe,CAC7B,MAAiB,EACjB,QAAmB,EACnB,kBAA+C,EAAA;AAE/C,QAAA,MAAM,eAAe,GAAG,CAA6B,0BAAA,EAAA,QAAQ,EAAE,CAAC;AAEhE,QAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE;AAC7C,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,UAAU,EAAE,KAAK;AAClB,SAAA,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,GAAA;gBACD,MAAM,aAAa,GAAG,kBAAkB,EAAE,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5G,gBAAA,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzE,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC;AAC/F,gBAAA,IAAI,cAAc,IAAI,SAAS,CAAC,aAAa,CAAC,EAAE;AAC9C,oBAAA,OAAO,aAAa,CAAC;iBACtB;qBAAM;AACL,oBAAA,OAAO,SAAS,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,aAAa,CAAC;iBAC7D;aACF;AACD,YAAA,GAAG,CAAC,KAAS,EAAA;;gBAEX,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,IAAI,EAAE,CAAC;AAC9D,gBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEvF,gBAAA,IAAI,kBAAkB,EAAE,GAAG,EAAE;oBAC3B,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAM,CAAC,CAAC;iBAC3C;qBAAM;AACL,oBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC;iBAC/B;aACF;AACD,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,UAAU,EAAE,IAAI;SACjB,CAAC;AACJ,KAAC,CAAC;AACJ;;AC7GA;;;AAGG;;ACHH;;AAEG;;;;"}