@acorex/connectivity 20.6.0-next.7 → 20.6.0-next.9
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-connectivity-api.mjs","sources":["../tmp-esm2022/api/lib/api-storage.service.js","../tmp-esm2022/api/lib/file-storage-api.service.js","../tmp-esm2022/api/lib/auth/oidc/application.loader.js","../tmp-esm2022/api/lib/auth/oidc/configuration.service.js","../tmp-esm2022/api/lib/auth/oidc/feature.loader.js","../tmp-esm2022/api/lib/auth/oidc/oidc.strategy.js","../tmp-esm2022/api/lib/auth/oidc/permission.loader.js","../tmp-esm2022/api/lib/auth/oidc/tenant.loader.js","../tmp-esm2022/api/lib/report-management/report-management-api.providers.js","../tmp-esm2022/api/lib/report-management/report-management-api.module.js","../tmp-esm2022/api/lib/api.module.js","../tmp-esm2022/api/lib/api-google.strategy.js","../tmp-esm2022/api/acorex-connectivity-api.js"],"sourcesContent":["import { AXP_ROOT_CONFIG_TOKEN, AXPFilterOperatorMiddlewareService } from '@acorex/platform/common';\nimport { AXPEntityResolver } from '@acorex/platform/layout/entity';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { kebabCase } from 'lodash-es';\nimport { firstValueFrom } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nexport class AXCApiEntityStorageService {\n constructor(http) {\n this.http = http;\n this.configs = inject(AXP_ROOT_CONFIG_TOKEN);\n this.filterService = inject(AXPFilterOperatorMiddlewareService);\n this.entityResolver = inject(AXPEntityResolver);\n this.mainUrl = this.configs.baseUrl;\n // API routing constants\n this.API_VERSION = 'v1';\n this.DEFAULT_AREA = 'global';\n }\n get dbName() {\n return 'ACoreXPlatform';\n }\n getConfigEntity(entityName) {\n const partEntity = entityName.split('.');\n if (partEntity.length == 3) {\n const [area, module, entity] = partEntity;\n const areaKebab = kebabCase(area);\n const moduleKebab = kebabCase(module);\n const entityKebab = kebabCase(entity);\n return {\n module: moduleKebab,\n entity: entityKebab,\n area: areaKebab,\n version: this.API_VERSION,\n };\n }\n else {\n const [module, entity] = partEntity;\n const moduleKebab = kebabCase(module);\n const entityKebab = kebabCase(entity);\n return {\n module: moduleKebab,\n entity: entityKebab,\n area: this.DEFAULT_AREA,\n version: this.API_VERSION,\n };\n }\n }\n async initial(entityName, collection) {\n //const exists = await this.table('entity-store').where({ entityName }).count();\n // if (exists === 0) {\n // await this.table('entity-store').bulkAdd(collection.map((item) => ({ ...item, entityName })));\n // }\n return collection;\n }\n async getOne(entityName, id) {\n const routeElement = await this.getConfigEntity(entityName);\n const url = `${this.mainUrl}/${routeElement.version}/${routeElement.area}/${routeElement.module}/${routeElement.entity}${id ? '/' + id : ''}`;\n return firstValueFrom(this.http.get(url));\n }\n async updateOne(entityName, id, keyValue) {\n const routeElement = await this.getConfigEntity(entityName);\n const url = `${this.mainUrl}/${routeElement.version}/${routeElement.area}/${routeElement.module}/${routeElement.entity}${id ? '/' + id : ''}`;\n return firstValueFrom(this.http.put(url, keyValue));\n }\n async deleteOne(entityName, id) {\n const routeElement = await this.getConfigEntity(entityName);\n const url = `${this.mainUrl}/${routeElement.version}/${routeElement.area}/${routeElement.module}/${routeElement.entity}/${id}`;\n firstValueFrom(this.http.delete(url));\n }\n async insertOne(entityName, entityItem) {\n const routeElement = await this.getConfigEntity(entityName);\n const url = `${this.mainUrl}/${routeElement.version}/${routeElement.area}/${routeElement.module}/${routeElement.entity}`;\n return firstValueFrom(this.http.post(url, entityItem));\n }\n async getAll(entityName) {\n return [];\n }\n async query(entityName, request) {\n const routeElement = await this.getConfigEntity(entityName);\n let httpParams = new HttpParams().set('Skip', request.skip).set('Take', request.take);\n if (request?.sort && request?.sort.length > 0) {\n const sortParam = request?.sort.map((sort) => `${sort.field}:${sort.dir}`).join(',');\n httpParams = httpParams.set('$orderby', sortParam);\n }\n const greaterThanOperator = this.filterService.getOperator('greaterThan');\n const lessThanOperator = this.filterService.getOperator('lessThan');\n function generateQueryString(filter) {\n if (!filter.filters) {\n // Base case: single filter\n if (typeof filter.value === 'object' && filter.operator.type === 'between') {\n return `${filter.field} ${greaterThanOperator.type} '${filter.value.from}' and ${filter.field} ${lessThanOperator.type} '${filter.value.to}'`;\n }\n else {\n return `${filter.field} ${filter.operator.type} '${filter.value}'`;\n }\n }\n else if (!filter.filters.length) {\n return;\n }\n else {\n // Recursive case: multiple filters\n const filterStrings = filter.filters.map((subFilter) => generateQueryString(subFilter));\n const logic = filter.logic || 'AND'; // Default logic is 'AND' if not provided\n return `${filterStrings.filter((i) => i).join(` ${logic} `)}`;\n }\n }\n let queryString = '';\n if (request.filter) {\n const filter = request.filter;\n if (filter.filters && filter.filters.length > 0) {\n // Construct filter string from provided filters\n const dynamicQueries = generateQueryString(filter);\n console.log({ dynamicQueries: dynamicQueries });\n // Append dynamic filters to custom filter, if both exist\n queryString = (queryString ? `${queryString},${dynamicQueries}` : dynamicQueries);\n }\n }\n // Set the $filter parameter if there are any filters\n if (queryString) {\n httpParams = httpParams.set('$query', queryString);\n }\n return firstValueFrom(this.http.get(`${this.mainUrl}/${routeElement.version}/${routeElement.area}/${routeElement.module}/${routeElement.entity}`, { params: httpParams })).then((response) => {\n return {\n total: response.totalCount,\n items: response.items,\n };\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCApiEntityStorageService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCApiEntityStorageService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCApiEntityStorageService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.HttpClient }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L2FwaS9zcmMvbGliL2FwaS1zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtDQUFrQyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFcEcsT0FBTyxFQUFFLGlCQUFpQixFQUEyQixNQUFNLGdDQUFnQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFHdEMsTUFBTSxPQUFPLDBCQUEwQjtJQVVyQyxZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBVDVCLFlBQU8sR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN4QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQzNELG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsWUFBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBRXZDLHdCQUF3QjtRQUNQLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsUUFBUSxDQUFDO0lBRUYsQ0FBQztJQUV4QyxJQUFJLE1BQU07UUFDUixPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFRCxlQUFlLENBQUMsVUFBa0I7UUFDaEMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMs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SUFBSSxZQUFZLENBQUMsTUFBTSxJQUNqRixZQUFZLENBQUMsTUFDZixFQUFFLEVBQ0YsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQ3ZCLENBQ0YsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNsQixPQUFPO2dCQUNMLEtBQUssRUFBRSxRQUFRLENBQUMsVUFBVTtnQkFDMUIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO2FBQ3RCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBbkpVLDBCQUEwQjttSEFBMUIsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQX1JPT1RfQ09ORklHX1RPS0VOLCBBWFBGaWx0ZXJPcGVyYXRvck1pZGRsZXdhcmVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQUGFnZWRMaXN0UmVzdWx0LCBBWFBRdWVyeVJlcXVlc3QgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQRW50aXR5UmVzb2x2ZXIsIEFYUEVudGl0eVN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGtlYmFiQ2FzZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhDQXBpRW50aXR5U3RvcmFnZVNlcnZpY2UgaW1wbGVtZW50cyBBWFBFbnRpdHlTdG9yYWdlU2VydmljZTxzdHJpbmcsIGFueT4ge1xuICBwcml2YXRlIGNvbmZpZ3MgPSBpbmplY3QoQVhQX1JPT1RfQ09ORklHX1RPS0VOKTtcbiAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlID0gaW5qZWN0KEFYUEZpbHRlck9wZXJhdG9yTWlkZGxld2FyZVNlcnZpY2UpO1xuICBwcml2YXRlIGVudGl0eVJlc29sdmVyID0gaW5qZWN0KEFYUEVudGl0eVJlc29sdmVyKTtcbiAgcHJpdmF0ZSBtYWluVXJsID0gdGhpcy5jb25maWdzLmJhc2VVcmw7XG5cbiAgLy8gQVBJIHJvdXRpbmcgY29uc3RhbnRzXG4gIHByaXZhdGUgcmVhZG9ubHkgQVBJX1ZFUlNJT04gPSAndjEnO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfQVJFQSA9ICdnbG9iYWwnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cblxuICBnZXQgZGJOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdBQ29yZVhQbGF0Zm9ybSc7XG4gIH1cblxuICBnZXRDb25maWdFbnRpdHkoZW50aXR5TmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFydEVudGl0eSA9IGVudGl0eU5hbWUuc3BsaXQoJy4nKTtcbiAgICBpZiAocGFydEVudGl0eS5sZW5ndGggPT0gMykge1xuICAgICAgY29uc3QgW2FyZWEsIG1vZHVsZSwgZW50aXR5XSA9IHBhcnRFbnRpdHk7XG4gICAgICBjb25zdCBhcmVhS2ViYWIgPSBrZWJhYkNhc2UoYXJlYSk7XG4gICAgICBjb25zdCBtb2R1bGVLZWJhYiA9IGtlYmFiQ2FzZShtb2R1bGUpO1xuICAgICAgY29uc3QgZW50aXR5S2ViYWIgPSBrZWJhYkNhc2UoZW50aXR5KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1vZHVsZTogbW9kdWxlS2ViYWIsXG4gICAgICAgIGVudGl0eTogZW50aXR5S2ViYWIsXG4gICAgICAgIGFyZWE6IGFyZWFLZWJhYixcbiAgICAgICAgdmVyc2lvbjogdGhpcy5BUElfVkVSU0lPTixcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IFttb2R1bGUsIGVudGl0eV0gPSBwYXJ0RW50aXR5O1xuICAgICAgY29uc3QgbW9kdWxlS2ViYWIgPSBrZWJhYkNhc2UobW9kdWxlKTtcbiAgICAgIGNvbnN0IGVudGl0eUtlYmFiID0ga2ViYWJDYXNlKGVudGl0eSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2R1bGU6IG1vZHVsZUtlYmFiLFxuICAgICAgICBlbnRpdHk6IGVudGl0eUtlYmFiLFxuICAgICAgICBhcmVhOiB0aGlzLkRFRkFVTFRfQVJFQSxcbiAgICAgICAgdmVyc2lvbjogdGhpcy5BUElfVkVSU0lPTixcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5pdGlhbDxUID0gYW55PihlbnRpdHlOYW1lOiBzdHJpbmcsIGNvbGxlY3Rpb246IFRbXSk6IFByb21pc2U8VFtdPiB7XG4gICAgLy9jb25zdCBleGlzdHMgPSBhd2FpdCB0aGlzLnRhYmxlKCdlbnRpdHktc3RvcmUnKS53aGVyZSh7IGVudGl0eU5hbWUgfSkuY291bnQoKTtcbiAgICAvLyBpZiAoZXhpc3RzID09PSAwKSB7XG4gICAgLy8gICBhd2FpdCB0aGlzLnRhYmxlKCdlbnRpdHktc3RvcmUnKS5idWxrQWRkKGNvbGxlY3Rpb24ubWFwKChpdGVtKSA9PiAoeyAuLi5pdGVtLCBlbnRpdHlOYW1lIH0pKSk7XG4gICAgLy8gfVxuICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICB9XG5cbiAgYXN5bmMgZ2V0T25lPFQgPSBhbnk+KGVudGl0eU5hbWU6IHN0cmluZywgaWQ6IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IHJvdXRlRWxlbWVudCA9IGF3YWl0IHRoaXMuZ2V0Q29uZmlnRW50aXR5KGVudGl0eU5hbWUpO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMubWFpblVybH0vJHtyb3V0ZUVsZW1lbnQudmVyc2lvbn0vJHtyb3V0ZUVsZW1lbnQuYXJlYX0vJHtyb3V0ZUVsZW1lbnQubW9kdWxlfS8ke1xuICAgICAgcm91dGVFbGVtZW50LmVudGl0eVxuICAgIH0ke2lkID8gJy8nICsgaWQgOiAnJ31gO1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PFQ+KHVybCkpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlT25lPFQgPSBhbnk+KGVudGl0eU5hbWU6IHN0cmluZywgaWQ6IHN0cmluZywga2V5VmFsdWU6IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCByb3V0ZUVsZW1lbnQgPSBhd2FpdCB0aGlzLmdldENvbmZpZ0VudGl0eShlbnRpdHlOYW1lKTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLm1haW5Vcmx9LyR7cm91dGVFbGVtZW50LnZlcnNpb259LyR7cm91dGVFbGVtZW50LmFyZWF9LyR7cm91dGVFbGVtZW50Lm1vZHVsZX0vJHtcbiAgICAgIHJvdXRlRWxlbWVudC5lbnRpdHlcbiAgICB9JHtpZCA/ICcvJyArIGlkIDogJyd9YDtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnB1dDxUPih1cmwsIGtleVZhbHVlKSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVPbmUoZW50aXR5TmFtZTogc3RyaW5nLCBpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgcm91dGVFbGVtZW50ID0gYXdhaXQgdGhpcy5nZXRDb25maWdFbnRpdHkoZW50aXR5TmFtZSk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5tYWluVXJsfS8ke3JvdXRlRWxlbWVudC52ZXJzaW9ufS8ke3JvdXRlRWxlbWVudC5hcmVhfS8ke3JvdXRlRWxlbWVudC5tb2R1bGV9LyR7XG4gICAgICByb3V0ZUVsZW1lbnQuZW50aXR5XG4gICAgfS8ke2lkfWA7XG4gICAgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmRlbGV0ZSh1cmwpKTtcbiAgfVxuXG4gIGFzeW5jIGluc2VydE9uZTxUID0gYW55PihlbnRpdHlOYW1lOiBzdHJpbmcsIGVudGl0eUl0ZW06IFQpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJvdXRlRWxlbWVudCA9IGF3YWl0IHRoaXMuZ2V0Q29uZmlnRW50aXR5KGVudGl0eU5hbWUpO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMubWFpblVybH0vJHtyb3V0ZUVsZW1lbnQudmVyc2lvbn0vJHtyb3V0ZUVsZW1lbnQuYXJlYX0vJHtyb3V0ZUVsZW1lbnQubW9kdWxlfS8ke1xuICAgICAgcm91dGVFbGVtZW50LmVudGl0eVxuICAgIH1gO1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDxzdHJpbmc+KHVybCwgZW50aXR5SXRlbSkpO1xuICB9XG5cbiAgYXN5bmMgZ2V0QWxsPFQgPSBhbnk+KGVudGl0eU5hbWU6IHN0cmluZyk6IFByb21pc2U8VFtdPiB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgYXN5bmMgcXVlcnk8VCA9IGFueT4oZW50aXR5TmFtZTogc3RyaW5nLCByZXF1ZXN0OiBBWFBRdWVyeVJlcXVlc3QpOiBQcm9taXNlPEFYUFBhZ2VkTGlzdFJlc3VsdDxUPj4ge1xuICAgIGNvbnN0IHJvdXRlRWxlbWVudCA9IGF3YWl0IHRoaXMuZ2V0Q29uZmlnRW50aXR5KGVudGl0eU5hbWUpO1xuXG4gICAgbGV0IGh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgnU2tpcCcsIHJlcXVlc3Quc2tpcCkuc2V0KCdUYWtlJywgcmVxdWVzdC50YWtlKTtcbiAgICBpZiAocmVxdWVzdD8uc29ydCAmJiByZXF1ZXN0Py5zb3J0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNvcnRQYXJhbSA9IHJlcXVlc3Q/LnNvcnQubWFwKChzb3J0OiBhbnkpID0+IGAke3NvcnQuZmllbGR9OiR7c29ydC5kaXJ9YCkuam9pbignLCcpO1xuICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuc2V0KCckb3JkZXJieScsIHNvcnRQYXJhbSk7XG4gICAgfVxuXG4gICAgY29uc3QgZ3JlYXRlclRoYW5PcGVyYXRvciA9IHRoaXMuZmlsdGVyU2VydmljZS5nZXRPcGVyYXRvcignZ3JlYXRlclRoYW4nKTtcbiAgICBjb25zdCBsZXNzVGhhbk9wZXJhdG9yID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmdldE9wZXJhdG9yKCdsZXNzVGhhbicpO1xuICAgIGZ1bmN0aW9uIGdlbmVyYXRlUXVlcnlTdHJpbmcoZmlsdGVyOiBhbnkpIHtcbiAgICAgIGlmICghZmlsdGVyLmZpbHRlcnMpIHtcbiAgICAgICAgLy8gQmFzZSBjYXNlOiBzaW5nbGUgZmlsdGVyXG4gICAgICAgIGlmICh0eXBlb2YgZmlsdGVyLnZhbHVlID09PSAnb2JqZWN0JyAmJiBmaWx0ZXIub3BlcmF0b3IudHlwZSA9PT0gJ2JldHdlZW4nKSB7XG4gICAgICAgICAgcmV0dXJuIGAke2ZpbHRlci5maWVsZH0gJHtncmVhdGVyVGhhbk9wZXJhdG9yLnR5cGV9ICcke2ZpbHRlci52YWx1ZS5mcm9tfScgYW5kICR7ZmlsdGVyLmZpZWxkfSAke2xlc3NUaGFuT3BlcmF0b3IudHlwZX0gJyR7ZmlsdGVyLnZhbHVlLnRvfSdgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBgJHtmaWx0ZXIuZmllbGR9ICR7ZmlsdGVyLm9wZXJhdG9yLnR5cGV9ICcke2ZpbHRlci52YWx1ZX0nYDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghZmlsdGVyLmZpbHRlcnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZSBjYXNlOiBtdWx0aXBsZSBmaWx0ZXJzXG5cbiAgICAgICAgY29uc3QgZmlsdGVyU3RyaW5ncyA9IGZpbHRlci5maWx0ZXJzLm1hcCgoc3ViRmlsdGVyOiBhbnkpID0+IGdlbmVyYXRlUXVlcnlTdHJpbmcoc3ViRmlsdGVyKSk7XG4gICAgICAgIGNvbnN0IGxvZ2ljID0gZmlsdGVyLmxvZ2ljIHx8ICdBTkQnOyAvLyBEZWZhdWx0IGxvZ2ljIGlzICdBTkQnIGlmIG5vdCBwcm92aWRlZFxuICAgICAgICByZXR1cm4gYCR7ZmlsdGVyU3RyaW5ncy5maWx0ZXIoKGk6IGFueSkgPT4gaSkuam9pbihgICR7bG9naWN9IGApfWA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHF1ZXJ5U3RyaW5nID0gJyc7XG5cbiAgICBpZiAocmVxdWVzdC5maWx0ZXIpIHtcbiAgICAgIGNvbnN0IGZpbHRlciA9IHJlcXVlc3QuZmlsdGVyO1xuICAgICAgaWYgKGZpbHRlci5maWx0ZXJzICYmIGZpbHRlci5maWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gQ29uc3RydWN0IGZpbHRlciBzdHJpbmcgZnJvbSBwcm92aWRlZCBmaWx0ZXJzXG5cbiAgICAgICAgY29uc3QgZHluYW1pY1F1ZXJpZXMgPSBnZW5lcmF0ZVF1ZXJ5U3RyaW5nKGZpbHRlcik7XG4gICAgICAgIGNvbnNvbGUubG9nKHsgZHluYW1pY1F1ZXJpZXM6IGR5bmFtaWNRdWVyaWVzIH0pO1xuXG4gICAgICAgIC8vIEFwcGVuZCBkeW5hbWljIGZpbHRlcnMgdG8gY3VzdG9tIGZpbHRlciwgaWYgYm90aCBleGlzdFxuICAgICAgICBxdWVyeVN0cmluZyA9IChxdWVyeVN0cmluZyA/IGAke3F1ZXJ5U3RyaW5nfSwke2R5bmFtaWNRdWVyaWVzfWAgOiBkeW5hbWljUXVlcmllcykgYXMgc3RyaW5nO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBTZXQgdGhlICRmaWx0ZXIgcGFyYW1ldGVyIGlmIHRoZXJlIGFyZSBhbnkgZmlsdGVyc1xuICAgIGlmIChxdWVyeVN0cmluZykge1xuICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuc2V0KCckcXVlcnknLCBxdWVyeVN0cmluZyk7XG4gICAgfVxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuaHR0cC5nZXQ8YW55PihcbiAgICAgICAgYCR7dGhpcy5tYWluVXJsfS8ke3JvdXRlRWxlbWVudC52ZXJzaW9ufS8ke3JvdXRlRWxlbWVudC5hcmVhfS8ke3JvdXRlRWxlbWVudC5tb2R1bGV9LyR7XG4gICAgICAgICAgcm91dGVFbGVtZW50LmVudGl0eVxuICAgICAgICB9YCxcbiAgICAgICAgeyBwYXJhbXM6IGh0dHBQYXJhbXMgfVxuICAgICAgKVxuICAgICkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRvdGFsOiByZXNwb25zZS50b3RhbENvdW50LFxuICAgICAgICBpdGVtczogcmVzcG9uc2UuaXRlbXMsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG4iXX0=","import { AXPFileStorageService, AXPFileStorageStatus, } from '@acorex/platform/common';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { firstValueFrom, catchError, of } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class AXCFileStorageApiService extends AXPFileStorageService {\n constructor() {\n super(...arguments);\n this.http = inject(HttpClient);\n //#region ---- API Endpoints ----\n this.baseUrl = '/api/file-storage';\n //#endregion\n //#region ---- Fallback Data ----\n this.fallbackFileInfo = {\n fileId: 'fallback-file-id',\n refId: 'fallback-ref-id',\n refType: 'fallback-ref-type',\n category: 'fallback-category',\n size: 0,\n mimeType: 'application/octet-stream',\n uploadedAt: new Date(),\n isPublic: true,\n isPrimary: false,\n status: AXPFileStorageStatus.Temporary,\n name: 'fallback-file',\n binary: new File([''], 'fallback-file'),\n };\n }\n //#endregion\n async save(request) {\n try {\n const formData = new FormData();\n formData.append('file', request.file);\n formData.append('refId', request.refId);\n formData.append('refType', request.refType);\n formData.append('category', request.category);\n if (request.name) {\n formData.append('name', request.name);\n }\n if (request.path) {\n formData.append('path', request.path);\n }\n if (request.isPrimary !== undefined) {\n formData.append('isPrimary', request.isPrimary.toString());\n }\n if (request.status) {\n formData.append('status', request.status);\n }\n if (request.metadata) {\n formData.append('metadata', JSON.stringify(request.metadata));\n }\n return await firstValueFrom(this.http.post(`${this.baseUrl}/save`, formData).pipe(catchError(() => of(this.fallbackFileInfo))));\n }\n catch {\n return this.fallbackFileInfo;\n }\n }\n async update(request) {\n try {\n const updateData = {\n metadata: request.metadata,\n };\n if (request.path !== undefined) {\n updateData.path = request.path;\n }\n if (request.isPrimary !== undefined) {\n updateData.isPrimary = request.isPrimary;\n }\n return await firstValueFrom(this.http.put(`${this.baseUrl}/update/${request.fileId}`, updateData).pipe(catchError(() => of(this.fallbackFileInfo))));\n }\n catch {\n return this.fallbackFileInfo;\n }\n }\n async find(request) {\n try {\n let params = new HttpParams();\n if (request.refId) {\n params = params.set('refId', request.refId);\n }\n if (request.refType) {\n params = params.set('refType', request.refType);\n }\n if (request.category) {\n params = params.set('category', request.category);\n }\n if (request.mimeType) {\n params = params.set('mimeType', request.mimeType);\n }\n if (request.isPublic !== undefined) {\n params = params.set('isPublic', request.isPublic.toString());\n }\n if (request.isPrimary !== undefined) {\n params = params.set('isPrimary', request.isPrimary.toString());\n }\n if (request.uploadedAtRange) {\n params = params.set('uploadedAtFrom', request.uploadedAtRange.from.toISOString());\n params = params.set('uploadedAtTo', request.uploadedAtRange.to.toISOString());\n }\n return await firstValueFrom(this.http.get(`${this.baseUrl}/find`, { params }).pipe(catchError(() => of([]))));\n }\n catch {\n return [];\n }\n }\n async getInfo(fileId) {\n try {\n return await firstValueFrom(this.http.get(`${this.baseUrl}/info/${fileId}`).pipe(catchError(() => of(this.fallbackFileInfo))));\n }\n catch {\n return this.fallbackFileInfo;\n }\n }\n async findMany(ids) {\n try {\n return await firstValueFrom(this.http.post(`${this.baseUrl}/find-many`, { ids }).pipe(catchError(() => of([]))));\n }\n catch {\n return [];\n }\n }\n async remove(fileId) {\n try {\n await firstValueFrom(this.http.delete(`${this.baseUrl}/remove/${fileId}`).pipe(catchError(() => of(void 0))));\n }\n catch {\n // Silently fail in fallback mode\n }\n }\n async commit(fileId) {\n try {\n await firstValueFrom(this.http.post(`${this.baseUrl}/commit/${fileId}`, {}).pipe(catchError(() => of(void 0))));\n }\n catch {\n // Silently fail in fallback mode\n }\n }\n async markForDeletion(fileId) {\n try {\n await firstValueFrom(this.http.post(`${this.baseUrl}/mark-for-deletion/${fileId}`, {}).pipe(catchError(() => of(void 0))));\n }\n catch {\n // Silently fail in fallback mode\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCFileStorageApiService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCFileStorageApiService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCFileStorageApiService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zdG9yYWdlLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb25uZWN0aXZpdHkvYXBpL3NyYy9saWIvZmlsZS1zdG9yYWdlLWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxxQkFBcUIsRUFDckIsb0JBQW9CLEdBR3JCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBR3RELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxxQkFBcUI7SUFEbkU7O1FBRW1CLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFM0MscUNBQXFDO1FBRXBCLFlBQU8sR0FBRyxtQkFBbUIsQ0FBQztRQUUvQyxZQUFZO1FBRVoscUNBQXFDO1FBRXBCLHFCQUFnQixHQUF1QjtZQUN0RCxNQUFNLEVBQUUsa0JBQWtCO1lBQzFCLEtBQUssRUFBRSxpQkFBaUI7WUFDeEIsT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLElBQUksRUFBRSxDQUFDO1lBQ1AsUUFBUSxFQUFFLDBCQUEwQjtZQUNwQyxVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDdEIsUUFBUSxFQUFFLElBQUk7WUFDZCxTQUFTLEVBQUUsS0FBSztZQUNoQixNQUFNLEVBQUUsb0JBQW9CLENBQUMsU0FBUztZQUN0QyxJQUFJLEVBQUUsZUFBZTtZQUNyQixNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxlQUFlLENBQUM7U0FDeEMsQ0FB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SUFBSSxDQUNwRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDN0IsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGlDQUFpQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQzsrR0FwTFUsd0JBQXdCO21IQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWFBGaWxlU3RvcmFnZUNyZWF0ZVJlcXVlc3QsXG4gIEFYUEZpbGVTdG9yYWdlRmluZFJlcXVlc3QsXG4gIEFYUEZpbGVTdG9yYWdlSW5mbyxcbiAgQVhQRmlsZVN0b3JhZ2VTZXJ2aWNlLFxuICBBWFBGaWxlU3RvcmFnZVN0YXR1cyxcbiAgQVhQRmlsZVN0b3JhZ2VVcGRhdGVSZXF1ZXN0LFxuICBBWFBGaWxlTWFueVN0b3JhZ2VJbmZvLFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgY2F0Y2hFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYQ0ZpbGVTdG9yYWdlQXBpU2VydmljZSBleHRlbmRzIEFYUEZpbGVTdG9yYWdlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICAvLyNyZWdpb24gLS0tLSAgIEFQSSBFbmRwb2ludHMgICAtLS0tXG5cbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlVXJsID0gJy9hcGkvZmlsZS1zdG9yYWdlJztcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEZhbGxiYWNrIERhdGEgICAtLS0tXG5cbiAgcHJpdmF0ZSByZWFkb25seSBmYWxsYmFja0ZpbGVJbmZvOiBBWFBGaWxlU3RvcmFnZUluZm8gPSB7XG4gICAgZmlsZUlkOiAnZmFsbGJhY2stZmlsZS1pZCcsXG4gICAgcmVmSWQ6ICdmYWxsYmFjay1yZWYtaWQnLFxuICAgIHJlZlR5cGU6ICdmYWxsYmFjay1yZWYtdHlwZScsXG4gICAgY2F0ZWdvcnk6ICdmYWxsYmFjay1jYXRlZ29yeScsXG4gICAgc2l6ZTogMCxcbiAgICBtaW1lVHlwZTogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsXG4gICAgdXBsb2FkZWRBdDogbmV3IERhdGUoKSxcbiAgICBpc1B1YmxpYzogdHJ1ZSxcbiAgICBpc1ByaW1hcnk6IGZhbHNlLFxuICAgIHN0YXR1czogQVhQRmlsZVN0b3JhZ2VTdGF0dXMuVGVtcG9yYXJ5LFxuICAgIG5hbWU6ICdmYWxsYmFjay1maWxlJyxcbiAgICBiaW5hcnk6IG5ldyBGaWxlKFsnJ10sICdmYWxsYmFjay1maWxlJyksXG4gIH07XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgYXN5bmMgc2F2ZShyZXF1ZXN0OiBBWFBGaWxlU3RvcmFnZUNyZWF0ZVJlcXVlc3QpOiBQcm9taXNlPEFYUEZpbGVTdG9yYWdlSW5mbz4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgcmVxdWVzdC5maWxlKTtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVmSWQnLCByZXF1ZXN0LnJlZklkKTtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVmVHlwZScsIHJlcXVlc3QucmVmVHlwZSk7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2NhdGVnb3J5JywgcmVxdWVzdC5jYXRlZ29yeSk7XG4gICAgICBcbiAgICAgIGlmIChyZXF1ZXN0Lm5hbWUpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCduYW1lJywgcmVxdWVzdC5uYW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXF1ZXN0LnBhdGgpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXRoJywgcmVxdWVzdC5wYXRoKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXF1ZXN0LmlzUHJpbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnaXNQcmltYXJ5JywgcmVxdWVzdC5pc1ByaW1hcnkudG9TdHJpbmcoKSk7XG4gICAgICB9XG4gICAgICBpZiAocmVxdWVzdC5zdGF0dXMpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdzdGF0dXMnLCByZXF1ZXN0LnN0YXR1cyk7XG4gICAgICB9XG4gICAgICBpZiAocmVxdWVzdC5tZXRhZGF0YSkge1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ21ldGFkYXRhJywgSlNPTi5zdHJpbmdpZnkocmVxdWVzdC5tZXRhZGF0YSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuaHR0cC5wb3N0PEFYUEZpbGVTdG9yYWdlSW5mbz4oYCR7dGhpcy5iYXNlVXJsfS9zYXZlYCwgZm9ybURhdGEpLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih0aGlzLmZhbGxiYWNrRmlsZUluZm8pKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHRoaXMuZmFsbGJhY2tGaWxlSW5mbztcbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGRhdGUocmVxdWVzdDogQVhQRmlsZVN0b3JhZ2VVcGRhdGVSZXF1ZXN0KTogUHJvbWlzZTxBWFBGaWxlU3RvcmFnZUluZm8+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXBkYXRlRGF0YTogYW55ID0ge1xuICAgICAgICBtZXRhZGF0YTogcmVxdWVzdC5tZXRhZGF0YSxcbiAgICAgIH07XG4gICAgICBcbiAgICAgIGlmIChyZXF1ZXN0LnBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cGRhdGVEYXRhLnBhdGggPSByZXF1ZXN0LnBhdGg7XG4gICAgICB9XG4gICAgICBpZiAocmVxdWVzdC5pc1ByaW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cGRhdGVEYXRhLmlzUHJpbWFyeSA9IHJlcXVlc3QuaXNQcmltYXJ5O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuaHR0cC5wdXQ8QVhQRmlsZVN0b3JhZ2VJbmZvPihgJHt0aGlzLmJhc2VVcmx9L3VwZGF0ZS8ke3JlcXVlc3QuZmlsZUlkfWAsIHVwZGF0ZURhdGEpLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih0aGlzLmZhbGxiYWNrRmlsZUluZm8pKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHRoaXMuZmFsbGJhY2tGaWxlSW5mbztcbiAgICB9XG4gIH1cblxuICBhc3luYyBmaW5kKHJlcXVlc3Q6IEFYUEZpbGVTdG9yYWdlRmluZFJlcXVlc3QpOiBQcm9taXNlPEFYUEZpbGVTdG9yYWdlSW5mb1tdPiB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgICAgXG4gICAgICBpZiAocmVxdWVzdC5yZWZJZCkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdyZWZJZCcsIHJlcXVlc3QucmVmSWQpO1xuICAgICAgfVxuICAgICAgaWYgKHJlcXVlc3QucmVmVHlwZSkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdyZWZUeXBlJywgcmVxdWVzdC5yZWZUeXBlKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXF1ZXN0LmNhdGVnb3J5KSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2NhdGVnb3J5JywgcmVxdWVzdC5jYXRlZ29yeSk7XG4gICAgICB9XG4gICAgICBpZiAocmVxdWVzdC5taW1lVHlwZSkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdtaW1lVHlwZScsIHJlcXVlc3QubWltZVR5cGUpO1xuICAgICAgfVxuICAgICAgaWYgKHJlcXVlc3QuaXNQdWJsaWMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpc1B1YmxpYycsIHJlcXVlc3QuaXNQdWJsaWMudG9TdHJpbmcoKSk7XG4gICAgICB9XG4gICAgICBpZiAocmVxdWVzdC5pc1ByaW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpc1ByaW1hcnknLCByZXF1ZXN0LmlzUHJpbWFyeS50b1N0cmluZygpKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXF1ZXN0LnVwbG9hZGVkQXRSYW5nZSkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd1cGxvYWRlZEF0RnJvbScsIHJlcXVlc3QudXBsb2FkZWRBdFJhbmdlLmZyb20udG9JU09TdHJpbmcoKSk7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3VwbG9hZGVkQXRUbycsIHJlcXVlc3QudXBsb2FkZWRBdFJhbmdlLnRvLnRvSVNPU3RyaW5nKCkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuaHR0cC5nZXQ8QVhQRmlsZVN0b3JhZ2VJbmZvW10+KGAke3RoaXMuYmFzZVVybH0vZmluZGAsIHsgcGFyYW1zIH0pLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0SW5mbyhmaWxlSWQ6IHN0cmluZyk6IFByb21pc2U8QVhQRmlsZVN0b3JhZ2VJbmZvPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgdGhpcy5odHRwLmdldDxBWFBGaWxlU3RvcmFnZUluZm8+KGAke3RoaXMuYmFzZVVybH0vaW5mby8ke2ZpbGVJZH1gKS5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YodGhpcy5mYWxsYmFja0ZpbGVJbmZvKSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB0aGlzLmZhbGxiYWNrRmlsZUluZm87XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZmluZE1hbnkoaWRzOiBzdHJpbmdbXSk6IFByb21pc2U8QVhQRmlsZU1hbnlTdG9yYWdlSW5mb1tdPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgdGhpcy5odHRwLnBvc3Q8QVhQRmlsZU1hbnlTdG9yYWdlSW5mb1tdPihgJHt0aGlzLmJhc2VVcmx9L2ZpbmQtbWFueWAsIHsgaWRzIH0pLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVtb3ZlKGZpbGVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuYmFzZVVybH0vcmVtb3ZlLyR7ZmlsZUlkfWApLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih2b2lkIDApKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gU2lsZW50bHkgZmFpbCBpbiBmYWxsYmFjayBtb2RlXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY29tbWl0KGZpbGVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmJhc2VVcmx9L2NvbW1pdC8ke2ZpbGVJZH1gLCB7fSkucGlwZShcbiAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHZvaWQgMCkpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBTaWxlbnRseSBmYWlsIGluIGZhbGxiYWNrIG1vZGVcbiAgICB9XG4gIH1cblxuICBhc3luYyBtYXJrRm9yRGVsZXRpb24oZmlsZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuYmFzZVVybH0vbWFyay1mb3ItZGVsZXRpb24vJHtmaWxlSWR9YCwge30pLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih2b2lkIDApKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gU2lsZW50bHkgZmFpbCBpbiBmYWxsYmFjayBtb2RlXG4gICAgfVxuICB9XG59ICJdfQ==","import { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { map } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nexport class AXMOidcApplicationLoader {\n constructor(http) {\n this.http = http;\n this.configs = inject(AXP_ROOT_CONFIG_TOKEN);\n this.apiGetApps = `${this.configs.baseUrl}/applications/applications-for-current-tenant`;\n this.apiSetApp = `${this.configs.baseUrl}/SetApplication`;\n }\n getList() {\n return this.http.get(this.apiGetApps).pipe(map((response) => {\n return response.items.map((item) => this.mapToAXPApplication(item));\n }));\n }\n set(application) {\n return Promise.resolve();\n }\n // //TODO: shoud be removed\n // set(application: AXPApplication): Observable<AXPRefreshTokenResult> {\n // return this.http.post<any>(this.apiSetApp, { applicationId: application.id }).pipe(\n // map((response) => {\n // return {\n // succeed: true,\n // data: {\n // accessToken: response.token,\n // refreshToken: response.token,\n // }\n // };\n // })\n // );\n // }\n mapToAXPApplication(item) {\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.title || 'defaultTitle',\n version: item.version || '1.0.0',\n description: item.description,\n logo: item.logo, // Assuming logo is of type AXPLogoConfig or undefined\n editionName: item.editionName,\n // features: item.features || [],\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcApplicationLoader, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcApplicationLoader }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcApplicationLoader, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.HttpClient }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24ubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb25uZWN0aXZpdHkvYXBpL3NyYy9saWIvYXV0aC9vaWRjL2FwcGxpY2F0aW9uLmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBR3ZDLE1BQU0sT0FBTyx3QkFBd0I7SUFJbkMsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUg1QixZQUFPLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDeEMsZUFBVSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLCtDQUErQyxDQUFDO1FBQ3BGLGNBQVMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxpQkFBaUIsQ0FBQztJQUNyQixDQUFDO0lBR3pDLE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFtQixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUMxRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNmLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsR0FBRyxDQUFDLFdBQTJCO1FBQzdCLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCwyQkFBMkI7SUFDM0Isd0VBQXdFO0lBQ3hFLHdGQUF3RjtJQUN4RiwwQkFBMEI7SUFDMUIsaUJBQWlCO0lBQ2pCLHlCQUF5QjtJQUN6QixrQkFBa0I7SUFDbEIseUNBQXlDO0lBQ3pDLDBDQUEwQztJQUMxQyxZQUFZO0lBQ1osV0FBVztJQUNYLFNBQVM7SUFDVCxPQUFPO0lBQ1AsSUFBSTtJQUVJLG1CQUFtQixDQUFDLElBQVM7UUFDbkMsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLGFBQWE7WUFDaEMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksY0FBYztZQUNuQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPO1lBQ2hDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxzREFBc0Q7WUFDdkUsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLGlDQUFpQztTQUNsQyxDQUFDO0lBQ0osQ0FBQzsrR0E3Q1Usd0JBQXdCO21IQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBBcHBsaWNhdGlvbiwgQVhQQXBwbGljYXRpb25Mb2FkZXIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQX1JPT1RfQ09ORklHX1RPS0VOIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWE1PaWRjQXBwbGljYXRpb25Mb2FkZXIgaW1wbGVtZW50cyBBWFBBcHBsaWNhdGlvbkxvYWRlciB7XG4gIHByaXZhdGUgY29uZmlncyA9IGluamVjdChBWFBfUk9PVF9DT05GSUdfVE9LRU4pO1xuICBwcml2YXRlIGFwaUdldEFwcHMgPSBgJHt0aGlzLmNvbmZpZ3MuYmFzZVVybH0vYXBwbGljYXRpb25zL2FwcGxpY2F0aW9ucy1mb3ItY3VycmVudC10ZW5hbnRgO1xuICBwcml2YXRlIGFwaVNldEFwcCA9IGAke3RoaXMuY29uZmlncy5iYXNlVXJsfS9TZXRBcHBsaWNhdGlvbmA7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkgeyB9XG5cblxuICBnZXRMaXN0KCk6IE9ic2VydmFibGU8QVhQQXBwbGljYXRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PHsgaXRlbXM6IGFueVtdIH0+KHRoaXMuYXBpR2V0QXBwcykucGlwZShcbiAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLml0ZW1zLm1hcCgoaXRlbSkgPT4gdGhpcy5tYXBUb0FYUEFwcGxpY2F0aW9uKGl0ZW0pKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNldChhcHBsaWNhdGlvbjogQVhQQXBwbGljYXRpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICAvLyAvL1RPRE86IHNob3VkIGJlIHJlbW92ZWRcbiAgLy8gc2V0KGFwcGxpY2F0aW9uOiBBWFBBcHBsaWNhdGlvbik6IE9ic2VydmFibGU8QVhQUmVmcmVzaFRva2VuUmVzdWx0PiB7XG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odGhpcy5hcGlTZXRBcHAsIHsgYXBwbGljYXRpb25JZDogYXBwbGljYXRpb24uaWQgfSkucGlwZShcbiAgLy8gICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgLy8gICAgICAgcmV0dXJuIHtcbiAgLy8gICAgICAgICBzdWNjZWVkOiB0cnVlLFxuICAvLyAgICAgICAgIGRhdGE6IHtcbiAgLy8gICAgICAgICAgIGFjY2Vzc1Rva2VuOiByZXNwb25zZS50b2tlbixcbiAgLy8gICAgICAgICAgIHJlZnJlc2hUb2tlbjogcmVzcG9uc2UudG9rZW4sXG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9O1xuICAvLyAgICAgfSlcbiAgLy8gICApO1xuICAvLyB9XG5cbiAgcHJpdmF0ZSBtYXBUb0FYUEFwcGxpY2F0aW9uKGl0ZW06IGFueSk6IEFYUEFwcGxpY2F0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICBuYW1lOiBpdGVtLm5hbWUgfHwgJ2RlZmF1bHROYW1lJyxcbiAgICAgIHRpdGxlOiBpdGVtLnRpdGxlIHx8ICdkZWZhdWx0VGl0bGUnLFxuICAgICAgdmVyc2lvbjogaXRlbS52ZXJzaW9uIHx8ICcxLjAuMCcsXG4gICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgIGxvZ286IGl0ZW0ubG9nbywgLy8gQXNzdW1pbmcgbG9nbyBpcyBvZiB0eXBlIEFYUExvZ29Db25maWcgb3IgdW5kZWZpbmVkXG4gICAgICBlZGl0aW9uTmFtZTogaXRlbS5lZGl0aW9uTmFtZSxcbiAgICAgIC8vIGZlYXR1cmVzOiBpdGVtLmZlYXR1cmVzIHx8IFtdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==","import { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, filter, of, switchMap, take, tap } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nexport class AXMConfigurationService {\n constructor(http) {\n this.http = http;\n this.configs = inject(AXP_ROOT_CONFIG_TOKEN);\n this.applicationConfig = null;\n this.apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\n this.fetchInProgress = false;\n this.configSubject = new BehaviorSubject(null);\n this.init().subscribe(); // Automatically trigger configuration load on service instantiation\n }\n init() {\n if (!this.fetchInProgress) {\n this.fetchInProgress = true;\n return this.http.get(this.apiGetConfig).pipe(tap((response) => {\n this.applicationConfig = response;\n this.configSubject.next(this.applicationConfig);\n this.fetchInProgress = false;\n }));\n }\n else {\n // Adjusted approach to handle TypeScript's type safety requirements\n return this.configSubject.asObservable().pipe(filter((config) => config !== null), take(1) // Ensures it completes after emitting the first non-null value\n );\n }\n }\n getConfig() {\n if (this.applicationConfig) {\n // If the config is already loaded, return it immediately\n return of(this.applicationConfig);\n }\n else {\n // If the config is not loaded, initiate loading\n return this.configSubject.asObservable().pipe(filter((config) => config !== null), take(1), // Ensure it only emits the first non-null value and completes\n switchMap(() => of(this.applicationConfig)));\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMConfigurationService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMConfigurationService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMConfigurationService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.HttpClient }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb25uZWN0aXZpdHkvYXBpL3NyYy9saWIvYXV0aC9vaWRjL2NvbmZpZ3VyYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUE2RHJGLE1BQU0sT0FBTyx1QkFBdUI7SUFPbEMsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQU41QixZQUFPLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDeEMsc0JBQWlCLEdBQW9DLElBQUksQ0FBQztRQUMxRCxpQkFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLGdDQUFnQyxDQUFDO1FBQ3ZFLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGtCQUFhLEdBQXFELElBQUksZUFBZSxDQUFrQyxJQUFJLENBQUMsQ0FBQztRQUduSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxvRUFBb0U7SUFDL0YsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQTJCLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQ3BFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixvRUFBb0U7WUFDcEUsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FDM0MsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFzQyxFQUFFLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxFQUN2RSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsK0RBQStEO2FBQ3hFLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLHlEQUF5RDtZQUN6RCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNOLGdEQUFnRDtZQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUMzQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsRUFDbkMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLDhEQUE4RDtZQUN2RSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBa0IsQ0FBQyxDQUFDLENBQzdDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzsrR0ExQ1UsdUJBQXVCO21IQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYTV9BVVRIX0NPTkZJR19UT0tFTiB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy9hdXRoJztcbmltcG9ydCB7IEFYUF9ST09UX0NPTkZJR19UT0tFTiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZmlsdGVyLCBvZiwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBMb2NhbGl6YXRpb24ge1xuICB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+O1xuICByZXNvdXJjZXM6IFJlY29yZDxzdHJpbmcsIFJlc291cmNlPjtcbiAgbGFuZ3VhZ2VzOiBMYW5ndWFnZVtdO1xuICBjdXJyZW50Q3VsdHVyZTogQ3VsdHVyZTtcbiAgZGVmYXVsdFJlc291cmNlTmFtZTogc3RyaW5nO1xuICBsYW5ndWFnZXNNYXA6IFJlY29yZDxzdHJpbmcsIE5hbWVWYWx1ZVtdPjtcbiAgbGFuZ3VhZ2VGaWxlc01hcDogUmVjb3JkPHN0cmluZywgTmFtZVZhbHVlW10+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlIHtcbiAgdGV4dHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGJhc2VSZXNvdXJjZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhbmd1YWdlIHtcbiAgY3VsdHVyZU5hbWU6IHN0cmluZztcbiAgdWlDdWx0dXJlTmFtZTogc3RyaW5nO1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICB0d29MZXR0ZXJJU09MYW5ndWFnZU5hbWU6IHN0cmluZztcbiAgZmxhZ0ljb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdWx0dXJlIHtcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgLy8gLi4uIG90aGVyIHByb3BlcnRpZXNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOYW1lVmFsdWUge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8vIFJlcGVhdCBzaW1pbGFyIHBhdHRlcm5zIGZvciAnYXV0aCcsICdzZXR0aW5nJywgJ2N1cnJlbnRVc2VyJywgZXRjLlxuZXhwb3J0IGludGVyZmFjZSBBdXRoIHtcbiAgZ3JhbnRlZFBvbGljaWVzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbn1cblxuLy8gTWFpbiBjb25maWd1cmF0aW9uIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb24ge1xuICBsb2NhbGl6YXRpb246IExvY2FsaXphdGlvbjtcbiAgYXV0aDogQXV0aDtcbiAgc2V0dGluZzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgY3VycmVudFVzZXI6IGFueTtcbiAgZmVhdHVyZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGdsb2JhbEZlYXR1cmVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBtdWx0aVRlbmFuY3k6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGN1cnJlbnRDdWx0dXJlOiBDdWx0dXJlO1xuICB0aW1pbmc6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGNsb2NrOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBvYmplY3RFeHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBleHRyYVByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgLy8gLi4uIG90aGVyIHByb3BlcnRpZXNcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYTUNvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb25maWdzID0gaW5qZWN0KEFYUF9ST09UX0NPTkZJR19UT0tFTik7XG4gIHByaXZhdGUgYXBwbGljYXRpb25Db25maWc6IEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGFwaUdldENvbmZpZyA9IGAke3RoaXMuY29uZmlncy5iYXNlVXJsfS9hYnAvYXBwbGljYXRpb24tY29uZmlndXJhdGlvbmA7XG4gIHByaXZhdGUgZmV0Y2hJblByb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgY29uZmlnU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbiB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb24gfCBudWxsPihudWxsKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICB0aGlzLmluaXQoKS5zdWJzY3JpYmUoKTsgLy8gQXV0b21hdGljYWxseSB0cmlnZ2VyIGNvbmZpZ3VyYXRpb24gbG9hZCBvbiBzZXJ2aWNlIGluc3RhbnRpYXRpb25cbiAgfVxuXG4gIHB1YmxpYyBpbml0KCk6IE9ic2VydmFibGU8QXBwbGljYXRpb25Db25maWd1cmF0aW9uPiB7XG4gICAgaWYgKCF0aGlzLmZldGNoSW5Qcm9ncmVzcykge1xuICAgICAgdGhpcy5mZXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBwbGljYXRpb25Db25maWd1cmF0aW9uPih0aGlzLmFwaUdldENvbmZpZykucGlwZShcbiAgICAgICAgdGFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuYXBwbGljYXRpb25Db25maWcgPSByZXNwb25zZTtcbiAgICAgICAgICB0aGlzLmNvbmZpZ1N1YmplY3QubmV4dCh0aGlzLmFwcGxpY2F0aW9uQ29uZmlnKTtcbiAgICAgICAgICB0aGlzLmZldGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQWRqdXN0ZWQgYXBwcm9hY2ggdG8gaGFuZGxlIFR5cGVTY3JpcHQncyB0eXBlIHNhZmV0eSByZXF1aXJlbWVudHNcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgICAgZmlsdGVyKChjb25maWcpOiBjb25maWcgaXMgQXBwbGljYXRpb25Db25maWd1cmF0aW9uID0+IGNvbmZpZyAhPT0gbnVsbCksXG4gICAgICAgIHRha2UoMSkgLy8gRW5zdXJlcyBpdCBjb21wbGV0ZXMgYWZ0ZXIgZW1pdHRpbmcgdGhlIGZpcnN0IG5vbi1udWxsIHZhbHVlXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbmZpZygpOiBPYnNlcnZhYmxlPEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbj4ge1xuICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uQ29uZmlnKSB7XG4gICAgICAvLyBJZiB0aGUgY29uZmlnIGlzIGFscmVhZHkgbG9hZGVkLCByZXR1cm4gaXQgaW1tZWRpYXRlbHlcbiAgICAgIHJldHVybiBvZih0aGlzLmFwcGxpY2F0aW9uQ29uZmlnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgdGhlIGNvbmZpZyBpcyBub3QgbG9hZGVkLCBpbml0aWF0ZSBsb2FkaW5nXG4gICAgICByZXR1cm4gdGhpcy5jb25maWdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgIGZpbHRlcigoY29uZmlnKSA9PiBjb25maWcgIT09IG51bGwpLFxuICAgICAgICB0YWtlKDEpLCAvLyBFbnN1cmUgaXQgb25seSBlbWl0cyB0aGUgZmlyc3Qgbm9uLW51bGwgdmFsdWUgYW5kIGNvbXBsZXRlc1xuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gb2YodGhpcy5hcHBsaWNhdGlvbkNvbmZpZyEpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { delay, of } from 'rxjs';\nexport class AXMOidcFeatureLoader {\n constructor() {\n this.list = [\n {\n name: 'axp-entity-list-custom-view',\n title: 'Custom View',\n value: false\n },\n {\n name: 'axp-entity-list-quick-search',\n title: 'Custom View',\n value: false\n }\n ];\n }\n getList() {\n return of(this.list).pipe(delay(0));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nvbm5lY3Rpdml0eS9hcGkvc3JjL2xpYi9hdXRoL29pZGMvZmVhdHVyZS5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFjLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0MsTUFBTSxPQUFPLG9CQUFvQjtJQUFqQztRQUVVLFNBQUksR0FBaUI7WUFDM0I7Z0JBQ0UsSUFBSSxFQUFFLDZCQUE2QjtnQkFDbkMsS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLEtBQUssRUFBRSxLQUFLO2FBQ2I7WUFDRDtnQkFDRSxJQUFJLEVBQUUsOEJBQThCO2dCQUNwQyxLQUFLLEVBQUUsYUFBYTtnQkFDcEIsS0FBSyxFQUFFLEtBQUs7YUFDYjtTQUNGLENBQUE7SUFLSCxDQUFDO0lBSEMsT0FBTztRQUNMLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQRmVhdHVyZSwgQVhQRmVhdHVyZUxvYWRlciB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkZWxheSwgb2YgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIEFYTU9pZGNGZWF0dXJlTG9hZGVyIGltcGxlbWVudHMgQVhQRmVhdHVyZUxvYWRlciB7XG5cbiAgcHJpdmF0ZSBsaXN0OiBBWFBGZWF0dXJlW10gPSBbXG4gICAge1xuICAgICAgbmFtZTogJ2F4cC1lbnRpdHktbGlzdC1jdXN0b20tdmlldycsXG4gICAgICB0aXRsZTogJ0N1c3RvbSBWaWV3JyxcbiAgICAgIHZhbHVlOiBmYWxzZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2F4cC1lbnRpdHktbGlzdC1xdWljay1zZWFyY2gnLFxuICAgICAgdGl0bGU6ICdDdXN0b20gVmlldycsXG4gICAgICB2YWx1ZTogZmFsc2VcbiAgICB9XG4gIF1cblxuICBnZXRMaXN0KCk6IE9ic2VydmFibGU8QVhQRmVhdHVyZVtdPiB7XG4gICAgcmV0dXJuIG9mKHRoaXMubGlzdCkucGlwZShkZWxheSgwKSk7XG4gIH1cbn1cbiJdfQ==","import { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport { AXPAuthStrategy, AXPSessionService, JwtUtil, PkceUtil, TimeUtil, } from '@acorex/platform/auth';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { firstValueFrom } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class AXCAPIOidcStrategy extends AXPAuthStrategy {\n constructor() {\n super(...arguments);\n this.aXMAuthConfigs = inject(AXM_AUTH_CONFIG_TOKEN);\n this.oauthService = inject(OAuthService);\n this.http = inject(HttpClient);\n this.sessionService = inject(AXPSessionService);\n this.router = inject(Router);\n }\n async configureOAuth() {\n if (this.openidConfigurationInfo)\n return;\n // Validation: اطمینان از وجود authConfig\n if (!this.aXMAuthConfigs.authConfig) {\n throw new Error('authConfig is missing. Please check your environment configuration.');\n }\n this.oauthService.configure(this.aXMAuthConfigs.authConfig);\n this.oauthService.setStorage(localStorage);\n this.openidConfigurationInfo = await this.oauthService.loadDiscoveryDocument();\n if (!this.openidConfigurationInfo) {\n throw new Error('openidConfigurationInfo is missing');\n }\n this.oauthService.events.subscribe(async (event) => {\n // console.log('event', event);\n // if (event.type === 'token_received') {\n // console.log('Token has been refreshed');\n // }\n // if (event.type === 'token_expires') {\n // console.log('Token is about to expire. Triggering silent refresh...');\n // }\n });\n const oidcJson = localStorage.getItem(AXPSessionService.SESSION_KEY);\n if (oidcJson) {\n const authData = JSON.parse(oidcJson);\n if (authData) {\n this.sessionService.setSession(authData);\n if (authData.expiresIn && new Date(authData.expiresIn) < new Date()) {\n if (authData.expiresIn) {\n this.sessionService.refreshToken();\n }\n else {\n this.signout();\n }\n }\n }\n }\n }\n async signin(credentials) {\n // If OIDC with username/password\n if (credentials.strategy === 'oidc' && credentials.username && credentials.password) {\n await this.handleOidcPasswordSignin(credentials);\n await new Promise(() => { }); // Keeps the promise pending until another flow (e.g., OAuth callback) completes\n }\n throw new Error(`Authentication method or credentials not supported: ${credentials.strategy}`);\n }\n async handleOidcPasswordSignin(credentials) {\n await this.configureOAuth();\n // Validation: اطمینان از وجود baseUrl\n if (!this.aXMAuthConfigs.baseUrl) {\n throw new Error('baseUrl is missing. Please check your environment configuration.');\n }\n // استفاده از baseUrl از configuration\n const baseUrl = this.aXMAuthConfigs.baseUrl;\n const loginRes = await fetch(baseUrl + '/auth/manual-login', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ username: credentials.username, password: credentials.password }),\n credentials: 'include',\n });\n if (!loginRes.ok) {\n let errorText = 'Login failed';\n try {\n const errorJson = await loginRes.json();\n if (errorJson && errorJson.error && errorJson.error.description) {\n errorText = errorJson.error.description;\n }\n }\n catch {\n try {\n const text = await loginRes.text();\n if (text) {\n errorText = text;\n }\n }\n catch { }\n }\n throw new Error(errorText);\n }\n // Check if response is JSON or text\n const contentType = loginRes.headers.get('content-type');\n let result;\n if (contentType && contentType.includes('application/json')) {\n result = await loginRes.json();\n }\n else {\n // Handle text response (like \"Login successful\")\n const responseText = await loginRes.text();\n console.log('Server response:', responseText);\n }\n await this.updateToken({});\n }\n async updateToken(params) {\n try {\n // Ensure OAuth is configured first\n if (!this.openidConfigurationInfo) {\n await this.configureOAuth();\n }\n // Validation: اطمینان از وجود authConfig\n if (!this.aXMAuthConfigs.authConfig) {\n throw new Error('authConfig is missing. Please check your environment configuration.');\n }\n // get Token Code\n if (params['code']) {\n // If params contains 'code', exchange it for tokens using the OpenIddict token endpoint\n const code = params['code'];\n const redirectUri = params['redirectUri'] || this.aXMAuthConfigs.authConfig.redirectUri;\n const clientId = params['clientId'] || this.aXMAuthConfigs.authConfig.clientId;\n const tokenEndpoint = params['tokenEndpoint'] ||\n this.openidConfigurationInfo?.info?.discoveryDocument?.token_endpoint ||\n `${this.aXMAuthConfigs?.baseUrl}/connect/token`;\n // Get code_verifier from localStorage (PKCE)\n const codeVerifier = localStorage.getItem('pkce_code_verifier');\n localStorage.removeItem('pkce_code_verifier');\n if (!codeVerifier) {\n throw new Error('Code verifier not found. Please try signing in again.');\n }\n // Prepare body for token request\n const body = new URLSearchParams({\n grant_type: 'authorization_code',\n client_id: clientId,\n code_verifier: codeVerifier,\n code: code,\n redirect_uri: redirectUri,\n });\n // Call the token endpoint (OpenIddict)\n const response = await fetch(tokenEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: body.toString(),\n });\n if (!response.ok) {\n throw new Error(`Token exchange failed: ${response.status} ${response.statusText}`);\n }\n const tokenData = await response.json();\n if (!tokenData) {\n throw new Error('Token data not found');\n }\n const payload = JwtUtil.parseJwt(tokenData.id_token);\n if (!payload) {\n throw new Error('Payload not found');\n }\n const user = {\n id: payload['sub'] || payload['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier'] || '',\n title: payload['name'] || payload['email'] || '',\n name: payload['name'] || payload['email'] || '',\n avatar: payload['picture'] || '',\n };\n const tenant = payload['tenantid'] || payload['tenant']\n ? {\n id: payload['tenantid'] || payload['tenant'] || '',\n name: payload['tenantname'] || '',\n title: payload['tenanttitle'] || '',\n }\n : undefined;\n const application = payload['applicationid'] || payload['application']\n ? {\n id: payload['applicationid'] || payload['application'] || '',\n name: payload['applicationname'] || '',\n title: payload['applicationtitle'] || '',\n }\n : undefined;\n console.log('payload', payload);\n return {\n succeed: true,\n data: {\n accessToken: tokenData.access_token,\n refreshToken: tokenData.refresh_token,\n idToken: tokenData.id_token,\n expiresIn: TimeUtil.calculateExpireInDate(tokenData.expires_in || 0),\n user,\n tenant,\n application,\n },\n };\n }\n // get Authorizeation Code\n else {\n // Validation: اطمینان از وجود authConfig\n if (!this.aXMAuthConfigs.authConfig) {\n throw new Error('authConfig is missing. Please check your environment configuration.');\n }\n // Extract parameters\n // Support both direct id fields and nested tenant/application objects\n const tenantId = params['tenantId'] ?? params['tenant']?.id ?? null;\n const applicationId = params['applicationId'] ?? params['application']?.id ?? null;\n const redirectUri = params['redirectUri'] || this.aXMAuthConfigs.authConfig.redirectUri;\n const scope = params['scope'] || this.aXMAuthConfigs.authConfig.scope;\n // Generate PKCE code verifier and challenge\n const codeVerifier = PkceUtil.generateRandomString(128);\n localStorage.setItem('pkce_code_verifier', codeVerifier);\n const codeChallenge = await PkceUtil.generateCodeChallenge(codeVerifier);\n // Build authorization URL\n const authorizeEndpoint = this.openidConfigurationInfo.info.discoveryDocument.authorization_endpoint;\n const clientId = this.aXMAuthConfigs.authConfig.clientId;\n const responseType = 'code';\n const state = Math.random().toString(36).substring(2);\n const queryParams = [\n `response_type=${encodeURIComponent(responseType)}`,\n `client_id=${encodeURIComponent(clientId)}`,\n `redirect_uri=${encodeURIComponent(redirectUri)}`,\n `scope=${encodeURIComponent(scope)}`,\n `state=${encodeURIComponent(state)}`,\n tenantId ? `tenant_id=${encodeURIComponent(tenantId)}` : null,\n applicationId ? `application_id=${encodeURIComponent(applicationId)}` : null,\n `code_challenge=${encodeURIComponent(codeChallenge)}`,\n `code_challenge_method=S256`,\n ]\n .filter(Boolean)\n .join('&');\n const authorizeUrl = `${authorizeEndpoint}?${queryParams}`;\n window.location.href = authorizeUrl;\n // Prevent further execution by waiting on a never-resolving Promise after redirect\n await new Promise(() => { });\n }\n }\n catch (error) {\n this.handleError(error);\n }\n }\n async signout() {\n localStorage.removeItem('pkce_code_verifier');\n localStorage.removeItem('oauth_provider');\n console.log(this.openidConfigurationInfo?.info?.discoveryDocument);\n // Use configured logoutUrl or derive from baseUrl\n const logoutUrl = this.aXMAuthConfigs.logoutUrl || `connect/logout`;\n window.location.href = logoutUrl;\n }\n async refreshToken(context) {\n try {\n await this.configureOAuth();\n if (!this.aXMAuthConfigs.authConfig || !this.aXMAuthConfigs.authConfig.clientId) {\n throw new Error('authConfig or clientId is missing');\n }\n const authData = this.loadAuthData();\n if (!authData) {\n return { succeed: false };\n }\n const refreshToken = authData.refreshToken;\n if (!refreshToken) {\n return { succeed: false };\n }\n const body = new HttpParams()\n .set('grant_type', 'refresh_token')\n .set('client_id', this.aXMAuthConfigs.authConfig.clientId)\n .set('refresh_token', refreshToken);\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n const response = await firstValueFrom(this.http.post(this.openidConfigurationInfo.info.discoveryDocument.token_endpoint, body.toString(), { headers }));\n // Extract user, tenant, and application from id_token\n const payload = JwtUtil.parseJwt(response.id_token);\n const user = {\n id: payload['sub'] || payload['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier'] || '',\n title: payload['name'] || payload['email'] || '',\n name: payload['name'] || payload['email'] || '',\n avatar: payload['picture'] || '',\n };\n const tenant = payload['tenantid'] || payload['tenant']\n ? {\n id: payload['tenantid'] || payload['tenant'] || '',\n name: payload['tenantname'] || '',\n title: payload['tenanttitle'] || '',\n }\n : undefined;\n const application = payload['applicationid'] || payload['application']\n ? {\n id: payload['applicationid'] || payload['application'] || '',\n name: payload['applicationname'] || '',\n title: payload['applicationtitle'] || '',\n }\n : undefined;\n const sessionData = {\n accessToken: response.access_token,\n refreshToken: response.refresh_token,\n idToken: response.id_token,\n strategy: 'oidc',\n expiresIn: TimeUtil.calculateExpireInDate(response.expires_in ?? 0),\n user,\n tenant,\n application,\n };\n // this.setServiceProps(sessionData);\n return {\n succeed: true,\n data: {\n ...sessionData,\n user: sessionData.user, // Ensure user is not undefined\n },\n };\n }\n catch (error) {\n console.error('Error refreshing token', error);\n return { succeed: false };\n }\n }\n loadAuthData() {\n const sessionData = this.sessionService.getSessionData();\n return sessionData || undefined;\n }\n async loadUserInfo() {\n return this.oauthService.loadUserProfile();\n }\n handleError(error) {\n console.error('Authentication error:', error);\n throw error;\n }\n //#region getter\n get name() {\n return 'oidc';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCAPIOidcStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCAPIOidcStrategy }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCAPIOidcStrategy, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2lkYy5zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L2FwaS9zcmMvbGliL2F1dGgvb2lkYy9vaWRjLnN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQ0wsZUFBZSxFQUlmLGlCQUFpQixFQUdqQixPQUFPLEVBQ1AsUUFBUSxFQUNSLFFBQVEsR0FDVCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQWMsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFdEMsWUFBWTtBQUdaLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxlQUFlO0lBRHZEOztRQUVVLG1CQUFjLEdBQW1CLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9ELGlCQUFZLEdBQWlCLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRCxTQUFJLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLG1CQUFjLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlELFdBQU0sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7S0EyV3pDO0lBdldRLEtBQUssQ0FBQyxjQUFjO1FBQ3pCLElBQUksSUFBSSxDQUFDLHVCQUF1QjtZQUFFLE9BQU87UUFFekMseUNBQXlDO1FBQ3pDLElBQUks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QUFDO2dCQUNuRSxJQUFJO2dCQUNKLE1BQU07Z0JBQ04sV0FBVzthQUNaLENBQUM7WUFFRixxQ0FBcUM7WUFFckMsT0FBTztnQkFDTCxPQUFPLEVBQUUsSUFBSTtnQkFDYixJQUFJLEVBQUU7b0JBQ0osR0FBRyxXQUFXO29CQUNkLElBQUksRUFBRSxXQUFXLENBQUMsSUFBZSxFQUFFLCtCQUErQjtpQkFDbkU7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDekQsT0FBTyxXQUFXLElBQUksU0FBUyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWTtRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFVO1FBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUMsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLElBQUksSUFBSTtRQUNOLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7K0dBOVdVLGtCQUFrQjttSEFBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhNQXV0aENvbmZpZ3MsIEFYTV9BVVRIX0NPTkZJR19UT0tFTiB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy9hdXRoJztcbmltcG9ydCB7XG4gIEFYUEF1dGhTdHJhdGVneSxcbiAgQVhQQmFzZUNyZWRlbnRpYWxzLFxuICBBWFBTZXNzaW9uQ29udGV4dCxcbiAgQVhQU2Vzc2lvbkRhdGEsXG4gIEFYUFNlc3Npb25TZXJ2aWNlLFxuICBBWFBTaWduSW5SZXN1bHQsXG4gIEFYUFVzZXIsXG4gIEp3dFV0aWwsXG4gIFBrY2VVdGlsLFxuICBUaW1lVXRpbCxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXV0aENvbmZpZywgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG4vLyNlbmRyZWdpb25cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYQ0FQSU9pZGNTdHJhdGVneSBleHRlbmRzIEFYUEF1dGhTdHJhdGVneSB7XG4gIHByaXZhdGUgYVhNQXV0aENvbmZpZ3M6IEFYTUF1dGhDb25maWdzID0gaW5qZWN0KEFYTV9BVVRIX0NPTkZJR19UT0tFTik7XG4gIHByaXZhdGUgb2F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UgPSBpbmplY3QoT0F1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlOiBBWFBTZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG4gIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHVibGljIHVzZXJJbmZvOiBhbnk7IFxuICBwdWJsaWMgb3BlbmlkQ29uZmlndXJhdGlvbkluZm86IGFueTsgLy8gY2xhcmlmeSB0aGUgdHlwZSBpZiBwb3NzaWJsZVxuXG4gIHB1YmxpYyBhc3luYyBjb25maWd1cmVPQXV0aCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5vcGVuaWRDb25maWd1cmF0aW9uSW5mbykgcmV0dXJuOyBcblxuICAgIC8vIFZhbGlkYXRpb246INin2LfZhduM2YbYp9mGINin2LIg2YjYrNmI2K8gYXV0aENvbmZpZ1xuICAgIGlmICghdGhpcy5hWE1BdXRoQ29uZmlncy5hdXRoQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F1dGhDb25maWcgaXMgbWlzc2luZy4gUGxlYXNlIGNoZWNrIHlvdXIgZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbi4nKTtcbiAgICB9XG5cbiAgICB0aGlzLm9hdXRoU2VydmljZS5jb25maWd1cmUodGhpcy5hWE1BdXRoQ29uZmlncy5hdXRoQ29uZmlnKTtcbiAgICB0aGlzLm9hdXRoU2VydmljZS5zZXRTdG9yYWdlKGxvY2FsU3RvcmFnZSk7XG5cbiAgICB0aGlzLm9wZW5pZENvbmZpZ3VyYXRpb25JbmZvID0gYXdhaXQgdGhpcy5vYXV0aFNlcnZpY2UubG9hZERpc2NvdmVyeURvY3VtZW50KCk7XG5cbiAgICBpZiAoIXRoaXMub3BlbmlkQ29uZmlndXJhdGlvbkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3BlbmlkQ29uZmlndXJhdGlvbkluZm8gaXMgbWlzc2luZycpO1xuICAgIH1cblxuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmV2ZW50cy5zdWJzY3JpYmUoYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgICAvLyBjb25zb2xlLmxvZygnZXZlbnQnLCBldmVudCk7XG4gICAgICAvLyBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rva2VuX3JlY2VpdmVkJykge1xuICAgICAgLy8gICBjb25zb2xlLmxvZygnVG9rZW4gaGFzIGJlZW4gcmVmcmVzaGVkJyk7XG4gICAgICAvLyB9XG4gICAgICAvLyBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rva2VuX2V4cGlyZXMnKSB7XG4gICAgICAvLyAgIGNvbnNvbGUubG9nKCdUb2tlbiBpcyBhYm91dCB0byBleHBpcmUuIFRyaWdnZXJpbmcgc2lsZW50IHJlZnJlc2guLi4nKTtcbiAgICAgIC8vIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IG9pZGNKc29uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oQVhQU2Vzc2lvblNlcnZpY2UuU0VTU0lPTl9LRVkpO1xuXG4gICAgaWYgKG9pZGNKc29uKSB7XG4gICAgICBjb25zdCBhdXRoRGF0YSA9IEpTT04ucGFyc2Uob2lkY0pzb24pIGFzIEFYUFNlc3Npb25EYXRhO1xuICAgICAgaWYgKGF1dGhEYXRhKSB7XG4gICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0U2Vzc2lvbihhdXRoRGF0YSk7XG5cbiAgICAgICAgaWYgKGF1dGhEYXRhLmV4cGlyZXNJbiAmJiBuZXcgRGF0ZShhdXRoRGF0YS5leHBpcmVzSW4pIDwgbmV3IERhdGUoKSkge1xuICAgICAgICAgIGlmIChhdXRoRGF0YS5leHBpcmVzSW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2UucmVmcmVzaFRva2VuKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2lnbm91dCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNpZ25pbihjcmVkZW50aWFsczogQVhQQmFzZUNyZWRlbnRpYWxzKTogUHJvbWlzZTxBWFBTaWduSW5SZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAvLyBJZiBPSURDIHdpdGggdXNlcm5hbWUvcGFzc3dvcmRcbiAgICBpZiAoY3JlZGVudGlhbHMuc3RyYXRlZ3kgPT09ICdvaWRjJyAmJiAoY3JlZGVudGlhbHMgYXMgYW55KS51c2VybmFtZSAmJiAoY3JlZGVudGlhbHMgYXMgYW55KS5wYXNzd29yZCkge1xuICAgICAgYXdhaXQgdGhpcy5oYW5kbGVPaWRjUGFzc3dvcmRTaWduaW4oY3JlZGVudGlhbHMgYXMgQVhQVXNlclBhc3NDcmVkZW50aWFscyk7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgoKSA9PiB7fSk7IC8vIEtlZXBzIHRoZSBwcm9taXNlIHBlbmRpbmcgdW50aWwgYW5vdGhlciBmbG93IChlLmcuLCBPQXV0aCBjYWxsYmFjaykgY29tcGxldGVzXG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQXV0aGVudGljYXRpb24gbWV0aG9kIG9yIGNyZWRlbnRpYWxzIG5vdCBzdXBwb3J0ZWQ6ICR7Y3JlZGVudGlhbHMuc3RyYXRlZ3l9YCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZU9pZGNQYXNzd29yZFNpZ25pbihjcmVkZW50aWFsczogQVhQVXNlclBhc3NDcmVkZW50aWFscyk6IFByb21pc2U8dW5kZWZpbmVkPiB7XG4gICAgYXdhaXQgdGhpcy5jb25maWd1cmVPQXV0aCgpO1xuICAgIFxuICAgIC8vIFZhbGlkYXRpb246INin2LfZhduM2YbYp9mGINin2LIg2YjYrNmI2K8gYmFzZVVybFxuICAgIGlmICghdGhpcy5hWE1BdXRoQ29uZmlncy5iYXNlVXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jhc2VVcmwgaXMgbWlzc2luZy4gUGxlYXNlIGNoZWNrIHlvdXIgZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbi4nKTtcbiAgICB9XG4gICAgXG4gICAgLy8g2KfYs9iq2YHYp9iv2Ycg2KfYsiBiYXNlVXJsINin2LIgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmFYTUF1dGhDb25maWdzLmJhc2VVcmw7XG4gICAgY29uc3QgbG9naW5SZXMgPSBhd2FpdCBmZXRjaChiYXNlVXJsICsgJy9hdXRoL21hbnVhbC1sb2dpbicsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHVzZXJuYW1lOiBjcmVkZW50aWFscy51c2VybmFtZSwgcGFzc3dvcmQ6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0pLFxuICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyxcbiAgICB9KTtcbiAgICBpZiAoIWxvZ2luUmVzLm9rKSB7XG4gICAgICBsZXQgZXJyb3JUZXh0ID0gJ0xvZ2luIGZhaWxlZCc7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBlcnJvckpzb24gPSBhd2FpdCBsb2dpblJlcy5qc29uKCk7XG4gICAgICAgIGlmIChlcnJvckpzb24gJiYgZXJyb3JKc29uLmVycm9yICYmIGVycm9ySnNvbi5lcnJvci5kZXNjcmlwdGlvbikge1xuICAgICAgICAgIGVycm9yVGV4dCA9IGVycm9ySnNvbi5lcnJvci5kZXNjcmlwdGlvbjtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGxvZ2luUmVzLnRleHQoKTtcbiAgICAgICAgICBpZiAodGV4dCkge1xuICAgICAgICAgICAgZXJyb3JUZXh0ID0gdGV4dDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge31cbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvclRleHQpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHJlc3BvbnNlIGlzIEpTT04gb3IgdGV4dFxuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gbG9naW5SZXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpO1xuICAgIGxldCByZXN1bHQ7XG5cbiAgICBpZiAoY29udGVudFR5cGUgJiYgY29udGVudFR5cGUuaW5jbHVkZXMoJ2FwcGxpY2F0aW9uL2pzb24nKSkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgbG9naW5SZXMuanNvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIYW5kbGUgdGV4dCByZXNwb25zZSAobGlrZSBcIkxvZ2luIHN1Y2Nlc3NmdWxcIilcbiAgICAgIGNvbnN0IHJlc3BvbnNlVGV4dCA9IGF3YWl0IGxvZ2luUmVzLnRleHQoKTtcbiAgICAgIGNvbnNvbGUubG9nKCdTZXJ2ZXIgcmVzcG9uc2U6JywgcmVzcG9uc2VUZXh0KTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVRva2VuKHt9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHVwZGF0ZVRva2VuKHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IFByb21pc2U8QVhQU2lnbkluUmVzdWx0IHwgdm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBFbnN1cmUgT0F1dGggaXMgY29uZmlndXJlZCBmaXJzdFxuICAgICAgaWYgKCF0aGlzLm9wZW5pZENvbmZpZ3VyYXRpb25JbmZvKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY29uZmlndXJlT0F1dGgoKTtcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGlvbjog2KfYt9mF24zZhtin2YYg2KfYsiDZiNis2YjYryBhdXRoQ29uZmlnXG4gICAgICBpZiAoIXRoaXMuYVhNQXV0aENvbmZpZ3MuYXV0aENvbmZpZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F1dGhDb25maWcgaXMgbWlzc2luZy4gUGxlYXNlIGNoZWNrIHlvdXIgZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbi4nKTtcbiAgICAgIH1cbiAgICAgIC8vIGdldCBUb2tlbiBDb2RlXG4gICAgICBpZiAocGFyYW1zWydjb2RlJ10pIHtcbiAgICAgICAgXG4gICAgICAgIC8vIElmIHBhcmFtcyBjb250YWlucyAnY29kZScsIGV4Y2hhbmdlIGl0IGZvciB0b2tlbnMgdXNpbmcgdGhlIE9wZW5JZGRpY3QgdG9rZW4gZW5kcG9pbnRcbiAgICAgICAgY29uc3QgY29kZSA9IHBhcmFtc1snY29kZSddO1xuICAgICAgICBjb25zdCByZWRpcmVjdFVyaSA9IHBhcmFtc1sncmVkaXJlY3RVcmknXSB8fCB0aGlzLmFYTUF1dGhDb25maWdzLmF1dGhDb25maWcucmVkaXJlY3RVcmkhO1xuICAgICAgICBjb25zdCBjbGllbnRJZCA9IHBhcmFtc1snY2xpZW50SWQnXSB8fCB0aGlzLmFYTUF1dGhDb25maWdzLmF1dGhDb25maWcuY2xpZW50SWQhO1xuICAgICAgICBjb25zdCB0b2tlbkVuZHBvaW50ID1cbiAgICAgICAgICBwYXJhbXNbJ3Rva2VuRW5kcG9pbnQnXSB8fFxuICAgICAgICAgIHRoaXMub3BlbmlkQ29uZmlndXJhdGlvbkluZm8/LmluZm8/LmRpc2NvdmVyeURvY3VtZW50Py50b2tlbl9lbmRwb2ludCB8fFxuICAgICAgICAgIGAke3RoaXMuYVhNQXV0aENvbmZpZ3M/LmJhc2VVcmx9L2Nvbm5lY3QvdG9rZW5gO1xuXG4gICAgICAgIC8vIEdldCBjb2RlX3ZlcmlmaWVyIGZyb20gbG9jYWxTdG9yYWdlIChQS0NFKVxuICAgICAgICBjb25zdCBjb2RlVmVyaWZpZXIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncGtjZV9jb2RlX3ZlcmlmaWVyJyk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdwa2NlX2NvZGVfdmVyaWZpZXInKTtcbiAgICAgICAgaWYgKCFjb2RlVmVyaWZpZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvZGUgdmVyaWZpZXIgbm90IGZvdW5kLiBQbGVhc2UgdHJ5IHNpZ25pbmcgaW4gYWdhaW4uJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmVwYXJlIGJvZHkgZm9yIHRva2VuIHJlcXVlc3RcbiAgICAgICAgY29uc3QgYm9keSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgICAgICAgIGdyYW50X3R5cGU6ICdhdXRob3JpemF0aW9uX2NvZGUnLFxuICAgICAgICAgIGNsaWVudF9pZDogY2xpZW50SWQsXG4gICAgICAgICAgY29kZV92ZXJpZmllcjogY29kZVZlcmlmaWVyLFxuICAgICAgICAgIGNvZGU6IGNvZGUsXG4gICAgICAgICAgcmVkaXJlY3RfdXJpOiByZWRpcmVjdFVyaSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ2FsbCB0aGUgdG9rZW4gZW5kcG9pbnQgKE9wZW5JZGRpY3QpXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godG9rZW5FbmRwb2ludCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIH0sXG4gICAgICAgICAgYm9keTogYm9keS50b1N0cmluZygpLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUb2tlbiBleGNoYW5nZSBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdG9rZW5EYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgICAgICBpZiAoIXRva2VuRGF0YSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVG9rZW4gZGF0YSBub3QgZm91bmQnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXlsb2FkID0gSnd0VXRpbC5wYXJzZUp3dCh0b2tlbkRhdGEuaWRfdG9rZW4pO1xuICAgICAgICBpZiAoIXBheWxvYWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BheWxvYWQgbm90IGZvdW5kJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXNlciA9IHtcbiAgICAgICAgICBpZDogcGF5bG9hZFsnc3ViJ10gfHwgcGF5bG9hZFsnaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eS9jbGFpbXMvbmFtZWlkZW50aWZpZXInXSB8fCAnJyxcbiAgICAgICAgICB0aXRsZTogcGF5bG9hZFsnbmFtZSddIHx8IHBheWxvYWRbJ2VtYWlsJ10gfHwgJycsXG4gICAgICAgICAgbmFtZTogcGF5bG9hZFsnbmFtZSddIHx8IHBheWxvYWRbJ2VtYWlsJ10gfHwgJycsXG4gICAgICAgICAgYXZhdGFyOiBwYXlsb2FkWydwaWN0dXJlJ10gfHwgJycsXG4gICAgICAgIH0gYXMgQVhQVXNlcjtcblxuICAgICAgICBjb25zdCB0ZW5hbnQgPVxuICAgICAgICAgIHBheWxvYWRbJ3RlbmFudGlkJ10gfHwgcGF5bG9hZFsndGVuYW50J11cbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIGlkOiBwYXlsb2FkWyd0ZW5hbnRpZCddIHx8IHBheWxvYWRbJ3RlbmFudCddIHx8ICcnLFxuICAgICAgICAgICAgICAgIG5hbWU6IHBheWxvYWRbJ3RlbmFudG5hbWUnXSB8fCAnJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcGF5bG9hZFsndGVuYW50dGl0bGUnXSB8fCAnJyxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgYXBwbGljYXRpb24gPVxuICAgICAgICAgIHBheWxvYWRbJ2FwcGxpY2F0aW9uaWQnXSB8fCBwYXlsb2FkWydhcHBsaWNhdGlvbiddXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBpZDogcGF5bG9hZFsnYXBwbGljYXRpb25pZCddIHx8IHBheWxvYWRbJ2FwcGxpY2F0aW9uJ10gfHwgJycsXG4gICAgICAgICAgICAgICAgbmFtZTogcGF5bG9hZFsnYXBwbGljYXRpb25uYW1lJ10gfHwgJycsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBheWxvYWRbJ2FwcGxpY2F0aW9udGl0bGUnXSB8fCAnJyxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnNvbGUubG9nKCdwYXlsb2FkJywgcGF5bG9hZCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZWVkOiB0cnVlLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiB0b2tlbkRhdGEuYWNjZXNzX3Rva2VuLFxuICAgICAgICAgICAgcmVmcmVzaFRva2VuOiB0b2tlbkRhdGEucmVmcmVzaF90b2tlbixcbiAgICAgICAgICAgIGlkVG9rZW46IHRva2VuRGF0YS5pZF90b2tlbixcbiAgICAgICAgICAgIGV4cGlyZXNJbjogVGltZVV0aWwuY2FsY3VsYXRlRXhwaXJlSW5EYXRlKHRva2VuRGF0YS5leHBpcmVzX2luIHx8IDApLFxuICAgICAgICAgICAgdXNlcixcbiAgICAgICAgICAgIHRlbmFudCxcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBnZXQgQXV0aG9yaXplYXRpb24gQ29kZVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIFZhbGlkYXRpb246INin2LfZhduM2YbYp9mGINin2LIg2YjYrNmI2K8gYXV0aENvbmZpZ1xuICAgICAgICBpZiAoIXRoaXMuYVhNQXV0aENvbmZpZ3MuYXV0aENvbmZpZykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYXV0aENvbmZpZyBpcyBtaXNzaW5nLiBQbGVhc2UgY2hlY2sgeW91ciBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uLicpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBFeHRyYWN0IHBhcmFtZXRlcnNcbiAgICAgICAgLy8gU3VwcG9ydCBib3RoIGRpcmVjdCBpZCBmaWVsZHMgYW5kIG5lc3RlZCB0ZW5hbnQvYXBwbGljYXRpb24gb2JqZWN0c1xuICAgICAgICBjb25zdCB0ZW5hbnRJZCA9IHBhcmFtc1sndGVuYW50SWQnXSA/PyBwYXJhbXNbJ3RlbmFudCddPy5pZCA/PyBudWxsO1xuICAgICAgICBjb25zdCBhcHBsaWNhdGlvbklkID0gcGFyYW1zWydhcHBsaWNhdGlvbklkJ10gPz8gcGFyYW1zWydhcHBsaWNhdGlvbiddPy5pZCA/PyBudWxsO1xuICAgICAgICBjb25zdCByZWRpcmVjdFVyaSA9IHBhcmFtc1sncmVkaXJlY3RVcmknXSB8fCB0aGlzLmFYTUF1dGhDb25maWdzLmF1dGhDb25maWcucmVkaXJlY3RVcmkhO1xuICAgICAgICBjb25zdCBzY29wZSA9IHBhcmFtc1snc2NvcGUnXSB8fCB0aGlzLmFYTUF1dGhDb25maWdzLmF1dGhDb25maWcuc2NvcGUhO1xuXG4gICAgICAgIC8vIEdlbmVyYXRlIFBLQ0UgY29kZSB2ZXJpZmllciBhbmQgY2hhbGxlbmdlXG4gICAgICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IFBrY2VVdGlsLmdlbmVyYXRlUmFuZG9tU3RyaW5nKDEyOCk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdwa2NlX2NvZGVfdmVyaWZpZXInLCBjb2RlVmVyaWZpZXIpO1xuICAgICAgICBjb25zdCBjb2RlQ2hhbGxlbmdlID0gYXdhaXQgUGtjZVV0aWwuZ2VuZXJhdGVDb2RlQ2hhbGxlbmdlKGNvZGVWZXJpZmllcik7XG5cbiAgICAgICAgLy8gQnVpbGQgYXV0aG9yaXphdGlvbiBVUkxcbiAgICAgICAgY29uc3QgYXV0aG9yaXplRW5kcG9pbnQgPSB0aGlzLm9wZW5pZENvbmZpZ3VyYXRpb25JbmZvLmluZm8uZGlzY292ZXJ5RG9jdW1lbnQuYXV0aG9yaXphdGlvbl9lbmRwb2ludDtcbiAgICAgICAgY29uc3QgY2xpZW50SWQgPSB0aGlzLmFYTUF1dGhDb25maWdzLmF1dGhDb25maWcuY2xpZW50SWQhO1xuICAgICAgICBjb25zdCByZXNwb25zZVR5cGUgPSAnY29kZSc7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpO1xuXG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gW1xuICAgICAgICAgIGByZXNwb25zZV90eXBlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHJlc3BvbnNlVHlwZSl9YCxcbiAgICAgICAgICBgY2xpZW50X2lkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGNsaWVudElkKX1gLFxuICAgICAgICAgIGByZWRpcmVjdF91cmk9JHtlbmNvZGVVUklDb21wb25lbnQocmVkaXJlY3RVcmkpfWAsXG4gICAgICAgICAgYHNjb3BlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHNjb3BlKX1gLFxuICAgICAgICAgIGBzdGF0ZT0ke2VuY29kZVVSSUNvbXBvbmVudChzdGF0ZSl9YCxcbiAgICAgICAgICB0ZW5hbnRJZCA/IGB0ZW5hbnRfaWQ9JHtlbmNvZGVVUklDb21wb25lbnQodGVuYW50SWQpfWAgOiBudWxsLFxuICAgICAgICAgIGFwcGxpY2F0aW9uSWQgPyBgYXBwbGljYXRpb25faWQ9JHtlbmNvZGVVUklDb21wb25lbnQoYXBwbGljYXRpb25JZCl9YCA6IG51bGwsXG4gICAgICAgICAgYGNvZGVfY2hhbGxlbmdlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGNvZGVDaGFsbGVuZ2UpfWAsXG4gICAgICAgICAgYGNvZGVfY2hhbGxlbmdlX21ldGhvZD1TMjU2YCxcbiAgICAgICAgXVxuICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAuam9pbignJicpO1xuXG4gICAgICAgIGNvbnN0IGF1dGhvcml6ZVVybCA9IGAke2F1dGhvcml6ZUVuZHBvaW50fT8ke3F1ZXJ5UGFyYW1zfWA7XG5cbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBhdXRob3JpemVVcmw7XG4gICAgICAvLyBQcmV2ZW50IGZ1cnRoZXIgZXhlY3V0aW9uIGJ5IHdhaXRpbmcgb24gYSBuZXZlci1yZXNvbHZpbmcgUHJvbWlzZSBhZnRlciByZWRpcmVjdFxuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKCkgPT4ge30pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzaWdub3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdwa2NlX2NvZGVfdmVyaWZpZXInKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnb2F1dGhfcHJvdmlkZXInKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLm9wZW5pZENvbmZpZ3VyYXRpb25JbmZvPy5pbmZvPy5kaXNjb3ZlcnlEb2N1bWVudCk7XG4gIFxuICAgIC8vIFVzZSBjb25maWd1cmVkIGxvZ291dFVybCBvciBkZXJpdmUgZnJvbSBiYXNlVXJsXG4gICAgY29uc3QgbG9nb3V0VXJsID0gdGhpcy5hWE1BdXRoQ29uZmlncy5sb2dvdXRVcmwgfHwgYGNvbm5lY3QvbG9nb3V0YDtcblxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbG9nb3V0VXJsO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaFRva2VuKGNvbnRleHQ6IEFYUFNlc3Npb25Db250ZXh0KTogUHJvbWlzZTxBWFBTaWduSW5SZXN1bHQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jb25maWd1cmVPQXV0aCgpO1xuICAgICAgaWYgKCF0aGlzLmFYTUF1dGhDb25maWdzLmF1dGhDb25maWcgfHwgIXRoaXMuYVhNQXV0aENvbmZpZ3MuYXV0aENvbmZpZy5jbGllbnRJZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F1dGhDb25maWcgb3IgY2xpZW50SWQgaXMgbWlzc2luZycpO1xuICAgICAgfVxuICAgICAgY29uc3QgYXV0aERhdGEgPSB0aGlzLmxvYWRBdXRoRGF0YSgpO1xuICAgICAgaWYgKCFhdXRoRGF0YSkge1xuICAgICAgICByZXR1cm4geyBzdWNjZWVkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcmVmcmVzaFRva2VuID0gYXV0aERhdGEucmVmcmVzaFRva2VuO1xuICAgICAgaWYgKCFyZWZyZXNoVG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VlZDogZmFsc2UgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9keSA9IG5ldyBIdHRwUGFyYW1zKClcbiAgICAgICAgLnNldCgnZ3JhbnRfdHlwZScsICdyZWZyZXNoX3Rva2VuJylcbiAgICAgICAgLnNldCgnY2xpZW50X2lkJywgdGhpcy5hWE1BdXRoQ29uZmlncy5hdXRoQ29uZmlnLmNsaWVudElkKVxuICAgICAgICAuc2V0KCdyZWZyZXNoX3Rva2VuJywgcmVmcmVzaFRva2VuKTtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgdGhpcy5odHRwLnBvc3Q8SUF1dGhlbnRpY2F0aW9uRGF0YU1vZGVsPihcbiAgICAgICAgICB0aGlzLm9wZW5pZENvbmZpZ3VyYXRpb25JbmZvLmluZm8uZGlzY292ZXJ5RG9jdW1lbnQudG9rZW5fZW5kcG9pbnQsXG4gICAgICAgICAgYm9keS50b1N0cmluZygpLFxuICAgICAgICAgIHsgaGVhZGVycyB9LFxuICAgICAgICApLFxuICAgICAgKTtcblxuICAgICAgLy8gRXh0cmFjdCB1c2VyLCB0ZW5hbnQsIGFuZCBhcHBsaWNhdGlvbiBmcm9tIGlkX3Rva2VuXG4gICAgICBjb25zdCBwYXlsb2FkID0gSnd0VXRpbC5wYXJzZUp3dChyZXNwb25zZS5pZF90b2tlbik7XG4gICAgICBjb25zdCB1c2VyID0ge1xuICAgICAgICBpZDogcGF5bG9hZFsnc3ViJ10gfHwgcGF5bG9hZFsnaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eS9jbGFpbXMvbmFtZWlkZW50aWZpZXInXSB8fCAnJyxcbiAgICAgICAgdGl0bGU6IHBheWxvYWRbJ25hbWUnXSB8fCBwYXlsb2FkWydlbWFpbCddIHx8ICcnLFxuICAgICAgICBuYW1lOiBwYXlsb2FkWyduYW1lJ10gfHwgcGF5bG9hZFsnZW1haWwnXSB8fCAnJyxcbiAgICAgICAgYXZhdGFyOiBwYXlsb2FkWydwaWN0dXJlJ10gfHwgJycsXG4gICAgICB9IGFzIEFYUFVzZXI7XG4gICAgICBjb25zdCB0ZW5hbnQgPVxuICAgICAgICBwYXlsb2FkWyd0ZW5hbnRpZCddIHx8IHBheWxvYWRbJ3RlbmFudCddXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGlkOiBwYXlsb2FkWyd0ZW5hbnRpZCddIHx8IHBheWxvYWRbJ3RlbmFudCddIHx8ICcnLFxuICAgICAgICAgICAgICBuYW1lOiBwYXlsb2FkWyd0ZW5hbnRuYW1lJ10gfHwgJycsXG4gICAgICAgICAgICAgIHRpdGxlOiBwYXlsb2FkWyd0ZW5hbnR0aXRsZSddIHx8ICcnLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgY29uc3QgYXBwbGljYXRpb24gPVxuICAgICAgICBwYXlsb2FkWydhcHBsaWNhdGlvbmlkJ10gfHwgcGF5bG9hZFsnYXBwbGljYXRpb24nXVxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBpZDogcGF5bG9hZFsnYXBwbGljYXRpb25pZCddIHx8IHBheWxvYWRbJ2FwcGxpY2F0aW9uJ10gfHwgJycsXG4gICAgICAgICAgICAgIG5hbWU6IHBheWxvYWRbJ2FwcGxpY2F0aW9ubmFtZSddIHx8ICcnLFxuICAgICAgICAgICAgICB0aXRsZTogcGF5bG9hZFsnYXBwbGljYXRpb250aXRsZSddIHx8ICcnLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICBjb25zdCBzZXNzaW9uRGF0YTogQVhQU2Vzc2lvbkRhdGEgPSB7XG4gICAgICAgIGFjY2Vzc1Rva2VuOiByZXNwb25zZS5hY2Nlc3NfdG9rZW4sXG4gICAgICAgIHJlZnJlc2hUb2tlbjogcmVzcG9uc2UucmVmcmVzaF90b2tlbixcbiAgICAgICAgaWRUb2tlbjogcmVzcG9uc2UuaWRfdG9rZW4sXG4gICAgICAgIHN0cmF0ZWd5OiAnb2lkYycsXG4gICAgICAgIGV4cGlyZXNJbjogVGltZVV0aWwuY2FsY3VsYXRlRXhwaXJlSW5EYXRlKHJlc3BvbnNlLmV4cGlyZXNfaW4gPz8gMCksXG4gICAgICAgIHVzZXIsXG4gICAgICAgIHRlbmFudCxcbiAgICAgICAgYXBwbGljYXRpb24sXG4gICAgICB9O1xuXG4gICAgICAvLyB0aGlzLnNldFNlcnZpY2VQcm9wcyhzZXNzaW9uRGF0YSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2NlZWQ6IHRydWUsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5zZXNzaW9uRGF0YSxcbiAgICAgICAgICB1c2VyOiBzZXNzaW9uRGF0YS51c2VyIGFzIEFYUFVzZXIsIC8vIEVuc3VyZSB1c2VyIGlzIG5vdCB1bmRlZmluZWRcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJlZnJlc2hpbmcgdG9rZW4nLCBlcnJvcik7XG4gICAgICByZXR1cm4geyBzdWNjZWVkOiBmYWxzZSB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZEF1dGhEYXRhKCk6IEFYUFNlc3Npb25EYXRhIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzZXNzaW9uRGF0YSA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0U2Vzc2lvbkRhdGEoKTtcbiAgICByZXR1cm4gc2Vzc2lvbkRhdGEgfHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWRVc2VySW5mbygpOiBQcm9taXNlPG9iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLm9hdXRoU2VydmljZS5sb2FkVXNlclByb2ZpbGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSk6IG5ldmVyIHtcbiAgICBjb25zb2xlLmVycm9yKCdBdXRoZW50aWNhdGlvbiBlcnJvcjonLCBlcnJvcik7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICAvLyNyZWdpb24gZ2V0dGVyXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdvaWRjJztcbiAgfVxuICAvLyNlbmRyZWdpb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBVc2VyUGFzc0NyZWRlbnRpYWxzIGV4dGVuZHMgQVhQQmFzZUNyZWRlbnRpYWxzIHtcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBPQXV0aEV4dGVybmFsQ3JlZGVudGlhbHMgZXh0ZW5kcyBBWFBCYXNlQ3JlZGVudGlhbHMge1xuICBzdHJhdGVneTogc3RyaW5nO1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbiAgaWRUb2tlbjogc3RyaW5nO1xuICB1c2VyOiBzdHJpbmc7IC8vIFN0b3JlIHVzZXIgYXMgSlNPTiBzdHJpbmdcbiAgZXhwaXJlc0luOiBzdHJpbmc7XG4gIHByb3ZpZGVyOiBzdHJpbmc7IC8vIFRoZSBwcm92aWRlciBuYW1lIChlLmcuLCAnZ29vZ2xlJywgJ2FwcGxlJywgJ2FhZCcpXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUF1dGhlbnRpY2F0aW9uRGF0YU1vZGVsIHtcbiAgYWNjZXNzX3Rva2VuOiBzdHJpbmc7XG4gIGFwcGxpY2F0aW9uaWQ6IHN0cmluZztcbiAgYXBwbGljYXRpb25uYW1lOiBzdHJpbmc7XG4gIGFwcGxpY2F0aW9udGl0bGU6IHN0cmluZztcbiAgZWRpdGlvbmlkOiBzdHJpbmc7XG4gIGVkaXRpb25uYW1lOiBzdHJpbmc7XG4gIGVkaXRpb250aXRsZTogc3RyaW5nO1xuICBpZF90b2tlbjogc3RyaW5nO1xuICByZWZyZXNoX3Rva2VuOiBzdHJpbmc7XG4gIHNjb3BlOiBzdHJpbmc7XG4gIHRlbmFudGlkOiBzdHJpbmc7XG4gIHRlbmFudG5hbWU6IHN0cmluZztcbiAgdGVuYW50dGl0bGU6IHN0cmluZztcbiAgdG9rZW5fdHlwZTogc3RyaW5nO1xuICBleHBpcmVzX2luPzogbnVtYmVyO1xuICBzdWI/OiBzdHJpbmc7XG4gIGZ1bGxuYW1lPzogc3RyaW5nO1xuICBwaWN0dXJlPzogc3RyaW5nO1xufVxuIl19","import { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { map } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nexport class AXMOidcPermissionLoader {\n constructor(http) {\n this.http = http;\n this.configs = inject(AXP_ROOT_CONFIG_TOKEN);\n this.apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\n }\n getList(context) {\n return this.http.get(this.apiGetConfig).pipe(map((response) => this.mapTo(response)));\n // if (context.user == null)\n // return of([]);\n // else if (context.user.name.toLowerCase() == 'admin')\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\n // else\n // return of(['asc.user.gliding']);\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\n }\n mapTo(jsonObj) {\n const policies = jsonObj.auth.grantedPolicies;\n const truePolicies = Object.keys(policies).filter((key) => policies[key] === true);\n return truePolicies;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcPermissionLoader, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcPermissionLoader }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcPermissionLoader, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.HttpClient }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nvbm5lY3Rpdml0eS9hcGkvc3JjL2xpYi9hdXRoL29pZGMvcGVybWlzc2lvbi5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUd2QyxNQUFNLE9BQU8sdUJBQXVCO0lBSWxDLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFINUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3hDLGlCQUFZLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sZ0NBQWdDLENBQUM7SUFFeEMsQ0FBQztJQUV4QyxPQUFPLENBQUMsT0FBMEI7UUFDaEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBaUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLDRCQUE0QjtRQUM1QixtQkFBbUI7UUFDbkIsdURBQXVEO1FBQ3ZELDBIQUEwSDtRQUMxSCxPQUFPO1FBQ1AscUNBQXFDO1FBQ3JDLHdIQUF3SDtJQUMxSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQVk7UUFDaEIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDOUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNuRixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDOytHQXJCVSx1QkFBdUI7bUhBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFBlcm1pc3Npb24sIEFYUFBlcm1pc3Npb25Mb2FkZXIsIEFYUFNlc3Npb25Db250ZXh0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUF9ST09UX0NPTkZJR19UT0tFTiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNT2lkY1Blcm1pc3Npb25Mb2FkZXIgaW1wbGVtZW50cyBBWFBQZXJtaXNzaW9uTG9hZGVyIHtcbiAgcHJpdmF0ZSBjb25maWdzID0gaW5qZWN0KEFYUF9ST09UX0NPTkZJR19UT0tFTik7XG4gIHByaXZhdGUgYXBpR2V0Q29uZmlnID0gYCR7dGhpcy5jb25maWdzLmJhc2VVcmx9L2FicC9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9uYDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgZ2V0TGlzdChjb250ZXh0OiBBWFBTZXNzaW9uQ29udGV4dCk6IE9ic2VydmFibGU8QVhQUGVybWlzc2lvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8eyBpdGVtczogYW55IH0+KHRoaXMuYXBpR2V0Q29uZmlnKS5waXBlKG1hcCgocmVzcG9uc2UpID0+IHRoaXMubWFwVG8ocmVzcG9uc2UpKSk7XG4gICAgLy8gaWYgKGNvbnRleHQudXNlciA9PSBudWxsKVxuICAgIC8vICAgcmV0dXJuIG9mKFtdKTtcbiAgICAvLyBlbHNlIGlmIChjb250ZXh0LnVzZXIubmFtZS50b0xvd2VyQ2FzZSgpID09ICdhZG1pbicpXG4gICAgLy8gICByZXR1cm4gb2YoWydheHAuYWRtaW4uY29uc29sZScsICdhc2MuYWRtaW4ubWVzc2FnZScsICdhc2MuYWRtaW4uc2V0dGluZ3MnLCAnYXNjLmFkbWluLmdsaWRpbmcnLCAnYXNjLnVzZXIuZ2xpZGluZyddKTtcbiAgICAvLyBlbHNlXG4gICAgLy8gICByZXR1cm4gb2YoWydhc2MudXNlci5nbGlkaW5nJ10pO1xuICAgIC8vIHJldHVybiBvZihbJ2F4cC5hZG1pbi5jb25zb2xlJywgJ2FzYy5hZG1pbi5tZXNzYWdlJywgJ2FzYy5hZG1pbi5zZXR0aW5ncycsICdhc2MuYWRtaW4uZ2xpZGluZycsICdhc2MudXNlci5nbGlkaW5nJ10pO1xuICB9XG5cbiAgbWFwVG8oanNvbk9iajogYW55KTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHBvbGljaWVzID0ganNvbk9iai5hdXRoLmdyYW50ZWRQb2xpY2llcztcbiAgICBjb25zdCB0cnVlUG9saWNpZXMgPSBPYmplY3Qua2V5cyhwb2xpY2llcykuZmlsdGVyKChrZXkpID0+IHBvbGljaWVzW2tleV0gPT09IHRydWUpO1xuICAgIHJldHVybiB0cnVlUG9saWNpZXM7XG4gIH1cbn1cbiJdfQ==","import { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { map } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nexport class AXMOidcTenantLoader {\n constructor(http) {\n this.http = http;\n this.configs = inject(AXP_ROOT_CONFIG_TOKEN);\n this.apiGetTenants = `${this.configs.baseUrl}/tenants/available-for-user`;\n }\n getList() {\n return this.http.get(this.apiGetTenants).pipe(map((response) => response.items.map((item) => {\n return this.mapToAXPTenant(item);\n })));\n }\n async set(tenant) {\n return Promise.resolve();\n }\n mapToAXPTenant(item) {\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.title || 'defaultTitle',\n // Add other fields and defaults as needed, and handle the logo if applicable\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcTenantLoader, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcTenantLoader }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcTenantLoader, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.HttpClient }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L2FwaS9zcmMvbGliL2F1dGgvb2lkYy90ZW5hbnQubG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFHdkMsTUFBTSxPQUFPLG1CQUFtQjtJQUc5QixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBRjVCLFlBQU8sR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN4QyxrQkFBYSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLDZCQUE2QixDQUFDO0lBQ3RDLENBQUM7SUFFeEMsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQW1CLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQzdELEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQ2YsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBaUI7UUFDekIsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFTO1FBQzlCLE9BQU87WUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxhQUFhO1lBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLGNBQWM7WUFDbkMsNkVBQTZFO1NBQzlFLENBQUM7SUFDSixDQUFDOytHQTFCVSxtQkFBbUI7bUhBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFRlbmFudCwgQVhQVGVuYW50TG9hZGVyIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUF9ST09UX0NPTkZJR19UT0tFTiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNT2lkY1RlbmFudExvYWRlciBpbXBsZW1lbnRzIEFYUFRlbmFudExvYWRlciB7XG4gIHByaXZhdGUgY29uZmlncyA9IGluamVjdChBWFBfUk9PVF9DT05GSUdfVE9LRU4pO1xuICBwcml2YXRlIGFwaUdldFRlbmFudHMgPSBgJHt0aGlzLmNvbmZpZ3MuYmFzZVVybH0vdGVuYW50cy9hdmFpbGFibGUtZm9yLXVzZXJgO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgZ2V0TGlzdCgpOiBPYnNlcnZhYmxlPEFYUFRlbmFudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8eyBpdGVtczogYW55W10gfT4odGhpcy5hcGlHZXRUZW5hbnRzKS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZSkgPT5cbiAgICAgICAgcmVzcG9uc2UuaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubWFwVG9BWFBUZW5hbnQoaXRlbSk7XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgc2V0KHRlbmFudDogQVhQVGVuYW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBUb0FYUFRlbmFudChpdGVtOiBhbnkpOiBBWFBUZW5hbnQge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogaXRlbS5pZCxcbiAgICAgIG5hbWU6IGl0ZW0ubmFtZSB8fCAnZGVmYXVsdE5hbWUnLFxuICAgICAgdGl0bGU6IGl0ZW0udGl0bGUgfHwgJ2RlZmF1bHRUaXRsZScsXG4gICAgICAvLyBBZGQgb3RoZXIgZmllbGRzIGFuZCBkZWZhdWx0cyBhcyBuZWVkZWQsIGFuZCBoYW5kbGUgdGhlIGxvZ28gaWYgYXBwbGljYWJsZVxuICAgIH07XG4gIH1cbn1cbiJdfQ==","import { AXP_REPORT_CATEGORY_PROVIDER, AXP_REPORT_DEFINITION_PROVIDER, } from '@acorex/modules/report-management';\n//#endregion\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Helper Functions ----\n// /**\n// * Converts a widget string to AXPWidgetsList key\n// */\n// function convertWidgetStringToAXPWidgetsListKey(\n// widgetString: string,\n// )\n// :\n// | keyof typeof AXPWidgetsList.Editors\n// | keyof typeof AXPWidgetsList.Layouts\n// | keyof typeof AXPWidgetsList.Actions\n// | keyof typeof AXPWidgetsList.Advanced\n// | keyof typeof AXPWidgetsList.Templates\n// | keyof typeof AXPWidgetsList.Entity\n// | keyof typeof AXPWidgetsList.Theme\n// {\n// console.log('Converting widget string:', widgetString);\n// // Check if the string is in format \"AXPWidgetsList.Category.Key\"\n// if (widgetString.startsWith('AXPWidgetsList.')) {\n// // Extract the key from \"AXPWidgetsList.Editors.DateTimeBox\" -> \"DateTimeBox\"\n// const parts = widgetString.split('.');\n// if (parts.length >= 3) {\n// const key = parts[parts.length - 1]; // Get the last part (key)\n// console.log('Extracted key from AXPWidgetsList format:', key);\n// return key as any;\n// }\n// }\n// // Search through all AXPWidgetsList categories to find matching widget\n// for (const category of Object.values(AXPWidgetsList)) {\n// if (typeof category === 'object') {\n// for (const [key, value] of Object.entries(category)) {\n// if (value === widgetString) {\n// console.log('Found matching widget:', key, 'for value:', value);\n// return key as any; // Return the AXPWidgetsList key (e.g., \"DateTimeBox\")\n// }\n// }\n// }\n// }\n// console.log('Widget not found in AXPWidgetsList, returning original string:', widgetString);\n// // If not found in AXPWidgetsList, return the original string as fallback\n// return widgetString as any;\n// }\n//#endregion\n//#region ---- Shared Data Service ----\nexport class AXCReportManagementDataService {\n constructor() {\n this.http = inject(HttpClient);\n this.configs = inject(AXP_ROOT_CONFIG_TOKEN);\n this.baseUrl = this.configs.baseUrl;\n // Cache for category data to avoid duplicate API calls\n this.categoryDataCache = new Map();\n this.rootCategoriesCache = null;\n this.pendingRequests = new Map();\n this.pendingRootCategoriesRequest = null;\n }\n //#region ---- Lazy Category/Report Fetching ----\n /**\n * Fetch root categories (no parent). Only root categories without reports and children.\n * Uses cache and pending requests to avoid duplicate API calls.\n */\n async getRootCategories() {\n // Check if already cached\n if (this.rootCategoriesCache !== null) {\n return this.rootCategoriesCache;\n }\n // Check if there's already a pending request\n if (this.pendingRootCategoriesRequest !== null) {\n return this.pendingRootCategoriesRequest;\n }\n // Create the request and cache it\n const requestPromise = (async () => {\n try {\n const url = `${this.baseUrl}/v1/global/report-management/category`;\n const params = { Skip: 0, Take: 1000 };\n const response = await firstValueFrom(this.http.get(url, { params }));\n const all = response.items ?? [];\n const rootCategories = all.filter((i) => !i.reportCategoryParentId);\n // Cache the result\n this.rootCategoriesCache = rootCategories;\n return rootCategories;\n }\n finally {\n // Remove from pending requests after completion\n this.pendingRootCategoriesRequest = null;\n }\n })();\n this.pendingRootCategoriesRequest = requestPromise;\n return requestPromise;\n }\n /**\n * Fetch category data for a given parentId.\n * Returns the parent category with its FolderItems (children) and ReportDefinitionItems (reports).\n * Uses cache to avoid duplicate API calls.\n */\n async getCategoryData(parentId) {\n // Check if already cached\n if (this.categoryDataCache.has(parentId)) {\n return this.categoryDataCache.get(parentId);\n }\n // Check if there's already a pending request for this category\n if (this.pendingRequests.has(parentId)) {\n return this.pendingRequests.get(parentId);\n }\n // Create the request and cache it\n const requestPromise = (async () => {\n try {\n const url = `${this.baseUrl}/v1/global/report-management/category/${parentId}`;\n const response = await firstValueFrom(this.http.get(url));\n const categoryData = response.items?.[0];\n // Cache the result\n this.categoryDataCache.set(parentId, categoryData);\n return categoryData;\n }\n catch {\n const undefinedResult = undefined;\n this.categoryDataCache.set(parentId, undefinedResult);\n return undefinedResult;\n }\n finally {\n // Remove from pending requests after completion\n this.pendingRequests.delete(parentId);\n }\n })();\n this.pendingRequests.set(parentId, requestPromise);\n return requestPromise;\n }\n /**\n * Fetch both child categories and reports for a given parentId.\n * This method ensures only one API call is made and both results are returned.\n */\n async getCategoryChildrenAndReports(parentId) {\n const categoryData = await this.getCategoryData(parentId);\n return {\n categories: categoryData?.folderItems ?? [],\n reports: categoryData?.reportDefinitionItems ?? [],\n };\n }\n /**\n * Fetch child categories of a given parent.\n * Uses getCategoryData to get FolderItems (children) from the parent category.\n */\n async getChildCategories(parentId) {\n const categoryData = await this.getCategoryData(parentId);\n return categoryData?.folderItems ?? [];\n }\n /**\n * Fetch report definitions that belong to a specific category.\n * Uses getCategoryData to get ReportDefinitionItems (reports) from the category.\n */\n async getCategoryReports(categoryId) {\n const categoryData = await this.getCategoryData(categoryId);\n return categoryData?.reportDefinitionItems ?? [];\n }\n /**\n * Fetch a single category by id.\n * First checks cache, then uses getCategoryData if not found in cache.\n */\n async getCategoryById(id) {\n // First check if it's in cache (from previous getCategoryData calls)\n if (this.categoryDataCache.has(id)) {\n return this.categoryDataCache.get(id);\n }\n // Try to get from category data endpoint (which will cache it)\n const categoryData = await this.getCategoryData(id);\n if (categoryData) {\n return categoryData;\n }\n // Fallback: search in root categories cache\n if (this.rootCategoriesCache) {\n const found = this.rootCategoriesCache.find((c) => c.id === id);\n if (found) {\n return found;\n }\n }\n // Last resort: search in all categories (but this should rarely happen)\n try {\n const url = `${this.baseUrl}/v1/global/report-management/category`;\n const params = { Skip: 0, Take: 1000 };\n const response = await firstValueFrom(this.http.get(url, { params }));\n const all = response.items ?? [];\n return all.find((c) => c.id === id);\n }\n catch {\n return undefined;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportManagementDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportManagementDataService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportManagementDataService, decorators: [{\n type: Injectable\n }] });\n//#endregion\n//#region ---- API Providers ----\n/**\n * Category provider that uses the shared data service.\n * Both providers use the same dataService instance which ensures proper caching.\n */\nexport class AXCReportCategoryApiProvider {\n constructor() {\n this.dataService = inject(AXCReportManagementDataService);\n }\n async getList(parentId) {\n try {\n // For root level, get root categories (each category includes folderItems in API response)\n if (!parentId) {\n const filteredItems = await this.dataService.getRootCategories();\n // Each root category has folderItems in the API response, but we only return the root categories themselves\n // The folderItems are preserved in the API response structure, similar to child state\n return filteredItems.map((item) => this.mapApiCategoryToReportCategory(item));\n }\n // For child level, get categories from category data (which includes folderItems)\n // This ensures we use the same API response that getList for definitions will use\n // The folderItems structure is preserved, similar to root state\n const categoryData = await this.dataService.getCategoryData(parentId);\n const filteredItems = categoryData?.folderItems ?? [];\n return filteredItems.map((item) => this.mapApiCategoryToReportCategory(item));\n }\n catch (error) {\n console.error('Error fetching report categories:', error);\n return [];\n }\n }\n async getById(id) {\n try {\n const apiItem = await this.dataService.getCategoryById(id);\n if (!apiItem) {\n return undefined;\n }\n return this.mapApiCategoryToReportCategory(apiItem);\n }\n catch (error) {\n console.error('Error fetching report category by ID:', error);\n return undefined;\n }\n }\n mapApiCategoryToReportCategory(apiItem) {\n return {\n id: apiItem.id,\n title: apiItem.title,\n description: apiItem.description || undefined,\n parentId: apiItem.reportCategoryParentId || undefined,\n hasChild: apiItem.folderCount > 0, // folderItems = folders\n hasReport: apiItem.itemCount > 0, // reportDefinitionItems = files\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportCategoryApiProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportCategoryApiProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportCategoryApiProvider, decorators: [{\n type: Injectable\n }] });\n/**\n * Definition provider that uses the shared data service.\n * Both providers use the same dataService instance which ensures proper caching.\n */\nexport class AXCReportDefinitionApiProvider {\n constructor() {\n this.dataService = inject(AXCReportManagementDataService);\n this.http = inject(HttpClient);\n }\n async getList(categoryId) {\n try {\n // Use getCategoryData which is cached and shared with getCategories\n // This ensures only one API call is made when both getCategories and getReportsByCategoryId are called\n const categoryData = await this.dataService.getCategoryData(categoryId);\n const defs = categoryData?.reportDefinitionItems ?? [];\n const reportDefinitions = defs.map((item) => this.mapApiReportDefinitionItemToReportDefinition(item));\n return reportDefinitions;\n }\n catch (error) {\n console.error('Error fetching report definitions:', error);\n return [];\n }\n }\n async getById(id) {\n try {\n // Make API call to get full report definition with layouts\n const url = `${this.dataService['baseUrl']}/v1/global/report-management/report/${id}`;\n const response = await firstValueFrom(this.http.get(url));\n return this.mapApiReportDefinitionToReportDefinition(response);\n }\n catch (error) {\n console.error('Error fetching report definition by ID:', error);\n return undefined;\n }\n }\n mapApiReportDefinitionItemToReportDefinition(apiItem) {\n return {\n id: apiItem.id,\n title: apiItem.title,\n description: apiItem.description || undefined,\n categoryIds: apiItem.categoryIds,\n parameterGroups: [], // These would need to be fetched separately if needed\n layouts: [], // These would need to be fetched separately if needed\n defaultLayoutId: '', // This would need to be set based on the first layout\n };\n }\n mapApiReportDefinitionToReportDefinition(apiResponse) {\n let res = {\n id: apiResponse.id,\n title: apiResponse.title,\n description: apiResponse.description || undefined,\n categoryIds: apiResponse.categoryIds,\n parameterGroups: apiResponse.parameterGroups.map((group) => ({\n name: group.name,\n title: group.title,\n parameters: group.parameters.map((param) => ({\n path: param.path,\n title: param.title,\n description: param.description,\n widget: {\n type: param.widget.type,\n options: param.widget.options || {},\n valueTransforms: param.widget.valueTransforms || {},\n },\n })),\n })),\n layouts: apiResponse.layouts.map((layout) => ({\n id: layout.id,\n title: layout.title,\n layout: layout.layout,\n dataSource: layout.dataSource,\n export: layout.export,\n isDefault: layout.isDefault || false,\n })),\n defaultLayoutId: apiResponse.defaultLayoutId,\n };\n return res;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportDefinitionApiProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportDefinitionApiProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportDefinitionApiProvider, decorators: [{\n type: Injectable\n }] });\n//#endregion\n//#endregion\n//#region ---- Provider Exports ----\n/**\n * Both providers use the same dataService instance (which is a singleton),\n * ensuring they share the same cache and only one API call is made when both\n * getCategories and getReportsByCategoryId are called for the same categoryId.\n */\nexport const AXC_REPORT_CATEGORY_API_PROVIDER = {\n provide: AXP_REPORT_CATEGORY_PROVIDER,\n useClass: AXCReportCategoryApiProvider,\n multi: true,\n};\nexport const AXC_REPORT_DEFINITION_API_PROVIDER = {\n provide: AXP_REPORT_DEFINITION_PROVIDER,\n useClass: AXCReportDefinitionApiProvider,\n multi: true,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LW1hbmFnZW1lbnQtYXBpLnByb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L2FwaS9zcmMvbGliL3JlcG9ydC1tYW5hZ2VtZW50L3JlcG9ydC1tYW5hZ2VtZW50LWFwaS5wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUtMLDRCQUE0QixFQUM1Qiw4QkFBOEIsR0FDL0IsTUFBTSxtQ0FBbUMsQ0FBQztBQWEzQyxZQUFZO0FBQ1osT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBdUd0QyxZQUFZO0FBRVosd0NBQXdDO0FBRXhDLE1BQU07QUFDTixvREFBb0Q7QUFDcEQsTUFBTTtBQUNOLG1EQUFtRDtBQUNuRCwwQkFBMEI7QUFDMUIsSUFBSTtBQUNKLElBQUk7QUFDSiwwQ0FBMEM7QUFDMUMsMENBQTBDO0FBQzFDLDBDQUEwQztBQUMxQywyQ0FBMkM7QUFDM0MsNENBQTRDO0FBQzVDLHlDQUF5QztBQUN6Qyx3Q0FBd0M7QUFDeEMsTUFBTTtBQUNOLDREQUE0RDtBQUM1RCxzRUFBc0U7QUFDdEUsc0RBQXNEO0FBQ3RELG9GQUFvRjtBQUNwRiw2Q0FBNkM7QUFDN0MsK0JBQStCO0FBQy9CLHdFQUF3RTtBQUN4RSx1RUFBdUU7QUFDdkUsMkJBQTJCO0FBQzNCLFFBQVE7QUFDUixNQUFNO0FBRU4sNEVBQTRFO0FBQzVFLDREQUE0RDtBQUM1RCwwQ0FBMEM7QUFDMUMsK0RBQStEO0FBQy9ELHdDQUF3QztBQUN4Qyw2RUFBNkU7QUFDN0Usc0ZBQXNGO0FBQ3RG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RUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHO0lBQ2hELE9BQU8sRUFBRSw4QkFBOEI7SUFDdkMsUUFBUSxFQUFFLDhCQUE4QjtJQUN4QyxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXaWRnZXRzTGlzdCB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy9jb21tb24nO1xuaW1wb3J0IHtcbiAgQVhQUmVwb3J0Q2F0ZWdvcnksXG4gIEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXIsXG4gIEFYUFJlcG9ydERlZmluaXRpb24sXG4gIEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlcixcbiAgQVhQX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUixcbiAgQVhQX1JFUE9SVF9ERUZJTklUSU9OX1BST1ZJREVSLFxufSBmcm9tICdAYWNvcmV4L21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQnO1xuXG4vLyNyZWdpb24gLS0tLSAgIEV4ZWN1dGUgUmVwb3J0IERUTyAgIC0tLS1cblxuLyoqXG4gKiBFeGVjdXRlIFJlcG9ydCBEVE8gLSBSZXNwb25zZSBmcm9tIHJlcG9ydCBleGVjdXRpb24gQVBJXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRXhlY3V0ZVJlcG9ydER0byB7XG4gIHR5cGU6IHN0cmluZztcbiAgaXRlbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHRvdGFsQ291bnQ6IG51bWJlcjtcbn1cblxuLy8jZW5kcmVnaW9uXG5pbXBvcnQgeyBBWFBfUk9PVF9DT05GSUdfVE9LRU4gfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG4vLyNyZWdpb24gLS0tLSAgIEFQSSBSZXNwb25zZSBUeXBlcyAgIC0tLS1cblxuLyoqXG4gKiBBUEkgUmVzcG9uc2UgZm9yIENhdGVnb3J5IGVuZHBvaW50XG4gKiBVc2VkIGJ5OiBHRVQgL2FwaS92MS9nbG9iYWwvcmVwb3J0LW1hbmFnZW1lbnQvY2F0ZWdvcnlcbiAqICAgICAgICAgIEdFVCAvYXBpL3YxL2dsb2JhbC9yZXBvcnQtbWFuYWdlbWVudC9jYXRlZ29yeS97cGFyZW50SWR9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhDUmVwb3J0Q2F0ZWdvcnlBcGlSZXNwb25zZSB7XG4gIHRvdGFsQ291bnQ6IG51bWJlcjtcbiAgaXRlbXM6IEFYQ1JlcG9ydENhdGVnb3J5QXBpSXRlbVtdO1xufVxuXG4vKipcbiAqIENhdGVnb3J5IEl0ZW0gd2l0aCByZWN1cnNpdmUgc3RydWN0dXJlXG4gKiBFYWNoIGNhdGVnb3J5IGNhbiBjb250YWluIGNoaWxkIGNhdGVnb3JpZXMgKGZvbGRlckl0ZW1zKSBhbmQgcmVwb3J0cyAocmVwb3J0RGVmaW5pdGlvbkl0ZW1zKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYQ1JlcG9ydENhdGVnb3J5QXBpSXRlbSB7XG4gIHJlcG9ydENhdGVnb3J5UGFyZW50SWQ6IHN0cmluZyB8IG51bGw7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gIGZvbGRlckNvdW50OiBudW1iZXI7XG4gIGl0ZW1Db3VudDogbnVtYmVyO1xuICBpc0FyY2hpdmVkOiBib29sZWFuO1xuICByZXBvcnREZWZpbml0aW9uSXRlbXM6IEFYQ1JlcG9ydERlZmluaXRpb25BcGlJdGVtW107XG4gIGZvbGRlckl0ZW1zOiBBWENSZXBvcnRDYXRlZ29yeUFwaUl0ZW1bXTsgLy8gUmVjdXJzaXZlOiBjaGlsZCBjYXRlZ29yaWVzXG4gIGlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwb3J0IERlZmluaXRpb24gSXRlbSAoaW4gY2F0ZWdvcnkgbGlzdCwgd2l0aG91dCBmdWxsIGxheW91dClcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWENSZXBvcnREZWZpbml0aW9uQXBpSXRlbSB7XG4gIGNhdGVnb3J5SWRzOiBzdHJpbmdbXTtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgaXNBcmNoaXZlZDogYm9vbGVhbjtcbiAgaWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBGdWxsIFJlcG9ydCBEZWZpbml0aW9uIHdpdGggY29tcGxldGUgZGV0YWlscyBpbmNsdWRpbmcgbGF5b3V0c1xuICogVXNlZCBieTogR0VUIC9hcGkvdjEvZ2xvYmFsL3JlcG9ydC1tYW5hZ2VtZW50L3JlcG9ydC97cmVwb3J0SWR9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhDUmVwb3J0RGVmaW5pdGlvbkFwaVJlc3BvbnNlIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgY2F0ZWdvcnlJZHM6IHN0cmluZ1tdO1xuICBwYXJhbWV0ZXJHcm91cHM6IEFYQ1JlcG9ydFBhcmFtZXRlckdyb3VwW107XG4gIGxheW91dHM6IEFYQ1JlcG9ydExheW91dERlZmluaXRpb25bXTtcbiAgZGVmYXVsdExheW91dElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVyIEdyb3VwIGZvciByZXBvcnQgcGFyYW1ldGVyc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYQ1JlcG9ydFBhcmFtZXRlckdyb3VwIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBBWENSZXBvcnRQYXJhbWV0ZXJbXTtcbn1cblxuLyoqXG4gKiBSZXBvcnQgUGFyYW1ldGVyIGRlZmluaXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWENSZXBvcnRQYXJhbWV0ZXIge1xuICBwYXRoOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB3aWRnZXQ6IHtcbiAgICB0eXBlOiBzdHJpbmc7IC8vIEJhY2tlbmQgc2VuZHMgdmFsdWVzIGxpa2UgJ251bWJlci1lZGl0b3InLCAndGV4dC1lZGl0b3InLCBldGMuXG4gICAgcGF0aD86IHN0cmluZyB8IG51bGw7XG4gICAgb3B0aW9ucz86IGFueTtcbiAgICB2YWx1ZVRyYW5zZm9ybXM/OiBhbnk7XG4gIH07XG59XG5cbi8qKlxuICogTGF5b3V0IERlZmluaXRpb24gZm9yIHJlcG9ydCBkaXNwbGF5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhDUmVwb3J0TGF5b3V0RGVmaW5pdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGxheW91dDogYW55OyAvLyBXaWxsIGJlIG1hcHBlZCB0byBwcm9wZXIgQVhQUmVwb3J0TGF5b3V0IHR5cGVcbiAgZGF0YVNvdXJjZT86IHtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBwcm92aWRlcj86IHN0cmluZztcbiAgfTtcbiAgZXhwb3J0Pzoge1xuICAgIGZpbGVOYW1lVGVtcGxhdGU6IHN0cmluZztcbiAgICBwZGY/OiBhbnk7XG4gICAgZXhjZWw/OiBhbnk7XG4gICAgY3N2PzogYW55O1xuICB9O1xuICBpc0RlZmF1bHQ/OiBib29sZWFuO1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBIZWxwZXIgRnVuY3Rpb25zICAgLS0tLVxuXG4vLyAvKipcbi8vICAqIENvbnZlcnRzIGEgd2lkZ2V0IHN0cmluZyB0byBBWFBXaWRnZXRzTGlzdCBrZXlcbi8vICAqL1xuLy8gZnVuY3Rpb24gY29udmVydFdpZGdldFN0cmluZ1RvQVhQV2lkZ2V0c0xpc3RLZXkoXG4vLyAgIHdpZGdldFN0cmluZzogc3RyaW5nLFxuLy8gKVxuLy8gOlxuLy8gICB8IGtleW9mIHR5cGVvZiBBWFBXaWRnZXRzTGlzdC5FZGl0b3JzXG4vLyAgIHwga2V5b2YgdHlwZW9mIEFYUFdpZGdldHNMaXN0LkxheW91dHNcbi8vICAgfCBrZXlvZiB0eXBlb2YgQVhQV2lkZ2V0c0xpc3QuQWN0aW9uc1xuLy8gICB8IGtleW9mIHR5cGVvZiBBWFBXaWRnZXRzTGlzdC5BZHZhbmNlZFxuLy8gICB8IGtleW9mIHR5cGVvZiBBWFBXaWRnZXRzTGlzdC5UZW1wbGF0ZXNcbi8vICAgfCBrZXlvZiB0eXBlb2YgQVhQV2lkZ2V0c0xpc3QuRW50aXR5XG4vLyAgIHwga2V5b2YgdHlwZW9mIEFYUFdpZGdldHNMaXN0LlRoZW1lXG4vLyAgIHtcbi8vICAgY29uc29sZS5sb2coJ0NvbnZlcnRpbmcgd2lkZ2V0IHN0cmluZzonLCB3aWRnZXRTdHJpbmcpO1xuLy8gICAvLyBDaGVjayBpZiB0aGUgc3RyaW5nIGlzIGluIGZvcm1hdCBcIkFYUFdpZGdldHNMaXN0LkNhdGVnb3J5LktleVwiXG4vLyAgIGlmICh3aWRnZXRTdHJpbmcuc3RhcnRzV2l0aCgnQVhQV2lkZ2V0c0xpc3QuJykpIHtcbi8vICAgICAvLyBFeHRyYWN0IHRoZSBrZXkgZnJvbSBcIkFYUFdpZGdldHNMaXN0LkVkaXRvcnMuRGF0ZVRpbWVCb3hcIiAtPiBcIkRhdGVUaW1lQm94XCJcbi8vICAgICBjb25zdCBwYXJ0cyA9IHdpZGdldFN0cmluZy5zcGxpdCgnLicpO1xuLy8gICAgIGlmIChwYXJ0cy5sZW5ndGggPj0gMykge1xuLy8gICAgICAgY29uc3Qga2V5ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07IC8vIEdldCB0aGUgbGFzdCBwYXJ0IChrZXkpXG4vLyAgICAgICBjb25zb2xlLmxvZygnRXh0cmFjdGVkIGtleSBmcm9tIEFYUFdpZGdldHNMaXN0IGZvcm1hdDonLCBrZXkpO1xuLy8gICAgICAgcmV0dXJuIGtleSBhcyBhbnk7XG4vLyAgICAgfVxuLy8gICB9XG5cbi8vICAgLy8gU2VhcmNoIHRocm91Z2ggYWxsIEFYUFdpZGdldHNMaXN0IGNhdGVnb3JpZXMgdG8gZmluZCBtYXRjaGluZyB3aWRnZXRcbi8vICAgZm9yIChjb25zdCBjYXRlZ29yeSBvZiBPYmplY3QudmFsdWVzKEFYUFdpZGdldHNMaXN0KSkge1xuLy8gICAgIGlmICh0eXBlb2YgY2F0ZWdvcnkgPT09ICdvYmplY3QnKSB7XG4vLyAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjYXRlZ29yeSkpIHtcbi8vICAgICAgICAgaWYgKHZhbHVlID09PSB3aWRnZXRTdHJpbmcpIHtcbi8vICAgICAgICAgICBjb25zb2xlLmxvZygnRm91bmQgbWF0Y2hpbmcgd2lkZ2V0OicsIGtleSwgJ2ZvciB2YWx1ZTonLCB2YWx1ZSk7XG4vLyAgICAgICAgICAgcmV0dXJuIGtleSBhcyBhbnk7IC8vIFJldHVybiB0aGUgQVhQV2lkZ2V0c0xpc3Qga2V5IChlLmcuLCBcIkRhdGVUaW1lQm94XCIpXG4vLyAgICAgICAgIH1cbi8vICAgICAgIH1cbi8vICAgICB9XG4vLyAgIH1cblxuLy8gICBjb25zb2xlLmxvZygnV2lkZ2V0IG5vdCBmb3VuZCBpbiBBWFBXaWRnZXRzTGlzdCwgcmV0dXJuaW5nIG9yaWdpbmFsIHN0cmluZzonLCB3aWRnZXRTdHJpbmcpO1xuXG4vLyAgIC8vIElmIG5vdCBmb3VuZCBpbiBBWFBXaWRnZXRzTGlzdCwgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcgYXMgZmFsbGJhY2tcbi8vICAgcmV0dXJuIHdpZGdldFN0cmluZyBhcyBhbnk7XG4vLyB9XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIFNoYXJlZCBEYXRhIFNlcnZpY2UgICAtLS0tXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWENSZXBvcnRNYW5hZ2VtZW50RGF0YVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlncyA9IGluamVjdChBWFBfUk9PVF9DT05GSUdfVE9LRU4pO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VVcmwgPSB0aGlzLmNvbmZpZ3MuYmFzZVVybDtcblxuICAvLyBDYWNoZSBmb3IgY2F0ZWdvcnkgZGF0YSB0byBhdm9pZCBkdXBsaWNhdGUgQVBJIGNhbGxzXG4gIHByaXZhdGUgY2F0ZWdvcnlEYXRhQ2FjaGUgPSBuZXcgTWFwPHN0cmluZyB8IHVuZGVmaW5lZCwgQVhDUmVwb3J0Q2F0ZWdvcnlBcGlJdGVtIHwgdW5kZWZpbmVkPigpO1xuICBwcml2YXRlIHJvb3RDYXRlZ29yaWVzQ2FjaGU6IEFYQ1JlcG9ydENhdGVnb3J5QXBpSXRlbVtdIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcGVuZGluZ1JlcXVlc3RzID0gbmV3IE1hcDxzdHJpbmcgfCB1bmRlZmluZWQsIFByb21pc2U8QVhDUmVwb3J0Q2F0ZWdvcnlBcGlJdGVtIHwgdW5kZWZpbmVkPj4oKTtcbiAgcHJpdmF0ZSBwZW5kaW5nUm9vdENhdGVnb3JpZXNSZXF1ZXN0OiBQcm9taXNlPEFYQ1JlcG9ydENhdGVnb3J5QXBpSXRlbVtdPiB8IG51bGwgPSBudWxsO1xuXG4gIC8vI3JlZ2lvbiAtLS0tICAgTGF6eSBDYXRlZ29yeS9SZXBvcnQgRmV0Y2hpbmcgICAtLS0tXG5cbiAgLyoqXG4gICAqIEZldGNoIHJvb3QgY2F0ZWdvcmllcyAobm8gcGFyZW50KS4gT25seSByb290IGNhdGVnb3JpZXMgd2l0aG91dCByZXBvcnRzIGFuZCBjaGlsZHJlbi5cbiAgICogVXNlcyBjYWNoZSBhbmQgcGVuZGluZyByZXF1ZXN0cyB0byBhdm9pZCBkdXBsaWNhdGUgQVBJIGNhbGxzLlxuICAgKi9cbiAgYXN5bmMgZ2V0Um9vdENhdGVnb3JpZXMoKTogUHJvbWlzZTxBWENSZXBvcnRDYXRlZ29yeUFwaUl0ZW1bXT4ge1xuICAgIC8vIENoZWNrIGlmIGFscmVhZHkgY2FjaGVkXG4gICAgaWYgKHRoaXMucm9vdENhdGVnb3JpZXNDYWNoZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMucm9vdENhdGVnb3JpZXNDYWNoZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGFscmVhZHkgYSBwZW5kaW5nIHJlcXVlc3RcbiAgICBpZiAodGhpcy5wZW5kaW5nUm9vdENhdGVnb3JpZXNSZXF1ZXN0ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5wZW5kaW5nUm9vdENhdGVnb3JpZXNSZXF1ZXN0O1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgcmVxdWVzdCBhbmQgY2FjaGUgaXRcbiAgICBjb25zdCByZXF1ZXN0UHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcmx9L3YxL2dsb2JhbC9yZXBvcnQtbWFuYWdlbWVudC9jYXRlZ29yeWA7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgU2tpcDogMCwgVGFrZTogMTAwMCB9O1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8QVhDUmVwb3J0Q2F0ZWdvcnlBcGlSZXNwb25zZT4odXJsLCB7IHBhcmFtcyB9KSk7XG4gICAgICAgIGNvbnN0IGFsbCA9IHJlc3BvbnNlLml0ZW1zID8/IFtdO1xuICAgICAgICBjb25zdCByb290Q2F0ZWdvcmllcyA9IGFsbC5maWx0ZXIoKGkpID0+ICFpLnJlcG9ydENhdGVnb3J5UGFyZW50SWQpO1xuICAgICAgICAvLyBDYWNoZSB0aGUgcmVzdWx0XG4gICAgICAgIHRoaXMucm9vdENhdGVnb3JpZXNDYWNoZSA9IHJvb3RDYXRlZ29yaWVzO1xuICAgICAgICByZXR1cm4gcm9vdENhdGVnb3JpZXM7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICAvLyBSZW1vdmUgZnJvbSBwZW5kaW5nIHJlcXVlc3RzIGFmdGVyIGNvbXBsZXRpb25cbiAgICAgICAgdGhpcy5wZW5kaW5nUm9vdENhdGVnb3JpZXNSZXF1ZXN0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9KSgpO1xuXG4gICAgdGhpcy5wZW5kaW5nUm9vdENhdGVnb3JpZXNSZXF1ZXN0ID0gcmVxdWVzdFByb21pc2U7XG4gICAgcmV0dXJuIHJlcXVlc3RQcm9taXNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGNhdGVnb3J5IGRhdGEgZm9yIGEgZ2l2ZW4gcGFyZW50SWQuXG4gICAqIFJldHVybnMgdGhlIHBhcmVudCBjYXRlZ29yeSB3aXRoIGl0cyBGb2xkZXJJdGVtcyAoY2hpbGRyZW4pIGFuZCBSZXBvcnREZWZpbml0aW9uSXRlbXMgKHJlcG9ydHMpLlxuICAgKiBVc2VzIGNhY2hlIHRvIGF2b2lkIGR1cGxpY2F0ZSBBUEkgY2FsbHMuXG4gICAqL1xuICBhc3luYyBnZXRDYXRlZ29yeURhdGEocGFyZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QVhDUmVwb3J0Q2F0ZWdvcnlBcGlJdGVtIHwgdW5kZWZpbmVkPiB7XG4gICAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBjYWNoZWRcbiAgICBpZiAodGhpcy5jYXRlZ29yeURhdGFDYWNoZS5oYXMocGFyZW50SWQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYXRlZ29yeURhdGFDYWNoZS5nZXQocGFyZW50SWQpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYWxyZWFkeSBhIHBlbmRpbmcgcmVxdWVzdCBmb3IgdGhpcyBjYXRlZ29yeVxuICAgIGlmICh0aGlzLnBlbmRpbmdSZXF1ZXN0cy5oYXMocGFyZW50SWQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5wZW5kaW5nUmVxdWVzdHMuZ2V0KHBhcmVudElkKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIHJlcXVlc3QgYW5kIGNhY2hlIGl0XG4gICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJsfS92MS9nbG9iYWwvcmVwb3J0LW1hbmFnZW1lbnQvY2F0ZWdvcnkvJHtwYXJlbnRJZH1gO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8QVhDUmVwb3J0Q2F0ZWdvcnlBcGlSZXNwb25zZT4odXJsKSk7XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5RGF0YSA9IHJlc3BvbnNlLml0ZW1zPy5bMF07XG4gICAgICAgIC8vIENhY2hlIHRoZSByZXN1bHRcbiAgICAgICAgdGhpcy5jYXRlZ29yeURhdGFDYWNoZS5zZXQocGFyZW50SWQsIGNhdGVnb3J5RGF0YSk7XG4gICAgICAgIHJldHVybiBjYXRlZ29yeURhdGE7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgY29uc3QgdW5kZWZpbmVkUmVzdWx0ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YUNhY2hlLnNldChwYXJlbnRJZCwgdW5kZWZpbmVkUmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFJlc3VsdDtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIC8vIFJlbW92ZSBmcm9tIHBlbmRpbmcgcmVxdWVzdHMgYWZ0ZXIgY29tcGxldGlvblxuICAgICAgICB0aGlzLnBlbmRpbmdSZXF1ZXN0cy5kZWxldGUocGFyZW50SWQpO1xuICAgICAgfVxuICAgIH0pKCk7XG5cbiAgICB0aGlzLnBlbmRpbmdSZXF1ZXN0cy5zZXQocGFyZW50SWQsIHJlcXVlc3RQcm9taXNlKTtcbiAgICByZXR1cm4gcmVxdWVzdFByb21pc2U7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYm90aCBjaGlsZCBjYXRlZ29yaWVzIGFuZCByZXBvcnRzIGZvciBhIGdpdmVuIHBhcmVudElkLlxuICAgKiBUaGlzIG1ldGhvZCBlbnN1cmVzIG9ubHkgb25lIEFQSSBjYWxsIGlzIG1hZGUgYW5kIGJvdGggcmVzdWx0cyBhcmUgcmV0dXJuZWQuXG4gICAqL1xuICBhc3luYyBnZXRDYXRlZ29yeUNoaWxkcmVuQW5kUmVwb3J0cyhwYXJlbnRJZDogc3RyaW5nKTogUHJvbWlzZTx7XG4gICAgY2F0ZWdvcmllczogQVhDUmVwb3J0Q2F0ZWdvcnlBcGlJdGVtW107XG4gICAgcmVwb3J0czogQVhDUmVwb3J0RGVmaW5pdGlvbkFwaUl0ZW1bXTtcbiAgfT4ge1xuICAgIGNvbnN0IGNhdGVnb3J5RGF0YSA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcnlEYXRhKHBhcmVudElkKTtcbiAgICByZXR1cm4ge1xuICAgICAgY2F0ZWdvcmllczogY2F0ZWdvcnlEYXRhPy5mb2xkZXJJdGVtcyA/PyBbXSxcbiAgICAgIHJlcG9ydHM6IGNhdGVnb3J5RGF0YT8ucmVwb3J0RGVmaW5pdGlvbkl0ZW1zID8/IFtdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggY2hpbGQgY2F0ZWdvcmllcyBvZiBhIGdpdmVuIHBhcmVudC5cbiAgICogVXNlcyBnZXRDYXRlZ29yeURhdGEgdG8gZ2V0IEZvbGRlckl0ZW1zIChjaGlsZHJlbikgZnJvbSB0aGUgcGFyZW50IGNhdGVnb3J5LlxuICAgKi9cbiAgYXN5bmMgZ2V0Q2hpbGRDYXRlZ29yaWVzKHBhcmVudElkOiBzdHJpbmcpOiBQcm9taXNlPEFYQ1JlcG9ydENhdGVnb3J5QXBpSXRlbVtdPiB7XG4gICAgY29uc3QgY2F0ZWdvcnlEYXRhID0gYXdhaXQgdGhpcy5nZXRDYXRlZ29yeURhdGEocGFyZW50SWQpO1xuICAgIHJldHVybiBjYXRlZ29yeURhdGE/LmZvbGRlckl0ZW1zID8/IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIHJlcG9ydCBkZWZpbml0aW9ucyB0aGF0IGJlbG9uZyB0byBhIHNwZWNpZmljIGNhdGVnb3J5LlxuICAgKiBVc2VzIGdldENhdGVnb3J5RGF0YSB0byBnZXQgUmVwb3J0RGVmaW5pdGlvbkl0ZW1zIChyZXBvcnRzKSBmcm9tIHRoZSBjYXRlZ29yeS5cbiAgICovXG4gIGFzeW5jIGdldENhdGVnb3J5UmVwb3J0cyhjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYQ1JlcG9ydERlZmluaXRpb25BcGlJdGVtW10+IHtcbiAgICBjb25zdCBjYXRlZ29yeURhdGEgPSBhd2FpdCB0aGlzLmdldENhdGVnb3J5RGF0YShjYXRlZ29yeUlkKTtcbiAgICByZXR1cm4gY2F0ZWdvcnlEYXRhPy5yZXBvcnREZWZpbml0aW9uSXRlbXMgPz8gW107XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYSBzaW5nbGUgY2F0ZWdvcnkgYnkgaWQuXG4gICAqIEZpcnN0IGNoZWNrcyBjYWNoZSwgdGhlbiB1c2VzIGdldENhdGVnb3J5RGF0YSBpZiBub3QgZm91bmQgaW4gY2FjaGUuXG4gICAqL1xuICBhc3luYyBnZXRDYXRlZ29yeUJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhDUmVwb3J0Q2F0ZWdvcnlBcGlJdGVtIHwgdW5kZWZpbmVkPiB7XG4gICAgLy8gRmlyc3QgY2hlY2sgaWYgaXQncyBpbiBjYWNoZSAoZnJvbSBwcmV2aW91cyBnZXRDYXRlZ29yeURhdGEgY2FsbHMpXG4gICAgaWYgKHRoaXMuY2F0ZWdvcnlEYXRhQ2FjaGUuaGFzKGlkKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnlEYXRhQ2FjaGUuZ2V0KGlkKTtcbiAgICB9XG5cbiAgICAvLyBUcnkgdG8gZ2V0IGZyb20gY2F0ZWdvcnkgZGF0YSBlbmRwb2ludCAod2hpY2ggd2lsbCBjYWNoZSBpdClcbiAgICBjb25zdCBjYXRlZ29yeURhdGEgPSBhd2FpdCB0aGlzLmdldENhdGVnb3J5RGF0YShpZCk7XG4gICAgaWYgKGNhdGVnb3J5RGF0YSkge1xuICAgICAgcmV0dXJuIGNhdGVnb3J5RGF0YTtcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjazogc2VhcmNoIGluIHJvb3QgY2F0ZWdvcmllcyBjYWNoZVxuICAgIGlmICh0aGlzLnJvb3RDYXRlZ29yaWVzQ2FjaGUpIHtcbiAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5yb290Q2F0ZWdvcmllc0NhY2hlLmZpbmQoKGMpID0+IGMuaWQgPT09IGlkKTtcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTGFzdCByZXNvcnQ6IHNlYXJjaCBpbiBhbGwgY2F0ZWdvcmllcyAoYnV0IHRoaXMgc2hvdWxkIHJhcmVseSBoYXBwZW4pXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVybH0vdjEvZ2xvYmFsL3JlcG9ydC1tYW5hZ2VtZW50L2NhdGVnb3J5YDtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHsgU2tpcDogMCwgVGFrZTogMTAwMCB9O1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PEFYQ1JlcG9ydENhdGVnb3J5QXBpUmVzcG9uc2U+KHVybCwgeyBwYXJhbXMgfSkpO1xuICAgICAgY29uc3QgYWxsID0gcmVzcG9uc2UuaXRlbXMgPz8gW107XG4gICAgICByZXR1cm4gYWxsLmZpbmQoKGMpID0+IGMuaWQgPT09IGlkKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cblxuICAvLyNlbmRyZWdpb25cbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQVBJIFByb3ZpZGVycyAgIC0tLS1cblxuLyoqXG4gKiBDYXRlZ29yeSBwcm92aWRlciB0aGF0IHVzZXMgdGhlIHNoYXJlZCBkYXRhIHNlcnZpY2UuXG4gKiBCb3RoIHByb3ZpZGVycyB1c2UgdGhlIHNhbWUgZGF0YVNlcnZpY2UgaW5zdGFuY2Ugd2hpY2ggZW5zdXJlcyBwcm9wZXIgY2FjaGluZy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYQ1JlcG9ydENhdGVnb3J5QXBpUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBSZXBvcnRDYXRlZ29yeVByb3ZpZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhU2VydmljZSA9IGluamVjdChBWENSZXBvcnRNYW5hZ2VtZW50RGF0YVNlcnZpY2UpO1xuXG4gIGFzeW5jIGdldExpc3QocGFyZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+IHtcbiAgICB0cnkge1xuICAgICAgLy8gRm9yIHJvb3QgbGV2ZWwsIGdldCByb290IGNhdGVnb3JpZXMgKGVhY2ggY2F0ZWdvcnkgaW5jbHVkZXMgZm9sZGVySXRlbXMgaW4gQVBJIHJlc3BvbnNlKVxuICAgICAgaWYgKCFwYXJlbnRJZCkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gYXdhaXQgdGhpcy5kYXRhU2VydmljZS5nZXRSb290Q2F0ZWdvcmllcygpO1xuICAgICAgICAvLyBFYWNoIHJvb3QgY2F0ZWdvcnkgaGFzIGZvbGRlckl0ZW1zIGluIHRoZSBBUEkgcmVzcG9uc2UsIGJ1dCB3ZSBvbmx5IHJldHVybiB0aGUgcm9vdCBjYXRlZ29yaWVzIHRoZW1zZWx2ZXNcbiAgICAgICAgLy8gVGhlIGZvbGRlckl0ZW1zIGFyZSBwcmVzZXJ2ZWQgaW4gdGhlIEFQSSByZXNwb25zZSBzdHJ1Y3R1cmUsIHNpbWlsYXIgdG8gY2hpbGQgc3RhdGVcbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkSXRlbXMubWFwKChpdGVtKSA9PiB0aGlzLm1hcEFwaUNhdGVnb3J5VG9SZXBvcnRDYXRlZ29yeShpdGVtKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEZvciBjaGlsZCBsZXZlbCwgZ2V0IGNhdGVnb3JpZXMgZnJvbSBjYXRlZ29yeSBkYXRhICh3aGljaCBpbmNsdWRlcyBmb2xkZXJJdGVtcylcbiAgICAgIC8vIFRoaXMgZW5zdXJlcyB3ZSB1c2UgdGhlIHNhbWUgQVBJIHJlc3BvbnNlIHRoYXQgZ2V0TGlzdCBmb3IgZGVmaW5pdGlvbnMgd2lsbCB1c2VcbiAgICAgIC8vIFRoZSBmb2xkZXJJdGVtcyBzdHJ1Y3R1cmUgaXMgcHJlc2VydmVkLCBzaW1pbGFyIHRvIHJvb3Qgc3RhdGVcbiAgICAgIGNvbnN0IGNhdGVnb3J5RGF0YSA9IGF3YWl0IHRoaXMuZGF0YVNlcnZpY2UuZ2V0Q2F0ZWdvcnlEYXRhKHBhcmVudElkKTtcbiAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSBjYXRlZ29yeURhdGE/LmZvbGRlckl0ZW1zID8/IFtdO1xuICAgICAgcmV0dXJuIGZpbHRlcmVkSXRlbXMubWFwKChpdGVtKSA9PiB0aGlzLm1hcEFwaUNhdGVnb3J5VG9SZXBvcnRDYXRlZ29yeShpdGVtKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHJlcG9ydCBjYXRlZ29yaWVzOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRCeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5IHwgdW5kZWZpbmVkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFwaUl0ZW0gPSBhd2FpdCB0aGlzLmRhdGFTZXJ2aWNlLmdldENhdGVnb3J5QnlJZChpZCk7XG4gICAgICBpZiAoIWFwaUl0ZW0pIHsgXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLm1hcEFwaUNhdGVnb3J5VG9SZXBvcnRDYXRlZ29yeShhcGlJdGVtKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcmVwb3J0IGNhdGVnb3J5IGJ5IElEOicsIGVycm9yKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBBcGlDYXRlZ29yeVRvUmVwb3J0Q2F0ZWdvcnkoYXBpSXRlbTogQVhDUmVwb3J0Q2F0ZWdvcnlBcGlJdGVtKTogQVhQUmVwb3J0Q2F0ZWdvcnkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogYXBpSXRlbS5pZCxcbiAgICAgIHRpdGxlOiBhcGlJdGVtLnRpdGxlLFxuICAgICAgZGVzY3JpcHRpb246IGFwaUl0ZW0uZGVzY3JpcHRpb24gfHwgdW5kZWZpbmVkLFxuICAgICAgcGFyZW50SWQ6IGFwaUl0ZW0ucmVwb3J0Q2F0ZWdvcnlQYXJlbnRJZCB8fCB1bmRlZmluZWQsXG4gICAgICBoYXNDaGlsZDogYXBpSXRlbS5mb2xkZXJDb3VudCA+IDAsIC8vIGZvbGRlckl0ZW1zID0gZm9sZGVyc1xuICAgICAgaGFzUmVwb3J0OiBhcGlJdGVtLml0ZW1Db3VudCA+IDAsIC8vIHJlcG9ydERlZmluaXRpb25JdGVtcyA9IGZpbGVzXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIERlZmluaXRpb24gcHJvdmlkZXIgdGhhdCB1c2VzIHRoZSBzaGFyZWQgZGF0YSBzZXJ2aWNlLlxuICogQm90aCBwcm92aWRlcnMgdXNlIHRoZSBzYW1lIGRhdGFTZXJ2aWNlIGluc3RhbmNlIHdoaWNoIGVuc3VyZXMgcHJvcGVyIGNhY2hpbmcuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWENSZXBvcnREZWZpbml0aW9uQXBpUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBSZXBvcnREZWZpbml0aW9uUHJvdmlkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFTZXJ2aWNlID0gaW5qZWN0KEFYQ1JlcG9ydE1hbmFnZW1lbnREYXRhU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICBhc3luYyBnZXRMaXN0KGNhdGVnb3J5SWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbltdPiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFVzZSBnZXRDYXRlZ29yeURhdGEgd2hpY2ggaXMgY2FjaGVkIGFuZCBzaGFyZWQgd2l0aCBnZXRDYXRlZ29yaWVzXG4gICAgICAvLyBUaGlzIGVuc3VyZXMgb25seSBvbmUgQVBJIGNhbGwgaXMgbWFkZSB3aGVuIGJvdGggZ2V0Q2F0ZWdvcmllcyBhbmQgZ2V0UmVwb3J0c0J5Q2F0ZWdvcnlJZCBhcmUgY2FsbGVkXG4gICAgICBjb25zdCBjYXRlZ29yeURhdGEgPSBhd2FpdCB0aGlzLmRhdGFTZXJ2aWNlLmdldENhdGVnb3J5RGF0YShjYXRlZ29yeUlkKTtcbiAgICAgIGNvbnN0IGRlZnMgPSBjYXRlZ29yeURhdGE/LnJlcG9ydERlZmluaXRpb25JdGVtcyA/PyBbXTtcblxuICAgICAgY29uc3QgcmVwb3J0RGVmaW5pdGlvbnMgPSBkZWZzLm1hcCgoaXRlbSkgPT4gdGhpcy5tYXBBcGlSZXBvcnREZWZpbml0aW9uSXRlbVRvUmVwb3J0RGVmaW5pdGlvbihpdGVtKSk7XG5cbiAgICAgIHJldHVybiByZXBvcnREZWZpbml0aW9ucztcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcmVwb3J0IGRlZmluaXRpb25zOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRCeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydERlZmluaXRpb24gfCB1bmRlZmluZWQ+IHtcbiAgICB0cnkge1xuICAgICAgLy8gTWFrZSBBUEkgY2FsbCB0byBnZXQgZnVsbCByZXBvcnQgZGVmaW5pdGlvbiB3aXRoIGxheW91dHNcbiAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZGF0YVNlcnZpY2VbJ2Jhc2VVcmwnXX0vdjEvZ2xvYmFsL3JlcG9ydC1tYW5hZ2VtZW50L3JlcG9ydC8ke2lkfWA7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8QVhDUmVwb3J0RGVmaW5pdGlvbkFwaVJlc3BvbnNlPih1cmwpKTtcbiAgICAgIFxuICAgICAgcmV0dXJuIHRoaXMubWFwQXBpUmVwb3J0RGVmaW5pdGlvblRvUmVwb3J0RGVmaW5pdGlvbihyZXNwb25zZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHJlcG9ydCBkZWZpbml0aW9uIGJ5IElEOicsIGVycm9yKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBBcGlSZXBvcnREZWZpbml0aW9uSXRlbVRvUmVwb3J0RGVmaW5pdGlvbihhcGlJdGVtOiBBWENSZXBvcnREZWZpbml0aW9uQXBpSXRlbSk6IEFYUFJlcG9ydERlZmluaXRpb24ge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogYXBpSXRlbS5pZCxcbiAgICAgIHRpdGxlOiBhcGlJdGVtLnRpdGxlLFxuICAgICAgZGVzY3JpcHRpb246IGFwaUl0ZW0uZGVzY3JpcHRpb24gfHwgdW5kZWZpbmVkLFxuICAgICAgY2F0ZWdvcnlJZHM6IGFwaUl0ZW0uY2F0ZWdvcnlJZHMsXG4gICAgICBwYXJhbWV0ZXJHcm91cHM6IFtdLCAvLyBUaGVzZSB3b3VsZCBuZWVkIHRvIGJlIGZldGNoZWQgc2VwYXJhdGVseSBpZiBuZWVkZWRcbiAgICAgIGxheW91dHM6IFtdLCAvLyBUaGVzZSB3b3VsZCBuZWVkIHRvIGJlIGZldGNoZWQgc2VwYXJhdGVseSBpZiBuZWVkZWRcbiAgICAgIGRlZmF1bHRMYXlvdXRJZDogJycsIC8vIFRoaXMgd291bGQgbmVlZCB0byBiZSBzZXQgYmFzZWQgb24gdGhlIGZpcnN0IGxheW91dFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG1hcEFwaVJlcG9ydERlZmluaXRpb25Ub1JlcG9ydERlZmluaXRpb24oYXBpUmVzcG9uc2U6IEFYQ1JlcG9ydERlZmluaXRpb25BcGlSZXNwb25zZSk6IEFYUFJlcG9ydERlZmluaXRpb24ge1xuICAgIGxldCByZXMgPSB7XG4gICAgICBpZDogYXBpUmVzcG9uc2UuaWQsXG4gICAgICB0aXRsZTogYXBpUmVzcG9uc2UudGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogYXBpUmVzcG9uc2UuZGVzY3JpcHRpb24gfHwgdW5kZWZpbmVkLFxuICAgICAgY2F0ZWdvcnlJZHM6IGFwaVJlc3BvbnNlLmNhdGVnb3J5SWRzLFxuICAgICAgcGFyYW1ldGVyR3JvdXBzOiBhcGlSZXNwb25zZS5wYXJhbWV0ZXJHcm91cHMubWFwKChncm91cCkgPT4gKHtcbiAgICAgICAgbmFtZTogZ3JvdXAubmFtZSxcbiAgICAgICAgdGl0bGU6IGdyb3VwLnRpdGxlLFxuICAgICAgICBwYXJhbWV0ZXJzOiBncm91cC5wYXJhbWV0ZXJzLm1hcCgocGFyYW0pID0+ICh7XG4gICAgICAgICAgcGF0aDogcGFyYW0ucGF0aCxcbiAgICAgICAgICB0aXRsZTogcGFyYW0udGl0bGUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHBhcmFtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIHdpZGdldDoge1xuICAgICAgICAgICAgdHlwZTogcGFyYW0ud2lkZ2V0LnR5cGUsXG4gICAgICAgICAgICBvcHRpb25zOiBwYXJhbS53aWRnZXQub3B0aW9ucyB8fCB7fSxcbiAgICAgICAgICAgIHZhbHVlVHJhbnNmb3JtczogcGFyYW0ud2lkZ2V0LnZhbHVlVHJhbnNmb3JtcyB8fCB7fSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSksXG4gICAgICB9KSksXG4gICAgICBsYXlvdXRzOiBhcGlSZXNwb25zZS5sYXlvdXRzLm1hcCgobGF5b3V0KSA9PiAoe1xuICAgICAgICBpZDogbGF5b3V0LmlkLFxuICAgICAgICB0aXRsZTogbGF5b3V0LnRpdGxlLFxuICAgICAgICBsYXlvdXQ6IGxheW91dC5sYXlvdXQsXG4gICAgICAgIGRhdGFTb3VyY2U6IGxheW91dC5kYXRhU291cmNlIGFzIGFueSxcbiAgICAgICAgZXhwb3J0OiBsYXlvdXQuZXhwb3J0LFxuICAgICAgICBpc0RlZmF1bHQ6IGxheW91dC5pc0RlZmF1bHQgfHwgZmFsc2UsXG4gICAgICB9KSksXG4gICAgICBkZWZhdWx0TGF5b3V0SWQ6IGFwaVJlc3BvbnNlLmRlZmF1bHRMYXlvdXRJZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgUHJvdmlkZXIgRXhwb3J0cyAgIC0tLS1cblxuLyoqXG4gKiBCb3RoIHByb3ZpZGVycyB1c2UgdGhlIHNhbWUgZGF0YVNlcnZpY2UgaW5zdGFuY2UgKHdoaWNoIGlzIGEgc2luZ2xldG9uKSxcbiAqIGVuc3VyaW5nIHRoZXkgc2hhcmUgdGhlIHNhbWUgY2FjaGUgYW5kIG9ubHkgb25lIEFQSSBjYWxsIGlzIG1hZGUgd2hlbiBib3RoXG4gKiBnZXRDYXRlZ29yaWVzIGFuZCBnZXRSZXBvcnRzQnlDYXRlZ29yeUlkIGFyZSBjYWxsZWQgZm9yIHRoZSBzYW1lIGNhdGVnb3J5SWQuXG4gKi9cbmV4cG9ydCBjb25zdCBBWENfUkVQT1JUX0NBVEVHT1JZX0FQSV9QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogQVhQX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUixcbiAgdXNlQ2xhc3M6IEFYQ1JlcG9ydENhdGVnb3J5QXBpUHJvdmlkZXIsXG4gIG11bHRpOiB0cnVlLFxufTtcblxuZXhwb3J0IGNvbnN0IEFYQ19SRVBPUlRfREVGSU5JVElPTl9BUElfUFJPVklERVIgPSB7XG4gIHByb3ZpZGU6IEFYUF9SRVBPUlRfREVGSU5JVElPTl9QUk9WSURFUixcbiAgdXNlQ2xhc3M6IEFYQ1JlcG9ydERlZmluaXRpb25BcGlQcm92aWRlcixcbiAgbXVsdGk6IHRydWUsXG59O1xuXG4vLyNlbmRyZWdpb25cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { AXPRuntimeModule, provideCommandSetups } from '@acorex/platform/runtime';\nimport { AXC_REPORT_CATEGORY_API_PROVIDER, AXC_REPORT_DEFINITION_API_PROVIDER, AXCReportManagementDataService } from './report-management-api.providers';\nimport * as i0 from \"@angular/core\";\nexport class AXCReportManagementApiModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportManagementApiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportManagementApiModule, imports: [AXPRuntimeModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportManagementApiModule, providers: [\n AXCReportManagementDataService,\n AXC_REPORT_CATEGORY_API_PROVIDER,\n AXC_REPORT_DEFINITION_API_PROVIDER,\n provideCommandSetups([\n {\n key: 'ReportManagement.Report:Execute',\n command: () => import('./execute.command').then((c) => c.AXCReportExecuteCommand),\n },\n ]),\n ], imports: [AXPRuntimeModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportManagementApiModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [AXPRuntimeModule],\n exports: [],\n declarations: [],\n providers: [\n AXCReportManagementDataService,\n AXC_REPORT_CATEGORY_API_PROVIDER,\n AXC_REPORT_DEFINITION_API_PROVIDER,\n provideCommandSetups([\n {\n key: 'ReportManagement.Report:Execute',\n command: () => import('./execute.command').then((c) => c.AXCReportExecuteCommand),\n },\n ]),\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LW1hbmFnZW1lbnQtYXBpLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L2FwaS9zcmMvbGliL3JlcG9ydC1tYW5hZ2VtZW50L3JlcG9ydC1tYW5hZ2VtZW50LWFwaS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsa0NBQWtDLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFrQnpKLE1BQU0sT0FBTyw0QkFBNEI7K0dBQTVCLDRCQUE0QjtnSEFBNUIsNEJBQTRCLFlBZjNCLGdCQUFnQjtnSEFlakIsNEJBQTRCLGFBWjFCO1lBQ1AsOEJBQThCO1lBQzlCLGdDQUFnQztZQUNoQyxrQ0FBa0M7WUFDbEMsb0JBQW9CLENBQUM7Z0JBQ2pCO29CQUNJLEdBQUcsRUFBRSxpQ0FBaUM7b0JBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQztpQkFDcEY7YUFDSixDQUFDO1NBQ0wsWUFiUyxnQkFBZ0I7OzRGQWVqQiw0QkFBNEI7a0JBaEJ4QyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUMzQixPQUFPLEVBQUUsRUFBRTtvQkFDWCxZQUFZLEVBQUUsRUFBRTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQLDhCQUE4Qjt3QkFDOUIsZ0NBQWdDO3dCQUNoQyxrQ0FBa0M7d0JBQ2xDLG9CQUFvQixDQUFDOzRCQUNqQjtnQ0FDSSxHQUFHLEVBQUUsaUNBQWlDO2dDQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUM7NkJBQ3BGO3lCQUNKLENBQUM7cUJBQ0w7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQUnVudGltZU1vZHVsZSwgcHJvdmlkZUNvbW1hbmRTZXR1cHMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWUnO1xuaW1wb3J0IHsgQVhDX1JFUE9SVF9DQVRFR09SWV9BUElfUFJPVklERVIsIEFYQ19SRVBPUlRfREVGSU5JVElPTl9BUElfUFJPVklERVIsIEFYQ1JlcG9ydE1hbmFnZW1lbnREYXRhU2VydmljZSB9IGZyb20gJy4vcmVwb3J0LW1hbmFnZW1lbnQtYXBpLnByb3ZpZGVycyc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0FYUFJ1bnRpbWVNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtdLFxuICAgIGRlY2xhcmF0aW9uczogW10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIEFYQ1JlcG9ydE1hbmFnZW1lbnREYXRhU2VydmljZSxcbiAgICAgICAgQVhDX1JFUE9SVF9DQVRFR09SWV9BUElfUFJPVklERVIsXG4gICAgICAgIEFYQ19SRVBPUlRfREVGSU5JVElPTl9BUElfUFJPVklERVIsXG4gICAgICAgIHByb3ZpZGVDb21tYW5kU2V0dXBzKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6ICdSZXBvcnRNYW5hZ2VtZW50LlJlcG9ydDpFeGVjdXRlJyxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiBpbXBvcnQoJy4vZXhlY3V0ZS5jb21tYW5kJykudGhlbigoYykgPT4gYy5BWENSZXBvcnRFeGVjdXRlQ29tbWFuZCksXG4gICAgICAgICAgICB9LFxuICAgICAgICBdKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWENSZXBvcnRNYW5hZ2VtZW50QXBpTW9kdWxlIHsgfVxuIl19","import { AXP_APPLICATION_LOADER, AXP_FEATURE_LOADER, AXP_PERMISSION_LOADER, AXP_TENANT_LOADER, AXPAuthModule, } from '@acorex/platform/auth';\nimport { AXPFileStorageService } from '@acorex/platform/common';\nimport { AXPEntityStorageService } from '@acorex/platform/layout/entity';\nimport { STRATEGY_CONFIG_TOKEN } from '@acorex/platform/layout/widgets';\nimport { NgModule } from '@angular/core';\nimport { OAuthModule } from 'angular-oauth2-oidc';\nimport { AXCApiEntityStorageService } from './api-storage.service';\nimport { AXCFileStorageApiService } from './file-storage-api.service';\nimport { AXMOidcApplicationLoader, AXMOidcFeatureLoader, AXMOidcPermissionLoader, AXCAPIOidcStrategy, AXMOidcTenantLoader, } from './auth/oidc';\nimport { AXCUtilsModule } from '@acorex/connectivity/utils';\nimport { AXCReportManagementApiModule } from './report-management/report-management-api.module';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"angular-oauth2-oidc\";\nimport * as i2 from \"@acorex/platform/auth\";\nexport class AXCApiModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCApiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCApiModule, imports: [i1.OAuthModule, i2.AXPAuthModule, AXCUtilsModule,\n AXCReportManagementApiModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCApiModule, providers: [\n {\n provide: AXPEntityStorageService,\n useClass: AXCApiEntityStorageService,\n },\n {\n provide: AXPFileStorageService,\n useClass: AXCFileStorageApiService,\n },\n {\n provide: AXP_TENANT_LOADER,\n useClass: AXMOidcTenantLoader,\n },\n {\n provide: AXP_APPLICATION_LOADER,\n useClass: AXMOidcApplicationLoader,\n },\n {\n provide: AXP_PERMISSION_LOADER,\n useClass: AXMOidcPermissionLoader,\n },\n {\n provide: AXP_FEATURE_LOADER,\n useClass: AXMOidcFeatureLoader,\n },\n {\n provide: STRATEGY_CONFIG_TOKEN,\n useValue: {\n selectValueStrategy: 'valueField',\n lookupValueStrategy: 'valueField',\n },\n }\n ], imports: [OAuthModule.forRoot(),\n AXPAuthModule.forRoot({\n strategies: [AXCAPIOidcStrategy],\n }),\n AXCUtilsModule,\n AXCReportManagementApiModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCApiModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n OAuthModule.forRoot(),\n AXPAuthModule.forRoot({\n strategies: [AXCAPIOidcStrategy],\n }),\n AXCUtilsModule,\n AXCReportManagementApiModule,\n ],\n providers: [\n {\n provide: AXPEntityStorageService,\n useClass: AXCApiEntityStorageService,\n },\n {\n provide: AXPFileStorageService,\n useClass: AXCFileStorageApiService,\n },\n {\n provide: AXP_TENANT_LOADER,\n useClass: AXMOidcTenantLoader,\n },\n {\n provide: AXP_APPLICATION_LOADER,\n useClass: AXMOidcApplicationLoader,\n },\n {\n provide: AXP_PERMISSION_LOADER,\n useClass: AXMOidcPermissionLoader,\n },\n {\n provide: AXP_FEATURE_LOADER,\n useClass: AXMOidcFeatureLoader,\n },\n {\n provide: STRATEGY_CONFIG_TOKEN,\n useValue: {\n selectValueStrategy: 'valueField',\n lookupValueStrategy: 'valueField',\n },\n }\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L2FwaS9zcmMvbGliL2FwaS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixhQUFhLEdBQ2QsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLG1CQUFtQixHQUNwQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFBQSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7OztBQTZDNUosTUFBTSxPQUFPLFlBQVk7K0dBQVosWUFBWTtnSEFBWixZQUFZLDhDQXRDckIsY0FBYztZQUNkLDRCQUE0QjtnSEFxQ25CLFlBQVksYUFuQ1o7WUFDVDtnQkFDRSxPQUFPLEVBQUUsdUJBQXVCO2dCQUNoQyxRQUFRLEVBQUUsMEJBQTBCO2FBQ3JDO1lBRUQ7Z0JBQ0UsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsUUFBUSxFQUFFLHdCQUF3QjthQUNuQztZQUNEO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFFBQVEsRUFBRSxtQkFBbUI7YUFDOUI7WUFDRDtnQkFDRSxPQUFPLEVBQUUsc0JBQXNCO2dCQUMvQixRQUFRLEVBQUUsd0JBQXdCO2FBQ25DO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsUUFBUSxFQUFFLHVCQUF1QjthQUNsQztZQUNEO2dCQUNFLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFFBQVEsRUFBRSxvQkFBb0I7YUFDL0I7WUFDRDtnQkFDRSxPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixRQUFRLEVBQUU7b0JBQ1IsbUJBQW1CLEVBQUUsWUFBWTtvQkFDakMsbUJBQW1CLEVBQUUsWUFBWTtpQkFDbEM7YUFDRjtTQUNGLFlBeENDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7WUFDckIsYUFBYSxDQUFDLE9BQU8sQ0FBQztnQkFDcEIsVUFBVSxFQUFFLENBQUMsa0JBQWtCLENBQUM7YUFDakMsQ0FBQztZQUNGLGNBQWM7WUFDZCw0QkFBNEI7OzRGQXFDbkIsWUFBWTtrQkE1Q3hCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFdBQVcsQ0FBQyxPQUFPLEVBQUU7d0JBQ3JCLGFBQWEsQ0FBQyxPQUFPLENBQUM7NEJBQ3BCLFVBQVUsRUFBRSxDQUFDLGtCQUFrQixDQUFDO3lCQUNqQyxDQUFDO3dCQUNGLGNBQWM7d0JBQ2QsNEJBQTRCO3FCQUM3QjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHVCQUF1Qjs0QkFDaEMsUUFBUSxFQUFFLDBCQUEwQjt5QkFDckM7d0JBRUQ7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFLHdCQUF3Qjt5QkFDbkM7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsUUFBUSxFQUFFLG1CQUFtQjt5QkFDOUI7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLHNCQUFzQjs0QkFDL0IsUUFBUSxFQUFFLHdCQUF3Qjt5QkFDbkM7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFLHVCQUF1Qjt5QkFDbEM7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsUUFBUSxFQUFFLG9CQUFvQjt5QkFDL0I7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFO2dDQUNSLG1CQUFtQixFQUFFLFlBQVk7Z0NBQ2pDLG1CQUFtQixFQUFFLFlBQVk7NkJBQ2xDO3lCQUNGO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVhQX0FQUExJQ0FUSU9OX0xPQURFUixcbiAgQVhQX0ZFQVRVUkVfTE9BREVSLFxuICBBWFBfUEVSTUlTU0lPTl9MT0FERVIsXG4gIEFYUF9URU5BTlRfTE9BREVSLFxuICBBWFBBdXRoTW9kdWxlLFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQRmlsZVN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQRW50aXR5U3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgU1RSQVRFR1lfQ09ORklHX1RPS0VOIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0cyc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT0F1dGhNb2R1bGUgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcbmltcG9ydCB7IEFYQ0FwaUVudGl0eVN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9hcGktc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYQ0ZpbGVTdG9yYWdlQXBpU2VydmljZSB9IGZyb20gJy4vZmlsZS1zdG9yYWdlLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFYTU9pZGNBcHBsaWNhdGlvbkxvYWRlcixcbiAgQVhNT2lkY0ZlYXR1cmVMb2FkZXIsXG4gIEFYTU9pZGNQZXJtaXNzaW9uTG9hZGVyLFxuICBBWENBUElPaWRjU3RyYXRlZ3ksXG4gIEFYTU9pZGNUZW5hbnRMb2FkZXIsXG59IGZyb20gJy4vYXV0aC9vaWRjJztcbmltcG9ydCB7IEFYQ1V0aWxzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb25uZWN0aXZpdHkvdXRpbHMnO2ltcG9ydCB7IEFYQ1JlcG9ydE1hbmFnZW1lbnRBcGlNb2R1bGUgfSBmcm9tICcuL3JlcG9ydC1tYW5hZ2VtZW50L3JlcG9ydC1tYW5hZ2VtZW50LWFwaS5tb2R1bGUnO1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIE9BdXRoTW9kdWxlLmZvclJvb3QoKSxcbiAgICBBWFBBdXRoTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgc3RyYXRlZ2llczogW0FYQ0FQSU9pZGNTdHJhdGVneV0sXG4gICAgfSksXG4gICAgQVhDVXRpbHNNb2R1bGUsXG4gICAgQVhDUmVwb3J0TWFuYWdlbWVudEFwaU1vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQRW50aXR5U3RvcmFnZVNlcnZpY2UsXG4gICAgICB1c2VDbGFzczogQVhDQXBpRW50aXR5U3RvcmFnZVNlcnZpY2UsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUEZpbGVTdG9yYWdlU2VydmljZSxcbiAgICAgIHVzZUNsYXNzOiBBWENGaWxlU3RvcmFnZUFwaVNlcnZpY2UsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfVEVOQU5UX0xPQURFUixcbiAgICAgIHVzZUNsYXNzOiBBWE1PaWRjVGVuYW50TG9hZGVyLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX0FQUExJQ0FUSU9OX0xPQURFUixcbiAgICAgIHVzZUNsYXNzOiBBWE1PaWRjQXBwbGljYXRpb25Mb2FkZXIsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfUEVSTUlTU0lPTl9MT0FERVIsXG4gICAgICB1c2VDbGFzczogQVhNT2lkY1Blcm1pc3Npb25Mb2FkZXIsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfRkVBVFVSRV9MT0FERVIsXG4gICAgICB1c2VDbGFzczogQVhNT2lkY0ZlYXR1cmVMb2FkZXIsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBTVFJBVEVHWV9DT05GSUdfVE9LRU4sXG4gICAgICB1c2VWYWx1ZToge1xuICAgICAgICBzZWxlY3RWYWx1ZVN0cmF0ZWd5OiAndmFsdWVGaWVsZCcsXG4gICAgICAgIGxvb2t1cFZhbHVlU3RyYXRlZ3k6ICd2YWx1ZUZpZWxkJyxcbiAgICAgIH0sXG4gICAgfSBcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhDQXBpTW9kdWxlIHsgfVxuIl19","import { AXCExternalAuthorizationService } from '@acorex/connectivity/utils';\nimport { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport { AXP_APPLICATION_LOADER, AXP_TENANT_LOADER, AXPAuthStrategy, AXPSessionService, JwtUtil, PkceUtil, TimeUtil, } from '@acorex/platform/auth';\nimport { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport * as i0 from \"@angular/core\";\n//#region ---- Class Definition ----\nexport class APIGoogleStrategy extends AXPAuthStrategy {\n constructor() {\n super();\n this.aXMAuthConfigs = inject(AXM_AUTH_CONFIG_TOKEN);\n this.oauthService = inject(OAuthService);\n this.http = inject(HttpClient);\n this.sessionService = inject(AXPSessionService);\n this.router = inject(Router);\n this.externalAuthorizationService = inject(AXCExternalAuthorizationService);\n this.tenantLoader = inject(AXP_TENANT_LOADER);\n this.applicationLoader = inject(AXP_APPLICATION_LOADER);\n }\n get name() {\n return 'google';\n }\n async configureOAuth() {\n if (this.openidConfigurationInfo)\n return;\n if (!this.authConfig) {\n if (!this.aXMAuthConfigs.authConfig) {\n throw new Error('authConfig is missing');\n }\n this.authConfig = this.aXMAuthConfigs.authConfig;\n }\n this.oauthService.configure(this.authConfig);\n this.oauthService.setStorage(localStorage);\n this.openidConfigurationInfo = await this.oauthService.loadDiscoveryDocument();\n if (!this.openidConfigurationInfo) {\n throw new Error('openidConfigurationInfo is missing');\n }\n this.oauthService.events.subscribe(async (event) => {\n // console.log('event', event);\n // if (event.type === 'token_received') {\n // console.log('Token has been refreshed');\n // }\n // if (event.type === 'token_expires') {\n // console.log('Token is about to expire. Triggering silent refresh...');\n // }\n });\n const oidcJson = localStorage.getItem(AXPSessionService.SESSION_KEY);\n if (oidcJson) {\n const authData = JSON.parse(oidcJson);\n if (authData) {\n this.sessionService.setSession(authData);\n if (authData.expiresIn && new Date(authData.expiresIn) < new Date()) {\n if (authData.expiresIn) {\n this.sessionService.refreshToken();\n }\n else {\n this.signout();\n }\n }\n }\n }\n }\n async signin(credentials) {\n const providerName = credentials['strategy'];\n await this.externalAuthorizationService.signin(providerName);\n }\n async signout() {\n localStorage.removeItem('pkce_code_verifier');\n localStorage.removeItem('oauth_provider');\n console.log('User signed out');\n }\n async refreshToken(context) {\n try {\n await this.configureOAuth();\n if (!this.authConfig || !this.authConfig.clientId) {\n throw new Error('authConfig or clientId is missing');\n }\n const authData = this.loadAuthData();\n if (!authData) {\n return { succeed: false };\n }\n const refreshToken = authData.refreshToken;\n if (!refreshToken) {\n return { succeed: false };\n }\n const body = new URLSearchParams({\n grant_type: 'refresh_token',\n client_id: this.authConfig.clientId,\n refresh_token: refreshToken,\n });\n const response = await fetch(this.openidConfigurationInfo.info.discoveryDocument.token_endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: body.toString(),\n });\n if (!response.ok) {\n throw new Error(`Token refresh failed: ${response.status} ${response.statusText}`);\n }\n const tokenData = await response.json();\n // Extract user information from the refreshed token\n const payload = JwtUtil.parseJwt(tokenData.id_token);\n const user = {\n id: payload['sub'] || '',\n title: payload['name'] || payload['email'] || '',\n name: payload['name'] || payload['email'] || '',\n avatar: payload['picture'] || '',\n };\n const tenant = payload['tenantid'] || payload['tenant']\n ? {\n id: payload['tenantid'] || payload['tenant'] || '',\n name: payload['tenantname'] || '',\n title: payload['tenanttitle'] || '',\n }\n : undefined;\n const application = payload['applicationid'] || payload['application']\n ? {\n id: payload['applicationid'] || payload['application'] || '',\n name: payload['applicationname'] || '',\n title: payload['applicationtitle'] || '',\n }\n : undefined;\n const sessionData = {\n accessToken: tokenData.access_token,\n refreshToken: tokenData.refresh_token,\n idToken: tokenData.id_token,\n strategy: 'google',\n expiresIn: TimeUtil.calculateExpireInDate(tokenData.expires_in || 0),\n user,\n tenant,\n application,\n };\n return {\n succeed: true,\n data: {\n ...sessionData,\n user: sessionData.user,\n },\n };\n }\n catch (error) {\n console.error('Error refreshing token', error);\n return { succeed: false };\n }\n }\n async updateToken(params) {\n try {\n // Ensure OAuth is configured first\n if (!this.openidConfigurationInfo) {\n await this.configureOAuth();\n }\n // If params contains 'code', exchange it for tokens\n if (params['code']) {\n const code = params['code'];\n const redirectUri = params['redirectUri'] || this.authConfig.redirectUri;\n const clientId = params['clientId'] || this.authConfig.clientId;\n const tokenEndpoint = this.openidConfigurationInfo.info.discoveryDocument.token_endpoint;\n // Get code_verifier from localStorage (PKCE)\n const codeVerifier = localStorage.getItem('pkce_code_verifier');\n localStorage.removeItem('pkce_code_verifier');\n if (!codeVerifier) {\n throw new Error('Code verifier not found. Please try signing in again.');\n }\n // Prepare body for token request\n const body = new URLSearchParams({\n grant_type: 'authorization_code',\n client_id: clientId,\n code_verifier: codeVerifier,\n code: code,\n redirect_uri: redirectUri,\n });\n // Call the token endpoint\n const response = await fetch(tokenEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: body.toString(),\n });\n if (!response.ok) {\n throw new Error(`Token exchange failed: ${response.status} ${response.statusText}`);\n }\n const tokenData = await response.json();\n if (!tokenData) {\n throw new Error('Token data not found');\n }\n // Parse the ID token to extract user information\n const payload = JwtUtil.parseJwt(tokenData.id_token);\n if (!payload) {\n throw new Error('Payload not found');\n }\n const user = {\n id: payload['sub'] || '',\n title: payload['name'] || payload['email'] || '',\n name: payload['name'] || payload['email'] || '',\n avatar: payload['picture'] || '',\n };\n const tenant = payload['tenantid'] || payload['tenant']\n ? {\n id: payload['tenantid'] || payload['tenant'] || '',\n name: payload['tenantname'] || '',\n title: payload['tenanttitle'] || '',\n }\n : undefined;\n const application = payload['applicationid'] || payload['application']\n ? {\n id: payload['applicationid'] || payload['application'] || '',\n name: payload['applicationname'] || '',\n title: payload['applicationtitle'] || '',\n }\n : undefined;\n return {\n succeed: true,\n data: {\n accessToken: tokenData.access_token,\n refreshToken: tokenData.refresh_token,\n idToken: tokenData.id_token,\n expiresIn: TimeUtil.calculateExpireInDate(tokenData.expires_in || 0),\n user,\n tenant,\n application,\n },\n };\n }\n // get Authorizeation Code\n else {\n // Extract parameters\n // Support both direct id fields and nested tenant/application objects\n const tenantId = params['tenantId'] ?? params['tenant']?.id ?? null;\n const applicationId = params['applicationId'] ?? params['application']?.id ?? null;\n const redirectUri = params['redirectUri'] || this.authConfig.redirectUri;\n const scope = params['scope'] || this.authConfig.scope;\n // Generate PKCE code verifier and challenge\n const codeVerifier = PkceUtil.generateRandomString(128);\n localStorage.setItem('pkce_code_verifier', codeVerifier);\n const codeChallenge = await PkceUtil.generateCodeChallenge(codeVerifier);\n // Build authorization URL\n const authorizeEndpoint = this.openidConfigurationInfo.info.discoveryDocument.authorization_endpoint;\n const clientId = this.authConfig.clientId;\n const responseType = 'code';\n const state = Math.random().toString(36).substring(2);\n const queryParams = [\n `response_type=${encodeURIComponent(responseType)}`,\n `client_id=${encodeURIComponent(clientId)}`,\n `redirect_uri=${encodeURIComponent(redirectUri)}`,\n `scope=${encodeURIComponent(scope)}`,\n `state=${encodeURIComponent(state)}`,\n tenantId ? `tenant_id=${encodeURIComponent(tenantId)}` : null,\n applicationId ? `application_id=${encodeURIComponent(applicationId)}` : null,\n `code_challenge=${encodeURIComponent(codeChallenge)}`,\n `code_challenge_method=S256`,\n ]\n .filter(Boolean)\n .join('&');\n const authorizeUrl = `${authorizeEndpoint}?${queryParams}`;\n window.location.href = authorizeUrl;\n await new Promise(() => { });\n return;\n }\n }\n catch (error) {\n console.error('Error in updateToken:', error);\n throw error;\n }\n }\n loadAuthData() {\n const sessionData = this.sessionService.getSessionData();\n return sessionData || undefined;\n }\n handleError(error) {\n console.error('Authentication error:', error);\n throw error;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: APIGoogleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: APIGoogleStrategy }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: APIGoogleStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWdvb2dsZS5zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L2FwaS9zcmMvbGliL2FwaS1nb29nbGUuc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFJZixpQkFBaUIsRUFHakIsT0FBTyxFQUNQLFFBQVEsRUFDUixRQUFRLEdBQ1QsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFL0Qsd0NBQXdDO0FBR3hDLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxlQUFlO0lBY3BEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFkRixtQkFBYyxHQUFtQixNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMvRCxpQkFBWSxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEQsU0FBSSxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxtQkFBYyxHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5RCxXQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLGlDQUE0QixHQUFHLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ3ZFLGlCQUFZLEdBQUcs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QU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztnQkFDcEMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztnQkFFNUIsT0FBTztZQUNULENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDOUMsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVk7UUFDbEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6RCxPQUFPLFdBQVcsSUFBSSxTQUFTLENBQUM7SUFDbEMsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFVO1FBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUMsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDOytHQXBUVSxpQkFBaUI7bUhBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ0V4dGVybmFsQXV0aG9yaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2Nvbm5lY3Rpdml0eS91dGlscyc7XG5pbXBvcnQgeyBBWE1fQVVUSF9DT05GSUdfVE9LRU4sIEFYTUF1dGhDb25maWdzIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL2F1dGgnO1xuaW1wb3J0IHtcbiAgQVhQX0FQUExJQ0FUSU9OX0xPQURFUixcbiAgQVhQX1RFTkFOVF9MT0FERVIsXG4gIEFYUEF1dGhTdHJhdGVneSxcbiAgQVhQQmFzZUNyZWRlbnRpYWxzLFxuICBBWFBTZXNzaW9uQ29udGV4dCxcbiAgQVhQU2Vzc2lvbkRhdGEsXG4gIEFYUFNlc3Npb25TZXJ2aWNlLFxuICBBWFBTaWduSW5SZXN1bHQsXG4gIEFYUFVzZXIsXG4gIEp3dFV0aWwsXG4gIFBrY2VVdGlsLFxuICBUaW1lVXRpbCxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcblxuLy8jcmVnaW9uIC0tLS0gICBDbGFzcyBEZWZpbml0aW9uICAgLS0tLVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVBJR29vZ2xlU3RyYXRlZ3kgZXh0ZW5kcyBBWFBBdXRoU3RyYXRlZ3kge1xuICBwcml2YXRlIGFYTUF1dGhDb25maWdzOiBBWE1BdXRoQ29uZmlncyA9IGluamVjdChBWE1fQVVUSF9DT05GSUdfVE9LRU4pO1xuICBwcml2YXRlIG9hdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlID0gaW5qZWN0KE9BdXRoU2VydmljZSk7XG4gIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZTogQVhQU2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgZXh0ZXJuYWxBdXRob3JpemF0aW9uU2VydmljZSA9IGluamVjdChBWENFeHRlcm5hbEF1dGhvcml6YXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0ZW5hbnRMb2FkZXIgPSBpbmplY3QoQVhQX1RFTkFOVF9MT0FERVIpO1xuICBwcml2YXRlIGFwcGxpY2F0aW9uTG9hZGVyID0gaW5qZWN0KEFYUF9BUFBMSUNBVElPTl9MT0FERVIpO1xuXG4gIHB1YmxpYyB1c2VySW5mbzogYW55O1xuICBwdWJsaWMgYXV0aENvbmZpZzogQXV0aENvbmZpZztcbiAgcHVibGljIG9wZW5pZENvbmZpZ3VyYXRpb25JbmZvOiBhbnk7IC8vIGNsYXJpZnkgdGhlIHR5cGUgaWYgcG9zc2libGVcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2dvb2dsZSc7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY29uZmlndXJlT0F1dGgoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMub3BlbmlkQ29uZmlndXJhdGlvbkluZm8pIHJldHVybjtcblxuICAgIGlmICghdGhpcy5hdXRoQ29uZmlnKSB7XG4gICAgICBpZiAoIXRoaXMuYVhNQXV0aENvbmZpZ3MuYXV0aENvbmZpZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F1dGhDb25maWcgaXMgbWlzc2luZycpO1xuICAgICAgfVxuICAgICAgdGhpcy5hdXRoQ29uZmlnID0gdGhpcy5hWE1BdXRoQ29uZmlncy5hdXRoQ29uZmlnO1xuICAgIH1cblxuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmNvbmZpZ3VyZSh0aGlzLmF1dGhDb25maWcpO1xuICAgIHRoaXMub2F1dGhTZXJ2aWNlLnNldFN0b3JhZ2UobG9jYWxTdG9yYWdlKTtcblxuICAgIHRoaXMub3BlbmlkQ29uZmlndXJhdGlvbkluZm8gPSBhd2FpdCB0aGlzLm9hdXRoU2VydmljZS5sb2FkRGlzY292ZXJ5RG9jdW1lbnQoKTtcblxuICAgIGlmICghdGhpcy5vcGVuaWRDb25maWd1cmF0aW9uSW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcGVuaWRDb25maWd1cmF0aW9uSW5mbyBpcyBtaXNzaW5nJyk7XG4gICAgfVxuXG4gICAgdGhpcy5vYXV0aFNlcnZpY2UuZXZlbnRzLnN1YnNjcmliZShhc3luYyAoZXZlbnQpID0+IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdldmVudCcsIGV2ZW50KTtcbiAgICAgIC8vIGlmIChldmVudC50eXBlID09PSAndG9rZW5fcmVjZWl2ZWQnKSB7XG4gICAgICAvLyAgIGNvbnNvbGUubG9nKCdUb2tlbiBoYXMgYmVlbiByZWZyZXNoZWQnKTtcbiAgICAgIC8vIH1cbiAgICAgIC8vIGlmIChldmVudC50eXBlID09PSAndG9rZW5fZXhwaXJlcycpIHtcbiAgICAgIC8vICAgY29uc29sZS5sb2coJ1Rva2VuIGlzIGFib3V0IHRvIGV4cGlyZS4gVHJpZ2dlcmluZyBzaWxlbnQgcmVmcmVzaC4uLicpO1xuICAgICAgLy8gfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgb2lkY0pzb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShBWFBTZXNzaW9uU2VydmljZS5TRVNTSU9OX0tFWSk7XG5cbiAgICBpZiAob2lkY0pzb24pIHtcbiAgICAgIGNvbnN0IGF1dGhEYXRhID0gSlNPTi5wYXJzZShvaWRjSnNvbikgYXMgQVhQU2Vzc2lvbkRhdGE7XG4gICAgICBpZiAoYXV0aERhdGEpIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXRTZXNzaW9uKGF1dGhEYXRhKTtcblxuICAgICAgICBpZiAoYXV0aERhdGEuZXhwaXJlc0luICYmIG5ldyBEYXRlKGF1dGhEYXRhLmV4cGlyZXNJbikgPCBuZXcgRGF0ZSgpKSB7XG4gICAgICAgICAgaWYgKGF1dGhEYXRhLmV4cGlyZXNJbikge1xuICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5yZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaWdub3V0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgc2lnbmluKGNyZWRlbnRpYWxzOiBBWFBCYXNlQ3JlZGVudGlhbHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcm92aWRlck5hbWUgPSBjcmVkZW50aWFsc1snc3RyYXRlZ3knXTtcbiAgICBhd2FpdCB0aGlzLmV4dGVybmFsQXV0aG9yaXphdGlvblNlcnZpY2Uuc2lnbmluKHByb3ZpZGVyTmFtZSk7XG4gIH1cblxuICBhc3luYyBzaWdub3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdwa2NlX2NvZGVfdmVyaWZpZXInKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnb2F1dGhfcHJvdmlkZXInKTtcbiAgICBjb25zb2xlLmxvZygnVXNlciBzaWduZWQgb3V0Jyk7XG4gIH1cblxuICBhc3luYyByZWZyZXNoVG9rZW4oY29udGV4dDogQVhQU2Vzc2lvbkNvbnRleHQpOiBQcm9taXNlPEFYUFNpZ25JblJlc3VsdD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpZ3VyZU9BdXRoKCk7XG4gICAgICBpZiAoIXRoaXMuYXV0aENvbmZpZyB8fCAhdGhpcy5hdXRoQ29uZmlnLmNsaWVudElkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignYXV0aENvbmZpZyBvciBjbGllbnRJZCBpcyBtaXNzaW5nJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBhdXRoRGF0YSA9IHRoaXMubG9hZEF1dGhEYXRhKCk7XG4gICAgICBpZiAoIWF1dGhEYXRhKSB7XG4gICAgICAgIHJldHVybiB7IHN1Y2NlZWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSBhdXRoRGF0YS5yZWZyZXNoVG9rZW47XG4gICAgICBpZiAoIXJlZnJlc2hUb2tlbikge1xuICAgICAgICByZXR1cm4geyBzdWNjZWVkOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBib2R5ID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgICAgIGdyYW50X3R5cGU6ICdyZWZyZXNoX3Rva2VuJyxcbiAgICAgICAgY2xpZW50X2lkOiB0aGlzLmF1dGhDb25maWcuY2xpZW50SWQhLFxuICAgICAgICByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0aGlzLm9wZW5pZENvbmZpZ3VyYXRpb25JbmZvLmluZm8uZGlzY292ZXJ5RG9jdW1lbnQudG9rZW5fZW5kcG9pbnQsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIH0sXG4gICAgICAgIGJvZHk6IGJvZHkudG9TdHJpbmcoKSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVG9rZW4gcmVmcmVzaCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRva2VuRGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAgICAgLy8gRXh0cmFjdCB1c2VyIGluZm9ybWF0aW9uIGZyb20gdGhlIHJlZnJlc2hlZCB0b2tlblxuICAgICAgY29uc3QgcGF5bG9hZCA9IEp3dFV0aWwucGFyc2VKd3QodG9rZW5EYXRhLmlkX3Rva2VuKTtcbiAgICAgIGNvbnN0IHVzZXIgPSB7XG4gICAgICAgIGlkOiBwYXlsb2FkWydzdWInXSB8fCAnJyxcbiAgICAgICAgdGl0bGU6IHBheWxvYWRbJ25hbWUnXSB8fCBwYXlsb2FkWydlbWFpbCddIHx8ICcnLFxuICAgICAgICBuYW1lOiBwYXlsb2FkWyduYW1lJ10gfHwgcGF5bG9hZFsnZW1haWwnXSB8fCAnJyxcbiAgICAgICAgYXZhdGFyOiBwYXlsb2FkWydwaWN0dXJlJ10gfHwgJycsXG4gICAgICB9IGFzIEFYUFVzZXI7XG5cbiAgICAgIGNvbnN0IHRlbmFudCA9XG4gICAgICAgIHBheWxvYWRbJ3RlbmFudGlkJ10gfHwgcGF5bG9hZFsndGVuYW50J11cbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgaWQ6IHBheWxvYWRbJ3RlbmFudGlkJ10gfHwgcGF5bG9hZFsndGVuYW50J10gfHwgJycsXG4gICAgICAgICAgICAgIG5hbWU6IHBheWxvYWRbJ3RlbmFudG5hbWUnXSB8fCAnJyxcbiAgICAgICAgICAgICAgdGl0bGU6IHBheWxvYWRbJ3RlbmFudHRpdGxlJ10gfHwgJycsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGNvbnN0IGFwcGxpY2F0aW9uID1cbiAgICAgICAgcGF5bG9hZFsnYXBwbGljYXRpb25pZCddIHx8IHBheWxvYWRbJ2FwcGxpY2F0aW9uJ11cbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgaWQ6IHBheWxvYWRbJ2FwcGxpY2F0aW9uaWQnXSB8fCBwYXlsb2FkWydhcHBsaWNhdGlvbiddIHx8ICcnLFxuICAgICAgICAgICAgICBuYW1lOiBwYXlsb2FkWydhcHBsaWNhdGlvbm5hbWUnXSB8fCAnJyxcbiAgICAgICAgICAgICAgdGl0bGU6IHBheWxvYWRbJ2FwcGxpY2F0aW9udGl0bGUnXSB8fCAnJyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgY29uc3Qgc2Vzc2lvbkRhdGE6IEFYUFNlc3Npb25EYXRhID0ge1xuICAgICAgICBhY2Nlc3NUb2tlbjogdG9rZW5EYXRhLmFjY2Vzc190b2tlbixcbiAgICAgICAgcmVmcmVzaFRva2VuOiB0b2tlbkRhdGEucmVmcmVzaF90b2tlbixcbiAgICAgICAgaWRUb2tlbjogdG9rZW5EYXRhLmlkX3Rva2VuLFxuICAgICAgICBzdHJhdGVneTogJ2dvb2dsZScsXG4gICAgICAgIGV4cGlyZXNJbjogVGltZVV0aWwuY2FsY3VsYXRlRXhwaXJlSW5EYXRlKHRva2VuRGF0YS5leHBpcmVzX2luIHx8IDApLFxuICAgICAgICB1c2VyLFxuICAgICAgICB0ZW5hbnQsXG4gICAgICAgIGFwcGxpY2F0aW9uLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VlZDogdHJ1ZSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLnNlc3Npb25EYXRhLFxuICAgICAgICAgIHVzZXI6IHNlc3Npb25EYXRhLnVzZXIgYXMgQVhQVXNlcixcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJlZnJlc2hpbmcgdG9rZW4nLCBlcnJvcik7XG4gICAgICByZXR1cm4geyBzdWNjZWVkOiBmYWxzZSB9O1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHVwZGF0ZVRva2VuKHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IFByb21pc2U8QVhQU2lnbkluUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEVuc3VyZSBPQXV0aCBpcyBjb25maWd1cmVkIGZpcnN0XG4gICAgICBpZiAoIXRoaXMub3BlbmlkQ29uZmlndXJhdGlvbkluZm8pIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb25maWd1cmVPQXV0aCgpO1xuICAgICAgfVxuICAgICAgLy8gSWYgcGFyYW1zIGNvbnRhaW5zICdjb2RlJywgZXhjaGFuZ2UgaXQgZm9yIHRva2Vuc1xuICAgICAgaWYgKHBhcmFtc1snY29kZSddKSB7XG4gICAgICAgIGNvbnN0IGNvZGUgPSBwYXJhbXNbJ2NvZGUnXTtcbiAgICAgICAgY29uc3QgcmVkaXJlY3RVcmkgPSBwYXJhbXNbJ3JlZGlyZWN0VXJpJ10gfHwgdGhpcy5hdXRoQ29uZmlnLnJlZGlyZWN0VXJpITtcbiAgICAgICAgY29uc3QgY2xpZW50SWQgPSBwYXJhbXNbJ2NsaWVudElkJ10gfHwgdGhpcy5hdXRoQ29uZmlnLmNsaWVudElkITtcbiAgICAgICAgY29uc3QgdG9rZW5FbmRwb2ludCA9IHRoaXMub3BlbmlkQ29uZmlndXJhdGlvbkluZm8uaW5mby5kaXNjb3ZlcnlEb2N1bWVudC50b2tlbl9lbmRwb2ludDtcblxuICAgICAgICAvLyBHZXQgY29kZV92ZXJpZmllciBmcm9tIGxvY2FsU3RvcmFnZSAoUEtDRSlcbiAgICAgICAgY29uc3QgY29kZVZlcmlmaWVyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3BrY2VfY29kZV92ZXJpZmllcicpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgncGtjZV9jb2RlX3ZlcmlmaWVyJyk7XG4gICAgICAgIGlmICghY29kZVZlcmlmaWVyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2RlIHZlcmlmaWVyIG5vdCBmb3VuZC4gUGxlYXNlIHRyeSBzaWduaW5nIGluIGFnYWluLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJlcGFyZSBib2R5IGZvciB0b2tlbiByZXF1ZXN0XG4gICAgICAgIGNvbnN0IGJvZHkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgICAgICBncmFudF90eXBlOiAnYXV0aG9yaXphdGlvbl9jb2RlJyxcbiAgICAgICAgICBjbGllbnRfaWQ6IGNsaWVudElkLFxuICAgICAgICAgIGNvZGVfdmVyaWZpZXI6IGNvZGVWZXJpZmllcixcbiAgICAgICAgICBjb2RlOiBjb2RlLFxuICAgICAgICAgIHJlZGlyZWN0X3VyaTogcmVkaXJlY3RVcmksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIENhbGwgdGhlIHRva2VuIGVuZHBvaW50XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godG9rZW5FbmRwb2ludCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIH0sXG4gICAgICAgICAgYm9keTogYm9keS50b1N0cmluZygpLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUb2tlbiBleGNoYW5nZSBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b2tlbkRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICAgIGlmICghdG9rZW5EYXRhKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUb2tlbiBkYXRhIG5vdCBmb3VuZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGFyc2UgdGhlIElEIHRva2VuIHRvIGV4dHJhY3QgdXNlciBpbmZvcm1hdGlvblxuICAgICAgICBjb25zdCBwYXlsb2FkID0gSnd0VXRpbC5wYXJzZUp3dCh0b2tlbkRhdGEuaWRfdG9rZW4pO1xuICAgICAgICBpZiAoIXBheWxvYWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BheWxvYWQgbm90IGZvdW5kJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1c2VyID0ge1xuICAgICAgICAgIGlkOiBwYXlsb2FkWydzdWInXSB8fCAnJyxcbiAgICAgICAgICB0aXRsZTogcGF5bG9hZFsnbmFtZSddIHx8IHBheWxvYWRbJ2VtYWlsJ10gfHwgJycsXG4gICAgICAgICAgbmFtZTogcGF5bG9hZFsnbmFtZSddIHx8IHBheWxvYWRbJ2VtYWlsJ10gfHwgJycsXG4gICAgICAgICAgYXZhdGFyOiBwYXlsb2FkWydwaWN0dXJlJ10gfHwgJycsXG4gICAgICAgIH0gYXMgQVhQVXNlcjtcblxuICAgICAgICBjb25zdCB0ZW5hbnQgPVxuICAgICAgICAgIHBheWxvYWRbJ3RlbmFudGlkJ10gfHwgcGF5bG9hZFsndGVuYW50J11cbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIGlkOiBwYXlsb2FkWyd0ZW5hbnRpZCddIHx8IHBheWxvYWRbJ3RlbmFudCddIHx8ICcnLFxuICAgICAgICAgICAgICAgIG5hbWU6IHBheWxvYWRbJ3RlbmFudG5hbWUnXSB8fCAnJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcGF5bG9hZFsndGVuYW50dGl0bGUnXSB8fCAnJyxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgYXBwbGljYXRpb24gPVxuICAgICAgICAgIHBheWxvYWRbJ2FwcGxpY2F0aW9uaWQnXSB8fCBwYXlsb2FkWydhcHBsaWNhdGlvbiddXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBpZDogcGF5bG9hZFsnYXBwbGljYXRpb25pZCddIHx8IHBheWxvYWRbJ2FwcGxpY2F0aW9uJ10gfHwgJycsXG4gICAgICAgICAgICAgICAgbmFtZTogcGF5bG9hZFsnYXBwbGljYXRpb25uYW1lJ10gfHwgJycsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBheWxvYWRbJ2FwcGxpY2F0aW9udGl0bGUnXSB8fCAnJyxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZWVkOiB0cnVlLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiB0b2tlbkRhdGEuYWNjZXNzX3Rva2VuLFxuICAgICAgICAgICAgcmVmcmVzaFRva2VuOiB0b2tlbkRhdGEucmVmcmVzaF90b2tlbixcbiAgICAgICAgICAgIGlkVG9rZW46IHRva2VuRGF0YS5pZF90b2tlbixcbiAgICAgICAgICAgIGV4cGlyZXNJbjogVGltZVV0aWwuY2FsY3VsYXRlRXhwaXJlSW5EYXRlKHRva2VuRGF0YS5leHBpcmVzX2luIHx8IDApLFxuICAgICAgICAgICAgdXNlcixcbiAgICAgICAgICAgIHRlbmFudCxcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBnZXQgQXV0aG9yaXplYXRpb24gQ29kZVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIEV4dHJhY3QgcGFyYW1ldGVyc1xuICAgICAgICAvLyBTdXBwb3J0IGJvdGggZGlyZWN0IGlkIGZpZWxkcyBhbmQgbmVzdGVkIHRlbmFudC9hcHBsaWNhdGlvbiBvYmplY3RzXG4gICAgICAgIGNvbnN0IHRlbmFudElkID0gcGFyYW1zWyd0ZW5hbnRJZCddID8/IHBhcmFtc1sndGVuYW50J10/LmlkID8/IG51bGw7XG4gICAgICAgIGNvbnN0IGFwcGxpY2F0aW9uSWQgPSBwYXJhbXNbJ2FwcGxpY2F0aW9uSWQnXSA/PyBwYXJhbXNbJ2FwcGxpY2F0aW9uJ10/LmlkID8/IG51bGw7XG4gICAgICAgIGNvbnN0IHJlZGlyZWN0VXJpID0gcGFyYW1zWydyZWRpcmVjdFVyaSddIHx8IHRoaXMuYXV0aENvbmZpZy5yZWRpcmVjdFVyaSE7XG4gICAgICAgIGNvbnN0IHNjb3BlID0gcGFyYW1zWydzY29wZSddIHx8IHRoaXMuYXV0aENvbmZpZy5zY29wZSE7XG5cbiAgICAgICAgLy8gR2VuZXJhdGUgUEtDRSBjb2RlIHZlcmlmaWVyIGFuZCBjaGFsbGVuZ2VcbiAgICAgICAgY29uc3QgY29kZVZlcmlmaWVyID0gUGtjZVV0aWwuZ2VuZXJhdGVSYW5kb21TdHJpbmcoMTI4KTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3BrY2VfY29kZV92ZXJpZmllcicsIGNvZGVWZXJpZmllcik7XG4gICAgICAgIGNvbnN0IGNvZGVDaGFsbGVuZ2UgPSBhd2FpdCBQa2NlVXRpbC5nZW5lcmF0ZUNvZGVDaGFsbGVuZ2UoY29kZVZlcmlmaWVyKTtcblxuICAgICAgICAvLyBCdWlsZCBhdXRob3JpemF0aW9uIFVSTFxuICAgICAgICBjb25zdCBhdXRob3JpemVFbmRwb2ludCA9IHRoaXMub3BlbmlkQ29uZmlndXJhdGlvbkluZm8uaW5mby5kaXNjb3ZlcnlEb2N1bWVudC5hdXRob3JpemF0aW9uX2VuZHBvaW50O1xuICAgICAgICBjb25zdCBjbGllbnRJZCA9IHRoaXMuYXV0aENvbmZpZy5jbGllbnRJZCE7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlVHlwZSA9ICdjb2RlJztcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMik7XG5cbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBbXG4gICAgICAgICAgYHJlc3BvbnNlX3R5cGU9JHtlbmNvZGVVUklDb21wb25lbnQocmVzcG9uc2VUeXBlKX1gLFxuICAgICAgICAgIGBjbGllbnRfaWQ9JHtlbmNvZGVVUklDb21wb25lbnQoY2xpZW50SWQpfWAsXG4gICAgICAgICAgYHJlZGlyZWN0X3VyaT0ke2VuY29kZVVSSUNvbXBvbmVudChyZWRpcmVjdFVyaSl9YCxcbiAgICAgICAgICBgc2NvcGU9JHtlbmNvZGVVUklDb21wb25lbnQoc2NvcGUpfWAsXG4gICAgICAgICAgYHN0YXRlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHN0YXRlKX1gLFxuICAgICAgICAgIHRlbmFudElkID8gYHRlbmFudF9pZD0ke2VuY29kZVVSSUNvbXBvbmVudCh0ZW5hbnRJZCl9YCA6IG51bGwsXG4gICAgICAgICAgYXBwbGljYXRpb25JZCA/IGBhcHBsaWNhdGlvbl9pZD0ke2VuY29kZVVSSUNvbXBvbmVudChhcHBsaWNhdGlvbklkKX1gIDogbnVsbCxcbiAgICAgICAgICBgY29kZV9jaGFsbGVuZ2U9JHtlbmNvZGVVUklDb21wb25lbnQoY29kZUNoYWxsZW5nZSl9YCxcbiAgICAgICAgICBgY29kZV9jaGFsbGVuZ2VfbWV0aG9kPVMyNTZgLFxuICAgICAgICBdXG4gICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgIC5qb2luKCcmJyk7XG5cbiAgICAgICAgY29uc3QgYXV0aG9yaXplVXJsID0gYCR7YXV0aG9yaXplRW5kcG9pbnR9PyR7cXVlcnlQYXJhbXN9YDtcblxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGF1dGhvcml6ZVVybDtcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKCkgPT4ge30pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gdXBkYXRlVG9rZW46JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkQXV0aERhdGEoKTogQVhQU2Vzc2lvbkRhdGEgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNlc3Npb25EYXRhID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRTZXNzaW9uRGF0YSgpO1xuICAgIHJldHVybiBzZXNzaW9uRGF0YSB8fCB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBuZXZlciB7XG4gICAgY29uc29sZS5lcnJvcignQXV0aGVudGljYXRpb24gZXJyb3I6JywgZXJyb3IpO1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbi8vI2VuZHJlZ2lvblxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbm5lY3Rpdml0eS1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Nvbm5lY3Rpdml0eS9hcGkvc3JjL2Fjb3JleC1jb25uZWN0aXZpdHktYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;;;;AAQO,MAAM,0BAA0B,CAAC;AACxC,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACpD,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,kCAAkC,CAAC;AACvE,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACvD,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AAC3C;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,QAAQ,IAAI,CAAC,YAAY,GAAG,QAAQ;AACpC,IAAI;AACJ,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,gBAAgB;AAC/B,IAAI;AACJ,IAAI,eAAe,CAAC,UAAU,EAAE;AAChC,QAAQ,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAChD,QAAQ,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;AACpC,YAAY,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,UAAU;AACrD,YAAY,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;AAC7C,YAAY,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC;AACjD,YAAY,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC;AACjD,YAAY,OAAO;AACnB,gBAAgB,MAAM,EAAE,WAAW;AACnC,gBAAgB,MAAM,EAAE,WAAW;AACnC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,OAAO,EAAE,IAAI,CAAC,WAAW;AACzC,aAAa;AACb,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,UAAU;AAC/C,YAAY,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC;AACjD,YAAY,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC;AACjD,YAAY,OAAO;AACnB,gBAAgB,MAAM,EAAE,WAAW;AACnC,gBAAgB,MAAM,EAAE,WAAW;AACnC,gBAAgB,IAAI,EAAE,IAAI,CAAC,YAAY;AACvC,gBAAgB,OAAO,EAAE,IAAI,CAAC,WAAW;AACzC,aAAa;AACb,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE;AAC1C;AACA;AACA;AACA;AACA,QAAQ,OAAO,UAAU;AACzB,IAAI;AACJ,IAAI,MAAM,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE;AACjC,QAAQ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AACnE,QAAQ,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACrJ,QAAQ,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjD,IAAI;AACJ,IAAI,MAAM,SAAS,CAAC,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE;AAC9C,QAAQ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AACnE,QAAQ,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACrJ,QAAQ,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC3D,IAAI;AACJ,IAAI,MAAM,SAAS,CAAC,UAAU,EAAE,EAAE,EAAE;AACpC,QAAQ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AACnE,QAAQ,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtI,QAAQ,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7C,IAAI;AACJ,IAAI,MAAM,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE;AAC5C,QAAQ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AACnE,QAAQ,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AAChI,QAAQ,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAC9D,IAAI;AACJ,IAAI,MAAM,MAAM,CAAC,UAAU,EAAE;AAC7B,QAAQ,OAAO,EAAE;AACjB,IAAI;AACJ,IAAI,MAAM,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE;AACrC,QAAQ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AACnE,QAAQ,IAAI,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC;AAC7F,QAAQ,IAAI,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACvD,YAAY,MAAM,SAAS,GAAG,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAChG,YAAY,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC;AAC9D,QAAQ;AACR,QAAQ,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC;AACjF,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC;AAC3E,QAAQ,SAAS,mBAAmB,CAAC,MAAM,EAAE;AAC7C,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACjC;AACA,gBAAgB,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;AAC5F,oBAAoB,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACjK,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACtF,gBAAgB;AAChB,YAAY;AACZ,iBAAiB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;AAC7C,gBAAgB;AAChB,YAAY;AACZ,iBAAiB;AACjB;AACA,gBAAgB,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACvG,gBAAgB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;AACpD,gBAAgB,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,WAAW,GAAG,EAAE;AAC5B,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;AAC5B,YAAY,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;AACzC,YAAY,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7D;AACA,gBAAgB,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAClE,gBAAgB,OAAO,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC/D;AACA,gBAAgB,WAAW,IAAI,WAAW,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,GAAG,cAAc,CAAC;AACjG,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC9D,QAAQ;AACR,QAAQ,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK;AACtM,YAAY,OAAO;AACnB,gBAAgB,KAAK,EAAE,QAAQ,CAAC,UAAU;AAC1C,gBAAgB,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrC,aAAa;AACb,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACtN,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;AACjJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,UAAU,EAAE,CAAC;AACrI,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;;ACjIvD,MAAM,wBAAwB,SAAS,qBAAqB,CAAC;AACpE,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACtC;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,mBAAmB;AAC1C;AACA;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG;AAChC,YAAY,MAAM,EAAE,kBAAkB;AACtC,YAAY,KAAK,EAAE,iBAAiB;AACpC,YAAY,OAAO,EAAE,mBAAmB;AACxC,YAAY,QAAQ,EAAE,mBAAmB;AACzC,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,QAAQ,EAAE,0BAA0B;AAChD,YAAY,UAAU,EAAE,IAAI,IAAI,EAAE;AAClC,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,SAAS,EAAE,KAAK;AAC5B,YAAY,MAAM,EAAE,oBAAoB,CAAC,SAAS;AAClD,YAAY,IAAI,EAAE,eAAe;AACjC,YAAY,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC;AACnD,SAAS;AACT,IAAI;AACJ;AACA,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE;AACxB,QAAQ,IAAI;AACZ,YAAY,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;AAC3C,YAAY,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC;AACjD,YAAY,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;AACnD,YAAY,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC;AACvD,YAAY,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC;AACzD,YAAY,IAAI,OAAO,CAAC,IAAI,EAAE;AAC9B,gBAAgB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC;AACrD,YAAY;AACZ,YAAY,IAAI,OAAO,CAAC,IAAI,EAAE;AAC9B,gBAAgB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC;AACrD,YAAY;AACZ,YAAY,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE;AACjD,gBAAgB,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC1E,YAAY;AACZ,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE;AAChC,gBAAgB,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC;AACzD,YAAY;AACZ,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE;AAClC,gBAAgB,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC7E,YAAY;AACZ,YAAY,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC3I,QAAQ;AACR,QAAQ,MAAM;AACd,YAAY,OAAO,IAAI,CAAC,gBAAgB;AACxC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,MAAM,CAAC,OAAO,EAAE;AAC1B,QAAQ,IAAI;AACZ,YAAY,MAAM,UAAU,GAAG;AAC/B,gBAAgB,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC1C,aAAa;AACb,YAAY,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;AAC5C,gBAAgB,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;AAC9C,YAAY;AACZ,YAAY,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE;AACjD,gBAAgB,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS;AACxD,YAAY;AACZ,YAAY,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAChK,QAAQ;AACR,QAAQ,MAAM;AACd,YAAY,OAAO,IAAI,CAAC,gBAAgB;AACxC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE;AACxB,QAAQ,IAAI;AACZ,YAAY,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE;AACzC,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE;AAC/B,gBAAgB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;AAC3D,YAAY;AACZ,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE;AACjC,gBAAgB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC;AAC/D,YAAY;AACZ,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE;AAClC,gBAAgB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC;AACjE,YAAY;AACZ,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE;AAClC,gBAAgB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC;AACjE,YAAY;AACZ,YAAY,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE;AAChD,gBAAgB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAC5E,YAAY;AACZ,YAAY,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE;AACjD,gBAAgB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC9E,YAAY;AACZ,YAAY,IAAI,OAAO,CAAC,eAAe,EAAE;AACzC,gBAAgB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACjG,gBAAgB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;AAC7F,YAAY;AACZ,YAAY,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzH,QAAQ;AACR,QAAQ,MAAM;AACd,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,MAAM,EAAE;AAC1B,QAAQ,IAAI;AACZ,YAAY,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC1I,QAAQ;AACR,QAAQ,MAAM;AACd,YAAY,OAAO,IAAI,CAAC,gBAAgB;AACxC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,QAAQ,CAAC,GAAG,EAAE;AACxB,QAAQ,IAAI;AACZ,YAAY,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5H,QAAQ;AACR,QAAQ,MAAM;AACd,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,MAAM,CAAC,MAAM,EAAE;AACzB,QAAQ,IAAI;AACZ,YAAY,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzH,QAAQ;AACR,QAAQ,MAAM;AACd;AACA,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,MAAM,CAAC,MAAM,EAAE;AACzB,QAAQ,IAAI;AACZ,YAAY,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3H,QAAQ;AACR,QAAQ,MAAM;AACd;AACA,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,eAAe,CAAC,MAAM,EAAE;AAClC,QAAQ,IAAI;AACZ,YAAY,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtI,QAAQ;AACR,QAAQ,MAAM;AACd;AACA,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC9L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;AAC/I;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,CAAC;AACnI,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;AChJN,MAAM,wBAAwB,CAAC;AACtC,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACpD,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,6CAA6C,CAAC;AAChG,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;AACjE,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK;AACrE,YAAY,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC/E,QAAQ,CAAC,CAAC,CAAC;AACX,IAAI;AACJ,IAAI,GAAG,CAAC,WAAW,EAAE;AACrB,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE;AAChC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,QAAQ,OAAO;AACf,YAAY,EAAE,EAAE,IAAI,CAAC,EAAE;AACvB,YAAY,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,aAAa;AAC5C,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,cAAc;AAC/C,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO;AAC5C,YAAY,WAAW,EAAE,IAAI,CAAC,WAAW;AACzC,YAAY,IAAI,EAAE,IAAI,CAAC,IAAI;AAC3B,YAAY,WAAW,EAAE,IAAI,CAAC,WAAW;AACzC;AACA,SAAS;AACT,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACpN,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;AAC/I;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,CAAC;AACnI,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;;AC9CvD,MAAM,uBAAuB,CAAC;AACrC,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACpD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI;AACrC,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,8BAA8B,CAAC;AACnF,QAAQ,IAAI,CAAC,eAAe,GAAG,KAAK;AACpC,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC;AACtD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;AAChC,IAAI;AACJ,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACnC,YAAY,IAAI,CAAC,eAAe,GAAG,IAAI;AACvC,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK;AAC3E,gBAAgB,IAAI,CAAC,iBAAiB,GAAG,QAAQ;AACjD,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC/D,gBAAgB,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5C,YAAY,CAAC,CAAC,CAAC;AACf,QAAQ;AACR,aAAa;AACb;AACA,YAAY,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACtG,aAAa;AACb,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpC;AACA,YAAY,OAAO,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC7C,QAAQ;AACR,aAAa;AACb;AACA,YAAY,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACtG,YAAY,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACxD,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACnN,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAClK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AAClI,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;;ACjDvD,MAAM,oBAAoB,CAAC;AAClC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,IAAI,GAAG;AACpB,YAAY;AACZ,gBAAgB,IAAI,EAAE,6BAA6B;AACnD,gBAAgB,KAAK,EAAE,aAAa;AACpC,gBAAgB,KAAK,EAAE;AACvB,aAAa;AACb,YAAY;AACZ,gBAAgB,IAAI,EAAE,8BAA8B;AACpD,gBAAgB,KAAK,EAAE,aAAa;AACpC,gBAAgB,KAAK,EAAE;AACvB;AACA,SAAS;AACT,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3C,IAAI;AACJ;;ACXA;AACO,MAAM,kBAAkB,SAAS,eAAe,CAAC;AACxD,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC3D,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAChD,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACtC,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACvD,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,IAAI,IAAI,CAAC,uBAAuB;AACxC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AAC7C,YAAY,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC;AAClG,QAAQ;AACR,QAAQ,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AACnE,QAAQ,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC;AAClD,QAAQ,IAAI,CAAC,uBAAuB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE;AACtF,QAAQ,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC3C,YAAY,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;AACjE,QAAQ;AACR,QAAQ,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,KAAK,KAAK;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,CAAC,CAAC;AACV,QAAQ,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC;AAC5E,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjD,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC;AACxD,gBAAgB,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE;AACrF,oBAAoB,IAAI,QAAQ,CAAC,SAAS,EAAE;AAC5C,wBAAwB,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AAC1D,oBAAoB;AACpB,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,OAAO,EAAE;AACtC,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,MAAM,CAAC,WAAW,EAAE;AAC9B;AACA,QAAQ,IAAI,WAAW,CAAC,QAAQ,KAAK,MAAM,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,EAAE;AAC7F,YAAY,MAAM,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC;AAC5D,YAAY,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACzC,QAAQ;AACR,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,oDAAoD,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtG,IAAI;AACJ,IAAI,MAAM,wBAAwB,CAAC,WAAW,EAAE;AAChD,QAAQ,MAAM,IAAI,CAAC,cAAc,EAAE;AACnC;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAC1C,YAAY,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC;AAC/F,QAAQ;AACR;AACA,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO;AACnD,QAAQ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,GAAG,oBAAoB,EAAE;AACrE,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;AAC3D,YAAY,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;AACpG,YAAY,WAAW,EAAE,SAAS;AAClC,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC1B,YAAY,IAAI,SAAS,GAAG,cAAc;AAC1C,YAAY,IAAI;AAChB,gBAAgB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACvD,gBAAgB,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE;AACjF,oBAAoB,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,WAAW;AAC3D,gBAAgB;AAChB,YAAY;AACZ,YAAY,MAAM;AAClB,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACtD,oBAAoB,IAAI,IAAI,EAAE;AAC9B,wBAAwB,SAAS,GAAG,IAAI;AACxC,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,MAAM,EAAE;AACxB,YAAY;AACZ,YAAY,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC;AACtC,QAAQ;AACR;AACA,QAAQ,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAChE,QAAQ,IAAI,MAAM;AAClB,QAAQ,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AACrE,YAAY,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AAC1C,QAAQ;AACR,aAAa;AACb;AACA,YAAY,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACtD,YAAY,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,YAAY,CAAC;AACzD,QAAQ;AACR,QAAQ,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;AAClC,IAAI;AACJ,IAAI,MAAM,WAAW,CAAC,MAAM,EAAE;AAC9B,QAAQ,IAAI;AACZ;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC/C,gBAAgB,MAAM,IAAI,CAAC,cAAc,EAAE;AAC3C,YAAY;AACZ;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AACjD,gBAAgB,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC;AACtG,YAAY;AACZ;AACA,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;AAChC;AACA,gBAAgB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3C,gBAAgB,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW;AACvG,gBAAgB,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ;AAC9F,gBAAgB,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AAC7D,oBAAoB,IAAI,CAAC,uBAAuB,EAAE,IAAI,EAAE,iBAAiB,EAAE,cAAc;AACzF,oBAAoB,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC;AACnE;AACA,gBAAgB,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC;AAC/E,gBAAgB,YAAY,CAAC,UAAU,CAAC,oBAAoB,CAAC;AAC7D,gBAAgB,IAAI,CAAC,YAAY,EAAE;AACnC,oBAAoB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC;AAC5F,gBAAgB;AAChB;AACA,gBAAgB,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;AACjD,oBAAoB,UAAU,EAAE,oBAAoB;AACpD,oBAAoB,SAAS,EAAE,QAAQ;AACvC,oBAAoB,aAAa,EAAE,YAAY;AAC/C,oBAAoB,IAAI,EAAE,IAAI;AAC9B,oBAAoB,YAAY,EAAE,WAAW;AAC7C,iBAAiB,CAAC;AAClB;AACA,gBAAgB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE;AAC5D,oBAAoB,MAAM,EAAE,MAAM;AAClC,oBAAoB,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;AACpF,oBAAoB,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzC,iBAAiB,CAAC;AAClB,gBAAgB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAClC,oBAAoB,MAAM,IAAI,KAAK,CAAC,CAAC,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AACvG,gBAAgB;AAChB,gBAAgB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACvD,gBAAgB,IAAI,CAAC,SAAS,EAAE;AAChC,oBAAoB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;AAC3D,gBAAgB;AAChB,gBAAgB,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC;AACpE,gBAAgB,IAAI,CAAC,OAAO,EAAE;AAC9B,oBAAoB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC;AACxD,gBAAgB;AAChB,gBAAgB,MAAM,IAAI,GAAG;AAC7B,oBAAoB,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,sEAAsE,CAAC,IAAI,EAAE;AAC/H,oBAAoB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;AACpE,oBAAoB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;AACnE,oBAAoB,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE;AACpD,iBAAiB;AACjB,gBAAgB,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ;AACtE,sBAAsB;AACtB,wBAAwB,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC1E,wBAAwB,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE;AACzD,wBAAwB,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;AAC3D;AACA,sBAAsB,SAAS;AAC/B,gBAAgB,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,aAAa;AACrF,sBAAsB;AACtB,wBAAwB,EAAE,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;AACpF,wBAAwB,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE;AAC9D,wBAAwB,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE;AAChE;AACA,sBAAsB,SAAS;AAC/B,gBAAgB,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;AAC/C,gBAAgB,OAAO;AACvB,oBAAoB,OAAO,EAAE,IAAI;AACjC,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,WAAW,EAAE,SAAS,CAAC,YAAY;AAC3D,wBAAwB,YAAY,EAAE,SAAS,CAAC,aAAa;AAC7D,wBAAwB,OAAO,EAAE,SAAS,CAAC,QAAQ;AACnD,wBAAwB,SAAS,EAAE,QAAQ,CAAC,qBAAqB,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC;AAC5F,wBAAwB,IAAI;AAC5B,wBAAwB,MAAM;AAC9B,wBAAwB,WAAW;AACnC,qBAAqB;AACrB,iBAAiB;AACjB,YAAY;AACZ;AACA,iBAAiB;AACjB;AACA,gBAAgB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AACrD,oBAAoB,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC;AAC1G,gBAAgB;AAChB;AACA;AACA,gBAAgB,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,IAAI;AACnF,gBAAgB,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,IAAI;AAClG,gBAAgB,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW;AACvG,gBAAgB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK;AACrF;AACA,gBAAgB,MAAM,YAAY,GAAG,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC;AACvE,gBAAgB,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,YAAY,CAAC;AACxE,gBAAgB,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,qBAAqB,CAAC,YAAY,CAAC;AACxF;AACA,gBAAgB,MAAM,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,sBAAsB;AACpH,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ;AACxE,gBAAgB,MAAM,YAAY,GAAG,MAAM;AAC3C,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACrE,gBAAgB,MAAM,WAAW,GAAG;AACpC,oBAAoB,CAAC,cAAc,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;AACvE,oBAAoB,CAAC,UAAU,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/D,oBAAoB,CAAC,aAAa,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC;AACrE,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,oBAAoB,QAAQ,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;AACjF,oBAAoB,aAAa,GAAG,CAAC,eAAe,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;AAChG,oBAAoB,CAAC,eAAe,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;AACzE,oBAAoB,CAAC,0BAA0B,CAAC;AAChD;AACA,qBAAqB,MAAM,CAAC,OAAO;AACnC,qBAAqB,IAAI,CAAC,GAAG,CAAC;AAC9B,gBAAgB,MAAM,YAAY,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAC1E,gBAAgB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,YAAY;AACnD;AACA,gBAAgB,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5C,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACnC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,YAAY,CAAC,UAAU,CAAC,oBAAoB,CAAC;AACrD,QAAQ,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACjD,QAAQ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,EAAE,iBAAiB,CAAC;AAC1E;AACA,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,CAAC,cAAc,CAAC;AAC3E,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,SAAS;AACxC,IAAI;AACJ,IAAI,MAAM,YAAY,CAAC,OAAO,EAAE;AAChC,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,CAAC,cAAc,EAAE;AACvC,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC7F,gBAAgB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;AACpE,YAAY;AACZ,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;AAChD,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAgB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AACzC,YAAY;AACZ,YAAY,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY;AACtD,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,gBAAgB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AACzC,YAAY;AACZ,YAAY,MAAM,IAAI,GAAG,IAAI,UAAU;AACvC,iBAAiB,GAAG,CAAC,YAAY,EAAE,eAAe;AAClD,iBAAiB,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ;AACzE,iBAAiB,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC;AACnD,YAAY,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,mCAAmC,CAAC;AACtG,YAAY,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AACnK;AACA,YAAY,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC/D,YAAY,MAAM,IAAI,GAAG;AACzB,gBAAgB,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,sEAAsE,CAAC,IAAI,EAAE;AAC3H,gBAAgB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;AAChE,gBAAgB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;AAC/D,gBAAgB,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE;AAChD,aAAa;AACb,YAAY,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ;AAClE,kBAAkB;AAClB,oBAAoB,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;AACtE,oBAAoB,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE;AACrD,oBAAoB,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;AACvD;AACA,kBAAkB,SAAS;AAC3B,YAAY,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,aAAa;AACjF,kBAAkB;AAClB,oBAAoB,EAAE,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;AAChF,oBAAoB,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE;AAC1D,oBAAoB,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE;AAC5D;AACA,kBAAkB,SAAS;AAC3B,YAAY,MAAM,WAAW,GAAG;AAChC,gBAAgB,WAAW,EAAE,QAAQ,CAAC,YAAY;AAClD,gBAAgB,YAAY,EAAE,QAAQ,CAAC,aAAa;AACpD,gBAAgB,OAAO,EAAE,QAAQ,CAAC,QAAQ;AAC1C,gBAAgB,QAAQ,EAAE,MAAM;AAChC,gBAAgB,SAAS,EAAE,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;AACnF,gBAAgB,IAAI;AACpB,gBAAgB,MAAM;AACtB,gBAAgB,WAAW;AAC3B,aAAa;AACb;AACA,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,IAAI;AAC7B,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,GAAG,WAAW;AAClC,oBAAoB,IAAI,EAAE,WAAW,CAAC,IAAI;AAC1C,iBAAiB;AACjB,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;AAC1D,YAAY,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AACrC,QAAQ;AACR,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;AAChE,QAAQ,OAAO,WAAW,IAAI,SAAS;AACvC,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE;AAClD,IAAI;AACJ,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC;AACrD,QAAQ,MAAM,KAAK;AACnB,IAAI;AACJ;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACxL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;AACzI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC7H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;ACtUN,MAAM,uBAAuB,CAAC;AACrC,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACpD,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,8BAA8B,CAAC;AACnF,IAAI;AACJ,IAAI,OAAO,CAAC,OAAO,EAAE;AACrB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe;AACrD,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AAC1F,QAAQ,OAAO,YAAY;AAC3B,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACnN,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAC9I;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AAClI,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;;AC1BvD,MAAM,mBAAmB,CAAC;AACjC,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACpD,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC;AACjF,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AACrG,YAAY,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAC5C,QAAQ,CAAC,CAAC,CAAC,CAAC;AACZ,IAAI;AACJ,IAAI,MAAM,GAAG,CAAC,MAAM,EAAE;AACtB,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE;AAChC,IAAI;AACJ,IAAI,cAAc,CAAC,IAAI,EAAE;AACzB,QAAQ,OAAO;AACf,YAAY,EAAE,EAAE,IAAI,CAAC,EAAE;AACvB,YAAY,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,aAAa;AAC5C,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,cAAc;AAC/C;AACA,SAAS;AACT,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/M,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAC1I;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC;AAC9H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;;AC1B9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,8BAA8B,CAAC;AAC5C,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACtC,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACpD,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AAC3C;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE;AAC1C,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI;AACvC,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE;AACxC,QAAQ,IAAI,CAAC,4BAA4B,GAAG,IAAI;AAChD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,GAAG;AAC9B;AACA,QAAQ,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE;AAC/C,YAAY,OAAO,IAAI,CAAC,mBAAmB;AAC3C,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,4BAA4B,KAAK,IAAI,EAAE;AACxD,YAAY,OAAO,IAAI,CAAC,4BAA4B;AACpD,QAAQ;AACR;AACA,QAAQ,MAAM,cAAc,GAAG,CAAC,YAAY;AAC5C,YAAY,IAAI;AAChB,gBAAgB,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,qCAAqC,CAAC;AAClF,gBAAgB,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;AACtD,gBAAgB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACrF,gBAAgB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE;AAChD,gBAAgB,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC;AACnF;AACA,gBAAgB,IAAI,CAAC,mBAAmB,GAAG,cAAc;AACzD,gBAAgB,OAAO,cAAc;AACrC,YAAY;AACZ,oBAAoB;AACpB;AACA,gBAAgB,IAAI,CAAC,4BAA4B,GAAG,IAAI;AACxD,YAAY;AACZ,QAAQ,CAAC,GAAG;AACZ,QAAQ,IAAI,CAAC,4BAA4B,GAAG,cAAc;AAC1D,QAAQ,OAAO,cAAc;AAC7B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,eAAe,CAAC,QAAQ,EAAE;AACpC;AACA,QAAQ,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAClD,YAAY,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;AACvD,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAChD,YAAY,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;AACrD,QAAQ;AACR;AACA,QAAQ,MAAM,cAAc,GAAG,CAAC,YAAY;AAC5C,YAAY,IAAI;AAChB,gBAAgB,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,sCAAsC,EAAE,QAAQ,CAAC,CAAC;AAC9F,gBAAgB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzE,gBAAgB,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;AACxD;AACA,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC;AAClE,gBAAgB,OAAO,YAAY;AACnC,YAAY;AACZ,YAAY,MAAM;AAClB,gBAAgB,MAAM,eAAe,GAAG,SAAS;AACjD,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC;AACrE,gBAAgB,OAAO,eAAe;AACtC,YAAY;AACZ,oBAAoB;AACpB;AACA,gBAAgB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC;AACrD,YAAY;AACZ,QAAQ,CAAC,GAAG;AACZ,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC1D,QAAQ,OAAO,cAAc;AAC7B,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,6BAA6B,CAAC,QAAQ,EAAE;AAClD,QAAQ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AACjE,QAAQ,OAAO;AACf,YAAY,UAAU,EAAE,YAAY,EAAE,WAAW,IAAI,EAAE;AACvD,YAAY,OAAO,EAAE,YAAY,EAAE,qBAAqB,IAAI,EAAE;AAC9D,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,CAAC,QAAQ,EAAE;AACvC,QAAQ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AACjE,QAAQ,OAAO,YAAY,EAAE,WAAW,IAAI,EAAE;AAC9C,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,CAAC,UAAU,EAAE;AACzC,QAAQ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AACnE,QAAQ,OAAO,YAAY,EAAE,qBAAqB,IAAI,EAAE;AACxD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,eAAe,CAAC,EAAE,EAAE;AAC9B;AACA,QAAQ,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC5C,YAAY,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;AACjD,QAAQ;AACR;AACA,QAAQ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;AAC3D,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,OAAO,YAAY;AAC/B,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AAC3E,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,qCAAqC,CAAC;AAC9E,YAAY,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;AAClD,YAAY,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACjF,YAAY,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE;AAC5C,YAAY,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AAC/C,QAAQ;AACR,QAAQ,MAAM;AACd,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAClM,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC,CAAC;AACrJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,UAAU,EAAE,CAAC;AACzI,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;AACb;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,4BAA4B,CAAC;AAC1C,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,8BAA8B,CAAC;AACjE,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,QAAQ,EAAE;AAC5B,QAAQ,IAAI;AACZ;AACA,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAgB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE;AAChF;AACA;AACA,gBAAgB,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC;AAC7F,YAAY;AACZ;AACA;AACA;AACA,YAAY,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC;AACjF,YAAY,MAAM,aAAa,GAAG,YAAY,EAAE,WAAW,IAAI,EAAE;AACjE,YAAY,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC;AACzF,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC;AACrE,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,EAAE,EAAE;AACtB,QAAQ,IAAI;AACZ,YAAY,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC;AACtE,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAgB,OAAO,SAAS;AAChC,YAAY;AACZ,YAAY,OAAO,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC;AAC/D,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC;AACzE,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,IAAI;AACJ,IAAI,8BAA8B,CAAC,OAAO,EAAE;AAC5C,QAAQ,OAAO;AACf,YAAY,EAAE,EAAE,OAAO,CAAC,EAAE;AAC1B,YAAY,KAAK,EAAE,OAAO,CAAC,KAAK;AAChC,YAAY,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,SAAS;AACzD,YAAY,QAAQ,EAAE,OAAO,CAAC,sBAAsB,IAAI,SAAS;AACjE,YAAY,QAAQ,EAAE,OAAO,CAAC,WAAW,GAAG,CAAC;AAC7C,YAAY,SAAS,EAAE,OAAO,CAAC,SAAS,GAAG,CAAC;AAC5C,SAAS;AACT,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAChM,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC;AACnJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,CAAC;AACvI,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;AACb;AACA;AACA;AACA;AACO,MAAM,8BAA8B,CAAC;AAC5C,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,8BAA8B,CAAC;AACjE,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACtC,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,UAAU,EAAE;AAC9B,QAAQ,IAAI;AACZ;AACA;AACA,YAAY,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC;AACnF,YAAY,MAAM,IAAI,GAAG,YAAY,EAAE,qBAAqB,IAAI,EAAE;AAClE,YAAY,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,4CAA4C,CAAC,IAAI,CAAC,CAAC;AACjH,YAAY,OAAO,iBAAiB;AACpC,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC;AACtE,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,EAAE,EAAE;AACtB,QAAQ,IAAI;AACZ;AACA,YAAY,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC;AACjG,YAAY,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrE,YAAY,OAAO,IAAI,CAAC,wCAAwC,CAAC,QAAQ,CAAC;AAC1E,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC;AAC3E,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,IAAI;AACJ,IAAI,4CAA4C,CAAC,OAAO,EAAE;AAC1D,QAAQ,OAAO;AACf,YAAY,EAAE,EAAE,OAAO,CAAC,EAAE;AAC1B,YAAY,KAAK,EAAE,OAAO,CAAC,KAAK;AAChC,YAAY,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,SAAS;AACzD,YAAY,WAAW,EAAE,OAAO,CAAC,WAAW;AAC5C,YAAY,eAAe,EAAE,EAAE;AAC/B,YAAY,OAAO,EAAE,EAAE;AACvB,YAAY,eAAe,EAAE,EAAE;AAC/B,SAAS;AACT,IAAI;AACJ,IAAI,wCAAwC,CAAC,WAAW,EAAE;AAC1D,QAAQ,IAAI,GAAG,GAAG;AAClB,YAAY,EAAE,EAAE,WAAW,CAAC,EAAE;AAC9B,YAAY,KAAK,EAAE,WAAW,CAAC,KAAK;AACpC,YAAY,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,SAAS;AAC7D,YAAY,WAAW,EAAE,WAAW,CAAC,WAAW;AAChD,YAAY,eAAe,EAAE,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;AACzE,gBAAgB,IAAI,EAAE,KAAK,CAAC,IAAI;AAChC,gBAAgB,KAAK,EAAE,KAAK,CAAC,KAAK;AAClC,gBAAgB,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;AAC7D,oBAAoB,IAAI,EAAE,KAAK,CAAC,IAAI;AACpC,oBAAoB,KAAK,EAAE,KAAK,CAAC,KAAK;AACtC,oBAAoB,WAAW,EAAE,KAAK,CAAC,WAAW;AAClD,oBAAoB,MAAM,EAAE;AAC5B,wBAAwB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;AAC/C,wBAAwB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;AAC3D,wBAAwB,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE;AAC3E,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,aAAa,CAAC,CAAC;AACf,YAAY,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AAC1D,gBAAgB,EAAE,EAAE,MAAM,CAAC,EAAE;AAC7B,gBAAgB,KAAK,EAAE,MAAM,CAAC,KAAK;AACnC,gBAAgB,MAAM,EAAE,MAAM,CAAC,MAAM;AACrC,gBAAgB,UAAU,EAAE,MAAM,CAAC,UAAU;AAC7C,gBAAgB,MAAM,EAAE,MAAM,CAAC,MAAM;AACrC,gBAAgB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK;AACpD,aAAa,CAAC,CAAC;AACf,YAAY,eAAe,EAAE,WAAW,CAAC,eAAe;AACxD,SAAS;AACT,QAAQ,OAAO,GAAG;AAClB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAClM,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC,CAAC;AACrJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,UAAU,EAAE,CAAC;AACzI,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,gCAAgC,GAAG;AAChD,IAAI,OAAO,EAAE,4BAA4B;AACzC,IAAI,QAAQ,EAAE,4BAA4B;AAC1C,IAAI,KAAK,EAAE,IAAI;AACf;AACY,MAAC,kCAAkC,GAAG;AAClD,IAAI,OAAO,EAAE,8BAA8B;AAC3C,IAAI,QAAQ,EAAE,8BAA8B;AAC5C,IAAI,KAAK,EAAE,IAAI;AACf;;ACrWO,MAAM,4BAA4B,CAAC;AAC1C,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAC7K,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,SAAS,EAAE;AACzJ,YAAY,8BAA8B;AAC1C,YAAY,gCAAgC;AAC5C,YAAY,kCAAkC;AAC9C,YAAY,oBAAoB,CAAC;AACjC,gBAAgB;AAChB,oBAAoB,GAAG,EAAE,iCAAiC;AAC1D,oBAAoB,OAAO,EAAE,MAAM,OAAO,wDAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC;AACrG,iBAAiB;AACjB,aAAa,CAAC;AACd,SAAS,EAAE,OAAO,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAC1C;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,CAAC;AACvI,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC/C,oBAAoB,OAAO,EAAE,EAAE;AAC/B,oBAAoB,YAAY,EAAE,EAAE;AACpC,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB,8BAA8B;AACtD,wBAAwB,gCAAgC;AACxD,wBAAwB,kCAAkC;AAC1D,wBAAwB,oBAAoB,CAAC;AAC7C,4BAA4B;AAC5B,gCAAgC,GAAG,EAAE,iCAAiC;AACtE,gCAAgC,OAAO,EAAE,MAAM,OAAO,wDAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC;AACjH,6BAA6B;AAC7B,yBAAyB,CAAC;AAC1B,qBAAqB;AACrB,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACvBN,MAAM,YAAY,CAAC;AAC1B,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9K,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAACA,IAAE,CAAC,WAAW,EAAE,EAAE,CAAC,aAAa,EAAE,cAAc;AACxL,YAAY,4BAA4B,CAAC,EAAE,CAAC,CAAC;AAC7C,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE;AACzI,YAAY;AACZ,gBAAgB,OAAO,EAAE,uBAAuB;AAChD,gBAAgB,QAAQ,EAAE,0BAA0B;AACpD,aAAa;AACb,YAAY;AACZ,gBAAgB,OAAO,EAAE,qBAAqB;AAC9C,gBAAgB,QAAQ,EAAE,wBAAwB;AAClD,aAAa;AACb,YAAY;AACZ,gBAAgB,OAAO,EAAE,iBAAiB;AAC1C,gBAAgB,QAAQ,EAAE,mBAAmB;AAC7C,aAAa;AACb,YAAY;AACZ,gBAAgB,OAAO,EAAE,sBAAsB;AAC/C,gBAAgB,QAAQ,EAAE,wBAAwB;AAClD,aAAa;AACb,YAAY;AACZ,gBAAgB,OAAO,EAAE,qBAAqB;AAC9C,gBAAgB,QAAQ,EAAE,uBAAuB;AACjD,aAAa;AACb,YAAY;AACZ,gBAAgB,OAAO,EAAE,kBAAkB;AAC3C,gBAAgB,QAAQ,EAAE,oBAAoB;AAC9C,aAAa;AACb,YAAY;AACZ,gBAAgB,OAAO,EAAE,qBAAqB;AAC9C,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,mBAAmB,EAAE,YAAY;AACrD,oBAAoB,mBAAmB,EAAE,YAAY;AACrD,iBAAiB;AACjB;AACA,SAAS,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE;AAC1C,YAAY,aAAa,CAAC,OAAO,CAAC;AAClC,gBAAgB,UAAU,EAAE,CAAC,kBAAkB,CAAC;AAChD,aAAa,CAAC;AACd,YAAY,cAAc;AAC1B,YAAY,4BAA4B,CAAC,EAAE,CAAC,CAAC;AAC7C;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AACvH,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB,WAAW,CAAC,OAAO,EAAE;AAC7C,wBAAwB,aAAa,CAAC,OAAO,CAAC;AAC9C,4BAA4B,UAAU,EAAE,CAAC,kBAAkB,CAAC;AAC5D,yBAAyB,CAAC;AAC1B,wBAAwB,cAAc;AACtC,wBAAwB,4BAA4B;AACpD,qBAAqB;AACrB,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,uBAAuB;AAC5D,4BAA4B,QAAQ,EAAE,0BAA0B;AAChE,yBAAyB;AACzB,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,qBAAqB;AAC1D,4BAA4B,QAAQ,EAAE,wBAAwB;AAC9D,yBAAyB;AACzB,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,iBAAiB;AACtD,4BAA4B,QAAQ,EAAE,mBAAmB;AACzD,yBAAyB;AACzB,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,sBAAsB;AAC3D,4BAA4B,QAAQ,EAAE,wBAAwB;AAC9D,yBAAyB;AACzB,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,qBAAqB;AAC1D,4BAA4B,QAAQ,EAAE,uBAAuB;AAC7D,yBAAyB;AACzB,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,kBAAkB;AACvD,4BAA4B,QAAQ,EAAE,oBAAoB;AAC1D,yBAAyB;AACzB,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,qBAAqB;AAC1D,4BAA4B,QAAQ,EAAE;AACtC,gCAAgC,mBAAmB,EAAE,YAAY;AACjE,gCAAgC,mBAAmB,EAAE,YAAY;AACjE,6BAA6B;AAC7B;AACA,qBAAqB;AACrB,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;AC9Fb;AACO,MAAM,iBAAiB,SAAS,eAAe,CAAC;AACvD,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,EAAE;AACf,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC3D,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAChD,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACtC,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACvD,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,QAAQ,IAAI,CAAC,4BAA4B,GAAG,MAAM,CAAC,+BAA+B,CAAC;AACnF,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACrD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAC/D,IAAI;AACJ,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,QAAQ;AACvB,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,IAAI,IAAI,CAAC,uBAAuB;AACxC,YAAY;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC9B,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AACjD,gBAAgB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;AACxD,YAAY;AACZ,YAAY,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;AAC5D,QAAQ;AACR,QAAQ,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AACpD,QAAQ,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC;AAClD,QAAQ,IAAI,CAAC,uBAAuB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE;AACtF,QAAQ,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC3C,YAAY,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;AACjE,QAAQ;AACR,QAAQ,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,KAAK,KAAK;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,CAAC,CAAC;AACV,QAAQ,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC;AAC5E,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjD,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC;AACxD,gBAAgB,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE;AACrF,oBAAoB,IAAI,QAAQ,CAAC,SAAS,EAAE;AAC5C,wBAAwB,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AAC1D,oBAAoB;AACpB,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,OAAO,EAAE;AACtC,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,MAAM,CAAC,WAAW,EAAE;AAC9B,QAAQ,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC;AACpD,QAAQ,MAAM,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,YAAY,CAAC;AACpE,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,YAAY,CAAC,UAAU,CAAC,oBAAoB,CAAC;AACrD,QAAQ,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACjD,QAAQ,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACtC,IAAI;AACJ,IAAI,MAAM,YAAY,CAAC,OAAO,EAAE;AAChC,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,CAAC,cAAc,EAAE;AACvC,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC/D,gBAAgB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;AACpE,YAAY;AACZ,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;AAChD,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAgB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AACzC,YAAY;AACZ,YAAY,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY;AACtD,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,gBAAgB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AACzC,YAAY;AACZ,YAAY,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;AAC7C,gBAAgB,UAAU,EAAE,eAAe;AAC3C,gBAAgB,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ;AACnD,gBAAgB,aAAa,EAAE,YAAY;AAC3C,aAAa,CAAC;AACd,YAAY,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE;AAC7G,gBAAgB,MAAM,EAAE,MAAM;AAC9B,gBAAgB,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;AAChF,gBAAgB,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;AACrC,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC9B,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AAClG,YAAY;AACZ,YAAY,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACnD;AACA,YAAY,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC;AAChE,YAAY,MAAM,IAAI,GAAG;AACzB,gBAAgB,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;AACxC,gBAAgB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;AAChE,gBAAgB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;AAC/D,gBAAgB,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE;AAChD,aAAa;AACb,YAAY,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ;AAClE,kBAAkB;AAClB,oBAAoB,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;AACtE,oBAAoB,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE;AACrD,oBAAoB,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;AACvD;AACA,kBAAkB,SAAS;AAC3B,YAAY,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,aAAa;AACjF,kBAAkB;AAClB,oBAAoB,EAAE,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;AAChF,oBAAoB,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE;AAC1D,oBAAoB,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE;AAC5D;AACA,kBAAkB,SAAS;AAC3B,YAAY,MAAM,WAAW,GAAG;AAChC,gBAAgB,WAAW,EAAE,SAAS,CAAC,YAAY;AACnD,gBAAgB,YAAY,EAAE,SAAS,CAAC,aAAa;AACrD,gBAAgB,OAAO,EAAE,SAAS,CAAC,QAAQ;AAC3C,gBAAgB,QAAQ,EAAE,QAAQ;AAClC,gBAAgB,SAAS,EAAE,QAAQ,CAAC,qBAAqB,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC;AACpF,gBAAgB,IAAI;AACpB,gBAAgB,MAAM;AACtB,gBAAgB,WAAW;AAC3B,aAAa;AACb,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,IAAI;AAC7B,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,GAAG,WAAW;AAClC,oBAAoB,IAAI,EAAE,WAAW,CAAC,IAAI;AAC1C,iBAAiB;AACjB,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;AAC1D,YAAY,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AACrC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,WAAW,CAAC,MAAM,EAAE;AAC9B,QAAQ,IAAI;AACZ;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC/C,gBAAgB,MAAM,IAAI,CAAC,cAAc,EAAE;AAC3C,YAAY;AACZ;AACA,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;AAChC,gBAAgB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3C,gBAAgB,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW;AACxF,gBAAgB,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ;AAC/E,gBAAgB,MAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc;AACxG;AACA,gBAAgB,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC;AAC/E,gBAAgB,YAAY,CAAC,UAAU,CAAC,oBAAoB,CAAC;AAC7D,gBAAgB,IAAI,CAAC,YAAY,EAAE;AACnC,oBAAoB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC;AAC5F,gBAAgB;AAChB;AACA,gBAAgB,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;AACjD,oBAAoB,UAAU,EAAE,oBAAoB;AACpD,oBAAoB,SAAS,EAAE,QAAQ;AACvC,oBAAoB,aAAa,EAAE,YAAY;AAC/C,oBAAoB,IAAI,EAAE,IAAI;AAC9B,oBAAoB,YAAY,EAAE,WAAW;AAC7C,iBAAiB,CAAC;AAClB;AACA,gBAAgB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE;AAC5D,oBAAoB,MAAM,EAAE,MAAM;AAClC,oBAAoB,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;AACpF,oBAAoB,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzC,iBAAiB,CAAC;AAClB,gBAAgB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAClC,oBAAoB,MAAM,IAAI,KAAK,CAAC,CAAC,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AACvG,gBAAgB;AAChB,gBAAgB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACvD,gBAAgB,IAAI,CAAC,SAAS,EAAE;AAChC,oBAAoB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;AAC3D,gBAAgB;AAChB;AACA,gBAAgB,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC;AACpE,gBAAgB,IAAI,CAAC,OAAO,EAAE;AAC9B,oBAAoB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC;AACxD,gBAAgB;AAChB,gBAAgB,MAAM,IAAI,GAAG;AAC7B,oBAAoB,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;AAC5C,oBAAoB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;AACpE,oBAAoB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;AACnE,oBAAoB,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE;AACpD,iBAAiB;AACjB,gBAAgB,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ;AACtE,sBAAsB;AACtB,wBAAwB,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC1E,wBAAwB,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE;AACzD,wBAAwB,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;AAC3D;AACA,sBAAsB,SAAS;AAC/B,gBAAgB,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,aAAa;AACrF,sBAAsB;AACtB,wBAAwB,EAAE,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;AACpF,wBAAwB,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE;AAC9D,wBAAwB,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE;AAChE;AACA,sBAAsB,SAAS;AAC/B,gBAAgB,OAAO;AACvB,oBAAoB,OAAO,EAAE,IAAI;AACjC,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,WAAW,EAAE,SAAS,CAAC,YAAY;AAC3D,wBAAwB,YAAY,EAAE,SAAS,CAAC,aAAa;AAC7D,wBAAwB,OAAO,EAAE,SAAS,CAAC,QAAQ;AACnD,wBAAwB,SAAS,EAAE,QAAQ,CAAC,qBAAqB,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC;AAC5F,wBAAwB,IAAI;AAC5B,wBAAwB,MAAM;AAC9B,wBAAwB,WAAW;AACnC,qBAAqB;AACrB,iBAAiB;AACjB,YAAY;AACZ;AACA,iBAAiB;AACjB;AACA;AACA,gBAAgB,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,IAAI;AACnF,gBAAgB,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,IAAI;AAClG,gBAAgB,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW;AACxF,gBAAgB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK;AACtE;AACA,gBAAgB,MAAM,YAAY,GAAG,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC;AACvE,gBAAgB,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,YAAY,CAAC;AACxE,gBAAgB,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,qBAAqB,CAAC,YAAY,CAAC;AACxF;AACA,gBAAgB,MAAM,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,sBAAsB;AACpH,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ;AACzD,gBAAgB,MAAM,YAAY,GAAG,MAAM;AAC3C,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACrE,gBAAgB,MAAM,WAAW,GAAG;AACpC,oBAAoB,CAAC,cAAc,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;AACvE,oBAAoB,CAAC,UAAU,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/D,oBAAoB,CAAC,aAAa,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC;AACrE,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,oBAAoB,QAAQ,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;AACjF,oBAAoB,aAAa,GAAG,CAAC,eAAe,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;AAChG,oBAAoB,CAAC,eAAe,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;AACzE,oBAAoB,CAAC,0BAA0B,CAAC;AAChD;AACA,qBAAqB,MAAM,CAAC,OAAO;AACnC,qBAAqB,IAAI,CAAC,GAAG,CAAC;AAC9B,gBAAgB,MAAM,YAAY,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAC1E,gBAAgB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,YAAY;AACnD,gBAAgB,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5C,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC;AACzD,YAAY,MAAM,KAAK;AACvB,QAAQ;AACR,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;AAChE,QAAQ,OAAO,WAAW,IAAI,SAAS;AACvC,IAAI;AACJ,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC;AACrD,QAAQ,MAAM,KAAK;AACnB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACrL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;AACxI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC5H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;ACrRvC;AACA;AACA;;;;"}
|
|
1
|
+
{"version":3,"file":"acorex-connectivity-api.mjs","sources":["../tmp-esm2022/api/lib/api-storage.service.js","../tmp-esm2022/api/lib/file-storage-api.service.js","../tmp-esm2022/api/lib/auth/oidc/application.loader.js","../tmp-esm2022/api/lib/auth/oidc/configuration.service.js","../tmp-esm2022/api/lib/auth/oidc/feature.loader.js","../tmp-esm2022/api/lib/auth/oidc/oidc.strategy.js","../tmp-esm2022/api/lib/auth/oidc/permission.loader.js","../tmp-esm2022/api/lib/auth/oidc/tenant.loader.js","../tmp-esm2022/api/lib/auth/oidc/user-avatar.provider.js","../tmp-esm2022/api/lib/report-management/report-management-api.providers.js","../tmp-esm2022/api/lib/report-management/report-management-api.module.js","../tmp-esm2022/api/lib/api.module.js","../tmp-esm2022/api/lib/api-google.strategy.js","../tmp-esm2022/api/acorex-connectivity-api.js"],"sourcesContent":["import { AXP_ROOT_CONFIG_TOKEN, AXPFilterOperatorMiddlewareService } from '@acorex/platform/common';\nimport { AXPEntityResolver } from '@acorex/platform/layout/entity';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { kebabCase } from 'lodash-es';\nimport { firstValueFrom } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nexport class AXCApiEntityStorageService {\n constructor(http) {\n this.http = http;\n this.configs = inject(AXP_ROOT_CONFIG_TOKEN);\n this.filterService = inject(AXPFilterOperatorMiddlewareService);\n this.entityResolver = inject(AXPEntityResolver);\n this.mainUrl = this.configs.baseUrl;\n // API routing constants\n this.API_VERSION = 'v1';\n this.DEFAULT_AREA = 'global';\n }\n get dbName() {\n return 'ACoreXPlatform';\n }\n getConfigEntity(entityName) {\n const partEntity = entityName.split('.');\n if (partEntity.length == 3) {\n const [area, module, entity] = partEntity;\n const areaKebab = kebabCase(area);\n const moduleKebab = kebabCase(module);\n const entityKebab = kebabCase(entity);\n return {\n module: moduleKebab,\n entity: entityKebab,\n area: areaKebab,\n version: this.API_VERSION,\n };\n }\n else {\n const [module, entity] = partEntity;\n const moduleKebab = kebabCase(module);\n const entityKebab = kebabCase(entity);\n return {\n module: moduleKebab,\n entity: entityKebab,\n area: this.DEFAULT_AREA,\n version: this.API_VERSION,\n };\n }\n }\n async initial(entityName, collection) {\n //const exists = await this.table('entity-store').where({ entityName }).count();\n // if (exists === 0) {\n // await this.table('entity-store').bulkAdd(collection.map((item) => ({ ...item, entityName })));\n // }\n return collection;\n }\n async getOne(entityName, id) {\n const routeElement = await this.getConfigEntity(entityName);\n const url = `${this.mainUrl}/${routeElement.version}/${routeElement.area}/${routeElement.module}/${routeElement.entity}${id ? '/' + id : ''}`;\n return firstValueFrom(this.http.get(url));\n }\n async updateOne(entityName, id, keyValue) {\n const routeElement = await this.getConfigEntity(entityName);\n const url = `${this.mainUrl}/${routeElement.version}/${routeElement.area}/${routeElement.module}/${routeElement.entity}${id ? '/' + id : ''}`;\n return firstValueFrom(this.http.put(url, keyValue));\n }\n async deleteOne(entityName, id) {\n const routeElement = await this.getConfigEntity(entityName);\n const url = `${this.mainUrl}/${routeElement.version}/${routeElement.area}/${routeElement.module}/${routeElement.entity}/${id}`;\n firstValueFrom(this.http.delete(url));\n }\n async insertOne(entityName, entityItem) {\n const routeElement = await this.getConfigEntity(entityName);\n const url = `${this.mainUrl}/${routeElement.version}/${routeElement.area}/${routeElement.module}/${routeElement.entity}`;\n return firstValueFrom(this.http.post(url, entityItem));\n }\n async getAll(entityName) {\n return [];\n }\n async query(entityName, request) {\n const routeElement = await this.getConfigEntity(entityName);\n let httpParams = new HttpParams().set('Skip', request.skip).set('Take', request.take);\n if (request?.sort && request?.sort.length > 0) {\n const sortParam = request?.sort.map((sort) => `${sort.field}:${sort.dir}`).join(',');\n httpParams = httpParams.set('$orderby', sortParam);\n }\n const greaterThanOperator = this.filterService.getOperator('greaterThan');\n const lessThanOperator = this.filterService.getOperator('lessThan');\n function generateQueryString(filter) {\n if (!filter.filters) {\n // Base case: single filter\n if (typeof filter.value === 'object' && filter.operator.type === 'between') {\n return `${filter.field} ${greaterThanOperator.type} '${filter.value.from}' and ${filter.field} ${lessThanOperator.type} '${filter.value.to}'`;\n }\n else {\n return `${filter.field} ${filter.operator.type} '${filter.value}'`;\n }\n }\n else if (!filter.filters.length) {\n return;\n }\n else {\n // Recursive case: multiple filters\n const filterStrings = filter.filters.map((subFilter) => generateQueryString(subFilter));\n const logic = filter.logic || 'AND'; // Default logic is 'AND' if not provided\n return `${filterStrings.filter((i) => i).join(` ${logic} `)}`;\n }\n }\n let queryString = '';\n if (request.filter) {\n const filter = request.filter;\n if (filter.filters && filter.filters.length > 0) {\n // Construct filter string from provided filters\n const dynamicQueries = generateQueryString(filter);\n console.log({ dynamicQueries: dynamicQueries });\n // Append dynamic filters to custom filter, if both exist\n queryString = (queryString ? `${queryString},${dynamicQueries}` : dynamicQueries);\n }\n }\n // Set the $filter parameter if there are any filters\n if (queryString) {\n httpParams = httpParams.set('$query', queryString);\n }\n return firstValueFrom(this.http.get(`${this.mainUrl}/${routeElement.version}/${routeElement.area}/${routeElement.module}/${routeElement.entity}`, { params: httpParams })).then((response) => {\n return {\n total: response.totalCount,\n items: response.items,\n };\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCApiEntityStorageService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCApiEntityStorageService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCApiEntityStorageService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.HttpClient }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L2FwaS9zcmMvbGliL2FwaS1zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtDQUFrQyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFcEcsT0FBTyxFQUFFLGlCQUFpQixFQUEyQixNQUFNLGdDQUFnQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFHdEMsTUFBTSxPQUFPLDBCQUEwQjtJQVVyQyxZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBVDVCLFlBQU8sR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN4QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQzNELG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsWUFBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBRXZDLHdCQUF3QjtRQUNQLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsUUFBUSxDQUFDO0lBRUYsQ0FBQztJQUV4QyxJQUFJLE1BQU07UUFDUixPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFRCxlQUFlLENBQUMsVUFBa0I7UUFDaEMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMs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SUFBSSxZQUFZLENBQUMsTUFBTSxJQUNqRixZQUFZLENBQUMsTUFDZixFQUFFLEVBQ0YsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQ3ZCLENBQ0YsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNsQixPQUFPO2dCQUNMLEtBQUssRUFBRSxRQUFRLENBQUMsVUFBVTtnQkFDMUIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO2FBQ3RCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBbkpVLDBCQUEwQjttSEFBMUIsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQX1JPT1RfQ09ORklHX1RPS0VOLCBBWFBGaWx0ZXJPcGVyYXRvck1pZGRsZXdhcmVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQUGFnZWRMaXN0UmVzdWx0LCBBWFBRdWVyeVJlcXVlc3QgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQRW50aXR5UmVzb2x2ZXIsIEFYUEVudGl0eVN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGtlYmFiQ2FzZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhDQXBpRW50aXR5U3RvcmFnZVNlcnZpY2UgaW1wbGVtZW50cyBBWFBFbnRpdHlTdG9yYWdlU2VydmljZTxzdHJpbmcsIGFueT4ge1xuICBwcml2YXRlIGNvbmZpZ3MgPSBpbmplY3QoQVhQX1JPT1RfQ09ORklHX1RPS0VOKTtcbiAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlID0gaW5qZWN0KEFYUEZpbHRlck9wZXJhdG9yTWlkZGxld2FyZVNlcnZpY2UpO1xuICBwcml2YXRlIGVudGl0eVJlc29sdmVyID0gaW5qZWN0KEFYUEVudGl0eVJlc29sdmVyKTtcbiAgcHJpdmF0ZSBtYWluVXJsID0gdGhpcy5jb25maWdzLmJhc2VVcmw7XG5cbiAgLy8gQVBJIHJvdXRpbmcgY29uc3RhbnRzXG4gIHByaXZhdGUgcmVhZG9ubHkgQVBJX1ZFUlNJT04gPSAndjEnO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfQVJFQSA9ICdnbG9iYWwnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cblxuICBnZXQgZGJOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdBQ29yZVhQbGF0Zm9ybSc7XG4gIH1cblxuICBnZXRDb25maWdFbnRpdHkoZW50aXR5TmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFydEVudGl0eSA9IGVudGl0eU5hbWUuc3BsaXQoJy4nKTtcbiAgICBpZiAocGFydEVudGl0eS5sZW5ndGggPT0gMykge1xuICAgICAgY29uc3QgW2FyZWEsIG1vZHVsZSwgZW50aXR5XSA9IHBhcnRFbnRpdHk7XG4gICAgICBjb25zdCBhcmVhS2ViYWIgPSBrZWJhYkNhc2UoYXJlYSk7XG4gICAgICBjb25zdCBtb2R1bGVLZWJhYiA9IGtlYmFiQ2FzZShtb2R1bGUpO1xuICAgICAgY29uc3QgZW50aXR5S2ViYWIgPSBrZWJhYkNhc2UoZW50aXR5KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1vZHVsZTogbW9kdWxlS2ViYWIsXG4gICAgICAgIGVudGl0eTogZW50aXR5S2ViYWIsXG4gICAgICAgIGFyZWE6IGFyZWFLZWJhYixcbiAgICAgICAgdmVyc2lvbjogdGhpcy5BUElfVkVSU0lPTixcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IFttb2R1bGUsIGVudGl0eV0gPSBwYXJ0RW50aXR5O1xuICAgICAgY29uc3QgbW9kdWxlS2ViYWIgPSBrZWJhYkNhc2UobW9kdWxlKTtcbiAgICAgIGNvbnN0IGVudGl0eUtlYmFiID0ga2ViYWJDYXNlKGVudGl0eSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2R1bGU6IG1vZHVsZUtlYmFiLFxuICAgICAgICBlbnRpdHk6IGVudGl0eUtlYmFiLFxuICAgICAgICBhcmVhOiB0aGlzLkRFRkFVTFRfQVJFQSxcbiAgICAgICAgdmVyc2lvbjogdGhpcy5BUElfVkVSU0lPTixcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5pdGlhbDxUID0gYW55PihlbnRpdHlOYW1lOiBzdHJpbmcsIGNvbGxlY3Rpb246IFRbXSk6IFByb21pc2U8VFtdPiB7XG4gICAgLy9jb25zdCBleGlzdHMgPSBhd2FpdCB0aGlzLnRhYmxlKCdlbnRpdHktc3RvcmUnKS53aGVyZSh7IGVudGl0eU5hbWUgfSkuY291bnQoKTtcbiAgICAvLyBpZiAoZXhpc3RzID09PSAwKSB7XG4gICAgLy8gICBhd2FpdCB0aGlzLnRhYmxlKCdlbnRpdHktc3RvcmUnKS5idWxrQWRkKGNvbGxlY3Rpb24ubWFwKChpdGVtKSA9PiAoeyAuLi5pdGVtLCBlbnRpdHlOYW1lIH0pKSk7XG4gICAgLy8gfVxuICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICB9XG5cbiAgYXN5bmMgZ2V0T25lPFQgPSBhbnk+KGVudGl0eU5hbWU6IHN0cmluZywgaWQ6IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IHJvdXRlRWxlbWVudCA9IGF3YWl0IHRoaXMuZ2V0Q29uZmlnRW50aXR5KGVudGl0eU5hbWUpO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMubWFpblVybH0vJHtyb3V0ZUVsZW1lbnQudmVyc2lvbn0vJHtyb3V0ZUVsZW1lbnQuYXJlYX0vJHtyb3V0ZUVsZW1lbnQubW9kdWxlfS8ke1xuICAgICAgcm91dGVFbGVtZW50LmVudGl0eVxuICAgIH0ke2lkID8gJy8nICsgaWQgOiAnJ31gO1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PFQ+KHVybCkpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlT25lPFQgPSBhbnk+KGVudGl0eU5hbWU6IHN0cmluZywgaWQ6IHN0cmluZywga2V5VmFsdWU6IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCByb3V0ZUVsZW1lbnQgPSBhd2FpdCB0aGlzLmdldENvbmZpZ0VudGl0eShlbnRpdHlOYW1lKTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLm1haW5Vcmx9LyR7cm91dGVFbGVtZW50LnZlcnNpb259LyR7cm91dGVFbGVtZW50LmFyZWF9LyR7cm91dGVFbGVtZW50Lm1vZHVsZX0vJHtcbiAgICAgIHJvdXRlRWxlbWVudC5lbnRpdHlcbiAgICB9JHtpZCA/ICcvJyArIGlkIDogJyd9YDtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnB1dDxUPih1cmwsIGtleVZhbHVlKSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVPbmUoZW50aXR5TmFtZTogc3RyaW5nLCBpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgcm91dGVFbGVtZW50ID0gYXdhaXQgdGhpcy5nZXRDb25maWdFbnRpdHkoZW50aXR5TmFtZSk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5tYWluVXJsfS8ke3JvdXRlRWxlbWVudC52ZXJzaW9ufS8ke3JvdXRlRWxlbWVudC5hcmVhfS8ke3JvdXRlRWxlbWVudC5tb2R1bGV9LyR7XG4gICAgICByb3V0ZUVsZW1lbnQuZW50aXR5XG4gICAgfS8ke2lkfWA7XG4gICAgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLmRlbGV0ZSh1cmwpKTtcbiAgfVxuXG4gIGFzeW5jIGluc2VydE9uZTxUID0gYW55PihlbnRpdHlOYW1lOiBzdHJpbmcsIGVudGl0eUl0ZW06IFQpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJvdXRlRWxlbWVudCA9IGF3YWl0IHRoaXMuZ2V0Q29uZmlnRW50aXR5KGVudGl0eU5hbWUpO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMubWFpblVybH0vJHtyb3V0ZUVsZW1lbnQudmVyc2lvbn0vJHtyb3V0ZUVsZW1lbnQuYXJlYX0vJHtyb3V0ZUVsZW1lbnQubW9kdWxlfS8ke1xuICAgICAgcm91dGVFbGVtZW50LmVudGl0eVxuICAgIH1gO1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDxzdHJpbmc+KHVybCwgZW50aXR5SXRlbSkpO1xuICB9XG5cbiAgYXN5bmMgZ2V0QWxsPFQgPSBhbnk+KGVudGl0eU5hbWU6IHN0cmluZyk6IFByb21pc2U8VFtdPiB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgYXN5bmMgcXVlcnk8VCA9IGFueT4oZW50aXR5TmFtZTogc3RyaW5nLCByZXF1ZXN0OiBBWFBRdWVyeVJlcXVlc3QpOiBQcm9taXNlPEFYUFBhZ2VkTGlzdFJlc3VsdDxUPj4ge1xuICAgIGNvbnN0IHJvdXRlRWxlbWVudCA9IGF3YWl0IHRoaXMuZ2V0Q29uZmlnRW50aXR5KGVudGl0eU5hbWUpO1xuXG4gICAgbGV0IGh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgnU2tpcCcsIHJlcXVlc3Quc2tpcCkuc2V0KCdUYWtlJywgcmVxdWVzdC50YWtlKTtcbiAgICBpZiAocmVxdWVzdD8uc29ydCAmJiByZXF1ZXN0Py5zb3J0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNvcnRQYXJhbSA9IHJlcXVlc3Q/LnNvcnQubWFwKChzb3J0OiBhbnkpID0+IGAke3NvcnQuZmllbGR9OiR7c29ydC5kaXJ9YCkuam9pbignLCcpO1xuICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuc2V0KCckb3JkZXJieScsIHNvcnRQYXJhbSk7XG4gICAgfVxuXG4gICAgY29uc3QgZ3JlYXRlclRoYW5PcGVyYXRvciA9IHRoaXMuZmlsdGVyU2VydmljZS5nZXRPcGVyYXRvcignZ3JlYXRlclRoYW4nKTtcbiAgICBjb25zdCBsZXNzVGhhbk9wZXJhdG9yID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmdldE9wZXJhdG9yKCdsZXNzVGhhbicpO1xuICAgIGZ1bmN0aW9uIGdlbmVyYXRlUXVlcnlTdHJpbmcoZmlsdGVyOiBhbnkpIHtcbiAgICAgIGlmICghZmlsdGVyLmZpbHRlcnMpIHtcbiAgICAgICAgLy8gQmFzZSBjYXNlOiBzaW5nbGUgZmlsdGVyXG4gICAgICAgIGlmICh0eXBlb2YgZmlsdGVyLnZhbHVlID09PSAnb2JqZWN0JyAmJiBmaWx0ZXIub3BlcmF0b3IudHlwZSA9PT0gJ2JldHdlZW4nKSB7XG4gICAgICAgICAgcmV0dXJuIGAke2ZpbHRlci5maWVsZH0gJHtncmVhdGVyVGhhbk9wZXJhdG9yLnR5cGV9ICcke2ZpbHRlci52YWx1ZS5mcm9tfScgYW5kICR7ZmlsdGVyLmZpZWxkfSAke2xlc3NUaGFuT3BlcmF0b3IudHlwZX0gJyR7ZmlsdGVyLnZhbHVlLnRvfSdgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBgJHtmaWx0ZXIuZmllbGR9ICR7ZmlsdGVyLm9wZXJhdG9yLnR5cGV9ICcke2ZpbHRlci52YWx1ZX0nYDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghZmlsdGVyLmZpbHRlcnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZSBjYXNlOiBtdWx0aXBsZSBmaWx0ZXJzXG5cbiAgICAgICAgY29uc3QgZmlsdGVyU3RyaW5ncyA9IGZpbHRlci5maWx0ZXJzLm1hcCgoc3ViRmlsdGVyOiBhbnkpID0+IGdlbmVyYXRlUXVlcnlTdHJpbmcoc3ViRmlsdGVyKSk7XG4gICAgICAgIGNvbnN0IGxvZ2ljID0gZmlsdGVyLmxvZ2ljIHx8ICdBTkQnOyAvLyBEZWZhdWx0IGxvZ2ljIGlzICdBTkQnIGlmIG5vdCBwcm92aWRlZFxuICAgICAgICByZXR1cm4gYCR7ZmlsdGVyU3RyaW5ncy5maWx0ZXIoKGk6IGFueSkgPT4gaSkuam9pbihgICR7bG9naWN9IGApfWA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHF1ZXJ5U3RyaW5nID0gJyc7XG5cbiAgICBpZiAocmVxdWVzdC5maWx0ZXIpIHtcbiAgICAgIGNvbnN0IGZpbHRlciA9IHJlcXVlc3QuZmlsdGVyO1xuICAgICAgaWYgKGZpbHRlci5maWx0ZXJzICYmIGZpbHRlci5maWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gQ29uc3RydWN0IGZpbHRlciBzdHJpbmcgZnJvbSBwcm92aWRlZCBmaWx0ZXJzXG5cbiAgICAgICAgY29uc3QgZHluYW1pY1F1ZXJpZXMgPSBnZW5lcmF0ZVF1ZXJ5U3RyaW5nKGZpbHRlcik7XG4gICAgICAgIGNvbnNvbGUubG9nKHsgZHluYW1pY1F1ZXJpZXM6IGR5bmFtaWNRdWVyaWVzIH0pO1xuXG4gICAgICAgIC8vIEFwcGVuZCBkeW5hbWljIGZpbHRlcnMgdG8gY3VzdG9tIGZpbHRlciwgaWYgYm90aCBleGlzdFxuICAgICAgICBxdWVyeVN0cmluZyA9IChxdWVyeVN0cmluZyA/IGAke3F1ZXJ5U3RyaW5nfSwke2R5bmFtaWNRdWVyaWVzfWAgOiBkeW5hbWljUXVlcmllcykgYXMgc3RyaW5nO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBTZXQgdGhlICRmaWx0ZXIgcGFyYW1ldGVyIGlmIHRoZXJlIGFyZSBhbnkgZmlsdGVyc1xuICAgIGlmIChxdWVyeVN0cmluZykge1xuICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuc2V0KCckcXVlcnknLCBxdWVyeVN0cmluZyk7XG4gICAgfVxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuaHR0cC5nZXQ8YW55PihcbiAgICAgICAgYCR7dGhpcy5tYWluVXJsfS8ke3JvdXRlRWxlbWVudC52ZXJzaW9ufS8ke3JvdXRlRWxlbWVudC5hcmVhfS8ke3JvdXRlRWxlbWVudC5tb2R1bGV9LyR7XG4gICAgICAgICAgcm91dGVFbGVtZW50LmVudGl0eVxuICAgICAgICB9YCxcbiAgICAgICAgeyBwYXJhbXM6IGh0dHBQYXJhbXMgfVxuICAgICAgKVxuICAgICkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRvdGFsOiByZXNwb25zZS50b3RhbENvdW50LFxuICAgICAgICBpdGVtczogcmVzcG9uc2UuaXRlbXMsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG4iXX0=","import { AXPFileStorageService, AXPFileStorageStatus, } from '@acorex/platform/common';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { firstValueFrom, catchError, of } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class AXCFileStorageApiService extends AXPFileStorageService {\n constructor() {\n super(...arguments);\n this.http = inject(HttpClient);\n //#region ---- API Endpoints ----\n this.baseUrl = '/api/file-storage';\n //#endregion\n //#region ---- Fallback Data ----\n this.fallbackFileInfo = {\n fileId: 'fallback-file-id',\n refId: 'fallback-ref-id',\n refType: 'fallback-ref-type',\n category: 'fallback-category',\n size: 0,\n mimeType: 'application/octet-stream',\n uploadedAt: new Date(),\n isPublic: true,\n isPrimary: false,\n status: AXPFileStorageStatus.Temporary,\n name: 'fallback-file',\n binary: new File([''], 'fallback-file'),\n };\n }\n //#endregion\n async save(request) {\n try {\n const formData = new FormData();\n formData.append('file', request.file);\n formData.append('refId', request.refId);\n formData.append('refType', request.refType);\n formData.append('category', request.category);\n if (request.name) {\n formData.append('name', request.name);\n }\n if (request.path) {\n formData.append('path', request.path);\n }\n if (request.isPrimary !== undefined) {\n formData.append('isPrimary', request.isPrimary.toString());\n }\n if (request.status) {\n formData.append('status', request.status);\n }\n if (request.metadata) {\n formData.append('metadata', JSON.stringify(request.metadata));\n }\n return await firstValueFrom(this.http.post(`${this.baseUrl}/save`, formData).pipe(catchError(() => of(this.fallbackFileInfo))));\n }\n catch {\n return this.fallbackFileInfo;\n }\n }\n async update(request) {\n try {\n const updateData = {\n metadata: request.metadata,\n };\n if (request.path !== undefined) {\n updateData.path = request.path;\n }\n if (request.isPrimary !== undefined) {\n updateData.isPrimary = request.isPrimary;\n }\n return await firstValueFrom(this.http.put(`${this.baseUrl}/update/${request.fileId}`, updateData).pipe(catchError(() => of(this.fallbackFileInfo))));\n }\n catch {\n return this.fallbackFileInfo;\n }\n }\n async find(request) {\n try {\n let params = new HttpParams();\n if (request.refId) {\n params = params.set('refId', request.refId);\n }\n if (request.refType) {\n params = params.set('refType', request.refType);\n }\n if (request.category) {\n params = params.set('category', request.category);\n }\n if (request.mimeType) {\n params = params.set('mimeType', request.mimeType);\n }\n if (request.isPublic !== undefined) {\n params = params.set('isPublic', request.isPublic.toString());\n }\n if (request.isPrimary !== undefined) {\n params = params.set('isPrimary', request.isPrimary.toString());\n }\n if (request.uploadedAtRange) {\n params = params.set('uploadedAtFrom', request.uploadedAtRange.from.toISOString());\n params = params.set('uploadedAtTo', request.uploadedAtRange.to.toISOString());\n }\n return await firstValueFrom(this.http.get(`${this.baseUrl}/find`, { params }).pipe(catchError(() => of([]))));\n }\n catch {\n return [];\n }\n }\n async getInfo(fileId) {\n try {\n return await firstValueFrom(this.http.get(`${this.baseUrl}/info/${fileId}`).pipe(catchError(() => of(this.fallbackFileInfo))));\n }\n catch {\n return this.fallbackFileInfo;\n }\n }\n async findMany(ids) {\n try {\n return await firstValueFrom(this.http.post(`${this.baseUrl}/find-many`, { ids }).pipe(catchError(() => of([]))));\n }\n catch {\n return [];\n }\n }\n async remove(fileId) {\n try {\n await firstValueFrom(this.http.delete(`${this.baseUrl}/remove/${fileId}`).pipe(catchError(() => of(void 0))));\n }\n catch {\n // Silently fail in fallback mode\n }\n }\n async commit(fileId) {\n try {\n await firstValueFrom(this.http.post(`${this.baseUrl}/commit/${fileId}`, {}).pipe(catchError(() => of(void 0))));\n }\n catch {\n // Silently fail in fallback mode\n }\n }\n async markForDeletion(fileId) {\n try {\n await firstValueFrom(this.http.post(`${this.baseUrl}/mark-for-deletion/${fileId}`, {}).pipe(catchError(() => of(void 0))));\n }\n catch {\n // Silently fail in fallback mode\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCFileStorageApiService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCFileStorageApiService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCFileStorageApiService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zdG9yYWdlLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb25uZWN0aXZpdHkvYXBpL3NyYy9saWIvZmlsZS1zdG9yYWdlLWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxxQkFBcUIsRUFDckIsb0JBQW9CLEdBR3JCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBR3RELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxxQkFBcUI7SUFEbkU7O1FBRW1CLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFM0MscUNBQXFDO1FBRXBCLFlBQU8sR0FBRyxtQkFBbUIsQ0FBQztRQUUvQyxZQUFZO1FBRVoscUNBQXFDO1FBRXBCLHFCQUFnQixHQUF1QjtZQUN0RCxNQUFNLEVBQUUsa0JBQWtCO1lBQzFCLEtBQUssRUFBRSxpQkFBaUI7WUFDeEIsT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLElBQUksRUFBRSxDQUFDO1lBQ1AsUUFBUSxFQUFFLDBCQUEwQjtZQUNwQyxVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDdEIsUUFBUSxFQUFFLElBQUk7WUFDZCxTQUFTLEVBQUUsS0FBSztZQUNoQixNQUFNLEVBQUUsb0JBQW9CLENBQUMsU0FBUztZQUN0QyxJQUFJLEVBQUUsZUFBZTtZQUNyQixNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxlQUFlLENBQUM7U0FDeEMsQ0FB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SUFBSSxDQUNwRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDN0IsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGlDQUFpQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQzsrR0FwTFUsd0JBQXdCO21IQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWFBGaWxlU3RvcmFnZUNyZWF0ZVJlcXVlc3QsXG4gIEFYUEZpbGVTdG9yYWdlRmluZFJlcXVlc3QsXG4gIEFYUEZpbGVTdG9yYWdlSW5mbyxcbiAgQVhQRmlsZVN0b3JhZ2VTZXJ2aWNlLFxuICBBWFBGaWxlU3RvcmFnZVN0YXR1cyxcbiAgQVhQRmlsZVN0b3JhZ2VVcGRhdGVSZXF1ZXN0LFxuICBBWFBGaWxlTWFueVN0b3JhZ2VJbmZvLFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgY2F0Y2hFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYQ0ZpbGVTdG9yYWdlQXBpU2VydmljZSBleHRlbmRzIEFYUEZpbGVTdG9yYWdlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICAvLyNyZWdpb24gLS0tLSAgIEFQSSBFbmRwb2ludHMgICAtLS0tXG5cbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlVXJsID0gJy9hcGkvZmlsZS1zdG9yYWdlJztcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEZhbGxiYWNrIERhdGEgICAtLS0tXG5cbiAgcHJpdmF0ZSByZWFkb25seSBmYWxsYmFja0ZpbGVJbmZvOiBBWFBGaWxlU3RvcmFnZUluZm8gPSB7XG4gICAgZmlsZUlkOiAnZmFsbGJhY2stZmlsZS1pZCcsXG4gICAgcmVmSWQ6ICdmYWxsYmFjay1yZWYtaWQnLFxuICAgIHJlZlR5cGU6ICdmYWxsYmFjay1yZWYtdHlwZScsXG4gICAgY2F0ZWdvcnk6ICdmYWxsYmFjay1jYXRlZ29yeScsXG4gICAgc2l6ZTogMCxcbiAgICBtaW1lVHlwZTogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsXG4gICAgdXBsb2FkZWRBdDogbmV3IERhdGUoKSxcbiAgICBpc1B1YmxpYzogdHJ1ZSxcbiAgICBpc1ByaW1hcnk6IGZhbHNlLFxuICAgIHN0YXR1czogQVhQRmlsZVN0b3JhZ2VTdGF0dXMuVGVtcG9yYXJ5LFxuICAgIG5hbWU6ICdmYWxsYmFjay1maWxlJyxcbiAgICBiaW5hcnk6IG5ldyBGaWxlKFsnJ10sICdmYWxsYmFjay1maWxlJyksXG4gIH07XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgYXN5bmMgc2F2ZShyZXF1ZXN0OiBBWFBGaWxlU3RvcmFnZUNyZWF0ZVJlcXVlc3QpOiBQcm9taXNlPEFYUEZpbGVTdG9yYWdlSW5mbz4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgcmVxdWVzdC5maWxlKTtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVmSWQnLCByZXF1ZXN0LnJlZklkKTtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVmVHlwZScsIHJlcXVlc3QucmVmVHlwZSk7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2NhdGVnb3J5JywgcmVxdWVzdC5jYXRlZ29yeSk7XG4gICAgICBcbiAgICAgIGlmIChyZXF1ZXN0Lm5hbWUpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCduYW1lJywgcmVxdWVzdC5uYW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXF1ZXN0LnBhdGgpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXRoJywgcmVxdWVzdC5wYXRoKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXF1ZXN0LmlzUHJpbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnaXNQcmltYXJ5JywgcmVxdWVzdC5pc1ByaW1hcnkudG9TdHJpbmcoKSk7XG4gICAgICB9XG4gICAgICBpZiAocmVxdWVzdC5zdGF0dXMpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdzdGF0dXMnLCByZXF1ZXN0LnN0YXR1cyk7XG4gICAgICB9XG4gICAgICBpZiAocmVxdWVzdC5tZXRhZGF0YSkge1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ21ldGFkYXRhJywgSlNPTi5zdHJpbmdpZnkocmVxdWVzdC5tZXRhZGF0YSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuaHR0cC5wb3N0PEFYUEZpbGVTdG9yYWdlSW5mbz4oYCR7dGhpcy5iYXNlVXJsfS9zYXZlYCwgZm9ybURhdGEpLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih0aGlzLmZhbGxiYWNrRmlsZUluZm8pKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHRoaXMuZmFsbGJhY2tGaWxlSW5mbztcbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGRhdGUocmVxdWVzdDogQVhQRmlsZVN0b3JhZ2VVcGRhdGVSZXF1ZXN0KTogUHJvbWlzZTxBWFBGaWxlU3RvcmFnZUluZm8+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXBkYXRlRGF0YTogYW55ID0ge1xuICAgICAgICBtZXRhZGF0YTogcmVxdWVzdC5tZXRhZGF0YSxcbiAgICAgIH07XG4gICAgICBcbiAgICAgIGlmIChyZXF1ZXN0LnBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cGRhdGVEYXRhLnBhdGggPSByZXF1ZXN0LnBhdGg7XG4gICAgICB9XG4gICAgICBpZiAocmVxdWVzdC5pc1ByaW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cGRhdGVEYXRhLmlzUHJpbWFyeSA9IHJlcXVlc3QuaXNQcmltYXJ5O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuaHR0cC5wdXQ8QVhQRmlsZVN0b3JhZ2VJbmZvPihgJHt0aGlzLmJhc2VVcmx9L3VwZGF0ZS8ke3JlcXVlc3QuZmlsZUlkfWAsIHVwZGF0ZURhdGEpLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih0aGlzLmZhbGxiYWNrRmlsZUluZm8pKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHRoaXMuZmFsbGJhY2tGaWxlSW5mbztcbiAgICB9XG4gIH1cblxuICBhc3luYyBmaW5kKHJlcXVlc3Q6IEFYUEZpbGVTdG9yYWdlRmluZFJlcXVlc3QpOiBQcm9taXNlPEFYUEZpbGVTdG9yYWdlSW5mb1tdPiB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgICAgXG4gICAgICBpZiAocmVxdWVzdC5yZWZJZCkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdyZWZJZCcsIHJlcXVlc3QucmVmSWQpO1xuICAgICAgfVxuICAgICAgaWYgKHJlcXVlc3QucmVmVHlwZSkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdyZWZUeXBlJywgcmVxdWVzdC5yZWZUeXBlKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXF1ZXN0LmNhdGVnb3J5KSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2NhdGVnb3J5JywgcmVxdWVzdC5jYXRlZ29yeSk7XG4gICAgICB9XG4gICAgICBpZiAocmVxdWVzdC5taW1lVHlwZSkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdtaW1lVHlwZScsIHJlcXVlc3QubWltZVR5cGUpO1xuICAgICAgfVxuICAgICAgaWYgKHJlcXVlc3QuaXNQdWJsaWMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpc1B1YmxpYycsIHJlcXVlc3QuaXNQdWJsaWMudG9TdHJpbmcoKSk7XG4gICAgICB9XG4gICAgICBpZiAocmVxdWVzdC5pc1ByaW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpc1ByaW1hcnknLCByZXF1ZXN0LmlzUHJpbWFyeS50b1N0cmluZygpKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXF1ZXN0LnVwbG9hZGVkQXRSYW5nZSkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd1cGxvYWRlZEF0RnJvbScsIHJlcXVlc3QudXBsb2FkZWRBdFJhbmdlLmZyb20udG9JU09TdHJpbmcoKSk7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3VwbG9hZGVkQXRUbycsIHJlcXVlc3QudXBsb2FkZWRBdFJhbmdlLnRvLnRvSVNPU3RyaW5nKCkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuaHR0cC5nZXQ8QVhQRmlsZVN0b3JhZ2VJbmZvW10+KGAke3RoaXMuYmFzZVVybH0vZmluZGAsIHsgcGFyYW1zIH0pLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0SW5mbyhmaWxlSWQ6IHN0cmluZyk6IFByb21pc2U8QVhQRmlsZVN0b3JhZ2VJbmZvPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgdGhpcy5odHRwLmdldDxBWFBGaWxlU3RvcmFnZUluZm8+KGAke3RoaXMuYmFzZVVybH0vaW5mby8ke2ZpbGVJZH1gKS5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YodGhpcy5mYWxsYmFja0ZpbGVJbmZvKSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB0aGlzLmZhbGxiYWNrRmlsZUluZm87XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZmluZE1hbnkoaWRzOiBzdHJpbmdbXSk6IFByb21pc2U8QVhQRmlsZU1hbnlTdG9yYWdlSW5mb1tdPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgdGhpcy5odHRwLnBvc3Q8QVhQRmlsZU1hbnlTdG9yYWdlSW5mb1tdPihgJHt0aGlzLmJhc2VVcmx9L2ZpbmQtbWFueWAsIHsgaWRzIH0pLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVtb3ZlKGZpbGVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuYmFzZVVybH0vcmVtb3ZlLyR7ZmlsZUlkfWApLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih2b2lkIDApKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gU2lsZW50bHkgZmFpbCBpbiBmYWxsYmFjayBtb2RlXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY29tbWl0KGZpbGVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmJhc2VVcmx9L2NvbW1pdC8ke2ZpbGVJZH1gLCB7fSkucGlwZShcbiAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHZvaWQgMCkpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBTaWxlbnRseSBmYWlsIGluIGZhbGxiYWNrIG1vZGVcbiAgICB9XG4gIH1cblxuICBhc3luYyBtYXJrRm9yRGVsZXRpb24oZmlsZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuYmFzZVVybH0vbWFyay1mb3ItZGVsZXRpb24vJHtmaWxlSWR9YCwge30pLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih2b2lkIDApKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gU2lsZW50bHkgZmFpbCBpbiBmYWxsYmFjayBtb2RlXG4gICAgfVxuICB9XG59ICJdfQ==","import { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { map } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nexport class AXMOidcApplicationLoader {\n constructor(http) {\n this.http = http;\n this.configs = inject(AXP_ROOT_CONFIG_TOKEN);\n this.apiGetApps = `${this.configs.baseUrl}/applications/applications-for-current-tenant`;\n this.apiSetApp = `${this.configs.baseUrl}/SetApplication`;\n }\n getList() {\n return this.http.get(this.apiGetApps).pipe(map((response) => {\n return response.items.map((item) => this.mapToAXPApplication(item));\n }));\n }\n set(application) {\n return Promise.resolve();\n }\n // //TODO: shoud be removed\n // set(application: AXPApplication): Observable<AXPRefreshTokenResult> {\n // return this.http.post<any>(this.apiSetApp, { applicationId: application.id }).pipe(\n // map((response) => {\n // return {\n // succeed: true,\n // data: {\n // accessToken: response.token,\n // refreshToken: response.token,\n // }\n // };\n // })\n // );\n // }\n mapToAXPApplication(item) {\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.title || 'defaultTitle',\n version: item.version || '1.0.0',\n description: item.description,\n logo: item.logo, // Assuming logo is of type AXPLogoConfig or undefined\n editionName: item.editionName,\n // features: item.features || [],\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcApplicationLoader, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcApplicationLoader }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcApplicationLoader, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.HttpClient }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24ubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb25uZWN0aXZpdHkvYXBpL3NyYy9saWIvYXV0aC9vaWRjL2FwcGxpY2F0aW9uLmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBR3ZDLE1BQU0sT0FBTyx3QkFBd0I7SUFJbkMsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUg1QixZQUFPLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDeEMsZUFBVSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLCtDQUErQyxDQUFDO1FBQ3BGLGNBQVMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxpQkFBaUIsQ0FBQztJQUNyQixDQUFDO0lBR3pDLE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFtQixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUMxRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNmLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsR0FBRyxDQUFDLFdBQTJCO1FBQzdCLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCwyQkFBMkI7SUFDM0Isd0VBQXdFO0lBQ3hFLHdGQUF3RjtJQUN4RiwwQkFBMEI7SUFDMUIsaUJBQWlCO0lBQ2pCLHlCQUF5QjtJQUN6QixrQkFBa0I7SUFDbEIseUNBQXlDO0lBQ3pDLDBDQUEwQztJQUMxQyxZQUFZO0lBQ1osV0FBVztJQUNYLFNBQVM7SUFDVCxPQUFPO0lBQ1AsSUFBSTtJQUVJLG1CQUFtQixDQUFDLElBQVM7UUFDbkMsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLGFBQWE7WUFDaEMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksY0FBYztZQUNuQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPO1lBQ2hDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxzREFBc0Q7WUFDdkUsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLGlDQUFpQztTQUNsQyxDQUFDO0lBQ0osQ0FBQzsrR0E3Q1Usd0JBQXdCO21IQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBBcHBsaWNhdGlvbiwgQVhQQXBwbGljYXRpb25Mb2FkZXIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQX1JPT1RfQ09ORklHX1RPS0VOIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWE1PaWRjQXBwbGljYXRpb25Mb2FkZXIgaW1wbGVtZW50cyBBWFBBcHBsaWNhdGlvbkxvYWRlciB7XG4gIHByaXZhdGUgY29uZmlncyA9IGluamVjdChBWFBfUk9PVF9DT05GSUdfVE9LRU4pO1xuICBwcml2YXRlIGFwaUdldEFwcHMgPSBgJHt0aGlzLmNvbmZpZ3MuYmFzZVVybH0vYXBwbGljYXRpb25zL2FwcGxpY2F0aW9ucy1mb3ItY3VycmVudC10ZW5hbnRgO1xuICBwcml2YXRlIGFwaVNldEFwcCA9IGAke3RoaXMuY29uZmlncy5iYXNlVXJsfS9TZXRBcHBsaWNhdGlvbmA7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkgeyB9XG5cblxuICBnZXRMaXN0KCk6IE9ic2VydmFibGU8QVhQQXBwbGljYXRpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PHsgaXRlbXM6IGFueVtdIH0+KHRoaXMuYXBpR2V0QXBwcykucGlwZShcbiAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLml0ZW1zLm1hcCgoaXRlbSkgPT4gdGhpcy5tYXBUb0FYUEFwcGxpY2F0aW9uKGl0ZW0pKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNldChhcHBsaWNhdGlvbjogQVhQQXBwbGljYXRpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICAvLyAvL1RPRE86IHNob3VkIGJlIHJlbW92ZWRcbiAgLy8gc2V0KGFwcGxpY2F0aW9uOiBBWFBBcHBsaWNhdGlvbik6IE9ic2VydmFibGU8QVhQUmVmcmVzaFRva2VuUmVzdWx0PiB7XG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odGhpcy5hcGlTZXRBcHAsIHsgYXBwbGljYXRpb25JZDogYXBwbGljYXRpb24uaWQgfSkucGlwZShcbiAgLy8gICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgLy8gICAgICAgcmV0dXJuIHtcbiAgLy8gICAgICAgICBzdWNjZWVkOiB0cnVlLFxuICAvLyAgICAgICAgIGRhdGE6IHtcbiAgLy8gICAgICAgICAgIGFjY2Vzc1Rva2VuOiByZXNwb25zZS50b2tlbixcbiAgLy8gICAgICAgICAgIHJlZnJlc2hUb2tlbjogcmVzcG9uc2UudG9rZW4sXG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9O1xuICAvLyAgICAgfSlcbiAgLy8gICApO1xuICAvLyB9XG5cbiAgcHJpdmF0ZSBtYXBUb0FYUEFwcGxpY2F0aW9uKGl0ZW06IGFueSk6IEFYUEFwcGxpY2F0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICBuYW1lOiBpdGVtLm5hbWUgfHwgJ2RlZmF1bHROYW1lJyxcbiAgICAgIHRpdGxlOiBpdGVtLnRpdGxlIHx8ICdkZWZhdWx0VGl0bGUnLFxuICAgICAgdmVyc2lvbjogaXRlbS52ZXJzaW9uIHx8ICcxLjAuMCcsXG4gICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgIGxvZ286IGl0ZW0ubG9nbywgLy8gQXNzdW1pbmcgbG9nbyBpcyBvZiB0eXBlIEFYUExvZ29Db25maWcgb3IgdW5kZWZpbmVkXG4gICAgICBlZGl0aW9uTmFtZTogaXRlbS5lZGl0aW9uTmFtZSxcbiAgICAgIC8vIGZlYXR1cmVzOiBpdGVtLmZlYXR1cmVzIHx8IFtdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==","import { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, filter, of, switchMap, take, tap } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nexport class AXMConfigurationService {\n constructor(http) {\n this.http = http;\n this.configs = inject(AXP_ROOT_CONFIG_TOKEN);\n this.applicationConfig = null;\n this.apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\n this.fetchInProgress = false;\n this.configSubject = new BehaviorSubject(null);\n this.init().subscribe(); // Automatically trigger configuration load on service instantiation\n }\n init() {\n if (!this.fetchInProgress) {\n this.fetchInProgress = true;\n return this.http.get(this.apiGetConfig).pipe(tap((response) => {\n this.applicationConfig = response;\n this.configSubject.next(this.applicationConfig);\n this.fetchInProgress = false;\n }));\n }\n else {\n // Adjusted approach to handle TypeScript's type safety requirements\n return this.configSubject.asObservable().pipe(filter((config) => config !== null), take(1) // Ensures it completes after emitting the first non-null value\n );\n }\n }\n getConfig() {\n if (this.applicationConfig) {\n // If the config is already loaded, return it immediately\n return of(this.applicationConfig);\n }\n else {\n // If the config is not loaded, initiate loading\n return this.configSubject.asObservable().pipe(filter((config) => config !== null), take(1), // Ensure it only emits the first non-null value and completes\n switchMap(() => of(this.applicationConfig)));\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMConfigurationService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMConfigurationService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMConfigurationService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.HttpClient }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb25uZWN0aXZpdHkvYXBpL3NyYy9saWIvYXV0aC9vaWRjL2NvbmZpZ3VyYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUE2RHJGLE1BQU0sT0FBTyx1QkFBdUI7SUFPbEMsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQU41QixZQUFPLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDeEMsc0JBQWlCLEdBQW9DLElBQUksQ0FBQztRQUMxRCxpQkFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLGdDQUFnQyxDQUFDO1FBQ3ZFLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGtCQUFhLEdBQXFELElBQUksZUFBZSxDQUFrQyxJQUFJLENBQUMsQ0FBQztRQUduSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxvRUFBb0U7SUFDL0YsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQTJCLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQ3BFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixvRUFBb0U7WUFDcEUsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FDM0MsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFzQyxFQUFFLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxFQUN2RSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsK0RBQStEO2FBQ3hFLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLHlEQUF5RDtZQUN6RCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNOLGdEQUFnRDtZQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUMzQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsRUFDbkMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLDhEQUE4RDtZQUN2RSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBa0IsQ0FBQyxDQUFDLENBQzdDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzsrR0ExQ1UsdUJBQXVCO21IQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYTV9BVVRIX0NPTkZJR19UT0tFTiB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy9hdXRoJztcbmltcG9ydCB7IEFYUF9ST09UX0NPTkZJR19UT0tFTiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZmlsdGVyLCBvZiwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBMb2NhbGl6YXRpb24ge1xuICB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+O1xuICByZXNvdXJjZXM6IFJlY29yZDxzdHJpbmcsIFJlc291cmNlPjtcbiAgbGFuZ3VhZ2VzOiBMYW5ndWFnZVtdO1xuICBjdXJyZW50Q3VsdHVyZTogQ3VsdHVyZTtcbiAgZGVmYXVsdFJlc291cmNlTmFtZTogc3RyaW5nO1xuICBsYW5ndWFnZXNNYXA6IFJlY29yZDxzdHJpbmcsIE5hbWVWYWx1ZVtdPjtcbiAgbGFuZ3VhZ2VGaWxlc01hcDogUmVjb3JkPHN0cmluZywgTmFtZVZhbHVlW10+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlIHtcbiAgdGV4dHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGJhc2VSZXNvdXJjZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhbmd1YWdlIHtcbiAgY3VsdHVyZU5hbWU6IHN0cmluZztcbiAgdWlDdWx0dXJlTmFtZTogc3RyaW5nO1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICB0d29MZXR0ZXJJU09MYW5ndWFnZU5hbWU6IHN0cmluZztcbiAgZmxhZ0ljb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdWx0dXJlIHtcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgLy8gLi4uIG90aGVyIHByb3BlcnRpZXNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOYW1lVmFsdWUge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8vIFJlcGVhdCBzaW1pbGFyIHBhdHRlcm5zIGZvciAnYXV0aCcsICdzZXR0aW5nJywgJ2N1cnJlbnRVc2VyJywgZXRjLlxuZXhwb3J0IGludGVyZmFjZSBBdXRoIHtcbiAgZ3JhbnRlZFBvbGljaWVzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbn1cblxuLy8gTWFpbiBjb25maWd1cmF0aW9uIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb24ge1xuICBsb2NhbGl6YXRpb246IExvY2FsaXphdGlvbjtcbiAgYXV0aDogQXV0aDtcbiAgc2V0dGluZzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgY3VycmVudFVzZXI6IGFueTtcbiAgZmVhdHVyZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGdsb2JhbEZlYXR1cmVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBtdWx0aVRlbmFuY3k6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGN1cnJlbnRDdWx0dXJlOiBDdWx0dXJlO1xuICB0aW1pbmc6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGNsb2NrOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBvYmplY3RFeHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBleHRyYVByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgLy8gLi4uIG90aGVyIHByb3BlcnRpZXNcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYTUNvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb25maWdzID0gaW5qZWN0KEFYUF9ST09UX0NPTkZJR19UT0tFTik7XG4gIHByaXZhdGUgYXBwbGljYXRpb25Db25maWc6IEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGFwaUdldENvbmZpZyA9IGAke3RoaXMuY29uZmlncy5iYXNlVXJsfS9hYnAvYXBwbGljYXRpb24tY29uZmlndXJhdGlvbmA7XG4gIHByaXZhdGUgZmV0Y2hJblByb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgY29uZmlnU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbiB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb24gfCBudWxsPihudWxsKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICB0aGlzLmluaXQoKS5zdWJzY3JpYmUoKTsgLy8gQXV0b21hdGljYWxseSB0cmlnZ2VyIGNvbmZpZ3VyYXRpb24gbG9hZCBvbiBzZXJ2aWNlIGluc3RhbnRpYXRpb25cbiAgfVxuXG4gIHB1YmxpYyBpbml0KCk6IE9ic2VydmFibGU8QXBwbGljYXRpb25Db25maWd1cmF0aW9uPiB7XG4gICAgaWYgKCF0aGlzLmZldGNoSW5Qcm9ncmVzcykge1xuICAgICAgdGhpcy5mZXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBwbGljYXRpb25Db25maWd1cmF0aW9uPih0aGlzLmFwaUdldENvbmZpZykucGlwZShcbiAgICAgICAgdGFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuYXBwbGljYXRpb25Db25maWcgPSByZXNwb25zZTtcbiAgICAgICAgICB0aGlzLmNvbmZpZ1N1YmplY3QubmV4dCh0aGlzLmFwcGxpY2F0aW9uQ29uZmlnKTtcbiAgICAgICAgICB0aGlzLmZldGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQWRqdXN0ZWQgYXBwcm9hY2ggdG8gaGFuZGxlIFR5cGVTY3JpcHQncyB0eXBlIHNhZmV0eSByZXF1aXJlbWVudHNcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgICAgZmlsdGVyKChjb25maWcpOiBjb25maWcgaXMgQXBwbGljYXRpb25Db25maWd1cmF0aW9uID0+IGNvbmZpZyAhPT0gbnVsbCksXG4gICAgICAgIHRha2UoMSkgLy8gRW5zdXJlcyBpdCBjb21wbGV0ZXMgYWZ0ZXIgZW1pdHRpbmcgdGhlIGZpcnN0IG5vbi1udWxsIHZhbHVlXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbmZpZygpOiBPYnNlcnZhYmxlPEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbj4ge1xuICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uQ29uZmlnKSB7XG4gICAgICAvLyBJZiB0aGUgY29uZmlnIGlzIGFscmVhZHkgbG9hZGVkLCByZXR1cm4gaXQgaW1tZWRpYXRlbHlcbiAgICAgIHJldHVybiBvZih0aGlzLmFwcGxpY2F0aW9uQ29uZmlnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgdGhlIGNvbmZpZyBpcyBub3QgbG9hZGVkLCBpbml0aWF0ZSBsb2FkaW5nXG4gICAgICByZXR1cm4gdGhpcy5jb25maWdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgIGZpbHRlcigoY29uZmlnKSA9PiBjb25maWcgIT09IG51bGwpLFxuICAgICAgICB0YWtlKDEpLCAvLyBFbnN1cmUgaXQgb25seSBlbWl0cyB0aGUgZmlyc3Qgbm9uLW51bGwgdmFsdWUgYW5kIGNvbXBsZXRlc1xuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gb2YodGhpcy5hcHBsaWNhdGlvbkNvbmZpZyEpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { delay, of } from 'rxjs';\nexport class AXMOidcFeatureLoader {\n constructor() {\n this.list = [\n {\n name: 'axp-entity-list-custom-view',\n title: 'Custom View',\n value: false\n },\n {\n name: 'axp-entity-list-quick-search',\n title: 'Custom View',\n value: false\n }\n ];\n }\n getList() {\n return of(this.list).pipe(delay(0));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nvbm5lY3Rpdml0eS9hcGkvc3JjL2xpYi9hdXRoL29pZGMvZmVhdHVyZS5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFjLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0MsTUFBTSxPQUFPLG9CQUFvQjtJQUFqQztRQUVVLFNBQUksR0FBaUI7WUFDM0I7Z0JBQ0UsSUFBSSxFQUFFLDZCQUE2QjtnQkFDbkMsS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLEtBQUssRUFBRSxLQUFLO2FBQ2I7WUFDRDtnQkFDRSxJQUFJLEVBQUUsOEJBQThCO2dCQUNwQyxLQUFLLEVBQUUsYUFBYTtnQkFDcEIsS0FBSyxFQUFFLEtBQUs7YUFDYjtTQUNGLENBQUE7SUFLSCxDQUFDO0lBSEMsT0FBTztRQUNMLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQRmVhdHVyZSwgQVhQRmVhdHVyZUxvYWRlciB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkZWxheSwgb2YgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIEFYTU9pZGNGZWF0dXJlTG9hZGVyIGltcGxlbWVudHMgQVhQRmVhdHVyZUxvYWRlciB7XG5cbiAgcHJpdmF0ZSBsaXN0OiBBWFBGZWF0dXJlW10gPSBbXG4gICAge1xuICAgICAgbmFtZTogJ2F4cC1lbnRpdHktbGlzdC1jdXN0b20tdmlldycsXG4gICAgICB0aXRsZTogJ0N1c3RvbSBWaWV3JyxcbiAgICAgIHZhbHVlOiBmYWxzZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2F4cC1lbnRpdHktbGlzdC1xdWljay1zZWFyY2gnLFxuICAgICAgdGl0bGU6ICdDdXN0b20gVmlldycsXG4gICAgICB2YWx1ZTogZmFsc2VcbiAgICB9XG4gIF1cblxuICBnZXRMaXN0KCk6IE9ic2VydmFibGU8QVhQRmVhdHVyZVtdPiB7XG4gICAgcmV0dXJuIG9mKHRoaXMubGlzdCkucGlwZShkZWxheSgwKSk7XG4gIH1cbn1cbiJdfQ==","import { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport { AXPAuthStrategy, AXPSessionService, JwtUtil, PkceUtil, TimeUtil, } from '@acorex/platform/auth';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { firstValueFrom } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n//#endregion\nexport class AXCAPIOidcStrategy extends AXPAuthStrategy {\n constructor() {\n super(...arguments);\n this.aXMAuthConfigs = inject(AXM_AUTH_CONFIG_TOKEN);\n this.oauthService = inject(OAuthService);\n this.http = inject(HttpClient);\n this.sessionService = inject(AXPSessionService);\n this.router = inject(Router);\n }\n async configureOAuth() {\n if (this.openidConfigurationInfo)\n return;\n // Validation: اطمینان از وجود authConfig\n if (!this.aXMAuthConfigs.authConfig) {\n throw new Error('authConfig is missing. Please check your environment configuration.');\n }\n this.oauthService.configure(this.aXMAuthConfigs.authConfig);\n this.oauthService.setStorage(localStorage);\n this.openidConfigurationInfo = await this.oauthService.loadDiscoveryDocument();\n if (!this.openidConfigurationInfo) {\n throw new Error('openidConfigurationInfo is missing');\n }\n this.oauthService.events.subscribe(async (event) => {\n // console.log('event', event);\n // if (event.type === 'token_received') {\n // console.log('Token has been refreshed');\n // }\n // if (event.type === 'token_expires') {\n // console.log('Token is about to expire. Triggering silent refresh...');\n // }\n });\n const oidcJson = localStorage.getItem(AXPSessionService.SESSION_KEY);\n if (oidcJson) {\n const authData = JSON.parse(oidcJson);\n if (authData) {\n this.sessionService.setSession(authData);\n if (authData.expiresIn && new Date(authData.expiresIn) < new Date()) {\n if (authData.expiresIn) {\n this.sessionService.refreshToken();\n }\n else {\n this.signout();\n }\n }\n }\n }\n }\n async signin(credentials) {\n // If OIDC with username/password\n if (credentials.strategy === 'oidc' && credentials.username && credentials.password) {\n await this.handleOidcPasswordSignin(credentials);\n await new Promise(() => { }); // Keeps the promise pending until another flow (e.g., OAuth callback) completes\n }\n throw new Error(`Authentication method or credentials not supported: ${credentials.strategy}`);\n }\n async handleOidcPasswordSignin(credentials) {\n await this.configureOAuth();\n // Validation: اطمینان از وجود baseUrl\n if (!this.aXMAuthConfigs.baseUrl) {\n throw new Error('baseUrl is missing. Please check your environment configuration.');\n }\n // استفاده از baseUrl از configuration\n const baseUrl = this.aXMAuthConfigs.baseUrl;\n const loginRes = await fetch(baseUrl + '/auth/manual-login', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ username: credentials.username, password: credentials.password }),\n credentials: 'include',\n });\n if (!loginRes.ok) {\n let errorText = 'Login failed';\n try {\n const errorJson = await loginRes.json();\n if (errorJson && errorJson.error && errorJson.error.description) {\n errorText = errorJson.error.description;\n }\n }\n catch {\n try {\n const text = await loginRes.text();\n if (text) {\n errorText = text;\n }\n }\n catch { }\n }\n throw new Error(errorText);\n }\n // Check if response is JSON or text\n const contentType = loginRes.headers.get('content-type');\n let result;\n if (contentType && contentType.includes('application/json')) {\n result = await loginRes.json();\n }\n else {\n // Handle text response (like \"Login successful\")\n const responseText = await loginRes.text();\n console.log('Server response:', responseText);\n }\n await this.updateToken({});\n }\n async updateToken(params) {\n try {\n // Ensure OAuth is configured first\n if (!this.openidConfigurationInfo) {\n await this.configureOAuth();\n }\n // Validation: اطمینان از وجود authConfig\n if (!this.aXMAuthConfigs.authConfig) {\n throw new Error('authConfig is missing. Please check your environment configuration.');\n }\n // get Token Code\n if (params['code']) {\n // If params contains 'code', exchange it for tokens using the OpenIddict token endpoint\n const code = params['code'];\n const redirectUri = params['redirectUri'] || this.aXMAuthConfigs.authConfig.redirectUri;\n const clientId = params['clientId'] || this.aXMAuthConfigs.authConfig.clientId;\n const tokenEndpoint = params['tokenEndpoint'] ||\n this.openidConfigurationInfo?.info?.discoveryDocument?.token_endpoint ||\n `${this.aXMAuthConfigs?.baseUrl}/connect/token`;\n // Get code_verifier from localStorage (PKCE)\n const codeVerifier = localStorage.getItem('pkce_code_verifier');\n localStorage.removeItem('pkce_code_verifier');\n if (!codeVerifier) {\n throw new Error('Code verifier not found. Please try signing in again.');\n }\n // Prepare body for token request\n const body = new URLSearchParams({\n grant_type: 'authorization_code',\n client_id: clientId,\n code_verifier: codeVerifier,\n code: code,\n redirect_uri: redirectUri,\n });\n // Call the token endpoint (OpenIddict)\n const response = await fetch(tokenEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: body.toString(),\n });\n if (!response.ok) {\n throw new Error(`Token exchange failed: ${response.status} ${response.statusText}`);\n }\n const tokenData = await response.json();\n if (!tokenData) {\n throw new Error('Token data not found');\n }\n const payload = JwtUtil.parseJwt(tokenData.id_token);\n if (!payload) {\n throw new Error('Payload not found');\n }\n const user = {\n id: payload['sub'] || payload['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier'] || '',\n title: payload['name'] || payload['email'] || '',\n name: payload['name'] || payload['email'] || '',\n avatar: payload['picture'] || '',\n };\n const tenant = payload['tenantid'] || payload['tenant']\n ? {\n id: payload['tenantid'] || payload['tenant'] || '',\n name: payload['tenantname'] || '',\n title: payload['tenanttitle'] || '',\n }\n : undefined;\n const application = payload['applicationid'] || payload['application']\n ? {\n id: payload['applicationid'] || payload['application'] || '',\n name: payload['applicationname'] || '',\n title: payload['applicationtitle'] || '',\n }\n : undefined;\n console.log('payload', payload);\n return {\n succeed: true,\n data: {\n accessToken: tokenData.access_token,\n refreshToken: tokenData.refresh_token,\n idToken: tokenData.id_token,\n expiresIn: TimeUtil.calculateExpireInDate(tokenData.expires_in || 0),\n user,\n tenant,\n application,\n },\n };\n }\n // get Authorizeation Code\n else {\n // Validation: اطمینان از وجود authConfig\n if (!this.aXMAuthConfigs.authConfig) {\n throw new Error('authConfig is missing. Please check your environment configuration.');\n }\n // Extract parameters\n // Support both direct id fields and nested tenant/application objects\n const tenantId = params['tenantId'] ?? params['tenant']?.id ?? null;\n const applicationId = params['applicationId'] ?? params['application']?.id ?? null;\n const redirectUri = params['redirectUri'] || this.aXMAuthConfigs.authConfig.redirectUri;\n const scope = params['scope'] || this.aXMAuthConfigs.authConfig.scope;\n // Generate PKCE code verifier and challenge\n const codeVerifier = PkceUtil.generateRandomString(128);\n localStorage.setItem('pkce_code_verifier', codeVerifier);\n const codeChallenge = await PkceUtil.generateCodeChallenge(codeVerifier);\n // Build authorization URL\n const authorizeEndpoint = this.openidConfigurationInfo.info.discoveryDocument.authorization_endpoint;\n const clientId = this.aXMAuthConfigs.authConfig.clientId;\n const responseType = 'code';\n const state = Math.random().toString(36).substring(2);\n const queryParams = [\n `response_type=${encodeURIComponent(responseType)}`,\n `client_id=${encodeURIComponent(clientId)}`,\n `redirect_uri=${encodeURIComponent(redirectUri)}`,\n `scope=${encodeURIComponent(scope)}`,\n `state=${encodeURIComponent(state)}`,\n tenantId ? `tenant_id=${encodeURIComponent(tenantId)}` : null,\n applicationId ? `application_id=${encodeURIComponent(applicationId)}` : null,\n `code_challenge=${encodeURIComponent(codeChallenge)}`,\n `code_challenge_method=S256`,\n ]\n .filter(Boolean)\n .join('&');\n const authorizeUrl = `${authorizeEndpoint}?${queryParams}`;\n window.location.href = authorizeUrl;\n // Prevent further execution by waiting on a never-resolving Promise after redirect\n await new Promise(() => { });\n }\n }\n catch (error) {\n this.handleError(error);\n }\n }\n async signout() {\n localStorage.removeItem('pkce_code_verifier');\n localStorage.removeItem('oauth_provider');\n console.log(this.openidConfigurationInfo?.info?.discoveryDocument);\n // Use configured logoutUrl or derive from baseUrl\n const logoutUrl = this.aXMAuthConfigs.logoutUrl || `connect/logout`;\n window.location.href = logoutUrl;\n }\n async refreshToken(context) {\n try {\n await this.configureOAuth();\n if (!this.aXMAuthConfigs.authConfig || !this.aXMAuthConfigs.authConfig.clientId) {\n throw new Error('authConfig or clientId is missing');\n }\n const authData = this.loadAuthData();\n if (!authData) {\n return { succeed: false };\n }\n const refreshToken = authData.refreshToken;\n if (!refreshToken) {\n return { succeed: false };\n }\n const body = new HttpParams()\n .set('grant_type', 'refresh_token')\n .set('client_id', this.aXMAuthConfigs.authConfig.clientId)\n .set('refresh_token', refreshToken);\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n const response = await firstValueFrom(this.http.post(this.openidConfigurationInfo.info.discoveryDocument.token_endpoint, body.toString(), { headers }));\n // Extract user, tenant, and application from id_token\n const payload = JwtUtil.parseJwt(response.id_token);\n const user = {\n id: payload['sub'] || payload['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier'] || '',\n title: payload['name'] || payload['email'] || '',\n name: payload['name'] || payload['email'] || '',\n avatar: payload['picture'] || '',\n };\n const tenant = payload['tenantid'] || payload['tenant']\n ? {\n id: payload['tenantid'] || payload['tenant'] || '',\n name: payload['tenantname'] || '',\n title: payload['tenanttitle'] || '',\n }\n : undefined;\n const application = payload['applicationid'] || payload['application']\n ? {\n id: payload['applicationid'] || payload['application'] || '',\n name: payload['applicationname'] || '',\n title: payload['applicationtitle'] || '',\n }\n : undefined;\n const sessionData = {\n accessToken: response.access_token,\n refreshToken: response.refresh_token,\n idToken: response.id_token,\n strategy: 'oidc',\n expiresIn: TimeUtil.calculateExpireInDate(response.expires_in ?? 0),\n user,\n tenant,\n application,\n };\n // this.setServiceProps(sessionData);\n return {\n succeed: true,\n data: {\n ...sessionData,\n user: sessionData.user, // Ensure user is not undefined\n },\n };\n }\n catch (error) {\n console.error('Error refreshing token', error);\n return { succeed: false };\n }\n }\n loadAuthData() {\n const sessionData = this.sessionService.getSessionData();\n return sessionData || undefined;\n }\n async loadUserInfo() {\n return this.oauthService.loadUserProfile();\n }\n handleError(error) {\n console.error('Authentication error:', error);\n throw error;\n }\n //#region getter\n get name() {\n return 'oidc';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCAPIOidcStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCAPIOidcStrategy }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCAPIOidcStrategy, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2lkYy5zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L2FwaS9zcmMvbGliL2F1dGgvb2lkYy9vaWRjLnN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQ0wsZUFBZSxFQUlmLGlCQUFpQixFQUdqQixPQUFPLEVBQ1AsUUFBUSxFQUNSLFFBQVEsR0FDVCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQWMsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFdEMsWUFBWTtBQUdaLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxlQUFlO0lBRHZEOztRQUVVLG1CQUFjLEdBQW1CLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9ELGlCQUFZLEdBQWlCLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRCxTQUFJLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLG1CQUFjLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlELFdBQU0sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7S0EyV3pDO0lBdldRLEtBQUssQ0FBQyxjQUFjO1FBQ3pCLElBQUksSUFBSSxDQUFDLHVCQUF1QjtZQUFFLE9BQU87UUFFekMseUNBQXlDO1FBQ3pDLElBQUks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QUFDO2dCQUNuRSxJQUFJO2dCQUNKLE1BQU07Z0JBQ04sV0FBVzthQUNaLENBQUM7WUFFRixxQ0FBcUM7WUFFckMsT0FBTztnQkFDTCxPQUFPLEVBQUUsSUFBSTtnQkFDYixJQUFJLEVBQUU7b0JBQ0osR0FBRyxXQUFXO29CQUNkLElBQUksRUFBRSxXQUFXLENBQUMsSUFBZSxFQUFFLCtCQUErQjtpQkFDbkU7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDekQsT0FBTyxXQUFXLElBQUksU0FBUyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWTtRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFVO1FBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUMsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLElBQUksSUFBSTtRQUNOLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7K0dBOVdVLGtCQUFrQjttSEFBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhNQXV0aENvbmZpZ3MsIEFYTV9BVVRIX0NPTkZJR19UT0tFTiB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy9hdXRoJztcbmltcG9ydCB7XG4gIEFYUEF1dGhTdHJhdGVneSxcbiAgQVhQQmFzZUNyZWRlbnRpYWxzLFxuICBBWFBTZXNzaW9uQ29udGV4dCxcbiAgQVhQU2Vzc2lvbkRhdGEsXG4gIEFYUFNlc3Npb25TZXJ2aWNlLFxuICBBWFBTaWduSW5SZXN1bHQsXG4gIEFYUFVzZXIsXG4gIEp3dFV0aWwsXG4gIFBrY2VVdGlsLFxuICBUaW1lVXRpbCxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXV0aENvbmZpZywgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG4vLyNlbmRyZWdpb25cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYQ0FQSU9pZGNTdHJhdGVneSBleHRlbmRzIEFYUEF1dGhTdHJhdGVneSB7XG4gIHByaXZhdGUgYVhNQXV0aENvbmZpZ3M6IEFYTUF1dGhDb25maWdzID0gaW5qZWN0KEFYTV9BVVRIX0NPTkZJR19UT0tFTik7XG4gIHByaXZhdGUgb2F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UgPSBpbmplY3QoT0F1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlOiBBWFBTZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG4gIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHVibGljIHVzZXJJbmZvOiBhbnk7IFxuICBwdWJsaWMgb3BlbmlkQ29uZmlndXJhdGlvbkluZm86IGFueTsgLy8gY2xhcmlmeSB0aGUgdHlwZSBpZiBwb3NzaWJsZVxuXG4gIHB1YmxpYyBhc3luYyBjb25maWd1cmVPQXV0aCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5vcGVuaWRDb25maWd1cmF0aW9uSW5mbykgcmV0dXJuOyBcblxuICAgIC8vIFZhbGlkYXRpb246INin2LfZhduM2YbYp9mGINin2LIg2YjYrNmI2K8gYXV0aENvbmZpZ1xuICAgIGlmICghdGhpcy5hWE1BdXRoQ29uZmlncy5hdXRoQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F1dGhDb25maWcgaXMgbWlzc2luZy4gUGxlYXNlIGNoZWNrIHlvdXIgZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbi4nKTtcbiAgICB9XG5cbiAgICB0aGlzLm9hdXRoU2VydmljZS5jb25maWd1cmUodGhpcy5hWE1BdXRoQ29uZmlncy5hdXRoQ29uZmlnKTtcbiAgICB0aGlzLm9hdXRoU2VydmljZS5zZXRTdG9yYWdlKGxvY2FsU3RvcmFnZSk7XG5cbiAgICB0aGlzLm9wZW5pZENvbmZpZ3VyYXRpb25JbmZvID0gYXdhaXQgdGhpcy5vYXV0aFNlcnZpY2UubG9hZERpc2NvdmVyeURvY3VtZW50KCk7XG5cbiAgICBpZiAoIXRoaXMub3BlbmlkQ29uZmlndXJhdGlvbkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3BlbmlkQ29uZmlndXJhdGlvbkluZm8gaXMgbWlzc2luZycpO1xuICAgIH1cblxuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmV2ZW50cy5zdWJzY3JpYmUoYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgICAvLyBjb25zb2xlLmxvZygnZXZlbnQnLCBldmVudCk7XG4gICAgICAvLyBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rva2VuX3JlY2VpdmVkJykge1xuICAgICAgLy8gICBjb25zb2xlLmxvZygnVG9rZW4gaGFzIGJlZW4gcmVmcmVzaGVkJyk7XG4gICAgICAvLyB9XG4gICAgICAvLyBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rva2VuX2V4cGlyZXMnKSB7XG4gICAgICAvLyAgIGNvbnNvbGUubG9nKCdUb2tlbiBpcyBhYm91dCB0byBleHBpcmUuIFRyaWdnZXJpbmcgc2lsZW50IHJlZnJlc2guLi4nKTtcbiAgICAgIC8vIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IG9pZGNKc29uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oQVhQU2Vzc2lvblNlcnZpY2UuU0VTU0lPTl9LRVkpO1xuXG4gICAgaWYgKG9pZGNKc29uKSB7XG4gICAgICBjb25zdCBhdXRoRGF0YSA9IEpTT04ucGFyc2Uob2lkY0pzb24pIGFzIEFYUFNlc3Npb25EYXRhO1xuICAgICAgaWYgKGF1dGhEYXRhKSB7XG4gICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0U2Vzc2lvbihhdXRoRGF0YSk7XG5cbiAgICAgICAgaWYgKGF1dGhEYXRhLmV4cGlyZXNJbiAmJiBuZXcgRGF0ZShhdXRoRGF0YS5leHBpcmVzSW4pIDwgbmV3IERhdGUoKSkge1xuICAgICAgICAgIGlmIChhdXRoRGF0YS5leHBpcmVzSW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2UucmVmcmVzaFRva2VuKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2lnbm91dCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNpZ25pbihjcmVkZW50aWFsczogQVhQQmFzZUNyZWRlbnRpYWxzKTogUHJvbWlzZTxBWFBTaWduSW5SZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAvLyBJZiBPSURDIHdpdGggdXNlcm5hbWUvcGFzc3dvcmRcbiAgICBpZiAoY3JlZGVudGlhbHMuc3RyYXRlZ3kgPT09ICdvaWRjJyAmJiAoY3JlZGVudGlhbHMgYXMgYW55KS51c2VybmFtZSAmJiAoY3JlZGVudGlhbHMgYXMgYW55KS5wYXNzd29yZCkge1xuICAgICAgYXdhaXQgdGhpcy5oYW5kbGVPaWRjUGFzc3dvcmRTaWduaW4oY3JlZGVudGlhbHMgYXMgQVhQVXNlclBhc3NDcmVkZW50aWFscyk7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgoKSA9PiB7fSk7IC8vIEtlZXBzIHRoZSBwcm9taXNlIHBlbmRpbmcgdW50aWwgYW5vdGhlciBmbG93IChlLmcuLCBPQXV0aCBjYWxsYmFjaykgY29tcGxldGVzXG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQXV0aGVudGljYXRpb24gbWV0aG9kIG9yIGNyZWRlbnRpYWxzIG5vdCBzdXBwb3J0ZWQ6ICR7Y3JlZGVudGlhbHMuc3RyYXRlZ3l9YCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZU9pZGNQYXNzd29yZFNpZ25pbihjcmVkZW50aWFsczogQVhQVXNlclBhc3NDcmVkZW50aWFscyk6IFByb21pc2U8dW5kZWZpbmVkPiB7XG4gICAgYXdhaXQgdGhpcy5jb25maWd1cmVPQXV0aCgpO1xuICAgIFxuICAgIC8vIFZhbGlkYXRpb246INin2LfZhduM2YbYp9mGINin2LIg2YjYrNmI2K8gYmFzZVVybFxuICAgIGlmICghdGhpcy5hWE1BdXRoQ29uZmlncy5iYXNlVXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jhc2VVcmwgaXMgbWlzc2luZy4gUGxlYXNlIGNoZWNrIHlvdXIgZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbi4nKTtcbiAgICB9XG4gICAgXG4gICAgLy8g2KfYs9iq2YHYp9iv2Ycg2KfYsiBiYXNlVXJsINin2LIgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmFYTUF1dGhDb25maWdzLmJhc2VVcmw7XG4gICAgY29uc3QgbG9naW5SZXMgPSBhd2FpdCBmZXRjaChiYXNlVXJsICsgJy9hdXRoL21hbnVhbC1sb2dpbicsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHVzZXJuYW1lOiBjcmVkZW50aWFscy51c2VybmFtZSwgcGFzc3dvcmQ6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0pLFxuICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyxcbiAgICB9KTtcbiAgICBpZiAoIWxvZ2luUmVzLm9rKSB7XG4gICAgICBsZXQgZXJyb3JUZXh0ID0gJ0xvZ2luIGZhaWxlZCc7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBlcnJvckpzb24gPSBhd2FpdCBsb2dpblJlcy5qc29uKCk7XG4gICAgICAgIGlmIChlcnJvckpzb24gJiYgZXJyb3JKc29uLmVycm9yICYmIGVycm9ySnNvbi5lcnJvci5kZXNjcmlwdGlvbikge1xuICAgICAgICAgIGVycm9yVGV4dCA9IGVycm9ySnNvbi5lcnJvci5kZXNjcmlwdGlvbjtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGxvZ2luUmVzLnRleHQoKTtcbiAgICAgICAgICBpZiAodGV4dCkge1xuICAgICAgICAgICAgZXJyb3JUZXh0ID0gdGV4dDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge31cbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvclRleHQpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHJlc3BvbnNlIGlzIEpTT04gb3IgdGV4dFxuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gbG9naW5SZXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpO1xuICAgIGxldCByZXN1bHQ7XG5cbiAgICBpZiAoY29udGVudFR5cGUgJiYgY29udGVudFR5cGUuaW5jbHVkZXMoJ2FwcGxpY2F0aW9uL2pzb24nKSkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgbG9naW5SZXMuanNvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIYW5kbGUgdGV4dCByZXNwb25zZSAobGlrZSBcIkxvZ2luIHN1Y2Nlc3NmdWxcIilcbiAgICAgIGNvbnN0IHJlc3BvbnNlVGV4dCA9IGF3YWl0IGxvZ2luUmVzLnRleHQoKTtcbiAgICAgIGNvbnNvbGUubG9nKCdTZXJ2ZXIgcmVzcG9uc2U6JywgcmVzcG9uc2VUZXh0KTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVRva2VuKHt9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHVwZGF0ZVRva2VuKHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IFByb21pc2U8QVhQU2lnbkluUmVzdWx0IHwgdm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBFbnN1cmUgT0F1dGggaXMgY29uZmlndXJlZCBmaXJzdFxuICAgICAgaWYgKCF0aGlzLm9wZW5pZENvbmZpZ3VyYXRpb25JbmZvKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY29uZmlndXJlT0F1dGgoKTtcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGlvbjog2KfYt9mF24zZhtin2YYg2KfYsiDZiNis2YjYryBhdXRoQ29uZmlnXG4gICAgICBpZiAoIXRoaXMuYVhNQXV0aENvbmZpZ3MuYXV0aENvbmZpZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F1dGhDb25maWcgaXMgbWlzc2luZy4gUGxlYXNlIGNoZWNrIHlvdXIgZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbi4nKTtcbiAgICAgIH1cbiAgICAgIC8vIGdldCBUb2tlbiBDb2RlXG4gICAgICBpZiAocGFyYW1zWydjb2RlJ10pIHtcbiAgICAgICAgXG4gICAgICAgIC8vIElmIHBhcmFtcyBjb250YWlucyAnY29kZScsIGV4Y2hhbmdlIGl0IGZvciB0b2tlbnMgdXNpbmcgdGhlIE9wZW5JZGRpY3QgdG9rZW4gZW5kcG9pbnRcbiAgICAgICAgY29uc3QgY29kZSA9IHBhcmFtc1snY29kZSddO1xuICAgICAgICBjb25zdCByZWRpcmVjdFVyaSA9IHBhcmFtc1sncmVkaXJlY3RVcmknXSB8fCB0aGlzLmFYTUF1dGhDb25maWdzLmF1dGhDb25maWcucmVkaXJlY3RVcmkhO1xuICAgICAgICBjb25zdCBjbGllbnRJZCA9IHBhcmFtc1snY2xpZW50SWQnXSB8fCB0aGlzLmFYTUF1dGhDb25maWdzLmF1dGhDb25maWcuY2xpZW50SWQhO1xuICAgICAgICBjb25zdCB0b2tlbkVuZHBvaW50ID1cbiAgICAgICAgICBwYXJhbXNbJ3Rva2VuRW5kcG9pbnQnXSB8fFxuICAgICAgICAgIHRoaXMub3BlbmlkQ29uZmlndXJhdGlvbkluZm8/LmluZm8/LmRpc2NvdmVyeURvY3VtZW50Py50b2tlbl9lbmRwb2ludCB8fFxuICAgICAgICAgIGAke3RoaXMuYVhNQXV0aENvbmZpZ3M/LmJhc2VVcmx9L2Nvbm5lY3QvdG9rZW5gO1xuXG4gICAgICAgIC8vIEdldCBjb2RlX3ZlcmlmaWVyIGZyb20gbG9jYWxTdG9yYWdlIChQS0NFKVxuICAgICAgICBjb25zdCBjb2RlVmVyaWZpZXIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncGtjZV9jb2RlX3ZlcmlmaWVyJyk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdwa2NlX2NvZGVfdmVyaWZpZXInKTtcbiAgICAgICAgaWYgKCFjb2RlVmVyaWZpZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvZGUgdmVyaWZpZXIgbm90IGZvdW5kLiBQbGVhc2UgdHJ5IHNpZ25pbmcgaW4gYWdhaW4uJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmVwYXJlIGJvZHkgZm9yIHRva2VuIHJlcXVlc3RcbiAgICAgICAgY29uc3QgYm9keSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgICAgICAgIGdyYW50X3R5cGU6ICdhdXRob3JpemF0aW9uX2NvZGUnLFxuICAgICAgICAgIGNsaWVudF9pZDogY2xpZW50SWQsXG4gICAgICAgICAgY29kZV92ZXJpZmllcjogY29kZVZlcmlmaWVyLFxuICAgICAgICAgIGNvZGU6IGNvZGUsXG4gICAgICAgICAgcmVkaXJlY3RfdXJpOiByZWRpcmVjdFVyaSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ2FsbCB0aGUgdG9rZW4gZW5kcG9pbnQgKE9wZW5JZGRpY3QpXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godG9rZW5FbmRwb2ludCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIH0sXG4gICAgICAgICAgYm9keTogYm9keS50b1N0cmluZygpLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUb2tlbiBleGNoYW5nZSBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdG9rZW5EYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgICAgICBpZiAoIXRva2VuRGF0YSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVG9rZW4gZGF0YSBub3QgZm91bmQnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXlsb2FkID0gSnd0VXRpbC5wYXJzZUp3dCh0b2tlbkRhdGEuaWRfdG9rZW4pO1xuICAgICAgICBpZiAoIXBheWxvYWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BheWxvYWQgbm90IGZvdW5kJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXNlciA9IHtcbiAgICAgICAgICBpZDogcGF5bG9hZFsnc3ViJ10gfHwgcGF5bG9hZFsnaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eS9jbGFpbXMvbmFtZWlkZW50aWZpZXInXSB8fCAnJyxcbiAgICAgICAgICB0aXRsZTogcGF5bG9hZFsnbmFtZSddIHx8IHBheWxvYWRbJ2VtYWlsJ10gfHwgJycsXG4gICAgICAgICAgbmFtZTogcGF5bG9hZFsnbmFtZSddIHx8IHBheWxvYWRbJ2VtYWlsJ10gfHwgJycsXG4gICAgICAgICAgYXZhdGFyOiBwYXlsb2FkWydwaWN0dXJlJ10gfHwgJycsXG4gICAgICAgIH0gYXMgQVhQVXNlcjtcblxuICAgICAgICBjb25zdCB0ZW5hbnQgPVxuICAgICAgICAgIHBheWxvYWRbJ3RlbmFudGlkJ10gfHwgcGF5bG9hZFsndGVuYW50J11cbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIGlkOiBwYXlsb2FkWyd0ZW5hbnRpZCddIHx8IHBheWxvYWRbJ3RlbmFudCddIHx8ICcnLFxuICAgICAgICAgICAgICAgIG5hbWU6IHBheWxvYWRbJ3RlbmFudG5hbWUnXSB8fCAnJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcGF5bG9hZFsndGVuYW50dGl0bGUnXSB8fCAnJyxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgYXBwbGljYXRpb24gPVxuICAgICAgICAgIHBheWxvYWRbJ2FwcGxpY2F0aW9uaWQnXSB8fCBwYXlsb2FkWydhcHBsaWNhdGlvbiddXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBpZDogcGF5bG9hZFsnYXBwbGljYXRpb25pZCddIHx8IHBheWxvYWRbJ2FwcGxpY2F0aW9uJ10gfHwgJycsXG4gICAgICAgICAgICAgICAgbmFtZTogcGF5bG9hZFsnYXBwbGljYXRpb25uYW1lJ10gfHwgJycsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBheWxvYWRbJ2FwcGxpY2F0aW9udGl0bGUnXSB8fCAnJyxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnNvbGUubG9nKCdwYXlsb2FkJywgcGF5bG9hZCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZWVkOiB0cnVlLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiB0b2tlbkRhdGEuYWNjZXNzX3Rva2VuLFxuICAgICAgICAgICAgcmVmcmVzaFRva2VuOiB0b2tlbkRhdGEucmVmcmVzaF90b2tlbixcbiAgICAgICAgICAgIGlkVG9rZW46IHRva2VuRGF0YS5pZF90b2tlbixcbiAgICAgICAgICAgIGV4cGlyZXNJbjogVGltZVV0aWwuY2FsY3VsYXRlRXhwaXJlSW5EYXRlKHRva2VuRGF0YS5leHBpcmVzX2luIHx8IDApLFxuICAgICAgICAgICAgdXNlcixcbiAgICAgICAgICAgIHRlbmFudCxcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBnZXQgQXV0aG9yaXplYXRpb24gQ29kZVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIFZhbGlkYXRpb246INin2LfZhduM2YbYp9mGINin2LIg2YjYrNmI2K8gYXV0aENvbmZpZ1xuICAgICAgICBpZiAoIXRoaXMuYVhNQXV0aENvbmZpZ3MuYXV0aENvbmZpZykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYXV0aENvbmZpZyBpcyBtaXNzaW5nLiBQbGVhc2UgY2hlY2sgeW91ciBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uLicpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBFeHRyYWN0IHBhcmFtZXRlcnNcbiAgICAgICAgLy8gU3VwcG9ydCBib3RoIGRpcmVjdCBpZCBmaWVsZHMgYW5kIG5lc3RlZCB0ZW5hbnQvYXBwbGljYXRpb24gb2JqZWN0c1xuICAgICAgICBjb25zdCB0ZW5hbnRJZCA9IHBhcmFtc1sndGVuYW50SWQnXSA/PyBwYXJhbXNbJ3RlbmFudCddPy5pZCA/PyBudWxsO1xuICAgICAgICBjb25zdCBhcHBsaWNhdGlvbklkID0gcGFyYW1zWydhcHBsaWNhdGlvbklkJ10gPz8gcGFyYW1zWydhcHBsaWNhdGlvbiddPy5pZCA/PyBudWxsO1xuICAgICAgICBjb25zdCByZWRpcmVjdFVyaSA9IHBhcmFtc1sncmVkaXJlY3RVcmknXSB8fCB0aGlzLmFYTUF1dGhDb25maWdzLmF1dGhDb25maWcucmVkaXJlY3RVcmkhO1xuICAgICAgICBjb25zdCBzY29wZSA9IHBhcmFtc1snc2NvcGUnXSB8fCB0aGlzLmFYTUF1dGhDb25maWdzLmF1dGhDb25maWcuc2NvcGUhO1xuXG4gICAgICAgIC8vIEdlbmVyYXRlIFBLQ0UgY29kZSB2ZXJpZmllciBhbmQgY2hhbGxlbmdlXG4gICAgICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IFBrY2VVdGlsLmdlbmVyYXRlUmFuZG9tU3RyaW5nKDEyOCk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdwa2NlX2NvZGVfdmVyaWZpZXInLCBjb2RlVmVyaWZpZXIpO1xuICAgICAgICBjb25zdCBjb2RlQ2hhbGxlbmdlID0gYXdhaXQgUGtjZVV0aWwuZ2VuZXJhdGVDb2RlQ2hhbGxlbmdlKGNvZGVWZXJpZmllcik7XG5cbiAgICAgICAgLy8gQnVpbGQgYXV0aG9yaXphdGlvbiBVUkxcbiAgICAgICAgY29uc3QgYXV0aG9yaXplRW5kcG9pbnQgPSB0aGlzLm9wZW5pZENvbmZpZ3VyYXRpb25JbmZvLmluZm8uZGlzY292ZXJ5RG9jdW1lbnQuYXV0aG9yaXphdGlvbl9lbmRwb2ludDtcbiAgICAgICAgY29uc3QgY2xpZW50SWQgPSB0aGlzLmFYTUF1dGhDb25maWdzLmF1dGhDb25maWcuY2xpZW50SWQhO1xuICAgICAgICBjb25zdCByZXNwb25zZVR5cGUgPSAnY29kZSc7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpO1xuXG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gW1xuICAgICAgICAgIGByZXNwb25zZV90eXBlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHJlc3BvbnNlVHlwZSl9YCxcbiAgICAgICAgICBgY2xpZW50X2lkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGNsaWVudElkKX1gLFxuICAgICAgICAgIGByZWRpcmVjdF91cmk9JHtlbmNvZGVVUklDb21wb25lbnQocmVkaXJlY3RVcmkpfWAsXG4gICAgICAgICAgYHNjb3BlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHNjb3BlKX1gLFxuICAgICAgICAgIGBzdGF0ZT0ke2VuY29kZVVSSUNvbXBvbmVudChzdGF0ZSl9YCxcbiAgICAgICAgICB0ZW5hbnRJZCA/IGB0ZW5hbnRfaWQ9JHtlbmNvZGVVUklDb21wb25lbnQodGVuYW50SWQpfWAgOiBudWxsLFxuICAgICAgICAgIGFwcGxpY2F0aW9uSWQgPyBgYXBwbGljYXRpb25faWQ9JHtlbmNvZGVVUklDb21wb25lbnQoYXBwbGljYXRpb25JZCl9YCA6IG51bGwsXG4gICAgICAgICAgYGNvZGVfY2hhbGxlbmdlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGNvZGVDaGFsbGVuZ2UpfWAsXG4gICAgICAgICAgYGNvZGVfY2hhbGxlbmdlX21ldGhvZD1TMjU2YCxcbiAgICAgICAgXVxuICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAuam9pbignJicpO1xuXG4gICAgICAgIGNvbnN0IGF1dGhvcml6ZVVybCA9IGAke2F1dGhvcml6ZUVuZHBvaW50fT8ke3F1ZXJ5UGFyYW1zfWA7XG5cbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBhdXRob3JpemVVcmw7XG4gICAgICAvLyBQcmV2ZW50IGZ1cnRoZXIgZXhlY3V0aW9uIGJ5IHdhaXRpbmcgb24gYSBuZXZlci1yZXNvbHZpbmcgUHJvbWlzZSBhZnRlciByZWRpcmVjdFxuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKCkgPT4ge30pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzaWdub3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdwa2NlX2NvZGVfdmVyaWZpZXInKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnb2F1dGhfcHJvdmlkZXInKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLm9wZW5pZENvbmZpZ3VyYXRpb25JbmZvPy5pbmZvPy5kaXNjb3ZlcnlEb2N1bWVudCk7XG4gIFxuICAgIC8vIFVzZSBjb25maWd1cmVkIGxvZ291dFVybCBvciBkZXJpdmUgZnJvbSBiYXNlVXJsXG4gICAgY29uc3QgbG9nb3V0VXJsID0gdGhpcy5hWE1BdXRoQ29uZmlncy5sb2dvdXRVcmwgfHwgYGNvbm5lY3QvbG9nb3V0YDtcblxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbG9nb3V0VXJsO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaFRva2VuKGNvbnRleHQ6IEFYUFNlc3Npb25Db250ZXh0KTogUHJvbWlzZTxBWFBTaWduSW5SZXN1bHQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jb25maWd1cmVPQXV0aCgpO1xuICAgICAgaWYgKCF0aGlzLmFYTUF1dGhDb25maWdzLmF1dGhDb25maWcgfHwgIXRoaXMuYVhNQXV0aENvbmZpZ3MuYXV0aENvbmZpZy5jbGllbnRJZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F1dGhDb25maWcgb3IgY2xpZW50SWQgaXMgbWlzc2luZycpO1xuICAgICAgfVxuICAgICAgY29uc3QgYXV0aERhdGEgPSB0aGlzLmxvYWRBdXRoRGF0YSgpO1xuICAgICAgaWYgKCFhdXRoRGF0YSkge1xuICAgICAgICByZXR1cm4geyBzdWNjZWVkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcmVmcmVzaFRva2VuID0gYXV0aERhdGEucmVmcmVzaFRva2VuO1xuICAgICAgaWYgKCFyZWZyZXNoVG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VlZDogZmFsc2UgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9keSA9IG5ldyBIdHRwUGFyYW1zKClcbiAgICAgICAgLnNldCgnZ3JhbnRfdHlwZScsICdyZWZyZXNoX3Rva2VuJylcbiAgICAgICAgLnNldCgnY2xpZW50X2lkJywgdGhpcy5hWE1BdXRoQ29uZmlncy5hdXRoQ29uZmlnLmNsaWVudElkKVxuICAgICAgICAuc2V0KCdyZWZyZXNoX3Rva2VuJywgcmVmcmVzaFRva2VuKTtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgdGhpcy5odHRwLnBvc3Q8SUF1dGhlbnRpY2F0aW9uRGF0YU1vZGVsPihcbiAgICAgICAgICB0aGlzLm9wZW5pZENvbmZpZ3VyYXRpb25JbmZvLmluZm8uZGlzY292ZXJ5RG9jdW1lbnQudG9rZW5fZW5kcG9pbnQsXG4gICAgICAgICAgYm9keS50b1N0cmluZygpLFxuICAgICAgICAgIHsgaGVhZGVycyB9LFxuICAgICAgICApLFxuICAgICAgKTtcblxuICAgICAgLy8gRXh0cmFjdCB1c2VyLCB0ZW5hbnQsIGFuZCBhcHBsaWNhdGlvbiBmcm9tIGlkX3Rva2VuXG4gICAgICBjb25zdCBwYXlsb2FkID0gSnd0VXRpbC5wYXJzZUp3dChyZXNwb25zZS5pZF90b2tlbik7XG4gICAgICBjb25zdCB1c2VyID0ge1xuICAgICAgICBpZDogcGF5bG9hZFsnc3ViJ10gfHwgcGF5bG9hZFsnaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eS9jbGFpbXMvbmFtZWlkZW50aWZpZXInXSB8fCAnJyxcbiAgICAgICAgdGl0bGU6IHBheWxvYWRbJ25hbWUnXSB8fCBwYXlsb2FkWydlbWFpbCddIHx8ICcnLFxuICAgICAgICBuYW1lOiBwYXlsb2FkWyduYW1lJ10gfHwgcGF5bG9hZFsnZW1haWwnXSB8fCAnJyxcbiAgICAgICAgYXZhdGFyOiBwYXlsb2FkWydwaWN0dXJlJ10gfHwgJycsXG4gICAgICB9IGFzIEFYUFVzZXI7XG4gICAgICBjb25zdCB0ZW5hbnQgPVxuICAgICAgICBwYXlsb2FkWyd0ZW5hbnRpZCddIHx8IHBheWxvYWRbJ3RlbmFudCddXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGlkOiBwYXlsb2FkWyd0ZW5hbnRpZCddIHx8IHBheWxvYWRbJ3RlbmFudCddIHx8ICcnLFxuICAgICAgICAgICAgICBuYW1lOiBwYXlsb2FkWyd0ZW5hbnRuYW1lJ10gfHwgJycsXG4gICAgICAgICAgICAgIHRpdGxlOiBwYXlsb2FkWyd0ZW5hbnR0aXRsZSddIHx8ICcnLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgY29uc3QgYXBwbGljYXRpb24gPVxuICAgICAgICBwYXlsb2FkWydhcHBsaWNhdGlvbmlkJ10gfHwgcGF5bG9hZFsnYXBwbGljYXRpb24nXVxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBpZDogcGF5bG9hZFsnYXBwbGljYXRpb25pZCddIHx8IHBheWxvYWRbJ2FwcGxpY2F0aW9uJ10gfHwgJycsXG4gICAgICAgICAgICAgIG5hbWU6IHBheWxvYWRbJ2FwcGxpY2F0aW9ubmFtZSddIHx8ICcnLFxuICAgICAgICAgICAgICB0aXRsZTogcGF5bG9hZFsnYXBwbGljYXRpb250aXRsZSddIHx8ICcnLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICBjb25zdCBzZXNzaW9uRGF0YTogQVhQU2Vzc2lvbkRhdGEgPSB7XG4gICAgICAgIGFjY2Vzc1Rva2VuOiByZXNwb25zZS5hY2Nlc3NfdG9rZW4sXG4gICAgICAgIHJlZnJlc2hUb2tlbjogcmVzcG9uc2UucmVmcmVzaF90b2tlbixcbiAgICAgICAgaWRUb2tlbjogcmVzcG9uc2UuaWRfdG9rZW4sXG4gICAgICAgIHN0cmF0ZWd5OiAnb2lkYycsXG4gICAgICAgIGV4cGlyZXNJbjogVGltZVV0aWwuY2FsY3VsYXRlRXhwaXJlSW5EYXRlKHJlc3BvbnNlLmV4cGlyZXNfaW4gPz8gMCksXG4gICAgICAgIHVzZXIsXG4gICAgICAgIHRlbmFudCxcbiAgICAgICAgYXBwbGljYXRpb24sXG4gICAgICB9O1xuXG4gICAgICAvLyB0aGlzLnNldFNlcnZpY2VQcm9wcyhzZXNzaW9uRGF0YSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2NlZWQ6IHRydWUsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5zZXNzaW9uRGF0YSxcbiAgICAgICAgICB1c2VyOiBzZXNzaW9uRGF0YS51c2VyIGFzIEFYUFVzZXIsIC8vIEVuc3VyZSB1c2VyIGlzIG5vdCB1bmRlZmluZWRcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJlZnJlc2hpbmcgdG9rZW4nLCBlcnJvcik7XG4gICAgICByZXR1cm4geyBzdWNjZWVkOiBmYWxzZSB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZEF1dGhEYXRhKCk6IEFYUFNlc3Npb25EYXRhIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzZXNzaW9uRGF0YSA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0U2Vzc2lvbkRhdGEoKTtcbiAgICByZXR1cm4gc2Vzc2lvbkRhdGEgfHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWRVc2VySW5mbygpOiBQcm9taXNlPG9iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLm9hdXRoU2VydmljZS5sb2FkVXNlclByb2ZpbGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSk6IG5ldmVyIHtcbiAgICBjb25zb2xlLmVycm9yKCdBdXRoZW50aWNhdGlvbiBlcnJvcjonLCBlcnJvcik7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICAvLyNyZWdpb24gZ2V0dGVyXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdvaWRjJztcbiAgfVxuICAvLyNlbmRyZWdpb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBVc2VyUGFzc0NyZWRlbnRpYWxzIGV4dGVuZHMgQVhQQmFzZUNyZWRlbnRpYWxzIHtcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBPQXV0aEV4dGVybmFsQ3JlZGVudGlhbHMgZXh0ZW5kcyBBWFBCYXNlQ3JlZGVudGlhbHMge1xuICBzdHJhdGVneTogc3RyaW5nO1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbiAgaWRUb2tlbjogc3RyaW5nO1xuICB1c2VyOiBzdHJpbmc7IC8vIFN0b3JlIHVzZXIgYXMgSlNPTiBzdHJpbmdcbiAgZXhwaXJlc0luOiBzdHJpbmc7XG4gIHByb3ZpZGVyOiBzdHJpbmc7IC8vIFRoZSBwcm92aWRlciBuYW1lIChlLmcuLCAnZ29vZ2xlJywgJ2FwcGxlJywgJ2FhZCcpXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUF1dGhlbnRpY2F0aW9uRGF0YU1vZGVsIHtcbiAgYWNjZXNzX3Rva2VuOiBzdHJpbmc7XG4gIGFwcGxpY2F0aW9uaWQ6IHN0cmluZztcbiAgYXBwbGljYXRpb25uYW1lOiBzdHJpbmc7XG4gIGFwcGxpY2F0aW9udGl0bGU6IHN0cmluZztcbiAgZWRpdGlvbmlkOiBzdHJpbmc7XG4gIGVkaXRpb25uYW1lOiBzdHJpbmc7XG4gIGVkaXRpb250aXRsZTogc3RyaW5nO1xuICBpZF90b2tlbjogc3RyaW5nO1xuICByZWZyZXNoX3Rva2VuOiBzdHJpbmc7XG4gIHNjb3BlOiBzdHJpbmc7XG4gIHRlbmFudGlkOiBzdHJpbmc7XG4gIHRlbmFudG5hbWU6IHN0cmluZztcbiAgdGVuYW50dGl0bGU6IHN0cmluZztcbiAgdG9rZW5fdHlwZTogc3RyaW5nO1xuICBleHBpcmVzX2luPzogbnVtYmVyO1xuICBzdWI/OiBzdHJpbmc7XG4gIGZ1bGxuYW1lPzogc3RyaW5nO1xuICBwaWN0dXJlPzogc3RyaW5nO1xufVxuIl19","import { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { map } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nexport class AXMOidcPermissionLoader {\n constructor(http) {\n this.http = http;\n this.configs = inject(AXP_ROOT_CONFIG_TOKEN);\n this.apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\n }\n getList(context) {\n return this.http.get(this.apiGetConfig).pipe(map((response) => this.mapTo(response)));\n // if (context.user == null)\n // return of([]);\n // else if (context.user.name.toLowerCase() == 'admin')\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\n // else\n // return of(['asc.user.gliding']);\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\n }\n mapTo(jsonObj) {\n const policies = jsonObj.auth.grantedPolicies;\n const truePolicies = Object.keys(policies).filter((key) => policies[key] === true);\n return truePolicies;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcPermissionLoader, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcPermissionLoader }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcPermissionLoader, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.HttpClient }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nvbm5lY3Rpdml0eS9hcGkvc3JjL2xpYi9hdXRoL29pZGMvcGVybWlzc2lvbi5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUd2QyxNQUFNLE9BQU8sdUJBQXVCO0lBSWxDLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFINUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3hDLGlCQUFZLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sZ0NBQWdDLENBQUM7SUFFeEMsQ0FBQztJQUV4QyxPQUFPLENBQUMsT0FBMEI7UUFDaEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBaUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLDRCQUE0QjtRQUM1QixtQkFBbUI7UUFDbkIsdURBQXVEO1FBQ3ZELDBIQUEwSDtRQUMxSCxPQUFPO1FBQ1AscUNBQXFDO1FBQ3JDLHdIQUF3SDtJQUMxSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQVk7UUFDaEIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDOUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNuRixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDOytHQXJCVSx1QkFBdUI7bUhBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFBlcm1pc3Npb24sIEFYUFBlcm1pc3Npb25Mb2FkZXIsIEFYUFNlc3Npb25Db250ZXh0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUF9ST09UX0NPTkZJR19UT0tFTiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNT2lkY1Blcm1pc3Npb25Mb2FkZXIgaW1wbGVtZW50cyBBWFBQZXJtaXNzaW9uTG9hZGVyIHtcbiAgcHJpdmF0ZSBjb25maWdzID0gaW5qZWN0KEFYUF9ST09UX0NPTkZJR19UT0tFTik7XG4gIHByaXZhdGUgYXBpR2V0Q29uZmlnID0gYCR7dGhpcy5jb25maWdzLmJhc2VVcmx9L2FicC9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9uYDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgZ2V0TGlzdChjb250ZXh0OiBBWFBTZXNzaW9uQ29udGV4dCk6IE9ic2VydmFibGU8QVhQUGVybWlzc2lvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8eyBpdGVtczogYW55IH0+KHRoaXMuYXBpR2V0Q29uZmlnKS5waXBlKG1hcCgocmVzcG9uc2UpID0+IHRoaXMubWFwVG8ocmVzcG9uc2UpKSk7XG4gICAgLy8gaWYgKGNvbnRleHQudXNlciA9PSBudWxsKVxuICAgIC8vICAgcmV0dXJuIG9mKFtdKTtcbiAgICAvLyBlbHNlIGlmIChjb250ZXh0LnVzZXIubmFtZS50b0xvd2VyQ2FzZSgpID09ICdhZG1pbicpXG4gICAgLy8gICByZXR1cm4gb2YoWydheHAuYWRtaW4uY29uc29sZScsICdhc2MuYWRtaW4ubWVzc2FnZScsICdhc2MuYWRtaW4uc2V0dGluZ3MnLCAnYXNjLmFkbWluLmdsaWRpbmcnLCAnYXNjLnVzZXIuZ2xpZGluZyddKTtcbiAgICAvLyBlbHNlXG4gICAgLy8gICByZXR1cm4gb2YoWydhc2MudXNlci5nbGlkaW5nJ10pO1xuICAgIC8vIHJldHVybiBvZihbJ2F4cC5hZG1pbi5jb25zb2xlJywgJ2FzYy5hZG1pbi5tZXNzYWdlJywgJ2FzYy5hZG1pbi5zZXR0aW5ncycsICdhc2MuYWRtaW4uZ2xpZGluZycsICdhc2MudXNlci5nbGlkaW5nJ10pO1xuICB9XG5cbiAgbWFwVG8oanNvbk9iajogYW55KTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHBvbGljaWVzID0ganNvbk9iai5hdXRoLmdyYW50ZWRQb2xpY2llcztcbiAgICBjb25zdCB0cnVlUG9saWNpZXMgPSBPYmplY3Qua2V5cyhwb2xpY2llcykuZmlsdGVyKChrZXkpID0+IHBvbGljaWVzW2tleV0gPT09IHRydWUpO1xuICAgIHJldHVybiB0cnVlUG9saWNpZXM7XG4gIH1cbn1cbiJdfQ==","import { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { map } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nexport class AXMOidcTenantLoader {\n constructor(http) {\n this.http = http;\n this.configs = inject(AXP_ROOT_CONFIG_TOKEN);\n this.apiGetTenants = `${this.configs.baseUrl}/tenants/available-for-user`;\n }\n getList() {\n return this.http.get(this.apiGetTenants).pipe(map((response) => response.items.map((item) => {\n return this.mapToAXPTenant(item);\n })));\n }\n async set(tenant) {\n return Promise.resolve();\n }\n mapToAXPTenant(item) {\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.title || 'defaultTitle',\n // Add other fields and defaults as needed, and handle the logo if applicable\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcTenantLoader, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcTenantLoader }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMOidcTenantLoader, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.HttpClient }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L2FwaS9zcmMvbGliL2F1dGgvb2lkYy90ZW5hbnQubG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFHdkMsTUFBTSxPQUFPLG1CQUFtQjtJQUc5QixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBRjVCLFlBQU8sR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN4QyxrQkFBYSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLDZCQUE2QixDQUFDO0lBQ3RDLENBQUM7SUFFeEMsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQW1CLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQzdELEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQ2YsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBaUI7UUFDekIsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFTO1FBQzlCLE9BQU87WUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxhQUFhO1lBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLGNBQWM7WUFDbkMsNkVBQTZFO1NBQzlFLENBQUM7SUFDSixDQUFDOytHQTFCVSxtQkFBbUI7bUhBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFRlbmFudCwgQVhQVGVuYW50TG9hZGVyIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUF9ST09UX0NPTkZJR19UT0tFTiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNT2lkY1RlbmFudExvYWRlciBpbXBsZW1lbnRzIEFYUFRlbmFudExvYWRlciB7XG4gIHByaXZhdGUgY29uZmlncyA9IGluamVjdChBWFBfUk9PVF9DT05GSUdfVE9LRU4pO1xuICBwcml2YXRlIGFwaUdldFRlbmFudHMgPSBgJHt0aGlzLmNvbmZpZ3MuYmFzZVVybH0vdGVuYW50cy9hdmFpbGFibGUtZm9yLXVzZXJgO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgZ2V0TGlzdCgpOiBPYnNlcnZhYmxlPEFYUFRlbmFudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8eyBpdGVtczogYW55W10gfT4odGhpcy5hcGlHZXRUZW5hbnRzKS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZSkgPT5cbiAgICAgICAgcmVzcG9uc2UuaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubWFwVG9BWFBUZW5hbnQoaXRlbSk7XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgc2V0KHRlbmFudDogQVhQVGVuYW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBUb0FYUFRlbmFudChpdGVtOiBhbnkpOiBBWFBUZW5hbnQge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogaXRlbS5pZCxcbiAgICAgIG5hbWU6IGl0ZW0ubmFtZSB8fCAnZGVmYXVsdE5hbWUnLFxuICAgICAgdGl0bGU6IGl0ZW0udGl0bGUgfHwgJ2RlZmF1bHRUaXRsZScsXG4gICAgICAvLyBBZGQgb3RoZXIgZmllbGRzIGFuZCBkZWZhdWx0cyBhcyBuZWVkZWQsIGFuZCBoYW5kbGUgdGhlIGxvZ28gaWYgYXBwbGljYWJsZVxuICAgIH07XG4gIH1cbn1cbiJdfQ==","import { AXPSessionService } from '@acorex/platform/auth';\nimport { inject } from '@angular/core';\nimport { AXMUsersEntityService } from '@acorex/modules/security-management';\nimport { AXPDataGenerator } from '@acorex/platform/core';\nexport class AXCApiUserAvatarProvider {\n constructor() {\n this.userService = inject(AXMUsersEntityService);\n this.sessionService = inject(AXPSessionService);\n }\n async provide(userId) {\n // Check if requesting current user info\n const currentUser = this.sessionService.user;\n const isCurrentUser = currentUser?.id === userId;\n if (isCurrentUser && currentUser) {\n // Use session service user data for current user\n const [firstName, lastName] = (currentUser.name || '').split(' ') || ['', ''];\n return {\n id: currentUser.id,\n username: currentUser.name || '',\n firstName: firstName || '',\n lastName: lastName || '',\n status: 'online',\n avatarUrl: currentUser.avatar || `https://avatar.iran.liara.run/public/${AXPDataGenerator.pick([35, 22, 16, 6, 31])}`,\n };\n }\n // Use entity service for other users\n const user = await this.userService.getOne(userId);\n if (!user) {\n throw new Error(`User not found for ${userId}`);\n }\n const [firstName, lastName] = user.displayName.split(' ') || ['', ''];\n return {\n id: user.id,\n username: user.username,\n firstName: firstName || '',\n lastName: lastName || '',\n status: 'online',\n avatarUrl: `https://avatar.iran.liara.run/public/${AXPDataGenerator.pick([35, 22, 16, 6, 31])}`,\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hdmF0YXIucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nvbm5lY3Rpdml0eS9hcGkvc3JjL2xpYi9hdXRoL29pZGMvdXNlci1hdmF0YXIucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RCxNQUFNLE9BQU8sd0JBQXdCO0lBQXJDO1FBQ1UsZ0JBQVcsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM1QyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBbUNyRCxDQUFDO0lBakNDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBYztRQUMxQix3Q0FBd0M7UUFDeEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDN0MsTUFBTSxhQUFhLEdBQUcsV0FBVyxFQUFFLEVBQUUsS0FBSyxNQUFNLENBQUM7UUFFakQsSUFBSSxhQUFhLElBQUksV0FBVyxFQUFFLENBQUM7WUFDakMsaURBQWlEO1lBQ2pELE1BQU0sQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM5RSxPQUFPO2dCQUNMLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRTtnQkFDbEIsUUFBUSxFQUFFLFdBQVcsQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDaEMsU0FBUyxFQUFFLFNBQVMsSUFBSSxFQUFFO2dCQUMxQixRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7Z0JBQ3hCLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixTQUFTLEVBQUUsV0FBVyxDQUFDLE1BQU0sSUFBSSx3Q0FBd0MsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7YUFDdEgsQ0FBQztRQUNKLENBQUM7UUFFRCxxQ0FBcUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxNQUFNLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLE9BQU87WUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsU0FBUyxFQUFFLFNBQVMsSUFBSSxFQUFFO1lBQzFCLFFBQVEsRUFBRSxRQUFRLElBQUksRUFBRTtZQUN4QixNQUFNLEVBQUUsUUFBUTtZQUNoQixTQUFTLEVBQUUsd0NBQXdDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO1NBQ2hHLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBVc2VyQXZhdGFyRGF0YSwgQVhQVXNlckF2YXRhclByb3ZpZGVyIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYTVVzZXJzRW50aXR5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy9zZWN1cml0eS1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYUERhdGFHZW5lcmF0b3IgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQVhDQXBpVXNlckF2YXRhclByb3ZpZGVyIGltcGxlbWVudHMgQVhQVXNlckF2YXRhclByb3ZpZGVyIHtcbiAgcHJpdmF0ZSB1c2VyU2VydmljZSA9IGluamVjdChBWE1Vc2Vyc0VudGl0eVNlcnZpY2UpO1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcblxuICBhc3luYyBwcm92aWRlKHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBVc2VyQXZhdGFyRGF0YT4ge1xuICAgIC8vIENoZWNrIGlmIHJlcXVlc3RpbmcgY3VycmVudCB1c2VyIGluZm9cbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuc2Vzc2lvblNlcnZpY2UudXNlcjtcbiAgICBjb25zdCBpc0N1cnJlbnRVc2VyID0gY3VycmVudFVzZXI/LmlkID09PSB1c2VySWQ7XG5cbiAgICBpZiAoaXNDdXJyZW50VXNlciAmJiBjdXJyZW50VXNlcikge1xuICAgICAgLy8gVXNlIHNlc3Npb24gc2VydmljZSB1c2VyIGRhdGEgZm9yIGN1cnJlbnQgdXNlclxuICAgICAgY29uc3QgW2ZpcnN0TmFtZSwgbGFzdE5hbWVdID0gKGN1cnJlbnRVc2VyLm5hbWUgfHwgJycpLnNwbGl0KCcgJykgfHwgWycnLCAnJ107XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogY3VycmVudFVzZXIuaWQsXG4gICAgICAgIHVzZXJuYW1lOiBjdXJyZW50VXNlci5uYW1lIHx8ICcnLFxuICAgICAgICBmaXJzdE5hbWU6IGZpcnN0TmFtZSB8fCAnJyxcbiAgICAgICAgbGFzdE5hbWU6IGxhc3ROYW1lIHx8ICcnLFxuICAgICAgICBzdGF0dXM6ICdvbmxpbmUnLFxuICAgICAgICBhdmF0YXJVcmw6IGN1cnJlbnRVc2VyLmF2YXRhciB8fCBgaHR0cHM6Ly9hdmF0YXIuaXJhbi5saWFyYS5ydW4vcHVibGljLyR7QVhQRGF0YUdlbmVyYXRvci5waWNrKFszNSwgMjIsIDE2LCA2LCAzMV0pfWAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFVzZSBlbnRpdHkgc2VydmljZSBmb3Igb3RoZXIgdXNlcnNcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy51c2VyU2VydmljZS5nZXRPbmUodXNlcklkKTtcbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVXNlciBub3QgZm91bmQgZm9yICR7dXNlcklkfWApO1xuICAgIH1cbiAgICBjb25zdCBbZmlyc3ROYW1lLCBsYXN0TmFtZV0gPSB1c2VyLmRpc3BsYXlOYW1lLnNwbGl0KCcgJykgfHwgWycnLCAnJ107XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB1c2VyLmlkLFxuICAgICAgdXNlcm5hbWU6IHVzZXIudXNlcm5hbWUsXG4gICAgICBmaXJzdE5hbWU6IGZpcnN0TmFtZSB8fCAnJyxcbiAgICAgIGxhc3ROYW1lOiBsYXN0TmFtZSB8fCAnJyxcbiAgICAgIHN0YXR1czogJ29ubGluZScsXG4gICAgICBhdmF0YXJVcmw6IGBodHRwczovL2F2YXRhci5pcmFuLmxpYXJhLnJ1bi9wdWJsaWMvJHtBWFBEYXRhR2VuZXJhdG9yLnBpY2soWzM1LCAyMiwgMTYsIDYsIDMxXSl9YCxcbiAgICB9O1xuICB9XG59XG5cbiJdfQ==","import { AXP_REPORT_CATEGORY_PROVIDER, AXP_REPORT_DEFINITION_PROVIDER, } from '@acorex/modules/report-management';\n//#endregion\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Helper Functions ----\n// /**\n// * Converts a widget string to AXPWidgetsList key\n// */\n// function convertWidgetStringToAXPWidgetsListKey(\n// widgetString: string,\n// )\n// :\n// | keyof typeof AXPWidgetsList.Editors\n// | keyof typeof AXPWidgetsList.Layouts\n// | keyof typeof AXPWidgetsList.Actions\n// | keyof typeof AXPWidgetsList.Advanced\n// | keyof typeof AXPWidgetsList.Templates\n// | keyof typeof AXPWidgetsList.Entity\n// | keyof typeof AXPWidgetsList.Theme\n// {\n// console.log('Converting widget string:', widgetString);\n// // Check if the string is in format \"AXPWidgetsList.Category.Key\"\n// if (widgetString.startsWith('AXPWidgetsList.')) {\n// // Extract the key from \"AXPWidgetsList.Editors.DateTimeBox\" -> \"DateTimeBox\"\n// const parts = widgetString.split('.');\n// if (parts.length >= 3) {\n// const key = parts[parts.length - 1]; // Get the last part (key)\n// console.log('Extracted key from AXPWidgetsList format:', key);\n// return key as any;\n// }\n// }\n// // Search through all AXPWidgetsList categories to find matching widget\n// for (const category of Object.values(AXPWidgetsList)) {\n// if (typeof category === 'object') {\n// for (const [key, value] of Object.entries(category)) {\n// if (value === widgetString) {\n// console.log('Found matching widget:', key, 'for value:', value);\n// return key as any; // Return the AXPWidgetsList key (e.g., \"DateTimeBox\")\n// }\n// }\n// }\n// }\n// console.log('Widget not found in AXPWidgetsList, returning original string:', widgetString);\n// // If not found in AXPWidgetsList, return the original string as fallback\n// return widgetString as any;\n// }\n//#endregion\n//#region ---- Shared Data Service ----\nexport class AXCReportManagementDataService {\n constructor() {\n this.http = inject(HttpClient);\n this.configs = inject(AXP_ROOT_CONFIG_TOKEN);\n this.baseUrl = this.configs.baseUrl;\n // Cache for category data to avoid duplicate API calls\n this.categoryDataCache = new Map();\n this.rootCategoriesCache = null;\n this.pendingRequests = new Map();\n this.pendingRootCategoriesRequest = null;\n }\n //#region ---- Lazy Category/Report Fetching ----\n /**\n * Fetch root categories (no parent). Only root categories without reports and children.\n * Uses cache and pending requests to avoid duplicate API calls.\n */\n async getRootCategories() {\n // Check if already cached\n if (this.rootCategoriesCache !== null) {\n return this.rootCategoriesCache;\n }\n // Check if there's already a pending request\n if (this.pendingRootCategoriesRequest !== null) {\n return this.pendingRootCategoriesRequest;\n }\n // Create the request and cache it\n const requestPromise = (async () => {\n try {\n const url = `${this.baseUrl}/v1/global/report-management/category`;\n const params = { Skip: 0, Take: 1000 };\n const response = await firstValueFrom(this.http.get(url, { params }));\n const all = response.items ?? [];\n const rootCategories = all.filter((i) => !i.reportCategoryParentId);\n // Cache the result\n this.rootCategoriesCache = rootCategories;\n return rootCategories;\n }\n finally {\n // Remove from pending requests after completion\n this.pendingRootCategoriesRequest = null;\n }\n })();\n this.pendingRootCategoriesRequest = requestPromise;\n return requestPromise;\n }\n /**\n * Fetch category data for a given parentId.\n * Returns the parent category with its FolderItems (children) and ReportDefinitionItems (reports).\n * Uses cache to avoid duplicate API calls.\n */\n async getCategoryData(parentId) {\n // Check if already cached\n if (this.categoryDataCache.has(parentId)) {\n return this.categoryDataCache.get(parentId);\n }\n // Check if there's already a pending request for this category\n if (this.pendingRequests.has(parentId)) {\n return this.pendingRequests.get(parentId);\n }\n // Create the request and cache it\n const requestPromise = (async () => {\n try {\n const url = `${this.baseUrl}/v1/global/report-management/category/${parentId}`;\n const response = await firstValueFrom(this.http.get(url));\n const categoryData = response.items?.[0];\n // Cache the result\n this.categoryDataCache.set(parentId, categoryData);\n return categoryData;\n }\n catch {\n const undefinedResult = undefined;\n this.categoryDataCache.set(parentId, undefinedResult);\n return undefinedResult;\n }\n finally {\n // Remove from pending requests after completion\n this.pendingRequests.delete(parentId);\n }\n })();\n this.pendingRequests.set(parentId, requestPromise);\n return requestPromise;\n }\n /**\n * Fetch both child categories and reports for a given parentId.\n * This method ensures only one API call is made and both results are returned.\n */\n async getCategoryChildrenAndReports(parentId) {\n const categoryData = await this.getCategoryData(parentId);\n return {\n categories: categoryData?.folderItems ?? [],\n reports: categoryData?.reportDefinitionItems ?? [],\n };\n }\n /**\n * Fetch child categories of a given parent.\n * Uses getCategoryData to get FolderItems (children) from the parent category.\n */\n async getChildCategories(parentId) {\n const categoryData = await this.getCategoryData(parentId);\n return categoryData?.folderItems ?? [];\n }\n /**\n * Fetch report definitions that belong to a specific category.\n * Uses getCategoryData to get ReportDefinitionItems (reports) from the category.\n */\n async getCategoryReports(categoryId) {\n const categoryData = await this.getCategoryData(categoryId);\n return categoryData?.reportDefinitionItems ?? [];\n }\n /**\n * Fetch a single category by id.\n * First checks cache, then uses getCategoryData if not found in cache.\n */\n async getCategoryById(id) {\n // First check if it's in cache (from previous getCategoryData calls)\n if (this.categoryDataCache.has(id)) {\n return this.categoryDataCache.get(id);\n }\n // Try to get from category data endpoint (which will cache it)\n const categoryData = await this.getCategoryData(id);\n if (categoryData) {\n return categoryData;\n }\n // Fallback: search in root categories cache\n if (this.rootCategoriesCache) {\n const found = this.rootCategoriesCache.find((c) => c.id === id);\n if (found) {\n return found;\n }\n }\n // Last resort: search in all categories (but this should rarely happen)\n try {\n const url = `${this.baseUrl}/v1/global/report-management/category`;\n const params = { Skip: 0, Take: 1000 };\n const response = await firstValueFrom(this.http.get(url, { params }));\n const all = response.items ?? [];\n return all.find((c) => c.id === id);\n }\n catch {\n return undefined;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportManagementDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportManagementDataService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportManagementDataService, decorators: [{\n type: Injectable\n }] });\n//#endregion\n//#region ---- API Providers ----\n/**\n * Category provider that uses the shared data service.\n * Both providers use the same dataService instance which ensures proper caching.\n */\nexport class AXCReportCategoryApiProvider {\n constructor() {\n this.dataService = inject(AXCReportManagementDataService);\n }\n async getList(parentId) {\n try {\n // For root level, get root categories (each category includes folderItems in API response)\n if (!parentId) {\n const filteredItems = await this.dataService.getRootCategories();\n // Each root category has folderItems in the API response, but we only return the root categories themselves\n // The folderItems are preserved in the API response structure, similar to child state\n return filteredItems.map((item) => this.mapApiCategoryToReportCategory(item));\n }\n // For child level, get categories from category data (which includes folderItems)\n // This ensures we use the same API response that getList for definitions will use\n // The folderItems structure is preserved, similar to root state\n const categoryData = await this.dataService.getCategoryData(parentId);\n const filteredItems = categoryData?.folderItems ?? [];\n return filteredItems.map((item) => this.mapApiCategoryToReportCategory(item));\n }\n catch (error) {\n console.error('Error fetching report categories:', error);\n return [];\n }\n }\n async getById(id) {\n try {\n const apiItem = await this.dataService.getCategoryById(id);\n if (!apiItem) {\n return undefined;\n }\n return this.mapApiCategoryToReportCategory(apiItem);\n }\n catch (error) {\n console.error('Error fetching report category by ID:', error);\n return undefined;\n }\n }\n mapApiCategoryToReportCategory(apiItem) {\n return {\n id: apiItem.id,\n title: apiItem.title,\n description: apiItem.description || undefined,\n parentId: apiItem.reportCategoryParentId || undefined,\n hasChild: apiItem.folderCount > 0, // folderItems = folders\n hasReport: apiItem.itemCount > 0, // reportDefinitionItems = files\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportCategoryApiProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportCategoryApiProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportCategoryApiProvider, decorators: [{\n type: Injectable\n }] });\n/**\n * Definition provider that uses the shared data service.\n * Both providers use the same dataService instance which ensures proper caching.\n */\nexport class AXCReportDefinitionApiProvider {\n constructor() {\n this.dataService = inject(AXCReportManagementDataService);\n this.http = inject(HttpClient);\n }\n async getList(categoryId) {\n try {\n // Use getCategoryData which is cached and shared with getCategories\n // This ensures only one API call is made when both getCategories and getReportsByCategoryId are called\n const categoryData = await this.dataService.getCategoryData(categoryId);\n const defs = categoryData?.reportDefinitionItems ?? [];\n const reportDefinitions = defs.map((item) => this.mapApiReportDefinitionItemToReportDefinition(item));\n return reportDefinitions;\n }\n catch (error) {\n console.error('Error fetching report definitions:', error);\n return [];\n }\n }\n async getById(id) {\n try {\n // Make API call to get full report definition with layouts\n const url = `${this.dataService['baseUrl']}/v1/global/report-management/report/${id}`;\n const response = await firstValueFrom(this.http.get(url));\n return this.mapApiReportDefinitionToReportDefinition(response);\n }\n catch (error) {\n console.error('Error fetching report definition by ID:', error);\n return undefined;\n }\n }\n mapApiReportDefinitionItemToReportDefinition(apiItem) {\n return {\n id: apiItem.id,\n title: apiItem.title,\n description: apiItem.description || undefined,\n categoryIds: apiItem.categoryIds,\n parameterGroups: [], // These would need to be fetched separately if needed\n layouts: [], // These would need to be fetched separately if needed\n defaultLayoutId: '', // This would need to be set based on the first layout\n };\n }\n mapApiReportDefinitionToReportDefinition(apiResponse) {\n let res = {\n id: apiResponse.id,\n title: apiResponse.title,\n description: apiResponse.description || undefined,\n categoryIds: apiResponse.categoryIds,\n parameterGroups: apiResponse.parameterGroups.map((group) => ({\n name: group.name,\n title: group.title,\n parameters: group.parameters.map((param) => ({\n path: param.path,\n title: param.title,\n description: param.description,\n widget: {\n type: param.widget.type,\n options: param.widget.options || {},\n valueTransforms: param.widget.valueTransforms || {},\n },\n })),\n })),\n layouts: apiResponse.layouts.map((layout) => ({\n id: layout.id,\n title: layout.title,\n layout: layout.layout,\n dataSource: layout.dataSource,\n export: layout.export,\n isDefault: layout.isDefault || false,\n })),\n defaultLayoutId: apiResponse.defaultLayoutId,\n };\n return res;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportDefinitionApiProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportDefinitionApiProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportDefinitionApiProvider, decorators: [{\n type: Injectable\n }] });\n//#endregion\n//#endregion\n//#region ---- Provider Exports ----\n/**\n * Both providers use the same dataService instance (which is a singleton),\n * ensuring they share the same cache and only one API call is made when both\n * getCategories and getReportsByCategoryId are called for the same categoryId.\n */\nexport const AXC_REPORT_CATEGORY_API_PROVIDER = {\n provide: AXP_REPORT_CATEGORY_PROVIDER,\n useClass: AXCReportCategoryApiProvider,\n multi: true,\n};\nexport const AXC_REPORT_DEFINITION_API_PROVIDER = {\n provide: AXP_REPORT_DEFINITION_PROVIDER,\n useClass: AXCReportDefinitionApiProvider,\n multi: true,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LW1hbmFnZW1lbnQtYXBpLnByb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L2FwaS9zcmMvbGliL3JlcG9ydC1tYW5hZ2VtZW50L3JlcG9ydC1tYW5hZ2VtZW50LWFwaS5wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUtMLDRCQUE0QixFQUM1Qiw4QkFBOEIsR0FDL0IsTUFBTSxtQ0FBbUMsQ0FBQztBQWEzQyxZQUFZO0FBQ1osT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBdUd0QyxZQUFZO0FBRVosd0NBQXdDO0FBRXhDLE1BQU07QUFDTixvREFBb0Q7QUFDcEQsTUFBTTtBQUNOLG1EQUFtRDtBQUNuRCwwQkFBMEI7QUFDMUIsSUFBSTtBQUNKLElBQUk7QUFDSiwwQ0FBMEM7QUFDMUMsMENBQTBDO0FBQzFDLDBDQUEwQztBQUMxQywyQ0FBMkM7QUFDM0MsNENBQTRDO0FBQzVDLHlDQUF5QztBQUN6Qyx3Q0FBd0M7QUFDeEMsTUFBTTtBQUNOLDREQUE0RDtBQUM1RCxzRUFBc0U7QUFDdEUsc0RBQXNEO0FBQ3RELG9GQUFvRjtBQUNwRiw2Q0FBNkM7QUFDN0MsK0JBQStCO0FBQy9CLHdFQUF3RTtBQUN4RSx1RUFBdUU7QUFDdkUsMkJBQTJCO0FBQzNCLFFBQVE7QUFDUixNQUFNO0FBRU4sNEVBQTRFO0FBQzVFLDREQUE0RDtBQUM1RCwwQ0FBMEM7QUFDMUMsK0RBQStEO0FBQy9ELHdDQUF3QztBQUN4Qyw2RUFBNkU7QUFDN0Usc0ZBQXNGO0FBQ3RG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RUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHO0lBQ2hELE9BQU8sRUFBRSw4QkFBOEI7SUFDdkMsUUFBUSxFQUFFLDhCQUE4QjtJQUN4QyxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXaWRnZXRzTGlzdCB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy9jb21tb24nO1xuaW1wb3J0IHtcbiAgQVhQUmVwb3J0Q2F0ZWdvcnksXG4gIEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXIsXG4gIEFYUFJlcG9ydERlZmluaXRpb24sXG4gIEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlcixcbiAgQVhQX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUixcbiAgQVhQX1JFUE9SVF9ERUZJTklUSU9OX1BST1ZJREVSLFxufSBmcm9tICdAYWNvcmV4L21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQnO1xuXG4vLyNyZWdpb24gLS0tLSAgIEV4ZWN1dGUgUmVwb3J0IERUTyAgIC0tLS1cblxuLyoqXG4gKiBFeGVjdXRlIFJlcG9ydCBEVE8gLSBSZXNwb25zZSBmcm9tIHJlcG9ydCBleGVjdXRpb24gQVBJXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRXhlY3V0ZVJlcG9ydER0byB7XG4gIHR5cGU6IHN0cmluZztcbiAgaXRlbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHRvdGFsQ291bnQ6IG51bWJlcjtcbn1cblxuLy8jZW5kcmVnaW9uXG5pbXBvcnQgeyBBWFBfUk9PVF9DT05GSUdfVE9LRU4gfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG4vLyNyZWdpb24gLS0tLSAgIEFQSSBSZXNwb25zZSBUeXBlcyAgIC0tLS1cblxuLyoqXG4gKiBBUEkgUmVzcG9uc2UgZm9yIENhdGVnb3J5IGVuZHBvaW50XG4gKiBVc2VkIGJ5OiBHRVQgL2FwaS92MS9nbG9iYWwvcmVwb3J0LW1hbmFnZW1lbnQvY2F0ZWdvcnlcbiAqICAgICAgICAgIEdFVCAvYXBpL3YxL2dsb2JhbC9yZXBvcnQtbWFuYWdlbWVudC9jYXRlZ29yeS97cGFyZW50SWR9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhDUmVwb3J0Q2F0ZWdvcnlBcGlSZXNwb25zZSB7XG4gIHRvdGFsQ291bnQ6IG51bWJlcjtcbiAgaXRlbXM6IEFYQ1JlcG9ydENhdGVnb3J5QXBpSXRlbVtdO1xufVxuXG4vKipcbiAqIENhdGVnb3J5IEl0ZW0gd2l0aCByZWN1cnNpdmUgc3RydWN0dXJlXG4gKiBFYWNoIGNhdGVnb3J5IGNhbiBjb250YWluIGNoaWxkIGNhdGVnb3JpZXMgKGZvbGRlckl0ZW1zKSBhbmQgcmVwb3J0cyAocmVwb3J0RGVmaW5pdGlvbkl0ZW1zKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYQ1JlcG9ydENhdGVnb3J5QXBpSXRlbSB7XG4gIHJlcG9ydENhdGVnb3J5UGFyZW50SWQ6IHN0cmluZyB8IG51bGw7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gIGZvbGRlckNvdW50OiBudW1iZXI7XG4gIGl0ZW1Db3VudDogbnVtYmVyO1xuICBpc0FyY2hpdmVkOiBib29sZWFuO1xuICByZXBvcnREZWZpbml0aW9uSXRlbXM6IEFYQ1JlcG9ydERlZmluaXRpb25BcGlJdGVtW107XG4gIGZvbGRlckl0ZW1zOiBBWENSZXBvcnRDYXRlZ29yeUFwaUl0ZW1bXTsgLy8gUmVjdXJzaXZlOiBjaGlsZCBjYXRlZ29yaWVzXG4gIGlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwb3J0IERlZmluaXRpb24gSXRlbSAoaW4gY2F0ZWdvcnkgbGlzdCwgd2l0aG91dCBmdWxsIGxheW91dClcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWENSZXBvcnREZWZpbml0aW9uQXBpSXRlbSB7XG4gIGNhdGVnb3J5SWRzOiBzdHJpbmdbXTtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgaXNBcmNoaXZlZDogYm9vbGVhbjtcbiAgaWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBGdWxsIFJlcG9ydCBEZWZpbml0aW9uIHdpdGggY29tcGxldGUgZGV0YWlscyBpbmNsdWRpbmcgbGF5b3V0c1xuICogVXNlZCBieTogR0VUIC9hcGkvdjEvZ2xvYmFsL3JlcG9ydC1tYW5hZ2VtZW50L3JlcG9ydC97cmVwb3J0SWR9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhDUmVwb3J0RGVmaW5pdGlvbkFwaVJlc3BvbnNlIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgY2F0ZWdvcnlJZHM6IHN0cmluZ1tdO1xuICBwYXJhbWV0ZXJHcm91cHM6IEFYQ1JlcG9ydFBhcmFtZXRlckdyb3VwW107XG4gIGxheW91dHM6IEFYQ1JlcG9ydExheW91dERlZmluaXRpb25bXTtcbiAgZGVmYXVsdExheW91dElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVyIEdyb3VwIGZvciByZXBvcnQgcGFyYW1ldGVyc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYQ1JlcG9ydFBhcmFtZXRlckdyb3VwIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBBWENSZXBvcnRQYXJhbWV0ZXJbXTtcbn1cblxuLyoqXG4gKiBSZXBvcnQgUGFyYW1ldGVyIGRlZmluaXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWENSZXBvcnRQYXJhbWV0ZXIge1xuICBwYXRoOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB3aWRnZXQ6IHtcbiAgICB0eXBlOiBzdHJpbmc7IC8vIEJhY2tlbmQgc2VuZHMgdmFsdWVzIGxpa2UgJ251bWJlci1lZGl0b3InLCAndGV4dC1lZGl0b3InLCBldGMuXG4gICAgcGF0aD86IHN0cmluZyB8IG51bGw7XG4gICAgb3B0aW9ucz86IGFueTtcbiAgICB2YWx1ZVRyYW5zZm9ybXM/OiBhbnk7XG4gIH07XG59XG5cbi8qKlxuICogTGF5b3V0IERlZmluaXRpb24gZm9yIHJlcG9ydCBkaXNwbGF5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhDUmVwb3J0TGF5b3V0RGVmaW5pdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGxheW91dDogYW55OyAvLyBXaWxsIGJlIG1hcHBlZCB0byBwcm9wZXIgQVhQUmVwb3J0TGF5b3V0IHR5cGVcbiAgZGF0YVNvdXJjZT86IHtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBwcm92aWRlcj86IHN0cmluZztcbiAgfTtcbiAgZXhwb3J0Pzoge1xuICAgIGZpbGVOYW1lVGVtcGxhdGU6IHN0cmluZztcbiAgICBwZGY/OiBhbnk7XG4gICAgZXhjZWw/OiBhbnk7XG4gICAgY3N2PzogYW55O1xuICB9O1xuICBpc0RlZmF1bHQ/OiBib29sZWFuO1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBIZWxwZXIgRnVuY3Rpb25zICAgLS0tLVxuXG4vLyAvKipcbi8vICAqIENvbnZlcnRzIGEgd2lkZ2V0IHN0cmluZyB0byBBWFBXaWRnZXRzTGlzdCBrZXlcbi8vICAqL1xuLy8gZnVuY3Rpb24gY29udmVydFdpZGdldFN0cmluZ1RvQVhQV2lkZ2V0c0xpc3RLZXkoXG4vLyAgIHdpZGdldFN0cmluZzogc3RyaW5nLFxuLy8gKVxuLy8gOlxuLy8gICB8IGtleW9mIHR5cGVvZiBBWFBXaWRnZXRzTGlzdC5FZGl0b3JzXG4vLyAgIHwga2V5b2YgdHlwZW9mIEFYUFdpZGdldHNMaXN0LkxheW91dHNcbi8vICAgfCBrZXlvZiB0eXBlb2YgQVhQV2lkZ2V0c0xpc3QuQWN0aW9uc1xuLy8gICB8IGtleW9mIHR5cGVvZiBBWFBXaWRnZXRzTGlzdC5BZHZhbmNlZFxuLy8gICB8IGtleW9mIHR5cGVvZiBBWFBXaWRnZXRzTGlzdC5UZW1wbGF0ZXNcbi8vICAgfCBrZXlvZiB0eXBlb2YgQVhQV2lkZ2V0c0xpc3QuRW50aXR5XG4vLyAgIHwga2V5b2YgdHlwZW9mIEFYUFdpZGdldHNMaXN0LlRoZW1lXG4vLyAgIHtcbi8vICAgY29uc29sZS5sb2coJ0NvbnZlcnRpbmcgd2lkZ2V0IHN0cmluZzonLCB3aWRnZXRTdHJpbmcpO1xuLy8gICAvLyBDaGVjayBpZiB0aGUgc3RyaW5nIGlzIGluIGZvcm1hdCBcIkFYUFdpZGdldHNMaXN0LkNhdGVnb3J5LktleVwiXG4vLyAgIGlmICh3aWRnZXRTdHJpbmcuc3RhcnRzV2l0aCgnQVhQV2lkZ2V0c0xpc3QuJykpIHtcbi8vICAgICAvLyBFeHRyYWN0IHRoZSBrZXkgZnJvbSBcIkFYUFdpZGdldHNMaXN0LkVkaXRvcnMuRGF0ZVRpbWVCb3hcIiAtPiBcIkRhdGVUaW1lQm94XCJcbi8vICAgICBjb25zdCBwYXJ0cyA9IHdpZGdldFN0cmluZy5zcGxpdCgnLicpO1xuLy8gICAgIGlmIChwYXJ0cy5sZW5ndGggPj0gMykge1xuLy8gICAgICAgY29uc3Qga2V5ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07IC8vIEdldCB0aGUgbGFzdCBwYXJ0IChrZXkpXG4vLyAgICAgICBjb25zb2xlLmxvZygnRXh0cmFjdGVkIGtleSBmcm9tIEFYUFdpZGdldHNMaXN0IGZvcm1hdDonLCBrZXkpO1xuLy8gICAgICAgcmV0dXJuIGtleSBhcyBhbnk7XG4vLyAgICAgfVxuLy8gICB9XG5cbi8vICAgLy8gU2VhcmNoIHRocm91Z2ggYWxsIEFYUFdpZGdldHNMaXN0IGNhdGVnb3JpZXMgdG8gZmluZCBtYXRjaGluZyB3aWRnZXRcbi8vICAgZm9yIChjb25zdCBjYXRlZ29yeSBvZiBPYmplY3QudmFsdWVzKEFYUFdpZGdldHNMaXN0KSkge1xuLy8gICAgIGlmICh0eXBlb2YgY2F0ZWdvcnkgPT09ICdvYmplY3QnKSB7XG4vLyAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjYXRlZ29yeSkpIHtcbi8vICAgICAgICAgaWYgKHZhbHVlID09PSB3aWRnZXRTdHJpbmcpIHtcbi8vICAgICAgICAgICBjb25zb2xlLmxvZygnRm91bmQgbWF0Y2hpbmcgd2lkZ2V0OicsIGtleSwgJ2ZvciB2YWx1ZTonLCB2YWx1ZSk7XG4vLyAgICAgICAgICAgcmV0dXJuIGtleSBhcyBhbnk7IC8vIFJldHVybiB0aGUgQVhQV2lkZ2V0c0xpc3Qga2V5IChlLmcuLCBcIkRhdGVUaW1lQm94XCIpXG4vLyAgICAgICAgIH1cbi8vICAgICAgIH1cbi8vICAgICB9XG4vLyAgIH1cblxuLy8gICBjb25zb2xlLmxvZygnV2lkZ2V0IG5vdCBmb3VuZCBpbiBBWFBXaWRnZXRzTGlzdCwgcmV0dXJuaW5nIG9yaWdpbmFsIHN0cmluZzonLCB3aWRnZXRTdHJpbmcpO1xuXG4vLyAgIC8vIElmIG5vdCBmb3VuZCBpbiBBWFBXaWRnZXRzTGlzdCwgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcgYXMgZmFsbGJhY2tcbi8vICAgcmV0dXJuIHdpZGdldFN0cmluZyBhcyBhbnk7XG4vLyB9XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIFNoYXJlZCBEYXRhIFNlcnZpY2UgICAtLS0tXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWENSZXBvcnRNYW5hZ2VtZW50RGF0YVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlncyA9IGluamVjdChBWFBfUk9PVF9DT05GSUdfVE9LRU4pO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VVcmwgPSB0aGlzLmNvbmZpZ3MuYmFzZVVybDtcblxuICAvLyBDYWNoZSBmb3IgY2F0ZWdvcnkgZGF0YSB0byBhdm9pZCBkdXBsaWNhdGUgQVBJIGNhbGxzXG4gIHByaXZhdGUgY2F0ZWdvcnlEYXRhQ2FjaGUgPSBuZXcgTWFwPHN0cmluZyB8IHVuZGVmaW5lZCwgQVhDUmVwb3J0Q2F0ZWdvcnlBcGlJdGVtIHwgdW5kZWZpbmVkPigpO1xuICBwcml2YXRlIHJvb3RDYXRlZ29yaWVzQ2FjaGU6IEFYQ1JlcG9ydENhdGVnb3J5QXBpSXRlbVtdIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcGVuZGluZ1JlcXVlc3RzID0gbmV3IE1hcDxzdHJpbmcgfCB1bmRlZmluZWQsIFByb21pc2U8QVhDUmVwb3J0Q2F0ZWdvcnlBcGlJdGVtIHwgdW5kZWZpbmVkPj4oKTtcbiAgcHJpdmF0ZSBwZW5kaW5nUm9vdENhdGVnb3JpZXNSZXF1ZXN0OiBQcm9taXNlPEFYQ1JlcG9ydENhdGVnb3J5QXBpSXRlbVtdPiB8IG51bGwgPSBudWxsO1xuXG4gIC8vI3JlZ2lvbiAtLS0tICAgTGF6eSBDYXRlZ29yeS9SZXBvcnQgRmV0Y2hpbmcgICAtLS0tXG5cbiAgLyoqXG4gICAqIEZldGNoIHJvb3QgY2F0ZWdvcmllcyAobm8gcGFyZW50KS4gT25seSByb290IGNhdGVnb3JpZXMgd2l0aG91dCByZXBvcnRzIGFuZCBjaGlsZHJlbi5cbiAgICogVXNlcyBjYWNoZSBhbmQgcGVuZGluZyByZXF1ZXN0cyB0byBhdm9pZCBkdXBsaWNhdGUgQVBJIGNhbGxzLlxuICAgKi9cbiAgYXN5bmMgZ2V0Um9vdENhdGVnb3JpZXMoKTogUHJvbWlzZTxBWENSZXBvcnRDYXRlZ29yeUFwaUl0ZW1bXT4ge1xuICAgIC8vIENoZWNrIGlmIGFscmVhZHkgY2FjaGVkXG4gICAgaWYgKHRoaXMucm9vdENhdGVnb3JpZXNDYWNoZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMucm9vdENhdGVnb3JpZXNDYWNoZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGFscmVhZHkgYSBwZW5kaW5nIHJlcXVlc3RcbiAgICBpZiAodGhpcy5wZW5kaW5nUm9vdENhdGVnb3JpZXNSZXF1ZXN0ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5wZW5kaW5nUm9vdENhdGVnb3JpZXNSZXF1ZXN0O1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgcmVxdWVzdCBhbmQgY2FjaGUgaXRcbiAgICBjb25zdCByZXF1ZXN0UHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcmx9L3YxL2dsb2JhbC9yZXBvcnQtbWFuYWdlbWVudC9jYXRlZ29yeWA7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgU2tpcDogMCwgVGFrZTogMTAwMCB9O1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8QVhDUmVwb3J0Q2F0ZWdvcnlBcGlSZXNwb25zZT4odXJsLCB7IHBhcmFtcyB9KSk7XG4gICAgICAgIGNvbnN0IGFsbCA9IHJlc3BvbnNlLml0ZW1zID8/IFtdO1xuICAgICAgICBjb25zdCByb290Q2F0ZWdvcmllcyA9IGFsbC5maWx0ZXIoKGkpID0+ICFpLnJlcG9ydENhdGVnb3J5UGFyZW50SWQpO1xuICAgICAgICAvLyBDYWNoZSB0aGUgcmVzdWx0XG4gICAgICAgIHRoaXMucm9vdENhdGVnb3JpZXNDYWNoZSA9IHJvb3RDYXRlZ29yaWVzO1xuICAgICAgICByZXR1cm4gcm9vdENhdGVnb3JpZXM7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICAvLyBSZW1vdmUgZnJvbSBwZW5kaW5nIHJlcXVlc3RzIGFmdGVyIGNvbXBsZXRpb25cbiAgICAgICAgdGhpcy5wZW5kaW5nUm9vdENhdGVnb3JpZXNSZXF1ZXN0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9KSgpO1xuXG4gICAgdGhpcy5wZW5kaW5nUm9vdENhdGVnb3JpZXNSZXF1ZXN0ID0gcmVxdWVzdFByb21pc2U7XG4gICAgcmV0dXJuIHJlcXVlc3RQcm9taXNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGNhdGVnb3J5IGRhdGEgZm9yIGEgZ2l2ZW4gcGFyZW50SWQuXG4gICAqIFJldHVybnMgdGhlIHBhcmVudCBjYXRlZ29yeSB3aXRoIGl0cyBGb2xkZXJJdGVtcyAoY2hpbGRyZW4pIGFuZCBSZXBvcnREZWZpbml0aW9uSXRlbXMgKHJlcG9ydHMpLlxuICAgKiBVc2VzIGNhY2hlIHRvIGF2b2lkIGR1cGxpY2F0ZSBBUEkgY2FsbHMuXG4gICAqL1xuICBhc3luYyBnZXRDYXRlZ29yeURhdGEocGFyZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QVhDUmVwb3J0Q2F0ZWdvcnlBcGlJdGVtIHwgdW5kZWZpbmVkPiB7XG4gICAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBjYWNoZWRcbiAgICBpZiAodGhpcy5jYXRlZ29yeURhdGFDYWNoZS5oYXMocGFyZW50SWQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYXRlZ29yeURhdGFDYWNoZS5nZXQocGFyZW50SWQpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYWxyZWFkeSBhIHBlbmRpbmcgcmVxdWVzdCBmb3IgdGhpcyBjYXRlZ29yeVxuICAgIGlmICh0aGlzLnBlbmRpbmdSZXF1ZXN0cy5oYXMocGFyZW50SWQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5wZW5kaW5nUmVxdWVzdHMuZ2V0KHBhcmVudElkKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIHJlcXVlc3QgYW5kIGNhY2hlIGl0XG4gICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJsfS92MS9nbG9iYWwvcmVwb3J0LW1hbmFnZW1lbnQvY2F0ZWdvcnkvJHtwYXJlbnRJZH1gO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8QVhDUmVwb3J0Q2F0ZWdvcnlBcGlSZXNwb25zZT4odXJsKSk7XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5RGF0YSA9IHJlc3BvbnNlLml0ZW1zPy5bMF07XG4gICAgICAgIC8vIENhY2hlIHRoZSByZXN1bHRcbiAgICAgICAgdGhpcy5jYXRlZ29yeURhdGFDYWNoZS5zZXQocGFyZW50SWQsIGNhdGVnb3J5RGF0YSk7XG4gICAgICAgIHJldHVybiBjYXRlZ29yeURhdGE7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgY29uc3QgdW5kZWZpbmVkUmVzdWx0ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YUNhY2hlLnNldChwYXJlbnRJZCwgdW5kZWZpbmVkUmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFJlc3VsdDtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIC8vIFJlbW92ZSBmcm9tIHBlbmRpbmcgcmVxdWVzdHMgYWZ0ZXIgY29tcGxldGlvblxuICAgICAgICB0aGlzLnBlbmRpbmdSZXF1ZXN0cy5kZWxldGUocGFyZW50SWQpO1xuICAgICAgfVxuICAgIH0pKCk7XG5cbiAgICB0aGlzLnBlbmRpbmdSZXF1ZXN0cy5zZXQocGFyZW50SWQsIHJlcXVlc3RQcm9taXNlKTtcbiAgICByZXR1cm4gcmVxdWVzdFByb21pc2U7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYm90aCBjaGlsZCBjYXRlZ29yaWVzIGFuZCByZXBvcnRzIGZvciBhIGdpdmVuIHBhcmVudElkLlxuICAgKiBUaGlzIG1ldGhvZCBlbnN1cmVzIG9ubHkgb25lIEFQSSBjYWxsIGlzIG1hZGUgYW5kIGJvdGggcmVzdWx0cyBhcmUgcmV0dXJuZWQuXG4gICAqL1xuICBhc3luYyBnZXRDYXRlZ29yeUNoaWxkcmVuQW5kUmVwb3J0cyhwYXJlbnRJZDogc3RyaW5nKTogUHJvbWlzZTx7XG4gICAgY2F0ZWdvcmllczogQVhDUmVwb3J0Q2F0ZWdvcnlBcGlJdGVtW107XG4gICAgcmVwb3J0czogQVhDUmVwb3J0RGVmaW5pdGlvbkFwaUl0ZW1bXTtcbiAgfT4ge1xuICAgIGNvbnN0IGNhdGVnb3J5RGF0YSA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcnlEYXRhKHBhcmVudElkKTtcbiAgICByZXR1cm4ge1xuICAgICAgY2F0ZWdvcmllczogY2F0ZWdvcnlEYXRhPy5mb2xkZXJJdGVtcyA/PyBbXSxcbiAgICAgIHJlcG9ydHM6IGNhdGVnb3J5RGF0YT8ucmVwb3J0RGVmaW5pdGlvbkl0ZW1zID8/IFtdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggY2hpbGQgY2F0ZWdvcmllcyBvZiBhIGdpdmVuIHBhcmVudC5cbiAgICogVXNlcyBnZXRDYXRlZ29yeURhdGEgdG8gZ2V0IEZvbGRlckl0ZW1zIChjaGlsZHJlbikgZnJvbSB0aGUgcGFyZW50IGNhdGVnb3J5LlxuICAgKi9cbiAgYXN5bmMgZ2V0Q2hpbGRDYXRlZ29yaWVzKHBhcmVudElkOiBzdHJpbmcpOiBQcm9taXNlPEFYQ1JlcG9ydENhdGVnb3J5QXBpSXRlbVtdPiB7XG4gICAgY29uc3QgY2F0ZWdvcnlEYXRhID0gYXdhaXQgdGhpcy5nZXRDYXRlZ29yeURhdGEocGFyZW50SWQpO1xuICAgIHJldHVybiBjYXRlZ29yeURhdGE/LmZvbGRlckl0ZW1zID8/IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIHJlcG9ydCBkZWZpbml0aW9ucyB0aGF0IGJlbG9uZyB0byBhIHNwZWNpZmljIGNhdGVnb3J5LlxuICAgKiBVc2VzIGdldENhdGVnb3J5RGF0YSB0byBnZXQgUmVwb3J0RGVmaW5pdGlvbkl0ZW1zIChyZXBvcnRzKSBmcm9tIHRoZSBjYXRlZ29yeS5cbiAgICovXG4gIGFzeW5jIGdldENhdGVnb3J5UmVwb3J0cyhjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYQ1JlcG9ydERlZmluaXRpb25BcGlJdGVtW10+IHtcbiAgICBjb25zdCBjYXRlZ29yeURhdGEgPSBhd2FpdCB0aGlzLmdldENhdGVnb3J5RGF0YShjYXRlZ29yeUlkKTtcbiAgICByZXR1cm4gY2F0ZWdvcnlEYXRhPy5yZXBvcnREZWZpbml0aW9uSXRlbXMgPz8gW107XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYSBzaW5nbGUgY2F0ZWdvcnkgYnkgaWQuXG4gICAqIEZpcnN0IGNoZWNrcyBjYWNoZSwgdGhlbiB1c2VzIGdldENhdGVnb3J5RGF0YSBpZiBub3QgZm91bmQgaW4gY2FjaGUuXG4gICAqL1xuICBhc3luYyBnZXRDYXRlZ29yeUJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhDUmVwb3J0Q2F0ZWdvcnlBcGlJdGVtIHwgdW5kZWZpbmVkPiB7XG4gICAgLy8gRmlyc3QgY2hlY2sgaWYgaXQncyBpbiBjYWNoZSAoZnJvbSBwcmV2aW91cyBnZXRDYXRlZ29yeURhdGEgY2FsbHMpXG4gICAgaWYgKHRoaXMuY2F0ZWdvcnlEYXRhQ2FjaGUuaGFzKGlkKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnlEYXRhQ2FjaGUuZ2V0KGlkKTtcbiAgICB9XG5cbiAgICAvLyBUcnkgdG8gZ2V0IGZyb20gY2F0ZWdvcnkgZGF0YSBlbmRwb2ludCAod2hpY2ggd2lsbCBjYWNoZSBpdClcbiAgICBjb25zdCBjYXRlZ29yeURhdGEgPSBhd2FpdCB0aGlzLmdldENhdGVnb3J5RGF0YShpZCk7XG4gICAgaWYgKGNhdGVnb3J5RGF0YSkge1xuICAgICAgcmV0dXJuIGNhdGVnb3J5RGF0YTtcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjazogc2VhcmNoIGluIHJvb3QgY2F0ZWdvcmllcyBjYWNoZVxuICAgIGlmICh0aGlzLnJvb3RDYXRlZ29yaWVzQ2FjaGUpIHtcbiAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5yb290Q2F0ZWdvcmllc0NhY2hlLmZpbmQoKGMpID0+IGMuaWQgPT09IGlkKTtcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTGFzdCByZXNvcnQ6IHNlYXJjaCBpbiBhbGwgY2F0ZWdvcmllcyAoYnV0IHRoaXMgc2hvdWxkIHJhcmVseSBoYXBwZW4pXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVybH0vdjEvZ2xvYmFsL3JlcG9ydC1tYW5hZ2VtZW50L2NhdGVnb3J5YDtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHsgU2tpcDogMCwgVGFrZTogMTAwMCB9O1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PEFYQ1JlcG9ydENhdGVnb3J5QXBpUmVzcG9uc2U+KHVybCwgeyBwYXJhbXMgfSkpO1xuICAgICAgY29uc3QgYWxsID0gcmVzcG9uc2UuaXRlbXMgPz8gW107XG4gICAgICByZXR1cm4gYWxsLmZpbmQoKGMpID0+IGMuaWQgPT09IGlkKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cblxuICAvLyNlbmRyZWdpb25cbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQVBJIFByb3ZpZGVycyAgIC0tLS1cblxuLyoqXG4gKiBDYXRlZ29yeSBwcm92aWRlciB0aGF0IHVzZXMgdGhlIHNoYXJlZCBkYXRhIHNlcnZpY2UuXG4gKiBCb3RoIHByb3ZpZGVycyB1c2UgdGhlIHNhbWUgZGF0YVNlcnZpY2UgaW5zdGFuY2Ugd2hpY2ggZW5zdXJlcyBwcm9wZXIgY2FjaGluZy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYQ1JlcG9ydENhdGVnb3J5QXBpUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBSZXBvcnRDYXRlZ29yeVByb3ZpZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhU2VydmljZSA9IGluamVjdChBWENSZXBvcnRNYW5hZ2VtZW50RGF0YVNlcnZpY2UpO1xuXG4gIGFzeW5jIGdldExpc3QocGFyZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+IHtcbiAgICB0cnkge1xuICAgICAgLy8gRm9yIHJvb3QgbGV2ZWwsIGdldCByb290IGNhdGVnb3JpZXMgKGVhY2ggY2F0ZWdvcnkgaW5jbHVkZXMgZm9sZGVySXRlbXMgaW4gQVBJIHJlc3BvbnNlKVxuICAgICAgaWYgKCFwYXJlbnRJZCkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gYXdhaXQgdGhpcy5kYXRhU2VydmljZS5nZXRSb290Q2F0ZWdvcmllcygpO1xuICAgICAgICAvLyBFYWNoIHJvb3QgY2F0ZWdvcnkgaGFzIGZvbGRlckl0ZW1zIGluIHRoZSBBUEkgcmVzcG9uc2UsIGJ1dCB3ZSBvbmx5IHJldHVybiB0aGUgcm9vdCBjYXRlZ29yaWVzIHRoZW1zZWx2ZXNcbiAgICAgICAgLy8gVGhlIGZvbGRlckl0ZW1zIGFyZSBwcmVzZXJ2ZWQgaW4gdGhlIEFQSSByZXNwb25zZSBzdHJ1Y3R1cmUsIHNpbWlsYXIgdG8gY2hpbGQgc3RhdGVcbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkSXRlbXMubWFwKChpdGVtKSA9PiB0aGlzLm1hcEFwaUNhdGVnb3J5VG9SZXBvcnRDYXRlZ29yeShpdGVtKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEZvciBjaGlsZCBsZXZlbCwgZ2V0IGNhdGVnb3JpZXMgZnJvbSBjYXRlZ29yeSBkYXRhICh3aGljaCBpbmNsdWRlcyBmb2xkZXJJdGVtcylcbiAgICAgIC8vIFRoaXMgZW5zdXJlcyB3ZSB1c2UgdGhlIHNhbWUgQVBJIHJlc3BvbnNlIHRoYXQgZ2V0TGlzdCBmb3IgZGVmaW5pdGlvbnMgd2lsbCB1c2VcbiAgICAgIC8vIFRoZSBmb2xkZXJJdGVtcyBzdHJ1Y3R1cmUgaXMgcHJlc2VydmVkLCBzaW1pbGFyIHRvIHJvb3Qgc3RhdGVcbiAgICAgIGNvbnN0IGNhdGVnb3J5RGF0YSA9IGF3YWl0IHRoaXMuZGF0YVNlcnZpY2UuZ2V0Q2F0ZWdvcnlEYXRhKHBhcmVudElkKTtcbiAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSBjYXRlZ29yeURhdGE/LmZvbGRlckl0ZW1zID8/IFtdO1xuICAgICAgcmV0dXJuIGZpbHRlcmVkSXRlbXMubWFwKChpdGVtKSA9PiB0aGlzLm1hcEFwaUNhdGVnb3J5VG9SZXBvcnRDYXRlZ29yeShpdGVtKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHJlcG9ydCBjYXRlZ29yaWVzOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRCeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5IHwgdW5kZWZpbmVkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFwaUl0ZW0gPSBhd2FpdCB0aGlzLmRhdGFTZXJ2aWNlLmdldENhdGVnb3J5QnlJZChpZCk7XG4gICAgICBpZiAoIWFwaUl0ZW0pIHsgXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLm1hcEFwaUNhdGVnb3J5VG9SZXBvcnRDYXRlZ29yeShhcGlJdGVtKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcmVwb3J0IGNhdGVnb3J5IGJ5IElEOicsIGVycm9yKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBBcGlDYXRlZ29yeVRvUmVwb3J0Q2F0ZWdvcnkoYXBpSXRlbTogQVhDUmVwb3J0Q2F0ZWdvcnlBcGlJdGVtKTogQVhQUmVwb3J0Q2F0ZWdvcnkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogYXBpSXRlbS5pZCxcbiAgICAgIHRpdGxlOiBhcGlJdGVtLnRpdGxlLFxuICAgICAgZGVzY3JpcHRpb246IGFwaUl0ZW0uZGVzY3JpcHRpb24gfHwgdW5kZWZpbmVkLFxuICAgICAgcGFyZW50SWQ6IGFwaUl0ZW0ucmVwb3J0Q2F0ZWdvcnlQYXJlbnRJZCB8fCB1bmRlZmluZWQsXG4gICAgICBoYXNDaGlsZDogYXBpSXRlbS5mb2xkZXJDb3VudCA+IDAsIC8vIGZvbGRlckl0ZW1zID0gZm9sZGVyc1xuICAgICAgaGFzUmVwb3J0OiBhcGlJdGVtLml0ZW1Db3VudCA+IDAsIC8vIHJlcG9ydERlZmluaXRpb25JdGVtcyA9IGZpbGVzXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIERlZmluaXRpb24gcHJvdmlkZXIgdGhhdCB1c2VzIHRoZSBzaGFyZWQgZGF0YSBzZXJ2aWNlLlxuICogQm90aCBwcm92aWRlcnMgdXNlIHRoZSBzYW1lIGRhdGFTZXJ2aWNlIGluc3RhbmNlIHdoaWNoIGVuc3VyZXMgcHJvcGVyIGNhY2hpbmcuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWENSZXBvcnREZWZpbml0aW9uQXBpUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBSZXBvcnREZWZpbml0aW9uUHJvdmlkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFTZXJ2aWNlID0gaW5qZWN0KEFYQ1JlcG9ydE1hbmFnZW1lbnREYXRhU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICBhc3luYyBnZXRMaXN0KGNhdGVnb3J5SWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbltdPiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFVzZSBnZXRDYXRlZ29yeURhdGEgd2hpY2ggaXMgY2FjaGVkIGFuZCBzaGFyZWQgd2l0aCBnZXRDYXRlZ29yaWVzXG4gICAgICAvLyBUaGlzIGVuc3VyZXMgb25seSBvbmUgQVBJIGNhbGwgaXMgbWFkZSB3aGVuIGJvdGggZ2V0Q2F0ZWdvcmllcyBhbmQgZ2V0UmVwb3J0c0J5Q2F0ZWdvcnlJZCBhcmUgY2FsbGVkXG4gICAgICBjb25zdCBjYXRlZ29yeURhdGEgPSBhd2FpdCB0aGlzLmRhdGFTZXJ2aWNlLmdldENhdGVnb3J5RGF0YShjYXRlZ29yeUlkKTtcbiAgICAgIGNvbnN0IGRlZnMgPSBjYXRlZ29yeURhdGE/LnJlcG9ydERlZmluaXRpb25JdGVtcyA/PyBbXTtcblxuICAgICAgY29uc3QgcmVwb3J0RGVmaW5pdGlvbnMgPSBkZWZzLm1hcCgoaXRlbSkgPT4gdGhpcy5tYXBBcGlSZXBvcnREZWZpbml0aW9uSXRlbVRvUmVwb3J0RGVmaW5pdGlvbihpdGVtKSk7XG5cbiAgICAgIHJldHVybiByZXBvcnREZWZpbml0aW9ucztcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcmVwb3J0IGRlZmluaXRpb25zOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRCeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydERlZmluaXRpb24gfCB1bmRlZmluZWQ+IHtcbiAgICB0cnkge1xuICAgICAgLy8gTWFrZSBBUEkgY2FsbCB0byBnZXQgZnVsbCByZXBvcnQgZGVmaW5pdGlvbiB3aXRoIGxheW91dHNcbiAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZGF0YVNlcnZpY2VbJ2Jhc2VVcmwnXX0vdjEvZ2xvYmFsL3JlcG9ydC1tYW5hZ2VtZW50L3JlcG9ydC8ke2lkfWA7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8QVhDUmVwb3J0RGVmaW5pdGlvbkFwaVJlc3BvbnNlPih1cmwpKTtcbiAgICAgIFxuICAgICAgcmV0dXJuIHRoaXMubWFwQXBpUmVwb3J0RGVmaW5pdGlvblRvUmVwb3J0RGVmaW5pdGlvbihyZXNwb25zZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHJlcG9ydCBkZWZpbml0aW9uIGJ5IElEOicsIGVycm9yKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBBcGlSZXBvcnREZWZpbml0aW9uSXRlbVRvUmVwb3J0RGVmaW5pdGlvbihhcGlJdGVtOiBBWENSZXBvcnREZWZpbml0aW9uQXBpSXRlbSk6IEFYUFJlcG9ydERlZmluaXRpb24ge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogYXBpSXRlbS5pZCxcbiAgICAgIHRpdGxlOiBhcGlJdGVtLnRpdGxlLFxuICAgICAgZGVzY3JpcHRpb246IGFwaUl0ZW0uZGVzY3JpcHRpb24gfHwgdW5kZWZpbmVkLFxuICAgICAgY2F0ZWdvcnlJZHM6IGFwaUl0ZW0uY2F0ZWdvcnlJZHMsXG4gICAgICBwYXJhbWV0ZXJHcm91cHM6IFtdLCAvLyBUaGVzZSB3b3VsZCBuZWVkIHRvIGJlIGZldGNoZWQgc2VwYXJhdGVseSBpZiBuZWVkZWRcbiAgICAgIGxheW91dHM6IFtdLCAvLyBUaGVzZSB3b3VsZCBuZWVkIHRvIGJlIGZldGNoZWQgc2VwYXJhdGVseSBpZiBuZWVkZWRcbiAgICAgIGRlZmF1bHRMYXlvdXRJZDogJycsIC8vIFRoaXMgd291bGQgbmVlZCB0byBiZSBzZXQgYmFzZWQgb24gdGhlIGZpcnN0IGxheW91dFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG1hcEFwaVJlcG9ydERlZmluaXRpb25Ub1JlcG9ydERlZmluaXRpb24oYXBpUmVzcG9uc2U6IEFYQ1JlcG9ydERlZmluaXRpb25BcGlSZXNwb25zZSk6IEFYUFJlcG9ydERlZmluaXRpb24ge1xuICAgIGxldCByZXMgPSB7XG4gICAgICBpZDogYXBpUmVzcG9uc2UuaWQsXG4gICAgICB0aXRsZTogYXBpUmVzcG9uc2UudGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogYXBpUmVzcG9uc2UuZGVzY3JpcHRpb24gfHwgdW5kZWZpbmVkLFxuICAgICAgY2F0ZWdvcnlJZHM6IGFwaVJlc3BvbnNlLmNhdGVnb3J5SWRzLFxuICAgICAgcGFyYW1ldGVyR3JvdXBzOiBhcGlSZXNwb25zZS5wYXJhbWV0ZXJHcm91cHMubWFwKChncm91cCkgPT4gKHtcbiAgICAgICAgbmFtZTogZ3JvdXAubmFtZSxcbiAgICAgICAgdGl0bGU6IGdyb3VwLnRpdGxlLFxuICAgICAgICBwYXJhbWV0ZXJzOiBncm91cC5wYXJhbWV0ZXJzLm1hcCgocGFyYW0pID0+ICh7XG4gICAgICAgICAgcGF0aDogcGFyYW0ucGF0aCxcbiAgICAgICAgICB0aXRsZTogcGFyYW0udGl0bGUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHBhcmFtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIHdpZGdldDoge1xuICAgICAgICAgICAgdHlwZTogcGFyYW0ud2lkZ2V0LnR5cGUsXG4gICAgICAgICAgICBvcHRpb25zOiBwYXJhbS53aWRnZXQub3B0aW9ucyB8fCB7fSxcbiAgICAgICAgICAgIHZhbHVlVHJhbnNmb3JtczogcGFyYW0ud2lkZ2V0LnZhbHVlVHJhbnNmb3JtcyB8fCB7fSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSksXG4gICAgICB9KSksXG4gICAgICBsYXlvdXRzOiBhcGlSZXNwb25zZS5sYXlvdXRzLm1hcCgobGF5b3V0KSA9PiAoe1xuICAgICAgICBpZDogbGF5b3V0LmlkLFxuICAgICAgICB0aXRsZTogbGF5b3V0LnRpdGxlLFxuICAgICAgICBsYXlvdXQ6IGxheW91dC5sYXlvdXQsXG4gICAgICAgIGRhdGFTb3VyY2U6IGxheW91dC5kYXRhU291cmNlIGFzIGFueSxcbiAgICAgICAgZXhwb3J0OiBsYXlvdXQuZXhwb3J0LFxuICAgICAgICBpc0RlZmF1bHQ6IGxheW91dC5pc0RlZmF1bHQgfHwgZmFsc2UsXG4gICAgICB9KSksXG4gICAgICBkZWZhdWx0TGF5b3V0SWQ6IGFwaVJlc3BvbnNlLmRlZmF1bHRMYXlvdXRJZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgUHJvdmlkZXIgRXhwb3J0cyAgIC0tLS1cblxuLyoqXG4gKiBCb3RoIHByb3ZpZGVycyB1c2UgdGhlIHNhbWUgZGF0YVNlcnZpY2UgaW5zdGFuY2UgKHdoaWNoIGlzIGEgc2luZ2xldG9uKSxcbiAqIGVuc3VyaW5nIHRoZXkgc2hhcmUgdGhlIHNhbWUgY2FjaGUgYW5kIG9ubHkgb25lIEFQSSBjYWxsIGlzIG1hZGUgd2hlbiBib3RoXG4gKiBnZXRDYXRlZ29yaWVzIGFuZCBnZXRSZXBvcnRzQnlDYXRlZ29yeUlkIGFyZSBjYWxsZWQgZm9yIHRoZSBzYW1lIGNhdGVnb3J5SWQuXG4gKi9cbmV4cG9ydCBjb25zdCBBWENfUkVQT1JUX0NBVEVHT1JZX0FQSV9QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogQVhQX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUixcbiAgdXNlQ2xhc3M6IEFYQ1JlcG9ydENhdGVnb3J5QXBpUHJvdmlkZXIsXG4gIG11bHRpOiB0cnVlLFxufTtcblxuZXhwb3J0IGNvbnN0IEFYQ19SRVBPUlRfREVGSU5JVElPTl9BUElfUFJPVklERVIgPSB7XG4gIHByb3ZpZGU6IEFYUF9SRVBPUlRfREVGSU5JVElPTl9QUk9WSURFUixcbiAgdXNlQ2xhc3M6IEFYQ1JlcG9ydERlZmluaXRpb25BcGlQcm92aWRlcixcbiAgbXVsdGk6IHRydWUsXG59O1xuXG4vLyNlbmRyZWdpb25cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { AXPRuntimeModule, provideCommandSetups } from '@acorex/platform/runtime';\nimport { AXC_REPORT_CATEGORY_API_PROVIDER, AXC_REPORT_DEFINITION_API_PROVIDER, AXCReportManagementDataService } from './report-management-api.providers';\nimport * as i0 from \"@angular/core\";\nexport class AXCReportManagementApiModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportManagementApiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportManagementApiModule, imports: [AXPRuntimeModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportManagementApiModule, providers: [\n AXCReportManagementDataService,\n AXC_REPORT_CATEGORY_API_PROVIDER,\n AXC_REPORT_DEFINITION_API_PROVIDER,\n provideCommandSetups([\n {\n key: 'ReportManagement.Report:Execute',\n command: () => import('./execute.command').then((c) => c.AXCReportExecuteCommand),\n },\n ]),\n ], imports: [AXPRuntimeModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCReportManagementApiModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [AXPRuntimeModule],\n exports: [],\n declarations: [],\n providers: [\n AXCReportManagementDataService,\n AXC_REPORT_CATEGORY_API_PROVIDER,\n AXC_REPORT_DEFINITION_API_PROVIDER,\n provideCommandSetups([\n {\n key: 'ReportManagement.Report:Execute',\n command: () => import('./execute.command').then((c) => c.AXCReportExecuteCommand),\n },\n ]),\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LW1hbmFnZW1lbnQtYXBpLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L2FwaS9zcmMvbGliL3JlcG9ydC1tYW5hZ2VtZW50L3JlcG9ydC1tYW5hZ2VtZW50LWFwaS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsa0NBQWtDLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFrQnpKLE1BQU0sT0FBTyw0QkFBNEI7K0dBQTVCLDRCQUE0QjtnSEFBNUIsNEJBQTRCLFlBZjNCLGdCQUFnQjtnSEFlakIsNEJBQTRCLGFBWjFCO1lBQ1AsOEJBQThCO1lBQzlCLGdDQUFnQztZQUNoQyxrQ0FBa0M7WUFDbEMsb0JBQW9CLENBQUM7Z0JBQ2pCO29CQUNJLEdBQUcsRUFBRSxpQ0FBaUM7b0JBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQztpQkFDcEY7YUFDSixDQUFDO1NBQ0wsWUFiUyxnQkFBZ0I7OzRGQWVqQiw0QkFBNEI7a0JBaEJ4QyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUMzQixPQUFPLEVBQUUsRUFBRTtvQkFDWCxZQUFZLEVBQUUsRUFBRTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQLDhCQUE4Qjt3QkFDOUIsZ0NBQWdDO3dCQUNoQyxrQ0FBa0M7d0JBQ2xDLG9CQUFvQixDQUFDOzRCQUNqQjtnQ0FDSSxHQUFHLEVBQUUsaUNBQWlDO2dDQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUM7NkJBQ3BGO3lCQUNKLENBQUM7cUJBQ0w7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQUnVudGltZU1vZHVsZSwgcHJvdmlkZUNvbW1hbmRTZXR1cHMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWUnO1xuaW1wb3J0IHsgQVhDX1JFUE9SVF9DQVRFR09SWV9BUElfUFJPVklERVIsIEFYQ19SRVBPUlRfREVGSU5JVElPTl9BUElfUFJPVklERVIsIEFYQ1JlcG9ydE1hbmFnZW1lbnREYXRhU2VydmljZSB9IGZyb20gJy4vcmVwb3J0LW1hbmFnZW1lbnQtYXBpLnByb3ZpZGVycyc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0FYUFJ1bnRpbWVNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtdLFxuICAgIGRlY2xhcmF0aW9uczogW10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIEFYQ1JlcG9ydE1hbmFnZW1lbnREYXRhU2VydmljZSxcbiAgICAgICAgQVhDX1JFUE9SVF9DQVRFR09SWV9BUElfUFJPVklERVIsXG4gICAgICAgIEFYQ19SRVBPUlRfREVGSU5JVElPTl9BUElfUFJPVklERVIsXG4gICAgICAgIHByb3ZpZGVDb21tYW5kU2V0dXBzKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6ICdSZXBvcnRNYW5hZ2VtZW50LlJlcG9ydDpFeGVjdXRlJyxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiBpbXBvcnQoJy4vZXhlY3V0ZS5jb21tYW5kJykudGhlbigoYykgPT4gYy5BWENSZXBvcnRFeGVjdXRlQ29tbWFuZCksXG4gICAgICAgICAgICB9LFxuICAgICAgICBdKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWENSZXBvcnRNYW5hZ2VtZW50QXBpTW9kdWxlIHsgfVxuIl19","import { AXP_APPLICATION_LOADER, AXP_FEATURE_LOADER, AXP_PERMISSION_LOADER, AXP_TENANT_LOADER, AXPAuthModule, } from '@acorex/platform/auth';\nimport { AXPFileStorageService } from '@acorex/platform/common';\nimport { AXPEntityStorageService } from '@acorex/platform/layout/entity';\nimport { AXP_USER_AVATAR_PROVIDER } from '@acorex/platform/layout/components';\nimport { STRATEGY_CONFIG_TOKEN } from '@acorex/platform/layout/widgets';\nimport { NgModule } from '@angular/core';\nimport { OAuthModule } from 'angular-oauth2-oidc';\nimport { AXCApiEntityStorageService } from './api-storage.service';\nimport { AXCFileStorageApiService } from './file-storage-api.service';\nimport { AXMOidcApplicationLoader, AXMOidcFeatureLoader, AXMOidcPermissionLoader, AXCAPIOidcStrategy, AXMOidcTenantLoader, AXCApiUserAvatarProvider, } from './auth/oidc';\nimport { AXCUtilsModule } from '@acorex/connectivity/utils';\nimport { AXCReportManagementApiModule } from './report-management/report-management-api.module';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"angular-oauth2-oidc\";\nimport * as i2 from \"@acorex/platform/auth\";\nexport class AXCApiModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCApiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCApiModule, imports: [i1.OAuthModule, i2.AXPAuthModule, AXCUtilsModule,\n AXCReportManagementApiModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCApiModule, providers: [\n {\n provide: AXPEntityStorageService,\n useClass: AXCApiEntityStorageService,\n },\n {\n provide: AXPFileStorageService,\n useClass: AXCFileStorageApiService,\n },\n {\n provide: AXP_TENANT_LOADER,\n useClass: AXMOidcTenantLoader,\n },\n {\n provide: AXP_APPLICATION_LOADER,\n useClass: AXMOidcApplicationLoader,\n },\n {\n provide: AXP_PERMISSION_LOADER,\n useClass: AXMOidcPermissionLoader,\n },\n {\n provide: AXP_FEATURE_LOADER,\n useClass: AXMOidcFeatureLoader,\n },\n {\n provide: STRATEGY_CONFIG_TOKEN,\n useValue: {\n selectValueStrategy: 'valueField',\n lookupValueStrategy: 'valueField',\n },\n },\n {\n provide: AXP_USER_AVATAR_PROVIDER,\n useClass: AXCApiUserAvatarProvider,\n },\n ], imports: [OAuthModule.forRoot(),\n AXPAuthModule.forRoot({\n strategies: [AXCAPIOidcStrategy],\n }),\n AXCUtilsModule,\n AXCReportManagementApiModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXCApiModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n OAuthModule.forRoot(),\n AXPAuthModule.forRoot({\n strategies: [AXCAPIOidcStrategy],\n }),\n AXCUtilsModule,\n AXCReportManagementApiModule,\n ],\n providers: [\n {\n provide: AXPEntityStorageService,\n useClass: AXCApiEntityStorageService,\n },\n {\n provide: AXPFileStorageService,\n useClass: AXCFileStorageApiService,\n },\n {\n provide: AXP_TENANT_LOADER,\n useClass: AXMOidcTenantLoader,\n },\n {\n provide: AXP_APPLICATION_LOADER,\n useClass: AXMOidcApplicationLoader,\n },\n {\n provide: AXP_PERMISSION_LOADER,\n useClass: AXMOidcPermissionLoader,\n },\n {\n provide: AXP_FEATURE_LOADER,\n useClass: AXMOidcFeatureLoader,\n },\n {\n provide: STRATEGY_CONFIG_TOKEN,\n useValue: {\n selectValueStrategy: 'valueField',\n lookupValueStrategy: 'valueField',\n },\n },\n {\n provide: AXP_USER_AVATAR_PROVIDER,\n useClass: AXCApiUserAvatarProvider,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L2FwaS9zcmMvbGliL2FwaS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixhQUFhLEdBQ2QsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQix3QkFBd0IsR0FDekIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQUEsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0RBQWtELENBQUM7Ozs7QUFpRDVKLE1BQU0sT0FBTyxZQUFZOytHQUFaLFlBQVk7Z0hBQVosWUFBWSw4Q0ExQ3JCLGNBQWM7WUFDZCw0QkFBNEI7Z0hBeUNuQixZQUFZLGFBdkNaO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLHVCQUF1QjtnQkFDaEMsUUFBUSxFQUFFLDBCQUEwQjthQUNyQztZQUVEO2dCQUNFLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLFFBQVEsRUFBRSx3QkFBd0I7YUFDbkM7WUFDRDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixRQUFRLEVBQUUsbUJBQW1CO2FBQzlCO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLHNCQUFzQjtnQkFDL0IsUUFBUSxFQUFFLHdCQUF3QjthQUNuQztZQUNEO2dCQUNFLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLFFBQVEsRUFBRSx1QkFBdUI7YUFDbEM7WUFDRDtnQkFDRSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixRQUFRLEVBQUUsb0JBQW9CO2FBQy9CO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsUUFBUSxFQUFFO29CQUNSLG1CQUFtQixFQUFFLFlBQVk7b0JBQ2pDLG1CQUFtQixFQUFFLFlBQVk7aUJBQ2xDO2FBQ0Y7WUFDRDtnQkFDRSxPQUFPLEVBQUUsd0JBQXdCO2dCQUNqQyxRQUFRLEVBQUUsd0JBQXdCO2FBQ25DO1NBQ0YsWUE1Q0MsV0FBVyxDQUFDLE9BQU8sRUFBRTtZQUNyQixhQUFhLENBQUMsT0FBTyxDQUFDO2dCQUNwQixVQUFVLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzthQUNqQyxDQUFDO1lBQ0YsY0FBYztZQUNkLDRCQUE0Qjs7NEZBeUNuQixZQUFZO2tCQWhEeEIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsV0FBVyxDQUFDLE9BQU8sRUFBRTt3QkFDckIsYUFBYSxDQUFDLE9BQU8sQ0FBQzs0QkFDcEIsVUFBVSxFQUFFLENBQUMsa0JBQWtCLENBQUM7eUJBQ2pDLENBQUM7d0JBQ0YsY0FBYzt3QkFDZCw0QkFBNEI7cUJBQzdCO29CQUNELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsdUJBQXVCOzRCQUNoQyxRQUFRLEVBQUUsMEJBQTBCO3lCQUNyQzt3QkFFRDs0QkFDRSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixRQUFRLEVBQUUsd0JBQXdCO3lCQUNuQzt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixRQUFRLEVBQUUsbUJBQW1CO3lCQUM5Qjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsc0JBQXNCOzRCQUMvQixRQUFRLEVBQUUsd0JBQXdCO3lCQUNuQzt3QkFDRDs0QkFDRSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixRQUFRLEVBQUUsdUJBQXVCO3lCQUNsQzt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixRQUFRLEVBQUUsb0JBQW9CO3lCQUMvQjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixRQUFRLEVBQUU7Z0NBQ1IsbUJBQW1CLEVBQUUsWUFBWTtnQ0FDakMsbUJBQW1CLEVBQUUsWUFBWTs2QkFDbEM7eUJBQ0Y7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLHdCQUF3Qjs0QkFDakMsUUFBUSxFQUFFLHdCQUF3Qjt5QkFDbkM7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWFBfQVBQTElDQVRJT05fTE9BREVSLFxuICBBWFBfRkVBVFVSRV9MT0FERVIsXG4gIEFYUF9QRVJNSVNTSU9OX0xPQURFUixcbiAgQVhQX1RFTkFOVF9MT0FERVIsXG4gIEFYUEF1dGhNb2R1bGUsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBGaWxlU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBFbnRpdHlTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBBWFBfVVNFUl9BVkFUQVJfUFJPVklERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9jb21wb25lbnRzJztcbmltcG9ydCB7IFNUUkFURUdZX0NPTkZJR19UT0tFTiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldHMnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9BdXRoTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyBBWENBcGlFbnRpdHlTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vYXBpLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBBWENGaWxlU3RvcmFnZUFwaVNlcnZpY2UgfSBmcm9tICcuL2ZpbGUtc3RvcmFnZS1hcGkuc2VydmljZSc7XG5pbXBvcnQge1xuICBBWE1PaWRjQXBwbGljYXRpb25Mb2FkZXIsXG4gIEFYTU9pZGNGZWF0dXJlTG9hZGVyLFxuICBBWE1PaWRjUGVybWlzc2lvbkxvYWRlcixcbiAgQVhDQVBJT2lkY1N0cmF0ZWd5LFxuICBBWE1PaWRjVGVuYW50TG9hZGVyLFxuICBBWENBcGlVc2VyQXZhdGFyUHJvdmlkZXIsXG59IGZyb20gJy4vYXV0aC9vaWRjJztcbmltcG9ydCB7IEFYQ1V0aWxzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb25uZWN0aXZpdHkvdXRpbHMnO2ltcG9ydCB7IEFYQ1JlcG9ydE1hbmFnZW1lbnRBcGlNb2R1bGUgfSBmcm9tICcuL3JlcG9ydC1tYW5hZ2VtZW50L3JlcG9ydC1tYW5hZ2VtZW50LWFwaS5tb2R1bGUnO1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIE9BdXRoTW9kdWxlLmZvclJvb3QoKSxcbiAgICBBWFBBdXRoTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgc3RyYXRlZ2llczogW0FYQ0FQSU9pZGNTdHJhdGVneV0sXG4gICAgfSksXG4gICAgQVhDVXRpbHNNb2R1bGUsXG4gICAgQVhDUmVwb3J0TWFuYWdlbWVudEFwaU1vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQRW50aXR5U3RvcmFnZVNlcnZpY2UsXG4gICAgICB1c2VDbGFzczogQVhDQXBpRW50aXR5U3RvcmFnZVNlcnZpY2UsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUEZpbGVTdG9yYWdlU2VydmljZSxcbiAgICAgIHVzZUNsYXNzOiBBWENGaWxlU3RvcmFnZUFwaVNlcnZpY2UsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfVEVOQU5UX0xPQURFUixcbiAgICAgIHVzZUNsYXNzOiBBWE1PaWRjVGVuYW50TG9hZGVyLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX0FQUExJQ0FUSU9OX0xPQURFUixcbiAgICAgIHVzZUNsYXNzOiBBWE1PaWRjQXBwbGljYXRpb25Mb2FkZXIsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfUEVSTUlTU0lPTl9MT0FERVIsXG4gICAgICB1c2VDbGFzczogQVhNT2lkY1Blcm1pc3Npb25Mb2FkZXIsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfRkVBVFVSRV9MT0FERVIsXG4gICAgICB1c2VDbGFzczogQVhNT2lkY0ZlYXR1cmVMb2FkZXIsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBTVFJBVEVHWV9DT05GSUdfVE9LRU4sXG4gICAgICB1c2VWYWx1ZToge1xuICAgICAgICBzZWxlY3RWYWx1ZVN0cmF0ZWd5OiAndmFsdWVGaWVsZCcsXG4gICAgICAgIGxvb2t1cFZhbHVlU3RyYXRlZ3k6ICd2YWx1ZUZpZWxkJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfVVNFUl9BVkFUQVJfUFJPVklERVIsXG4gICAgICB1c2VDbGFzczogQVhDQXBpVXNlckF2YXRhclByb3ZpZGVyLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ0FwaU1vZHVsZSB7IH1cbiJdfQ==","import { AXCExternalAuthorizationService } from '@acorex/connectivity/utils';\nimport { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport { AXP_APPLICATION_LOADER, AXP_TENANT_LOADER, AXPAuthStrategy, AXPSessionService, JwtUtil, PkceUtil, TimeUtil, } from '@acorex/platform/auth';\nimport { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport * as i0 from \"@angular/core\";\n//#region ---- Class Definition ----\nexport class APIGoogleStrategy extends AXPAuthStrategy {\n constructor() {\n super();\n this.aXMAuthConfigs = inject(AXM_AUTH_CONFIG_TOKEN);\n this.oauthService = inject(OAuthService);\n this.http = inject(HttpClient);\n this.sessionService = inject(AXPSessionService);\n this.router = inject(Router);\n this.externalAuthorizationService = inject(AXCExternalAuthorizationService);\n this.tenantLoader = inject(AXP_TENANT_LOADER);\n this.applicationLoader = inject(AXP_APPLICATION_LOADER);\n }\n get name() {\n return 'google';\n }\n async configureOAuth() {\n if (this.openidConfigurationInfo)\n return;\n if (!this.authConfig) {\n if (!this.aXMAuthConfigs.authConfig) {\n throw new Error('authConfig is missing');\n }\n this.authConfig = this.aXMAuthConfigs.authConfig;\n }\n this.oauthService.configure(this.authConfig);\n this.oauthService.setStorage(localStorage);\n this.openidConfigurationInfo = await this.oauthService.loadDiscoveryDocument();\n if (!this.openidConfigurationInfo) {\n throw new Error('openidConfigurationInfo is missing');\n }\n this.oauthService.events.subscribe(async (event) => {\n // console.log('event', event);\n // if (event.type === 'token_received') {\n // console.log('Token has been refreshed');\n // }\n // if (event.type === 'token_expires') {\n // console.log('Token is about to expire. Triggering silent refresh...');\n // }\n });\n const oidcJson = localStorage.getItem(AXPSessionService.SESSION_KEY);\n if (oidcJson) {\n const authData = JSON.parse(oidcJson);\n if (authData) {\n this.sessionService.setSession(authData);\n if (authData.expiresIn && new Date(authData.expiresIn) < new Date()) {\n if (authData.expiresIn) {\n this.sessionService.refreshToken();\n }\n else {\n this.signout();\n }\n }\n }\n }\n }\n async signin(credentials) {\n const providerName = credentials['strategy'];\n await this.externalAuthorizationService.signin(providerName);\n }\n async signout() {\n localStorage.removeItem('pkce_code_verifier');\n localStorage.removeItem('oauth_provider');\n console.log('User signed out');\n }\n async refreshToken(context) {\n try {\n await this.configureOAuth();\n if (!this.authConfig || !this.authConfig.clientId) {\n throw new Error('authConfig or clientId is missing');\n }\n const authData = this.loadAuthData();\n if (!authData) {\n return { succeed: false };\n }\n const refreshToken = authData.refreshToken;\n if (!refreshToken) {\n return { succeed: false };\n }\n const body = new URLSearchParams({\n grant_type: 'refresh_token',\n client_id: this.authConfig.clientId,\n refresh_token: refreshToken,\n });\n const response = await fetch(this.openidConfigurationInfo.info.discoveryDocument.token_endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: body.toString(),\n });\n if (!response.ok) {\n throw new Error(`Token refresh failed: ${response.status} ${response.statusText}`);\n }\n const tokenData = await response.json();\n // Extract user information from the refreshed token\n const payload = JwtUtil.parseJwt(tokenData.id_token);\n const user = {\n id: payload['sub'] || '',\n title: payload['name'] || payload['email'] || '',\n name: payload['name'] || payload['email'] || '',\n avatar: payload['picture'] || '',\n };\n const tenant = payload['tenantid'] || payload['tenant']\n ? {\n id: payload['tenantid'] || payload['tenant'] || '',\n name: payload['tenantname'] || '',\n title: payload['tenanttitle'] || '',\n }\n : undefined;\n const application = payload['applicationid'] || payload['application']\n ? {\n id: payload['applicationid'] || payload['application'] || '',\n name: payload['applicationname'] || '',\n title: payload['applicationtitle'] || '',\n }\n : undefined;\n const sessionData = {\n accessToken: tokenData.access_token,\n refreshToken: tokenData.refresh_token,\n idToken: tokenData.id_token,\n strategy: 'google',\n expiresIn: TimeUtil.calculateExpireInDate(tokenData.expires_in || 0),\n user,\n tenant,\n application,\n };\n return {\n succeed: true,\n data: {\n ...sessionData,\n user: sessionData.user,\n },\n };\n }\n catch (error) {\n console.error('Error refreshing token', error);\n return { succeed: false };\n }\n }\n async updateToken(params) {\n try {\n // Ensure OAuth is configured first\n if (!this.openidConfigurationInfo) {\n await this.configureOAuth();\n }\n // If params contains 'code', exchange it for tokens\n if (params['code']) {\n const code = params['code'];\n const redirectUri = params['redirectUri'] || this.authConfig.redirectUri;\n const clientId = params['clientId'] || this.authConfig.clientId;\n const tokenEndpoint = this.openidConfigurationInfo.info.discoveryDocument.token_endpoint;\n // Get code_verifier from localStorage (PKCE)\n const codeVerifier = localStorage.getItem('pkce_code_verifier');\n localStorage.removeItem('pkce_code_verifier');\n if (!codeVerifier) {\n throw new Error('Code verifier not found. Please try signing in again.');\n }\n // Prepare body for token request\n const body = new URLSearchParams({\n grant_type: 'authorization_code',\n client_id: clientId,\n code_verifier: codeVerifier,\n code: code,\n redirect_uri: redirectUri,\n });\n // Call the token endpoint\n const response = await fetch(tokenEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: body.toString(),\n });\n if (!response.ok) {\n throw new Error(`Token exchange failed: ${response.status} ${response.statusText}`);\n }\n const tokenData = await response.json();\n if (!tokenData) {\n throw new Error('Token data not found');\n }\n // Parse the ID token to extract user information\n const payload = JwtUtil.parseJwt(tokenData.id_token);\n if (!payload) {\n throw new Error('Payload not found');\n }\n const user = {\n id: payload['sub'] || '',\n title: payload['name'] || payload['email'] || '',\n name: payload['name'] || payload['email'] || '',\n avatar: payload['picture'] || '',\n };\n const tenant = payload['tenantid'] || payload['tenant']\n ? {\n id: payload['tenantid'] || payload['tenant'] || '',\n name: payload['tenantname'] || '',\n title: payload['tenanttitle'] || '',\n }\n : undefined;\n const application = payload['applicationid'] || payload['application']\n ? {\n id: payload['applicationid'] || payload['application'] || '',\n name: payload['applicationname'] || '',\n title: payload['applicationtitle'] || '',\n }\n : undefined;\n return {\n succeed: true,\n data: {\n accessToken: tokenData.access_token,\n refreshToken: tokenData.refresh_token,\n idToken: tokenData.id_token,\n expiresIn: TimeUtil.calculateExpireInDate(tokenData.expires_in || 0),\n user,\n tenant,\n application,\n },\n };\n }\n // get Authorizeation Code\n else {\n // Extract parameters\n // Support both direct id fields and nested tenant/application objects\n const tenantId = params['tenantId'] ?? params['tenant']?.id ?? null;\n const applicationId = params['applicationId'] ?? params['application']?.id ?? null;\n const redirectUri = params['redirectUri'] || this.authConfig.redirectUri;\n const scope = params['scope'] || this.authConfig.scope;\n // Generate PKCE code verifier and challenge\n const codeVerifier = PkceUtil.generateRandomString(128);\n localStorage.setItem('pkce_code_verifier', codeVerifier);\n const codeChallenge = await PkceUtil.generateCodeChallenge(codeVerifier);\n // Build authorization URL\n const authorizeEndpoint = this.openidConfigurationInfo.info.discoveryDocument.authorization_endpoint;\n const clientId = this.authConfig.clientId;\n const responseType = 'code';\n const state = Math.random().toString(36).substring(2);\n const queryParams = [\n `response_type=${encodeURIComponent(responseType)}`,\n `client_id=${encodeURIComponent(clientId)}`,\n `redirect_uri=${encodeURIComponent(redirectUri)}`,\n `scope=${encodeURIComponent(scope)}`,\n `state=${encodeURIComponent(state)}`,\n tenantId ? `tenant_id=${encodeURIComponent(tenantId)}` : null,\n applicationId ? `application_id=${encodeURIComponent(applicationId)}` : null,\n `code_challenge=${encodeURIComponent(codeChallenge)}`,\n `code_challenge_method=S256`,\n ]\n .filter(Boolean)\n .join('&');\n const authorizeUrl = `${authorizeEndpoint}?${queryParams}`;\n window.location.href = authorizeUrl;\n await new Promise(() => { });\n return;\n }\n }\n catch (error) {\n console.error('Error in updateToken:', error);\n throw error;\n }\n }\n loadAuthData() {\n const sessionData = this.sessionService.getSessionData();\n return sessionData || undefined;\n }\n handleError(error) {\n console.error('Authentication error:', error);\n throw error;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: APIGoogleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: APIGoogleStrategy }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: APIGoogleStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWdvb2dsZS5zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29ubmVjdGl2aXR5L2FwaS9zcmMvbGliL2FwaS1nb29nbGUuc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFJZixpQkFBaUIsRUFHakIsT0FBTyxFQUNQLFFBQVEsRUFDUixRQUFRLEdBQ1QsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFL0Qsd0NBQXdDO0FBR3hDLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxlQUFlO0lBY3BEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFkRixtQkFBYyxHQUFtQixNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMvRCxpQkFBWSxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEQsU0FBSSxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxtQkFBYyxHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5RCxXQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLGlDQUE0QixHQUFHLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ3ZFLGlCQUFZLEdBQUcs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QU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztnQkFDcEMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztnQkFFNUIsT0FBTztZQUNULENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDOUMsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVk7UUFDbEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6RCxPQUFPLFdBQVcsSUFBSSxTQUFTLENBQUM7SUFDbEMsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFVO1FBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUMsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDOytHQXBUVSxpQkFBaUI7bUhBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ0V4dGVybmFsQXV0aG9yaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2Nvbm5lY3Rpdml0eS91dGlscyc7XG5pbXBvcnQgeyBBWE1fQVVUSF9DT05GSUdfVE9LRU4sIEFYTUF1dGhDb25maWdzIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL2F1dGgnO1xuaW1wb3J0IHtcbiAgQVhQX0FQUExJQ0FUSU9OX0xPQURFUixcbiAgQVhQX1RFTkFOVF9MT0FERVIsXG4gIEFYUEF1dGhTdHJhdGVneSxcbiAgQVhQQmFzZUNyZWRlbnRpYWxzLFxuICBBWFBTZXNzaW9uQ29udGV4dCxcbiAgQVhQU2Vzc2lvbkRhdGEsXG4gIEFYUFNlc3Npb25TZXJ2aWNlLFxuICBBWFBTaWduSW5SZXN1bHQsXG4gIEFYUFVzZXIsXG4gIEp3dFV0aWwsXG4gIFBrY2VVdGlsLFxuICBUaW1lVXRpbCxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcblxuLy8jcmVnaW9uIC0tLS0gICBDbGFzcyBEZWZpbml0aW9uICAgLS0tLVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVBJR29vZ2xlU3RyYXRlZ3kgZXh0ZW5kcyBBWFBBdXRoU3RyYXRlZ3kge1xuICBwcml2YXRlIGFYTUF1dGhDb25maWdzOiBBWE1BdXRoQ29uZmlncyA9IGluamVjdChBWE1fQVVUSF9DT05GSUdfVE9LRU4pO1xuICBwcml2YXRlIG9hdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlID0gaW5qZWN0KE9BdXRoU2VydmljZSk7XG4gIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZTogQVhQU2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgZXh0ZXJuYWxBdXRob3JpemF0aW9uU2VydmljZSA9IGluamVjdChBWENFeHRlcm5hbEF1dGhvcml6YXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0ZW5hbnRMb2FkZXIgPSBpbmplY3QoQVhQX1RFTkFOVF9MT0FERVIpO1xuICBwcml2YXRlIGFwcGxpY2F0aW9uTG9hZGVyID0gaW5qZWN0KEFYUF9BUFBMSUNBVElPTl9MT0FERVIpO1xuXG4gIHB1YmxpYyB1c2VySW5mbzogYW55O1xuICBwdWJsaWMgYXV0aENvbmZpZzogQXV0aENvbmZpZztcbiAgcHVibGljIG9wZW5pZENvbmZpZ3VyYXRpb25JbmZvOiBhbnk7IC8vIGNsYXJpZnkgdGhlIHR5cGUgaWYgcG9zc2libGVcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2dvb2dsZSc7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY29uZmlndXJlT0F1dGgoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMub3BlbmlkQ29uZmlndXJhdGlvbkluZm8pIHJldHVybjtcblxuICAgIGlmICghdGhpcy5hdXRoQ29uZmlnKSB7XG4gICAgICBpZiAoIXRoaXMuYVhNQXV0aENvbmZpZ3MuYXV0aENvbmZpZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F1dGhDb25maWcgaXMgbWlzc2luZycpO1xuICAgICAgfVxuICAgICAgdGhpcy5hdXRoQ29uZmlnID0gdGhpcy5hWE1BdXRoQ29uZmlncy5hdXRoQ29uZmlnO1xuICAgIH1cblxuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmNvbmZpZ3VyZSh0aGlzLmF1dGhDb25maWcpO1xuICAgIHRoaXMub2F1dGhTZXJ2aWNlLnNldFN0b3JhZ2UobG9jYWxTdG9yYWdlKTtcblxuICAgIHRoaXMub3BlbmlkQ29uZmlndXJhdGlvbkluZm8gPSBhd2FpdCB0aGlzLm9hdXRoU2VydmljZS5sb2FkRGlzY292ZXJ5RG9jdW1lbnQoKTtcblxuICAgIGlmICghdGhpcy5vcGVuaWRDb25maWd1cmF0aW9uSW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcGVuaWRDb25maWd1cmF0aW9uSW5mbyBpcyBtaXNzaW5nJyk7XG4gICAgfVxuXG4gICAgdGhpcy5vYXV0aFNlcnZpY2UuZXZlbnRzLnN1YnNjcmliZShhc3luYyAoZXZlbnQpID0+IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdldmVudCcsIGV2ZW50KTtcbiAgICAgIC8vIGlmIChldmVudC50eXBlID09PSAndG9rZW5fcmVjZWl2ZWQnKSB7XG4gICAgICAvLyAgIGNvbnNvbGUubG9nKCdUb2tlbiBoYXMgYmVlbiByZWZyZXNoZWQnKTtcbiAgICAgIC8vIH1cbiAgICAgIC8vIGlmIChldmVudC50eXBlID09PSAndG9rZW5fZXhwaXJlcycpIHtcbiAgICAgIC8vICAgY29uc29sZS5sb2coJ1Rva2VuIGlzIGFib3V0IHRvIGV4cGlyZS4gVHJpZ2dlcmluZyBzaWxlbnQgcmVmcmVzaC4uLicpO1xuICAgICAgLy8gfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgb2lkY0pzb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShBWFBTZXNzaW9uU2VydmljZS5TRVNTSU9OX0tFWSk7XG5cbiAgICBpZiAob2lkY0pzb24pIHtcbiAgICAgIGNvbnN0IGF1dGhEYXRhID0gSlNPTi5wYXJzZShvaWRjSnNvbikgYXMgQVhQU2Vzc2lvbkRhdGE7XG4gICAgICBpZiAoYXV0aERhdGEpIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXRTZXNzaW9uKGF1dGhEYXRhKTtcblxuICAgICAgICBpZiAoYXV0aERhdGEuZXhwaXJlc0luICYmIG5ldyBEYXRlKGF1dGhEYXRhLmV4cGlyZXNJbikgPCBuZXcgRGF0ZSgpKSB7XG4gICAgICAgICAgaWYgKGF1dGhEYXRhLmV4cGlyZXNJbikge1xuICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5yZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaWdub3V0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgc2lnbmluKGNyZWRlbnRpYWxzOiBBWFBCYXNlQ3JlZGVudGlhbHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcm92aWRlck5hbWUgPSBjcmVkZW50aWFsc1snc3RyYXRlZ3knXTtcbiAgICBhd2FpdCB0aGlzLmV4dGVybmFsQXV0aG9yaXphdGlvblNlcnZpY2Uuc2lnbmluKHByb3ZpZGVyTmFtZSk7XG4gIH1cblxuICBhc3luYyBzaWdub3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdwa2NlX2NvZGVfdmVyaWZpZXInKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnb2F1dGhfcHJvdmlkZXInKTtcbiAgICBjb25zb2xlLmxvZygnVXNlciBzaWduZWQgb3V0Jyk7XG4gIH1cblxuICBhc3luYyByZWZyZXNoVG9rZW4oY29udGV4dDogQVhQU2Vzc2lvbkNvbnRleHQpOiBQcm9taXNlPEFYUFNpZ25JblJlc3VsdD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpZ3VyZU9BdXRoKCk7XG4gICAgICBpZiAoIXRoaXMuYXV0aENvbmZpZyB8fCAhdGhpcy5hdXRoQ29uZmlnLmNsaWVudElkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignYXV0aENvbmZpZyBvciBjbGllbnRJZCBpcyBtaXNzaW5nJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBhdXRoRGF0YSA9IHRoaXMubG9hZEF1dGhEYXRhKCk7XG4gICAgICBpZiAoIWF1dGhEYXRhKSB7XG4gICAgICAgIHJldHVybiB7IHN1Y2NlZWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSBhdXRoRGF0YS5yZWZyZXNoVG9rZW47XG4gICAgICBpZiAoIXJlZnJlc2hUb2tlbikge1xuICAgICAgICByZXR1cm4geyBzdWNjZWVkOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBib2R5ID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgICAgIGdyYW50X3R5cGU6ICdyZWZyZXNoX3Rva2VuJyxcbiAgICAgICAgY2xpZW50X2lkOiB0aGlzLmF1dGhDb25maWcuY2xpZW50SWQhLFxuICAgICAgICByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0aGlzLm9wZW5pZENvbmZpZ3VyYXRpb25JbmZvLmluZm8uZGlzY292ZXJ5RG9jdW1lbnQudG9rZW5fZW5kcG9pbnQsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIH0sXG4gICAgICAgIGJvZHk6IGJvZHkudG9TdHJpbmcoKSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVG9rZW4gcmVmcmVzaCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRva2VuRGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAgICAgLy8gRXh0cmFjdCB1c2VyIGluZm9ybWF0aW9uIGZyb20gdGhlIHJlZnJlc2hlZCB0b2tlblxuICAgICAgY29uc3QgcGF5bG9hZCA9IEp3dFV0aWwucGFyc2VKd3QodG9rZW5EYXRhLmlkX3Rva2VuKTtcbiAgICAgIGNvbnN0IHVzZXIgPSB7XG4gICAgICAgIGlkOiBwYXlsb2FkWydzdWInXSB8fCAnJyxcbiAgICAgICAgdGl0bGU6IHBheWxvYWRbJ25hbWUnXSB8fCBwYXlsb2FkWydlbWFpbCddIHx8ICcnLFxuICAgICAgICBuYW1lOiBwYXlsb2FkWyduYW1lJ10gfHwgcGF5bG9hZFsnZW1haWwnXSB8fCAnJyxcbiAgICAgICAgYXZhdGFyOiBwYXlsb2FkWydwaWN0dXJlJ10gfHwgJycsXG4gICAgICB9IGFzIEFYUFVzZXI7XG5cbiAgICAgIGNvbnN0IHRlbmFudCA9XG4gICAgICAgIHBheWxvYWRbJ3RlbmFudGlkJ10gfHwgcGF5bG9hZFsndGVuYW50J11cbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgaWQ6IHBheWxvYWRbJ3RlbmFudGlkJ10gfHwgcGF5bG9hZFsndGVuYW50J10gfHwgJycsXG4gICAgICAgICAgICAgIG5hbWU6IHBheWxvYWRbJ3RlbmFudG5hbWUnXSB8fCAnJyxcbiAgICAgICAgICAgICAgdGl0bGU6IHBheWxvYWRbJ3RlbmFudHRpdGxlJ10gfHwgJycsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGNvbnN0IGFwcGxpY2F0aW9uID1cbiAgICAgICAgcGF5bG9hZFsnYXBwbGljYXRpb25pZCddIHx8IHBheWxvYWRbJ2FwcGxpY2F0aW9uJ11cbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgaWQ6IHBheWxvYWRbJ2FwcGxpY2F0aW9uaWQnXSB8fCBwYXlsb2FkWydhcHBsaWNhdGlvbiddIHx8ICcnLFxuICAgICAgICAgICAgICBuYW1lOiBwYXlsb2FkWydhcHBsaWNhdGlvbm5hbWUnXSB8fCAnJyxcbiAgICAgICAgICAgICAgdGl0bGU6IHBheWxvYWRbJ2FwcGxpY2F0aW9udGl0bGUnXSB8fCAnJyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgY29uc3Qgc2Vzc2lvbkRhdGE6IEFYUFNlc3Npb25EYXRhID0ge1xuICAgICAgICBhY2Nlc3NUb2tlbjogdG9rZW5EYXRhLmFjY2Vzc190b2tlbixcbiAgICAgICAgcmVmcmVzaFRva2VuOiB0b2tlbkRhdGEucmVmcmVzaF90b2tlbixcbiAgICAgICAgaWRUb2tlbjogdG9rZW5EYXRhLmlkX3Rva2VuLFxuICAgICAgICBzdHJhdGVneTogJ2dvb2dsZScsXG4gICAgICAgIGV4cGlyZXNJbjogVGltZVV0aWwuY2FsY3VsYXRlRXhwaXJlSW5EYXRlKHRva2VuRGF0YS5leHBpcmVzX2luIHx8IDApLFxuICAgICAgICB1c2VyLFxuICAgICAgICB0ZW5hbnQsXG4gICAgICAgIGFwcGxpY2F0aW9uLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VlZDogdHJ1ZSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLnNlc3Npb25EYXRhLFxuICAgICAgICAgIHVzZXI6IHNlc3Npb25EYXRhLnVzZXIgYXMgQVhQVXNlcixcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJlZnJlc2hpbmcgdG9rZW4nLCBlcnJvcik7XG4gICAgICByZXR1cm4geyBzdWNjZWVkOiBmYWxzZSB9O1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHVwZGF0ZVRva2VuKHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IFByb21pc2U8QVhQU2lnbkluUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEVuc3VyZSBPQXV0aCBpcyBjb25maWd1cmVkIGZpcnN0XG4gICAgICBpZiAoIXRoaXMub3BlbmlkQ29uZmlndXJhdGlvbkluZm8pIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb25maWd1cmVPQXV0aCgpO1xuICAgICAgfVxuICAgICAgLy8gSWYgcGFyYW1zIGNvbnRhaW5zICdjb2RlJywgZXhjaGFuZ2UgaXQgZm9yIHRva2Vuc1xuICAgICAgaWYgKHBhcmFtc1snY29kZSddKSB7XG4gICAgICAgIGNvbnN0IGNvZGUgPSBwYXJhbXNbJ2NvZGUnXTtcbiAgICAgICAgY29uc3QgcmVkaXJlY3RVcmkgPSBwYXJhbXNbJ3JlZGlyZWN0VXJpJ10gfHwgdGhpcy5hdXRoQ29uZmlnLnJlZGlyZWN0VXJpITtcbiAgICAgICAgY29uc3QgY2xpZW50SWQgPSBwYXJhbXNbJ2NsaWVudElkJ10gfHwgdGhpcy5hdXRoQ29uZmlnLmNsaWVudElkITtcbiAgICAgICAgY29uc3QgdG9rZW5FbmRwb2ludCA9IHRoaXMub3BlbmlkQ29uZmlndXJhdGlvbkluZm8uaW5mby5kaXNjb3ZlcnlEb2N1bWVudC50b2tlbl9lbmRwb2ludDtcblxuICAgICAgICAvLyBHZXQgY29kZV92ZXJpZmllciBmcm9tIGxvY2FsU3RvcmFnZSAoUEtDRSlcbiAgICAgICAgY29uc3QgY29kZVZlcmlmaWVyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3BrY2VfY29kZV92ZXJpZmllcicpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgncGtjZV9jb2RlX3ZlcmlmaWVyJyk7XG4gICAgICAgIGlmICghY29kZVZlcmlmaWVyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2RlIHZlcmlmaWVyIG5vdCBmb3VuZC4gUGxlYXNlIHRyeSBzaWduaW5nIGluIGFnYWluLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJlcGFyZSBib2R5IGZvciB0b2tlbiByZXF1ZXN0XG4gICAgICAgIGNvbnN0IGJvZHkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgICAgICBncmFudF90eXBlOiAnYXV0aG9yaXphdGlvbl9jb2RlJyxcbiAgICAgICAgICBjbGllbnRfaWQ6IGNsaWVudElkLFxuICAgICAgICAgIGNvZGVfdmVyaWZpZXI6IGNvZGVWZXJpZmllcixcbiAgICAgICAgICBjb2RlOiBjb2RlLFxuICAgICAgICAgIHJlZGlyZWN0X3VyaTogcmVkaXJlY3RVcmksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIENhbGwgdGhlIHRva2VuIGVuZHBvaW50XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godG9rZW5FbmRwb2ludCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIH0sXG4gICAgICAgICAgYm9keTogYm9keS50b1N0cmluZygpLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUb2tlbiBleGNoYW5nZSBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b2tlbkRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICAgIGlmICghdG9rZW5EYXRhKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUb2tlbiBkYXRhIG5vdCBmb3VuZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGFyc2UgdGhlIElEIHRva2VuIHRvIGV4dHJhY3QgdXNlciBpbmZvcm1hdGlvblxuICAgICAgICBjb25zdCBwYXlsb2FkID0gSnd0VXRpbC5wYXJzZUp3dCh0b2tlbkRhdGEuaWRfdG9rZW4pO1xuICAgICAgICBpZiAoIXBheWxvYWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BheWxvYWQgbm90IGZvdW5kJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1c2VyID0ge1xuICAgICAgICAgIGlkOiBwYXlsb2FkWydzdWInXSB8fCAnJyxcbiAgICAgICAgICB0aXRsZTogcGF5bG9hZFsnbmFtZSddIHx8IHBheWxvYWRbJ2VtYWlsJ10gfHwgJycsXG4gICAgICAgICAgbmFtZTogcGF5bG9hZFsnbmFtZSddIHx8IHBheWxvYWRbJ2VtYWlsJ10gfHwgJycsXG4gICAgICAgICAgYXZhdGFyOiBwYXlsb2FkWydwaWN0dXJlJ10gfHwgJycsXG4gICAgICAgIH0gYXMgQVhQVXNlcjtcblxuICAgICAgICBjb25zdCB0ZW5hbnQgPVxuICAgICAgICAgIHBheWxvYWRbJ3RlbmFudGlkJ10gfHwgcGF5bG9hZFsndGVuYW50J11cbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIGlkOiBwYXlsb2FkWyd0ZW5hbnRpZCddIHx8IHBheWxvYWRbJ3RlbmFudCddIHx8ICcnLFxuICAgICAgICAgICAgICAgIG5hbWU6IHBheWxvYWRbJ3RlbmFudG5hbWUnXSB8fCAnJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcGF5bG9hZFsndGVuYW50dGl0bGUnXSB8fCAnJyxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgYXBwbGljYXRpb24gPVxuICAgICAgICAgIHBheWxvYWRbJ2FwcGxpY2F0aW9uaWQnXSB8fCBwYXlsb2FkWydhcHBsaWNhdGlvbiddXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBpZDogcGF5bG9hZFsnYXBwbGljYXRpb25pZCddIHx8IHBheWxvYWRbJ2FwcGxpY2F0aW9uJ10gfHwgJycsXG4gICAgICAgICAgICAgICAgbmFtZTogcGF5bG9hZFsnYXBwbGljYXRpb25uYW1lJ10gfHwgJycsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBheWxvYWRbJ2FwcGxpY2F0aW9udGl0bGUnXSB8fCAnJyxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZWVkOiB0cnVlLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiB0b2tlbkRhdGEuYWNjZXNzX3Rva2VuLFxuICAgICAgICAgICAgcmVmcmVzaFRva2VuOiB0b2tlbkRhdGEucmVmcmVzaF90b2tlbixcbiAgICAgICAgICAgIGlkVG9rZW46IHRva2VuRGF0YS5pZF90b2tlbixcbiAgICAgICAgICAgIGV4cGlyZXNJbjogVGltZVV0aWwuY2FsY3VsYXRlRXhwaXJlSW5EYXRlKHRva2VuRGF0YS5leHBpcmVzX2luIHx8IDApLFxuICAgICAgICAgICAgdXNlcixcbiAgICAgICAgICAgIHRlbmFudCxcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBnZXQgQXV0aG9yaXplYXRpb24gQ29kZVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIEV4dHJhY3QgcGFyYW1ldGVyc1xuICAgICAgICAvLyBTdXBwb3J0IGJvdGggZGlyZWN0IGlkIGZpZWxkcyBhbmQgbmVzdGVkIHRlbmFudC9hcHBsaWNhdGlvbiBvYmplY3RzXG4gICAgICAgIGNvbnN0IHRlbmFudElkID0gcGFyYW1zWyd0ZW5hbnRJZCddID8/IHBhcmFtc1sndGVuYW50J10/LmlkID8/IG51bGw7XG4gICAgICAgIGNvbnN0IGFwcGxpY2F0aW9uSWQgPSBwYXJhbXNbJ2FwcGxpY2F0aW9uSWQnXSA/PyBwYXJhbXNbJ2FwcGxpY2F0aW9uJ10/LmlkID8/IG51bGw7XG4gICAgICAgIGNvbnN0IHJlZGlyZWN0VXJpID0gcGFyYW1zWydyZWRpcmVjdFVyaSddIHx8IHRoaXMuYXV0aENvbmZpZy5yZWRpcmVjdFVyaSE7XG4gICAgICAgIGNvbnN0IHNjb3BlID0gcGFyYW1zWydzY29wZSddIHx8IHRoaXMuYXV0aENvbmZpZy5zY29wZSE7XG5cbiAgICAgICAgLy8gR2VuZXJhdGUgUEtDRSBjb2RlIHZlcmlmaWVyIGFuZCBjaGFsbGVuZ2VcbiAgICAgICAgY29uc3QgY29kZVZlcmlmaWVyID0gUGtjZVV0aWwuZ2VuZXJhdGVSYW5kb21TdHJpbmcoMTI4KTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3BrY2VfY29kZV92ZXJpZmllcicsIGNvZGVWZXJpZmllcik7XG4gICAgICAgIGNvbnN0IGNvZGVDaGFsbGVuZ2UgPSBhd2FpdCBQa2NlVXRpbC5nZW5lcmF0ZUNvZGVDaGFsbGVuZ2UoY29kZVZlcmlmaWVyKTtcblxuICAgICAgICAvLyBCdWlsZCBhdXRob3JpemF0aW9uIFVSTFxuICAgICAgICBjb25zdCBhdXRob3JpemVFbmRwb2ludCA9IHRoaXMub3BlbmlkQ29uZmlndXJhdGlvbkluZm8uaW5mby5kaXNjb3ZlcnlEb2N1bWVudC5hdXRob3JpemF0aW9uX2VuZHBvaW50O1xuICAgICAgICBjb25zdCBjbGllbnRJZCA9IHRoaXMuYXV0aENvbmZpZy5jbGllbnRJZCE7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlVHlwZSA9ICdjb2RlJztcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMik7XG5cbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBbXG4gICAgICAgICAgYHJlc3BvbnNlX3R5cGU9JHtlbmNvZGVVUklDb21wb25lbnQocmVzcG9uc2VUeXBlKX1gLFxuICAgICAgICAgIGBjbGllbnRfaWQ9JHtlbmNvZGVVUklDb21wb25lbnQoY2xpZW50SWQpfWAsXG4gICAgICAgICAgYHJlZGlyZWN0X3VyaT0ke2VuY29kZVVSSUNvbXBvbmVudChyZWRpcmVjdFVyaSl9YCxcbiAgICAgICAgICBgc2NvcGU9JHtlbmNvZGVVUklDb21wb25lbnQoc2NvcGUpfWAsXG4gICAgICAgICAgYHN0YXRlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHN0YXRlKX1gLFxuICAgICAgICAgIHRlbmFudElkID8gYHRlbmFudF9pZD0ke2VuY29kZVVSSUNvbXBvbmVudCh0ZW5hbnRJZCl9YCA6IG51bGwsXG4gICAgICAgICAgYXBwbGljYXRpb25JZCA/IGBhcHBsaWNhdGlvbl9pZD0ke2VuY29kZVVSSUNvbXBvbmVudChhcHBsaWNhdGlvbklkKX1gIDogbnVsbCxcbiAgICAgICAgICBgY29kZV9jaGFsbGVuZ2U9JHtlbmNvZGVVUklDb21wb25lbnQoY29kZUNoYWxsZW5nZSl9YCxcbiAgICAgICAgICBgY29kZV9jaGFsbGVuZ2VfbWV0aG9kPVMyNTZgLFxuICAgICAgICBdXG4gICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgIC5qb2luKCcmJyk7XG5cbiAgICAgICAgY29uc3QgYXV0aG9yaXplVXJsID0gYCR7YXV0aG9yaXplRW5kcG9pbnR9PyR7cXVlcnlQYXJhbXN9YDtcblxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGF1dGhvcml6ZVVybDtcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKCkgPT4ge30pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gdXBkYXRlVG9rZW46JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkQXV0aERhdGEoKTogQVhQU2Vzc2lvbkRhdGEgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNlc3Npb25EYXRhID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRTZXNzaW9uRGF0YSgpO1xuICAgIHJldHVybiBzZXNzaW9uRGF0YSB8fCB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBuZXZlciB7XG4gICAgY29uc29sZS5lcnJvcignQXV0aGVudGljYXRpb24gZXJyb3I6JywgZXJyb3IpO1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbi8vI2VuZHJlZ2lvblxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbm5lY3Rpdml0eS1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Nvbm5lY3Rpdml0eS9hcGkvc3JjL2Fjb3JleC1jb25uZWN0aXZpdHktYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1"],"mappings":"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"}
|