@c8y/ngx-components 1018.0.147 → 1018.0.151
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.
- package/core/common/date.pipe.d.ts +2 -2
- package/core/common/stringify-object.pipe.d.ts +2 -1
- package/ecosystem/application-properties/update-application-modal/update-application-modal.component.d.ts +0 -2
- package/ecosystem/packages/deploy-application/deploy-application.component.d.ts +7 -6
- package/ecosystem/shared/ecosystem.constants.d.ts +3 -1
- package/ecosystem/shared/ecosystem.model.d.ts +3 -1
- package/ecosystem/shared/ecosystem.service.d.ts +11 -5
- package/esm2020/core/common/date.pipe.mjs +12 -7
- package/esm2020/core/common/stringify-object.pipe.mjs +11 -8
- package/esm2020/ecosystem/application-properties/application-properties.component.mjs +6 -4
- package/esm2020/ecosystem/application-properties/update-application-modal/update-application-modal.component.mjs +11 -22
- package/esm2020/ecosystem/applications/install-from-package/install-from-package.component.mjs +2 -2
- package/esm2020/ecosystem/packages/deploy-application/deploy-application.component.mjs +28 -85
- package/esm2020/ecosystem/shared/ecosystem.constants.mjs +5 -3
- package/esm2020/ecosystem/shared/ecosystem.model.mjs +3 -1
- package/esm2020/ecosystem/shared/ecosystem.service.mjs +121 -24
- package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs +139 -27
- package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-ecosystem.mjs +110 -179
- package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +20 -13
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs +126 -25
- package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem.mjs +110 -176
- package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +20 -13
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/locales/locales.pot +15 -3
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-ecosystem-shared.mjs","sources":["../../ecosystem/shared/ecosystem.model.ts","../../ecosystem/shared/ecosystem.constants.ts","../../ecosystem/shared/ecosystem-error.ts","../../ecosystem/shared/ecosystem.service.ts","../../ecosystem/shared/add-application.component.ts","../../ecosystem/shared/add-application.component.html","../../ecosystem/shared/translate-package-label.pipe.ts","../../ecosystem/shared/application-card.component.ts","../../ecosystem/shared/application-card.component.html","../../ecosystem/shared/application-properties-form.component.ts","../../ecosystem/shared/application-properties-form.component.html","../../ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.html","../../ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.html","../../ecosystem/shared/duplicate-application/duplicate-application.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application.component.html","../../ecosystem/shared/package-version-select/package-version-select.component.ts","../../ecosystem/shared/package-version-select/package-version-select.component.html","../../ecosystem/shared/upload-archive.component.ts","../../ecosystem/shared/upload-archive.component.html","../../ecosystem/shared/shared-ecosystem.module.ts","../../ecosystem/shared/c8y-ngx-components-ecosystem-shared.ts"],"sourcesContent":["import { ApplicationPlugin } from '@c8y/ngx-components';\n\nexport interface ApplicationState {\n label: string;\n class: string;\n tooltip: string;\n}\n\n/** Wizard types */\nexport enum EcosystemWizards {\n APPLICATION_UPLOAD = 'ecosystemApplicationUpload',\n MICROSERVICE_UPLOAD = 'ecosystemMicroserviceUpload',\n PACKAGE_UPLOAD = 'ecosystemPackageUpload',\n BLUEPRINT_DEPLOYMENT = 'ecosystemBlueprintDeployment',\n LICENSE_CONFIRM = 'ecosystemLicenseConfirm'\n}\n\nexport enum ERROR_TYPE {\n TYPE_VALIDATION = 'TYPE_VALIDATION',\n ALREADY_SUBSCRIBED = 'ALREADY_SUBSCRIBED',\n INTERNAL_ERROR = 'INTERNAL_ERROR',\n NO_MANIFEST_FILE = 'NO_MANIFEST_FILE',\n INVALID_PACKAGE = 'INVALID_PACKAGE',\n INVALID_APPLICATION = 'INVALID_APPLICATION',\n MICROSERVICE_NAME_TOO_LONG = 'MICROSERVICE_NAME_TOO_LONG',\n APPLICATION_CREATION_FAILED = 'APPLICATION_CREATION_FAILED',\n KEY_OR_CONTEXT_PATH_MISMATCH = 'KEY_OR_CONTEXT_PATH_MISMATCH'\n}\n\nexport type LicensedApplicationPlugin = Pick<\n ApplicationPlugin,\n 'type' | 'license' | 'name' | 'version' | 'contextPath'\n>;\n\nexport const PRODUCT_EXPERIENCE = {\n APPLICATIONS: {\n EVENTS: {\n AVAILABILITY: 'availability',\n APPLICATION_CARD: 'applicationCard',\n APPLICATION_PROPERTIES: 'applicationProperties',\n DEPLOY_APPLICATION: 'deployApplication',\n DUPLICATE_APPLICATION: 'duplicateApplication',\n INSTALLED_PLUGINS: 'installedPlugins',\n PACKAGE_PLUGINS: 'packagePlugins',\n PACKAGE_VERSIONS: 'packageVersions'\n },\n COMPONENTS: {\n APPLICATION_CARD: 'application-card',\n APPLICATION_PLUGINS: 'application-plugins',\n APPLICATION_PROPERTIES: 'application-properties',\n DEPLOY_APPLICATION: 'deploy-application',\n DUPLICATE_APPLICATION_PROPERTIES: 'duplicate-application-properties',\n PLUGIN_LIST: 'plugin-list',\n PACKAGE_VERSIONS: 'package-versions-list',\n UPDATE_PLUGIN_OF_APP: 'update-plugin-of-app'\n },\n ACTIONS: {\n AVAILABILITY_CHANGE: 'availabilityChange',\n CANCEL: 'cancel',\n CLONE: 'clone',\n CHANGE_PLUGIN_VERSION: 'changePluginVersion',\n DELETE: 'delete',\n DOWNLOAD: 'download',\n DEPLOY_APPLICATION: 'deployApplication',\n EDIT: 'edit',\n INSTALL_PLUGIN: 'installPlugin',\n INSTALL_PLUGINS: 'installPlugins',\n SELECT_VERSION: 'selectVersion',\n SET_AS_LATEST: 'setAsLatest',\n UPDATE_AVAILABLE: 'updateAvailable',\n UPLOAD: 'upload'\n },\n RESULTS: {\n DEPLOYED: 'deployed',\n DUPLICATED: 'duplicated',\n PLUGIN_INSTALLED: 'pluginInstalled',\n PLUGIN_REMOVED: 'pluginRemoved',\n PLUGIN_VERSION_CHANGED: 'pluginVersionChanged',\n SERVER_FAILURE: 'serverFailure',\n SUCCESS: 'success'\n }\n }\n};\n","import { ERROR_TYPE } from './ecosystem.model';\nimport { gettext, PackageType, PropertiesListItem } from '@c8y/ngx-components';\n\nexport const ERROR_MESSAGES = {\n [ERROR_TYPE.TYPE_VALIDATION]: gettext(\n 'Wrong file format. Expected a *.zip file with a valid manifest.'\n ),\n [ERROR_TYPE.ALREADY_SUBSCRIBED]: gettext(\n 'Could not subscribe to the microservice because another application with the same context path is already subscribed.'\n ),\n [ERROR_TYPE.NO_MANIFEST_FILE]: gettext('Could not find a manifest.'),\n [ERROR_TYPE.INVALID_PACKAGE]: gettext('You have not uploaded a valid package.'),\n [ERROR_TYPE.INVALID_APPLICATION]: gettext('You have not uploaded a valid application.'),\n [ERROR_TYPE.INTERNAL_ERROR]: gettext('An internal error occurred, try to upload again.'),\n [ERROR_TYPE.MICROSERVICE_NAME_TOO_LONG]: gettext(\n 'Microservice name \"{{ name }}\" must not be longer than {{ maxChars }} characters.'\n ),\n [ERROR_TYPE.APPLICATION_CREATION_FAILED]: gettext('Application creation failed.'),\n [ERROR_TYPE.KEY_OR_CONTEXT_PATH_MISMATCH]: gettext(\n 'The contextPath or key of the uploaded archive do not match with the existing app.'\n )\n};\n\nexport const APP_STATE = {\n SUBSCRIBED: {\n label: gettext('Subscribed`application`'),\n class: 'label-primary',\n tooltip: gettext('Provided by parent tenant.')\n },\n CUSTOM: {\n label: gettext('Custom`application`'),\n class: 'label-info',\n tooltip: gettext('Manually uploaded to the platform.')\n },\n EXTERNAL: {\n label: gettext('External`application`'),\n class: 'label-warning',\n tooltip: gettext('Application hosted outside of the platform.')\n },\n UNPACKED: {\n label: gettext('Unpacked`application`'),\n class: 'label-success',\n tooltip: gettext('Deployed from a package available under \"Packages\".')\n },\n PACKAGE_BLUEPRINT: {\n label: gettext('Blueprint'),\n class: 'label-success',\n tooltip: gettext('Contains an application and may include plugins.')\n },\n PACKAGE_PLUGIN: {\n label: gettext('Plugins'),\n class: 'label-info',\n tooltip: gettext('Contains only plugins.')\n },\n PACKAGE_UNKNOWN: {\n label: gettext('Unknown`package-type`'),\n class: 'label-info',\n tooltip: gettext('Package contents could not be determined.')\n }\n};\n\nexport const PACKAGE_TYPE_LABELS = {\n [PackageType.COMMUNITY]: {\n label: gettext('COMMUNITY`Package created by the developer community.`'),\n tooltip: gettext('Package created by the developer community.')\n },\n [PackageType.OFFICIAL]: {\n label: gettext('OFFICIAL`Package maintained by Software AG.`'),\n tooltip: gettext('Package maintained by Software AG.')\n },\n [PackageType.UNKNOWN]: {\n label: gettext('CUSTOM`Package maintained by an unknown source.`'),\n tooltip: gettext('Package maintainer unknown.')\n }\n};\n\nexport const packageProperties: PropertiesListItem[] = [\n {\n label: gettext('Version'),\n key: 'version'\n },\n {\n label: gettext('Author'),\n key: 'author'\n },\n {\n label: gettext('Keywords'),\n key: 'keywords'\n },\n {\n label: gettext('Source'),\n key: 'repository',\n transform: (repository: any) => (repository?.url ? repository.url : repository),\n type: 'link',\n action: (e, link: string) => window.open(link, '_blank', 'noopener,noreferrer')\n },\n {\n label: gettext('Homepage'),\n key: 'homepage',\n type: 'link',\n action: (e, link: string) => window.open(link, '_blank', 'noopener,noreferrer')\n },\n {\n label: gettext('Required platform version'),\n key: 'requiredPlatformVersion'\n },\n {\n label: gettext('License'),\n key: 'license'\n }\n];\n","import { ERROR_MESSAGES } from './ecosystem.constants';\nimport { ERROR_TYPE } from './ecosystem.model';\n\nexport class EcosystemError extends Error {\n constructor(public type: ERROR_TYPE) {\n super(ERROR_MESSAGES[type]);\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n ApplicationAvailability,\n ApplicationService,\n ApplicationType,\n IApplication,\n IApplicationBinary,\n IApplicationVersion,\n IApplicationVersionDeleteParams,\n ICurrentTenant,\n IdReference,\n IFetchResponse,\n IIdentified,\n IManagedObject,\n IManifest,\n InventoryService,\n IResult,\n IResultList,\n IUploadParamsOverride,\n TenantService\n} from '@c8y/client';\nimport {\n AlertService,\n AppStateService,\n gettext,\n HumanizeAppNamePipe,\n ModalService,\n PackageType,\n Status,\n WizardModalService,\n ZipService\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { saveAs } from 'file-saver';\nimport { cloneDeep, get, groupBy, kebabCase, pick, uniqBy } from 'lodash-es';\nimport { BehaviorSubject, Observable, defer } from 'rxjs';\nimport { debounceTime, take, map, shareReplay } from 'rxjs/operators';\nimport { gt, coerce } from 'semver';\nimport { EcosystemError } from './ecosystem-error';\nimport { APP_STATE, ERROR_MESSAGES } from './ecosystem.constants';\nimport {\n ApplicationState,\n EcosystemWizards,\n ERROR_TYPE,\n LicensedApplicationPlugin\n} from './ecosystem.model';\n\nconst CUMULOCITY_JSON = 'cumulocity.json';\nconst MICROSERVICE_NAME_MAX_LENGTH = 23;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EcosystemService {\n appDeleted = new EventEmitter<IApplication>();\n progress: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n private appsGroupedByContextPath$: Observable<Record<string, IApplication[]>>;\n private xhr: XMLHttpRequest;\n\n constructor(\n private modal: ModalService,\n private alertService: AlertService,\n private humanizeAppName: HumanizeAppNamePipe,\n private translateService: TranslateService,\n private applicationService: ApplicationService,\n private appStateService: AppStateService,\n private zipService: ZipService,\n private tenantService: TenantService,\n private inventoryService: InventoryService,\n private wizardModalService: WizardModalService\n ) {\n this.appsGroupedByContextPath$ = defer(() => this.getWebApplications()).pipe(\n map(webApps => groupBy(webApps, 'contextPath')),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n }\n\n getUniqueAppConfig(srcApp: IApplication, existingApps: IApplication[]): IApplication {\n let app: IApplication = {\n name: srcApp.name,\n key: srcApp.key,\n contextPath: srcApp.contextPath\n };\n for (let retryNo = 0; retryNo < 9; ) {\n if (this.checkIfAppNameKeyPathExists(existingApps, app, retryNo)) {\n retryNo++;\n app = {\n name: [srcApp.name, retryNo].join('-'),\n key: [srcApp.key, retryNo].join('-'),\n contextPath: [srcApp.contextPath, retryNo].join('-')\n };\n } else {\n return app;\n }\n }\n return app;\n }\n\n /**\n * Community plugins need to verify the license agreement. If a package is a community\n * package, the license is shown.\n *\n * @param pluginsToInstall The list of plugins to install.\n * @returns true if the installation can continue.\n */\n async verifyLicenses(pluginsToInstall: Array<LicensedApplicationPlugin>) {\n let _resolve;\n const result: Promise<boolean> = new Promise(resolve => {\n _resolve = resolve;\n });\n\n pluginsToInstall = pluginsToInstall.filter(plugin => plugin.type !== PackageType.CUSTOM);\n\n if (pluginsToInstall.length === 0) {\n return Promise.resolve(true);\n }\n\n const initialState: any = {\n id: EcosystemWizards.LICENSE_CONFIRM,\n componentInitialState: {\n pluginsToInstall\n }\n };\n const modalOptions = { initialState };\n const wizard = this.wizardModalService.show(modalOptions);\n\n wizard.content.onClose.subscribe(confirmed => {\n _resolve(confirmed);\n });\n\n return result;\n }\n\n /**\n * @description\n * Compares currently deployed application version with application version tagged as \"latest\"\n *\n * @param {string} currentApplicationVersion Deployed application version\n * @param {object} latestApp Latest application version object\n *\n * @returns {boolean} Returns true if latest version is greater than current, otherwise false\n */\n shouldUpgradePackage(currentApplicationVersion: string, latestApp: IApplicationVersion): boolean {\n const latestApplicationVersion = latestApp?.version;\n\n if (!latestApplicationVersion || !currentApplicationVersion) {\n return false;\n }\n\n return gt(coerce(latestApplicationVersion), coerce(currentApplicationVersion));\n }\n\n /**\n * @description\n * Gets an object that contains searched tag\n *\n * @param {array} applicationVersions Array with all available versions\n * @param {string} tagName Searched tag\n *\n * @returns {object} Returns an object with searched tag\n */\n getApplicationVersionObjectByTag(\n applicationVersions: IApplicationVersion[],\n tagName: string\n ): IApplicationVersion {\n return applicationVersions?.find(element => element.tags.includes(tagName));\n }\n\n async getApplication(appId: IdReference): Promise<IApplication> {\n return (await this.applicationService.detail(appId)).data;\n }\n\n getApplications(customFilter: any = {}): Promise<IResultList<IApplication>> {\n const filter: object = {\n pageSize: 2000,\n withTotalPages: true\n };\n Object.assign(filter, customFilter);\n const currentTenant = this.appStateService.currentTenant.value;\n return this.applicationService.listByTenant(currentTenant.name, filter);\n }\n\n async getMicroservices(): Promise<IApplication[]> {\n const apps = (await this.getApplications()).data;\n const microservices = apps.filter(app => this.isMicroservice(app));\n return microservices.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getWebApplications(customFilter: any = {}): Promise<IApplication[]> {\n const apps = (await this.getApplications(customFilter)).data;\n const webApps = apps.filter(app => this.isApplication(app));\n return webApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getFeatureApplications(customFilter: any = {}): Promise<IApplication[]> {\n const apps = (await this.getApplications(customFilter)).data;\n const webApps = apps.filter(app => this.isFeature(app));\n return webApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getPackageApplications(customFilter: any = {}): Promise<IApplication[]> {\n const filter = Object.assign({}, customFilter);\n const sharedFilter = Object.assign(\n {\n availability: ApplicationAvailability.SHARED,\n type: 'HOSTED',\n pageSize: 2000\n },\n customFilter\n );\n const [{ data: apps }, { data: shared }] = await Promise.all([\n this.getApplications(filter),\n this.applicationService.list(sharedFilter)\n ]);\n const webApps = [...apps, ...shared].filter(app => this.isPackage(app));\n // an app could be subscribed to a tenant, but also have it's availability set to SHARED, in that case it would occur twice.\n const uniqWebApps = uniqBy(webApps, (app: IApplication) => app.id);\n return uniqWebApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async isMicroserviceHostingAllowed(): Promise<boolean> {\n const { data: apps } = await this.applicationService.listByName('feature-microservice-hosting');\n return !!apps.filter(app => app.owner?.tenant?.id === 'management').length;\n }\n\n canOpenAppInBrowser(app: IApplication): boolean {\n const isNotAFeature = !this.isFeature(app);\n const hasProperType = [\n ApplicationType.HOSTED,\n ApplicationType.EXTERNAL,\n ApplicationType.REPOSITORY\n ].includes(app.type);\n const isNotPackage = !this.isPackage(app);\n return isNotAFeature && hasProperType && isNotPackage;\n }\n\n openApp(app) {\n window.open(this.applicationService.getHref(app), '_blank', 'noopener,noreferrer');\n }\n\n async canDeleteApp(app: IApplication): Promise<boolean> {\n return (\n this.isOwner(app) && (!this.isCurrentApp(app) || (await this.hasSubscribedAppParent(app)))\n );\n }\n\n isOwner(app: IApplication): boolean {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n const appOwner = get(app, 'owner.tenant.id');\n return currentTenant.name === appOwner;\n }\n\n isFeature(app: IApplication): boolean {\n return !!app.name.match(/feature-/);\n }\n\n isMicroservice(app: IApplication): boolean {\n return app.type === 'MICROSERVICE';\n }\n\n isExternal(app: IApplication): boolean {\n return app.type === 'EXTERNAL';\n }\n\n isPackage(app: IApplication): boolean {\n return app.manifest?.isPackage === true;\n }\n\n isPlugin(app: IApplication): boolean {\n return app.manifest?.package === 'plugin';\n }\n\n cancelAppCreation(app: IApplication): void {\n if (this.xhr) {\n this.xhr.abort();\n }\n if (app) {\n this.applicationService.delete(app);\n }\n }\n\n updateUploadProgress(event): void {\n if (event.lengthComputable) {\n const currentProgress = this.progress.value;\n this.progress.next(currentProgress + (event.loaded / event.total) * (95 - currentProgress));\n }\n }\n\n setAppActiveVersion(app: IApplication, activeVersionId: string): Promise<IApplication> {\n return this.applicationService.update({ id: app.id, activeVersionId });\n }\n\n setPackageVersionTag(app: IApplication, version: string, tags: string[]) {\n return this.applicationService.setPackageVersionTag(app, version, tags);\n }\n\n deletePackageVersion(app: IApplication, params: IApplicationVersionDeleteParams) {\n return this.applicationService.deleteVersionPackage(app, params);\n }\n\n getHumanizedAppName(app: IApplication): Promise<string> {\n return this.humanizeAppName.transform(app.name).pipe(debounceTime(250), take(1)).toPromise();\n }\n\n createConfig(app: IApplication, formGroupValue: FormGroup): Partial<IApplication> {\n const { id, type, availability } = app;\n let config = pick(formGroupValue, ['name', 'key', 'contextPath']);\n config = {\n ...config,\n isSetup: true,\n id,\n type,\n availability\n };\n return config;\n }\n\n async updateAppManifest(\n application: IApplication,\n sourcePackage: IApplication\n ): Promise<{ res: IFetchResponse; data: any }> {\n const { id } = application;\n const cleanedApp = this.removeAppProperties(application);\n if (!cleanedApp.manifest) {\n cleanedApp.manifest = {};\n }\n cleanedApp.manifest.isPackage = false;\n cleanedApp.manifest.source = sourcePackage.id;\n\n return await this.applicationService\n .binary(id)\n .updateFiles([{ path: CUMULOCITY_JSON, contents: JSON.stringify(cleanedApp) as any }]);\n }\n\n async listArchives(appId: string | number | IApplication): Promise<IApplicationBinary[]> {\n const filter = {\n pageSize: 100\n };\n return (await this.applicationService.binary(appId).list(filter)).data;\n }\n\n async deleteArchive(archive: IApplicationBinary, app: IApplication): Promise<void> {\n const humanizedArchiveName = await this.getHumanizedAppName(archive);\n try {\n await this.modal.confirm(\n gettext('Delete archive'),\n this.translateService.instant(\n gettext(\n `You are about to delete archive \"{{ humanizedArchiveName }}\". Do you want to proceed?`\n ),\n { humanizedArchiveName }\n ),\n Status.DANGER,\n { ok: gettext('Delete'), cancel: gettext('Cancel') }\n );\n await this.applicationService.binary(app).delete(archive.id);\n this.alertService.success(gettext('Archive deleted.'));\n } catch (ex) {\n if (ex) {\n this.alertService.danger(get(ex, 'data.message'), ex.data);\n }\n throw new Error('Cancelled');\n }\n }\n\n async getArchiveManagedObject(binaryId: string): Promise<IManagedObject> {\n return (await this.inventoryService.detail(binaryId)).data;\n }\n\n async downloadArchive(\n app: IApplication,\n archive: Pick<IApplicationBinary, 'name' | 'id'>\n ): Promise<void> {\n try {\n const binary = await this.getBinary(app, archive);\n const fileBinary = new Blob([binary], { type: 'application/x-zip-compressed' });\n saveAs(fileBinary, archive.name);\n } catch (e) {\n // empty\n }\n }\n\n async updateApp(app: IApplication, deleteOnFailure = false): Promise<IResult<IApplication>> {\n try {\n return await this.applicationService.update(app);\n } catch (ex) {\n this.alertError(ex);\n if (deleteOnFailure) {\n await this.applicationService.delete(app.id);\n throw new EcosystemError(ERROR_TYPE.APPLICATION_CREATION_FAILED);\n }\n }\n }\n\n async deleteApp(app: IApplication, silent = false): Promise<void> {\n const humanizedAppName = await this.getHumanizedAppName(app);\n if (!silent) {\n await this.modal.confirm(\n gettext('Delete application'),\n this.translateService.instant(\n gettext(\n `You are about to delete application \"{{ humanizedAppName }}\". Do you want to proceed?`\n ),\n { humanizedAppName }\n ),\n Status.DANGER,\n { ok: gettext('Delete'), cancel: gettext('Cancel') }\n );\n }\n await this.applicationService.delete(app.id);\n if (!silent) {\n this.alertService.success(gettext('Application deleted.'));\n }\n this.appDeleted.emit(app);\n }\n\n async checkIfSubscribed(app: IApplication): Promise<boolean> {\n const currentTenant = await this.tenantService.current();\n const subscribedApps = currentTenant.data.applications.references;\n return subscribedApps.some(application => application.application.id === app.id);\n }\n\n async subscribeApp(app: IApplication): Promise<void> {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n try {\n await this.tenantService.subscribeApplication(currentTenant, app);\n this.alertService.success(gettext('Successfully subscribed to application.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async unsubscribeApp(app: IApplication): Promise<void> {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n try {\n await this.tenantService.unsubscribeApplication(currentTenant, app);\n this.alertService.success(gettext('Successfully unsubscribed from application.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async isValidAppType(archive: File, appType: ApplicationType): Promise<boolean> {\n try {\n const currentType = await this.getAppType(archive);\n if (currentType !== appType) {\n throw new EcosystemError(ERROR_TYPE.TYPE_VALIDATION);\n } else {\n this.progress.next(this.progress.value + 10);\n return true;\n }\n } catch (ex) {\n throw new EcosystemError(ERROR_TYPE.TYPE_VALIDATION);\n }\n }\n\n async uploadArchiveToApp(\n archive: File,\n app: IApplication,\n isNewVersion = false\n ): Promise<IApplication> {\n let uploadOverrides: IUploadParamsOverride;\n if (isNewVersion) {\n uploadOverrides = await this.getUploadOverrides(archive, app);\n }\n const binaryService = this.applicationService.binary(app);\n this.xhr = binaryService.uploadWithProgressXhr(\n archive,\n this.updateUploadProgress.bind(this),\n '',\n uploadOverrides\n );\n\n const binaryMo = await binaryService.getXMLHttpResponse(this.xhr);\n\n // TODO commented it due to: https://cumulocity.atlassian.net/browse/MTM-48553\n // Add it back when BE fixes issues with activeVersion.\n // if (isNewVersion) {\n // return await this.getApplication(app);\n // }\n return (await this.setAppActiveVersion(app, (binaryMo.binaryId || binaryMo.id) as string)).data;\n }\n\n async validateArchiveToAppCompatibility(archive: File, app: IApplication): Promise<void> {\n const appType = await this.getAppType(archive);\n if (appType !== app.type) {\n throw new EcosystemError(ERROR_TYPE.INVALID_APPLICATION);\n } else {\n this.progress.next(this.progress.value + 10);\n }\n if (this.isMicroservice(app)) {\n return;\n }\n const manifest = await this.getCumulocityJson(archive);\n // A user can upload an app without a Cumulocity JSON file (e.g. a react app).\n // This is allowed and should not trigger a validation error.\n if (!manifest) {\n return;\n }\n await this.validatePackageKeyAndContextPath(manifest, app);\n }\n\n async getCumulocityJson(archive: File): Promise<IManifest | null> {\n try {\n const c8yManifest = await this.getCumulocityJson$(archive).toPromise();\n return c8yManifest;\n } catch (ex) {\n return null;\n }\n }\n\n async createAppForArchive(archive, isPackageTypeArchive = false): Promise<IApplication> {\n let isPackage = false;\n const appType = await this.getAppType(archive);\n let appModel: any = {};\n const supportedAppTypes = [ApplicationType.HOSTED, ApplicationType.MICROSERVICE];\n\n if (supportedAppTypes.includes(appType)) {\n try {\n appModel = await this.getCumulocityJson$(archive).toPromise();\n isPackage = appModel.isPackage;\n } catch (e) {\n // do nothing, we allow having HOSTED applications without the manifest file\n }\n }\n const name = this.getBaseNameFromArchiveOrAppModel(archive, appType, appModel);\n const clearedName = this.removeForbiddenCharacters(name);\n const key = this.getAppKey(appModel, clearedName);\n const contextPath = this.getContextPath(appModel, name);\n\n const appToSave = {\n resourcesUrl: '/',\n type: appType,\n name,\n key,\n contextPath\n };\n\n if (isPackageTypeArchive && !isPackage) {\n throw new EcosystemError(ERROR_TYPE.INVALID_PACKAGE);\n } else if (!isPackageTypeArchive && isPackage) {\n throw new EcosystemError(ERROR_TYPE.INVALID_APPLICATION);\n } else if (this.isNameLengthExceeded(name, appType)) {\n const error = new Error();\n error.name = ERROR_TYPE.MICROSERVICE_NAME_TOO_LONG;\n error.message = this.translateService.instant(ERROR_MESSAGES[error.name], {\n name,\n maxChars: MICROSERVICE_NAME_MAX_LENGTH\n });\n throw error;\n }\n return (\n await this.applicationService.create({\n ...appToSave,\n manifest: {\n isPackage,\n ...(appModel?.package && { package: appModel.package })\n } as unknown as IManifest\n })\n ).data;\n }\n\n async reactivateArchive(app: IApplication): Promise<void> {\n try {\n await this.applicationService.reactivateArchive(app.id);\n this.alertService.success(gettext('Application reactivated.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async removeOldestArchive(app: IApplication, archives: IApplicationBinary[]): Promise<void> {\n try {\n await this.modal.confirm(\n gettext('Delete oldest archive and continue'),\n gettext(\n 'Up to 6 archives can be saved in the platform. If you upload a new archive, the oldest archive that is not active will be deleted. Do you want to proceed?'\n ),\n Status.INFO,\n { ok: gettext('Delete and continue') }\n );\n const archiveToDelete = archives[archives.length - 2];\n await this.applicationService.binary(app).delete(archiveToDelete.id);\n this.alertService.success(gettext('Archive deleted.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n getAppState(app: IApplication): ApplicationState {\n if (!this.isOwner(app)) {\n return APP_STATE.SUBSCRIBED;\n } else if (this.isUnpacked(app)) {\n return APP_STATE.UNPACKED;\n } else if (app.type === ApplicationType.EXTERNAL) {\n return APP_STATE.EXTERNAL;\n }\n return APP_STATE.CUSTOM;\n }\n\n getPackageContentState(app: IApplication): ApplicationState {\n if (!this.isPackage(app)) {\n return;\n }\n if (this.isPackageBlueprint(app)) {\n return APP_STATE.PACKAGE_BLUEPRINT;\n }\n if (this.isPluginsPackage(app)) {\n return APP_STATE.PACKAGE_PLUGIN;\n }\n return APP_STATE.PACKAGE_UNKNOWN;\n }\n\n isPackageBlueprint(app: IApplication): boolean {\n return this.isPackage(app) && app.manifest.package === 'blueprint';\n }\n\n isPluginsPackage(app: IApplication): boolean {\n return this.isPackage(app) && app.manifest.package === 'plugin';\n }\n\n isUnpacked(app: IApplication): boolean {\n return !!app.manifest?.source;\n }\n\n hasExports(app: IApplication): boolean {\n return !!app.manifest?.exports?.length;\n }\n\n isApplication(app: IApplication): boolean {\n return (\n app.type !== ApplicationType.MICROSERVICE && !this.isFeature(app) && !this.isPackage(app)\n );\n }\n\n isCustomMicroservice(app: IApplication) {\n return this.isOwner(app) && app.type === ApplicationType.MICROSERVICE;\n }\n\n async getBinary(\n app: IApplication,\n archive: IApplicationBinary | IIdentified\n ): Promise<ArrayBuffer> {\n let binary;\n try {\n const res = await this.applicationService.binary(app).downloadArchive(archive.id);\n binary = await res.arrayBuffer();\n } catch (ex) {\n const msg = gettext('Could not get the binary.');\n this.alertService.danger(msg);\n }\n return binary;\n }\n\n async isOverwrittenByCustomApp(app: IApplication): Promise<boolean> {\n return !this.isOwner(app) && (await this.hasSubscribedAppParent(app));\n }\n\n async hasSubscribedAppParent(app: IApplication): Promise<boolean> {\n const appsGroupedByContextPath = await this.appsGroupedByContextPath$.pipe(take(1)).toPromise();\n return app.contextPath && appsGroupedByContextPath[app.contextPath]?.length === 2;\n }\n\n /**\n * @deprecated\n */\n setAvailabilityToPrivateIfNotSetAlready(app: IApplication): IApplication {\n app.availability = ApplicationAvailability.PRIVATE;\n return app;\n }\n\n /**\n * Shows an error dialog.\n * @param error Either a server error or an internal [[EcosystemError]].\n */\n alertError(error: Error | EcosystemError) {\n if (error instanceof EcosystemError) {\n this.alertService.danger(error.message);\n } else {\n this.alertService.addServerFailure(error);\n }\n }\n\n async validatePackageKeyAndContextPath(manifest: IManifest, app: IApplication) {\n const contextPath = get(manifest, 'contextPath');\n const appKey = get(manifest, 'key');\n if (contextPath !== app.contextPath || appKey !== app.key) {\n throw new EcosystemError(ERROR_TYPE.KEY_OR_CONTEXT_PATH_MISMATCH);\n }\n }\n\n private getAppKey(appModel: IApplication, name: string): string {\n let key = appModel?.key;\n if (!key) {\n key = `${kebabCase(name)}-key`;\n }\n return key;\n }\n\n private getContextPath(appModel: IApplication, name: string): string {\n return appModel?.contextPath || name.toLowerCase();\n }\n\n private removeForbiddenCharacters(str: string): string {\n return str.replace(/[^a-zA-Z0-9-_]/g, '');\n }\n\n private isCurrentApp(app: IApplication): boolean {\n const currentApp = this.appStateService.state.app;\n return currentApp.contextPath === app.contextPath;\n }\n\n private getCumulocityJson$(archive: File): Observable<any> {\n return this.zipService.getJsonData(archive, {\n filename: CUMULOCITY_JSON\n });\n }\n\n private getAppType(archive: File): Promise<ApplicationType> {\n return this.getCumulocityJson$(archive)\n .toPromise()\n .then(\n data =>\n get(data, 'type') ||\n (get(data, 'apiVersion') ? ApplicationType.MICROSERVICE : ApplicationType.HOSTED)\n )\n .catch(() => ApplicationType.HOSTED);\n }\n\n private getBaseNameFromArchiveOrAppModel(\n archive: any,\n appType: ApplicationType,\n appModel?: IApplication\n ): string {\n let baseName = appModel?.name || archive.name.replace(/\\.zip$/i, '');\n if (appType === 'MICROSERVICE') {\n baseName = this.removeVersionFromName(baseName);\n }\n return baseName;\n }\n\n private checkIfAppNameKeyPathExists(\n existingApps: IApplication[],\n app: IApplication,\n retryNo: number\n ): IApplication {\n return existingApps.find(\n existingApp =>\n existingApp.name === app.name ||\n existingApp.key === app.key ||\n existingApp.contextPath === app.contextPath ||\n existingApp.name === [app.name, retryNo].join('-') ||\n existingApp.key === [app.key, retryNo].join('-') ||\n existingApp.contextPath === [app.contextPath, retryNo].join('-')\n );\n }\n\n private removeAppProperties(app: IApplication): IApplication {\n const tempApp = cloneDeep(app);\n const propertiesToRemove = ['id', 'owner', 'activeVersionId', 'self'];\n\n propertiesToRemove.forEach(prop => delete tempApp[prop]);\n return tempApp;\n }\n\n private async getUploadOverrides(\n archive: File,\n app: IApplication\n ): Promise<IUploadParamsOverride> {\n const { version } = await this.getCumulocityJson$(archive).toPromise();\n const isInitialPackage = app.applicationVersions?.length === 0;\n return {\n listUrl: 'versions',\n headers: {\n Accept: 'application/vnd.com.nsn.cumulocity.applicationVersion+json;charset=UTF-8;ver=0.9'\n },\n bodyFileProperty: 'applicationBinary',\n requestBody: {\n applicationVersion: { version, ...(isInitialPackage && { tags: ['latest'] }) }\n }\n };\n }\n\n private removeVersionFromName(name: string) {\n const versionRegExp = /-\\d+\\.\\d+\\.\\d+(\\.\\d+)?(-\\d+)?(.*)$/;\n return name.replace(versionRegExp, '');\n }\n\n private isNameLengthExceeded(name, appType) {\n return name.length > MICROSERVICE_NAME_MAX_LENGTH && appType === ApplicationType.MICROSERVICE;\n }\n}\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport { AlertService, DropAreaComponent, WizardComponent } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\nimport { ERROR_MESSAGES } from './ecosystem.constants';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'c8y-add-application',\n templateUrl: './add-application.component.html'\n})\nexport class AddApplicationComponent {\n @Input() headerText: string;\n @Input() headerIcon: string;\n @Input() successText: string;\n @Input() createApplicationHandler: any;\n @Input() uploadApplicationHandler: any;\n @Input() canGoBack = false;\n\n @ViewChild(DropAreaComponent) dropAreaComponent;\n\n isLoading: boolean;\n isAppCreated: boolean;\n createdApp: IApplication;\n canOpenInBrowser = false;\n errorMessage: string;\n private uploadCanceled = false;\n\n constructor(\n private ecosystemService: EcosystemService,\n private alertService: AlertService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent,\n private translateService: TranslateService\n ) {}\n\n get progress(): BehaviorSubject<number> {\n return this.ecosystemService.progress;\n }\n\n onFileDroppedEvent(event) {\n if (event && event.length > 0) {\n const file = event[0].file;\n this.onFile(file);\n }\n }\n\n async onFile(file: File) {\n this.isLoading = true;\n this.errorMessage = null;\n this.progress.next(0);\n\n try {\n this.createdApp = await this.createApplicationHandler(file);\n await this.uploadApplicationHandler(file, this.createdApp);\n this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.createdApp);\n this.isAppCreated = true;\n } catch (ex) {\n this.ecosystemService.cancelAppCreation(this.createdApp);\n this.createdApp = null;\n this.dropAreaComponent.onDelete();\n // prepare translation of static message if it exists\n const staticErrorMessage =\n ERROR_MESSAGES[ex.message] && this.translateService.instant(ERROR_MESSAGES[ex.message]);\n // if there is no static message, use dynamic one from the exception\n this.errorMessage = staticErrorMessage ?? ex.message;\n if (!this.errorMessage && !this.uploadCanceled) {\n this.alertService.addServerFailure(ex);\n }\n }\n this.progress.next(100);\n this.isLoading = false;\n }\n\n getHref(app: IApplication): string {\n return this.applicationService.getHref(app);\n }\n\n cancel() {\n this.cancelFileUpload();\n this.wizardComponent.close();\n }\n\n done() {\n this.wizardComponent.close();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n\n private cancelFileUpload() {\n this.uploadCanceled = true;\n this.ecosystemService.cancelAppCreation(this.createdApp);\n this.createdApp = null;\n }\n}\n","<c8y-wizard-header>\n <i [c8yIcon]=\"headerIcon\"></i>\n <h4 id=\"modal-title\">{{ headerText | translate }}</h4>\n</c8y-wizard-header>\n\n<c8y-wizard-body>\n <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-component\">\n {{ 'Upload a *.zip file' | translate }}\n </p>\n <c8y-form-group\n *ngIf=\"!isAppCreated; else appCreated\"\n [hasError]=\"!!errorMessage\"\n class=\"m-t-16 m-l-auto m-r-auto\"\n style=\"max-width: 285px\"\n id=\"modal-body\"\n >\n <c8y-drop-area\n (dropped)=\"onFileDroppedEvent($event)\"\n [accept]=\"'.zip'\"\n [loading]=\"isLoading\"\n [maxAllowedFiles]=\"1\"\n [progress]=\"progress | async\"\n class=\"drop-area\"\n ></c8y-drop-area>\n <c8y-messages>\n <c8y-message *ngIf=\"errorMessage\">\n {{ errorMessage | translate }}\n </c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <ng-template #appCreated>\n <div class=\"d-flex a-i-center j-c-center\" style=\"min-height: 285px\">\n <c8y-operation-result\n text=\"{{ successText | translate }}\"\n [vertical]=\"true\"\n [size]=\"84\"\n class=\"lead\"\n type=\"success\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n</c8y-wizard-body>\n\n<c8y-wizard-footer>\n <button\n (click)=\"back()\"\n *ngIf=\"!isAppCreated && canGoBack\"\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n translate\n type=\"button\"\n >\n Back\n </button>\n <button\n (click)=\"cancel()\"\n *ngIf=\"!isAppCreated\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n translate\n type=\"button\"\n >\n Cancel\n </button>\n <button\n (click)=\"done()\"\n *ngIf=\"isAppCreated\"\n class=\"btn btn-default\"\n title=\"{{ 'Done' | translate }}\"\n translate\n type=\"button\"\n >\n Done\n </button>\n <a\n (click)=\"$event.stopPropagation()\"\n *ngIf=\"isAppCreated && canOpenInBrowser\"\n [href]=\"getHref(createdApp)\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n >\n <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n {{ 'Open' | translate }}\n </a>\n</c8y-wizard-footer>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PackageType } from '@c8y/ngx-components';\nimport { PACKAGE_TYPE_LABELS } from './ecosystem.constants';\n\n@Pipe({ name: 'translatePackageLabel' })\nexport class TranslatePackageLabelPipe implements PipeTransform {\n constructor(private translate: TranslateService) {}\n\n transform(rawPackageLabel: PackageType.OFFICIAL | PackageType.COMMUNITY | string): string {\n const isOneOfTheKnownOnes = !!PACKAGE_TYPE_LABELS[rawPackageLabel];\n if (isOneOfTheKnownOnes) {\n return this.translate.instant(PACKAGE_TYPE_LABELS[rawPackageLabel].label);\n }\n return rawPackageLabel;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ApplicationService, IApplication, IApplicationVersion } from '@c8y/client';\nimport {\n AlertService,\n GainsightService,\n gettext,\n PackageType,\n PluginsService,\n Wizard,\n WizardComponent,\n WizardConfig,\n WizardModalService\n} from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\nimport { ApplicationState, PRODUCT_EXPERIENCE } from './ecosystem.model';\nimport { DuplicateApplicationComponent } from './duplicate-application/duplicate-application.component';\nimport { APP_STATE, PACKAGE_TYPE_LABELS } from './ecosystem.constants';\n\n@Component({\n selector: 'c8y-application-card',\n templateUrl: './application-card.component.html'\n})\nexport class ApplicationCardComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n\n @Input() app: IApplication;\n @Input() canEdit = true;\n @Output() onAppDeleted: EventEmitter<void> = new EventEmitter();\n @Output() onAppCloned: EventEmitter<void> = new EventEmitter();\n appState: ApplicationState;\n packageContentState: ApplicationState;\n packageType: PackageType;\n canOpenInBrowser: boolean;\n disableOpenInBrowser: boolean;\n canDelete: boolean;\n isPackage: boolean;\n isPlugin: boolean;\n isFeature: boolean;\n isExternal: boolean;\n isMicroservice: boolean;\n canClone: boolean;\n isUnpacked: boolean;\n shouldUpgradePackage: boolean;\n blueprintApplicationVersion: IApplicationVersion[];\n latestApplicationVersion: IApplicationVersion;\n isShowVersion: boolean;\n isOwnedByManagementTenant: boolean;\n get openButtonTitle() {\n return !this.disableOpenInBrowser\n ? gettext('Open')\n : gettext('This application is overridden.');\n }\n\n readonly packageTypeLabels = PACKAGE_TYPE_LABELS;\n readonly PACKAGE_TYPE = PackageType;\n readonly UNPACKED_LABEL = APP_STATE.UNPACKED.label;\n readonly CANNOT_DELETE_HINT = gettext(\n `Subscribed or current applications can't be deleted. Delete the application on the parent tenant or unsubscribe it from the current.`\n );\n readonly PACKAGE_CONTENT_UNDETERMINED_LABEL = gettext(\n 'Package contents could not be determined.'\n );\n\n constructor(\n private applicationService: ApplicationService,\n private ecosystemService: EcosystemService,\n private alertService: AlertService,\n private router: Router,\n private wizardModalService: WizardModalService,\n private alert: AlertService,\n private pluginService: PluginsService,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.appState = this.ecosystemService.getAppState(this.app);\n this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.app);\n this.packageType = this.pluginService.getPackageType(this.app);\n this.disableOpenInBrowser =\n this.canOpenInBrowser && (await this.ecosystemService.isOverwrittenByCustomApp(this.app));\n this.canDelete = await this.ecosystemService.canDeleteApp(this.app);\n this.isPackage = this.ecosystemService.isPackage(this.app);\n this.packageContentState = this.ecosystemService.getPackageContentState(this.app);\n this.isPlugin = this.ecosystemService.isPlugin(this.app);\n this.isFeature = this.ecosystemService.isFeature(this.app);\n this.isMicroservice = this.ecosystemService.isMicroservice(this.app);\n this.isExternal = this.ecosystemService.isExternal(this.app);\n this.canClone = !this.isMicroservice && !this.isPlugin;\n this.isUnpacked = this.ecosystemService.isUnpacked(this.app);\n this.isShowVersion = this.shouldShowVersion();\n await this.applicationUpdateCheck();\n }\n\n shouldShowVersion() {\n return (\n this.app.manifest?.version &&\n (!!this.app.manifest?.isPackage || this.isMicroservice || !!this.app.manifest?.source)\n );\n }\n\n detail() {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_CARD, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.EDIT,\n url: this.CURRENT_LOCATION\n });\n\n if (this.isMicroservice) {\n this.router.navigateByUrl(`/ecosystem/microservice/microservices/${this.app.id}`);\n return;\n }\n\n if (this.isPackage) {\n this.router.navigateByUrl(`/ecosystem/extension/extensions/${this.app.id}`);\n return;\n }\n\n if (this.isFeature) {\n this.router.navigateByUrl(`/ecosystem/application/features/${this.app.id}`);\n return;\n }\n\n this.router.navigateByUrl(`/ecosystem/application/applications/${this.app.id}`);\n }\n\n openApp() {\n this.ecosystemService.openApp(this.app);\n }\n\n async delete() {\n try {\n await this.ecosystemService.deleteApp(this.app);\n this.onAppDeleted.emit();\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_CARD, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.DELETE,\n url: this.CURRENT_LOCATION\n });\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n }\n }\n\n async clone() {\n const wizardConfig: WizardConfig = {\n headerText: 'Add Application',\n headerIcon: 'c8y-atom'\n };\n\n const initialState: Wizard<DuplicateApplicationComponent> = {\n wizardConfig,\n componentInitialState: {\n selectedApp: new BehaviorSubject(this.app)\n },\n id: 'duplicateApplication'\n };\n\n const modalOptions: ModalOptions<WizardComponent> = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.subscribe(() => {\n this.onAppCloned.next();\n });\n\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_CARD, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.CLONE,\n url: this.CURRENT_LOCATION\n });\n }\n\n private async applicationUpdateCheck(): Promise<void> {\n if (this.app.manifest?.source) {\n try {\n this.blueprintApplicationVersion = (\n await this.applicationService.listVersions(this.app.manifest?.source)\n ).data;\n\n this.latestApplicationVersion = this.ecosystemService.getApplicationVersionObjectByTag(\n this.blueprintApplicationVersion,\n 'latest'\n );\n this.shouldUpgradePackage = this.ecosystemService.shouldUpgradePackage(\n this.app.manifest?.version,\n this.latestApplicationVersion\n );\n } catch (error) {\n if (!this.blueprintApplicationVersion) {\n return;\n }\n this.alert.addServerFailure(error);\n }\n }\n }\n}\n","<div class=\"card pointer card--d-col notFeature\" *ngIf=\"!isFeature\">\n <div (click)=\"detail()\" class=\"card-block text-center card-column-40\">\n <button\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (app.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"right\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL\n }\"\n >\n {{ app.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"card-appicon\">\n <c8y-app-icon\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n ></c8y-app-icon>\n <i *ngIf=\"isPackage\" c8yIcon=\"big-parcel\"></i>\n <i *ngIf=\"isMicroservice\" c8yIcon=\"microchip\"></i>\n <i *ngIf=\"isExternal\" c8yIcon=\"globe1\"></i>\n </div>\n <div style=\"line-height: 1.3\">\n <p class=\"e2e-appCardName text-medium\" title=\"{{ app | humanizeAppName | async }}\">\n {{ app | humanizeAppName | async }}\n </p>\n <ng-container *ngIf=\"isShowVersion\">\n <p class=\"small text-muted\">\n <em>{{ app.manifest.version }}</em>\n <button\n class=\"btn-clean m-l-4\"\n *ngIf=\"shouldUpgradePackage && isUnpacked\"\n [attr.aria-label]=\"'Update available' | translate\"\n [tooltip]=\"'Update available' | translate\"\n >\n <i c8yIcon=\"exclamation-triangle\" class=\"text-warning icon-16\"></i>\n </button>\n </p>\n </ng-container>\n <p *ngIf=\"app.manifest?.author\" class=\"small\">{{ app.manifest.author }}</p>\n </div>\n </div>\n <div (click)=\"detail()\" class=\"card-block p-0 no-min-height card--d-col card-column-80 flex-grow\">\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-80\">\n <div class=\"text-center-grid\">\n <div class=\"p-b-8 card-hidden-grid\"></div>\n <p\n class=\"small l-h-tight p-b-8 p-l-0 p-r-0\"\n *ngIf=\"app.description || app.manifest?.description\"\n >\n {{ app.description || app.manifest?.description | translate }}\n </p>\n <p\n class=\"small l-h-tight p-b-8 p-l-0 p-r-0\"\n *ngIf=\"!app.description && !app.manifest?.description\"\n >\n <em class=\"text-muted\">{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n </div>\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\">\n <button\n class=\"btn-clean\"\n [tooltip]=\"appState?.tooltip | translate\"\n [attr.aria-label]=\"\n ((isUnpacked ? UNPACKED_LABEL : appState?.label) | translate) +\n ': ' +\n (appState?.tooltip | translate)\n \"\n placement=\"top\"\n [delay]=\"500\"\n >\n <span [ngClass]=\"appState?.class\" class=\"label\">\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n *ngIf=\"isPackage\"\n class=\"btn-clean m-l-8\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip\n ? packageContentState?.tooltip\n : PACKAGE_CONTENT_UNDETERMINED_LABEL) | translate\n \"\n [tooltip]=\"\n (packageContentState?.tooltip\n ? packageContentState?.tooltip\n : PACKAGE_CONTENT_UNDETERMINED_LABEL\n ) | translate\n \"\n placement=\"top\"\n >\n <span\n [ngClass]=\"packageContentState?.class ? packageContentState?.class : 'label-danger'\"\n class=\"label\"\n >\n {{\n packageContentState?.label || packageTypeLabels[PACKAGE_TYPE.UNKNOWN].label | translate\n }}\n </span>\n </button>\n </div>\n <div class=\"card-footer no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\">\n <div class=\"p-b-16 card-hidden-list\"></div>\n <button\n class=\"btn btn-sm btn-default\"\n type=\"button\"\n [title]=\"openButtonTitle | translate\"\n (click)=\"openApp(); $event.stopPropagation()\"\n *ngIf=\"canOpenInBrowser\"\n [disabled]=\"disableOpenInBrowser\"\n >\n <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n {{ 'Open' | translate }}\n </button>\n <div class=\"p-b-32 card-hidden-list\"></div>\n </div>\n </div>\n <div class=\"p-r-40 card-hidden-grid\"></div>\n <div *ngIf=\"canEdit || canOpenInBrowser || canDelete\" class=\"card-actions m-t-0\">\n <div\n class=\"dropdown\"\n #appCardDropdown=\"bs-dropdown\"\n dropdown\n [cdkTrapFocus]=\"appCardDropdown.isOpen\"\n >\n <button\n class=\"dropdown-toggle c8y-dropdown\"\n type=\"button\"\n title=\"{{ 'Settings' | translate }}\"\n dropdownToggle\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right\">\n <li *ngIf=\"canEdit\">\n <button (click)=\"detail()\" title=\"{{ 'Edit' | translate }}\">\n <i c8yIcon=\"pencil\" class=\"m-r-4\"></i>\n {{ 'Edit' | translate }}\n </button>\n </li>\n <ng-container *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\">\n <li>\n <button\n type=\"button\"\n [title]=\"canDelete ? ('Delete' | translate) : (CANNOT_DELETE_HINT | translate)\"\n [disabled]=\"!canDelete\"\n (click)=\"delete()\"\n >\n <i c8yIcon=\"delete\" class=\"m-r-4\"></i>\n {{ 'Delete' | translate }}\n </button>\n </li>\n <li *ngIf=\"canClone\">\n <button\n type=\"button\"\n [title]=\"'Clone`package,verb`' | translate\"\n *ngIf=\"isPackage\"\n (click)=\"clone()\"\n >\n <i c8yIcon=\"copy\" class=\"m-r-4\"></i>\n {{ 'Clone`package,verb`' | translate }}\n </button>\n <button\n type=\"button\"\n [title]=\"'Clone`application,verb`' | translate\"\n *ngIf=\"!isPackage\"\n (click)=\"clone()\"\n >\n <i c8yIcon=\"copy\" class=\"m-r-4\"></i>\n {{ 'Clone`application,verb`' | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</div>\n\n<button class=\"card pointer card--d-col\" type=\"button\" (click)=\"detail()\" *ngIf=\"isFeature\">\n <div class=\"card-block text-center card-column-40\">\n <div class=\"card-appicon\">\n <c8y-app-icon\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n ></c8y-app-icon>\n <i c8yIcon=\"tab\"></i>\n </div>\n <div>\n <p class=\"e2e-appCardName text-medium\" title=\"{{ app | humanizeAppName | async }}\">\n {{ app | humanizeAppName | async }}\n </p>\n <ng-container *ngIf=\"isShowVersion\">\n <p class=\"small text-muted\">\n <em>{{ app.manifest.version }}</em>\n <i\n *ngIf=\"shouldUpgradePackage && isUnpacked\"\n [tooltip]=\"'Update available' | translate\"\n c8yIcon=\"exclamation-triangle\"\n class=\"text-warning m-l-4\"\n ></i>\n </p>\n </ng-container>\n </div>\n </div>\n <div class=\"card-block p-0 no-min-height card--d-col card-column-80 flex-grow\">\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-80\">\n <div *ngIf=\"app.description || app.manifest?.description\" class=\"text-center-grid\">\n <div class=\"p-b-8 card-hidden-grid\"></div>\n <p class=\"small l-h-tight p-b-8 p-l-0 p-r-0\">\n {{ app.description || app.manifest?.description | translate }}\n </p>\n </div>\n </div>\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\">\n <span [ngClass]=\"appState.class\" class=\"label\">\n {{ appState.label | translate }}\n </span>\n </div>\n <div\n *ngIf=\"isPackage\"\n class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\"\n >\n <span [ngClass]=\"packageContentState.class\" class=\"label\">\n {{ packageContentState.label | translate }}\n </span>\n </div>\n <div class=\"p-b-32 card-hidden-list\"></div>\n </div>\n</button>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { IApplication } from '@c8y/client';\n\n@Component({\n selector: 'c8y-application-properties-form',\n templateUrl: './application-properties-form.component.html'\n})\nexport class ApplicationPropertiesFormComponent implements OnChanges {\n formGroup: FormGroup;\n @Input() application: IApplication;\n @Input() disabled = false;\n\n constructor(private formBuilder: FormBuilder) {\n this.initForm();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.application &&\n changes.application.currentValue !== changes.application.previousValue\n ) {\n this.setForm(this.application);\n }\n if (changes.disabled && changes.disabled.currentValue !== changes.disabled.previousValue) {\n changes.disabled.currentValue ? this.formGroup.disable() : this.formGroup.enable();\n }\n }\n\n private initForm() {\n this.formGroup = this.formBuilder.group({\n name: [Validators.required, Validators.maxLength(120)],\n key: [Validators.required, Validators.maxLength(120)],\n contextPath: [Validators.required, Validators.maxLength(120)]\n });\n }\n\n private setForm(applicationConfig: IApplication) {\n this.formGroup.patchValue({ ...applicationConfig });\n }\n}\n","<form\n (ngSubmit)=\"(formGroup.valid)\"\n [formGroup]=\"formGroup\"\n class=\"c8y-wizard-form text-left\"\n name=\"appDeployForm\"\n novalidate\n>\n <c8y-form-group>\n <label for=\"name\" translate>Name</label>\n <input\n class=\"form-control\"\n formControlName=\"name\"\n name=\"name\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"key\" translate>Application key</label>\n <input\n class=\"form-control\"\n formControlName=\"key\"\n name=\"key\"\n placeholder=\"{{ 'e.g. my-application-key' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"contextPath\" translate>Path</label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/apps/</span>\n <input\n class=\"form-control\"\n formControlName=\"contextPath\"\n name=\"contextPath\"\n placeholder=\"{{ 'e.g. my-application' | translate }}\"\n required\n type=\"text\"\n />\n </div>\n </c8y-form-group>\n</form>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { C8yStepper, WizardComponent } from '@c8y/ngx-components';\nimport { ApplicationState } from '../../ecosystem.model';\nimport { EcosystemService } from '../../ecosystem.service';\n\n@Component({\n selector: 'c8y-duplicate-application-list',\n templateUrl: './duplicate-application-list.component.html'\n})\nexport class DuplicateApplicationListComponent {\n @Input() stepper: C8yStepper;\n @Input() existingApps: IApplication[];\n @Output() onSelectedApp = new EventEmitter<IApplication>();\n appState: ApplicationState;\n\n constructor(\n public ecosystemService: EcosystemService,\n private wizardComponent: WizardComponent\n ) {}\n\n select(selectedApp: IApplication) {\n this.onSelectedApp.emit(selectedApp);\n this.stepper.next();\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n}\n","<div class=\"c8y-wizard-list-nav\">\n <button\n (click)=\"select(app)\"\n *ngFor=\"let app of existingApps\"\n class=\"list-group-item text-truncate p-t-8 p-b-8 bg-level-0\"\n type=\"button\"\n >\n <c8y-app-icon\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n class=\"list-group-icon\"\n ></c8y-app-icon>\n <span [innerText]=\"app | humanizeAppName | async\" class=\"pointer\"></span>\n <span [ngClass]=\"ecosystemService.getAppState(app).class\" class=\"label m-l-16\">\n {{ ecosystemService.getAppState(app).label | translate }}\n </span>\n </button>\n</div>\n<c8y-wizard-footer>\n <button (click)=\"back()\" class=\"btn btn-default\" title=\"{{ 'Back' | translate }}\" type=\"button\">\n {{ 'Back' | translate }}\n </button>\n <button\n (click)=\"cancel()\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n >\n {{ 'Cancel' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport { C8yStepper, GainsightService } from '@c8y/ngx-components';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilKeyChanged, map, tap } from 'rxjs/operators';\nimport { APP_STATE } from '../../ecosystem.constants';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { ApplicationPropertiesFormComponent } from '../../../shared/application-properties-form.component';\nimport { PRODUCT_EXPERIENCE } from '../../ecosystem.model';\n\n@Component({\n selector: 'c8y-duplicate-application-properties',\n templateUrl: './duplicate-application-properties.component.html'\n})\nexport class DuplicateApplicationPropertiesComponent {\n CURRENT_LOCATION = location.href;\n\n @Input() stepper: C8yStepper;\n @Input() existingApps: IApplication[];\n @Input() selectedApp: BehaviorSubject<IApplication>;\n @Input() isFirstStep = false;\n @Output() duplicatedApp = new EventEmitter<IApplication>();\n @ViewChild(ApplicationPropertiesFormComponent)\n applicationPropertiesForm: ApplicationPropertiesFormComponent;\n newAppConfig: IApplication;\n disableForm = false;\n isSubscribedApp$: Observable<boolean>;\n\n inProgress = false;\n\n constructor(\n private bsModalRef: BsModalRef,\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private gainsightService: GainsightService\n ) {}\n\n ngOnInit() {\n this.isSubscribedApp$ = this.selectedApp.pipe(\n distinctUntilKeyChanged('id'),\n map(app => (app ? this.ecosystemService.getAppState(app) === APP_STATE.SUBSCRIBED : true)),\n tap(isSubscribed => {\n this.disableForm = isSubscribed;\n this.getAppConfig();\n })\n );\n this.getAppConfig();\n }\n\n async duplicateApp() {\n const formGroupValue = this.applicationPropertiesForm.formGroup.getRawValue();\n this.inProgress = true;\n let { data: clonedApp } = await this.applicationService.clone(this.selectedApp.value);\n // TODO: remove once MTM-48474 has been merged\n clonedApp = this.ecosystemService.setAvailabilityToPrivateIfNotSetAlready(clonedApp);\n\n Object.assign(clonedApp, formGroupValue);\n delete clonedApp.type;\n\n await this.updateApp(clonedApp);\n this.inProgress = false;\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.DUPLICATE_APPLICATION,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.DUPLICATE_APPLICATION_PROPERTIES,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.DUPLICATED,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n cancel() {\n this.bsModalRef.hide();\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.DUPLICATE_APPLICATION,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.DUPLICATE_APPLICATION_PROPERTIES,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.CANCEL,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n back() {\n this.stepper.previous();\n }\n\n getAppConfig() {\n if (this.disableForm) {\n const { name, key, contextPath } = this.selectedApp.value;\n this.newAppConfig = { name, key, contextPath };\n } else {\n this.newAppConfig = this.ecosystemService.getUniqueAppConfig(\n this.selectedApp.value,\n this.existingApps\n );\n }\n }\n\n private async updateApp(clonedAppConfig: Partial<IApplication>) {\n try {\n const { data: app } = await this.ecosystemService.updateApp(clonedAppConfig, true);\n const manifest = await this.getAppManifest(app);\n if (manifest) {\n await this.updateManifest(app, manifest);\n }\n\n this.duplicatedApp.emit(app);\n this.stepper.next();\n } catch (err) {\n this.inProgress = false;\n }\n }\n\n private async updateManifest(app: IApplication, manifest: any) {\n const keysToUpdate: Array<keyof IApplication> = ['name', 'key', 'contextPath'];\n const someKeyDiffers = keysToUpdate.some(key => app[key] !== manifest[key]);\n if (someKeyDiffers) {\n keysToUpdate.forEach(key => {\n manifest[key] = app[key];\n });\n await this.applicationService.storeAppManifest(app, manifest);\n }\n }\n\n private async getAppManifest(app: IApplication) {\n if (!app?.contextPath) {\n return;\n }\n try {\n const manifest = await this.applicationService.getAppManifest(app);\n return manifest;\n } catch (ex) {\n return;\n }\n }\n}\n","<p\n class=\"p-16 text-center text-medium separator-bottom sticky-top bg-level-0 fit-w\"\n *ngIf=\"!inProgress\"\n>\n {{ 'Provide application details' | translate }}\n</p>\n\n<ng-container *ngIf=\"!inProgress\">\n <label class=\"c8y-switch\" *ngIf=\"isSubscribedApp$ | async\">\n <input type=\"checkbox\" [(ngModel)]=\"disableForm\" (change)=\"getAppConfig()\" />\n <span></span> {{ 'Overrule subscribed application' | translate }}\n </label>\n\n <c8y-application-properties-form\n [application]=\"newAppConfig\"\n class=\"d-block fit-w\"\n [disabled]=\"disableForm\"\n ></c8y-application-properties-form>\n</ng-container>\n<c8y-progress-bar\n *ngIf=\"inProgress\"\n [message]=\"'Duplicating…' | translate\"\n class=\"text-center d-block\"\n></c8y-progress-bar>\n\n<c8y-wizard-footer>\n <button\n *ngIf=\"!isFirstStep\"\n (click)=\"back()\"\n [disabled]=\"inProgress\"\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Back' | translate }}\"\n >\n {{ 'Back' | translate }}\n </button>\n <button (click)=\"cancel()\" class=\"btn btn-default\" title=\"{{ 'Cancel' | translate }}\">\n {{ 'Cancel' | translate }}\n </button>\n <button\n (click)=\"duplicateApp()\"\n [disabled]=\"inProgress\"\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Duplicate' | translate }}\"\n >\n {{ 'Duplicate' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport { C8yStepper, WizardComponent } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from '../ecosystem.service';\n\n@Component({\n selector: 'c8y-duplicate-application',\n templateUrl: './duplicate-application.component.html'\n})\nexport class DuplicateApplicationComponent implements OnInit {\n @ViewChild(C8yStepper, { static: true })\n stepper: C8yStepper;\n duplicatedApp: IApplication;\n selectedApp: BehaviorSubject<IApplication> = new BehaviorSubject<IApplication>(null);\n existingApps: IApplication[] = [];\n directlyMoveToSecondStep = false;\n\n constructor(\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent\n ) {}\n\n async ngOnInit() {\n this.existingApps = await this.ecosystemService.getWebApplications();\n if (this.selectedApp.value) {\n this.directlyMoveToSecondStep = true;\n }\n }\n\n onSelectedApp(app: IApplication) {\n this.selectedApp.next(app);\n }\n\n getHref(app: IApplication): string {\n return this.applicationService.getHref(app);\n }\n\n done() {\n this.wizardComponent.close();\n }\n}\n","<c8y-wizard-header>\n <i [c8yIcon]=\"'copy'\"></i>\n <h4 id=\"modal-title\" translate>Duplicate application</h4>\n</c8y-wizard-header>\n\n<c8y-wizard-body id=\"modal-body\">\n <c8y-stepper\n [customClasses]=\"['hidden']\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n linear\n >\n <!-- 1st step -->\n <cdk-step *ngIf=\"!directlyMoveToSecondStep\">\n <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-level-0\">\n {{ 'Select application to duplicate' | translate }}\n </p>\n <c8y-duplicate-application-list\n (onSelectedApp)=\"onSelectedApp($event)\"\n *ngIf=\"stepper.selectedIndex === 0\"\n [existingApps]=\"existingApps\"\n [stepper]=\"stepper\"\n class=\"d-block\"\n style=\"min-height: 257px\"\n ></c8y-duplicate-application-list>\n </cdk-step>\n <!-- 2nd step -->\n <cdk-step>\n <c8y-duplicate-application-properties\n class=\"d-flex d-col j-c-center a-i-center\"\n style=\"min-height: 257px\"\n (duplicatedApp)=\"duplicatedApp = $event\"\n *ngIf=\"\n stepper.selectedIndex === 1 || (stepper.selectedIndex === 0 && directlyMoveToSecondStep)\n \"\n [existingApps]=\"existingApps\"\n [selectedApp]=\"selectedApp\"\n [stepper]=\"stepper\"\n [isFirstStep]=\"directlyMoveToSecondStep\"\n ></c8y-duplicate-application-properties>\n </cdk-step>\n <!-- Final step -->\n <cdk-step>\n <ng-container\n *ngIf=\"\n stepper.selectedIndex === 2 || (stepper.selectedIndex === 1 && directlyMoveToSecondStep)\n \"\n >\n <div\n *ngIf=\"duplicatedApp; else duplicateAppFailed\"\n style=\"min-height: 257px\"\n class=\"d-flex a-i-center j-c-center\"\n >\n <c8y-operation-result\n text=\"{{ 'Application created' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n ></c8y-operation-result>\n </div>\n <ng-template #duplicateAppFailed>\n <div style=\"min-height: 257px\" class=\"d-flex a-i-center j-c-center\">\n <c8y-operation-result\n text=\"{{ 'Application creation failed' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n </ng-container>\n </cdk-step>\n </c8y-stepper>\n</c8y-wizard-body>\n\n<c8y-wizard-footer\n *ngIf=\"stepper.selectedIndex === 2 || (stepper.selectedIndex === 1 && directlyMoveToSecondStep)\"\n>\n <button (click)=\"done()\" class=\"btn btn-default\" title=\"{{ 'Done' | translate }}\" type=\"button\">\n {{ 'Done' | translate }}\n </button>\n <a\n (click)=\"$event.stopPropagation()\"\n [href]=\"getHref(duplicatedApp)\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n >\n <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n {{ 'Open' | translate }}\n </a>\n</c8y-wizard-footer>\n","import { Component, forwardRef, OnChanges, Input, SimpleChanges } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ApplicationService, IApplicationVersion, IResultList } from '@c8y/client';\nimport { gettext, PluginsService } from '@c8y/ngx-components';\nimport { BehaviorSubject, Observable, combineLatest, merge } from 'rxjs';\nimport { filter, map, shareReplay, switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'c8y-package-version-select',\n templateUrl: './package-version-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => PackageVersionSelectComponent)\n }\n ]\n})\nexport class PackageVersionSelectComponent implements OnChanges, ControlValueAccessor {\n @Input() label = gettext('Use plugin version');\n @Input() packageContextPath: string;\n @Input() packageId: string | number;\n selectedVersion: IApplicationVersion;\n onInput$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n versions$: Observable<IResultList<IApplicationVersion>>;\n isDisabled = false;\n private packageContextPath$ = new BehaviorSubject('');\n private packageId$ = new BehaviorSubject<string | number>('');\n private onChange: (version: IApplicationVersion) => void;\n private onTouched: () => void;\n\n constructor(\n private applicationService: ApplicationService,\n private pluginsService: PluginsService\n ) {\n const packageIdFromContextPath$ = this.packageContextPath$.pipe(\n filter(path => !!path),\n switchMap(path => this.getPackageIdForContextPath(path))\n );\n const packageId$ = merge(packageIdFromContextPath$, this.packageId$.pipe(filter(id => !!id)));\n const packageVersions$ = packageId$.pipe(\n switchMap(id => this.getPackageVersions(id)),\n shareReplay(1)\n );\n this.versions$ = combineLatest([packageVersions$, this.onInput$.asObservable()]).pipe(\n map(([resultList, filterStr]) => this.applyFilterToResultList(resultList, filterStr))\n );\n }\n\n writeValue(obj: any): void {\n this.selectedVersion = obj;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.packageContextPath) {\n this.packageContextPath$.next(this.packageContextPath);\n }\n\n if (changes.packageId) {\n this.packageId$.next(this.packageId);\n }\n }\n\n async getPackageVersions(packageId: string | number): Promise<IResultList<IApplicationVersion>> {\n return await this.applicationService.listVersions(packageId);\n }\n\n onVersionSelect(version: IApplicationVersion) {\n this.selectedVersion = version;\n if (this.onChange) {\n this.onChange(version);\n }\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n private async getPackageIdForContextPath(contextPath: string): Promise<string | number> {\n const { data: application } = await this.applicationService.getManifestOfContextPath(\n contextPath\n );\n const packageAppId = application.id;\n return packageAppId;\n }\n\n private setInitialValueForInput(versions: IApplicationVersion[]) {\n if (!this.selectedVersion && versions.length > 0) {\n const latest = versions.find(v => v.tags.includes('latest'));\n this.selectedVersion = latest || versions[0];\n if (this.onChange) {\n this.onChange(this.selectedVersion);\n }\n }\n }\n\n private filterAppVersions(\n appVersions: IApplicationVersion[],\n filterStr: string\n ): IApplicationVersion[] {\n return filterStr === ''\n ? appVersions\n : appVersions.filter(\n appVersion =>\n appVersion.version.includes(filterStr) ||\n appVersion.tags?.some(tag => tag.includes(filterStr))\n );\n }\n\n private applyFilterToResultList(\n resultList: IResultList<IApplicationVersion>,\n filterStr: string\n ): IResultList<IApplicationVersion> {\n const versionsFilteredByStr = this.filterAppVersions(resultList.data, filterStr);\n const sortedAppVersions = this.pluginsService.sortVersions(\n {\n list: versionsFilteredByStr,\n path: ['version']\n },\n 'desc'\n );\n\n this.setInitialValueForInput(sortedAppVersions);\n return { data: sortedAppVersions, res: resultList.res };\n }\n}\n","<label for=\"packageVersion\">{{ label | translate }}</label>\n<c8y-form-group>\n <c8y-typeahead\n [(ngModel)]=\"selectedVersion\"\n name=\"packageVersion\"\n (onSearch)=\"onInput$.next($event)\"\n placeholder=\"{{ 'Select below or start typing' | translate }}\"\n [displayProperty]=\"'version'\"\n [required]=\"true\"\n [disabled]=\"isDisabled\"\n [hideNew]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *c8yFor=\"let appVersion of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n (click)=\"onVersionSelect(appVersion)\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [active]=\"selectedVersion === appVersion\"\n >\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <span\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'row',\n 'align-content': 'center',\n 'justify-content': 'space-between',\n 'align-items': 'center'\n }\"\n >\n <c8y-highlight\n [text]=\"appVersion.version || '--'\"\n [pattern]=\"onInput$ | async\"\n ></c8y-highlight>\n <span>\n <span *ngFor=\"let tag of appVersion.tags\" class=\"label label-info m-l-4\">\n {{ tag }}\n </span>\n </span>\n </span>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li\n class=\"bg-gray-lighter p-8\"\n *ngIf=\"(onInput$ | async)?.length > 0 && (versions$ | async)?.data?.length === 0\"\n >\n <span translate>No match found.</span>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n</c8y-form-group>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IApplication, IApplicationBinary } from '@c8y/client';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\n\n@Component({\n selector: 'c8y-upload-archive',\n templateUrl: 'upload-archive.component.html'\n})\nexport class UploadArchiveComponent {\n @Input() application: IApplication;\n @Input() uploadNewVersion = false;\n @Input() preUploadCallback: () => Promise<any>;\n @Output() applicationChange: EventEmitter<IApplication> = new EventEmitter<IApplication>();\n @Output() refresh: EventEmitter<any> = new EventEmitter();\n\n archives: IApplicationBinary[] = [];\n toActivateVersionId: string;\n last: IApplicationBinary;\n isLoading: boolean;\n fileList: FileList;\n uploadInProgress = false;\n canReactivate = false;\n\n constructor(private ecosystemService: EcosystemService, private alertService: AlertService) {}\n\n get uploadProgress(): BehaviorSubject<number> {\n return this.ecosystemService.progress;\n }\n\n async onFileDroppedEvent(event) {\n if (this.preUploadCallback) {\n try {\n await this.preUploadCallback();\n } catch (e) {\n // do nothing, i.e. when confirm modal cancels and throws undefined\n return;\n }\n }\n if (event && event.length > 0) {\n const file = event[0].file;\n this.onFile(file);\n }\n }\n\n private async onFile(file: File): Promise<void> {\n try {\n await this.ecosystemService.validateArchiveToAppCompatibility(file, this.application);\n const isCustomMicroservice = this.ecosystemService.isCustomMicroservice(this.application);\n this.archives = isCustomMicroservice\n ? []\n : await this.ecosystemService.listArchives(this.application.id);\n this.archives.sort((a, b) => {\n return (new Date(b.created) as any) - (new Date(a.created) as any);\n });\n this.uploadInProgress = true;\n this.uploadProgress.next(0);\n if (this.archives.length === 6 && !isCustomMicroservice) {\n await this.ecosystemService.removeOldestArchive(this.application, this.archives);\n }\n const app = await this.ecosystemService.uploadArchiveToApp(\n file,\n this.application,\n this.uploadNewVersion\n );\n this.applicationChange.emit(app);\n this.uploadProgress.next(100);\n this.uploadInProgress = false;\n this.refresh.emit();\n if (this.uploadNewVersion) {\n return;\n }\n this.alertService.success(gettext('Archive uploaded and activated.'));\n } catch (ex) {\n this.uploadInProgress = false;\n this.ecosystemService.alertError(ex);\n }\n }\n}\n","<c8y-drop-area\n (dropped)=\"onFileDroppedEvent($event)\"\n [accept]=\"'.zip'\"\n [loading]=\"uploadInProgress\"\n [maxAllowedFiles]=\"1\"\n [message]=\"'Upload a *.zip file' | translate\"\n [progress]=\"uploadProgress | async\"\n [forceHideList]=\"true\"\n class=\"drop-area-sm\"\n>\n</c8y-drop-area>\n","import { NgModule } from '@angular/core';\nimport { CoreModule, hookWizard } from '@c8y/ngx-components';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { AddApplicationComponent } from './add-application.component';\nimport { ApplicationCardComponent } from './application-card.component';\nimport { ApplicationPropertiesFormComponent } from './application-properties-form.component';\nimport { UploadArchiveComponent } from './upload-archive.component';\nimport { DuplicateApplicationListComponent } from './duplicate-application/duplicate-application-list/duplicate-application-list.component';\nimport { DuplicateApplicationPropertiesComponent } from './duplicate-application/duplicate-application-properties/duplicate-application-properties.component';\nimport { DuplicateApplicationComponent } from './duplicate-application/duplicate-application.component';\nimport { PackageVersionSelectComponent } from './package-version-select/package-version-select.component';\nimport { EcosystemWizards } from './ecosystem.model';\nimport { TranslatePackageLabelPipe } from './translate-package-label.pipe';\n\n@NgModule({\n imports: [CoreModule, BsDropdownModule, TooltipModule, A11yModule],\n declarations: [\n AddApplicationComponent,\n ApplicationPropertiesFormComponent,\n UploadArchiveComponent,\n ApplicationCardComponent,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n DuplicateApplicationComponent,\n PackageVersionSelectComponent,\n TranslatePackageLabelPipe\n ],\n exports: [\n AddApplicationComponent,\n ApplicationPropertiesFormComponent,\n UploadArchiveComponent,\n ApplicationCardComponent,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n DuplicateApplicationComponent,\n PackageVersionSelectComponent,\n TranslatePackageLabelPipe\n ],\n providers: [\n hookWizard({\n wizardId: EcosystemWizards.APPLICATION_UPLOAD,\n component: DuplicateApplicationComponent,\n name: 'Duplicate existing application',\n c8yIcon: 'copy'\n }),\n hookWizard({\n wizardId: 'duplicateApplication',\n component: DuplicateApplicationComponent,\n name: 'Duplicate existing application',\n c8yIcon: 'copy'\n })\n ]\n})\nexport class SharedEcosystemModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i1.EcosystemService","i4","i5","i2.EcosystemService","i3","i9.TranslatePackageLabelPipe","i6","i7.ApplicationPropertiesFormComponent","i6.DuplicateApplicationListComponent","i7.DuplicateApplicationPropertiesComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQA;AACY,IAAA,iBAMX;AAND,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,oBAAA,CAAA,GAAA,4BAAiD,CAAA;AACjD,IAAA,gBAAA,CAAA,qBAAA,CAAA,GAAA,6BAAmD,CAAA;AACnD,IAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,wBAAyC,CAAA;AACzC,IAAA,gBAAA,CAAA,sBAAA,CAAA,GAAA,8BAAqD,CAAA;AACrD,IAAA,gBAAA,CAAA,iBAAA,CAAA,GAAA,yBAA2C,CAAA;AAC7C,CAAC,EANW,gBAAgB,KAAhB,gBAAgB,GAM3B,EAAA,CAAA,CAAA,CAAA;AAEW,IAAA,WAUX;AAVD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC,IAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC,CAAA;AACjC,IAAA,UAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC,CAAA;AACrC,IAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC,IAAA,UAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C,CAAA;AAC3C,IAAA,UAAA,CAAA,4BAAA,CAAA,GAAA,4BAAyD,CAAA;AACzD,IAAA,UAAA,CAAA,6BAAA,CAAA,GAAA,6BAA2D,CAAA;AAC3D,IAAA,UAAA,CAAA,8BAAA,CAAA,GAAA,8BAA6D,CAAA;AAC/D,CAAC,EAVW,UAAU,KAAV,UAAU,GAUrB,EAAA,CAAA,CAAA,CAAA;AAOY,MAAA,kBAAkB,GAAG;AAChC,IAAA,YAAY,EAAE;AACZ,QAAA,MAAM,EAAE;AACN,YAAA,YAAY,EAAE,cAAc;AAC5B,YAAA,gBAAgB,EAAE,iBAAiB;AACnC,YAAA,sBAAsB,EAAE,uBAAuB;AAC/C,YAAA,kBAAkB,EAAE,mBAAmB;AACvC,YAAA,qBAAqB,EAAE,sBAAsB;AAC7C,YAAA,iBAAiB,EAAE,kBAAkB;AACrC,YAAA,eAAe,EAAE,gBAAgB;AACjC,YAAA,gBAAgB,EAAE,iBAAiB;AACpC,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,gBAAgB,EAAE,kBAAkB;AACpC,YAAA,mBAAmB,EAAE,qBAAqB;AAC1C,YAAA,sBAAsB,EAAE,wBAAwB;AAChD,YAAA,kBAAkB,EAAE,oBAAoB;AACxC,YAAA,gCAAgC,EAAE,kCAAkC;AACpE,YAAA,WAAW,EAAE,aAAa;AAC1B,YAAA,gBAAgB,EAAE,uBAAuB;AACzC,YAAA,oBAAoB,EAAE,sBAAsB;AAC7C,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,mBAAmB,EAAE,oBAAoB;AACzC,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,qBAAqB,EAAE,qBAAqB;AAC5C,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,kBAAkB,EAAE,mBAAmB;AACvC,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,cAAc,EAAE,eAAe;AAC/B,YAAA,eAAe,EAAE,gBAAgB;AACjC,YAAA,cAAc,EAAE,eAAe;AAC/B,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,gBAAgB,EAAE,iBAAiB;AACnC,YAAA,MAAM,EAAE,QAAQ;AACjB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,UAAU,EAAE,YAAY;AACxB,YAAA,gBAAgB,EAAE,iBAAiB;AACnC,YAAA,cAAc,EAAE,eAAe;AAC/B,YAAA,sBAAsB,EAAE,sBAAsB;AAC9C,YAAA,cAAc,EAAE,eAAe;AAC/B,YAAA,OAAO,EAAE,SAAS;AACnB,SAAA;AACF,KAAA;;;AC9EU,MAAA,cAAc,GAAG;IAC5B,CAAC,UAAU,CAAC,eAAe,GAAG,OAAO,CACnC,iEAAiE,CAClE;IACD,CAAC,UAAU,CAAC,kBAAkB,GAAG,OAAO,CACtC,uHAAuH,CACxH;IACD,CAAC,UAAU,CAAC,gBAAgB,GAAG,OAAO,CAAC,4BAA4B,CAAC;IACpE,CAAC,UAAU,CAAC,eAAe,GAAG,OAAO,CAAC,wCAAwC,CAAC;IAC/E,CAAC,UAAU,CAAC,mBAAmB,GAAG,OAAO,CAAC,4CAA4C,CAAC;IACvF,CAAC,UAAU,CAAC,cAAc,GAAG,OAAO,CAAC,kDAAkD,CAAC;IACxF,CAAC,UAAU,CAAC,0BAA0B,GAAG,OAAO,CAC9C,mFAAmF,CACpF;IACD,CAAC,UAAU,CAAC,2BAA2B,GAAG,OAAO,CAAC,8BAA8B,CAAC;IACjF,CAAC,UAAU,CAAC,4BAA4B,GAAG,OAAO,CAChD,oFAAoF,CACrF;EACD;AAEW,MAAA,SAAS,GAAG;AACvB,IAAA,UAAU,EAAE;AACV,QAAA,KAAK,EAAE,OAAO,CAAC,yBAAyB,CAAC;AACzC,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,OAAO,EAAE,OAAO,CAAC,4BAA4B,CAAC;AAC/C,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;AACrC,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,OAAO,EAAE,OAAO,CAAC,oCAAoC,CAAC;AACvD,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE,OAAO,CAAC,uBAAuB,CAAC;AACvC,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,OAAO,EAAE,OAAO,CAAC,6CAA6C,CAAC;AAChE,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE,OAAO,CAAC,uBAAuB,CAAC;AACvC,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,OAAO,EAAE,OAAO,CAAC,qDAAqD,CAAC;AACxE,KAAA;AACD,IAAA,iBAAiB,EAAE;AACjB,QAAA,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC;AAC3B,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,OAAO,EAAE,OAAO,CAAC,kDAAkD,CAAC;AACrE,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;AACzB,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,OAAO,EAAE,OAAO,CAAC,wBAAwB,CAAC;AAC3C,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,OAAO,CAAC,uBAAuB,CAAC;AACvC,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,OAAO,EAAE,OAAO,CAAC,2CAA2C,CAAC;AAC9D,KAAA;EACD;AAEW,MAAA,mBAAmB,GAAG;AACjC,IAAA,CAAC,WAAW,CAAC,SAAS,GAAG;AACvB,QAAA,KAAK,EAAE,OAAO,CAAC,wDAAwD,CAAC;AACxE,QAAA,OAAO,EAAE,OAAO,CAAC,6CAA6C,CAAC;AAChE,KAAA;AACD,IAAA,CAAC,WAAW,CAAC,QAAQ,GAAG;AACtB,QAAA,KAAK,EAAE,OAAO,CAAC,8CAA8C,CAAC;AAC9D,QAAA,OAAO,EAAE,OAAO,CAAC,oCAAoC,CAAC;AACvD,KAAA;AACD,IAAA,CAAC,WAAW,CAAC,OAAO,GAAG;AACrB,QAAA,KAAK,EAAE,OAAO,CAAC,kDAAkD,CAAC;AAClE,QAAA,OAAO,EAAE,OAAO,CAAC,6BAA6B,CAAC;AAChD,KAAA;EACD;AAEW,MAAA,iBAAiB,GAAyB;AACrD,IAAA;AACE,QAAA,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;AACzB,QAAA,GAAG,EAAE,SAAS;AACf,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,QAAA,GAAG,EAAE,QAAQ;AACd,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC;AAC1B,QAAA,GAAG,EAAE,UAAU;AAChB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,QAAA,GAAG,EAAE,YAAY;QACjB,SAAS,EAAE,CAAC,UAAe,MAAM,CAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,GAAG,IAAG,UAAU,CAAC,GAAG,GAAG,UAAU,CAAC;AAC/E,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,MAAM,EAAE,CAAC,CAAC,EAAE,IAAY,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,qBAAqB,CAAC;AAChF,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC;AAC1B,QAAA,GAAG,EAAE,UAAU;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,MAAM,EAAE,CAAC,CAAC,EAAE,IAAY,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,qBAAqB,CAAC;AAChF,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,OAAO,CAAC,2BAA2B,CAAC;AAC3C,QAAA,GAAG,EAAE,yBAAyB;AAC/B,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;AACzB,QAAA,GAAG,EAAE,SAAS;AACf,KAAA;;;AC1GG,MAAO,cAAe,SAAQ,KAAK,CAAA;AACvC,IAAA,WAAA,CAAmB,IAAgB,EAAA;AACjC,QAAA,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AADX,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;KAElC;AACF;;ACyCD,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAC1C,MAAM,4BAA4B,GAAG,EAAE,CAAC;MAK3B,gBAAgB,CAAA;AAM3B,IAAA,WAAA,CACU,KAAmB,EACnB,YAA0B,EAC1B,eAAoC,EACpC,gBAAkC,EAClC,kBAAsC,EACtC,eAAgC,EAChC,UAAsB,EACtB,aAA4B,EAC5B,gBAAkC,EAClC,kBAAsC,EAAA;AATtC,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAc;AACnB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAqB;AACpC,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAClC,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtC,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAChC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAC5B,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAClC,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAfhD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAgB,CAAC;QAC9C,IAAA,CAAA,QAAQ,GAA4B,IAAI,eAAe,CAAS,IAAI,CAAC,CAAC;AAgBpE,QAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAC1E,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,EAC/C,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAC/C,CAAC;KACH;IAED,kBAAkB,CAAC,MAAoB,EAAE,YAA4B,EAAA;AACnE,QAAA,IAAI,GAAG,GAAiB;YACtB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC;QACF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,GAAI;YACnC,IAAI,IAAI,CAAC,2BAA2B,CAAC,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE;AAChE,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,GAAG,GAAG;AACJ,oBAAA,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACtC,oBAAA,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACpC,oBAAA,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;iBACrD,CAAC;AACH,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,GAAG,CAAC;AACZ,aAAA;AACF,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;AAED;;;;;;AAMG;AACG,IAAA,cAAc,CAAC,gBAAkD,EAAA;;AACrE,YAAA,IAAI,QAAQ,CAAC;AACb,YAAA,MAAM,MAAM,GAAqB,IAAI,OAAO,CAAC,OAAO,IAAG;gBACrD,QAAQ,GAAG,OAAO,CAAC;AACrB,aAAC,CAAC,CAAC;AAEH,YAAA,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC;AAEzF,YAAA,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,gBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,aAAA;AAED,YAAA,MAAM,YAAY,GAAQ;gBACxB,EAAE,EAAE,gBAAgB,CAAC,eAAe;AACpC,gBAAA,qBAAqB,EAAE;oBACrB,gBAAgB;AACjB,iBAAA;aACF,CAAC;AACF,YAAA,MAAM,YAAY,GAAG,EAAE,YAAY,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE1D,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,IAAG;gBAC3C,QAAQ,CAAC,SAAS,CAAC,CAAC;AACtB,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,MAAM,CAAC;SACf,CAAA,CAAA;AAAA,KAAA;AAED;;;;;;;;AAQG;IACH,oBAAoB,CAAC,yBAAiC,EAAE,SAA8B,EAAA;QACpF,MAAM,wBAAwB,GAAG,SAAS,KAAA,IAAA,IAAT,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,CAAE,OAAO,CAAC;AAEpD,QAAA,IAAI,CAAC,wBAAwB,IAAI,CAAC,yBAAyB,EAAE;AAC3D,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AAED,QAAA,OAAO,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;KAChF;AAED;;;;;;;;AAQG;IACH,gCAAgC,CAC9B,mBAA0C,EAC1C,OAAe,EAAA;QAEf,OAAO,mBAAmB,aAAnB,mBAAmB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAnB,mBAAmB,CAAE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;KAC7E;AAEK,IAAA,cAAc,CAAC,KAAkB,EAAA;;AACrC,YAAA,OAAO,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;SAC3D,CAAA,CAAA;AAAA,KAAA;IAED,eAAe,CAAC,eAAoB,EAAE,EAAA;AACpC,QAAA,MAAM,MAAM,GAAW;AACrB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,cAAc,EAAE,IAAI;SACrB,CAAC;AACF,QAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC;AAC/D,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KACzE;IAEK,gBAAgB,GAAA;;YACpB,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC;AACjD,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;YACnE,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;SACnE,CAAA,CAAA;AAAA,KAAA;IAEK,kBAAkB,CAAC,YAAA,GAAoB,EAAE,EAAA;;AAC7C,YAAA,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;AAC7D,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5D,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;SAC7D,CAAA,CAAA;AAAA,KAAA;IAEK,sBAAsB,CAAC,YAAA,GAAoB,EAAE,EAAA;;AACjD,YAAA,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;AAC7D,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YACxD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;SAC7D,CAAA,CAAA;AAAA,KAAA;IAEK,sBAAsB,CAAC,YAAA,GAAoB,EAAE,EAAA;;YACjD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;AAC/C,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAChC;gBACE,YAAY,EAAE,uBAAuB,CAAC,MAAM;AAC5C,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,QAAQ,EAAE,IAAI;aACf,EACD,YAAY,CACb,CAAC;AACF,YAAA,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AAC3D,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC5B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC;AAC3C,aAAA,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;;AAExE,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,GAAiB,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YACnE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;SACjE,CAAA,CAAA;AAAA,KAAA;IAEK,4BAA4B,GAAA;;AAChC,YAAA,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC;AAChG,YAAA,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAG,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAC,OAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,MAAK,YAAY,CAAA,EAAA,CAAC,CAAC,MAAM,CAAC;SAC5E,CAAA,CAAA;AAAA,KAAA;AAED,IAAA,mBAAmB,CAAC,GAAiB,EAAA;QACnC,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3C,QAAA,MAAM,aAAa,GAAG;AACpB,YAAA,eAAe,CAAC,MAAM;AACtB,YAAA,eAAe,CAAC,QAAQ;AACxB,YAAA,eAAe,CAAC,UAAU;AAC3B,SAAA,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC1C,QAAA,OAAO,aAAa,IAAI,aAAa,IAAI,YAAY,CAAC;KACvD;AAED,IAAA,OAAO,CAAC,GAAG,EAAA;AACT,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;KACpF;AAEK,IAAA,YAAY,CAAC,GAAiB,EAAA;;AAClC,YAAA,QACE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAC1F;SACH,CAAA,CAAA;AAAA,KAAA;AAED,IAAA,OAAO,CAAC,GAAiB,EAAA;QACvB,MAAM,aAAa,GAAmB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC;QAC/E,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;AAC7C,QAAA,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ,CAAC;KACxC;AAED,IAAA,SAAS,CAAC,GAAiB,EAAA;QACzB,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;KACrC;AAED,IAAA,cAAc,CAAC,GAAiB,EAAA;AAC9B,QAAA,OAAO,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC;KACpC;AAED,IAAA,UAAU,CAAC,GAAiB,EAAA;AAC1B,QAAA,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC;KAChC;AAED,IAAA,SAAS,CAAC,GAAiB,EAAA;;QACzB,OAAO,CAAA,MAAA,GAAG,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,MAAK,IAAI,CAAC;KACzC;AAED,IAAA,QAAQ,CAAC,GAAiB,EAAA;;QACxB,OAAO,CAAA,MAAA,GAAG,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAK,QAAQ,CAAC;KAC3C;AAED,IAAA,iBAAiB,CAAC,GAAiB,EAAA;QACjC,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AAClB,SAAA;AACD,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,SAAA;KACF;AAED,IAAA,oBAAoB,CAAC,KAAK,EAAA;QACxB,IAAI,KAAK,CAAC,gBAAgB,EAAE;AAC1B,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,KAAK,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC;AAC7F,SAAA;KACF;IAED,mBAAmB,CAAC,GAAiB,EAAE,eAAuB,EAAA;AAC5D,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;KACxE;AAED,IAAA,oBAAoB,CAAC,GAAiB,EAAE,OAAe,EAAE,IAAc,EAAA;AACrE,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;KACzE;IAED,oBAAoB,CAAC,GAAiB,EAAE,MAAuC,EAAA;QAC7E,OAAO,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;KAClE;AAED,IAAA,mBAAmB,CAAC,GAAiB,EAAA;QACnC,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;KAC9F;IAED,YAAY,CAAC,GAAiB,EAAE,cAAyB,EAAA;QACvD,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC;AACvC,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;AAClE,QAAA,MAAM,mCACD,MAAM,CAAA,EAAA,EACT,OAAO,EAAE,IAAI,EACb,EAAE;YACF,IAAI;AACJ,YAAA,YAAY,GACb,CAAC;AACF,QAAA,OAAO,MAAM,CAAC;KACf;IAEK,iBAAiB,CACrB,WAAyB,EACzB,aAA2B,EAAA;;AAE3B,YAAA,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;AACzD,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AACxB,gBAAA,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC1B,aAAA;AACD,YAAA,UAAU,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;YACtC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC;YAE9C,OAAO,MAAM,IAAI,CAAC,kBAAkB;iBACjC,MAAM,CAAC,EAAE,CAAC;AACV,iBAAA,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAQ,EAAE,CAAC,CAAC,CAAC;SAC1F,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,YAAY,CAAC,KAAqC,EAAA;;AACtD,YAAA,MAAM,MAAM,GAAG;AACb,gBAAA,QAAQ,EAAE,GAAG;aACd,CAAC;AACF,YAAA,OAAO,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;SACxE,CAAA,CAAA;AAAA,KAAA;IAEK,aAAa,CAAC,OAA2B,EAAE,GAAiB,EAAA;;YAChE,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACrE,IAAI;gBACF,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CACtB,OAAO,CAAC,gBAAgB,CAAC,EACzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC3B,OAAO,CACL,CAAuF,qFAAA,CAAA,CACxF,EACD,EAAE,oBAAoB,EAAE,CACzB,EACD,MAAM,CAAC,MAAM,EACb,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CACrD,CAAC;AACF,gBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC7D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACxD,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;AACX,gBAAA,IAAI,EAAE,EAAE;AACN,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,iBAAA;AACD,gBAAA,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;AAC9B,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,uBAAuB,CAAC,QAAgB,EAAA;;AAC5C,YAAA,OAAO,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;SAC5D,CAAA,CAAA;AAAA,KAAA;IAEK,eAAe,CACnB,GAAiB,EACjB,OAAgD,EAAA;;YAEhD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAClD,gBAAA,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC,CAAC;AAChF,gBAAA,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAClC,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;;AAEX,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,SAAS,CAAC,GAAiB,EAAE,eAAe,GAAG,KAAK,EAAA;;YACxD,IAAI;gBACF,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClD,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;AACX,gBAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACpB,gBAAA,IAAI,eAAe,EAAE;oBACnB,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7C,oBAAA,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;AAClE,iBAAA;AACF,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,SAAS,CAAC,GAAiB,EAAE,MAAM,GAAG,KAAK,EAAA;;YAC/C,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CACtB,OAAO,CAAC,oBAAoB,CAAC,EAC7B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC3B,OAAO,CACL,CAAuF,qFAAA,CAAA,CACxF,EACD,EAAE,gBAAgB,EAAE,CACrB,EACD,MAAM,CAAC,MAAM,EACb,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CACrD,CAAC;AACH,aAAA;YACD,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,EAAE;gBACX,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC5D,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC3B,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,iBAAiB,CAAC,GAAiB,EAAA;;YACvC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YACzD,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;AAClE,YAAA,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;SAClF,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,YAAY,CAAC,GAAiB,EAAA;;YAClC,MAAM,aAAa,GAAmB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC;YAC/E,IAAI;gBACF,MAAM,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;gBAClE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,CAAC;AAC/E,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;AACX,gBAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACrB,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,cAAc,CAAC,GAAiB,EAAA;;YACpC,MAAM,aAAa,GAAmB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC;YAC/E,IAAI;gBACF,MAAM,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;gBACpE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,CAAC;AACnF,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;AACX,gBAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACrB,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;IAEK,cAAc,CAAC,OAAa,EAAE,OAAwB,EAAA;;YAC1D,IAAI;gBACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACnD,IAAI,WAAW,KAAK,OAAO,EAAE;AAC3B,oBAAA,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACtD,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAC7C,oBAAA,OAAO,IAAI,CAAC;AACb,iBAAA;AACF,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;AACX,gBAAA,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACtD,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,kBAAkB,CACtB,OAAa,EACb,GAAiB,EACjB,YAAY,GAAG,KAAK,EAAA;;AAEpB,YAAA,IAAI,eAAsC,CAAC;AAC3C,YAAA,IAAI,YAAY,EAAE;gBAChB,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC/D,aAAA;YACD,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1D,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,qBAAqB,CAC5C,OAAO,EACP,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EACpC,EAAE,EACF,eAAe,CAChB,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;;;;;YAOlE,OAAO,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,EAAY,EAAE,IAAI,CAAC;SACjG,CAAA,CAAA;AAAA,KAAA;IAEK,iCAAiC,CAAC,OAAa,EAAE,GAAiB,EAAA;;YACtE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC/C,YAAA,IAAI,OAAO,KAAK,GAAG,CAAC,IAAI,EAAE;AACxB,gBAAA,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAC1D,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAC9C,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBAC5B,OAAO;AACR,aAAA;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;;;YAGvD,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;AACR,aAAA;YACD,MAAM,IAAI,CAAC,gCAAgC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;SAC5D,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,iBAAiB,CAAC,OAAa,EAAA;;YACnC,IAAI;AACF,gBAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;AACvE,gBAAA,OAAO,WAAW,CAAC;AACpB,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;AACX,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,KAAK,EAAA;;YAC7D,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,QAAQ,GAAQ,EAAE,CAAC;YACvB,MAAM,iBAAiB,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;AAEjF,YAAA,IAAI,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBACvC,IAAI;oBACF,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;AAC9D,oBAAA,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;AAChC,iBAAA;AAAC,gBAAA,OAAO,CAAC,EAAE;;AAEX,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gCAAgC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC/E,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAExD,YAAA,MAAM,SAAS,GAAG;AAChB,gBAAA,YAAY,EAAE,GAAG;AACjB,gBAAA,IAAI,EAAE,OAAO;gBACb,IAAI;gBACJ,GAAG;gBACH,WAAW;aACZ,CAAC;AAEF,YAAA,IAAI,oBAAoB,IAAI,CAAC,SAAS,EAAE;AACtC,gBAAA,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACtD,aAAA;AAAM,iBAAA,IAAI,CAAC,oBAAoB,IAAI,SAAS,EAAE;AAC7C,gBAAA,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAC1D,aAAA;iBAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AACnD,gBAAA,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;AAC1B,gBAAA,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,0BAA0B,CAAC;AACnD,gBAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACxE,IAAI;AACJ,oBAAA,QAAQ,EAAE,4BAA4B;AACvC,iBAAA,CAAC,CAAC;AACH,gBAAA,MAAM,KAAK,CAAC;AACb,aAAA;AACD,YAAA,OAAO,CACL,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAC/B,SAAS,CAAA,EAAA,EACZ,QAAQ,EACN,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EACN,GAAC,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,OAAO,KAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAC,EAAA,CAAA,CAEzD,EACF,IAAI,CAAC;SACR,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,iBAAiB,CAAC,GAAiB,EAAA;;YACvC,IAAI;gBACF,MAAM,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC;AAChE,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;AACX,gBAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACrB,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;IAEK,mBAAmB,CAAC,GAAiB,EAAE,QAA8B,EAAA;;YACzE,IAAI;AACF,gBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CACtB,OAAO,CAAC,oCAAoC,CAAC,EAC7C,OAAO,CACL,4JAA4J,CAC7J,EACD,MAAM,CAAC,IAAI,EACX,EAAE,EAAE,EAAE,OAAO,CAAC,qBAAqB,CAAC,EAAE,CACvC,CAAC;gBACF,MAAM,eAAe,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtD,gBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;gBACrE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACxD,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;AACX,gBAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACrB,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAED,IAAA,WAAW,CAAC,GAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtB,OAAO,SAAS,CAAC,UAAU,CAAC;AAC7B,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAC/B,OAAO,SAAS,CAAC,QAAQ,CAAC;AAC3B,SAAA;AAAM,aAAA,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,CAAC,QAAQ,EAAE;YAChD,OAAO,SAAS,CAAC,QAAQ,CAAC;AAC3B,SAAA;QACD,OAAO,SAAS,CAAC,MAAM,CAAC;KACzB;AAED,IAAA,sBAAsB,CAAC,GAAiB,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACxB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE;YAChC,OAAO,SAAS,CAAC,iBAAiB,CAAC;AACpC,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;YAC9B,OAAO,SAAS,CAAC,cAAc,CAAC;AACjC,SAAA;QACD,OAAO,SAAS,CAAC,eAAe,CAAC;KAClC;AAED,IAAA,kBAAkB,CAAC,GAAiB,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,WAAW,CAAC;KACpE;AAED,IAAA,gBAAgB,CAAC,GAAiB,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC;KACjE;AAED,IAAA,UAAU,CAAC,GAAiB,EAAA;;QAC1B,OAAO,CAAC,EAAC,CAAA,EAAA,GAAA,GAAG,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAA,CAAC;KAC/B;AAED,IAAA,UAAU,CAAC,GAAiB,EAAA;;AAC1B,QAAA,OAAO,CAAC,EAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,GAAG,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAA,CAAC;KACxC;AAED,IAAA,aAAa,CAAC,GAAiB,EAAA;QAC7B,QACE,GAAG,CAAC,IAAI,KAAK,eAAe,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EACzF;KACH;AAED,IAAA,oBAAoB,CAAC,GAAiB,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,CAAC,YAAY,CAAC;KACvE;IAEK,SAAS,CACb,GAAiB,EACjB,OAAyC,EAAA;;AAEzC,YAAA,IAAI,MAAM,CAAC;YACX,IAAI;AACF,gBAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAClF,gBAAA,MAAM,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;AAClC,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;AACX,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;AACjD,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,aAAA;AACD,YAAA,OAAO,MAAM,CAAC;SACf,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,wBAAwB,CAAC,GAAiB,EAAA;;AAC9C,YAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;SACvE,CAAA,CAAA;AAAA,KAAA;AAEK,IAAA,sBAAsB,CAAC,GAAiB,EAAA;;;AAC5C,YAAA,MAAM,wBAAwB,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAChG,YAAA,OAAO,GAAG,CAAC,WAAW,IAAI,CAAA,MAAA,wBAAwB,CAAC,GAAG,CAAC,WAAW,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MAAK,CAAC,CAAC;;AACnF,KAAA;AAED;;AAEG;AACH,IAAA,uCAAuC,CAAC,GAAiB,EAAA;AACvD,QAAA,GAAG,CAAC,YAAY,GAAG,uBAAuB,CAAC,OAAO,CAAC;AACnD,QAAA,OAAO,GAAG,CAAC;KACZ;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,KAA6B,EAAA;QACtC,IAAI,KAAK,YAAY,cAAc,EAAE;YACnC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC3C,SAAA;KACF;IAEK,gCAAgC,CAAC,QAAmB,EAAE,GAAiB,EAAA;;YAC3E,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACpC,IAAI,WAAW,KAAK,GAAG,CAAC,WAAW,IAAI,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE;AACzD,gBAAA,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC;AACnE,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;IAEO,SAAS,CAAC,QAAsB,EAAE,IAAY,EAAA;QACpD,IAAI,GAAG,GAAG,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,GAAG,CAAC;QACxB,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,GAAG,GAAG,CAAG,EAAA,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;IAEO,cAAc,CAAC,QAAsB,EAAE,IAAY,EAAA;AACzD,QAAA,OAAO,CAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,WAAW,KAAI,IAAI,CAAC,WAAW,EAAE,CAAC;KACpD;AAEO,IAAA,yBAAyB,CAAC,GAAW,EAAA;QAC3C,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;KAC3C;AAEO,IAAA,YAAY,CAAC,GAAiB,EAAA;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;AAClD,QAAA,OAAO,UAAU,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW,CAAC;KACnD;AAEO,IAAA,kBAAkB,CAAC,OAAa,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE;AAC1C,YAAA,QAAQ,EAAE,eAAe;AAC1B,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,UAAU,CAAC,OAAa,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;AACpC,aAAA,SAAS,EAAE;aACX,IAAI,CACH,IAAI,IACF,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACjB,aAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,eAAe,CAAC,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CACpF;aACA,KAAK,CAAC,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;KACxC;AAEO,IAAA,gCAAgC,CACtC,OAAY,EACZ,OAAwB,EACxB,QAAuB,EAAA;QAEvB,IAAI,QAAQ,GAAG,CAAA,QAAQ,aAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,IAAI,KAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,OAAO,KAAK,cAAc,EAAE;AAC9B,YAAA,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACjD,SAAA;AACD,QAAA,OAAO,QAAQ,CAAC;KACjB;AAEO,IAAA,2BAA2B,CACjC,YAA4B,EAC5B,GAAiB,EACjB,OAAe,EAAA;AAEf,QAAA,OAAO,YAAY,CAAC,IAAI,CACtB,WAAW,IACT,WAAW,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;AAC7B,YAAA,WAAW,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG;AAC3B,YAAA,WAAW,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW;AAC3C,YAAA,WAAW,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAClD,YAAA,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAChD,YAAA,WAAW,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CACnE,CAAC;KACH;AAEO,IAAA,mBAAmB,CAAC,GAAiB,EAAA;AAC3C,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAEtE,QAAA,kBAAkB,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,QAAA,OAAO,OAAO,CAAC;KAChB;IAEa,kBAAkB,CAC9B,OAAa,EACb,GAAiB,EAAA;;;AAEjB,YAAA,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;YACvE,MAAM,gBAAgB,GAAG,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,mBAAmB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,MAAK,CAAC,CAAC;YAC/D,OAAO;AACL,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,OAAO,EAAE;AACP,oBAAA,MAAM,EAAE,kFAAkF;AAC3F,iBAAA;AACD,gBAAA,gBAAgB,EAAE,mBAAmB;AACrC,gBAAA,WAAW,EAAE;AACX,oBAAA,kBAAkB,EAAI,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAK,GAAC,gBAAgB,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAG;AAC/E,iBAAA;aACF,CAAC;;AACH,KAAA;AAEO,IAAA,qBAAqB,CAAC,IAAY,EAAA;QACxC,MAAM,aAAa,GAAG,oCAAoC,CAAC;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;KACxC;IAEO,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAA;QACxC,OAAO,IAAI,CAAC,MAAM,GAAG,4BAA4B,IAAI,OAAO,KAAK,eAAe,CAAC,YAAY,CAAC;KAC/F;;6GAjuBU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;MCzCY,uBAAuB,CAAA;IAiBlC,WACU,CAAA,gBAAkC,EAClC,YAA0B,EAC1B,kBAAsC,EACtC,eAAgC,EAChC,gBAAkC,EAAA;AAJlC,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAClC,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtC,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAChC,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAhBnC,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAO3B,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAEjB,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;KAQ3B;AAEJ,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;KACvC;AAED,IAAA,kBAAkB,CAAC,KAAK,EAAA;AACtB,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;KACF;AAEK,IAAA,MAAM,CAAC,IAAU,EAAA;;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEtB,IAAI;gBACF,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;gBAC5D,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3D,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnF,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC1B,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;gBACX,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzD,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;;gBAElC,MAAM,kBAAkB,GACtB,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;;AAE1F,gBAAA,IAAI,CAAC,YAAY,GAAG,kBAAkB,KAAlB,IAAA,IAAA,kBAAkB,KAAlB,KAAA,CAAA,GAAA,kBAAkB,GAAI,EAAE,CAAC,OAAO,CAAC;gBACrD,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9C,oBAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AACxC,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB,CAAA,CAAA;AAAA,KAAA;AAED,IAAA,OAAO,CAAC,GAAiB,EAAA;QACvB,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAC7C;IAED,MAAM,GAAA;QACJ,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;KAC9B;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;KAC9B;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;KAC9B;IAEO,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KACxB;;oHApFU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAQvB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpB9B,6vEAuFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD3Ea,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,6vEAAA,EAAA,CAAA;+NAItB,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,wBAAwB,EAAA,CAAA;sBAAhC,KAAK;gBACG,wBAAwB,EAAA,CAAA;sBAAhC,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEwB,iBAAiB,EAAA,CAAA;sBAA9C,SAAS;uBAAC,iBAAiB,CAAA;;;MEdjB,yBAAyB,CAAA;AACpC,IAAA,WAAA,CAAoB,SAA2B,EAAA;AAA3B,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;KAAI;AAEnD,IAAA,SAAS,CAAC,eAAsE,EAAA;QAC9E,MAAM,mBAAmB,GAAG,CAAC,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;AACnE,QAAA,IAAI,mBAAmB,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC;AAC3E,SAAA;AACD,QAAA,OAAO,eAAe,CAAC;KACxB;;sHATU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;oHAAzB,yBAAyB,EAAA,IAAA,EAAA,uBAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,IAAI;mBAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAA;;;MCoB1B,wBAAwB,CAAA;AAyCnC,IAAA,WAAA,CACU,kBAAsC,EACtC,gBAAkC,EAClC,YAA0B,EAC1B,MAAc,EACd,kBAAsC,EACtC,KAAmB,EACnB,aAA6B,EAC7B,gBAAkC,EAAA;AAPlC,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtC,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAClC,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AACd,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtC,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAc;AACnB,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAgB;AAC7B,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAhD5C,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC;AAGxB,QAAA,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;AACd,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAE,CAAC;AACtD,QAAA,IAAA,CAAA,WAAW,GAAuB,IAAI,YAAY,EAAE,CAAC;AAyBtD,QAAA,IAAiB,CAAA,iBAAA,GAAG,mBAAmB,CAAC;AACxC,QAAA,IAAY,CAAA,YAAA,GAAG,WAAW,CAAC;QAC3B,IAAA,CAAA,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1C,QAAA,IAAA,CAAA,kBAAkB,GAAG,OAAO,CACnC,CAAA,oIAAA,CAAsI,CACvI,CAAC;AACO,QAAA,IAAA,CAAA,kCAAkC,GAAG,OAAO,CACnD,2CAA2C,CAC5C,CAAC;KAWE;AAzBJ,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,CAAC,IAAI,CAAC,oBAAoB;AAC/B,cAAE,OAAO,CAAC,MAAM,CAAC;AACjB,cAAE,OAAO,CAAC,iCAAiC,CAAC,CAAC;KAChD;IAuBK,QAAQ,GAAA;;AACZ,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5E,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/D,YAAA,IAAI,CAAC,oBAAoB;AACvB,gBAAA,IAAI,CAAC,gBAAgB,KAAK,MAAM,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5F,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpE,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClF,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrE,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACvD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC9C,YAAA,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACrC,CAAA,CAAA;AAAA,KAAA;IAED,iBAAiB,GAAA;;QACf,QACE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO;AAC1B,aAAC,CAAC,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAA,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAA,CAAC,EACtF;KACH;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAC1F,YAAA,SAAS,EAAE,kBAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,gBAAgB;AACtE,YAAA,MAAM,EAAE,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI;YACpD,GAAG,EAAE,IAAI,CAAC,gBAAgB;AAC3B,SAAA,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA,sCAAA,EAAyC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA,CAAE,CAAC,CAAC;YAClF,OAAO;AACR,SAAA;QAED,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA,gCAAA,EAAmC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA,CAAE,CAAC,CAAC;YAC5E,OAAO;AACR,SAAA;QAED,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA,gCAAA,EAAmC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA,CAAE,CAAC,CAAC;YAC5E,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA,oCAAA,EAAuC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA,CAAE,CAAC,CAAC;KACjF;IAED,OAAO,GAAA;QACL,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACzC;IAEK,MAAM,GAAA;;YACV,IAAI;gBACF,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACzB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAC1F,oBAAA,SAAS,EAAE,kBAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,gBAAgB;AACtE,oBAAA,MAAM,EAAE,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM;oBACtD,GAAG,EAAE,IAAI,CAAC,gBAAgB;AAC3B,iBAAA,CAAC,CAAC;AACJ,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;AACX,gBAAA,IAAI,EAAE,EAAE;AACN,oBAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AACvC,oBAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAChC,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,EACvD;AACE,wBAAA,SAAS,EAAE,kBAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,gBAAgB;AACtE,wBAAA,MAAM,EAAE,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc;wBAC9D,GAAG,EAAE,IAAI,CAAC,gBAAgB;AAC3B,qBAAA,CACF,CAAC;AACH,iBAAA;AACF,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;IAEK,KAAK,GAAA;;AACT,YAAA,MAAM,YAAY,GAAiB;AACjC,gBAAA,UAAU,EAAE,iBAAiB;AAC7B,gBAAA,UAAU,EAAE,UAAU;aACvB,CAAC;AAEF,YAAA,MAAM,YAAY,GAA0C;gBAC1D,YAAY;AACZ,gBAAA,qBAAqB,EAAE;AACrB,oBAAA,WAAW,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3C,iBAAA;AACD,gBAAA,EAAE,EAAE,sBAAsB;aAC3B,CAAC;AAEF,YAAA,MAAM,YAAY,GAAkC,EAAE,YAAY,EAAE,CAAC;YAErE,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC5D,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;AACtC,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AAC1B,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAC1F,gBAAA,SAAS,EAAE,kBAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,gBAAgB;AACtE,gBAAA,MAAM,EAAE,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK;gBACrD,GAAG,EAAE,IAAI,CAAC,gBAAgB;AAC3B,aAAA,CAAC,CAAC;SACJ,CAAA,CAAA;AAAA,KAAA;IAEa,sBAAsB,GAAA;;;YAClC,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;gBAC7B,IAAI;oBACF,IAAI,CAAC,2BAA2B,GAAG,CACjC,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,MAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC,EACrE,IAAI,CAAC;AAEP,oBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,CAAC,gCAAgC,CACpF,IAAI,CAAC,2BAA2B,EAChC,QAAQ,CACT,CAAC;oBACF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CACpE,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAC1B,IAAI,CAAC,wBAAwB,CAC9B,CAAC;AACH,iBAAA;AAAC,gBAAA,OAAO,KAAK,EAAE;AACd,oBAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE;wBACrC,OAAO;AACR,qBAAA;AACD,oBAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACpC,iBAAA;AACF,aAAA;;AACF,KAAA;;qHArLU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,+KCzBrC,67RAuPA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD9Na,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,67RAAA,EAAA,CAAA;6SAMvB,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;;;MEvBI,kCAAkC,CAAA;AAK7C,IAAA,WAAA,CAAoB,WAAwB,EAAA;AAAxB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AAFnC,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAGxB,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IACE,OAAO,CAAC,WAAW;YACnB,OAAO,CAAC,WAAW,CAAC,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,aAAa,EACtE;AACA,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAChC,SAAA;AACD,QAAA,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,KAAK,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE;YACxF,OAAO,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;AACpF,SAAA;KACF;IAEO,QAAQ,GAAA;QACd,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACtC,YAAA,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACtD,YAAA,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACrD,YAAA,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC9D,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,OAAO,CAAC,iBAA+B,EAAA;AAC7C,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAM,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,iBAAiB,EAAG,CAAC;KACrD;;+HA/BU,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,kCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,0JCR/C,sqCA4CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDpCa,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAJ9C,SAAS;+BACE,iCAAiC,EAAA,QAAA,EAAA,sqCAAA,EAAA,CAAA;kGAKlC,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MEDK,iCAAiC,CAAA;IAM5C,WACS,CAAA,gBAAkC,EACjC,eAAgC,EAAA;AADjC,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AACjC,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AALhC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAgB,CAAC;KAMvD;AAEJ,IAAA,MAAM,CAAC,WAAyB,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACrB;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;KAC9B;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;KAC9B;;8HAtBU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,iCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,iLCV9C,8/BAgCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDtBa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAJ7C,SAAS;+BACE,gCAAgC,EAAA,QAAA,EAAA,8/BAAA,EAAA,CAAA;kIAIjC,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACI,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;MEEI,uCAAuC,CAAA;AAgBlD,IAAA,WAAA,CACU,UAAsB,EACtB,gBAAkC,EAClC,kBAAsC,EACtC,gBAAkC,EAAA;AAHlC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAClC,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtC,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAnB5C,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC;AAKxB,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AACnB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAgB,CAAC;AAI3D,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAGpB,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;KAOf;IAEJ,QAAQ,GAAA;QACN,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAC3C,uBAAuB,CAAC,IAAI,CAAC,EAC7B,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,EAC1F,GAAG,CAAC,YAAY,IAAG;AACjB,YAAA,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;YAChC,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB,CAAC,CACH,CAAC;QACF,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAEK,YAAY,GAAA;;YAChB,MAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AAC9E,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,YAAA,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;;YAEtF,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,uCAAuC,CAAC,SAAS,CAAC,CAAC;AAErF,YAAA,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YACzC,OAAO,SAAS,CAAC,IAAI,CAAC;AAEtB,YAAA,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAExB,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAChC,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,qBAAqB,EAC5D;AACE,gBAAA,SAAS,EAAE,kBAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,gCAAgC;AACtF,gBAAA,MAAM,EAAE,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU;gBAC1D,GAAG,EAAE,IAAI,CAAC,gBAAgB;AAC3B,aAAA,CACF,CAAC;SACH,CAAA,CAAA;AAAA,KAAA;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAChC,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,qBAAqB,EAC5D;AACE,YAAA,SAAS,EAAE,kBAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,gCAAgC;AACtF,YAAA,MAAM,EAAE,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM;YACtD,GAAG,EAAE,IAAI,CAAC,gBAAgB;AAC3B,SAAA,CACF,CAAC;KACH;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;KACzB;IAED,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC1D,IAAI,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;AAChD,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAC1D,IAAI,CAAC,WAAW,CAAC,KAAK,EACtB,IAAI,CAAC,YAAY,CAClB,CAAC;AACH,SAAA;KACF;AAEa,IAAA,SAAS,CAAC,eAAsC,EAAA;;YAC5D,IAAI;AACF,gBAAA,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;gBACnF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAChD,gBAAA,IAAI,QAAQ,EAAE;oBACZ,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC1C,iBAAA;AAED,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACrB,aAAA;AAAC,YAAA,OAAO,GAAG,EAAE;AACZ,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACzB,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;IAEa,cAAc,CAAC,GAAiB,EAAE,QAAa,EAAA;;YAC3D,MAAM,YAAY,GAA8B,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;YAC/E,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5E,YAAA,IAAI,cAAc,EAAE;AAClB,gBAAA,YAAY,CAAC,OAAO,CAAC,GAAG,IAAG;oBACzB,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,iBAAC,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC/D,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,cAAc,CAAC,GAAiB,EAAA;;YAC5C,IAAI,EAAC,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,WAAW,CAAA,EAAE;gBACrB,OAAO;AACR,aAAA;YACD,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACnE,gBAAA,OAAO,QAAQ,CAAC;AACjB,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;gBACX,OAAO;AACR,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;;oIA3HU,uCAAuC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wHAAvC,uCAAuC,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAQvC,kCAAkC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvB/C,+5CAiDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,kCAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDlCa,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBAJnD,SAAS;+BACE,sCAAsC,EAAA,QAAA,EAAA,+5CAAA,EAAA,CAAA;+LAMvC,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACI,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAEP,yBAAyB,EAAA,CAAA;sBADxB,SAAS;uBAAC,kCAAkC,CAAA;;;MEblC,6BAA6B,CAAA;AAQxC,IAAA,WAAA,CACU,gBAAkC,EAClC,kBAAsC,EACtC,eAAgC,EAAA;AAFhC,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAClC,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtC,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAP1C,IAAA,CAAA,WAAW,GAAkC,IAAI,eAAe,CAAe,IAAI,CAAC,CAAC;AACrF,QAAA,IAAY,CAAA,YAAA,GAAmB,EAAE,CAAC;AAClC,QAAA,IAAwB,CAAA,wBAAA,GAAG,KAAK,CAAC;KAM7B;IAEE,QAAQ,GAAA;;YACZ,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;AACrE,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AAC1B,gBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;AACtC,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAED,IAAA,aAAa,CAAC,GAAiB,EAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5B;AAED,IAAA,OAAO,CAAC,GAAiB,EAAA;QACvB,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAC7C;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;KAC9B;;0HA/BU,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8GAA7B,6BAA6B,EAAA,QAAA,EAAA,2BAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAC7B,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXvB,mmGA4FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,cAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,iCAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uCAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDlFa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,mmGAAA,EAAA,CAAA;mKAKrC,OAAO,EAAA,CAAA;sBADN,SAAS;gBAAC,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;MEO5B,6BAA6B,CAAA;IAaxC,WACU,CAAA,kBAAsC,EACtC,cAA8B,EAAA;AAD9B,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtC,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAd/B,QAAA,IAAA,CAAA,KAAK,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAI/C,IAAA,CAAA,QAAQ,GAA4B,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;AAEpE,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACX,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAkB,EAAE,CAAC,CAAC;AAQ5D,QAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAC7D,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EACtB,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CACzD,CAAC;QACF,MAAM,UAAU,GAAG,KAAK,CAAC,yBAAyB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9F,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,CACtC,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAC5C,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CACnF,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CACtF,CAAC;KACH;AAED,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;KAC5B;AAED,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KAC9B;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,kBAAkB,EAAE;YAC9B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACxD,SAAA;QAED,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACtC,SAAA;KACF;AAEK,IAAA,kBAAkB,CAAC,SAA0B,EAAA;;YACjD,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;SAC9D,CAAA,CAAA;AAAA,KAAA;AAED,IAAA,eAAe,CAAC,OAA4B,EAAA;AAC1C,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACxB,SAAA;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE,CAAC;AAClB,SAAA;KACF;AAEa,IAAA,0BAA0B,CAAC,WAAmB,EAAA;;AAC1D,YAAA,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,CAClF,WAAW,CACZ,CAAC;AACF,YAAA,MAAM,YAAY,GAAG,WAAW,CAAC,EAAE,CAAC;AACpC,YAAA,OAAO,YAAY,CAAC;SACrB,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,uBAAuB,CAAC,QAA+B,EAAA;QAC7D,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAChD,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACrC,aAAA;AACF,SAAA;KACF;IAEO,iBAAiB,CACvB,WAAkC,EAClC,SAAiB,EAAA;QAEjB,OAAO,SAAS,KAAK,EAAE;AACrB,cAAE,WAAW;AACb,cAAE,WAAW,CAAC,MAAM,CAChB,UAAU,IAAG;;AACX,gBAAA,OAAA,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;AACtC,qBAAA,CAAA,EAAA,GAAA,UAAU,CAAC,IAAI,0CAAE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA,CAAA;AAAA,aAAA,CACxD,CAAC;KACP;IAEO,uBAAuB,CAC7B,UAA4C,EAC5C,SAAiB,EAAA;AAEjB,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjF,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CACxD;AACE,YAAA,IAAI,EAAE,qBAAqB;YAC3B,IAAI,EAAE,CAAC,SAAS,CAAC;SAClB,EACD,MAAM,CACP,CAAC;AAEF,QAAA,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;QAChD,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;KACzD;;0HArHU,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAR7B,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,6BAA6B,CAAC;AAC7D,SAAA;KACF,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBH,wmDAkDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,oCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDhCa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAXzC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAE3B,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAE,UAAU,CAAC,mCAAmC,CAAC;AAC7D,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,wmDAAA,EAAA,CAAA;sIAGQ,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEXK,sBAAsB,CAAA;IAejC,WAAoB,CAAA,gBAAkC,EAAU,YAA0B,EAAA;AAAtE,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAAU,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAbjF,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAExB,QAAA,IAAA,CAAA,iBAAiB,GAA+B,IAAI,YAAY,EAAgB,CAAC;AACjF,QAAA,IAAA,CAAA,OAAO,GAAsB,IAAI,YAAY,EAAE,CAAC;AAE1D,QAAA,IAAQ,CAAA,QAAA,GAAyB,EAAE,CAAC;AAKpC,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AACzB,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;KAEwE;AAE9F,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;KACvC;AAEK,IAAA,kBAAkB,CAAC,KAAK,EAAA;;YAC5B,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI;AACF,oBAAA,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAChC,iBAAA;AAAC,gBAAA,OAAO,CAAC,EAAE;;oBAEV,OAAO;AACR,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACnB,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAEa,IAAA,MAAM,CAAC,IAAU,EAAA;;YAC7B,IAAI;AACF,gBAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,iCAAiC,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACtF,gBAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC1F,IAAI,CAAC,QAAQ,GAAG,oBAAoB;AAClC,sBAAE,EAAE;AACJ,sBAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAClE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC1B,oBAAA,OAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAS,GAAI,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAS,CAAC;AACrE,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACvD,oBAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClF,iBAAA;AACD,gBAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CACxD,IAAI,EACJ,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,gBAAgB,CACtB,CAAC;AACF,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACzB,OAAO;AACR,iBAAA;gBACD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,CAAC;AACvE,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;AACX,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACtC,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;;mHApEU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,yPCVnC,yTAWA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDDa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,yTAAA,EAAA,CAAA;+HAIrB,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACI,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBACG,OAAO,EAAA,CAAA;sBAAhB,MAAM;;;MEwCI,qBAAqB,CAAA;;kHAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBApC9B,uBAAuB;QACvB,kCAAkC;QAClC,sBAAsB;QACtB,wBAAwB;QACxB,iCAAiC;QACjC,uCAAuC;QACvC,6BAA6B;QAC7B,6BAA6B;AAC7B,QAAA,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAVjB,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,CAAA,EAAA,OAAA,EAAA,CAa/D,uBAAuB;QACvB,kCAAkC;QAClC,sBAAsB;QACtB,wBAAwB;QACxB,iCAAiC;QACjC,uCAAuC;QACvC,6BAA6B;QAC7B,6BAA6B;QAC7B,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAiBhB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAfrB,SAAA,EAAA;AACT,QAAA,UAAU,CAAC;YACT,QAAQ,EAAE,gBAAgB,CAAC,kBAAkB;AAC7C,YAAA,SAAS,EAAE,6BAA6B;AACxC,YAAA,IAAI,EAAE,gCAAgC;AACtC,YAAA,OAAO,EAAE,MAAM;SAChB,CAAC;AACF,QAAA,UAAU,CAAC;AACT,YAAA,QAAQ,EAAE,sBAAsB;AAChC,YAAA,SAAS,EAAE,6BAA6B;AACxC,YAAA,IAAI,EAAE,gCAAgC;AACtC,YAAA,OAAO,EAAE,MAAM;SAChB,CAAC;AACH,KAAA,EAAA,OAAA,EAAA,CApCS,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,CAAA,EAAA,CAAA,CAAA;2FAsCtD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAvCjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,CAAC;AAClE,oBAAA,YAAY,EAAE;wBACZ,uBAAuB;wBACvB,kCAAkC;wBAClC,sBAAsB;wBACtB,wBAAwB;wBACxB,iCAAiC;wBACjC,uCAAuC;wBACvC,6BAA6B;wBAC7B,6BAA6B;wBAC7B,yBAAyB;AAC1B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,uBAAuB;wBACvB,kCAAkC;wBAClC,sBAAsB;wBACtB,wBAAwB;wBACxB,iCAAiC;wBACjC,uCAAuC;wBACvC,6BAA6B;wBAC7B,6BAA6B;wBAC7B,yBAAyB;AAC1B,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,UAAU,CAAC;4BACT,QAAQ,EAAE,gBAAgB,CAAC,kBAAkB;AAC7C,4BAAA,SAAS,EAAE,6BAA6B;AACxC,4BAAA,IAAI,EAAE,gCAAgC;AACtC,4BAAA,OAAO,EAAE,MAAM;yBAChB,CAAC;AACF,wBAAA,UAAU,CAAC;AACT,4BAAA,QAAQ,EAAE,sBAAsB;AAChC,4BAAA,SAAS,EAAE,6BAA6B;AACxC,4BAAA,IAAI,EAAE,gCAAgC;AACtC,4BAAA,OAAO,EAAE,MAAM;yBAChB,CAAC;AACH,qBAAA;iBACF,CAAA;;;ACtDD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-ecosystem-shared.mjs","sources":["../../ecosystem/shared/ecosystem.model.ts","../../ecosystem/shared/ecosystem.constants.ts","../../ecosystem/shared/ecosystem-error.ts","../../ecosystem/shared/ecosystem.service.ts","../../ecosystem/shared/add-application.component.ts","../../ecosystem/shared/add-application.component.html","../../ecosystem/shared/translate-package-label.pipe.ts","../../ecosystem/shared/application-card.component.ts","../../ecosystem/shared/application-card.component.html","../../ecosystem/shared/application-properties-form.component.ts","../../ecosystem/shared/application-properties-form.component.html","../../ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.html","../../ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.html","../../ecosystem/shared/duplicate-application/duplicate-application.component.ts","../../ecosystem/shared/duplicate-application/duplicate-application.component.html","../../ecosystem/shared/package-version-select/package-version-select.component.ts","../../ecosystem/shared/package-version-select/package-version-select.component.html","../../ecosystem/shared/upload-archive.component.ts","../../ecosystem/shared/upload-archive.component.html","../../ecosystem/shared/shared-ecosystem.module.ts","../../ecosystem/shared/c8y-ngx-components-ecosystem-shared.ts"],"sourcesContent":["import { ApplicationPlugin } from '@c8y/ngx-components';\n\nexport interface ApplicationState {\n label: string;\n class: string;\n tooltip: string;\n}\n\n/** Wizard types */\nexport enum EcosystemWizards {\n APPLICATION_UPLOAD = 'ecosystemApplicationUpload',\n MICROSERVICE_UPLOAD = 'ecosystemMicroserviceUpload',\n PACKAGE_UPLOAD = 'ecosystemPackageUpload',\n BLUEPRINT_DEPLOYMENT = 'ecosystemBlueprintDeployment',\n LICENSE_CONFIRM = 'ecosystemLicenseConfirm'\n}\n\nexport enum ERROR_TYPE {\n TYPE_VALIDATION = 'TYPE_VALIDATION',\n ALREADY_SUBSCRIBED = 'ALREADY_SUBSCRIBED',\n ALREADY_EXIST = 'ALREADY_EXIST',\n INTERNAL_ERROR = 'INTERNAL_ERROR',\n NO_MANIFEST_FILE = 'NO_MANIFEST_FILE',\n INVALID_PACKAGE = 'INVALID_PACKAGE',\n INVALID_APPLICATION = 'INVALID_APPLICATION',\n MICROSERVICE_NAME_TOO_LONG = 'MICROSERVICE_NAME_TOO_LONG',\n APPLICATION_CREATION_FAILED = 'APPLICATION_CREATION_FAILED',\n KEY_OR_CONTEXT_PATH_MISMATCH = 'KEY_OR_CONTEXT_PATH_MISMATCH',\n VERSION_NOT_FOUND = 'VERSION_NOT_FOUND'\n}\n\nexport type LicensedApplicationPlugin = Pick<\n ApplicationPlugin,\n 'type' | 'license' | 'name' | 'version' | 'contextPath'\n>;\n\nexport const PRODUCT_EXPERIENCE = {\n APPLICATIONS: {\n EVENTS: {\n AVAILABILITY: 'availability',\n APPLICATION_CARD: 'applicationCard',\n APPLICATION_PROPERTIES: 'applicationProperties',\n DEPLOY_APPLICATION: 'deployApplication',\n DUPLICATE_APPLICATION: 'duplicateApplication',\n INSTALLED_PLUGINS: 'installedPlugins',\n PACKAGE_PLUGINS: 'packagePlugins',\n PACKAGE_VERSIONS: 'packageVersions'\n },\n COMPONENTS: {\n APPLICATION_CARD: 'application-card',\n APPLICATION_PLUGINS: 'application-plugins',\n APPLICATION_PROPERTIES: 'application-properties',\n DEPLOY_APPLICATION: 'deploy-application',\n DUPLICATE_APPLICATION_PROPERTIES: 'duplicate-application-properties',\n PLUGIN_LIST: 'plugin-list',\n PACKAGE_VERSIONS: 'package-versions-list',\n UPDATE_PLUGIN_OF_APP: 'update-plugin-of-app'\n },\n ACTIONS: {\n AVAILABILITY_CHANGE: 'availabilityChange',\n CANCEL: 'cancel',\n CLONE: 'clone',\n CHANGE_PLUGIN_VERSION: 'changePluginVersion',\n DELETE: 'delete',\n DOWNLOAD: 'download',\n DEPLOY_APPLICATION: 'deployApplication',\n EDIT: 'edit',\n INSTALL_PLUGIN: 'installPlugin',\n INSTALL_PLUGINS: 'installPlugins',\n SELECT_VERSION: 'selectVersion',\n SET_AS_LATEST: 'setAsLatest',\n UPDATE_AVAILABLE: 'updateAvailable',\n UPLOAD: 'upload'\n },\n RESULTS: {\n DEPLOYED: 'deployed',\n DUPLICATED: 'duplicated',\n PLUGIN_INSTALLED: 'pluginInstalled',\n PLUGIN_REMOVED: 'pluginRemoved',\n PLUGIN_VERSION_CHANGED: 'pluginVersionChanged',\n SERVER_FAILURE: 'serverFailure',\n SUCCESS: 'success'\n }\n }\n};\n","import { ERROR_TYPE } from './ecosystem.model';\nimport { gettext, PackageType, PropertiesListItem } from '@c8y/ngx-components';\n\nexport const ERROR_MESSAGES = {\n [ERROR_TYPE.ALREADY_EXIST]: gettext(\n 'Could not deploy the application, as the application with the same name, context-path or key exist already.'\n ),\n [ERROR_TYPE.TYPE_VALIDATION]: gettext(\n 'Wrong file format. Expected a *.zip file with a valid manifest.'\n ),\n [ERROR_TYPE.ALREADY_SUBSCRIBED]: gettext(\n 'Could not subscribe to the microservice because another application with the same context path is already subscribed.'\n ),\n [ERROR_TYPE.NO_MANIFEST_FILE]: gettext('Could not find a manifest.'),\n [ERROR_TYPE.INVALID_PACKAGE]: gettext('You have not uploaded a valid package.'),\n [ERROR_TYPE.INVALID_APPLICATION]: gettext('You have not uploaded a valid application.'),\n [ERROR_TYPE.INTERNAL_ERROR]: gettext('An internal error occurred, try to upload again.'),\n [ERROR_TYPE.MICROSERVICE_NAME_TOO_LONG]: gettext(\n 'Microservice name \"{{ name }}\" must not be longer than {{ maxChars }} characters.'\n ),\n [ERROR_TYPE.APPLICATION_CREATION_FAILED]: gettext('Application creation failed.'),\n [ERROR_TYPE.KEY_OR_CONTEXT_PATH_MISMATCH]: gettext(\n 'The \"contextPath`KEEP_ORIGINAL`\" or \"key`KEEP_ORIGINAL`\" of the uploaded archive do not match with the existing application.'\n ),\n [ERROR_TYPE.VERSION_NOT_FOUND]: gettext('The selected version was not found on the server.')\n};\n\nexport const APP_STATE = {\n SUBSCRIBED: {\n label: gettext('Subscribed`application`'),\n class: 'label-primary',\n tooltip: gettext('Provided by parent tenant.')\n },\n CUSTOM: {\n label: gettext('Custom`application`'),\n class: 'label-info',\n tooltip: gettext('Manually uploaded to the platform.')\n },\n EXTERNAL: {\n label: gettext('External`application`'),\n class: 'label-warning',\n tooltip: gettext('Application hosted outside of the platform.')\n },\n UNPACKED: {\n label: gettext('Unpacked`application`'),\n class: 'label-success',\n tooltip: gettext('Deployed from a package available under \"Packages\".')\n },\n PACKAGE_BLUEPRINT: {\n label: gettext('Blueprint'),\n class: 'label-success',\n tooltip: gettext('Contains an application and may include plugins.')\n },\n PACKAGE_PLUGIN: {\n label: gettext('Plugins'),\n class: 'label-info',\n tooltip: gettext('Contains only plugins.')\n },\n PACKAGE_UNKNOWN: {\n label: gettext('Unknown`package-type`'),\n class: 'label-info',\n tooltip: gettext('Package contents could not be determined.')\n }\n};\n\nexport const PACKAGE_TYPE_LABELS = {\n [PackageType.COMMUNITY]: {\n label: gettext('COMMUNITY`Package created by the developer community.`'),\n tooltip: gettext('Package created by the developer community.')\n },\n [PackageType.OFFICIAL]: {\n label: gettext('OFFICIAL`Package maintained by Software AG.`'),\n tooltip: gettext('Package maintained by Software AG.')\n },\n [PackageType.UNKNOWN]: {\n label: gettext('CUSTOM`Package maintained by an unknown source.`'),\n tooltip: gettext('Package maintainer unknown.')\n }\n};\n\nexport const packageProperties: PropertiesListItem[] = [\n {\n label: gettext('Latest version'),\n key: 'version'\n },\n {\n label: gettext('Author'),\n key: 'author'\n },\n {\n label: gettext('Keywords'),\n key: 'keywords'\n },\n {\n label: gettext('Source'),\n key: 'repository',\n transform: (repository: any) => (repository?.url ? repository.url : repository),\n type: 'link',\n action: (e, link: string) => window.open(link, '_blank', 'noopener,noreferrer')\n },\n {\n label: gettext('Homepage'),\n key: 'homepage',\n type: 'link',\n action: (e, link: string) => window.open(link, '_blank', 'noopener,noreferrer')\n },\n {\n label: gettext('Required platform version'),\n key: 'requiredPlatformVersion'\n },\n {\n label: gettext('License'),\n key: 'license'\n }\n];\n","import { ERROR_MESSAGES } from './ecosystem.constants';\nimport { ERROR_TYPE } from './ecosystem.model';\n\nexport class EcosystemError extends Error {\n constructor(public type: ERROR_TYPE) {\n super(ERROR_MESSAGES[type]);\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n ApplicationAvailability,\n ApplicationService,\n ApplicationType,\n IApplication,\n IApplicationBinary,\n IApplicationVersion,\n IApplicationVersionDeleteParams,\n ICurrentTenant,\n IdReference,\n IFetchResponse,\n IIdentified,\n IManagedObject,\n IManifest,\n InventoryService,\n IResult,\n IResultList,\n IUploadParamsOverride,\n TenantService\n} from '@c8y/client';\nimport {\n AlertService,\n AppStateService,\n gettext,\n HumanizeAppNamePipe,\n ModalService,\n PackageType,\n Status,\n WizardModalService,\n ZipService\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { saveAs } from 'file-saver';\nimport { cloneDeep, get, groupBy, kebabCase, pick, uniqBy, omit, isUndefined } from 'lodash-es';\nimport { BehaviorSubject, Observable, defer } from 'rxjs';\nimport { debounceTime, take, map, shareReplay } from 'rxjs/operators';\nimport { gt, coerce } from 'semver';\nimport { EcosystemError } from './ecosystem-error';\nimport { APP_STATE, ERROR_MESSAGES } from './ecosystem.constants';\nimport {\n ApplicationState,\n EcosystemWizards,\n ERROR_TYPE,\n LicensedApplicationPlugin\n} from './ecosystem.model';\n\nconst CUMULOCITY_JSON = 'cumulocity.json';\nconst MICROSERVICE_NAME_MAX_LENGTH = 23;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EcosystemService {\n appDeleted = new EventEmitter<IApplication>();\n progress: BehaviorSubject<number> = new BehaviorSubject<number>(null);\n private appsGroupedByContextPath$: Observable<Record<string, IApplication[]>>;\n private xhr: XMLHttpRequest;\n\n constructor(\n private modal: ModalService,\n private alertService: AlertService,\n private humanizeAppName: HumanizeAppNamePipe,\n private translateService: TranslateService,\n private applicationService: ApplicationService,\n private appStateService: AppStateService,\n private zipService: ZipService,\n private tenantService: TenantService,\n private inventoryService: InventoryService,\n private wizardModalService: WizardModalService\n ) {\n this.appsGroupedByContextPath$ = defer(() => this.getWebApplications()).pipe(\n map(webApps => groupBy(webApps, 'contextPath')),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n }\n\n getUniqueAppConfig(srcApp: IApplication, existingApps: IApplication[]): IApplication {\n let app: IApplication = {\n name: srcApp.name,\n key: srcApp.key,\n contextPath: srcApp.contextPath\n };\n for (let retryNo = 0; retryNo < 9; ) {\n if (this.checkIfAppNameKeyPathExists(existingApps, app, retryNo)) {\n retryNo++;\n app = {\n name: [srcApp.name, retryNo].join('-'),\n key: [srcApp.key, retryNo].join('-'),\n contextPath: [srcApp.contextPath, retryNo].join('-')\n };\n } else {\n return app;\n }\n }\n return app;\n }\n\n /**\n * Community plugins need to verify the license agreement. If a package is a community\n * package, the license is shown.\n *\n * @param pluginsToInstall The list of plugins to install.\n * @returns true if the installation can continue.\n */\n async verifyLicenses(pluginsToInstall: Array<LicensedApplicationPlugin>) {\n let _resolve;\n const result: Promise<boolean> = new Promise(resolve => {\n _resolve = resolve;\n });\n\n pluginsToInstall = pluginsToInstall.filter(plugin => plugin.type !== PackageType.CUSTOM);\n\n if (pluginsToInstall.length === 0) {\n return Promise.resolve(true);\n }\n\n const initialState: any = {\n id: EcosystemWizards.LICENSE_CONFIRM,\n componentInitialState: {\n pluginsToInstall\n }\n };\n const modalOptions = { initialState };\n const wizard = this.wizardModalService.show(modalOptions);\n\n wizard.content.onClose.subscribe(confirmed => {\n _resolve(confirmed);\n });\n\n return result;\n }\n\n /**\n * @description\n * Compares currently deployed application version with application version tagged as \"latest\"\n *\n * @param {string} currentApplicationVersion Deployed application version\n * @param {object} latestApp Latest application version object\n *\n * @returns {boolean} Returns true if latest version is greater than current, otherwise false\n */\n shouldUpgradePackage(currentApplicationVersion: string, latestApp: IApplicationVersion): boolean {\n const latestApplicationVersion = latestApp?.version;\n\n if (!latestApplicationVersion || !currentApplicationVersion) {\n return false;\n }\n\n return gt(coerce(latestApplicationVersion), coerce(currentApplicationVersion));\n }\n\n /**\n * @description\n * Gets an object that contains searched tag\n *\n * @param {array} applicationVersions Array with all available versions\n * @param {string} tagName Searched tag\n *\n * @returns {object} Returns an object with searched tag\n */\n getApplicationVersionObjectByTag(\n applicationVersions: IApplicationVersion[],\n tagName: string\n ): IApplicationVersion {\n return applicationVersions?.find(element => element.tags.includes(tagName));\n }\n\n async getApplication(appId: IdReference): Promise<IApplication> {\n return (await this.applicationService.detail(appId)).data;\n }\n\n getApplications(customFilter: any = {}): Promise<IResultList<IApplication>> {\n const filter: object = {\n pageSize: 2000,\n withTotalPages: true\n };\n Object.assign(filter, customFilter);\n const currentTenant = this.appStateService.currentTenant.value;\n return this.applicationService.listByTenant(currentTenant.name, filter);\n }\n\n async getMicroservices(): Promise<IApplication[]> {\n const apps = (await this.getApplications()).data;\n const microservices = apps.filter(app => this.isMicroservice(app));\n return microservices.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getWebApplications(customFilter: any = {}): Promise<IApplication[]> {\n const apps = (await this.getApplications(customFilter)).data;\n const webApps = apps.filter(app => this.isApplication(app));\n return webApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getFeatureApplications(customFilter: any = {}): Promise<IApplication[]> {\n const apps = (await this.getApplications(customFilter)).data;\n const webApps = apps.filter(app => this.isFeature(app));\n return webApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getPackageApplications(customFilter: any = {}): Promise<IApplication[]> {\n const filterCallback = app => this.isPackage(app);\n return this.getApplicationsFiltered(customFilter, filterCallback);\n }\n\n async getHostedAndPackageApplications(customFilter: any = {}): Promise<IApplication[]> {\n const filterCallback = app => this.isPackage(app) || this.isApplication(app);\n return this.getApplicationsFiltered(customFilter, filterCallback);\n }\n\n async getApplicationsFiltered(\n customFilter: any = {},\n filterCallback = (app: IApplication) => !!app\n ): Promise<IApplication[]> {\n const filter = Object.assign({}, customFilter);\n const sharedFilter = Object.assign(\n {\n availability: ApplicationAvailability.SHARED,\n type: 'HOSTED',\n pageSize: 2000\n },\n customFilter\n );\n const [{ data: apps }, { data: shared }] = await Promise.all([\n this.getApplications(filter),\n this.applicationService.list(sharedFilter)\n ]);\n const webApps = [...apps, ...shared].filter(filterCallback);\n // an app could be subscribed to a tenant, but also have it's availability set to SHARED, in that case it would occur twice.\n const uniqWebApps = uniqBy(webApps, (app: IApplication) => app.id);\n return uniqWebApps.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async isMicroserviceHostingAllowed(): Promise<boolean> {\n const { data: apps } = await this.applicationService.listByName('feature-microservice-hosting');\n return !!apps.filter(app => app.owner?.tenant?.id === 'management').length;\n }\n\n canOpenAppInBrowser(app: IApplication): boolean {\n const isNotAFeature = !this.isFeature(app);\n const hasProperType = [\n ApplicationType.HOSTED,\n ApplicationType.EXTERNAL,\n ApplicationType.REPOSITORY\n ].includes(app.type);\n const isNotPackage = !this.isPackage(app);\n return isNotAFeature && hasProperType && isNotPackage;\n }\n\n openApp(app) {\n window.open(this.applicationService.getHref(app), '_blank', 'noopener,noreferrer');\n }\n\n async canDeleteApp(app: IApplication): Promise<boolean> {\n return (\n this.isOwner(app) && (!this.isCurrentApp(app) || (await this.hasSubscribedAppParent(app)))\n );\n }\n\n isOwner(app: IApplication): boolean {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n const appOwner = get(app, 'owner.tenant.id');\n return currentTenant.name === appOwner;\n }\n\n isFeature(app: IApplication): boolean {\n return !!app.name.match(/feature-/);\n }\n\n isMicroservice(app: IApplication): boolean {\n return app.type === 'MICROSERVICE';\n }\n\n isExternal(app: IApplication): boolean {\n return app.type === 'EXTERNAL';\n }\n\n isPackage(app: IApplication): boolean {\n return app.manifest?.isPackage === true;\n }\n\n isPlugin(app: IApplication): boolean {\n return app.manifest?.package === 'plugin';\n }\n\n cancelAppCreation(app: IApplication): void {\n if (this.xhr) {\n this.xhr.abort();\n }\n if (app) {\n this.applicationService.delete(app);\n }\n }\n\n updateUploadProgress(event): void {\n if (event.lengthComputable) {\n const currentProgress = this.progress.value;\n this.progress.next(currentProgress + (event.loaded / event.total) * (95 - currentProgress));\n }\n }\n\n setAppActiveVersion(app: IApplication, activeVersionId: string): Promise<IApplication> {\n return this.applicationService.update({ id: app.id, activeVersionId });\n }\n\n setPackageVersionTag(app: IApplication, version: string, tags: string[]) {\n return this.applicationService.setPackageVersionTag(app, version, tags);\n }\n\n deletePackageVersion(app: IApplication, params: IApplicationVersionDeleteParams) {\n return this.applicationService.deleteVersionPackage(app, params);\n }\n\n getHumanizedAppName(app: IApplication): Promise<string> {\n return this.humanizeAppName.transform(app.name).pipe(debounceTime(250), take(1)).toPromise();\n }\n\n createConfig(app: IApplication, formGroupValue: FormGroup): Partial<IApplication> {\n const { id, type, availability } = app;\n let config = pick(formGroupValue, ['name', 'key', 'contextPath']);\n config = {\n ...config,\n isSetup: true,\n id,\n type,\n availability\n };\n return config;\n }\n\n async listArchives(appId: string | number | IApplication): Promise<IApplicationBinary[]> {\n const filter = {\n pageSize: 100\n };\n return (await this.applicationService.binary(appId).list(filter)).data;\n }\n\n async deleteArchive(archive: IApplicationBinary, app: IApplication): Promise<void> {\n const humanizedArchiveName = await this.getHumanizedAppName(archive);\n try {\n await this.modal.confirm(\n gettext('Delete archive'),\n this.translateService.instant(\n gettext(\n `You are about to delete archive \"{{ humanizedArchiveName }}\". Do you want to proceed?`\n ),\n { humanizedArchiveName }\n ),\n Status.DANGER,\n { ok: gettext('Delete'), cancel: gettext('Cancel') }\n );\n await this.applicationService.binary(app).delete(archive.id);\n this.alertService.success(gettext('Archive deleted.'));\n } catch (ex) {\n if (ex) {\n this.alertService.danger(get(ex, 'data.message'), ex.data);\n }\n throw new Error('Cancelled');\n }\n }\n\n async getArchiveManagedObject(binaryId: string): Promise<IManagedObject> {\n return (await this.inventoryService.detail(binaryId)).data;\n }\n\n async downloadArchive(\n app: IApplication,\n archive: Pick<IApplicationBinary, 'name' | 'id'>\n ): Promise<void> {\n try {\n const binary = await this.getBinary(app, archive);\n const fileBinary = new Blob([binary], { type: 'application/x-zip-compressed' });\n saveAs(fileBinary, archive.name);\n } catch (e) {\n // empty\n }\n }\n\n async updateApp(app: IApplication, deleteOnFailure = false): Promise<IResult<IApplication>> {\n try {\n return await this.applicationService.update(app);\n } catch (ex) {\n this.alertError(ex);\n if (deleteOnFailure) {\n await this.applicationService.delete(app.id);\n throw new EcosystemError(ERROR_TYPE.APPLICATION_CREATION_FAILED);\n }\n }\n }\n\n async deleteApp(app: IApplication, silent = false): Promise<void> {\n const humanizedAppName = await this.getHumanizedAppName(app);\n if (!silent) {\n await this.modal.confirm(\n gettext('Delete application'),\n this.translateService.instant(\n gettext(\n `You are about to delete application \"{{ humanizedAppName }}\". Do you want to proceed?`\n ),\n { humanizedAppName }\n ),\n Status.DANGER,\n { ok: gettext('Delete'), cancel: gettext('Cancel') }\n );\n }\n await this.applicationService.delete(app.id);\n if (!silent) {\n this.alertService.success(gettext('Application deleted.'));\n }\n this.appDeleted.emit(app);\n }\n\n async checkIfSubscribed(app: IApplication): Promise<boolean> {\n const currentTenant = await this.tenantService.current();\n const subscribedApps = currentTenant.data.applications.references;\n return subscribedApps.some(application => application.application.id === app.id);\n }\n\n async subscribeApp(app: IApplication): Promise<void> {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n try {\n await this.tenantService.subscribeApplication(currentTenant, app);\n this.alertService.success(gettext('Successfully subscribed to application.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async unsubscribeApp(app: IApplication): Promise<void> {\n const currentTenant: ICurrentTenant = this.appStateService.currentTenant.value;\n try {\n await this.tenantService.unsubscribeApplication(currentTenant, app);\n this.alertService.success(gettext('Successfully unsubscribed from application.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async isValidAppType(archive: File, appType: ApplicationType): Promise<boolean> {\n try {\n const currentType = await this.getAppType(archive);\n if (currentType !== appType) {\n throw new EcosystemError(ERROR_TYPE.TYPE_VALIDATION);\n } else {\n this.progress.next(this.progress.value + 10);\n return true;\n }\n } catch (ex) {\n throw new EcosystemError(ERROR_TYPE.TYPE_VALIDATION);\n }\n }\n\n async uploadArchiveToApp(\n archive: File,\n app: IApplication,\n isNewVersion = false\n ): Promise<IApplication> {\n let uploadOverrides: IUploadParamsOverride;\n if (isNewVersion) {\n uploadOverrides = await this.getUploadOverrides(archive, app);\n }\n const binaryService = this.applicationService.binary(app);\n this.xhr = binaryService.uploadWithProgressXhr(\n archive,\n this.updateUploadProgress.bind(this),\n '',\n uploadOverrides\n );\n\n const binaryMo = await binaryService.getXMLHttpResponse(this.xhr);\n // TODO commented it due to: https://cumulocity.atlassian.net/browse/MTM-48553\n // Add it back when BE fixes issues with activeVersion.\n // if (isNewVersion) {\n // return await this.getApplication(app);\n // }\n return (await this.setAppActiveVersion(app, (binaryMo.binaryId || binaryMo.id) as string)).data;\n }\n\n async validateArchiveToAppCompatibility(archive: File, app: IApplication): Promise<void> {\n const appType = await this.getAppType(archive);\n if (appType !== app.type) {\n throw new EcosystemError(ERROR_TYPE.INVALID_APPLICATION);\n } else {\n this.progress.next(this.progress.value + 10);\n }\n if (this.isMicroservice(app)) {\n return;\n }\n const manifest = await this.getCumulocityJson(archive);\n // A user can upload an app without a Cumulocity JSON file (e.g. a react app).\n // This is allowed and should not trigger a validation error.\n if (!manifest) {\n return;\n }\n await this.validatePackageKeyAndContextPath(manifest, app);\n }\n\n async getCumulocityJson(archive: File): Promise<IManifest | null> {\n try {\n const c8yManifest = await this.getCumulocityJson$(archive).toPromise();\n return c8yManifest;\n } catch (ex) {\n return null;\n }\n }\n\n async createAppForArchive(archive, isPackageTypeArchive = false): Promise<IApplication> {\n let isPackage = false;\n const appType = await this.getAppType(archive);\n let appModel: any = {};\n const supportedAppTypes = [ApplicationType.HOSTED, ApplicationType.MICROSERVICE];\n\n if (supportedAppTypes.includes(appType)) {\n try {\n appModel = await this.getCumulocityJson$(archive).toPromise();\n isPackage = appModel.isPackage;\n } catch (e) {\n // do nothing, we allow having HOSTED applications without the manifest file\n }\n }\n const name = this.getBaseNameFromArchiveOrAppModel(archive, appType, appModel);\n const clearedName = this.removeForbiddenCharacters(name);\n const key = this.getAppKey(appModel, clearedName);\n const contextPath = this.getContextPath(appModel, name);\n\n const appToSave = {\n resourcesUrl: '/',\n type: appType,\n name,\n key,\n contextPath\n };\n\n if (isPackageTypeArchive && !isPackage) {\n throw new EcosystemError(ERROR_TYPE.INVALID_PACKAGE);\n } else if (!isPackageTypeArchive && isPackage) {\n throw new EcosystemError(ERROR_TYPE.INVALID_APPLICATION);\n } else if (this.isNameLengthExceeded(name, appType)) {\n const error = new Error();\n error.name = ERROR_TYPE.MICROSERVICE_NAME_TOO_LONG;\n error.message = this.translateService.instant(ERROR_MESSAGES[error.name], {\n name,\n maxChars: MICROSERVICE_NAME_MAX_LENGTH\n });\n throw error;\n }\n return (\n await this.applicationService.create({\n ...appToSave,\n manifest: {\n isPackage,\n ...(appModel?.package && { package: appModel.package })\n } as unknown as IManifest\n })\n ).data;\n }\n\n async reactivateArchive(app: IApplication): Promise<void> {\n try {\n await this.applicationService.reactivateArchive(app.id);\n this.alertService.success(gettext('Application reactivated.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async removeOldestArchive(app: IApplication, archives: IApplicationBinary[]): Promise<void> {\n try {\n await this.modal.confirm(\n gettext('Delete oldest archive and continue'),\n gettext(\n 'Up to 6 archives can be saved in the platform. If you upload a new archive, the oldest archive that is not active will be deleted. Do you want to proceed?'\n ),\n Status.INFO,\n { ok: gettext('Delete and continue') }\n );\n const archiveToDelete = archives[archives.length - 2];\n await this.applicationService.binary(app).delete(archiveToDelete.id);\n this.alertService.success(gettext('Archive deleted.'));\n } catch (ex) {\n this.alertError(ex);\n }\n }\n\n async deployApp(selectedPackage: IApplication, formGroupValue, model): Promise<IApplication> {\n // Create new app config\n const config = this.createConfig(selectedPackage, formGroupValue);\n const requestedVersion = model.selected.version;\n let cleanManifest;\n try {\n const manifest = await this.applicationService.getAppManifest(\n selectedPackage,\n requestedVersion\n );\n cleanManifest = omit(manifest, ['name', 'contextPath', 'key']);\n } catch (ex) {\n throw new EcosystemError(ERROR_TYPE.VERSION_NOT_FOUND);\n }\n\n config.isSetup = true;\n config.manifest = cleanManifest;\n config.availability = ApplicationAvailability.PRIVATE;\n config.manifest.isPackage = false;\n config.manifest.source = selectedPackage.id;\n config.manifest.package = 'blueprint';\n\n // because of a issue with SHARED availability we always should check again\n // if the app not exist already\n const allExistingApps = await this.getHostedAndPackageApplications();\n const doesAppKeyOrContextPathExist = this.checkIfAppNameKeyPathExists(allExistingApps, config);\n if (doesAppKeyOrContextPathExist) {\n throw new EcosystemError(ERROR_TYPE.ALREADY_EXIST);\n }\n\n // Create new app\n const newApp = (await this.applicationService.create(config)).data;\n try {\n // Binary upload can fail if SHARED package\n // in this case, catch error and fall back to\n // clone API.\n await this.uploadBinaryFromOtherPackage(\n selectedPackage,\n newApp,\n model.selected.binaryId,\n requestedVersion\n );\n } catch (error) {\n if (error?.res?.status === 404) {\n await this.fallbackToClone(newApp, selectedPackage, requestedVersion);\n }\n }\n return newApp;\n }\n\n async fallbackToClone(\n application: IApplication,\n selectedPackage: IApplication,\n requestedVersion?: string\n ) {\n let wasSuccess = true;\n let clonedPkg;\n try {\n clonedPkg = (await this.applicationService.clone(selectedPackage, requestedVersion)).data;\n await this.uploadBinaryFromOtherPackage(\n selectedPackage,\n application,\n clonedPkg.activeVersionId,\n requestedVersion,\n clonedPkg\n );\n } catch (error) {\n this.alertError(error);\n wasSuccess = false;\n } finally {\n await this.deleteApp(clonedPkg, true);\n }\n return wasSuccess;\n }\n\n async uploadBinaryFromOtherPackage(\n selectedPackage: IApplication,\n applicationToUploadBinaryTo: IApplication,\n binaryId: string,\n requestedVersion?: string,\n useBinariesFrom?: IApplication\n ) {\n const { data: binaryDetails } = await this.inventoryService.detail(binaryId);\n\n // Get binary from specific package version\n const binary = await this.getBinary(useBinariesFrom || selectedPackage, {\n id: binaryId\n });\n // Create zip\n const fileBinary = new Blob([binary], { type: binaryDetails.contentType });\n const file = new File([fileBinary], binaryDetails.name, {\n type: binaryDetails.contentType\n });\n\n // Upload binary to new app\n await this.uploadArchiveToApp(file, applicationToUploadBinaryTo);\n\n // update the app manifest\n await this.updateAppManifest(applicationToUploadBinaryTo, selectedPackage, requestedVersion);\n }\n\n getAppState(app: IApplication): ApplicationState {\n if (!this.isOwner(app)) {\n return APP_STATE.SUBSCRIBED;\n } else if (this.isUnpacked(app)) {\n return APP_STATE.UNPACKED;\n } else if (app.type === ApplicationType.EXTERNAL) {\n return APP_STATE.EXTERNAL;\n }\n return APP_STATE.CUSTOM;\n }\n\n getPackageContentState(app: IApplication): ApplicationState {\n if (!this.isPackage(app)) {\n return;\n }\n if (this.isPackageBlueprint(app)) {\n return APP_STATE.PACKAGE_BLUEPRINT;\n }\n if (this.isPluginsPackage(app)) {\n return APP_STATE.PACKAGE_PLUGIN;\n }\n return APP_STATE.PACKAGE_UNKNOWN;\n }\n\n isPackageBlueprint(app: IApplication): boolean {\n return this.isPackage(app) && app.manifest.package === 'blueprint';\n }\n\n isPluginsPackage(app: IApplication): boolean {\n return this.isPackage(app) && app.manifest.package === 'plugin';\n }\n\n isUnpacked(app: IApplication): boolean {\n return !!app.manifest?.source;\n }\n\n hasExports(app: IApplication): boolean {\n return !!app.manifest?.exports?.length;\n }\n\n isApplication(app: IApplication): boolean {\n return (\n app.type !== ApplicationType.MICROSERVICE && !this.isFeature(app) && !this.isPackage(app)\n );\n }\n\n isCustomMicroservice(app: IApplication) {\n return this.isOwner(app) && app.type === ApplicationType.MICROSERVICE;\n }\n\n async getBinary(\n app: IApplication,\n archive: IApplicationBinary | IIdentified\n ): Promise<ArrayBuffer> {\n let binary;\n try {\n const res = await this.applicationService.binary(app).downloadArchive(archive.id);\n binary = await res.arrayBuffer();\n } catch (ex) {\n const msg = gettext('Could not get the binary.');\n this.alertService.danger(msg);\n }\n return binary;\n }\n\n async isOverwrittenByCustomApp(app: IApplication): Promise<boolean> {\n return !this.isOwner(app) && (await this.hasSubscribedAppParent(app));\n }\n\n async hasSubscribedAppParent(app: IApplication): Promise<boolean> {\n const appsGroupedByContextPath = await this.appsGroupedByContextPath$.pipe(take(1)).toPromise();\n return app.contextPath && appsGroupedByContextPath[app.contextPath]?.length === 2;\n }\n\n /**\n * @deprecated\n */\n setAvailabilityToPrivateIfNotSetAlready(app: IApplication): IApplication {\n app.availability = ApplicationAvailability.PRIVATE;\n return app;\n }\n\n /**\n * Shows an error dialog.\n * @param error Either a server error or an internal [[EcosystemError]].\n */\n alertError(error: Error | EcosystemError) {\n if (error instanceof EcosystemError) {\n this.alertService.danger(error.message);\n } else {\n this.alertService.addServerFailure(error);\n }\n }\n\n async validatePackageKeyAndContextPath(manifest: IManifest, app: IApplication) {\n const contextPath = get(manifest, 'contextPath');\n const appKey = get(manifest, 'key');\n if (contextPath !== app.contextPath || appKey !== app.key) {\n throw new EcosystemError(ERROR_TYPE.KEY_OR_CONTEXT_PATH_MISMATCH);\n }\n }\n\n filterContainString(name: string, filterTerm: string): boolean {\n const term = filterTerm.toLowerCase().trim();\n return name && name.toLowerCase().indexOf(term) > -1;\n }\n\n async updateAppManifest(\n application: IApplication,\n selectedPackage: IApplication,\n requestedVersion?: string\n ): Promise<{ res: IFetchResponse; data: any }> {\n const { id } = application;\n const cleanedApp = this.removeAppProperties(application);\n let manifest: Partial<IManifest> = selectedPackage.manifest || {};\n if (requestedVersion) {\n try {\n const versionedAppManifest = await this.applicationService.getAppManifest(\n selectedPackage,\n requestedVersion\n );\n manifest = versionedAppManifest;\n } catch (ex) {\n throw new EcosystemError(ERROR_TYPE.VERSION_NOT_FOUND);\n }\n }\n\n cleanedApp.manifest = manifest;\n cleanedApp.manifest.isPackage = false;\n cleanedApp.manifest.source = selectedPackage.id;\n\n return await this.applicationService\n .binary(id)\n .updateFiles([{ path: CUMULOCITY_JSON, contents: JSON.stringify(cleanedApp) as any }]);\n }\n\n private checkIfAppNameKeyPathExists(\n existingApps: IApplication[],\n app: IApplication,\n retryNo?: number\n ): IApplication {\n if (isUndefined(retryNo)) {\n return existingApps.find(\n existingApp =>\n existingApp.name === app.name ||\n existingApp.key === app.key ||\n existingApp.contextPath === app.contextPath\n );\n }\n return existingApps.find(\n existingApp =>\n existingApp.name === app.name ||\n existingApp.key === app.key ||\n existingApp.contextPath === app.contextPath ||\n existingApp.name === [app.name, retryNo].join('-') ||\n existingApp.key === [app.key, retryNo].join('-') ||\n existingApp.contextPath === [app.contextPath, retryNo].join('-')\n );\n }\n\n private getAppKey(appModel: IApplication, name: string): string {\n let key = appModel?.key;\n if (!key) {\n key = `${kebabCase(name)}-key`;\n }\n return key;\n }\n\n private getContextPath(appModel: IApplication, name: string): string {\n return appModel?.contextPath || name.toLowerCase();\n }\n\n private removeForbiddenCharacters(str: string): string {\n return str.replace(/[^a-zA-Z0-9-_]/g, '');\n }\n\n private isCurrentApp(app: IApplication): boolean {\n const currentApp = this.appStateService.state.app;\n return currentApp.contextPath === app.contextPath;\n }\n\n private getCumulocityJson$(archive: File): Observable<any> {\n return this.zipService.getJsonData(archive, {\n filename: CUMULOCITY_JSON\n });\n }\n\n private getAppType(archive: File): Promise<ApplicationType> {\n return this.getCumulocityJson$(archive)\n .toPromise()\n .then(\n data =>\n get(data, 'type') ||\n (get(data, 'apiVersion') ? ApplicationType.MICROSERVICE : ApplicationType.HOSTED)\n )\n .catch(() => ApplicationType.HOSTED);\n }\n\n private getBaseNameFromArchiveOrAppModel(\n archive: any,\n appType: ApplicationType,\n appModel?: IApplication\n ): string {\n let baseName = appModel?.name || archive.name.replace(/\\.zip$/i, '');\n if (appType === 'MICROSERVICE') {\n baseName = this.removeVersionFromName(baseName);\n }\n return baseName;\n }\n\n private removeAppProperties(app: IApplication): IApplication {\n const tempApp = cloneDeep(app);\n const propertiesToRemove = ['id', 'owner', 'activeVersionId', 'self', 'type'];\n\n propertiesToRemove.forEach(prop => delete tempApp[prop]);\n return tempApp;\n }\n\n private async getUploadOverrides(\n archive: File,\n app: IApplication\n ): Promise<IUploadParamsOverride> {\n const { version } = await this.getCumulocityJson$(archive).toPromise();\n const isInitialPackage = app.applicationVersions?.length === 0;\n return {\n listUrl: 'versions',\n headers: {\n Accept: 'application/vnd.com.nsn.cumulocity.applicationVersion+json;charset=UTF-8;ver=0.9'\n },\n bodyFileProperty: 'applicationBinary',\n requestBody: {\n applicationVersion: { version, ...(isInitialPackage && { tags: ['latest'] }) }\n }\n };\n }\n\n private removeVersionFromName(name: string) {\n const versionRegExp = /-\\d+\\.\\d+\\.\\d+(\\.\\d+)?(-\\d+)?(.*)$/;\n return name.replace(versionRegExp, '');\n }\n\n private isNameLengthExceeded(name, appType) {\n return name.length > MICROSERVICE_NAME_MAX_LENGTH && appType === ApplicationType.MICROSERVICE;\n }\n}\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport { AlertService, DropAreaComponent, WizardComponent } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\nimport { ERROR_MESSAGES } from './ecosystem.constants';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'c8y-add-application',\n templateUrl: './add-application.component.html'\n})\nexport class AddApplicationComponent {\n @Input() headerText: string;\n @Input() headerIcon: string;\n @Input() successText: string;\n @Input() createApplicationHandler: any;\n @Input() uploadApplicationHandler: any;\n @Input() canGoBack = false;\n\n @ViewChild(DropAreaComponent) dropAreaComponent;\n\n isLoading: boolean;\n isAppCreated: boolean;\n createdApp: IApplication;\n canOpenInBrowser = false;\n errorMessage: string;\n private uploadCanceled = false;\n\n constructor(\n private ecosystemService: EcosystemService,\n private alertService: AlertService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent,\n private translateService: TranslateService\n ) {}\n\n get progress(): BehaviorSubject<number> {\n return this.ecosystemService.progress;\n }\n\n onFileDroppedEvent(event) {\n if (event && event.length > 0) {\n const file = event[0].file;\n this.onFile(file);\n }\n }\n\n async onFile(file: File) {\n this.isLoading = true;\n this.errorMessage = null;\n this.progress.next(0);\n\n try {\n this.createdApp = await this.createApplicationHandler(file);\n await this.uploadApplicationHandler(file, this.createdApp);\n this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.createdApp);\n this.isAppCreated = true;\n } catch (ex) {\n this.ecosystemService.cancelAppCreation(this.createdApp);\n this.createdApp = null;\n this.dropAreaComponent.onDelete();\n // prepare translation of static message if it exists\n const staticErrorMessage =\n ERROR_MESSAGES[ex.message] && this.translateService.instant(ERROR_MESSAGES[ex.message]);\n // if there is no static message, use dynamic one from the exception\n this.errorMessage = staticErrorMessage ?? ex.message;\n if (!this.errorMessage && !this.uploadCanceled) {\n this.alertService.addServerFailure(ex);\n }\n }\n this.progress.next(100);\n this.isLoading = false;\n }\n\n getHref(app: IApplication): string {\n return this.applicationService.getHref(app);\n }\n\n cancel() {\n this.cancelFileUpload();\n this.wizardComponent.close();\n }\n\n done() {\n this.wizardComponent.close();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n\n private cancelFileUpload() {\n this.uploadCanceled = true;\n this.ecosystemService.cancelAppCreation(this.createdApp);\n this.createdApp = null;\n }\n}\n","<c8y-wizard-header>\n <i [c8yIcon]=\"headerIcon\"></i>\n <h4 id=\"modal-title\">{{ headerText | translate }}</h4>\n</c8y-wizard-header>\n\n<c8y-wizard-body>\n <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-component\">\n {{ 'Upload a *.zip file' | translate }}\n </p>\n <c8y-form-group\n *ngIf=\"!isAppCreated; else appCreated\"\n [hasError]=\"!!errorMessage\"\n class=\"m-t-16 m-l-auto m-r-auto\"\n style=\"max-width: 285px\"\n id=\"modal-body\"\n >\n <c8y-drop-area\n (dropped)=\"onFileDroppedEvent($event)\"\n [accept]=\"'.zip'\"\n [loading]=\"isLoading\"\n [maxAllowedFiles]=\"1\"\n [progress]=\"progress | async\"\n class=\"drop-area\"\n ></c8y-drop-area>\n <c8y-messages>\n <c8y-message *ngIf=\"errorMessage\">\n {{ errorMessage | translate }}\n </c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <ng-template #appCreated>\n <div class=\"d-flex a-i-center j-c-center\" style=\"min-height: 285px\">\n <c8y-operation-result\n text=\"{{ successText | translate }}\"\n [vertical]=\"true\"\n [size]=\"84\"\n class=\"lead\"\n type=\"success\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n</c8y-wizard-body>\n\n<c8y-wizard-footer>\n <button\n (click)=\"back()\"\n *ngIf=\"!isAppCreated && canGoBack\"\n class=\"btn btn-default\"\n title=\"{{ 'Back' | translate }}\"\n translate\n type=\"button\"\n >\n Back\n </button>\n <button\n (click)=\"cancel()\"\n *ngIf=\"!isAppCreated\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n translate\n type=\"button\"\n >\n Cancel\n </button>\n <button\n (click)=\"done()\"\n *ngIf=\"isAppCreated\"\n class=\"btn btn-default\"\n title=\"{{ 'Done' | translate }}\"\n translate\n type=\"button\"\n >\n Done\n </button>\n <a\n (click)=\"$event.stopPropagation()\"\n *ngIf=\"isAppCreated && canOpenInBrowser\"\n [href]=\"getHref(createdApp)\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n >\n <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n {{ 'Open' | translate }}\n </a>\n</c8y-wizard-footer>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PackageType } from '@c8y/ngx-components';\nimport { PACKAGE_TYPE_LABELS } from './ecosystem.constants';\n\n@Pipe({ name: 'translatePackageLabel' })\nexport class TranslatePackageLabelPipe implements PipeTransform {\n constructor(private translate: TranslateService) {}\n\n transform(rawPackageLabel: PackageType.OFFICIAL | PackageType.COMMUNITY | string): string {\n const isOneOfTheKnownOnes = !!PACKAGE_TYPE_LABELS[rawPackageLabel];\n if (isOneOfTheKnownOnes) {\n return this.translate.instant(PACKAGE_TYPE_LABELS[rawPackageLabel].label);\n }\n return rawPackageLabel;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ApplicationService, IApplication, IApplicationVersion } from '@c8y/client';\nimport {\n AlertService,\n GainsightService,\n gettext,\n PackageType,\n PluginsService,\n Wizard,\n WizardComponent,\n WizardConfig,\n WizardModalService\n} from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\nimport { ApplicationState, PRODUCT_EXPERIENCE } from './ecosystem.model';\nimport { DuplicateApplicationComponent } from './duplicate-application/duplicate-application.component';\nimport { APP_STATE, PACKAGE_TYPE_LABELS } from './ecosystem.constants';\n\n@Component({\n selector: 'c8y-application-card',\n templateUrl: './application-card.component.html'\n})\nexport class ApplicationCardComponent implements OnInit {\n CURRENT_LOCATION = location.href;\n\n @Input() app: IApplication;\n @Input() canEdit = true;\n @Output() onAppDeleted: EventEmitter<void> = new EventEmitter();\n @Output() onAppCloned: EventEmitter<void> = new EventEmitter();\n appState: ApplicationState;\n packageContentState: ApplicationState;\n packageType: PackageType;\n canOpenInBrowser: boolean;\n disableOpenInBrowser: boolean;\n canDelete: boolean;\n isPackage: boolean;\n isPlugin: boolean;\n isFeature: boolean;\n isExternal: boolean;\n isMicroservice: boolean;\n canClone: boolean;\n isUnpacked: boolean;\n shouldUpgradePackage: boolean;\n blueprintApplicationVersion: IApplicationVersion[];\n latestApplicationVersion: IApplicationVersion;\n isShowVersion: boolean;\n isOwnedByManagementTenant: boolean;\n get openButtonTitle() {\n return !this.disableOpenInBrowser\n ? gettext('Open')\n : gettext('This application is overridden.');\n }\n\n readonly packageTypeLabels = PACKAGE_TYPE_LABELS;\n readonly PACKAGE_TYPE = PackageType;\n readonly UNPACKED_LABEL = APP_STATE.UNPACKED.label;\n readonly CANNOT_DELETE_HINT = gettext(\n `Subscribed or current applications can't be deleted. Delete the application on the parent tenant or unsubscribe it from the current.`\n );\n readonly PACKAGE_CONTENT_UNDETERMINED_LABEL = gettext(\n 'Package contents could not be determined.'\n );\n\n constructor(\n private applicationService: ApplicationService,\n private ecosystemService: EcosystemService,\n private alertService: AlertService,\n private router: Router,\n private wizardModalService: WizardModalService,\n private alert: AlertService,\n private pluginService: PluginsService,\n private gainsightService: GainsightService\n ) {}\n\n async ngOnInit() {\n this.appState = this.ecosystemService.getAppState(this.app);\n this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.app);\n this.packageType = this.pluginService.getPackageType(this.app);\n this.disableOpenInBrowser =\n this.canOpenInBrowser && (await this.ecosystemService.isOverwrittenByCustomApp(this.app));\n this.canDelete = await this.ecosystemService.canDeleteApp(this.app);\n this.isPackage = this.ecosystemService.isPackage(this.app);\n this.packageContentState = this.ecosystemService.getPackageContentState(this.app);\n this.isPlugin = this.ecosystemService.isPlugin(this.app);\n this.isFeature = this.ecosystemService.isFeature(this.app);\n this.isMicroservice = this.ecosystemService.isMicroservice(this.app);\n this.isExternal = this.ecosystemService.isExternal(this.app);\n this.canClone = !this.isMicroservice && !this.isPlugin;\n this.isUnpacked = this.ecosystemService.isUnpacked(this.app);\n this.isShowVersion = this.shouldShowVersion();\n await this.applicationUpdateCheck();\n }\n\n shouldShowVersion() {\n return (\n this.app.manifest?.version &&\n (!!this.app.manifest?.isPackage || this.isMicroservice || !!this.app.manifest?.source)\n );\n }\n\n detail() {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_CARD, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.EDIT,\n url: this.CURRENT_LOCATION\n });\n\n if (this.isMicroservice) {\n this.router.navigateByUrl(`/ecosystem/microservice/microservices/${this.app.id}`);\n return;\n }\n\n if (this.isPackage) {\n this.router.navigateByUrl(`/ecosystem/extension/extensions/${this.app.id}`);\n return;\n }\n\n if (this.isFeature) {\n this.router.navigateByUrl(`/ecosystem/application/features/${this.app.id}`);\n return;\n }\n\n this.router.navigateByUrl(`/ecosystem/application/applications/${this.app.id}`);\n }\n\n openApp() {\n this.ecosystemService.openApp(this.app);\n }\n\n async delete() {\n try {\n await this.ecosystemService.deleteApp(this.app);\n this.onAppDeleted.emit();\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_CARD, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.DELETE,\n url: this.CURRENT_LOCATION\n });\n } catch (ex) {\n if (ex) {\n this.alertService.addServerFailure(ex);\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_CARD,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.SERVER_FAILURE,\n url: this.CURRENT_LOCATION\n }\n );\n }\n }\n }\n\n async clone() {\n const wizardConfig: WizardConfig = {\n headerText: 'Add Application',\n headerIcon: 'c8y-atom'\n };\n\n const initialState: Wizard<DuplicateApplicationComponent> = {\n wizardConfig,\n componentInitialState: {\n selectedApp: new BehaviorSubject(this.app)\n },\n id: 'duplicateApplication'\n };\n\n const modalOptions: ModalOptions<WizardComponent> = { initialState };\n\n const modalRef = this.wizardModalService.show(modalOptions);\n modalRef.content.onClose.subscribe(() => {\n this.onAppCloned.next();\n });\n\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.APPLICATION_CARD, {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.APPLICATION_CARD,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.CLONE,\n url: this.CURRENT_LOCATION\n });\n }\n\n private async applicationUpdateCheck(): Promise<void> {\n if (this.app.manifest?.source) {\n try {\n this.blueprintApplicationVersion = (\n await this.applicationService.listVersions(this.app.manifest?.source)\n ).data;\n\n this.latestApplicationVersion = this.ecosystemService.getApplicationVersionObjectByTag(\n this.blueprintApplicationVersion,\n 'latest'\n );\n this.shouldUpgradePackage = this.ecosystemService.shouldUpgradePackage(\n this.app.manifest?.version,\n this.latestApplicationVersion\n );\n } catch (error) {\n if (!this.blueprintApplicationVersion) {\n return;\n }\n this.alert.addServerFailure(error);\n }\n }\n }\n}\n","<div class=\"card pointer card--d-col notFeature\" *ngIf=\"!isFeature\">\n <div (click)=\"detail()\" class=\"card-block text-center card-column-40\">\n <button\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (app.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"right\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL\n }\"\n >\n {{ app.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"card-appicon\">\n <c8y-app-icon\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n ></c8y-app-icon>\n <i *ngIf=\"isPackage\" c8yIcon=\"big-parcel\"></i>\n <i *ngIf=\"isMicroservice\" c8yIcon=\"microchip\"></i>\n <i *ngIf=\"isExternal\" c8yIcon=\"globe1\"></i>\n </div>\n <div style=\"line-height: 1.3\">\n <p class=\"e2e-appCardName text-medium\" title=\"{{ app | humanizeAppName | async }}\">\n {{ app | humanizeAppName | async }}\n </p>\n <ng-container *ngIf=\"isShowVersion\">\n <p class=\"small text-muted\">\n <em>{{ app.manifest.version }}</em>\n <button\n class=\"btn-clean m-l-4\"\n *ngIf=\"shouldUpgradePackage && isUnpacked\"\n [attr.aria-label]=\"'Update available' | translate\"\n [tooltip]=\"'Update available' | translate\"\n >\n <i c8yIcon=\"exclamation-triangle\" class=\"text-warning icon-16\"></i>\n </button>\n </p>\n </ng-container>\n <p *ngIf=\"app.manifest?.author\" class=\"small\">{{ app.manifest.author }}</p>\n </div>\n </div>\n <div (click)=\"detail()\" class=\"card-block p-0 no-min-height card--d-col card-column-80 flex-grow\">\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-80\">\n <div class=\"text-center-grid\">\n <div class=\"p-b-8 card-hidden-grid\"></div>\n <p\n class=\"small l-h-tight p-b-8 p-l-0 p-r-0\"\n *ngIf=\"app.description || app.manifest?.description\"\n >\n {{ app.description || app.manifest?.description | translate }}\n </p>\n <p\n class=\"small l-h-tight p-b-8 p-l-0 p-r-0\"\n *ngIf=\"!app.description && !app.manifest?.description\"\n >\n <em class=\"text-muted\">{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n </div>\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\">\n <button\n class=\"btn-clean\"\n [tooltip]=\"appState?.tooltip | translate\"\n [attr.aria-label]=\"\n ((isUnpacked ? UNPACKED_LABEL : appState?.label) | translate) +\n ': ' +\n (appState?.tooltip | translate)\n \"\n placement=\"top\"\n [delay]=\"500\"\n >\n <span [ngClass]=\"appState?.class\" class=\"label\">\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n *ngIf=\"isPackage\"\n class=\"btn-clean m-l-8\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip\n ? packageContentState?.tooltip\n : PACKAGE_CONTENT_UNDETERMINED_LABEL) | translate\n \"\n [tooltip]=\"\n (packageContentState?.tooltip\n ? packageContentState?.tooltip\n : PACKAGE_CONTENT_UNDETERMINED_LABEL\n ) | translate\n \"\n placement=\"top\"\n >\n <span\n [ngClass]=\"packageContentState?.class ? packageContentState?.class : 'label-danger'\"\n class=\"label\"\n >\n {{\n packageContentState?.label || packageTypeLabels[PACKAGE_TYPE.UNKNOWN].label | translate\n }}\n </span>\n </button>\n </div>\n <div class=\"card-footer no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\">\n <div class=\"p-b-16 card-hidden-list\"></div>\n <button\n class=\"btn btn-sm btn-default\"\n type=\"button\"\n [title]=\"openButtonTitle | translate\"\n (click)=\"openApp(); $event.stopPropagation()\"\n *ngIf=\"canOpenInBrowser\"\n [disabled]=\"disableOpenInBrowser\"\n >\n <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n {{ 'Open' | translate }}\n </button>\n <div class=\"p-b-32 card-hidden-list\"></div>\n </div>\n </div>\n <div class=\"p-r-40 card-hidden-grid\"></div>\n <div *ngIf=\"canEdit || canOpenInBrowser || canDelete\" class=\"card-actions m-t-0\">\n <div\n class=\"dropdown\"\n #appCardDropdown=\"bs-dropdown\"\n dropdown\n [cdkTrapFocus]=\"appCardDropdown.isOpen\"\n >\n <button\n class=\"dropdown-toggle c8y-dropdown\"\n type=\"button\"\n title=\"{{ 'Settings' | translate }}\"\n dropdownToggle\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right\">\n <li *ngIf=\"canEdit\">\n <button (click)=\"detail()\" title=\"{{ 'Edit' | translate }}\">\n <i c8yIcon=\"pencil\" class=\"m-r-4\"></i>\n {{ 'Edit' | translate }}\n </button>\n </li>\n <ng-container *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\">\n <li>\n <button\n type=\"button\"\n [title]=\"canDelete ? ('Delete' | translate) : (CANNOT_DELETE_HINT | translate)\"\n [disabled]=\"!canDelete\"\n (click)=\"delete()\"\n >\n <i c8yIcon=\"delete\" class=\"m-r-4\"></i>\n {{ 'Delete' | translate }}\n </button>\n </li>\n <li *ngIf=\"canClone\">\n <button\n type=\"button\"\n [title]=\"'Clone`package,verb`' | translate\"\n *ngIf=\"isPackage\"\n (click)=\"clone()\"\n >\n <i c8yIcon=\"copy\" class=\"m-r-4\"></i>\n {{ 'Clone`package,verb`' | translate }}\n </button>\n <button\n type=\"button\"\n [title]=\"'Clone`application,verb`' | translate\"\n *ngIf=\"!isPackage\"\n (click)=\"clone()\"\n >\n <i c8yIcon=\"copy\" class=\"m-r-4\"></i>\n {{ 'Clone`application,verb`' | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</div>\n\n<button class=\"card pointer card--d-col\" type=\"button\" (click)=\"detail()\" *ngIf=\"isFeature\">\n <div class=\"card-block text-center card-column-40\">\n <div class=\"card-appicon\">\n <c8y-app-icon\n *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n ></c8y-app-icon>\n <i c8yIcon=\"tab\"></i>\n </div>\n <div>\n <p class=\"e2e-appCardName text-medium\" title=\"{{ app | humanizeAppName | async }}\">\n {{ app | humanizeAppName | async }}\n </p>\n <ng-container *ngIf=\"isShowVersion\">\n <p class=\"small text-muted\">\n <em>{{ app.manifest.version }}</em>\n <i\n *ngIf=\"shouldUpgradePackage && isUnpacked\"\n [tooltip]=\"'Update available' | translate\"\n c8yIcon=\"exclamation-triangle\"\n class=\"text-warning m-l-4\"\n ></i>\n </p>\n </ng-container>\n </div>\n </div>\n <div class=\"card-block p-0 no-min-height card--d-col card-column-80 flex-grow\">\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-80\">\n <div *ngIf=\"app.description || app.manifest?.description\" class=\"text-center-grid\">\n <div class=\"p-b-8 card-hidden-grid\"></div>\n <p class=\"small l-h-tight p-b-8 p-l-0 p-r-0\">\n {{ app.description || app.manifest?.description | translate }}\n </p>\n </div>\n </div>\n <div class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\">\n <span [ngClass]=\"appState.class\" class=\"label\">\n {{ appState.label | translate }}\n </span>\n </div>\n <div\n *ngIf=\"isPackage\"\n class=\"card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid\"\n >\n <span [ngClass]=\"packageContentState.class\" class=\"label\">\n {{ packageContentState.label | translate }}\n </span>\n </div>\n <div class=\"p-b-32 card-hidden-list\"></div>\n </div>\n</button>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { IApplication } from '@c8y/client';\n\n@Component({\n selector: 'c8y-application-properties-form',\n templateUrl: './application-properties-form.component.html'\n})\nexport class ApplicationPropertiesFormComponent implements OnChanges {\n formGroup: FormGroup;\n @Input() application: IApplication;\n @Input() disabled = false;\n\n constructor(private formBuilder: FormBuilder) {\n this.initForm();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.application &&\n changes.application.currentValue !== changes.application.previousValue\n ) {\n this.setForm(this.application);\n }\n if (changes.disabled && changes.disabled.currentValue !== changes.disabled.previousValue) {\n changes.disabled.currentValue ? this.formGroup.disable() : this.formGroup.enable();\n }\n }\n\n private initForm() {\n this.formGroup = this.formBuilder.group({\n name: [Validators.required, Validators.maxLength(120)],\n key: [Validators.required, Validators.maxLength(120)],\n contextPath: [Validators.required, Validators.maxLength(120)]\n });\n }\n\n private setForm(applicationConfig: IApplication) {\n this.formGroup.patchValue({ ...applicationConfig });\n }\n}\n","<form\n (ngSubmit)=\"(formGroup.valid)\"\n [formGroup]=\"formGroup\"\n class=\"c8y-wizard-form text-left\"\n name=\"appDeployForm\"\n novalidate\n>\n <c8y-form-group>\n <label for=\"name\" translate>Name</label>\n <input\n class=\"form-control\"\n formControlName=\"name\"\n name=\"name\"\n placeholder=\"{{ 'e.g. My application' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"key\" translate>Application key</label>\n <input\n class=\"form-control\"\n formControlName=\"key\"\n name=\"key\"\n placeholder=\"{{ 'e.g. my-application-key' | translate }}\"\n required\n type=\"text\"\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"contextPath\" translate>Path</label>\n <div class=\"input-group\">\n <span class=\"input-group-addon\">/apps/</span>\n <input\n class=\"form-control\"\n formControlName=\"contextPath\"\n name=\"contextPath\"\n placeholder=\"{{ 'e.g. my-application' | translate }}\"\n required\n type=\"text\"\n />\n </div>\n </c8y-form-group>\n</form>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { C8yStepper, WizardComponent } from '@c8y/ngx-components';\nimport { ApplicationState } from '../../ecosystem.model';\nimport { EcosystemService } from '../../ecosystem.service';\n\n@Component({\n selector: 'c8y-duplicate-application-list',\n templateUrl: './duplicate-application-list.component.html'\n})\nexport class DuplicateApplicationListComponent {\n @Input() stepper: C8yStepper;\n @Input() existingApps: IApplication[];\n @Output() onSelectedApp = new EventEmitter<IApplication>();\n appState: ApplicationState;\n\n constructor(\n public ecosystemService: EcosystemService,\n private wizardComponent: WizardComponent\n ) {}\n\n select(selectedApp: IApplication) {\n this.onSelectedApp.emit(selectedApp);\n this.stepper.next();\n }\n\n cancel() {\n this.wizardComponent.close();\n }\n\n back() {\n this.wizardComponent.reset();\n }\n}\n","<div class=\"c8y-wizard-list-nav\">\n <button\n (click)=\"select(app)\"\n *ngFor=\"let app of existingApps\"\n class=\"list-group-item text-truncate p-t-8 p-b-8 bg-level-0\"\n type=\"button\"\n >\n <c8y-app-icon\n [app]=\"app\"\n [contextPath]=\"app.contextPath\"\n [name]=\"app.name\"\n class=\"list-group-icon\"\n ></c8y-app-icon>\n <span [innerText]=\"app | humanizeAppName | async\" class=\"pointer\"></span>\n <span [ngClass]=\"ecosystemService.getAppState(app).class\" class=\"label m-l-16\">\n {{ ecosystemService.getAppState(app).label | translate }}\n </span>\n </button>\n</div>\n<c8y-wizard-footer>\n <button (click)=\"back()\" class=\"btn btn-default\" title=\"{{ 'Back' | translate }}\" type=\"button\">\n {{ 'Back' | translate }}\n </button>\n <button\n (click)=\"cancel()\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n >\n {{ 'Cancel' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport { C8yStepper, GainsightService } from '@c8y/ngx-components';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilKeyChanged, map, tap } from 'rxjs/operators';\nimport { APP_STATE } from '../../ecosystem.constants';\nimport { EcosystemService } from '../../ecosystem.service';\nimport { ApplicationPropertiesFormComponent } from '../../../shared/application-properties-form.component';\nimport { PRODUCT_EXPERIENCE } from '../../ecosystem.model';\n\n@Component({\n selector: 'c8y-duplicate-application-properties',\n templateUrl: './duplicate-application-properties.component.html'\n})\nexport class DuplicateApplicationPropertiesComponent {\n CURRENT_LOCATION = location.href;\n\n @Input() stepper: C8yStepper;\n @Input() existingApps: IApplication[];\n @Input() selectedApp: BehaviorSubject<IApplication>;\n @Input() isFirstStep = false;\n @Output() duplicatedApp = new EventEmitter<IApplication>();\n @ViewChild(ApplicationPropertiesFormComponent)\n applicationPropertiesForm: ApplicationPropertiesFormComponent;\n newAppConfig: IApplication;\n disableForm = false;\n isSubscribedApp$: Observable<boolean>;\n\n inProgress = false;\n\n constructor(\n private bsModalRef: BsModalRef,\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private gainsightService: GainsightService\n ) {}\n\n ngOnInit() {\n this.isSubscribedApp$ = this.selectedApp.pipe(\n distinctUntilKeyChanged('id'),\n map(app => (app ? this.ecosystemService.getAppState(app) === APP_STATE.SUBSCRIBED : true)),\n tap(isSubscribed => {\n this.disableForm = isSubscribed;\n this.getAppConfig();\n })\n );\n this.getAppConfig();\n }\n\n async duplicateApp() {\n const formGroupValue = this.applicationPropertiesForm.formGroup.getRawValue();\n this.inProgress = true;\n let { data: clonedApp } = await this.applicationService.clone(this.selectedApp.value);\n // TODO: remove once MTM-48474 has been merged\n clonedApp = this.ecosystemService.setAvailabilityToPrivateIfNotSetAlready(clonedApp);\n\n Object.assign(clonedApp, formGroupValue);\n delete clonedApp.type;\n\n await this.updateApp(clonedApp);\n this.inProgress = false;\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.DUPLICATE_APPLICATION,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.DUPLICATE_APPLICATION_PROPERTIES,\n result: PRODUCT_EXPERIENCE.APPLICATIONS.RESULTS.DUPLICATED,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n cancel() {\n this.bsModalRef.hide();\n\n this.gainsightService.triggerEvent(\n PRODUCT_EXPERIENCE.APPLICATIONS.EVENTS.DUPLICATE_APPLICATION,\n {\n component: PRODUCT_EXPERIENCE.APPLICATIONS.COMPONENTS.DUPLICATE_APPLICATION_PROPERTIES,\n action: PRODUCT_EXPERIENCE.APPLICATIONS.ACTIONS.CANCEL,\n url: this.CURRENT_LOCATION\n }\n );\n }\n\n back() {\n this.stepper.previous();\n }\n\n getAppConfig() {\n if (this.disableForm) {\n const { name, key, contextPath } = this.selectedApp.value;\n this.newAppConfig = { name, key, contextPath };\n } else {\n this.newAppConfig = this.ecosystemService.getUniqueAppConfig(\n this.selectedApp.value,\n this.existingApps\n );\n }\n }\n\n private async updateApp(clonedAppConfig: Partial<IApplication>) {\n try {\n const { data: app } = await this.ecosystemService.updateApp(clonedAppConfig, true);\n const manifest = await this.getAppManifest(app);\n if (manifest) {\n await this.updateManifest(app, manifest);\n }\n\n this.duplicatedApp.emit(app);\n this.stepper.next();\n } catch (err) {\n this.inProgress = false;\n }\n }\n\n private async updateManifest(app: IApplication, manifest: any) {\n const keysToUpdate: Array<keyof IApplication> = ['name', 'key', 'contextPath'];\n const someKeyDiffers = keysToUpdate.some(key => app[key] !== manifest[key]);\n if (someKeyDiffers) {\n keysToUpdate.forEach(key => {\n manifest[key] = app[key];\n });\n await this.applicationService.storeAppManifest(app, manifest);\n }\n }\n\n private async getAppManifest(app: IApplication) {\n if (!app?.contextPath) {\n return;\n }\n try {\n const manifest = await this.applicationService.getAppManifest(app);\n return manifest;\n } catch (ex) {\n return;\n }\n }\n}\n","<p\n class=\"p-16 text-center text-medium separator-bottom sticky-top bg-level-0 fit-w\"\n *ngIf=\"!inProgress\"\n>\n {{ 'Provide application details' | translate }}\n</p>\n\n<ng-container *ngIf=\"!inProgress\">\n <label class=\"c8y-switch\" *ngIf=\"isSubscribedApp$ | async\">\n <input type=\"checkbox\" [(ngModel)]=\"disableForm\" (change)=\"getAppConfig()\" />\n <span></span> {{ 'Overrule subscribed application' | translate }}\n </label>\n\n <c8y-application-properties-form\n [application]=\"newAppConfig\"\n class=\"d-block fit-w\"\n [disabled]=\"disableForm\"\n ></c8y-application-properties-form>\n</ng-container>\n<c8y-progress-bar\n *ngIf=\"inProgress\"\n [message]=\"'Duplicating…' | translate\"\n class=\"text-center d-block\"\n></c8y-progress-bar>\n\n<c8y-wizard-footer>\n <button\n *ngIf=\"!isFirstStep\"\n (click)=\"back()\"\n [disabled]=\"inProgress\"\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Back' | translate }}\"\n >\n {{ 'Back' | translate }}\n </button>\n <button (click)=\"cancel()\" class=\"btn btn-default\" title=\"{{ 'Cancel' | translate }}\">\n {{ 'Cancel' | translate }}\n </button>\n <button\n (click)=\"duplicateApp()\"\n [disabled]=\"inProgress\"\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Duplicate' | translate }}\"\n >\n {{ 'Duplicate' | translate }}\n </button>\n</c8y-wizard-footer>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport { C8yStepper, WizardComponent } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from '../ecosystem.service';\n\n@Component({\n selector: 'c8y-duplicate-application',\n templateUrl: './duplicate-application.component.html'\n})\nexport class DuplicateApplicationComponent implements OnInit {\n @ViewChild(C8yStepper, { static: true })\n stepper: C8yStepper;\n duplicatedApp: IApplication;\n selectedApp: BehaviorSubject<IApplication> = new BehaviorSubject<IApplication>(null);\n existingApps: IApplication[] = [];\n directlyMoveToSecondStep = false;\n\n constructor(\n private ecosystemService: EcosystemService,\n private applicationService: ApplicationService,\n private wizardComponent: WizardComponent\n ) {}\n\n async ngOnInit() {\n this.existingApps = await this.ecosystemService.getWebApplications();\n if (this.selectedApp.value) {\n this.directlyMoveToSecondStep = true;\n }\n }\n\n onSelectedApp(app: IApplication) {\n this.selectedApp.next(app);\n }\n\n getHref(app: IApplication): string {\n return this.applicationService.getHref(app);\n }\n\n done() {\n this.wizardComponent.close();\n }\n}\n","<c8y-wizard-header>\n <i [c8yIcon]=\"'copy'\"></i>\n <h4 id=\"modal-title\" translate>Duplicate application</h4>\n</c8y-wizard-header>\n\n<c8y-wizard-body id=\"modal-body\">\n <c8y-stepper\n [customClasses]=\"['hidden']\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n linear\n >\n <!-- 1st step -->\n <cdk-step *ngIf=\"!directlyMoveToSecondStep\">\n <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-level-0\">\n {{ 'Select application to duplicate' | translate }}\n </p>\n <c8y-duplicate-application-list\n (onSelectedApp)=\"onSelectedApp($event)\"\n *ngIf=\"stepper.selectedIndex === 0\"\n [existingApps]=\"existingApps\"\n [stepper]=\"stepper\"\n class=\"d-block\"\n style=\"min-height: 257px\"\n ></c8y-duplicate-application-list>\n </cdk-step>\n <!-- 2nd step -->\n <cdk-step>\n <c8y-duplicate-application-properties\n class=\"d-flex d-col j-c-center a-i-center\"\n style=\"min-height: 257px\"\n (duplicatedApp)=\"duplicatedApp = $event\"\n *ngIf=\"\n stepper.selectedIndex === 1 || (stepper.selectedIndex === 0 && directlyMoveToSecondStep)\n \"\n [existingApps]=\"existingApps\"\n [selectedApp]=\"selectedApp\"\n [stepper]=\"stepper\"\n [isFirstStep]=\"directlyMoveToSecondStep\"\n ></c8y-duplicate-application-properties>\n </cdk-step>\n <!-- Final step -->\n <cdk-step>\n <ng-container\n *ngIf=\"\n stepper.selectedIndex === 2 || (stepper.selectedIndex === 1 && directlyMoveToSecondStep)\n \"\n >\n <div\n *ngIf=\"duplicatedApp; else duplicateAppFailed\"\n style=\"min-height: 257px\"\n class=\"d-flex a-i-center j-c-center\"\n >\n <c8y-operation-result\n text=\"{{ 'Application created' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n ></c8y-operation-result>\n </div>\n <ng-template #duplicateAppFailed>\n <div style=\"min-height: 257px\" class=\"d-flex a-i-center j-c-center\">\n <c8y-operation-result\n text=\"{{ 'Application creation failed' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n ></c8y-operation-result>\n </div>\n </ng-template>\n </ng-container>\n </cdk-step>\n </c8y-stepper>\n</c8y-wizard-body>\n\n<c8y-wizard-footer\n *ngIf=\"stepper.selectedIndex === 2 || (stepper.selectedIndex === 1 && directlyMoveToSecondStep)\"\n>\n <button (click)=\"done()\" class=\"btn btn-default\" title=\"{{ 'Done' | translate }}\" type=\"button\">\n {{ 'Done' | translate }}\n </button>\n <a\n (click)=\"$event.stopPropagation()\"\n [href]=\"getHref(duplicatedApp)\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"btn btn-primary\"\n title=\"{{ 'Open' | translate }}\"\n >\n <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n {{ 'Open' | translate }}\n </a>\n</c8y-wizard-footer>\n","import { Component, forwardRef, OnChanges, Input, SimpleChanges } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ApplicationService, IApplicationVersion, IResultList } from '@c8y/client';\nimport { gettext, PluginsService } from '@c8y/ngx-components';\nimport { BehaviorSubject, Observable, combineLatest, merge } from 'rxjs';\nimport { filter, map, shareReplay, switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'c8y-package-version-select',\n templateUrl: './package-version-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => PackageVersionSelectComponent)\n }\n ]\n})\nexport class PackageVersionSelectComponent implements OnChanges, ControlValueAccessor {\n @Input() label = gettext('Use plugin version');\n @Input() packageContextPath: string;\n @Input() packageId: string | number;\n selectedVersion: IApplicationVersion;\n onInput$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n versions$: Observable<IResultList<IApplicationVersion>>;\n isDisabled = false;\n private packageContextPath$ = new BehaviorSubject('');\n private packageId$ = new BehaviorSubject<string | number>('');\n private onChange: (version: IApplicationVersion) => void;\n private onTouched: () => void;\n\n constructor(\n private applicationService: ApplicationService,\n private pluginsService: PluginsService\n ) {\n const packageIdFromContextPath$ = this.packageContextPath$.pipe(\n filter(path => !!path),\n switchMap(path => this.getPackageIdForContextPath(path))\n );\n const packageId$ = merge(packageIdFromContextPath$, this.packageId$.pipe(filter(id => !!id)));\n const packageVersions$ = packageId$.pipe(\n switchMap(id => this.getPackageVersions(id)),\n shareReplay(1)\n );\n this.versions$ = combineLatest([packageVersions$, this.onInput$.asObservable()]).pipe(\n map(([resultList, filterStr]) => this.applyFilterToResultList(resultList, filterStr))\n );\n }\n\n writeValue(obj: any): void {\n this.selectedVersion = obj;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.packageContextPath) {\n this.packageContextPath$.next(this.packageContextPath);\n }\n\n if (changes.packageId) {\n this.packageId$.next(this.packageId);\n }\n }\n\n async getPackageVersions(packageId: string | number): Promise<IResultList<IApplicationVersion>> {\n return await this.applicationService.listVersions(packageId);\n }\n\n onVersionSelect(version: IApplicationVersion) {\n this.selectedVersion = version;\n if (this.onChange) {\n this.onChange(version);\n }\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n private async getPackageIdForContextPath(contextPath: string): Promise<string | number> {\n const { data: application } = await this.applicationService.getManifestOfContextPath(\n contextPath\n );\n const packageAppId = application.id;\n return packageAppId;\n }\n\n private setInitialValueForInput(versions: IApplicationVersion[]) {\n if (!this.selectedVersion && versions.length > 0) {\n const latest = versions.find(v => v.tags.includes('latest'));\n this.selectedVersion = latest || versions[0];\n if (this.onChange) {\n this.onChange(this.selectedVersion);\n }\n }\n }\n\n private filterAppVersions(\n appVersions: IApplicationVersion[],\n filterStr: string\n ): IApplicationVersion[] {\n return filterStr === ''\n ? appVersions\n : appVersions.filter(\n appVersion =>\n appVersion.version.includes(filterStr) ||\n appVersion.tags?.some(tag => tag.includes(filterStr))\n );\n }\n\n private applyFilterToResultList(\n resultList: IResultList<IApplicationVersion>,\n filterStr: string\n ): IResultList<IApplicationVersion> {\n const versionsFilteredByStr = this.filterAppVersions(resultList.data, filterStr);\n const sortedAppVersions = this.pluginsService.sortVersions(\n {\n list: versionsFilteredByStr,\n path: ['version']\n },\n 'desc'\n );\n\n this.setInitialValueForInput(sortedAppVersions);\n return { data: sortedAppVersions, res: resultList.res };\n }\n}\n","<label for=\"packageVersion\">{{ label | translate }}</label>\n<c8y-form-group>\n <c8y-typeahead\n [(ngModel)]=\"selectedVersion\"\n name=\"packageVersion\"\n (onSearch)=\"onInput$.next($event)\"\n placeholder=\"{{ 'Select below or start typing' | translate }}\"\n [displayProperty]=\"'version'\"\n [required]=\"true\"\n [disabled]=\"isDisabled\"\n [hideNew]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *c8yFor=\"let appVersion of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n (click)=\"onVersionSelect(appVersion)\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [active]=\"selectedVersion === appVersion\"\n >\n <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n <span\n [ngStyle]=\"{\n display: 'flex',\n 'flex-direction': 'row',\n 'align-content': 'center',\n 'justify-content': 'space-between',\n 'align-items': 'center'\n }\"\n >\n <c8y-highlight\n [text]=\"appVersion.version || '--'\"\n [pattern]=\"onInput$ | async\"\n ></c8y-highlight>\n <span>\n <span *ngFor=\"let tag of appVersion.tags\" class=\"label label-info m-l-4\">\n {{ tag }}\n </span>\n </span>\n </span>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li\n class=\"bg-gray-lighter p-8\"\n *ngIf=\"(onInput$ | async)?.length > 0 && (versions$ | async)?.data?.length === 0\"\n >\n <span translate>No match found.</span>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n</c8y-form-group>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IApplication, IApplicationBinary } from '@c8y/client';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from './ecosystem.service';\n\n@Component({\n selector: 'c8y-upload-archive',\n templateUrl: 'upload-archive.component.html'\n})\nexport class UploadArchiveComponent {\n @Input() application: IApplication;\n @Input() uploadNewVersion = false;\n @Input() preUploadCallback: () => Promise<any>;\n @Output() applicationChange: EventEmitter<IApplication> = new EventEmitter<IApplication>();\n @Output() refresh: EventEmitter<any> = new EventEmitter();\n\n archives: IApplicationBinary[] = [];\n toActivateVersionId: string;\n last: IApplicationBinary;\n isLoading: boolean;\n fileList: FileList;\n uploadInProgress = false;\n canReactivate = false;\n\n constructor(private ecosystemService: EcosystemService, private alertService: AlertService) {}\n\n get uploadProgress(): BehaviorSubject<number> {\n return this.ecosystemService.progress;\n }\n\n async onFileDroppedEvent(event) {\n if (this.preUploadCallback) {\n try {\n await this.preUploadCallback();\n } catch (e) {\n // do nothing, i.e. when confirm modal cancels and throws undefined\n return;\n }\n }\n if (event && event.length > 0) {\n const file = event[0].file;\n this.onFile(file);\n }\n }\n\n private async onFile(file: File): Promise<void> {\n try {\n await this.ecosystemService.validateArchiveToAppCompatibility(file, this.application);\n const isCustomMicroservice = this.ecosystemService.isCustomMicroservice(this.application);\n this.archives = isCustomMicroservice\n ? []\n : await this.ecosystemService.listArchives(this.application.id);\n this.archives.sort((a, b) => {\n return (new Date(b.created) as any) - (new Date(a.created) as any);\n });\n this.uploadInProgress = true;\n this.uploadProgress.next(0);\n if (this.archives.length === 6 && !isCustomMicroservice) {\n await this.ecosystemService.removeOldestArchive(this.application, this.archives);\n }\n const app = await this.ecosystemService.uploadArchiveToApp(\n file,\n this.application,\n this.uploadNewVersion\n );\n this.applicationChange.emit(app);\n this.uploadProgress.next(100);\n this.uploadInProgress = false;\n this.refresh.emit();\n if (this.uploadNewVersion) {\n return;\n }\n this.alertService.success(gettext('Archive uploaded and activated.'));\n } catch (ex) {\n this.uploadInProgress = false;\n this.ecosystemService.alertError(ex);\n }\n }\n}\n","<c8y-drop-area\n (dropped)=\"onFileDroppedEvent($event)\"\n [accept]=\"'.zip'\"\n [loading]=\"uploadInProgress\"\n [maxAllowedFiles]=\"1\"\n [message]=\"'Upload a *.zip file' | translate\"\n [progress]=\"uploadProgress | async\"\n [forceHideList]=\"true\"\n class=\"drop-area-sm\"\n>\n</c8y-drop-area>\n","import { NgModule } from '@angular/core';\nimport { CoreModule, hookWizard } from '@c8y/ngx-components';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { AddApplicationComponent } from './add-application.component';\nimport { ApplicationCardComponent } from './application-card.component';\nimport { ApplicationPropertiesFormComponent } from './application-properties-form.component';\nimport { UploadArchiveComponent } from './upload-archive.component';\nimport { DuplicateApplicationListComponent } from './duplicate-application/duplicate-application-list/duplicate-application-list.component';\nimport { DuplicateApplicationPropertiesComponent } from './duplicate-application/duplicate-application-properties/duplicate-application-properties.component';\nimport { DuplicateApplicationComponent } from './duplicate-application/duplicate-application.component';\nimport { PackageVersionSelectComponent } from './package-version-select/package-version-select.component';\nimport { EcosystemWizards } from './ecosystem.model';\nimport { TranslatePackageLabelPipe } from './translate-package-label.pipe';\n\n@NgModule({\n imports: [CoreModule, BsDropdownModule, TooltipModule, A11yModule],\n declarations: [\n AddApplicationComponent,\n ApplicationPropertiesFormComponent,\n UploadArchiveComponent,\n ApplicationCardComponent,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n DuplicateApplicationComponent,\n PackageVersionSelectComponent,\n TranslatePackageLabelPipe\n ],\n exports: [\n AddApplicationComponent,\n ApplicationPropertiesFormComponent,\n UploadArchiveComponent,\n ApplicationCardComponent,\n DuplicateApplicationListComponent,\n DuplicateApplicationPropertiesComponent,\n DuplicateApplicationComponent,\n PackageVersionSelectComponent,\n TranslatePackageLabelPipe\n ],\n providers: [\n hookWizard({\n wizardId: EcosystemWizards.APPLICATION_UPLOAD,\n component: DuplicateApplicationComponent,\n name: 'Duplicate existing application',\n c8yIcon: 'copy'\n }),\n hookWizard({\n wizardId: 'duplicateApplication',\n component: DuplicateApplicationComponent,\n name: 'Duplicate existing application',\n c8yIcon: 'copy'\n })\n ]\n})\nexport class SharedEcosystemModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i1.EcosystemService","i4","i5","i2.EcosystemService","i3","i9.TranslatePackageLabelPipe","i6","i7.ApplicationPropertiesFormComponent","i6.DuplicateApplicationListComponent","i7.DuplicateApplicationPropertiesComponent"],"mappings":"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"}
|