{"version":3,"file":"entry-point.js","sources":["../../../src/packages/core/extension-registry/components/extension-slot/extension-slot.element.ts","../../../src/packages/core/extension-registry/components/extension-with-api-slot/extension-with-api-slot.element.ts","../../../src/packages/core/extension-registry/components/ref-manifest/ref-manifest.element.ts","../../../src/packages/core/entry-point.ts"],"sourcesContent":["import { umbExtensionsRegistry } from '../../registry.js';\r\nimport type { TemplateResult } from '@umbraco-cms/backoffice/external/lit';\r\nimport { css, repeat, customElement, property, state, html, nothing } from '@umbraco-cms/backoffice/external/lit';\r\nimport {\r\n\ttype UmbExtensionElementInitializer,\r\n\tUmbExtensionsElementInitializer,\r\n} from '@umbraco-cms/backoffice/extension-api';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\n\r\n/**\r\n * @element umb-extension-slot\r\n * @description A element which renderers the extensions of a given type or types.\r\n * @slot default - slot for inserting additional things into this slot.\r\n * @class UmbExtensionSlot\r\n * @augments {UmbLitElement}\r\n */\r\n\r\n// TODO: Refactor extension-slot and extension-with-api slot.\r\n// TODO: Fire change event.\r\n// TODO: Make property that reveals the amount of displayed/permitted extensions.\r\n@customElement('umb-extension-slot')\r\nexport class UmbExtensionSlotElement extends UmbLitElement {\r\n\t#attached = false;\r\n\t#extensionsController?: UmbExtensionsElementInitializer | UmbExtensionElementInitializer;\r\n\r\n\t@state()\r\n\tprivate _permitted?: Array;\r\n\r\n\t@property({ type: Boolean })\r\n\tsingle?: boolean;\r\n\r\n\t/**\r\n\t * The type or types of extensions to render.\r\n\t * @type {string | string[]}\r\n\t * @memberof UmbExtensionSlot\r\n\t * @example\r\n\t * \r\n\t * or multiple:\r\n\t * \r\n\t */\r\n\t@property({ type: String })\r\n\tpublic get type(): string | string[] | undefined {\r\n\t\treturn this.#type;\r\n\t}\r\n\tpublic set type(value: string | string[] | undefined) {\r\n\t\tif (value === this.#type) return;\r\n\t\tthis.#type = value;\r\n\t\tthis.#observeExtensions();\r\n\t}\r\n\t#type?: string | string[] | undefined;\r\n\r\n\t/**\r\n\t * Filter method for extension manifests.\r\n\t * This is an initial filter taking effect before conditions or overwrites, the extensions will still be filtered by the conditions defined in the manifest.\r\n\t * @type {(manifest: any) => boolean}\r\n\t * @memberof UmbExtensionSlot\r\n\t * @example\r\n\t * ext.meta.anyPropToFilter === 'foo'}>\r\n\t */\r\n\t@property({ type: Object, attribute: false })\r\n\tpublic get filter(): (manifest: any) => boolean {\r\n\t\treturn this.#filter;\r\n\t}\r\n\tpublic set filter(value: (manifest: any) => boolean) {\r\n\t\tif (value === this.#filter) return;\r\n\t\tthis.#filter = value;\r\n\t\tthis.#observeExtensions();\r\n\t}\r\n\t#filter: (manifest: any) => boolean = () => true;\r\n\r\n\t/**\r\n\t * Properties to pass to the extensions elements.\r\n\t * Notice: The individual manifest of the extension is parsed to each extension element no matter if this is set or not.\r\n\t * @type {Record}\r\n\t * @memberof UmbExtensionSlot\r\n\t * @example\r\n\t * \r\n\t */\r\n\t@property({ type: Object, attribute: false })\r\n\tget props(): Record | undefined {\r\n\t\treturn this.#props;\r\n\t}\r\n\tset props(newVal: Record | undefined) {\r\n\t\tthis.#props = newVal;\r\n\t\tif (this.#extensionsController) {\r\n\t\t\tthis.#extensionsController.properties = newVal;\r\n\t\t}\r\n\t}\r\n\t#props?: Record = {};\r\n\r\n\t@property({ type: String, attribute: 'default-element' })\r\n\tpublic defaultElement?: string;\r\n\r\n\t@property({ attribute: false })\r\n\tpublic renderMethod?: (\r\n\t\textension: UmbExtensionElementInitializer,\r\n\t\tindex: number,\r\n\t) => TemplateResult | TemplateResult<1> | HTMLElement | null | undefined | typeof nothing;\r\n\r\n\toverride connectedCallback(): void {\r\n\t\tsuper.connectedCallback();\r\n\t\tthis.#attached = true;\r\n\t\tthis.#observeExtensions();\r\n\t}\r\n\toverride disconnectedCallback(): void {\r\n\t\t// _permitted is reset as the extensionsController fires a callback on destroy.\r\n\t\tthis.#attached = false;\r\n\t\tthis.#extensionsController?.destroy();\r\n\t\tthis.#extensionsController = undefined;\r\n\t\tsuper.disconnectedCallback();\r\n\t}\r\n\r\n\t#observeExtensions(): void {\r\n\t\tif (!this.#attached) return;\r\n\t\tthis.#extensionsController?.destroy();\r\n\t\tif (this.#type) {\r\n\t\t\tthis.#extensionsController = new UmbExtensionsElementInitializer(\r\n\t\t\t\tthis,\r\n\t\t\t\tumbExtensionsRegistry,\r\n\t\t\t\tthis.#type,\r\n\t\t\t\tthis.filter,\r\n\t\t\t\t(extensionControllers) => {\r\n\t\t\t\t\tthis._permitted = extensionControllers;\r\n\t\t\t\t},\r\n\t\t\t\tundefined, // We can leave the alias undefined as we destroy this our selfs.\r\n\t\t\t\tthis.defaultElement,\r\n\t\t\t\t{\r\n\t\t\t\t\tsingle: this.single,\r\n\t\t\t\t},\r\n\t\t\t);\r\n\t\t\tthis.#extensionsController.properties = this.#props;\r\n\t\t}\r\n\t}\r\n\r\n\toverride render() {\r\n\t\treturn this._permitted\r\n\t\t\t? this._permitted.length > 0\r\n\t\t\t\t? repeat(this._permitted, (ext) => ext.alias, this.#renderExtension)\r\n\t\t\t\t: html``\r\n\t\t\t: nothing;\r\n\t}\r\n\r\n\t#renderExtension = (ext: UmbExtensionElementInitializer, i: number) => {\r\n\t\treturn this.renderMethod ? this.renderMethod(ext, i) : ext.component;\r\n\t};\r\n\r\n\tstatic override styles = css`\r\n\t\t:host {\r\n\t\t\tdisplay: contents;\r\n\t\t}\r\n\t`;\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-extension-slot': UmbExtensionSlotElement;\r\n\t}\r\n}\r\n","import { umbExtensionsRegistry } from '../../registry.js';\r\nimport type { TemplateResult } from '@umbraco-cms/backoffice/external/lit';\r\nimport { css, repeat, customElement, property, state, html, nothing } from '@umbraco-cms/backoffice/external/lit';\r\nimport {\r\n\ttype UmbExtensionElementAndApiInitializer,\r\n\tUmbExtensionsElementAndApiInitializer,\r\n\ttype UmbApiConstructorArgumentsMethodType,\r\n\ttype ApiLoaderProperty,\r\n} from '@umbraco-cms/backoffice/extension-api';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\n\r\n/**\r\n * @element umb-extension-with-api-slot\r\n * @description A element which renderers the extensions of a given type or types.\r\n * @slot default - slot for inserting additional things into this slot.\r\n * @class UmbExtensionSlot\r\n * @augments {UmbLitElement}\r\n */\r\n\r\n// TODO: Refactor extension-slot and extension-with-api slot.\r\n// TODO: Fire change event.\r\n// TODO: Make property that reveals the amount of displayed/permitted extensions.\r\n@customElement('umb-extension-with-api-slot')\r\nexport class UmbExtensionWithApiSlotElement extends UmbLitElement {\r\n\t#attached = false;\r\n\t#extensionsController?: UmbExtensionsElementAndApiInitializer;\r\n\r\n\t@state()\r\n\tprivate _permitted?: Array;\r\n\r\n\t@property({ type: Boolean })\r\n\tsingle?: boolean;\r\n\r\n\t/**\r\n\t * The type or types of extensions to render.\r\n\t * @type {string | string[]}\r\n\t * @memberof UmbExtensionSlot\r\n\t * @example\r\n\t * \r\n\t * or multiple:\r\n\t * \r\n\t */\r\n\t@property({ type: String })\r\n\tpublic get type(): string | string[] | undefined {\r\n\t\treturn this.#type;\r\n\t}\r\n\tpublic set type(value: string | string[] | undefined) {\r\n\t\tif (value === this.#type) return;\r\n\t\tthis.#type = value;\r\n\t\tthis.#observeExtensions();\r\n\t}\r\n\t#type?: string | string[] | undefined;\r\n\r\n\t/**\r\n\t * Filter method for extension manifests.\r\n\t * This is an initial filter taking effect before conditions or overwrites, the extensions will still be filtered by the conditions defined in the manifest.\r\n\t * @type {(manifest: any) => boolean}\r\n\t * @memberof UmbExtensionSlot\r\n\t * @example\r\n\t * ext.meta.anyPropToFilter === 'foo'}>\r\n\t */\r\n\t@property({ type: Object, attribute: false })\r\n\tpublic get filter(): (manifest: any) => boolean {\r\n\t\treturn this.#filter;\r\n\t}\r\n\tpublic set filter(value: (manifest: any) => boolean) {\r\n\t\tif (value === this.#filter) return;\r\n\t\tthis.#filter = value;\r\n\t\tthis.#observeExtensions();\r\n\t}\r\n\t#filter: (manifest: any) => boolean = () => true;\r\n\r\n\t/**\r\n\t * Properties to pass to the extensions elements.\r\n\t * Notice: The individual manifest of the extension is parsed to each extension element no matter if this is set or not.\r\n\t * @type {Record}\r\n\t * @memberof UmbExtensionSlot\r\n\t * @example\r\n\t * \r\n\t */\r\n\t@property({ attribute: false })\r\n\tget elementProps(): Record | undefined {\r\n\t\treturn this.#elProps;\r\n\t}\r\n\tset elementProps(newVal: Record | undefined) {\r\n\t\t// TODO, compare changes since last time. only reset the ones that changed. This might be better done by the controller is self:\r\n\t\tthis.#elProps = newVal;\r\n\t\tif (this.#extensionsController) {\r\n\t\t\tthis.#extensionsController.elementProperties = newVal;\r\n\t\t}\r\n\t}\r\n\t#elProps?: Record = {};\r\n\r\n\t/**\r\n\t * constructor arguments to pass to the extensions apis.\r\n\t * Notice: The host argument will be prepended as the first argument no matter if this is set or not.\r\n\t * @type {Array}\r\n\t * @memberof UmbExtensionSlot\r\n\t * @example\r\n\t * \r\n\t */\r\n\t@property({ attribute: false })\r\n\tget apiArgs(): Array | UmbApiConstructorArgumentsMethodType | undefined {\r\n\t\treturn this.#constructorArgs;\r\n\t}\r\n\tset apiArgs(newVal: Array | UmbApiConstructorArgumentsMethodType | undefined) {\r\n\t\tif (newVal === this.#constructorArgs) return;\r\n\t\tthis.#constructorArgs = newVal;\r\n\t\tthis.#observeExtensions();\r\n\t}\r\n\t#constructorArgs?: Array | UmbApiConstructorArgumentsMethodType = [];\r\n\r\n\t/**\r\n\t * Properties to pass to the extensions apis.\r\n\t * Notice: The individual manifest of the extension is parsed to each extension api no matter if this is set or not.\r\n\t * @type {Record}\r\n\t * @memberof UmbExtensionSlot\r\n\t * @example\r\n\t * \r\n\t */\r\n\t@property({ attribute: false })\r\n\tget apiProps(): Record | undefined {\r\n\t\treturn this.#apiProps;\r\n\t}\r\n\tset apiProps(newVal: Record | undefined) {\r\n\t\t// TODO, compare changes since last time. only reset the ones that changed. This might be better done by the controller is self:\r\n\t\tthis.#apiProps = newVal;\r\n\t\tif (this.#extensionsController) {\r\n\t\t\tthis.#extensionsController.apiProperties = newVal;\r\n\t\t}\r\n\t}\r\n\t#apiProps?: Record = {};\r\n\r\n\t@property({ type: String, attribute: 'default-element' })\r\n\tpublic defaultElement?: string;\r\n\r\n\t@property({ type: String, attribute: 'default-api' })\r\n\tpublic defaultApi?: ApiLoaderProperty;\r\n\r\n\t@property()\r\n\tpublic renderMethod?: (\r\n\t\textension: UmbExtensionElementAndApiInitializer,\r\n\t\tindex: number,\r\n\t) => TemplateResult | TemplateResult<1> | HTMLElement | null | undefined | typeof nothing;\r\n\r\n\toverride connectedCallback(): void {\r\n\t\tsuper.connectedCallback();\r\n\t\tthis.#attached = true;\r\n\t\tthis.#observeExtensions();\r\n\t}\r\n\toverride disconnectedCallback(): void {\r\n\t\tthis.#attached = false;\r\n\t\tthis.#extensionsController?.destroy();\r\n\t\tthis.#extensionsController = undefined;\r\n\t\tsuper.disconnectedCallback();\r\n\t}\r\n\r\n\t#observeExtensions(): void {\r\n\t\t// We want to be attached before we start observing extensions, cause first at this point we know that we got the right properties. [NL]\r\n\t\tif (!this.#attached) return;\r\n\t\tthis.#extensionsController?.destroy();\r\n\t\tif (this.#type) {\r\n\t\t\tthis.#extensionsController = new UmbExtensionsElementAndApiInitializer(\r\n\t\t\t\tthis,\r\n\t\t\t\tumbExtensionsRegistry,\r\n\t\t\t\tthis.#type,\r\n\t\t\t\tthis.#constructorArgs,\r\n\t\t\t\tthis.filter,\r\n\t\t\t\t(extensionControllers) => {\r\n\t\t\t\t\tthis._permitted = extensionControllers;\r\n\t\t\t\t},\r\n\t\t\t\tundefined, // We can leave the alias to undefined, as we destroy this our selfs.\r\n\t\t\t\tthis.defaultElement,\r\n\t\t\t\tthis.defaultApi,\r\n\t\t\t\t{\r\n\t\t\t\t\tsingle: this.single,\r\n\t\t\t\t},\r\n\t\t\t);\r\n\t\t\tthis.#extensionsController.apiProperties = this.#apiProps;\r\n\t\t\tthis.#extensionsController.elementProperties = this.#elProps;\r\n\t\t}\r\n\t}\r\n\r\n\toverride render() {\r\n\t\treturn this._permitted\r\n\t\t\t? this._permitted.length > 0\r\n\t\t\t\t? repeat(this._permitted, (ext) => ext.alias, this.#renderExtension)\r\n\t\t\t\t: html``\r\n\t\t\t: nothing;\r\n\t}\r\n\r\n\t#renderExtension = (ext: UmbExtensionElementAndApiInitializer, i: number) => {\r\n\t\treturn this.renderMethod ? this.renderMethod(ext, i) : ext.component;\r\n\t};\r\n\r\n\tstatic override styles = css`\r\n\t\t:host {\r\n\t\t\tdisplay: contents;\r\n\t\t}\r\n\t`;\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-extension-with-api-slot': UmbExtensionWithApiSlotElement;\r\n\t}\r\n}\r\n","import { UUIIconRequestEvent, UUIRefNodeElement } from '@umbraco-cms/backoffice/external/uui';\r\nimport { html, customElement, property, state } from '@umbraco-cms/backoffice/external/lit';\r\nimport { UmbElementMixin } from '@umbraco-cms/backoffice/element-api';\r\nimport type { ManifestBase } from '@umbraco-cms/backoffice/extension-api';\r\n\r\n@customElement('umb-ref-manifest')\r\nexport class UmbRefManifestElement extends UmbElementMixin(UUIRefNodeElement) {\r\n\t@property({ type: Object, attribute: false })\r\n\tpublic get manifest(): ManifestBase | undefined {\r\n\t\treturn undefined;\r\n\t}\r\n\tpublic set manifest(value: ManifestBase | undefined) {\r\n\t\tthis._alias = value?.alias;\r\n\t\tthis.name = value?.name ?? '';\r\n\t}\r\n\r\n\t@state()\r\n\tprivate _alias?: string;\r\n\r\n\toverride connectedCallback() {\r\n\t\tsuper.connectedCallback();\r\n\r\n\t\tthis.#requestIconSVG('icon-umb-manifest');\r\n\t}\r\n\r\n\t/* This is a bit stupid, but because this element extends from uui-ref-node, it only accepts the icon via the icon slot.\r\n\t ** Instead we overwrite the fallbackIcon property which requires a SVG... */\r\n\t#requestIconSVG(iconName: string) {\r\n\t\tif (iconName !== '' && iconName !== null) {\r\n\t\t\tconst event = new UUIIconRequestEvent(UUIIconRequestEvent.ICON_REQUEST, {\r\n\t\t\t\tdetail: { iconName: iconName },\r\n\t\t\t});\r\n\t\t\tthis.dispatchEvent(event);\r\n\t\t\tif (event.icon !== null) {\r\n\t\t\t\tevent.icon.then((iconSvg: string) => {\r\n\t\t\t\t\tthis.fallbackIcon = iconSvg;\r\n\t\t\t\t\tthis.requestUpdate('fallbackIcon');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected override renderDetail() {\r\n\t\treturn html`${this._alias}`;\r\n\t}\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-ref-manifest': UmbRefManifestElement;\r\n\t}\r\n}\r\n","import { UMB_AUTH_CONTEXT } from './auth/auth.context.token.js';\r\nimport { UmbBackofficeNotificationContainerElement, UmbBackofficeModalContainerElement } from './components/index.js';\r\nimport { UmbActionEventContext } from './action/action-event.context.js';\r\nimport { manifests as coreManifests } from './manifests.js';\r\nimport { UmbNotificationContext } from '@umbraco-cms/backoffice/notification';\r\nimport { UmbModalManagerContext } from '@umbraco-cms/backoffice/modal';\r\nimport { UmbExtensionsApiInitializer, type UmbEntryPointOnInit } from '@umbraco-cms/backoffice/extension-api';\r\n\r\nimport './property-action/components/index.js';\r\nimport './menu/components/index.js';\r\nimport './extension-registry/components/index.js';\r\n\r\nexport const onInit: UmbEntryPointOnInit = (host, extensionRegistry) => {\r\n\tnew UmbExtensionsApiInitializer(host, extensionRegistry, 'globalContext', [host]);\r\n\tnew UmbExtensionsApiInitializer(host, extensionRegistry, 'store', [host]);\r\n\tnew UmbExtensionsApiInitializer(host, extensionRegistry, 'treeStore', [host]);\r\n\tnew UmbExtensionsApiInitializer(host, extensionRegistry, 'itemStore', [host]);\r\n\r\n\textensionRegistry.registerMany(coreManifests);\r\n\r\n\tconst notificationContainerElement = new UmbBackofficeNotificationContainerElement();\r\n\thost.shadowRoot?.appendChild(notificationContainerElement);\r\n\r\n\tconst modalContainerElement = new UmbBackofficeModalContainerElement();\r\n\thost.shadowRoot?.appendChild(modalContainerElement);\r\n\r\n\tnew UmbNotificationContext(host);\r\n\tnew UmbModalManagerContext(host);\r\n\tnew UmbActionEventContext(host);\r\n\r\n\thost.consumeContext(UMB_AUTH_CONTEXT, (authContext) => {\r\n\t\t// Initialize the auth context to let the app context know that the core module is ready\r\n\t\tauthContext.setInitialized();\r\n\t});\r\n};\r\n"],"names":["_attached","_extensionsController","_type","_filter","_props","_UmbExtensionSlotElement_instances","observeExtensions_fn","_renderExtension","UmbExtensionSlotElement","UmbLitElement","__privateAdd","ext","i","__privateGet","value","__privateSet","__privateMethod","newVal","repeat","html","nothing","UmbExtensionsElementInitializer","umbExtensionsRegistry","extensionControllers","css","__decorateClass","state","property","customElement","_elProps","_constructorArgs","_apiProps","_UmbExtensionWithApiSlotElement_instances","UmbExtensionWithApiSlotElement","UmbExtensionsElementAndApiInitializer","_UmbRefManifestElement_instances","requestIconSVG_fn","UmbRefManifestElement","UmbElementMixin","UUIRefNodeElement","iconName","event","UUIIconRequestEvent","iconSvg","onInit","host","extensionRegistry","UmbExtensionsApiInitializer","coreManifests","notificationContainerElement","UmbBackofficeNotificationContainerElement","modalContainerElement","UmbBackofficeModalContainerElement","UmbNotificationContext","UmbModalManagerContext","UmbActionEventContext","UMB_AUTH_CONTEXT","authContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;wYAAAA,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC;AAqBa,IAAAC,IAAN,cAAsCC,EAAc;AAAA,EAApD,cAAA;AAAA,UAAA,GAAA,SAAA,GAAAC,EAAA,MAAAL,CAAA,GACMK,EAAA,MAAAV,GAAA,EAAA,GACZU,EAAA,MAAAT,CAAA,GA0BAS,EAAA,MAAAR,CAAA,GAmBAQ,EAAA,MAAAP,GAAsC,MAAM,EAAA,GAoB5CO,EAAA,MAAAN,GAAmC,EAAC,GAsDjBM,EAAA,MAAAH,GAAA,CAACI,GAAqCC,MACjD,KAAK,eAAe,KAAK,aAAaD,GAAKC,CAAC,IAAID,EAAI,SAC5D;AAAA,EAAA;AAAA,EAvGA,IAAW,OAAsC;AAChD,WAAOE,EAAK,MAAAX,CAAA;AAAA,EAAA;AAAA,EAEb,IAAW,KAAKY,GAAsC;AACjD,IAAAA,MAAUD,QAAKX,CAAO,MAC1Ba,EAAA,MAAKb,GAAQY,CAAA,GACbE,EAAA,MAAKX,GAALC,CAAA,EAAA,KAAA,IAAA;AAAA,EAAA;AAAA,EAaD,IAAW,SAAqC;AAC/C,WAAOO,EAAK,MAAAV,CAAA;AAAA,EAAA;AAAA,EAEb,IAAW,OAAOW,GAAmC;AAChD,IAAAA,MAAUD,QAAKV,CAAS,MAC5BY,EAAA,MAAKZ,GAAUW,CAAA,GACfE,EAAA,MAAKX,GAALC,CAAA,EAAA,KAAA,IAAA;AAAA,EAAA;AAAA,EAaD,IAAI,QAA6C;AAChD,WAAOO,EAAK,MAAAT,CAAA;AAAA,EAAA;AAAA,EAEb,IAAI,MAAMa,GAA6C;AACtDF,IAAAA,EAAA,MAAKX,GAASa,CAAA,GACVJ,QAAKZ,CAAuB,MAC/BY,EAAA,MAAKZ,GAAsB,aAAagB;AAAA,EACzC;AAAA,EAaQ,oBAA0B;AAClC,UAAM,kBAAkB,GACxBF,EAAA,MAAKf,GAAY,EAAA,GACjBgB,EAAA,MAAKX,GAALC,CAAA,EAAA,KAAA,IAAA;AAAA,EAAA;AAAA,EAEQ,uBAA6B;AAErCS,IAAAA,EAAA,MAAKf,GAAY,EAAA,GACjBa,EAAA,MAAKZ,IAAuB,QAAQ,GACpCc,EAAA,MAAKd,GAAwB,MAAA,GAC7B,MAAM,qBAAqB;AAAA,EAAA;AAAA,EAyBnB,SAAS;AACjB,WAAO,KAAK,aACT,KAAK,WAAW,SAAS,IACxBiB,EAAO,KAAK,YAAY,CAACP,MAAQA,EAAI,OAAOE,EAAK,MAAAN,CAAA,CAAgB,IACjEY,mBACDC;AAAA,EAAA;AAYL;AAjICpB,IAAA,oBAAA,QAAA;AACAC,IAAA,oBAAA,QAAA;AA0BAC,IAAA,oBAAA,QAAA;AAmBAC,IAAA,oBAAA,QAAA;AAoBAC,IAAA,oBAAA,QAAA;AAnEMC,IAAA,oBAAA,QAAA;AA2FNC,IAAkB,WAAS;AACtB,EAACO,QAAKb,CAAW,MACrBa,EAAA,MAAKZ,IAAuB,QAAQ,GAChCY,QAAKX,CAAO,MACfa,EAAA,MAAKd,GAAwB,IAAIoB;AAAA,IAChC;AAAA,IACAC;AAAA,IACAT,EAAK,MAAAX,CAAA;AAAA,IACL,KAAK;AAAA,IACL,CAACqB,MAAyB;AACzB,WAAK,aAAaA;AAAA,IACnB;AAAA,IACA;AAAA;AAAA,IACA,KAAK;AAAA,IACL;AAAA,MACC,QAAQ,KAAK;AAAA,IAAA;AAAA,EACd,CACD,GACKV,EAAA,MAAAZ,CAAA,EAAsB,aAAaY,EAAK,MAAAT,CAAA;AAE/C;AAUAG,IAAA,oBAAA,QAAA;AAzHYC,EA6HI,SAASgB;AAAA;AAAA;AAAA;AAAA;AAxHjBC,EAAA;AAAA,EADPC,EAAM;AAAA,GAJKlB,EAKJ,WAAA,cAAA,CAAA;AAGRiB,EAAA;AAAA,EADCE,EAAS,EAAE,MAAM,QAAS,CAAA;AAAA,GAPfnB,EAQZ,WAAA,UAAA,CAAA;AAYWiB,EAAA;AAAA,EADVE,EAAS,EAAE,MAAM,OAAQ,CAAA;AAAA,GAnBdnB,EAoBD,WAAA,QAAA,CAAA;AAmBAiB,EAAA;AAAA,EADVE,EAAS,EAAE,MAAM,QAAQ,WAAW,GAAO,CAAA;AAAA,GAtChCnB,EAuCD,WAAA,UAAA,CAAA;AAmBPiB,EAAA;AAAA,EADHE,EAAS,EAAE,MAAM,QAAQ,WAAW,GAAO,CAAA;AAAA,GAzDhCnB,EA0DR,WAAA,SAAA,CAAA;AAYGiB,EAAA;AAAA,EADNE,EAAS,EAAE,MAAM,QAAQ,WAAW,kBAAmB,CAAA;AAAA,GArE5CnB,EAsEL,WAAA,kBAAA,CAAA;AAGAiB,EAAA;AAAA,EADNE,EAAS,EAAE,WAAW,GAAO,CAAA;AAAA,GAxElBnB,EAyEL,WAAA,gBAAA,CAAA;AAzEKA,IAANiB,EAAA;AAAA,EADNG,EAAc,oBAAoB;AAAA,GACtBpB,CAAA;;;;;;;0YCrBbR,GAAAC,GAAAC,GAAAC,GAAA0B,GAAAC,GAAAC,GAAAC,GAAA1B,GAAAC;AAuBa,IAAA0B,IAAN,cAA6CxB,EAAc;AAAA,EAA3D,cAAA;AAAA,UAAA,GAAA,SAAA,GAAAC,EAAA,MAAAsB,CAAA,GACMtB,EAAA,MAAAV,GAAA,EAAA,GACZU,EAAA,MAAAT,CAAA,GA0BAS,EAAA,MAAAR,CAAA,GAmBAQ,EAAA,MAAAP,GAAsC,MAAM,EAAA,GAqB5CO,EAAA,MAAAmB,GAAqC,EAAC,GAmBtCnB,EAAA,MAAAoB,GAAgF,EAAC,GAqBjFpB,EAAA,MAAAqB,GAAsC,EAAC,GA4DpBrB,EAAA,MAAAH,GAAA,CAACI,GAA2CC,MACvD,KAAK,eAAe,KAAK,aAAaD,GAAKC,CAAC,IAAID,EAAI,SAC5D;AAAA,EAAA;AAAA,EAtJA,IAAW,OAAsC;AAChD,WAAOE,EAAK,MAAAX,CAAA;AAAA,EAAA;AAAA,EAEb,IAAW,KAAKY,GAAsC;AACjD,IAAAA,MAAUD,QAAKX,CAAO,MAC1Ba,EAAA,MAAKb,GAAQY,CAAA,GACbE,EAAA,MAAKgB,GAAL1B,CAAA,EAAA,KAAA,IAAA;AAAA,EAAA;AAAA,EAaD,IAAW,SAAqC;AAC/C,WAAOO,EAAK,MAAAV,CAAA;AAAA,EAAA;AAAA,EAEb,IAAW,OAAOW,GAAmC;AAChD,IAAAA,MAAUD,QAAKV,CAAS,MAC5BY,EAAA,MAAKZ,GAAUW,CAAA,GACfE,EAAA,MAAKgB,GAAL1B,CAAA,EAAA,KAAA,IAAA;AAAA,EAAA;AAAA,EAaD,IAAI,eAAoD;AACvD,WAAOO,EAAK,MAAAgB,CAAA;AAAA,EAAA;AAAA,EAEb,IAAI,aAAaZ,GAA6C;AAE7D,IAAAF,EAAA,MAAKc,GAAWZ,CAAA,GACZJ,QAAKZ,CAAuB,MAC/BY,EAAA,MAAKZ,GAAsB,oBAAoBgB;AAAA,EAChD;AAAA,EAaD,IAAI,UAAkF;AACrF,WAAOJ,EAAK,MAAAiB,CAAA;AAAA,EAAA;AAAA,EAEb,IAAI,QAAQb,GAAgF;AACvF,IAAAA,MAAWJ,QAAKiB,CAAkB,MACtCf,EAAA,MAAKe,GAAmBb,CAAA,GACxBD,EAAA,MAAKgB,GAAL1B,CAAA,EAAA,KAAA,IAAA;AAAA,EAAA;AAAA,EAaD,IAAI,WAAgD;AACnD,WAAOO,EAAK,MAAAkB,CAAA;AAAA,EAAA;AAAA,EAEb,IAAI,SAASd,GAA6C;AAEzD,IAAAF,EAAA,MAAKgB,GAAYd,CAAA,GACbJ,QAAKZ,CAAuB,MAC/BY,EAAA,MAAKZ,GAAsB,gBAAgBgB;AAAA,EAC5C;AAAA,EAgBQ,oBAA0B;AAClC,UAAM,kBAAkB,GACxBF,EAAA,MAAKf,GAAY,EAAA,GACjBgB,EAAA,MAAKgB,GAAL1B,CAAA,EAAA,KAAA,IAAA;AAAA,EAAA;AAAA,EAEQ,uBAA6B;AACrC,IAAAS,EAAA,MAAKf,GAAY,EAAA,GACjBa,EAAA,MAAKZ,IAAuB,QAAQ,GACpCc,EAAA,MAAKd,GAAwB,MAAA,GAC7B,MAAM,qBAAqB;AAAA,EAAA;AAAA,EA6BnB,SAAS;AACjB,WAAO,KAAK,aACT,KAAK,WAAW,SAAS,IACxBiB,EAAO,KAAK,YAAY,CAACP,MAAQA,EAAI,OAAOE,EAAK,MAAAN,CAAA,CAAgB,IACjEY,mBACDC;AAAA,EAAA;AAYL;AAhLCpB,IAAA,oBAAA,QAAA;AACAC,IAAA,oBAAA,QAAA;AA0BAC,IAAA,oBAAA,QAAA;AAmBAC,IAAA,oBAAA,QAAA;AAqBA0B,IAAA,oBAAA,QAAA;AAmBAC,IAAA,oBAAA,QAAA;AAqBAC,IAAA,oBAAA,QAAA;AA5GMC,IAAA,oBAAA,QAAA;AAsIN1B,IAAkB,WAAS;AAEtB,EAACO,QAAKb,CAAW,MACrBa,EAAA,MAAKZ,IAAuB,QAAQ,GAChCY,QAAKX,CAAO,MACfa,EAAA,MAAKd,GAAwB,IAAIiC;AAAA,IAChC;AAAA,IACAZ;AAAA,IACAT,EAAK,MAAAX,CAAA;AAAA,IACLW,EAAK,MAAAiB,CAAA;AAAA,IACL,KAAK;AAAA,IACL,CAACP,MAAyB;AACzB,WAAK,aAAaA;AAAA,IACnB;AAAA,IACA;AAAA;AAAA,IACA,KAAK;AAAA,IACL,KAAK;AAAA,IACL;AAAA,MACC,QAAQ,KAAK;AAAA,IAAA;AAAA,EACd,CACD,GACKV,EAAA,MAAAZ,CAAA,EAAsB,gBAAgBY,EAAK,MAAAkB,CAAA,GAC3ClB,EAAA,MAAAZ,CAAA,EAAsB,oBAAoBY,EAAK,MAAAgB,CAAA;AAEtD;AAUAtB,IAAA,oBAAA,QAAA;AAxKY0B,EA4KI,SAAST;AAAA;AAAA;AAAA;AAAA;AAvKjBC,EAAA;AAAA,EADPC,EAAM;AAAA,GAJKO,EAKJ,WAAA,cAAA,CAAA;AAGRR,EAAA;AAAA,EADCE,EAAS,EAAE,MAAM,QAAS,CAAA;AAAA,GAPfM,EAQZ,WAAA,UAAA,CAAA;AAYWR,EAAA;AAAA,EADVE,EAAS,EAAE,MAAM,OAAQ,CAAA;AAAA,GAnBdM,EAoBD,WAAA,QAAA,CAAA;AAmBAR,EAAA;AAAA,EADVE,EAAS,EAAE,MAAM,QAAQ,WAAW,GAAO,CAAA;AAAA,GAtChCM,EAuCD,WAAA,UAAA,CAAA;AAmBPR,EAAA;AAAA,EADHE,EAAS,EAAE,WAAW,GAAO,CAAA;AAAA,GAzDlBM,EA0DR,WAAA,gBAAA,CAAA;AAqBAR,EAAA;AAAA,EADHE,EAAS,EAAE,WAAW,GAAO,CAAA;AAAA,GA9ElBM,EA+ER,WAAA,WAAA,CAAA;AAmBAR,EAAA;AAAA,EADHE,EAAS,EAAE,WAAW,GAAO,CAAA;AAAA,GAjGlBM,EAkGR,WAAA,YAAA,CAAA;AAaGR,EAAA;AAAA,EADNE,EAAS,EAAE,MAAM,QAAQ,WAAW,kBAAmB,CAAA;AAAA,GA9G5CM,EA+GL,WAAA,kBAAA,CAAA;AAGAR,EAAA;AAAA,EADNE,EAAS,EAAE,MAAM,QAAQ,WAAW,cAAe,CAAA;AAAA,GAjHxCM,EAkHL,WAAA,cAAA,CAAA;AAGAR,EAAA;AAAA,EADNE,EAAS;AAAA,GApHEM,EAqHL,WAAA,gBAAA,CAAA;AArHKA,IAANR,EAAA;AAAA,EADNG,EAAc,6BAA6B;AAAA,GAC/BK,CAAA;;;;;;;oPCvBbE,GAAAC;AAMO,IAAMC,IAAN,cAAoCC,GAAgBC,EAAiB,EAAE;AAAA,EAAvE,cAAA;AAAA,UAAA,GAAA,SAAA,GAAA7B,GAAA,MAAAyB,CAAA;AAAA,EAAA;AAAA,EAEN,IAAW,WAAqC;AAAA,EACxC;AAAA,EAER,IAAW,SAASrB,GAAiC;AACpD,SAAK,SAASA,GAAO,OAChB,KAAA,OAAOA,GAAO,QAAQ;AAAA,EAAA;AAAA,EAMnB,oBAAoB;AAC5B,UAAM,kBAAkB,GAExBE,GAAA,MAAKmB,OAAL,KAAqB,MAAA,mBAAA;AAAA,EAAA;AAAA,EAoBH,eAAe;AAC1B,WAAAhB,uBAA0B,KAAK,MAAM;AAAA,EAAA;AAE9C;AAvCOgB,IAAA,oBAAA,QAAA;AAqBNC,KAAe,SAACI,GAAkB;AAC7B,MAAAA,MAAa,MAAMA,MAAa,MAAM;AACzC,UAAMC,IAAQ,IAAIC,EAAoBA,EAAoB,cAAc;AAAA,MACvE,QAAQ,EAAE,UAAAF,EAAmB;AAAA,IAAA,CAC7B;AACD,SAAK,cAAcC,CAAK,GACpBA,EAAM,SAAS,QACZA,EAAA,KAAK,KAAK,CAACE,MAAoB;AACpC,WAAK,eAAeA,GACpB,KAAK,cAAc,cAAc;AAAA,IAAA,CACjC;AAAA,EACF;AAEF;AAhCWlB,EAAA;AAAA,EADVE,EAAS,EAAE,MAAM,QAAQ,WAAW,GAAO,CAAA;AAAA,GADhCU,EAED,WAAA,YAAA,CAAA;AASHZ,EAAA;AAAA,EADPC,EAAM;AAAA,GAVKW,EAWJ,WAAA,UAAA,CAAA;AAXIA,IAANZ,EAAA;AAAA,EADNG,EAAc,kBAAkB;AAAA,GACpBS,CAAA;ACMA,MAAAO,KAA8B,CAACC,GAAMC,MAAsB;AACvE,MAAIC,EAA4BF,GAAMC,GAAmB,iBAAiB,CAACD,CAAI,CAAC,GAChF,IAAIE,EAA4BF,GAAMC,GAAmB,SAAS,CAACD,CAAI,CAAC,GACxE,IAAIE,EAA4BF,GAAMC,GAAmB,aAAa,CAACD,CAAI,CAAC,GAC5E,IAAIE,EAA4BF,GAAMC,GAAmB,aAAa,CAACD,CAAI,CAAC,GAE5EC,EAAkB,aAAaE,EAAa;AAEtC,QAAAC,IAA+B,IAAIC,GAA0C;AAC9E,EAAAL,EAAA,YAAY,YAAYI,CAA4B;AAEnD,QAAAE,IAAwB,IAAIC,GAAmC;AAChE,EAAAP,EAAA,YAAY,YAAYM,CAAqB,GAElD,IAAIE,GAAuBR,CAAI,GAC/B,IAAIS,GAAuBT,CAAI,GAC/B,IAAIU,GAAsBV,CAAI,GAEzBA,EAAA,eAAeW,IAAkB,CAACC,MAAgB;AAEtD,IAAAA,EAAY,eAAe;AAAA,EAAA,CAC3B;AACF;"}