@acorex/modules 20.3.0-next.6 → 20.3.0-next.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/index.d.ts +1 -0
- package/data-management/index.d.ts +22 -3
- package/fesm2022/acorex-modules-common.mjs +97 -6
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/{acorex-modules-contact-management-emergency-contact.entity-D75qsDor.mjs → acorex-modules-contact-management-emergency-contact.entity-3vnkpSvv.mjs} +10 -9
- package/fesm2022/acorex-modules-contact-management-emergency-contact.entity-3vnkpSvv.mjs.map +1 -0
- package/fesm2022/acorex-modules-contact-management.mjs +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +6 -0
- package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +9 -5
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +11 -11
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-data-management.mjs +924 -8
- package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-DhEDQZru.mjs → acorex-modules-document-management-acorex-modules-document-management-DUkSbCDD.mjs} +91 -58
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-DhEDQZru.mjs.map → acorex-modules-document-management-acorex-modules-document-management-DUkSbCDD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-Bx2Ps7uX.mjs → acorex-modules-document-management-attachment-widget.component-Ded4rmGD.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-Bx2Ps7uX.mjs.map → acorex-modules-document-management-attachment-widget.component-Ded4rmGD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-B26m8qWj.mjs → acorex-modules-document-management-create-folder-dialog.component-DdN8ilG4.mjs} +9 -9
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-B26m8qWj.mjs.map → acorex-modules-document-management-create-folder-dialog.component-DdN8ilG4.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-3DmulyK_.mjs → acorex-modules-document-management-details-view.component-DkeoYFvx.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-details-view.component-3DmulyK_.mjs.map → acorex-modules-document-management-details-view.component-DkeoYFvx.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-DmR6gFdD.mjs → acorex-modules-document-management-document-signature-popup.component-DuPMRUTY.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-DmR6gFdD.mjs.map → acorex-modules-document-management-document-signature-popup.component-DuPMRUTY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-BNyPOrzl.mjs → acorex-modules-document-management-drive-choose.component-CKMMZHrc.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-BNyPOrzl.mjs.map → acorex-modules-document-management-drive-choose.component-CKMMZHrc.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive.component-D5X_bI5D.mjs → acorex-modules-document-management-drive.component-Dh2hcCpJ.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive.component-D5X_bI5D.mjs.map → acorex-modules-document-management-drive.component-Dh2hcCpJ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-AzDtXQqt.mjs → acorex-modules-document-management-large-icons-view.component-DGUbA3xa.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-AzDtXQqt.mjs.map → acorex-modules-document-management-large-icons-view.component-DGUbA3xa.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-DCG_v9JT.mjs → acorex-modules-document-management-large-tiles-view.component-Bt6Py82M.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-DCG_v9JT.mjs.map → acorex-modules-document-management-large-tiles-view.component-Bt6Py82M.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-Cb2OVElN.mjs → acorex-modules-document-management-list-view.component-DQllDW_Q.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-Cb2OVElN.mjs.map → acorex-modules-document-management-list-view.component-DQllDW_Q.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-DsSo9G8S.mjs → acorex-modules-document-management-meta-choose-popup.component-BSYX7W79.mjs} +4 -4
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-BSYX7W79.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-EN4ttbvx.mjs → acorex-modules-document-management-small-icons-view.component-Umh8Z9qn.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-EN4ttbvx.mjs.map → acorex-modules-document-management-small-icons-view.component-Umh8Z9qn.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-C-HjbNwe.mjs → acorex-modules-document-management-small-tiles-view.component-CBgWWCdt.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-C-HjbNwe.mjs.map → acorex-modules-document-management-small-tiles-view.component-CBgWWCdt.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-BQ_KNd7M.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-CdAtMLlz.mjs} +93 -213
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-CdAtMLlz.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-employee-skill.entity-3wofaUXu.mjs → acorex-modules-human-capital-management-employee-skill.entity-BllN9Giu.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-employee-skill.entity-3wofaUXu.mjs.map → acorex-modules-human-capital-management-employee-skill.entity-BllN9Giu.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-employee.entity-1fVathnk.mjs → acorex-modules-human-capital-management-employee.entity-CKofleq7.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-employee.entity-1fVathnk.mjs.map → acorex-modules-human-capital-management-employee.entity-CKofleq7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-BWrwli0P.mjs → acorex-modules-human-capital-management-employment-type.entity-DfrErkOs.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-BWrwli0P.mjs.map → acorex-modules-human-capital-management-employment-type.entity-DfrErkOs.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-4ddc6R_K.mjs → acorex-modules-human-capital-management-leave-request.entity-Bz_4gE7D.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-4ddc6R_K.mjs.map → acorex-modules-human-capital-management-leave-request.entity-Bz_4gE7D.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-DYYJVRju.mjs → acorex-modules-human-capital-management-leave-type.entity-CFqmKzkn.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-DYYJVRju.mjs.map → acorex-modules-human-capital-management-leave-type.entity-CFqmKzkn.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-DIqdhqk4.mjs → acorex-modules-human-capital-management-position-assignment.entity-BYqhKD95.mjs} +36 -4
- package/fesm2022/acorex-modules-human-capital-management-position-assignment.entity-BYqhKD95.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-skill-level.entity-BN67pBaa.mjs → acorex-modules-human-capital-management-skill-level.entity-D4WoE6MR.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-skill-level.entity-BN67pBaa.mjs.map → acorex-modules-human-capital-management-skill-level.entity-D4WoE6MR.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-skill.entity-D4CglCC7.mjs → acorex-modules-human-capital-management-skill.entity-DqUyAAgW.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-skill.entity-D4CglCC7.mjs.map → acorex-modules-human-capital-management-skill.entity-DqUyAAgW.mjs.map} +1 -1
- package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
- package/fesm2022/{acorex-modules-locale-management-settings.provider-DKOT3qQ0.mjs → acorex-modules-locale-management-settings.provider-DsVC7IWy.mjs} +2 -1
- package/fesm2022/acorex-modules-locale-management-settings.provider-DsVC7IWy.mjs.map +1 -0
- package/fesm2022/acorex-modules-locale-management.mjs +2 -2
- package/fesm2022/acorex-modules-notification-management.mjs +5 -5
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-company.entity-BBNM-Ihr.mjs → acorex-modules-organization-management-company.entity-BZDiv8ON.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-company.entity-BZDiv8ON.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-keZ4Gk7y.mjs → acorex-modules-organization-management-org-chart.page-Caboa2La.mjs} +75 -23
- package/fesm2022/acorex-modules-organization-management-org-chart.page-Caboa2La.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-position.entity-CzBbuApR.mjs → acorex-modules-organization-management-position.entity-C26xHNVh.mjs} +4 -4
- package/fesm2022/acorex-modules-organization-management-position.entity-C26xHNVh.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-responsibility.entity-DpUTLjdp.mjs → acorex-modules-organization-management-responsibility.entity-Bdi5EEou.mjs} +4 -4
- package/fesm2022/acorex-modules-organization-management-responsibility.entity-Bdi5EEou.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-role.entity-Cz8VrdMl.mjs → acorex-modules-organization-management-role.entity-Clvyelrm.mjs} +4 -4
- package/fesm2022/acorex-modules-organization-management-role.entity-Clvyelrm.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-team.entity-7eVokp-J.mjs → acorex-modules-organization-management-team.entity-BKkmASox.mjs} +5 -5
- package/fesm2022/acorex-modules-organization-management-team.entity-BKkmASox.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management.mjs +20 -18
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-project-management-email-jsa.command-DS9XIlQ0.mjs +91 -0
- package/fesm2022/acorex-modules-project-management-email-jsa.command-DS9XIlQ0.mjs.map +1 -0
- package/fesm2022/acorex-modules-project-management-reassign-jsa.command-DbxxI3e3.mjs +88 -0
- package/fesm2022/acorex-modules-project-management-reassign-jsa.command-DbxxI3e3.mjs.map +1 -0
- package/fesm2022/acorex-modules-project-management-sign-jsa.command-cRf0DeTE.mjs +75 -0
- package/fesm2022/acorex-modules-project-management-sign-jsa.command-cRf0DeTE.mjs.map +1 -0
- package/fesm2022/acorex-modules-project-management.mjs +6 -6
- package/fesm2022/acorex-modules-report-management.mjs +4 -2
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +347 -3
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-task-management-task-board.page-DThbrMLC.mjs → acorex-modules-task-management-task-board.page-D9zaNk6g.mjs} +13 -4
- package/fesm2022/acorex-modules-task-management-task-board.page-D9zaNk6g.mjs.map +1 -0
- package/fesm2022/acorex-modules-task-management.mjs +19 -12
- package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
- package/human-capital-management/index.d.ts +1 -1
- package/package.json +1 -1
- package/security-management/index.d.ts +42 -3
- package/fesm2022/acorex-modules-contact-management-emergency-contact.entity-D75qsDor.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-DsSo9G8S.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-B7gcoDDb.mjs +0 -101
- package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-B7gcoDDb.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-BQ_KNd7M.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-position-assignment.entity-DIqdhqk4.mjs.map +0 -1
- package/fesm2022/acorex-modules-locale-management-settings.provider-DKOT3qQ0.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-company.entity-BBNM-Ihr.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-keZ4Gk7y.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-position.entity-CzBbuApR.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-responsibility.entity-DpUTLjdp.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-role.entity-Cz8VrdMl.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-team.entity-7eVokp-J.mjs.map +0 -1
- package/fesm2022/acorex-modules-project-management-email-jsa.command-BuT5Vj4Y.mjs +0 -115
- package/fesm2022/acorex-modules-project-management-email-jsa.command-BuT5Vj4Y.mjs.map +0 -1
- package/fesm2022/acorex-modules-project-management-reassign-jsa.command-B3OsacOq.mjs +0 -113
- package/fesm2022/acorex-modules-project-management-reassign-jsa.command-B3OsacOq.mjs.map +0 -1
- package/fesm2022/acorex-modules-project-management-sign-jsa.command-CJWg6Ntg.mjs +0 -77
- package/fesm2022/acorex-modules-project-management-sign-jsa.command-CJWg6Ntg.mjs.map +0 -1
- package/fesm2022/acorex-modules-task-management-task-board.page-DThbrMLC.mjs.map +0 -1
|
@@ -35,7 +35,7 @@ async function factory(injector) {
|
|
|
35
35
|
properties: [
|
|
36
36
|
{
|
|
37
37
|
name: 'title',
|
|
38
|
-
title:
|
|
38
|
+
title: `@general:terms.title`,
|
|
39
39
|
groupId: 'section',
|
|
40
40
|
schema: {
|
|
41
41
|
dataType: 'string',
|
|
@@ -169,4 +169,4 @@ async function factory(injector) {
|
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
export { factory };
|
|
172
|
-
//# sourceMappingURL=acorex-modules-organization-management-company.entity-
|
|
172
|
+
//# sourceMappingURL=acorex-modules-organization-management-company.entity-BZDiv8ON.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-modules-organization-management-company.entity-BZDiv8ON.mjs","sources":["../tmp-esm2022/organization-management/lib/entities/company/company.entity.js"],"sourcesContent":["import { AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { RootConfig } from '../../const';\nimport { AXMOrganizationManagementCompanyEntityService } from './company.service';\nimport { entityMasterCrudActions, entityMasterDeleteAction } from '@acorex/platform/layout/entity';\nexport async function factory(injector) {\n const dataService = injector.get(AXMOrganizationManagementCompanyEntityService);\n const i18n = RootConfig.config.i18n;\n const entityName = 'company';\n const entityDef = {\n module: RootConfig.module.name,\n name: RootConfig.entities.company.name,\n plugins: [\n { name: 'history' },\n { name: 'lock' },\n { name: 'compare' },\n ],\n source: '',\n title: `t(\"${entityName}.individual-title\", { scope: \"${i18n}\" })`,\n formats: {\n individual: `t(\"${entityName}.individual-title\", { scope: \"${i18n}\" })`,\n plural: `t(\"${entityName}.plural-title\", { scope: \"${i18n}\" })`,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: `t(\"${entityName}.individual-title\", { scope: \"${i18n}\" })`,\n },\n ],\n properties: [\n {\n name: 'title',\n title: `@general:terms.title`,\n groupId: 'section',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {\n width: '400px',\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n ],\n columns: [{ name: 'title' }],\n commands: {\n create: {\n execute: async (data) => {\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data) => {\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n queries: {\n byKey: {\n execute: async (id) => {\n return await dataService.getOne(id);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e) => {\n return await dataService.query(e);\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n ],\n actions: [\n entityMasterDeleteAction()\n ],\n },\n list: {\n actions: [\n ...entityMasterCrudActions()\n ],\n views: [createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] })],\n },\n },\n },\n };\n return entityDef;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS5lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQvc3JjL2xpYi9lbnRpdGllcy9jb21wYW55L2NvbXBhbnkuZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0Msa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRW5HLE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTyxDQUFDLFFBQWtCO0lBQzlDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsNkNBQTZDLENBQUMsQ0FBQztJQUNoRixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNwQyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFFN0IsTUFBTSxTQUFTLEdBQWM7UUFDM0IsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSTtRQUM5QixJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSTtRQUN0QyxPQUFPLEVBQUU7WUFDUCxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDbkIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ2hCLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtTQUNwQjtRQUNELE1BQU0sRUFBRSxFQUFFO1FBQ1YsS0FBSyxFQUFFLE1BQU0sVUFBVSxpQ0FB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QVUsRUFBRTt3QkFDVjs0QkFDRSxJQUFJLEVBQUUsT0FBTzs0QkFDYixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsRUFBRTtxQ0FDWjtpQ0FDRjs2QkFDRjt5QkFDRjtxQkFDRjtpQkFDRjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sS0FBSyxFQUFFLFdBQVc7b0JBQ2xCLFFBQVEsRUFBRTt3QkFDUjs0QkFDRSxFQUFFLEVBQUUsU0FBUzs0QkFDYixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsRUFBRTtxQ0FDWjtpQ0FDRjs2QkFDRjt5QkFDRjtxQkFDRjtvQkFDRCxVQUFVLEVBQUU7d0JBQ1Y7NEJBQ0UsSUFBSSxFQUFFLE9BQU87NEJBQ2IsTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLENBQUM7cUNBQ1g7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHdCQUF3QixFQUFFO3FCQUMzQjtpQkFDRjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osT0FBTyxFQUFFO3dCQUNQLEdBQUcsdUJBQXVCLEVBQUU7cUJBQzdCO29CQUNELEtBQUssRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDeEU7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUVGLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBFbnRpdHksIEFYUEVudGl0eUNvbW1hbmRTY29wZSwgQVhQRW50aXR5UXVlcnlUeXBlLCBjcmVhdGVBbGxRdWVyeVZpZXcgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBXaWRnZXRzQ2F0YWxvZyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1Pcmdhbml6YXRpb25NYW5hZ2VtZW50Q29tcGFueUVudGl0eVNlcnZpY2UgfSBmcm9tICcuL2NvbXBhbnkuc2VydmljZSc7XG5pbXBvcnQgeyBlbnRpdHlNYXN0ZXJDcnVkQWN0aW9ucywgZW50aXR5TWFzdGVyRGVsZXRlQWN0aW9uIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZhY3RvcnkoaW5qZWN0b3I6IEluamVjdG9yKTogUHJvbWlzZTxBWFBFbnRpdHkgfCBudWxsPiB7XG4gIGNvbnN0IGRhdGFTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEFYTU9yZ2FuaXphdGlvbk1hbmFnZW1lbnRDb21wYW55RW50aXR5U2VydmljZSk7XG4gIGNvbnN0IGkxOG4gPSBSb290Q29uZmlnLmNvbmZpZy5pMThuO1xuICBjb25zdCBlbnRpdHlOYW1lID0gJ2NvbXBhbnknO1xuXG4gIGNvbnN0IGVudGl0eURlZjogQVhQRW50aXR5ID0ge1xuICAgIG1vZHVsZTogUm9vdENvbmZpZy5tb2R1bGUubmFtZSxcbiAgICBuYW1lOiBSb290Q29uZmlnLmVudGl0aWVzLmNvbXBhbnkubmFtZSxcbiAgICBwbHVnaW5zOiBbXG4gICAgICB7IG5hbWU6ICdoaXN0b3J5JyB9LFxuICAgICAgeyBuYW1lOiAnbG9jaycgfSxcbiAgICAgIHsgbmFtZTogJ2NvbXBhcmUnIH0sXG4gICAgXSxcbiAgICBzb3VyY2U6ICcnLFxuICAgIHRpdGxlOiBgdChcIiR7ZW50aXR5TmFtZX0uaW5kaXZpZHVhbC10aXRsZVwiLCB7IHNjb3BlOiBcIiR7aTE4bn1cIiB9KWAsXG4gICAgZm9ybWF0czoge1xuICAgICAgaW5kaXZpZHVhbDogYHQoXCIke2VudGl0eU5hbWV9LmluZGl2aWR1YWwtdGl0bGVcIiwgeyBzY29wZTogXCIke2kxOG59XCIgfSlgLFxuICAgICAgcGx1cmFsOiBgdChcIiR7ZW50aXR5TmFtZX0ucGx1cmFsLXRpdGxlXCIsIHsgc2NvcGU6IFwiJHtpMThufVwiIH0pYCxcbiAgICAgIHNlYXJjaFJlc3VsdDoge1xuICAgICAgICB0aXRsZTogJ3t7IHRpdGxlIH19JyxcbiAgICAgICAgZGVzY3JpcHRpb246IFJvb3RDb25maWcubW9kdWxlLnRpdGxlLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHJlbGF0ZWRFbnRpdGllczogW10sXG4gICAgZ3JvdXBzOiBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnc2VjdGlvbicsXG4gICAgICAgIHRpdGxlOiBgdChcIiR7ZW50aXR5TmFtZX0uaW5kaXZpZHVhbC10aXRsZVwiLCB7IHNjb3BlOiBcIiR7aTE4bn1cIiB9KWAsXG4gICAgICB9LFxuICAgIF0sXG4gICAgcHJvcGVydGllczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICB0aXRsZTogYEBnZW5lcmFsOnRlcm1zLnRpdGxlYCxcbiAgICAgICAgZ3JvdXBJZDogJ3NlY3Rpb24nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICB3aWR0aDogJzQwMHB4JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBydWxlOiAncmVxdWlyZWQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgY29sdW1uczogW3sgbmFtZTogJ3RpdGxlJyB9XSxcbiAgICBjb21tYW5kczoge1xuICAgICAgY3JlYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBkYXRhU2VydmljZS5pbnNlcnRPbmUoZGF0YSk7XG4gICAgICAgICAgcmV0dXJuIHsgaWQ6IHJlcyB9O1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGRlbGV0ZToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoaWQ6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBkYXRhU2VydmljZS5kZWxldGVPbmUoaWQpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHVwZGF0ZToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLnVwZGF0ZU9uZShkYXRhLmlkLCBkYXRhKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBxdWVyaWVzOiB7XG4gICAgICBieUtleToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBkYXRhU2VydmljZS5nZXRPbmUoaWQpO1xuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBBWFBFbnRpdHlRdWVyeVR5cGUuU2luZ2xlLFxuICAgICAgfSxcbiAgICAgIGxpc3Q6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGU6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBkYXRhU2VydmljZS5xdWVyeShlKTtcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogQVhQRW50aXR5UXVlcnlUeXBlLkxpc3QsXG4gICAgICB9LFxuICAgIH0sXG4gICAgaW50ZXJmYWNlczoge1xuICAgICAgbWFzdGVyOiB7XG4gICAgICAgIGNyZWF0ZToge1xuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnc2VjdGlvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydGllczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDEyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGU6IHtcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ3NlY3Rpb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgc2luZ2xlOiB7XG4gICAgICAgICAgdGl0bGU6ICd7e3RpdGxlfX0nLFxuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnc2VjdGlvbicsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydGllczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgZW50aXR5TWFzdGVyRGVsZXRlQWN0aW9uKClcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBsaXN0OiB7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgLi4uZW50aXR5TWFzdGVyQ3J1ZEFjdGlvbnMoKVxuICAgICAgICAgIF0sXG4gICAgICAgICAgdmlld3M6IFtjcmVhdGVBbGxRdWVyeVZpZXcoeyBzb3J0czogW3sgbmFtZTogJ3RpdGxlJywgZGlyOiAnYXNjJyB9XSB9KV0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIGVudGl0eURlZjtcbn1cbiJdfQ=="],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ import { AXContextMenuComponent, AXMenuModule } from '@acorex/components/menu';
|
|
|
11
11
|
import * as i3 from '@acorex/core/translation';
|
|
12
12
|
import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
|
|
13
13
|
import { AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPageLayoutBase } from '@acorex/platform/layout/views';
|
|
14
|
-
import { AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';
|
|
14
|
+
import { AXPDynamicFormBuilderService, AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';
|
|
15
15
|
import * as i1 from '@angular/common';
|
|
16
16
|
import { CommonModule } from '@angular/common';
|
|
17
17
|
import * as i0 from '@angular/core';
|
|
@@ -22,18 +22,17 @@ import { AXMOrganizationManagementChartEntityService, RootConfig, AXMOrgChartNod
|
|
|
22
22
|
import { AXLoadingDialogService } from '@acorex/components/loading-dialog';
|
|
23
23
|
import { AXPExportService } from '@acorex/platform/common';
|
|
24
24
|
import { AXPCommandService } from '@acorex/platform/runtime';
|
|
25
|
-
import {
|
|
26
|
-
import { AXPDataGenerator } from '@acorex/platform/core';
|
|
25
|
+
import { AXPDataGenerator, getActionButton } from '@acorex/platform/core';
|
|
27
26
|
|
|
28
27
|
class AXMOrgChartService {
|
|
29
28
|
constructor() {
|
|
30
29
|
// Employee moved to HCM; resolve via runtime query mapping instead of direct service
|
|
31
30
|
this.chartService = inject(AXMOrganizationManagementChartEntityService);
|
|
32
|
-
this.sessionService = inject(AXPSessionService);
|
|
33
31
|
this.loadingDialog = inject(AXLoadingDialogService);
|
|
34
32
|
this.exportService = inject(AXPExportService);
|
|
35
33
|
this.translationService = inject(AXTranslationService);
|
|
36
34
|
this.commandService = inject(AXPCommandService);
|
|
35
|
+
this.formBuilder = inject(AXPDynamicFormBuilderService);
|
|
37
36
|
this._rootNode = signal({ id: AXPDataGenerator.uuid(), title: 'Company' }, ...(ngDevMode ? [{ debugName: "_rootNode" }] : []));
|
|
38
37
|
this.rootNode = this._rootNode.asReadonly();
|
|
39
38
|
}
|
|
@@ -49,17 +48,72 @@ class AXMOrgChartService {
|
|
|
49
48
|
this._rootNode.set(data);
|
|
50
49
|
}
|
|
51
50
|
else {
|
|
52
|
-
await this.
|
|
51
|
+
await this.generate();
|
|
53
52
|
await this.load();
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
|
-
async
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
async generate() {
|
|
56
|
+
const dialogResult = await this.showGenerateDialog();
|
|
57
|
+
if (dialogResult.cancelled) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const input = dialogResult.input || {
|
|
59
61
|
includeEmployees: true,
|
|
60
62
|
preferPrimary: true,
|
|
61
|
-
|
|
62
|
-
|
|
63
|
+
mode: 'structure',
|
|
64
|
+
};
|
|
65
|
+
// Prefer generating a fresh chart via mock command when available
|
|
66
|
+
await this.commandService.execute('OrganizationManagement.OrgChart:Generate', input);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Show dialog to get OrgChart generation parameters from user
|
|
70
|
+
*/
|
|
71
|
+
async showGenerateDialog() {
|
|
72
|
+
const dialog = this.formBuilder.dialog();
|
|
73
|
+
const dialogRef = await dialog
|
|
74
|
+
.title('@organization-management:chart.generate-dialog.title')
|
|
75
|
+
.message('@organization-management:chart.generate-dialog.message')
|
|
76
|
+
.group('chart-options', group => group
|
|
77
|
+
.field('mode', field => field
|
|
78
|
+
.title('@organization-management:chart.generate-dialog.mode.label')
|
|
79
|
+
.description('@organization-management:chart.generate-dialog.mode.description')
|
|
80
|
+
.selectionList({
|
|
81
|
+
valueField: 'value',
|
|
82
|
+
textField: 'text',
|
|
83
|
+
dataSource: [
|
|
84
|
+
{ value: 'structure', text: '@organization-management:chart.mode.structure' },
|
|
85
|
+
{ value: 'location', text: '@organization-management:chart.mode.location' },
|
|
86
|
+
{ value: 'reporting', text: '@organization-management:chart.mode.reporting' }
|
|
87
|
+
]
|
|
88
|
+
}))
|
|
89
|
+
.field('includeEmployees', field => field
|
|
90
|
+
.title('@organization-management:chart.generate-dialog.include-employees.label')
|
|
91
|
+
.description('@organization-management:chart.generate-dialog.include-employees.description')
|
|
92
|
+
.toggleSwitch())
|
|
93
|
+
.field('preferPrimary', field => field
|
|
94
|
+
.title('@organization-management:chart.generate-dialog.prefer-primary.label')
|
|
95
|
+
.description('@organization-management:chart.generate-dialog.prefer-primary.description')
|
|
96
|
+
.toggleSwitch()))
|
|
97
|
+
.context({
|
|
98
|
+
mode: 'structure',
|
|
99
|
+
includeEmployees: true,
|
|
100
|
+
preferPrimary: false
|
|
101
|
+
})
|
|
102
|
+
.actions(actions => actions
|
|
103
|
+
.cancel()
|
|
104
|
+
.submit('@general:generate'))
|
|
105
|
+
.show();
|
|
106
|
+
// Check if dialog was cancelled (result is null/undefined or has cancelled property)
|
|
107
|
+
const formData = dialogRef.context();
|
|
108
|
+
const action = dialogRef.action();
|
|
109
|
+
dialogRef.close();
|
|
110
|
+
if (!formData || action === 'cancel') {
|
|
111
|
+
return { cancelled: true };
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
cancelled: false,
|
|
115
|
+
input: formData
|
|
116
|
+
};
|
|
63
117
|
}
|
|
64
118
|
//#region ---- Printing ----
|
|
65
119
|
async printChart(element) {
|
|
@@ -174,8 +228,7 @@ class AXMOrgChartPage extends AXPPageLayoutBaseComponent {
|
|
|
174
228
|
];
|
|
175
229
|
this.#initialize = afterNextRender(async () => {
|
|
176
230
|
this.d3 = await import('d3');
|
|
177
|
-
await this.
|
|
178
|
-
await this.refreshChart();
|
|
231
|
+
await this.refresh();
|
|
179
232
|
});
|
|
180
233
|
}
|
|
181
234
|
#initialize;
|
|
@@ -361,8 +414,9 @@ class AXMOrgChartPage extends AXPPageLayoutBaseComponent {
|
|
|
361
414
|
this.viewContainerRef.clear();
|
|
362
415
|
}
|
|
363
416
|
}
|
|
364
|
-
async
|
|
417
|
+
async refresh() {
|
|
365
418
|
if (this.d3) {
|
|
419
|
+
await this.chartService.load();
|
|
366
420
|
this.createChart(this.treeContainer().nativeElement, this.chartService.rootNode());
|
|
367
421
|
}
|
|
368
422
|
}
|
|
@@ -466,21 +520,15 @@ class AXMOrgChartPage extends AXPPageLayoutBaseComponent {
|
|
|
466
520
|
async getSecondaryMenuItems() {
|
|
467
521
|
return [
|
|
468
522
|
{
|
|
469
|
-
|
|
470
|
-
icon: 'fa-light fa-print',
|
|
471
|
-
color: 'primary',
|
|
472
|
-
name: 'print',
|
|
523
|
+
...getActionButton('print'),
|
|
473
524
|
command: {
|
|
474
525
|
name: 'print',
|
|
475
526
|
},
|
|
476
527
|
},
|
|
477
528
|
{
|
|
478
|
-
|
|
479
|
-
icon: 'fa-light fa-generate',
|
|
480
|
-
color: 'primary',
|
|
481
|
-
name: 'generate',
|
|
529
|
+
...getActionButton('refresh'),
|
|
482
530
|
command: {
|
|
483
|
-
name: '
|
|
531
|
+
name: 'refresh',
|
|
484
532
|
},
|
|
485
533
|
}
|
|
486
534
|
];
|
|
@@ -496,6 +544,10 @@ class AXMOrgChartPage extends AXPPageLayoutBaseComponent {
|
|
|
496
544
|
if (command.name == 'print') {
|
|
497
545
|
await this.printChart();
|
|
498
546
|
}
|
|
547
|
+
if (command.name == 'refresh') {
|
|
548
|
+
await this.chartService.generate();
|
|
549
|
+
await this.refresh();
|
|
550
|
+
}
|
|
499
551
|
}
|
|
500
552
|
ngOnDestroy() {
|
|
501
553
|
this.clearChart(this.treeContainer().nativeElement);
|
|
@@ -541,4 +593,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
|
|
|
541
593
|
}] });
|
|
542
594
|
|
|
543
595
|
export { AXMOrgChartPage };
|
|
544
|
-
//# sourceMappingURL=acorex-modules-organization-management-org-chart.page-
|
|
596
|
+
//# sourceMappingURL=acorex-modules-organization-management-org-chart.page-Caboa2La.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-modules-organization-management-org-chart.page-Caboa2La.mjs","sources":["../tmp-esm2022/organization-management/lib/features/organization-chart/org-chart.service.js","../tmp-esm2022/organization-management/lib/features/organization-chart/org-chart.page.js"],"sourcesContent":["import { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPExportService } from '@acorex/platform/common';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { AXPDynamicFormBuilderService } from '@acorex/platform/layout/components';\nimport { AXPDataGenerator } from '@acorex/platform/core';\nimport { inject, Injectable, signal } from '@angular/core';\nimport { AXMOrganizationManagementChartEntityService } from '../../entities';\nimport * as i0 from \"@angular/core\";\nexport class AXMOrgChartService {\n constructor() {\n // Employee moved to HCM; resolve via runtime query mapping instead of direct service\n this.chartService = inject(AXMOrganizationManagementChartEntityService);\n this.loadingDialog = inject(AXLoadingDialogService);\n this.exportService = inject(AXPExportService);\n this.translationService = inject(AXTranslationService);\n this.commandService = inject(AXPCommandService);\n this.formBuilder = inject(AXPDynamicFormBuilderService);\n this._rootNode = signal({ id: AXPDataGenerator.uuid(), title: 'Company' }, ...(ngDevMode ? [{ debugName: \"_rootNode\" }] : []));\n this.rootNode = this._rootNode.asReadonly();\n }\n async load() {\n const first = (await this.chartService.query({\n skip: 0,\n take: 1,\n sort: [{ field: 'version', dir: 'desc' }],\n })).items[0];\n //\n if (first && first.data) {\n const data = first.data;\n this._rootNode.set(data);\n }\n else {\n await this.generate();\n await this.load();\n }\n }\n async generate() {\n const dialogResult = await this.showGenerateDialog();\n if (dialogResult.cancelled) {\n return;\n }\n const input = dialogResult.input || {\n includeEmployees: true,\n preferPrimary: true,\n mode: 'structure',\n };\n // Prefer generating a fresh chart via mock command when available\n await this.commandService.execute('OrganizationManagement.OrgChart:Generate', input);\n }\n /**\n * Show dialog to get OrgChart generation parameters from user\n */\n async showGenerateDialog() {\n const dialog = this.formBuilder.dialog();\n const dialogRef = await dialog\n .title('@organization-management:chart.generate-dialog.title')\n .message('@organization-management:chart.generate-dialog.message')\n .group('chart-options', group => group\n .field('mode', field => field\n .title('@organization-management:chart.generate-dialog.mode.label')\n .description('@organization-management:chart.generate-dialog.mode.description')\n .selectionList({\n valueField: 'value',\n textField: 'text',\n dataSource: [\n { value: 'structure', text: '@organization-management:chart.mode.structure' },\n { value: 'location', text: '@organization-management:chart.mode.location' },\n { value: 'reporting', text: '@organization-management:chart.mode.reporting' }\n ]\n }))\n .field('includeEmployees', field => field\n .title('@organization-management:chart.generate-dialog.include-employees.label')\n .description('@organization-management:chart.generate-dialog.include-employees.description')\n .toggleSwitch())\n .field('preferPrimary', field => field\n .title('@organization-management:chart.generate-dialog.prefer-primary.label')\n .description('@organization-management:chart.generate-dialog.prefer-primary.description')\n .toggleSwitch()))\n .context({\n mode: 'structure',\n includeEmployees: true,\n preferPrimary: false\n })\n .actions(actions => actions\n .cancel()\n .submit('@general:generate'))\n .show();\n // Check if dialog was cancelled (result is null/undefined or has cancelled property)\n const formData = dialogRef.context();\n const action = dialogRef.action();\n dialogRef.close();\n if (!formData || action === 'cancel') {\n return { cancelled: true };\n }\n return {\n cancelled: false,\n input: formData\n };\n }\n //#region ---- Printing ----\n async printChart(element) {\n const d = this.loadingDialog.show({\n title: 'Printing Organization Chart...',\n mode: 'determinate',\n progressColor: 'primary',\n progressValue: 0,\n status: '0/10',\n text: 'Initializing print process...',\n buttons: [\n { text: 'Cancel', color: 'danger', onClick: () => d.close() }\n ],\n });\n try {\n await this.updateStep(d, await this.translate('preparing-document'), 10, '1/10');\n const chartElement = element;\n const { originalStyles, modifiedStyles } = this.expandChart(chartElement);\n await this.updateStep(d, await this.translate('rendering-chart-image'), 25, '2.5/10');\n const blob = await this.exportService.generateBlobFromElement(chartElement, {\n popup: true,\n filter: (node) => !(node instanceof Element && node.classList.contains('--toggle')),\n bgcolor: 'transparent',\n scale: 2,\n quality: 1,\n height: Number.parseInt(modifiedStyles.modifiedHeight),\n width: Number.parseInt(modifiedStyles.modifiedWidth),\n });\n await this.updateStep(d, await this.translate('finalizing-image-processing'), 50, '5/10');\n this.restoreChartStyles(chartElement, originalStyles);\n await this.updateStep(d, await this.translate('downloading-image'), 75, '7.5/10');\n this.exportService.download(blob, 'org-chart.png');\n await this.updateStep(d, await this.translate('process-complete'), 100, '10/10');\n setTimeout(() => d.close(), 1500);\n }\n catch (err) {\n console.error('Error capturing chart:', err);\n await this.updateStep(d, await this.translate('failed-to-generate-chart-image'), 100, 'Error', 'danger');\n d.close();\n }\n }\n expandChart(chartElement) {\n const originalStyles = {\n originalOverflow: chartElement.style.overflow,\n originalWidth: chartElement.style.width,\n originalHeight: chartElement.style.height,\n };\n const modifiedStyles = {\n modifiedOverflow: 'visible',\n modifiedWidth: `${chartElement.scrollWidth}px`,\n modifiedHeight: `${chartElement.scrollHeight}px`,\n };\n chartElement.style.overflow = modifiedStyles.modifiedOverflow;\n chartElement.style.width = modifiedStyles.modifiedWidth;\n chartElement.style.height = modifiedStyles.modifiedHeight;\n return { originalStyles, modifiedStyles };\n }\n restoreChartStyles(chartElement, originalStyles) {\n chartElement.style.overflow = originalStyles.originalOverflow;\n chartElement.style.width = originalStyles.originalWidth;\n chartElement.style.height = originalStyles.originalHeight;\n }\n async updateStep(dialog, text, progress, status, color = 'primary') {\n return new Promise((resolve) => {\n dialog.setProgressColor(color);\n dialog.setProgressText(text);\n dialog.setProgressValue(progress);\n dialog.setProgressStatus(status);\n resolve();\n });\n }\n async translate(key) {\n return (await this.translationService.translateAsync(key, { scope: 'organization-management' })) + '...';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXMOrgChartService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXMOrgChartService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXMOrgChartService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWNoYXJ0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9vcmdhbml6YXRpb24tY2hhcnQvb3JnLWNoYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNELE9BQU8sRUFBRSwyQ0FBMkMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQWdCN0UsTUFBTSxPQUFPLGtCQUFrQjtJQUQvQjtRQUdFLHFGQUFxRjtRQUM3RSxpQkFBWSxHQUFHLE1BQU0sQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBRW5FLGtCQUFhLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDL0Msa0JBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6Qyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNsRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFHMUMsY0FBUyxHQUFHLE1BQU0sQ0FBc0IsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxxREFBQyxDQUFDO1FBRTVGLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO0tBZ014RDtJQTdMUSxLQUFLLENBQUMsSUFBSTtRQUNmLE1BQU0sS0FBSyxHQUFHLENBQ1osTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUM1QixJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQztTQUMxQyxDQUFDLENBQ0gsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDWCxFQUFFO1FBQ0YsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUEyQixDQUFDO1lBQy9DLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsUUFBUTtRQUNuQixNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRXJELElBQUksWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssSUFBSTtZQUNsQyxnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLElBQUksRUFBRSxXQUFXO1NBQ08sQ0FBQztRQUUzQixrRUFBa0U7UUFDbEUsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQywwQ0FBMEMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMsa0JBQWtCO1FBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekMsTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNO2FBQzNCLEtBQUssQ0FBQyxzREFBc0QsQ0FBQzthQUM3RCxPQUFPLENBQUMsd0RBQXdELENBQUM7YUFDakUsS0FBSyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUs7YUFDbkMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUs7YUFDMUIsS0FBSyxDQUFDLDJEQUEyRCxDQUFDO2FBQ2xFLFdBQVcsQ0FBQyxpRUFBaUUsQ0FBQzthQUM5RSxhQUFhLENBQUM7WUFDYixVQUFVLEVBQUUsT0FBTztZQUNuQixTQUFTLEVBQUUsTUFBTTtZQUNqQixVQUFVLEVBQUU7Z0JBQ1YsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSwrQ0FBK0MsRUFBRTtnQkFDN0UsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSw4Q0FBOEMsRUFBRTtnQkFDM0UsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSwrQ0FBK0MsRUFBRTthQUM5RTtTQUNGLENBQUMsQ0FDSDthQUNBLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUs7YUFDdEMsS0FBSyxDQUFDLHdFQUF3RSxDQUFDO2FBQy9FLFdBQVcsQ0FBQyw4RUFBOEUsQ0FBQzthQUMzRixZQUFZLEVBQUUsQ0FDaEI7YUFDQSxLQUFLLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSzthQUNuQyxLQUFLLENBQUMscUVBQXFFLENBQUM7YUFDNUUsV0FBVyxDQUFDLDJFQUEyRSxDQUFDO2FBQ3hGLFlBQVksRUFBRSxDQUNoQixDQUNGO2FBQ0EsT0FBTyxDQUFDO1lBQ1AsSUFBSSxFQUFFLFdBQTJCO1lBQ2pDLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQzthQUNELE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU87YUFDeEIsTUFBTSxFQUFFO2FBQ1IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQzdCO2FBQ0EsSUFBSSxFQUFFLENBQUM7UUFFVixxRkFBcUY7UUFDckYsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVsQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbEIsSUFBSSxDQUFDLFFBQVEsSUFBSSxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBRUQsT0FBTztZQUNMLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLEtBQUssRUFBRSxRQUFpQztTQUN6QyxDQUFDO0lBQ0osQ0FBQztJQUVELGdDQUFnQztJQUVoQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQW9CO1FBQ25DLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ2hDLEtBQUssRUFBRSxnQ0FBZ0M7WUFDdkMsSUFBSSxFQUFFLGFBQWE7WUFDbkIsYUFBYSxFQUFFLFNBQVM7WUFDeEIsYUFBYSxFQUFFLENBQUM7WUFDaEIsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsK0JBQStCO1lBQ3JDLE9BQU8sRUFBRTtnQkFDUCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2FBQzlEO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDakYsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDO1lBQzdCLE1BQU0sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUUxRSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUN0RixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFO2dCQUMxRSxLQUFLLEVBQUUsSUFBSTtnQkFDWCxNQUFNLEVBQUUsQ0FBQyxJQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN6RixPQUFPLEVBQUUsYUFBYTtnQkFDdEIsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQztnQkFDdEQsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQzthQUNyRCxDQUFDLENBQUM7WUFFSCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMxRixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBRXRELE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2xGLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztZQUVuRCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNqRixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM3QyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDekcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsWUFBeUI7UUFDM0MsTUFBTSxjQUFjLEdBQUc7WUFDckIsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQzdDLGFBQWEsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUs7WUFDdkMsY0FBYyxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTTtTQUMxQyxDQUFDO1FBQ0YsTUFBTSxjQUFjLEdBQUc7WUFDckIsZ0JBQWdCLEVBQUUsU0FBUztZQUMzQixhQUFhLEVBQUUsR0FBRyxZQUFZLENBQUMsV0FBVyxJQUFJO1lBQzlDLGNBQWMsRUFBRSxHQUFHLFlBQVksQ0FBQyxZQUFZLElBQUk7U0FDakQsQ0FBQztRQUNGLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUM5RCxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDO1FBQ3hELFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxjQUFjLENBQUM7UUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRU8sa0JBQWtCLENBQ3hCLFlBQXlCLEVBQ3pCLGNBQTJGO1FBRTNGLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUM5RCxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDO1FBQ3hELFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxjQUFjLENBQUM7SUFDNUQsQ0FBQztJQUVPLEtBQUssQ0FBQyxVQUFVLENBQ3RCLE1BQVcsRUFDWCxJQUFZLEVBQ1osUUFBZ0IsRUFDaEIsTUFBYyxFQUNkLFFBQTBCLFNBQVM7UUFFbkMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQVc7UUFDakMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzNHLENBQUM7OEdBMU1VLGtCQUFrQjtrSEFBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhTdHlsZUNvbG9yVHlwZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWExvYWRpbmdEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmctZGlhbG9nJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUEV4cG9ydFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBDb21tYW5kU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vcnVudGltZSc7XG5pbXBvcnQgeyBBWFBEeW5hbWljRm9ybUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IEFYUERhdGFHZW5lcmF0b3IgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQVhNT3JnYW5pemF0aW9uTm9kZSB9IGZyb20gJy4vb3JnLWNoYXJ0LnR5cGUnO1xuaW1wb3J0IHsgQVhNT3JnYW5pemF0aW9uTWFuYWdlbWVudENoYXJ0RW50aXR5U2VydmljZSB9IGZyb20gJy4uLy4uL2VudGl0aWVzJztcblxuZXhwb3J0IHR5cGUgT3JnQ2hhcnRNb2RlID0gJ2xvY2F0aW9uJyB8ICdzdHJ1Y3R1cmUnIHwgJ3JlcG9ydGluZyc7XG5cbmV4cG9ydCB0eXBlIE9yZ0NoYXJ0R2VuZXJhdGVJbnB1dCA9IHtcbiAgbW9kZT86IE9yZ0NoYXJ0TW9kZTtcbiAgaW5jbHVkZUVtcGxveWVlcz86IGJvb2xlYW47XG4gIHByZWZlclByaW1hcnk/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBPcmdDaGFydERpYWxvZ1Jlc3VsdCB7XG4gIGNhbmNlbGxlZDogYm9vbGVhbjtcbiAgaW5wdXQ/OiBPcmdDaGFydEdlbmVyYXRlSW5wdXQ7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWE1PcmdDaGFydFNlcnZpY2Uge1xuXG4gIC8vIEVtcGxveWVlIG1vdmVkIHRvIEhDTTsgcmVzb2x2ZSB2aWEgcnVudGltZSBxdWVyeSBtYXBwaW5nIGluc3RlYWQgb2YgZGlyZWN0IHNlcnZpY2VcbiAgcHJpdmF0ZSBjaGFydFNlcnZpY2UgPSBpbmplY3QoQVhNT3JnYW5pemF0aW9uTWFuYWdlbWVudENoYXJ0RW50aXR5U2VydmljZSk7XG5cbiAgcHJpdmF0ZSBsb2FkaW5nRGlhbG9nID0gaW5qZWN0KEFYTG9hZGluZ0RpYWxvZ1NlcnZpY2UpO1xuICBwcml2YXRlIGV4cG9ydFNlcnZpY2UgPSBpbmplY3QoQVhQRXhwb3J0U2VydmljZSk7XG4gIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBjb21tYW5kU2VydmljZSA9IGluamVjdChBWFBDb21tYW5kU2VydmljZSk7XG4gIHByaXZhdGUgZm9ybUJ1aWxkZXIgPSBpbmplY3QoQVhQRHluYW1pY0Zvcm1CdWlsZGVyU2VydmljZSk7XG5cblxuICBwcml2YXRlIHJlYWRvbmx5IF9yb290Tm9kZSA9IHNpZ25hbDxBWE1Pcmdhbml6YXRpb25Ob2RlPih7IGlkOiBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKSwgdGl0bGU6ICdDb21wYW55JyB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcm9vdE5vZGUgPSB0aGlzLl9yb290Tm9kZS5hc1JlYWRvbmx5KCk7XG5cblxuICBwdWJsaWMgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmaXJzdCA9IChcbiAgICAgIGF3YWl0IHRoaXMuY2hhcnRTZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgICAgc2tpcDogMCxcbiAgICAgICAgdGFrZTogMSxcbiAgICAgICAgc29ydDogW3sgZmllbGQ6ICd2ZXJzaW9uJywgZGlyOiAnZGVzYycgfV0sXG4gICAgICB9KVxuICAgICkuaXRlbXNbMF07XG4gICAgLy9cbiAgICBpZiAoZmlyc3QgJiYgZmlyc3QuZGF0YSkge1xuICAgICAgY29uc3QgZGF0YSA9IGZpcnN0LmRhdGEgYXMgQVhNT3JnYW5pemF0aW9uTm9kZTtcbiAgICAgIHRoaXMuX3Jvb3ROb2RlLnNldChkYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5nZW5lcmF0ZSgpO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdlbmVyYXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRpYWxvZ1Jlc3VsdCA9IGF3YWl0IHRoaXMuc2hvd0dlbmVyYXRlRGlhbG9nKCk7XG5cbiAgICBpZiAoZGlhbG9nUmVzdWx0LmNhbmNlbGxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0ID0gZGlhbG9nUmVzdWx0LmlucHV0IHx8IHtcbiAgICAgIGluY2x1ZGVFbXBsb3llZXM6IHRydWUsXG4gICAgICBwcmVmZXJQcmltYXJ5OiB0cnVlLFxuICAgICAgbW9kZTogJ3N0cnVjdHVyZScsXG4gICAgfSBhcyBPcmdDaGFydEdlbmVyYXRlSW5wdXQ7XG5cbiAgICAvLyBQcmVmZXIgZ2VuZXJhdGluZyBhIGZyZXNoIGNoYXJ0IHZpYSBtb2NrIGNvbW1hbmQgd2hlbiBhdmFpbGFibGVcbiAgICBhd2FpdCB0aGlzLmNvbW1hbmRTZXJ2aWNlLmV4ZWN1dGUoJ09yZ2FuaXphdGlvbk1hbmFnZW1lbnQuT3JnQ2hhcnQ6R2VuZXJhdGUnLCBpbnB1dCk7XG4gIH1cblxuICAvKipcbiAgICogU2hvdyBkaWFsb2cgdG8gZ2V0IE9yZ0NoYXJ0IGdlbmVyYXRpb24gcGFyYW1ldGVycyBmcm9tIHVzZXJcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgc2hvd0dlbmVyYXRlRGlhbG9nKCk6IFByb21pc2U8T3JnQ2hhcnREaWFsb2dSZXN1bHQ+IHtcbiAgICBjb25zdCBkaWFsb2cgPSB0aGlzLmZvcm1CdWlsZGVyLmRpYWxvZygpO1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IGF3YWl0IGRpYWxvZ1xuICAgICAgLnRpdGxlKCdAb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQ6Y2hhcnQuZ2VuZXJhdGUtZGlhbG9nLnRpdGxlJylcbiAgICAgIC5tZXNzYWdlKCdAb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQ6Y2hhcnQuZ2VuZXJhdGUtZGlhbG9nLm1lc3NhZ2UnKVxuICAgICAgLmdyb3VwKCdjaGFydC1vcHRpb25zJywgZ3JvdXAgPT4gZ3JvdXBcbiAgICAgICAgLmZpZWxkKCdtb2RlJywgZmllbGQgPT4gZmllbGRcbiAgICAgICAgICAudGl0bGUoJ0Bvcmdhbml6YXRpb24tbWFuYWdlbWVudDpjaGFydC5nZW5lcmF0ZS1kaWFsb2cubW9kZS5sYWJlbCcpXG4gICAgICAgICAgLmRlc2NyaXB0aW9uKCdAb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQ6Y2hhcnQuZ2VuZXJhdGUtZGlhbG9nLm1vZGUuZGVzY3JpcHRpb24nKVxuICAgICAgICAgIC5zZWxlY3Rpb25MaXN0KHtcbiAgICAgICAgICAgIHZhbHVlRmllbGQ6ICd2YWx1ZScsXG4gICAgICAgICAgICB0ZXh0RmllbGQ6ICd0ZXh0JyxcbiAgICAgICAgICAgIGRhdGFTb3VyY2U6IFtcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ3N0cnVjdHVyZScsIHRleHQ6ICdAb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQ6Y2hhcnQubW9kZS5zdHJ1Y3R1cmUnIH0sXG4gICAgICAgICAgICAgIHsgdmFsdWU6ICdsb2NhdGlvbicsIHRleHQ6ICdAb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQ6Y2hhcnQubW9kZS5sb2NhdGlvbicgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ3JlcG9ydGluZycsIHRleHQ6ICdAb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQ6Y2hhcnQubW9kZS5yZXBvcnRpbmcnIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5maWVsZCgnaW5jbHVkZUVtcGxveWVlcycsIGZpZWxkID0+IGZpZWxkXG4gICAgICAgICAgLnRpdGxlKCdAb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQ6Y2hhcnQuZ2VuZXJhdGUtZGlhbG9nLmluY2x1ZGUtZW1wbG95ZWVzLmxhYmVsJylcbiAgICAgICAgICAuZGVzY3JpcHRpb24oJ0Bvcmdhbml6YXRpb24tbWFuYWdlbWVudDpjaGFydC5nZW5lcmF0ZS1kaWFsb2cuaW5jbHVkZS1lbXBsb3llZXMuZGVzY3JpcHRpb24nKVxuICAgICAgICAgIC50b2dnbGVTd2l0Y2goKVxuICAgICAgICApXG4gICAgICAgIC5maWVsZCgncHJlZmVyUHJpbWFyeScsIGZpZWxkID0+IGZpZWxkXG4gICAgICAgICAgLnRpdGxlKCdAb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQ6Y2hhcnQuZ2VuZXJhdGUtZGlhbG9nLnByZWZlci1wcmltYXJ5LmxhYmVsJylcbiAgICAgICAgICAuZGVzY3JpcHRpb24oJ0Bvcmdhbml6YXRpb24tbWFuYWdlbWVudDpjaGFydC5nZW5lcmF0ZS1kaWFsb2cucHJlZmVyLXByaW1hcnkuZGVzY3JpcHRpb24nKVxuICAgICAgICAgIC50b2dnbGVTd2l0Y2goKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuY29udGV4dCh7XG4gICAgICAgIG1vZGU6ICdzdHJ1Y3R1cmUnIGFzIE9yZ0NoYXJ0TW9kZSxcbiAgICAgICAgaW5jbHVkZUVtcGxveWVlczogdHJ1ZSxcbiAgICAgICAgcHJlZmVyUHJpbWFyeTogZmFsc2VcbiAgICAgIH0pXG4gICAgICAuYWN0aW9ucyhhY3Rpb25zID0+IGFjdGlvbnNcbiAgICAgICAgLmNhbmNlbCgpXG4gICAgICAgIC5zdWJtaXQoJ0BnZW5lcmFsOmdlbmVyYXRlJylcbiAgICAgIClcbiAgICAgIC5zaG93KCk7XG5cbiAgICAvLyBDaGVjayBpZiBkaWFsb2cgd2FzIGNhbmNlbGxlZCAocmVzdWx0IGlzIG51bGwvdW5kZWZpbmVkIG9yIGhhcyBjYW5jZWxsZWQgcHJvcGVydHkpXG4gICAgY29uc3QgZm9ybURhdGEgPSBkaWFsb2dSZWYuY29udGV4dCgpO1xuICAgIGNvbnN0IGFjdGlvbiA9IGRpYWxvZ1JlZi5hY3Rpb24oKTtcblxuICAgIGRpYWxvZ1JlZi5jbG9zZSgpO1xuXG4gICAgaWYgKCFmb3JtRGF0YSB8fCBhY3Rpb24gPT09ICdjYW5jZWwnKSB7XG4gICAgICByZXR1cm4geyBjYW5jZWxsZWQ6IHRydWUgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2FuY2VsbGVkOiBmYWxzZSxcbiAgICAgIGlucHV0OiBmb3JtRGF0YSBhcyBPcmdDaGFydEdlbmVyYXRlSW5wdXRcbiAgICB9O1xuICB9XG5cbiAgLy8jcmVnaW9uIC0tLS0gICBQcmludGluZyAgIC0tLS1cblxuICBhc3luYyBwcmludENoYXJ0KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZCA9IHRoaXMubG9hZGluZ0RpYWxvZy5zaG93KHtcbiAgICAgIHRpdGxlOiAnUHJpbnRpbmcgT3JnYW5pemF0aW9uIENoYXJ0Li4uJyxcbiAgICAgIG1vZGU6ICdkZXRlcm1pbmF0ZScsXG4gICAgICBwcm9ncmVzc0NvbG9yOiAncHJpbWFyeScsXG4gICAgICBwcm9ncmVzc1ZhbHVlOiAwLFxuICAgICAgc3RhdHVzOiAnMC8xMCcsXG4gICAgICB0ZXh0OiAnSW5pdGlhbGl6aW5nIHByaW50IHByb2Nlc3MuLi4nLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7IHRleHQ6ICdDYW5jZWwnLCBjb2xvcjogJ2RhbmdlcicsIG9uQ2xpY2s6ICgpID0+IGQuY2xvc2UoKSB9XG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlU3RlcChkLCBhd2FpdCB0aGlzLnRyYW5zbGF0ZSgncHJlcGFyaW5nLWRvY3VtZW50JyksIDEwLCAnMS8xMCcpO1xuICAgICAgY29uc3QgY2hhcnRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgIGNvbnN0IHsgb3JpZ2luYWxTdHlsZXMsIG1vZGlmaWVkU3R5bGVzIH0gPSB0aGlzLmV4cGFuZENoYXJ0KGNoYXJ0RWxlbWVudCk7XG5cbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlU3RlcChkLCBhd2FpdCB0aGlzLnRyYW5zbGF0ZSgncmVuZGVyaW5nLWNoYXJ0LWltYWdlJyksIDI1LCAnMi41LzEwJyk7XG4gICAgICBjb25zdCBibG9iID0gYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLmdlbmVyYXRlQmxvYkZyb21FbGVtZW50KGNoYXJ0RWxlbWVudCwge1xuICAgICAgICBwb3B1cDogdHJ1ZSxcbiAgICAgICAgZmlsdGVyOiAobm9kZTogTm9kZSkgPT4gIShub2RlIGluc3RhbmNlb2YgRWxlbWVudCAmJiBub2RlLmNsYXNzTGlzdC5jb250YWlucygnLS10b2dnbGUnKSksXG4gICAgICAgIGJnY29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIHNjYWxlOiAyLFxuICAgICAgICBxdWFsaXR5OiAxLFxuICAgICAgICBoZWlnaHQ6IE51bWJlci5wYXJzZUludChtb2RpZmllZFN0eWxlcy5tb2RpZmllZEhlaWdodCksXG4gICAgICAgIHdpZHRoOiBOdW1iZXIucGFyc2VJbnQobW9kaWZpZWRTdHlsZXMubW9kaWZpZWRXaWR0aCksXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgdGhpcy51cGRhdGVTdGVwKGQsIGF3YWl0IHRoaXMudHJhbnNsYXRlKCdmaW5hbGl6aW5nLWltYWdlLXByb2Nlc3NpbmcnKSwgNTAsICc1LzEwJyk7XG4gICAgICB0aGlzLnJlc3RvcmVDaGFydFN0eWxlcyhjaGFydEVsZW1lbnQsIG9yaWdpbmFsU3R5bGVzKTtcblxuICAgICAgYXdhaXQgdGhpcy51cGRhdGVTdGVwKGQsIGF3YWl0IHRoaXMudHJhbnNsYXRlKCdkb3dubG9hZGluZy1pbWFnZScpLCA3NSwgJzcuNS8xMCcpO1xuICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLmRvd25sb2FkKGJsb2IsICdvcmctY2hhcnQucG5nJyk7XG5cbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlU3RlcChkLCBhd2FpdCB0aGlzLnRyYW5zbGF0ZSgncHJvY2Vzcy1jb21wbGV0ZScpLCAxMDAsICcxMC8xMCcpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiBkLmNsb3NlKCksIDE1MDApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY2FwdHVyaW5nIGNoYXJ0OicsIGVycik7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZVN0ZXAoZCwgYXdhaXQgdGhpcy50cmFuc2xhdGUoJ2ZhaWxlZC10by1nZW5lcmF0ZS1jaGFydC1pbWFnZScpLCAxMDAsICdFcnJvcicsICdkYW5nZXInKTtcbiAgICAgIGQuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV4cGFuZENoYXJ0KGNoYXJ0RWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBvcmlnaW5hbFN0eWxlcyA9IHtcbiAgICAgIG9yaWdpbmFsT3ZlcmZsb3c6IGNoYXJ0RWxlbWVudC5zdHlsZS5vdmVyZmxvdyxcbiAgICAgIG9yaWdpbmFsV2lkdGg6IGNoYXJ0RWxlbWVudC5zdHlsZS53aWR0aCxcbiAgICAgIG9yaWdpbmFsSGVpZ2h0OiBjaGFydEVsZW1lbnQuc3R5bGUuaGVpZ2h0LFxuICAgIH07XG4gICAgY29uc3QgbW9kaWZpZWRTdHlsZXMgPSB7XG4gICAgICBtb2RpZmllZE92ZXJmbG93OiAndmlzaWJsZScsXG4gICAgICBtb2RpZmllZFdpZHRoOiBgJHtjaGFydEVsZW1lbnQuc2Nyb2xsV2lkdGh9cHhgLFxuICAgICAgbW9kaWZpZWRIZWlnaHQ6IGAke2NoYXJ0RWxlbWVudC5zY3JvbGxIZWlnaHR9cHhgLFxuICAgIH07XG4gICAgY2hhcnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gbW9kaWZpZWRTdHlsZXMubW9kaWZpZWRPdmVyZmxvdztcbiAgICBjaGFydEVsZW1lbnQuc3R5bGUud2lkdGggPSBtb2RpZmllZFN0eWxlcy5tb2RpZmllZFdpZHRoO1xuICAgIGNoYXJ0RWxlbWVudC5zdHlsZS5oZWlnaHQgPSBtb2RpZmllZFN0eWxlcy5tb2RpZmllZEhlaWdodDtcbiAgICByZXR1cm4geyBvcmlnaW5hbFN0eWxlcywgbW9kaWZpZWRTdHlsZXMgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzdG9yZUNoYXJ0U3R5bGVzKFxuICAgIGNoYXJ0RWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgb3JpZ2luYWxTdHlsZXM6IHsgb3JpZ2luYWxPdmVyZmxvdzogc3RyaW5nOyBvcmlnaW5hbFdpZHRoOiBzdHJpbmc7IG9yaWdpbmFsSGVpZ2h0OiBzdHJpbmcgfSxcbiAgKTogdm9pZCB7XG4gICAgY2hhcnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gb3JpZ2luYWxTdHlsZXMub3JpZ2luYWxPdmVyZmxvdztcbiAgICBjaGFydEVsZW1lbnQuc3R5bGUud2lkdGggPSBvcmlnaW5hbFN0eWxlcy5vcmlnaW5hbFdpZHRoO1xuICAgIGNoYXJ0RWxlbWVudC5zdHlsZS5oZWlnaHQgPSBvcmlnaW5hbFN0eWxlcy5vcmlnaW5hbEhlaWdodDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlU3RlcChcbiAgICBkaWFsb2c6IGFueSxcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgcHJvZ3Jlc3M6IG51bWJlcixcbiAgICBzdGF0dXM6IHN0cmluZyxcbiAgICBjb2xvcjogQVhTdHlsZUNvbG9yVHlwZSA9ICdwcmltYXJ5JyxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBkaWFsb2cuc2V0UHJvZ3Jlc3NDb2xvcihjb2xvcik7XG4gICAgICBkaWFsb2cuc2V0UHJvZ3Jlc3NUZXh0KHRleHQpO1xuICAgICAgZGlhbG9nLnNldFByb2dyZXNzVmFsdWUocHJvZ3Jlc3MpO1xuICAgICAgZGlhbG9nLnNldFByb2dyZXNzU3RhdHVzKHN0YXR1cyk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHRyYW5zbGF0ZShrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhrZXksIHsgc2NvcGU6ICdvcmdhbml6YXRpb24tbWFuYWdlbWVudCcgfSkpICsgJy4uLic7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxufVxuIl19","import { AXPanViewDirective } from '@acorex/cdk/pan-view';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXContextMenuComponent, AXMenuModule, } from '@acorex/components/menu';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport { CommonModule } from '@angular/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, inject, NgZone, signal, viewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport set from 'lodash-es/set';\nimport { RootConfig } from '../../const';\nimport { AXMOrgChartService } from './org-chart.service';\nimport { AXMOrgChartCategory, AXMOrgChartNodeType } from './org-chart.type';\nimport { getActionButton } from '@acorex/platform/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@acorex/core/translation\";\nimport * as i4 from \"@acorex/components/decorators\";\n/**\n * Component for displaying and interacting with an organizational chart.\n */\nexport class AXMOrgChartPage extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n this.rootConfig = RootConfig;\n this.nodeTemplate = viewChild.required('nodeTemplate');\n this.treeContainer = viewChild.required('chart');\n this.parent = viewChild.required('parent');\n this.contextMenu = viewChild(AXContextMenuComponent, ...(ngDevMode ? [{ debugName: \"contextMenu\" }] : []));\n this.panView = viewChild(AXPanViewDirective, ...(ngDevMode ? [{ debugName: \"panView\" }] : []));\n this.ngzone = inject(NgZone);\n this.viewContainerRef = inject(ViewContainerRef);\n // printing is handled by service itself\n this.chartService = inject(AXMOrgChartService);\n this.NODE_STROKE_COLOR = 'rgba(var(--ax-sys-color-primary-400))';\n this.LINK_STROKE_WIDTH = 1;\n this.NodeTypes = AXMOrgChartNodeType;\n this.isFullscreen = signal(false, ...(ngDevMode ? [{ debugName: \"isFullscreen\" }] : []));\n this.panX = signal(0, ...(ngDevMode ? [{ debugName: \"panX\" }] : []));\n this.panY = signal(0, ...(ngDevMode ? [{ debugName: \"panY\" }] : []));\n this.panZoomLevel = signal(100, ...(ngDevMode ? [{ debugName: \"panZoomLevel\" }] : []));\n this.isChartRendered = false;\n this.nodeTypes = [\n { title: 'Company', color: 'primary', icon: 'fal fa-building', category: AXMOrgChartCategory.Company },\n { title: 'Location', color: 'accent1', icon: 'fal fa-globe', category: AXMOrgChartCategory.Location },\n { title: 'Business Unit', color: 'accent2', icon: 'fal fa-sitemap', category: AXMOrgChartCategory.BusinessUnit },\n { title: 'Position', color: 'accent3', icon: 'fal fa-user-tie', category: AXMOrgChartCategory.Position },\n { title: 'Employee', color: 'surface', icon: 'fal fa-address-card', category: AXMOrgChartCategory.Employee },\n ];\n this.#initialize = afterNextRender(async () => {\n this.d3 = await import('d3');\n await this.refresh();\n });\n }\n #initialize;\n /**\n * Zooms in the chart.\n */\n zoomIn() {\n this.panView()?.zoomIn();\n }\n /**\n * Zooms out the chart.\n */\n zoomOut() {\n this.panView()?.zoomOut();\n }\n /**\n * Resets the zoom level and pan position of the chart.\n */\n zoomReset() {\n this.panView()?.resetPosition();\n }\n /**\n * Toggles fullscreen mode for the chart.\n */\n toggleFullscreen() {\n if (this.isFullscreen()) {\n document.exitFullscreen();\n this.isFullscreen.set(false);\n }\n else {\n this.parent().nativeElement.requestFullscreen();\n this.isFullscreen.set(true);\n }\n document.querySelector(`foreignObject[node=\"node-${this.chartService.rootNode().id}\"]`)?.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n inline: 'center',\n });\n }\n /**\n * Calculates the maximum depth of the organizational chart.\n * @param node - The root node of the chart.\n * @returns The maximum depth of the chart.\n */\n calculateMaxDepth(node) {\n if (!node.children || node.children.length === 0 || node.isExpanded === false) {\n return 1;\n }\n return 1 + Math.max(...node.children.map((child) => this.calculateMaxDepth(child)));\n }\n /**\n * Calculates the maximum breadth of the organizational chart.\n * @param node - The root node of the chart.\n * @returns The maximum breadth of the chart.\n */\n calculateMaxBreadth(node) {\n if (!node.children || node.children.length === 0 || node.isExpanded === false) {\n return 1;\n }\n return node.children.reduce((acc, child) => acc + this.calculateMaxBreadth(child), 0);\n }\n /**\n * Creates and renders the organizational chart.\n * @param el - The container element for the chart.\n * @param data - The root node of the organizational chart.\n */\n createChart(el, data) {\n if (!this.d3) {\n return;\n }\n this.ngzone.runOutsideAngular(() => {\n const NODE_WIDTH_BASE = 260;\n const NODE_HEIGHT_BASE = 180;\n const HORIZONTAL_SPACING = 20;\n const VERTICAL_SPACING = 40;\n this.clearChart(el);\n const newSvg = this.d3.select(el).append('svg');\n const root = this.d3.hierarchy(data);\n root.descendants().forEach((node) => {\n if (node.data.isExpanded === false) {\n node.children = undefined;\n }\n });\n const treeLayout = this.d3\n .tree()\n .nodeSize([NODE_WIDTH_BASE + HORIZONTAL_SPACING, NODE_HEIGHT_BASE + VERTICAL_SPACING]);\n treeLayout(root);\n let minX = Infinity, maxX = -Infinity, minY = Infinity, maxY = -Infinity;\n root.descendants().forEach((d) => {\n if (d.x < minX)\n minX = d.x;\n if (d.x > maxX)\n maxX = d.x;\n if (d.y < minY)\n minY = d.y;\n if (d.y > maxY)\n maxY = d.y;\n });\n const CONTAINER_WIDTH = maxX - minX + NODE_WIDTH_BASE + 2 * HORIZONTAL_SPACING;\n const CONTAINER_HEIGHT = maxY - minY + NODE_HEIGHT_BASE + 2 * VERTICAL_SPACING;\n newSvg.attr('width', CONTAINER_WIDTH).attr('height', CONTAINER_HEIGHT);\n const g = newSvg\n .append('g')\n .attr('transform', `translate(${-minX + NODE_WIDTH_BASE / 2 + HORIZONTAL_SPACING / 2}, ${-minY + NODE_HEIGHT_BASE / 2 + VERTICAL_SPACING / 2})`);\n const link = g\n .selectAll('.link')\n .data(root.links())\n .enter()\n .append('path')\n .attr('class', 'link')\n .attr('d', (d) => {\n const source = d.source;\n const target = d.target;\n return `M${source.x},${source.y}V${(source.y + target.y) / 2}H${target.x}V${target.y - 10}`;\n })\n .attr('fill', 'none')\n .attr('stroke', this.NODE_STROKE_COLOR)\n .attr('stroke-width', this.LINK_STROKE_WIDTH)\n .attr('from', (d) => `node-${d.source.data.id}`)\n .attr('to', (d) => `node-${d.target.data.id}`);\n const node = g\n .selectAll('.axp-chart-node')\n .data(root.descendants())\n .enter()\n .append('foreignObject')\n .attr('class', 'axp-chart-node')\n .attr('node', (d) => `node-${d.data.id}`)\n .attr('x', (d) => d.x - NODE_WIDTH_BASE / 2)\n .attr('y', (d) => d.y - NODE_HEIGHT_BASE / 2 + 10)\n .attr('width', NODE_WIDTH_BASE)\n .attr('height', NODE_HEIGHT_BASE)\n .each((d) => this.renderNodeTemplate(d.data, d.x, d.y));\n this.contextMenu()?.refresh();\n });\n if (!this.isChartRendered) {\n // document.querySelector(`foreignObject[node=\"node-${data.id}\"] .--heading-container`)?.scrollIntoView({\n // behavior: 'smooth',\n // block: 'center',\n // inline: 'center',\n // });\n this.isChartRendered = true;\n this.panView()?.resetPosition();\n }\n }\n /**\n * Renders the node template for a given organizational node.\n * @param data - The node data.\n * @param x - The x-coordinate of the node.\n * @param y - The y-coordinate of the node.\n */\n renderNodeTemplate(data, x, y) {\n // Find the key that matches the node type\n // category is the same as type in simplified structure\n set(data, 'category', data.type);\n const viewRef = this.viewContainerRef.createEmbeddedView(this.nodeTemplate(), {\n $implicit: data,\n });\n const nodeElement = this.d3.select(this.treeContainer().nativeElement).select(`[node=\"node-${data.id}\"]`);\n const element = nodeElement.node();\n if (element) {\n element.appendChild(viewRef.rootNodes[0]);\n }\n }\n /**\n * Toggles the expansion state of a node.\n * @param data - The node data.\n * @param el - The HTML element representing the node.\n */\n toggleNode(data, el) {\n data.isExpanded = data.isExpanded === undefined ? false : !data.isExpanded;\n this.createChart(this.treeContainer().nativeElement, this.chartService.rootNode());\n // el.scrollIntoView({\n // behavior: 'smooth',\n // });\n }\n /**\n * Clears the chart from the container element.\n * @param el - The container element.\n */\n clearChart(el) {\n if (this.d3) {\n this.d3.select(el).select('svg').remove();\n this.viewContainerRef.clear();\n }\n }\n async refresh() {\n if (this.d3) {\n await this.chartService.load();\n this.createChart(this.treeContainer().nativeElement, this.chartService.rootNode());\n }\n }\n //#region Context Menu\n // protected async handleContextMenuOnOpening(e: AXContextMenuOpeningEvent) {\n // const node = get(e.targetElement, '__data__.data') as any as AXMOrganizationNode;\n // const allowedAddItems = await this.chartService.getAllowedAddMenuItems(node);\n // const allowDelete = node.type != AXMOrganizationNodeType.Company;\n // const isPasteAvailable = await this.chartService.isPasteAvailable();\n // const allowPaste = await this.chartService.allowPaste(node);\n // //\n // if (allowedAddItems.length) {\n // e.items.push({\n // text: 'Add New',\n // icon: 'fa-light fa-plus',\n // items: allowedAddItems,\n // break: allowDelete,\n // });\n // }\n // //\n // if (allowDelete) {\n // e.items.push({\n // name: 'cut',\n // text: 'Cut',\n // icon: 'fa-light fa-cut',\n // data: node,\n // });\n // e.items.push({\n // name: 'copy',\n // text: 'Copy',\n // icon: 'fa-light fa-copy',\n // data: node,\n // break: !isPasteAvailable,\n // });\n // }\n // if (isPasteAvailable) {\n // e.items.push({\n // name: 'paste',\n // text: 'Paste',\n // icon: 'fa-light fa-paste',\n // data: node,\n // break: true,\n // disabled: !allowPaste,\n // });\n // }\n // //\n // if (allowDelete) {\n // e.items.push({\n // name: 'remove',\n // text: 'Remove',\n // color: 'danger',\n // icon: 'fa-light fa-trash-can',\n // data: node,\n // });\n // }\n // //\n // if (e.items.length == 0) {\n // e.canceled = true;\n // }\n // }\n async handleContextMenuItemClick(e) {\n }\n //#endregion\n /**\n * Prints the organizational chart.\n */\n async printChart() {\n let [panX, panY, panZoomLevel] = [this.panX(), this.panY(), this.panZoomLevel()];\n this.panX.set(0), this.panY.set(0), this.panZoomLevel.set(100);\n await this.chartService.printChart(this.treeContainer().nativeElement);\n this.panX.set(panX), this.panY.set(panY), this.panZoomLevel.set(panZoomLevel);\n }\n /**\n * Gets the node colors based on the provided color.\n * @param color - The color to use for the node.\n * @returns An object containing the node's background, text, and border colors.\n */\n getNodeColors(color) {\n if (color.includes('surface')) {\n return {\n '--node-bg-color': `var(--ax-sys-color-${color})`,\n '--node-text-color': `var(--ax-sys-color-on-${color})`,\n '--node-border-color': `var(--ax-sys-color-border-${color})`,\n };\n }\n return {\n '--node-bg-color': `var(--ax-sys-color-${color}-surface)`,\n '--node-text-color': `var(--ax-sys-color-on-${color}-surface)`,\n '--node-border-color': `var(--ax-sys-color-border-${color}-surface)`,\n };\n }\n updateVar(oldValue, newValue) {\n oldValue.cat = newValue;\n }\n async getPageTitle() {\n return await this.translateService.translateAsync('chart.page-title', { scope: this.rootConfig.config.i18n });\n }\n async getPageDescription() {\n return await this.translateService.translateAsync('chart.page-description', { scope: this.rootConfig.config.i18n });\n }\n async getSecondaryMenuItems() {\n return [\n {\n ...getActionButton('print'),\n command: {\n name: 'print',\n },\n },\n {\n ...getActionButton('refresh'),\n command: {\n name: 'refresh',\n },\n }\n ];\n }\n async getPageBreadcrumbs() {\n return [\n {\n title: await this.translateService.translateAsync('root-menu', { scope: this.rootConfig.config.i18n })\n },\n ];\n }\n async execute(command) {\n if (command.name == 'print') {\n await this.printChart();\n }\n if (command.name == 'refresh') {\n await this.chartService.generate();\n await this.refresh();\n }\n }\n ngOnDestroy() {\n this.clearChart(this.treeContainer().nativeElement);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXMOrgChartPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: AXMOrgChartPage, isStandalone: true, selector: \"ng-component\", providers: [\n AXMOrgChartService,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMOrgChartPage\n }\n ], viewQueries: [{ propertyName: \"nodeTemplate\", first: true, predicate: [\"nodeTemplate\"], descendants: true, isSignal: true }, { propertyName: \"treeContainer\", first: true, predicate: [\"chart\"], descendants: true, isSignal: true }, { propertyName: \"parent\", first: true, predicate: [\"parent\"], descendants: true, isSignal: true }, { propertyName: \"contextMenu\", first: true, predicate: AXContextMenuComponent, descendants: true, isSignal: true }, { propertyName: \"panView\", first: true, predicate: AXPanViewDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <axp-page-content class=\\\"ax-overflow-hidden\\\">\\n <div class=\\\"ax-h-[calc(100vh-290px)]\\\" #parent id=\\\"parent\\\">\\n <div\\n #chart\\n axPanView\\n [(panX)]=\\\"panX\\\"\\n [(panY)]=\\\"panY\\\"\\n [freeMode]=\\\"true\\\"\\n [(zoom)]=\\\"panZoomLevel\\\"\\n [fitContent]=\\\"true\\\"\\n wrapperClasses=\\\"h\\\"\\n class=\\\"ax-light\\\"\\n ></div>\\n <!-- <ax-context-menu\\n [target]=\\\"'.axp-chart-node'\\\"\\n [orientation]=\\\"'vertical'\\\"\\n [closeOn]=\\\"'leave'\\\"\\n (onItemClick)=\\\"handleContextMenuItemClick($event)\\\"\\n (onOpening)=\\\"handleContextMenuOnOpening($event)\\\"\\n >\\n </ax-context-menu> -->\\n </div>\\n </axp-page-content>\\n <axp-page-footer>\\n <axp-layout-prefix>\\n <div class=\\\"ax-flex ax-gap-1 ax-light ax-flex-wrap ax-justify-center\\\">\\n @let v = {cat:'Company'}; @for (item of nodeTypes; track $index) {\\n <div class=\\\"axp-node-hint\\\" [style]=\\\"getNodeColors(item.color)\\\" [class.ax-ms-4]=\\\"v.cat!=item.category\\\">\\n <div class=\\\"--badge\\\"></div>\\n {{item.title}}\\n </div>\\n {{updateVar(v, item.category)}} }\\n </div>\\n </axp-layout-prefix>\\n <axp-layout-suffix>\\n <div class=\\\"ax-flex ax-gap-2\\\">\\n <ax-button (onClick)=\\\"zoomOut()\\\">\\n <ax-icon class=\\\"fa-solid fa-minus\\\"> </ax-icon>\\n </ax-button>\\n <ax-button [text]=\\\"panZoomLevel()\\\" (onClick)=\\\"zoomReset()\\\"></ax-button>\\n <ax-button (onClick)=\\\"zoomIn()\\\">\\n <ax-icon class=\\\"fa-solid fa-add\\\"> </ax-icon>\\n </ax-button>\\n <ax-button (onClick)=\\\"toggleFullscreen()\\\">\\n <ax-icon>\\n <i class=\\\"fa-solid\\\" [class]=\\\"isFullscreen()? 'fa-compress' : 'fa-expand'\\\"></i>\\n </ax-icon>\\n </ax-button>\\n </div>\\n </axp-layout-suffix>\\n </axp-page-footer>\\n</axp-page-layout>\\n\\n<ng-template #nodeTemplate let-data>\\n <div>\\n @switch (data.category) {\\n <!-- Company -->\\n @case (NodeTypes.Company) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'primary' }\\\"></ng-container>\\n }\\n <!-- Location -->\\n @case (NodeTypes.Country) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent1' }\\\"></ng-container>\\n } @case (NodeTypes.State) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent1' }\\\"></ng-container>\\n } @case (NodeTypes.City) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent1' }\\\"></ng-container>\\n }\\n <!-- BusinessUnit -->\\n @case (NodeTypes.Division) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent2' }\\\"></ng-container>\\n } @case (NodeTypes.Department) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent2' }\\\"></ng-container>\\n } @case (NodeTypes.Branch) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent2' }\\\"></ng-container>\\n }\\n <!-- Role -->\\n @case (NodeTypes.Position) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent3' }\\\"></ng-container>\\n }\\n <!-- Employee -->\\n @case (NodeTypes.Employee) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'surface' }\\\"></ng-container>\\n } }\\n </div>\\n</ng-template>\\n\\n<!----------------------------------- General Node Template ----------------------------------->\\n<ng-template #generalTemplate let-data=\\\"data\\\" let-color=\\\"color\\\">\\n <div #node class=\\\"--node-container\\\" [style]=\\\"getNodeColors(color)\\\">\\n <div class=\\\"--container\\\">\\n <div class=\\\"--heading-container\\\">\\n <div class=\\\"--content\\\">\\n <div class=\\\"--icon\\\">\\n <i class=\\\"fa-light fa-xl fa-fw\\\" [class]=\\\"data.icon\\\"></i>\\n </div>\\n <div class=\\\"--titles\\\">\\n <span class=\\\"--title\\\" [title]=\\\"data.title\\\">{{data.title}}</span>\\n @if(data.subtitle) {\\n <span class=\\\"--sub-title\\\" [title]=\\\"data.subtitle\\\">{{data.subtitle}}</span>\\n }\\n </div>\\n @if(data?.children?.length){\\n <div class=\\\"--badge\\\">\\n <span>{{data?.children?.length ?? 0}}</span>\\n </div>\\n }\\n </div>\\n </div>\\n @if(data.description) {\\n <div class=\\\"--body-container\\\">\\n <div class=\\\"--description\\\" [class.ax-pb-3]=\\\"data.children && data.children.length > 0\\\">\\n <span>{{data.description}}</span>\\n </div>\\n </div>\\n } @if(data.children && data.children.length > 0){\\n <div class=\\\"--toggle\\\">\\n <ax-button class=\\\"ax-xs ax-rounded-sm\\\" (onClick)=\\\"toggleNode(data,node)\\\">\\n <ax-icon icon=\\\"fa-solid\\\" [class]=\\\"data.isExpanded === false ? 'fa-chevron-down' : 'fa-chevron-up'\\\"></ax-icon>\\n </ax-button>\\n </div>\\n }\\n </div>\\n </div>\\n</ng-template>\\n\", styles: [\".axp-node-hint{display:flex;align-items:center;justify-content:center;gap:.25rem;font-size:.75rem;line-height:1rem}.axp-node-hint>div.--badge{background-color:rgba(var(--node-bg-color));color:rgba(var(--node-text-color));display:flex;width:.75rem;height:.75rem;align-items:center;justify-content:center;border-radius:.125rem}.axp-chart-node{display:flex;align-items:center;justify-content:center}.axp-chart-node .--node-container{position:relative;cursor:pointer;--node-bg-color: var(--ax-sys-color-primary-surface);--node-text-color: var(--ax-sys-color-on-primary-surface);--node-border-color: var(--ax-sys-color-border-primary-surface)}.axp-chart-node .--node-container .--container{display:flex;max-height:100%;width:100%;flex-direction:column;overflow:hidden;border-radius:.375rem;border-width:1px;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);border-color:rgba(var(--node-border-color))}.axp-chart-node .--node-container .--container .--heading-container{background-color:rgba(var(--node-bg-color));color:rgba(var(--node-text-color));width:100%;padding:.5rem .75rem}.axp-chart-node .--node-container .--container .--heading-container .--content{display:flex;width:100%;align-items:center;justify-content:center;gap:.5rem;overflow:hidden}.axp-chart-node .--node-container .--container .--heading-container .--content .--icon{background-color:color-mix(in srgb,rgba(var(--node-bg-color),1) 85%,black);display:flex;width:2.75rem;height:2.75rem;flex:none;align-items:center;justify-content:center;border-radius:.5rem}.axp-chart-node .--node-container .--container .--heading-container .--content .--badge{background-color:color-mix(in srgb,rgba(var(--node-bg-color),1) 85%,black);display:flex;width:1.5rem;height:1.5rem;flex:none;align-items:center;justify-content:center;border-radius:.375rem;line-height:1}.axp-chart-node .--node-container .--container .--heading-container .--content .--badge>span{font-size:.75rem;line-height:1rem}.axp-chart-node .--node-container .--container .--heading-container .--content .--titles{display:flex;width:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}.axp-chart-node .--node-container .--container .--heading-container .--content .--titles .--title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-chart-node .--node-container .--container .--heading-container .--content .--titles .--sub-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;opacity:.85}.axp-chart-node .--node-container .--container .--body-container{width:100%;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lightest-surface),var(--tw-bg-opacity, 1));padding:.5rem .75rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-lightest-surface),var(--tw-text-opacity, 1))}.axp-chart-node .--node-container .--container .--body-container .--description{text-align:center;font-size:.875rem;line-height:1rem;opacity:.85}.axp-chart-node .--node-container .--container .--toggle{position:absolute;left:0;right:0;bottom:-.75rem;display:flex;width:100%;-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none;align-items:center;justify-content:center}#parent:fullscreen{background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"ngmodule\", type: \n //\n AXMenuModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i2.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i3.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i4.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"directive\", type: AXPanViewDirective, selector: \"[axPanView]\", inputs: [\"zoomStep\", \"minZoom\", \"maxZoom\", \"freeMode\", \"fitContent\", \"disablePan\", \"disableZoom\", \"wrapperClasses\", \"panX\", \"panY\", \"zoom\"], outputs: [\"panXChange\", \"panYChange\", \"zoomChange\", \"positionChange\"], exportAs: [\"axPanView\"] }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"ngmodule\", type: AXBreadcrumbsModule }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: \n //\n AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXMOrgChartPage, decorators: [{\n type: Component,\n args: [{ imports: [\n CommonModule,\n RouterModule,\n //\n AXMenuModule,\n AXButtonModule,\n AXDropdownButtonModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXPanViewDirective,\n AXLoadingModule,\n AXBreadcrumbsModule,\n AXBadgeModule,\n //\n AXPThemeLayoutBlockComponent,\n AXPPageLayoutComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n AXMOrgChartService,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMOrgChartPage\n }\n ], template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <axp-page-content class=\\\"ax-overflow-hidden\\\">\\n <div class=\\\"ax-h-[calc(100vh-290px)]\\\" #parent id=\\\"parent\\\">\\n <div\\n #chart\\n axPanView\\n [(panX)]=\\\"panX\\\"\\n [(panY)]=\\\"panY\\\"\\n [freeMode]=\\\"true\\\"\\n [(zoom)]=\\\"panZoomLevel\\\"\\n [fitContent]=\\\"true\\\"\\n wrapperClasses=\\\"h\\\"\\n class=\\\"ax-light\\\"\\n ></div>\\n <!-- <ax-context-menu\\n [target]=\\\"'.axp-chart-node'\\\"\\n [orientation]=\\\"'vertical'\\\"\\n [closeOn]=\\\"'leave'\\\"\\n (onItemClick)=\\\"handleContextMenuItemClick($event)\\\"\\n (onOpening)=\\\"handleContextMenuOnOpening($event)\\\"\\n >\\n </ax-context-menu> -->\\n </div>\\n </axp-page-content>\\n <axp-page-footer>\\n <axp-layout-prefix>\\n <div class=\\\"ax-flex ax-gap-1 ax-light ax-flex-wrap ax-justify-center\\\">\\n @let v = {cat:'Company'}; @for (item of nodeTypes; track $index) {\\n <div class=\\\"axp-node-hint\\\" [style]=\\\"getNodeColors(item.color)\\\" [class.ax-ms-4]=\\\"v.cat!=item.category\\\">\\n <div class=\\\"--badge\\\"></div>\\n {{item.title}}\\n </div>\\n {{updateVar(v, item.category)}} }\\n </div>\\n </axp-layout-prefix>\\n <axp-layout-suffix>\\n <div class=\\\"ax-flex ax-gap-2\\\">\\n <ax-button (onClick)=\\\"zoomOut()\\\">\\n <ax-icon class=\\\"fa-solid fa-minus\\\"> </ax-icon>\\n </ax-button>\\n <ax-button [text]=\\\"panZoomLevel()\\\" (onClick)=\\\"zoomReset()\\\"></ax-button>\\n <ax-button (onClick)=\\\"zoomIn()\\\">\\n <ax-icon class=\\\"fa-solid fa-add\\\"> </ax-icon>\\n </ax-button>\\n <ax-button (onClick)=\\\"toggleFullscreen()\\\">\\n <ax-icon>\\n <i class=\\\"fa-solid\\\" [class]=\\\"isFullscreen()? 'fa-compress' : 'fa-expand'\\\"></i>\\n </ax-icon>\\n </ax-button>\\n </div>\\n </axp-layout-suffix>\\n </axp-page-footer>\\n</axp-page-layout>\\n\\n<ng-template #nodeTemplate let-data>\\n <div>\\n @switch (data.category) {\\n <!-- Company -->\\n @case (NodeTypes.Company) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'primary' }\\\"></ng-container>\\n }\\n <!-- Location -->\\n @case (NodeTypes.Country) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent1' }\\\"></ng-container>\\n } @case (NodeTypes.State) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent1' }\\\"></ng-container>\\n } @case (NodeTypes.City) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent1' }\\\"></ng-container>\\n }\\n <!-- BusinessUnit -->\\n @case (NodeTypes.Division) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent2' }\\\"></ng-container>\\n } @case (NodeTypes.Department) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent2' }\\\"></ng-container>\\n } @case (NodeTypes.Branch) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent2' }\\\"></ng-container>\\n }\\n <!-- Role -->\\n @case (NodeTypes.Position) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent3' }\\\"></ng-container>\\n }\\n <!-- Employee -->\\n @case (NodeTypes.Employee) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'surface' }\\\"></ng-container>\\n } }\\n </div>\\n</ng-template>\\n\\n<!----------------------------------- General Node Template ----------------------------------->\\n<ng-template #generalTemplate let-data=\\\"data\\\" let-color=\\\"color\\\">\\n <div #node class=\\\"--node-container\\\" [style]=\\\"getNodeColors(color)\\\">\\n <div class=\\\"--container\\\">\\n <div class=\\\"--heading-container\\\">\\n <div class=\\\"--content\\\">\\n <div class=\\\"--icon\\\">\\n <i class=\\\"fa-light fa-xl fa-fw\\\" [class]=\\\"data.icon\\\"></i>\\n </div>\\n <div class=\\\"--titles\\\">\\n <span class=\\\"--title\\\" [title]=\\\"data.title\\\">{{data.title}}</span>\\n @if(data.subtitle) {\\n <span class=\\\"--sub-title\\\" [title]=\\\"data.subtitle\\\">{{data.subtitle}}</span>\\n }\\n </div>\\n @if(data?.children?.length){\\n <div class=\\\"--badge\\\">\\n <span>{{data?.children?.length ?? 0}}</span>\\n </div>\\n }\\n </div>\\n </div>\\n @if(data.description) {\\n <div class=\\\"--body-container\\\">\\n <div class=\\\"--description\\\" [class.ax-pb-3]=\\\"data.children && data.children.length > 0\\\">\\n <span>{{data.description}}</span>\\n </div>\\n </div>\\n } @if(data.children && data.children.length > 0){\\n <div class=\\\"--toggle\\\">\\n <ax-button class=\\\"ax-xs ax-rounded-sm\\\" (onClick)=\\\"toggleNode(data,node)\\\">\\n <ax-icon icon=\\\"fa-solid\\\" [class]=\\\"data.isExpanded === false ? 'fa-chevron-down' : 'fa-chevron-up'\\\"></ax-icon>\\n </ax-button>\\n </div>\\n }\\n </div>\\n </div>\\n</ng-template>\\n\", styles: [\".axp-node-hint{display:flex;align-items:center;justify-content:center;gap:.25rem;font-size:.75rem;line-height:1rem}.axp-node-hint>div.--badge{background-color:rgba(var(--node-bg-color));color:rgba(var(--node-text-color));display:flex;width:.75rem;height:.75rem;align-items:center;justify-content:center;border-radius:.125rem}.axp-chart-node{display:flex;align-items:center;justify-content:center}.axp-chart-node .--node-container{position:relative;cursor:pointer;--node-bg-color: var(--ax-sys-color-primary-surface);--node-text-color: var(--ax-sys-color-on-primary-surface);--node-border-color: var(--ax-sys-color-border-primary-surface)}.axp-chart-node .--node-container .--container{display:flex;max-height:100%;width:100%;flex-direction:column;overflow:hidden;border-radius:.375rem;border-width:1px;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);border-color:rgba(var(--node-border-color))}.axp-chart-node .--node-container .--container .--heading-container{background-color:rgba(var(--node-bg-color));color:rgba(var(--node-text-color));width:100%;padding:.5rem .75rem}.axp-chart-node .--node-container .--container .--heading-container .--content{display:flex;width:100%;align-items:center;justify-content:center;gap:.5rem;overflow:hidden}.axp-chart-node .--node-container .--container .--heading-container .--content .--icon{background-color:color-mix(in srgb,rgba(var(--node-bg-color),1) 85%,black);display:flex;width:2.75rem;height:2.75rem;flex:none;align-items:center;justify-content:center;border-radius:.5rem}.axp-chart-node .--node-container .--container .--heading-container .--content .--badge{background-color:color-mix(in srgb,rgba(var(--node-bg-color),1) 85%,black);display:flex;width:1.5rem;height:1.5rem;flex:none;align-items:center;justify-content:center;border-radius:.375rem;line-height:1}.axp-chart-node .--node-container .--container .--heading-container .--content .--badge>span{font-size:.75rem;line-height:1rem}.axp-chart-node .--node-container .--container .--heading-container .--content .--titles{display:flex;width:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}.axp-chart-node .--node-container .--container .--heading-container .--content .--titles .--title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-chart-node .--node-container .--container .--heading-container .--content .--titles .--sub-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;opacity:.85}.axp-chart-node .--node-container .--container .--body-container{width:100%;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lightest-surface),var(--tw-bg-opacity, 1));padding:.5rem .75rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-lightest-surface),var(--tw-text-opacity, 1))}.axp-chart-node .--node-container .--container .--body-container .--description{text-align:center;font-size:.875rem;line-height:1rem;opacity:.85}.axp-chart-node .--node-container .--container .--toggle{position:absolute;left:0;right:0;bottom:-.75rem;display:flex;width:100%;-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none;align-items:center;justify-content:center}#parent:fullscreen{background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWNoYXJ0LnBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9vcmdhbml6YXRpb24tY2hhcnQvb3JnLWNoYXJ0LnBhZ2UudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9vcmdhbml6YXRpb24tY2hhcnQvb3JnLWNoYXJ0LnBhZ2UuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsc0JBQXNCLEVBR3RCLFlBQVksR0FDYixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RILE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxP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QUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0RCxDQUFDOzhHQWxaVSxlQUFlO2tHQUFmLGVBQWUsMkRBUmY7WUFDVCxrQkFBa0I7WUFDbEI7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLGVBQWU7YUFDN0I7U0FDRixrWUFVK0Isc0JBQXNCLDBGQUMxQixrQkFBa0IsdUZDL0VoRCxtOUpBOEhBLHUvR0RsRkksWUFBWSxxTUFDWixZQUFZO2dCQUNaLEVBQUU7Z0JBQ0YsWUFBWSw4QkFDWixjQUFjLDZYQUNkLHNCQUFzQiw4QkFDdEIsbUJBQW1CLDhHQUNuQixpQkFBaUIsZ0lBQ2pCLGtCQUFrQixvU0FDbEIsZUFBZSw4QkFDZixtQkFBbUIsOEJBQ25CLGFBQWE7Z0JBQ2IsRUFBRTtnQkFDRiw0QkFBNEIsZ2lCQUM1QixzQkFBc0I7OzJGQVliLGVBQWU7a0JBOUIzQixTQUFTOzhCQUdDO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixFQUFFO3dCQUNGLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLEVBQUU7d0JBQ0YsNEJBQTRCO3dCQUM1QixzQkFBc0I7cUJBQ3ZCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNULGtCQUFrQjt3QkFDbEI7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxpQkFBaUI7eUJBQzdCO3FCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQYW5WaWV3RGlyZWN0aXZlIH0gZnJvbSAnQGFjb3JleC9jZGsvcGFuLXZpZXcnO1xuaW1wb3J0IHsgQVhCYWRnZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBBWEJyZWFkY3J1bWJzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JyZWFkY3J1bWJzJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7XG4gIEFYQ29udGV4dE1lbnVDb21wb25lbnQsXG4gIEFYQ29udGV4dE1lbnVJdGVtc0NsaWNrRXZlbnQsXG4gIEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQsXG4gIEFYTWVudU1vZHVsZSxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL21lbnUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBQYWdlTGF5b3V0QmFzZSwgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQsIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC92aWV3cyc7XG5pbXBvcnQgeyBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIE5nWm9uZSxcbiAgc2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgdmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gtZXMvZ2V0JztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoLWVzL3NldCc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuaW1wb3J0IHsgQVhNT3JnQ2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi9vcmctY2hhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1Pcmdhbml6YXRpb25Ob2RlLCBBWE1PcmdDaGFydENhdGVnb3J5LCBBWE1PcmdDaGFydE5vZGVUeXBlIH0gZnJvbSAnLi9vcmctY2hhcnQudHlwZSc7XG5pbXBvcnQgeyBBWFBBY3Rpb25NZW51SXRlbSwgQVhQQnJlYWRjcnVtYkl0ZW0sIEFYUEV4ZWN1dGVDb21tYW5kLCBnZXRBY3Rpb25CdXR0b24sIHJlc29sdmVBY3Rpb25Mb29rIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbi8qKlxuICogQ29tcG9uZW50IGZvciBkaXNwbGF5aW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIGFuIG9yZ2FuaXphdGlvbmFsIGNoYXJ0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL29yZy1jaGFydC5wYWdlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vcmctY2hhcnQucGFnZS5zY3NzJ10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIC8vXG4gICAgQVhNZW51TW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWFBhblZpZXdEaXJlY3RpdmUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYQnJlYWRjcnVtYnNNb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICAvL1xuICAgIEFYUFRoZW1lTGF5b3V0QmxvY2tDb21wb25lbnQsXG4gICAgQVhQUGFnZUxheW91dENvbXBvbmVudCxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIEFYTU9yZ0NoYXJ0U2VydmljZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBQYWdlTGF5b3V0QmFzZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWE1PcmdDaGFydFBhZ2VcbiAgICB9XG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTU9yZ0NoYXJ0UGFnZSBleHRlbmRzIEFYUFBhZ2VMYXlvdXRCYXNlQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvb3RDb25maWcgPSBSb290Q29uZmlnO1xuXG4gIHByaXZhdGUgZDMhOiB0eXBlb2YgaW1wb3J0KCdkMycpO1xuXG4gIHByaXZhdGUgbm9kZVRlbXBsYXRlID0gdmlld0NoaWxkLnJlcXVpcmVkPFRlbXBsYXRlUmVmPGFueT4+KCdub2RlVGVtcGxhdGUnKTtcbiAgcHJpdmF0ZSB0cmVlQ29udGFpbmVyID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PignY2hhcnQnKTtcbiAgcHJpdmF0ZSBwYXJlbnQgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCdwYXJlbnQnKTtcbiAgcHJpdmF0ZSBjb250ZXh0TWVudSA9IHZpZXdDaGlsZChBWENvbnRleHRNZW51Q29tcG9uZW50KTtcbiAgcHJpdmF0ZSBwYW5WaWV3ID0gdmlld0NoaWxkKEFYUGFuVmlld0RpcmVjdGl2ZSk7XG5cbiAgcHJpdmF0ZSBuZ3pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICAvLyBwcmludGluZyBpcyBoYW5kbGVkIGJ5IHNlcnZpY2UgaXRzZWxmXG4gIHByaXZhdGUgY2hhcnRTZXJ2aWNlID0gaW5qZWN0KEFYTU9yZ0NoYXJ0U2VydmljZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBOT0RFX1NUUk9LRV9DT0xPUiA9ICdyZ2JhKHZhcigtLWF4LXN5cy1jb2xvci1wcmltYXJ5LTQwMCkpJztcbiAgcHJpdmF0ZSByZWFkb25seSBMSU5LX1NUUk9LRV9XSURUSCA9IDE7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IE5vZGVUeXBlcyA9IEFYTU9yZ0NoYXJ0Tm9kZVR5cGU7XG5cbiAgcHJvdGVjdGVkIGlzRnVsbHNjcmVlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBwYW5YID0gc2lnbmFsKDApO1xuICBwcm90ZWN0ZWQgcGFuWSA9IHNpZ25hbCgwKTtcbiAgcHJvdGVjdGVkIHBhblpvb21MZXZlbCA9IHNpZ25hbCgxMDApO1xuXG4gIHByb3RlY3RlZCBpc0NoYXJ0UmVuZGVyZWQgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgbm9kZVR5cGVzID0gW1xuICAgIHsgdGl0bGU6ICdDb21wYW55JywgY29sb3I6ICdwcmltYXJ5JywgaWNvbjogJ2ZhbCBmYS1idWlsZGluZycsIGNhdGVnb3J5OiBBWE1PcmdDaGFydENhdGVnb3J5LkNvbXBhbnkgfSxcbiAgICB7IHRpdGxlOiAnTG9jYXRpb24nLCBjb2xvcjogJ2FjY2VudDEnLCBpY29uOiAnZmFsIGZhLWdsb2JlJywgY2F0ZWdvcnk6IEFYTU9yZ0NoYXJ0Q2F0ZWdvcnkuTG9jYXRpb24gfSxcbiAgICB7IHRpdGxlOiAnQnVzaW5lc3MgVW5pdCcsIGNvbG9yOiAnYWNjZW50MicsIGljb246ICdmYWwgZmEtc2l0ZW1hcCcsIGNhdGVnb3J5OiBBWE1PcmdDaGFydENhdGVnb3J5LkJ1c2luZXNzVW5pdCB9LFxuICAgIHsgdGl0bGU6ICdQb3NpdGlvbicsIGNvbG9yOiAnYWNjZW50MycsIGljb246ICdmYWwgZmEtdXNlci10aWUnLCBjYXRlZ29yeTogQVhNT3JnQ2hhcnRDYXRlZ29yeS5Qb3NpdGlvbiB9LFxuICAgIHsgdGl0bGU6ICdFbXBsb3llZScsIGNvbG9yOiAnc3VyZmFjZScsIGljb246ICdmYWwgZmEtYWRkcmVzcy1jYXJkJywgY2F0ZWdvcnk6IEFYTU9yZ0NoYXJ0Q2F0ZWdvcnkuRW1wbG95ZWUgfSxcbiAgXTtcblxuICAjaW5pdGlhbGl6ZSA9IGFmdGVyTmV4dFJlbmRlcihhc3luYyAoKSA9PiB7XG4gICAgdGhpcy5kMyA9IGF3YWl0IGltcG9ydCgnZDMnKTtcblxuICAgIGF3YWl0IHRoaXMucmVmcmVzaCgpO1xuICB9KTtcblxuICAvKipcbiAgICogWm9vbXMgaW4gdGhlIGNoYXJ0LlxuICAgKi9cbiAgcHJvdGVjdGVkIHpvb21JbigpIHtcbiAgICB0aGlzLnBhblZpZXcoKT8uem9vbUluKCk7XG4gIH1cblxuICAvKipcbiAgICogWm9vbXMgb3V0IHRoZSBjaGFydC5cbiAgICovXG4gIHByb3RlY3RlZCB6b29tT3V0KCkge1xuICAgIHRoaXMucGFuVmlldygpPy56b29tT3V0KCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSB6b29tIGxldmVsIGFuZCBwYW4gcG9zaXRpb24gb2YgdGhlIGNoYXJ0LlxuICAgKi9cbiAgcHJvdGVjdGVkIHpvb21SZXNldCgpIHtcbiAgICB0aGlzLnBhblZpZXcoKT8ucmVzZXRQb3NpdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgZnVsbHNjcmVlbiBtb2RlIGZvciB0aGUgY2hhcnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgdG9nZ2xlRnVsbHNjcmVlbigpIHtcbiAgICBpZiAodGhpcy5pc0Z1bGxzY3JlZW4oKSkge1xuICAgICAgZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcbiAgICAgIHRoaXMuaXNGdWxsc2NyZWVuLnNldChmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFyZW50KCkubmF0aXZlRWxlbWVudC5yZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgdGhpcy5pc0Z1bGxzY3JlZW4uc2V0KHRydWUpO1xuICAgIH1cbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBmb3JlaWduT2JqZWN0W25vZGU9XCJub2RlLSR7dGhpcy5jaGFydFNlcnZpY2Uucm9vdE5vZGUoKS5pZH1cIl1gKT8uc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgYmxvY2s6ICdzdGFydCcsXG4gICAgICBpbmxpbmU6ICdjZW50ZXInLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIG1heGltdW0gZGVwdGggb2YgdGhlIG9yZ2FuaXphdGlvbmFsIGNoYXJ0LlxuICAgKiBAcGFyYW0gbm9kZSAtIFRoZSByb290IG5vZGUgb2YgdGhlIGNoYXJ0LlxuICAgKiBAcmV0dXJucyBUaGUgbWF4aW11bSBkZXB0aCBvZiB0aGUgY2hhcnQuXG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZU1heERlcHRoKG5vZGU6IEFYTU9yZ2FuaXphdGlvbk5vZGUpOiBudW1iZXIge1xuICAgIGlmICghbm9kZS5jaGlsZHJlbiB8fCBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCB8fCBub2RlLmlzRXhwYW5kZWQgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIDEgKyBNYXRoLm1heCguLi5ub2RlLmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IHRoaXMuY2FsY3VsYXRlTWF4RGVwdGgoY2hpbGQpKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgbWF4aW11bSBicmVhZHRoIG9mIHRoZSBvcmdhbml6YXRpb25hbCBjaGFydC5cbiAgICogQHBhcmFtIG5vZGUgLSBUaGUgcm9vdCBub2RlIG9mIHRoZSBjaGFydC5cbiAgICogQHJldHVybnMgVGhlIG1heGltdW0gYnJlYWR0aCBvZiB0aGUgY2hhcnQuXG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZU1heEJyZWFkdGgobm9kZTogQVhNT3JnYW5pemF0aW9uTm9kZSk6IG51bWJlciB7XG4gICAgaWYgKCFub2RlLmNoaWxkcmVuIHx8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwIHx8IG5vZGUuaXNFeHBhbmRlZCA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZS5jaGlsZHJlbi5yZWR1Y2UoKGFjYywgY2hpbGQpID0+IGFjYyArIHRoaXMuY2FsY3VsYXRlTWF4QnJlYWR0aChjaGlsZCksIDApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW5kIHJlbmRlcnMgdGhlIG9yZ2FuaXphdGlvbmFsIGNoYXJ0LlxuICAgKiBAcGFyYW0gZWwgLSBUaGUgY29udGFpbmVyIGVsZW1lbnQgZm9yIHRoZSBjaGFydC5cbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgcm9vdCBub2RlIG9mIHRoZSBvcmdhbml6YXRpb25hbCBjaGFydC5cbiAgICovXG4gIGNyZWF0ZUNoYXJ0KGVsOiBFbGVtZW50LCBkYXRhOiBBWE1Pcmdhbml6YXRpb25Ob2RlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmQzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubmd6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGNvbnN0IE5PREVfV0lEVEhfQkFTRSA9IDI2MDtcbiAgICAgIGNvbnN0IE5PREVfSEVJR0hUX0JBU0UgPSAxODA7XG4gICAgICBjb25zdCBIT1JJWk9OVEFMX1NQQUNJTkcgPSAyMDtcbiAgICAgIGNvbnN0IFZFUlRJQ0FMX1NQQUNJTkcgPSA0MDtcblxuICAgICAgdGhpcy5jbGVhckNoYXJ0KGVsKTtcbiAgICAgIGNvbnN0IG5ld1N2ZyA9IHRoaXMuZDMuc2VsZWN0KGVsKS5hcHBlbmQoJ3N2ZycpO1xuXG4gICAgICBjb25zdCByb290ID0gdGhpcy5kMy5oaWVyYXJjaHkoZGF0YSk7XG5cbiAgICAgIHJvb3QuZGVzY2VuZGFudHMoKS5mb3JFYWNoKChub2RlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKG5vZGUuZGF0YS5pc0V4cGFuZGVkID09PSBmYWxzZSkge1xuICAgICAgICAgIG5vZGUuY2hpbGRyZW4gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0cmVlTGF5b3V0ID0gdGhpcy5kM1xuICAgICAgICAudHJlZTxBWE1Pcmdhbml6YXRpb25Ob2RlPigpXG4gICAgICAgIC5ub2RlU2l6ZShbTk9ERV9XSURUSF9CQVNFICsgSE9SSVpPTlRBTF9TUEFDSU5HLCBOT0RFX0hFSUdIVF9CQVNFICsgVkVSVElDQUxfU1BBQ0lOR10pO1xuXG4gICAgICB0cmVlTGF5b3V0KHJvb3QpO1xuXG4gICAgICBsZXQgbWluWCA9IEluZmluaXR5LFxuICAgICAgICBtYXhYID0gLUluZmluaXR5LFxuICAgICAgICBtaW5ZID0gSW5maW5pdHksXG4gICAgICAgIG1heFkgPSAtSW5maW5pdHk7XG4gICAgICByb290LmRlc2NlbmRhbnRzKCkuZm9yRWFjaCgoZDogYW55KSA9PiB7XG4gICAgICAgIGlmIChkLnggPCBtaW5YKSBtaW5YID0gZC54O1xuICAgICAgICBpZiAoZC54ID4gbWF4WCkgbWF4WCA9IGQueDtcbiAgICAgICAgaWYgKGQueSA8IG1pblkpIG1pblkgPSBkLnk7XG4gICAgICAgIGlmIChkLnkgPiBtYXhZKSBtYXhZID0gZC55O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IENPTlRBSU5FUl9XSURUSCA9IG1heFggLSBtaW5YICsgTk9ERV9XSURUSF9CQVNFICsgMiAqIEhPUklaT05UQUxfU1BBQ0lORztcbiAgICAgIGNvbnN0IENPTlRBSU5FUl9IRUlHSFQgPSBtYXhZIC0gbWluWSArIE5PREVfSEVJR0hUX0JBU0UgKyAyICogVkVSVElDQUxfU1BBQ0lORztcblxuICAgICAgbmV3U3ZnLmF0dHIoJ3dpZHRoJywgQ09OVEFJTkVSX1dJRFRIKS5hdHRyKCdoZWlnaHQnLCBDT05UQUlORVJfSEVJR0hUKTtcblxuICAgICAgY29uc3QgZyA9IG5ld1N2Z1xuICAgICAgICAuYXBwZW5kKCdnJylcbiAgICAgICAgLmF0dHIoXG4gICAgICAgICAgJ3RyYW5zZm9ybScsXG4gICAgICAgICAgYHRyYW5zbGF0ZSgkey1taW5YICsgTk9ERV9XSURUSF9CQVNFIC8gMiArIEhPUklaT05UQUxfU1BBQ0lORyAvIDJ9LCAkey1taW5ZICsgTk9ERV9IRUlHSFRfQkFTRSAvIDIgKyBWRVJUSUNBTF9TUEFDSU5HIC8gMlxuICAgICAgICAgIH0pYFxuICAgICAgICApO1xuXG4gICAgICBjb25zdCBsaW5rID0gZ1xuICAgICAgICAuc2VsZWN0QWxsKCcubGluaycpXG4gICAgICAgIC5kYXRhKHJvb3QubGlua3MoKSlcbiAgICAgICAgLmVudGVyKClcbiAgICAgICAgLmFwcGVuZCgncGF0aCcpXG4gICAgICAgIC5hdHRyKCdjbGFzcycsICdsaW5rJylcbiAgICAgICAgLmF0dHIoJ2QnLCAoZDogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc291cmNlID0gZC5zb3VyY2U7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZC50YXJnZXQ7XG4gICAgICAgICAgcmV0dXJuIGBNJHtzb3VyY2UueH0sJHtzb3VyY2UueX1WJHsoc291cmNlLnkgKyB0YXJnZXQueSkgLyAyfUgke3RhcmdldC54fVYke3RhcmdldC55IC0gMTB9YDtcbiAgICAgICAgfSlcbiAgICAgICAgLmF0dHIoJ2ZpbGwnLCAnbm9uZScpXG4gICAgICAgIC5hdHRyKCdzdHJva2UnLCB0aGlzLk5PREVfU1RST0tFX0NPTE9SKVxuICAgICAgICAuYXR0cignc3Ryb2tlLXdpZHRoJywgdGhpcy5MSU5LX1NUUk9LRV9XSURUSClcbiAgICAgICAgLmF0dHIoJ2Zyb20nLCAoZDogYW55KSA9PiBgbm9kZS0ke2Quc291cmNlLmRhdGEuaWR9YClcbiAgICAgICAgLmF0dHIoJ3RvJywgKGQ6IGFueSkgPT4gYG5vZGUtJHtkLnRhcmdldC5kYXRhLmlkfWApO1xuXG4gICAgICBjb25zdCBub2RlID0gZ1xuICAgICAgICAuc2VsZWN0QWxsKCcuYXhwLWNoYXJ0LW5vZGUnKVxuICAgICAgICAuZGF0YShyb290LmRlc2NlbmRhbnRzKCkpXG4gICAgICAgIC5lbnRlcigpXG4gICAgICAgIC5hcHBlbmQoJ2ZvcmVpZ25PYmplY3QnKVxuICAgICAgICAuYXR0cignY2xhc3MnLCAnYXhwLWNoYXJ0LW5vZGUnKVxuICAgICAgICAuYXR0cignbm9kZScsIChkOiBhbnkpID0+IGBub2RlLSR7ZC5kYXRhLmlkfWApXG4gICAgICAgIC5hdHRyKCd4JywgKGQ6IGFueSkgPT4gZC54IC0gTk9ERV9XSURUSF9CQVNFIC8gMilcbiAgICAgICAgLmF0dHIoJ3knLCAoZDogYW55KSA9PiBkLnkgLSBOT0RFX0hFSUdIVF9CQVNFIC8gMiArIDEwKVxuICAgICAgICAuYXR0cignd2lkdGgnLCBOT0RFX1dJRFRIX0JBU0UpXG4gICAgICAgIC5hdHRyKCdoZWlnaHQnLCBOT0RFX0hFSUdIVF9CQVNFKVxuICAgICAgICAuZWFjaCgoZDogYW55KSA9PiB0aGlzLnJlbmRlck5vZGVUZW1wbGF0ZShkLmRhdGEsIGQueCwgZC55KSk7XG5cbiAgICAgIHRoaXMuY29udGV4dE1lbnUoKT8ucmVmcmVzaCgpO1xuICAgIH0pO1xuICAgIGlmICghdGhpcy5pc0NoYXJ0UmVuZGVyZWQpIHtcbiAgICAgIC8vIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGZvcmVpZ25PYmplY3Rbbm9kZT1cIm5vZGUtJHtkYXRhLmlkfVwiXSAuLS1oZWFkaW5nLWNvbnRhaW5lcmApPy5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAvLyAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIC8vICAgYmxvY2s6ICdjZW50ZXInLFxuICAgICAgLy8gICBpbmxpbmU6ICdjZW50ZXInLFxuICAgICAgLy8gfSk7XG4gICAgICB0aGlzLmlzQ2hhcnRSZW5kZXJlZCA9IHRydWU7XG4gICAgICB0aGlzLnBhblZpZXcoKT8ucmVzZXRQb3NpdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBub2RlIHRlbXBsYXRlIGZvciBhIGdpdmVuIG9yZ2FuaXphdGlvbmFsIG5vZGUuXG4gICAqIEBwYXJhbSBkYXRhIC0gVGhlIG5vZGUgZGF0YS5cbiAgICogQHBhcmFtIHggLSBUaGUgeC1jb29yZGluYXRlIG9mIHRoZSBub2RlLlxuICAgKiBAcGFyYW0geSAtIFRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIG5vZGUuXG4gICAqL1xuICBwcml2YXRlIHJlbmRlck5vZGVUZW1wbGF0ZShkYXRhOiBBWE1Pcmdhbml6YXRpb25Ob2RlLCB4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgIC8vIEZpbmQgdGhlIGtleSB0aGF0IG1hdGNoZXMgdGhlIG5vZGUgdHlwZVxuICAgIC8vIGNhdGVnb3J5IGlzIHRoZSBzYW1lIGFzIHR5cGUgaW4gc2ltcGxpZmllZCBzdHJ1Y3R1cmVcbiAgICBzZXQoZGF0YSwgJ2NhdGVnb3J5JywgZGF0YS50eXBlKTtcblxuICAgIGNvbnN0IHZpZXdSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMubm9kZVRlbXBsYXRlKCksIHtcbiAgICAgICRpbXBsaWNpdDogZGF0YSxcbiAgICB9KTtcblxuICAgIGNvbnN0IG5vZGVFbGVtZW50ID0gdGhpcy5kMy5zZWxlY3QodGhpcy50cmVlQ29udGFpbmVyKCkubmF0aXZlRWxlbWVudCkuc2VsZWN0KGBbbm9kZT1cIm5vZGUtJHtkYXRhLmlkfVwiXWApO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBub2RlRWxlbWVudC5ub2RlKCkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHZpZXdSZWYucm9vdE5vZGVzWzBdKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgZXhwYW5zaW9uIHN0YXRlIG9mIGEgbm9kZS5cbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgbm9kZSBkYXRhLlxuICAgKiBAcGFyYW0gZWwgLSBUaGUgSFRNTCBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgbm9kZS5cbiAgICovXG4gIHByb3RlY3RlZCB0b2dnbGVOb2RlKGRhdGE6IEFYTU9yZ2FuaXphdGlvbk5vZGUsIGVsOiBIVE1MRGl2RWxlbWVudCkge1xuICAgIGRhdGEuaXNFeHBhbmRlZCA9IGRhdGEuaXNFeHBhbmRlZCA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiAhZGF0YS5pc0V4cGFuZGVkO1xuICAgIHRoaXMuY3JlYXRlQ2hhcnQodGhpcy50cmVlQ29udGFpbmVyKCkubmF0aXZlRWxlbWVudCwgdGhpcy5jaGFydFNlcnZpY2Uucm9vdE5vZGUoKSk7XG4gICAgLy8gZWwuc2Nyb2xsSW50b1ZpZXcoe1xuICAgIC8vICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgIC8vIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgY2hhcnQgZnJvbSB0aGUgY29udGFpbmVyIGVsZW1lbnQuXG4gICAqIEBwYXJhbSBlbCAtIFRoZSBjb250YWluZXIgZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgY2xlYXJDaGFydChlbDogRWxlbWVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmQzKSB7XG4gICAgICB0aGlzLmQzLnNlbGVjdChlbCkuc2VsZWN0KCdzdmcnKS5yZW1vdmUoKTtcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaCgpIHtcbiAgICBpZiAodGhpcy5kMykge1xuICAgICAgYXdhaXQgdGhpcy5jaGFydFNlcnZpY2UubG9hZCgpO1xuICAgICAgdGhpcy5jcmVhdGVDaGFydCh0aGlzLnRyZWVDb250YWluZXIoKS5uYXRpdmVFbGVtZW50LCB0aGlzLmNoYXJ0U2VydmljZS5yb290Tm9kZSgpKTtcbiAgICB9XG4gIH1cblxuICAvLyNyZWdpb24gQ29udGV4dCBNZW51XG5cbiAgLy8gcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUNvbnRleHRNZW51T25PcGVuaW5nKGU6IEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQpIHtcbiAgLy8gICBjb25zdCBub2RlID0gZ2V0KGUudGFyZ2V0RWxlbWVudCwgJ19fZGF0YV9fLmRhdGEnKSBhcyBhbnkgYXMgQVhNT3JnYW5pemF0aW9uTm9kZTtcbiAgLy8gICBjb25zdCBhbGxvd2VkQWRkSXRlbXMgPSBhd2FpdCB0aGlzLmNoYXJ0U2VydmljZS5nZXRBbGxvd2VkQWRkTWVudUl0ZW1zKG5vZGUpO1xuICAvLyAgIGNvbnN0IGFsbG93RGVsZXRlID0gbm9kZS50eXBlICE9IEFYTU9yZ2FuaXphdGlvbk5vZGVUeXBlLkNvbXBhbnk7XG4gIC8vICAgY29uc3QgaXNQYXN0ZUF2YWlsYWJsZSA9IGF3YWl0IHRoaXMuY2hhcnRTZXJ2aWNlLmlzUGFzdGVBdmFpbGFibGUoKTtcbiAgLy8gICBjb25zdCBhbGxvd1Bhc3RlID0gYXdhaXQgdGhpcy5jaGFydFNlcnZpY2UuYWxsb3dQYXN0ZShub2RlKTtcbiAgLy8gICAvL1xuICAvLyAgIGlmIChhbGxvd2VkQWRkSXRlbXMubGVuZ3RoKSB7XG4gIC8vICAgICBlLml0ZW1zLnB1c2goe1xuICAvLyAgICAgICB0ZXh0OiAnQWRkIE5ldycsXG4gIC8vICAgICAgIGljb246ICdmYS1saWdodCBmYS1wbHVzJyxcbiAgLy8gICAgICAgaXRlbXM6IGFsbG93ZWRBZGRJdGVtcyxcbiAgLy8gICAgICAgYnJlYWs6IGFsbG93RGVsZXRlLFxuICAvLyAgICAgfSk7XG4gIC8vICAgfVxuICAvLyAgIC8vXG4gIC8vICAgaWYgKGFsbG93RGVsZXRlKSB7XG4gIC8vICAgICBlLml0ZW1zLnB1c2goe1xuICAvLyAgICAgICBuYW1lOiAnY3V0JyxcbiAgLy8gICAgICAgdGV4dDogJ0N1dCcsXG4gIC8vICAgICAgIGljb246ICdmYS1saWdodCBmYS1jdXQnLFxuICAvLyAgICAgICBkYXRhOiBub2RlLFxuICAvLyAgICAgfSk7XG4gIC8vICAgICBlLml0ZW1zLnB1c2goe1xuICAvLyAgICAgICBuYW1lOiAnY29weScsXG4gIC8vICAgICAgIHRleHQ6ICdDb3B5JyxcbiAgLy8gICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNvcHknLFxuICAvLyAgICAgICBkYXRhOiBub2RlLFxuICAvLyAgICAgICBicmVhazogIWlzUGFzdGVBdmFpbGFibGUsXG4gIC8vICAgICB9KTtcbiAgLy8gICB9XG4gIC8vICAgaWYgKGlzUGFzdGVBdmFpbGFibGUpIHtcbiAgLy8gICAgIGUuaXRlbXMucHVzaCh7XG4gIC8vICAgICAgIG5hbWU6ICdwYXN0ZScsXG4gIC8vICAgICAgIHRleHQ6ICdQYXN0ZScsXG4gIC8vICAgICAgIGljb246ICdmYS1saWdodCBmYS1wYXN0ZScsXG4gIC8vICAgICAgIGRhdGE6IG5vZGUsXG4gIC8vICAgICAgIGJyZWFrOiB0cnVlLFxuICAvLyAgICAgICBkaXNhYmxlZDogIWFsbG93UGFzdGUsXG4gIC8vICAgICB9KTtcbiAgLy8gICB9XG4gIC8vICAgLy9cbiAgLy8gICBpZiAoYWxsb3dEZWxldGUpIHtcbiAgLy8gICAgIGUuaXRlbXMucHVzaCh7XG4gIC8vICAgICAgIG5hbWU6ICdyZW1vdmUnLFxuICAvLyAgICAgICB0ZXh0OiAnUmVtb3ZlJyxcbiAgLy8gICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAvLyAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtdHJhc2gtY2FuJyxcbiAgLy8gICAgICAgZGF0YTogbm9kZSxcbiAgLy8gICAgIH0pO1xuICAvLyAgIH1cbiAgLy8gICAvL1xuICAvLyAgIGlmIChlLml0ZW1zLmxlbmd0aCA9PSAwKSB7XG4gIC8vICAgICBlLmNhbmNlbGVkID0gdHJ1ZTtcbiAgLy8gICB9XG4gIC8vIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlQ29udGV4dE1lbnVJdGVtQ2xpY2soZTogQVhDb250ZXh0TWVudUl0ZW1zQ2xpY2tFdmVudCkge1xuXG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvKipcbiAgICogUHJpbnRzIHRoZSBvcmdhbml6YXRpb25hbCBjaGFydC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBwcmludENoYXJ0KCkge1xuICAgIGxldCBbcGFuWCwgcGFuWSwgcGFuWm9vbUxldmVsXSA9IFt0aGlzLnBhblgoKSwgdGhpcy5wYW5ZKCksIHRoaXMucGFuWm9vbUxldmVsKCldO1xuICAgIHRoaXMucGFuWC5zZXQoMCksIHRoaXMucGFuWS5zZXQoMCksIHRoaXMucGFuWm9vbUxldmVsLnNldCgxMDApO1xuICAgIGF3YWl0IHRoaXMuY2hhcnRTZXJ2aWNlLnByaW50Q2hhcnQodGhpcy50cmVlQ29udGFpbmVyKCkubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5wYW5YLnNldChwYW5YKSwgdGhpcy5wYW5ZLnNldChwYW5ZKSwgdGhpcy5wYW5ab29tTGV2ZWwuc2V0KHBhblpvb21MZXZlbCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbm9kZSBjb2xvcnMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbG9yLlxuICAgKiBAcGFyYW0gY29sb3IgLSBUaGUgY29sb3IgdG8gdXNlIGZvciB0aGUgbm9kZS5cbiAgICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG5vZGUncyBiYWNrZ3JvdW5kLCB0ZXh0LCBhbmQgYm9yZGVyIGNvbG9ycy5cbiAgICovXG4gIHByb3RlY3RlZCBnZXROb2RlQ29sb3JzKGNvbG9yOiBzdHJpbmcpIHtcbiAgICBpZiAoY29sb3IuaW5jbHVkZXMoJ3N1cmZhY2UnKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJy0tbm9kZS1iZy1jb2xvcic6IGB2YXIoLS1heC1zeXMtY29sb3ItJHtjb2xvcn0pYCxcbiAgICAgICAgJy0tbm9kZS10ZXh0LWNvbG9yJzogYHZhcigtLWF4LXN5cy1jb2xvci1vbi0ke2NvbG9yfSlgLFxuICAgICAgICAnLS1ub2RlLWJvcmRlci1jb2xvcic6IGB2YXIoLS1heC1zeXMtY29sb3ItYm9yZGVyLSR7Y29sb3J9KWAsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgJy0tbm9kZS1iZy1jb2xvcic6IGB2YXIoLS1heC1zeXMtY29sb3ItJHtjb2xvcn0tc3VyZmFjZSlgLFxuICAgICAgJy0tbm9kZS10ZXh0LWNvbG9yJzogYHZhcigtLWF4LXN5cy1jb2xvci1vbi0ke2NvbG9yfS1zdXJmYWNlKWAsXG4gICAgICAnLS1ub2RlLWJvcmRlci1jb2xvcic6IGB2YXIoLS1heC1zeXMtY29sb3ItYm9yZGVyLSR7Y29sb3J9LXN1cmZhY2UpYCxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVZhcihvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogQVhNT3JnQ2hhcnRDYXRlZ29yeSkge1xuICAgIG9sZFZhbHVlLmNhdCA9IG5ld1ZhbHVlO1xuICB9XG5cblxuXG4gIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VUaXRsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ2NoYXJ0LnBhZ2UtdGl0bGUnLCB7IHNjb3BlOiB0aGlzLnJvb3RDb25maWcuY29uZmlnLmkxOG4gfSk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBnZXRQYWdlRGVzY3JpcHRpb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdjaGFydC5wYWdlLWRlc2NyaXB0aW9uJywgeyBzY29wZTogdGhpcy5yb290Q29uZmlnLmNvbmZpZy5pMThuIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0U2Vjb25kYXJ5TWVudUl0ZW1zKCk6IFByb21pc2U8QVhQQWN0aW9uTWVudUl0ZW1bXT4ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIC4uLmdldEFjdGlvbkJ1dHRvbigncHJpbnQnKSxcbiAgICAgICAgY29tbWFuZDoge1xuICAgICAgICAgIG5hbWU6ICdwcmludCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAuLi5nZXRBY3Rpb25CdXR0b24oJ3JlZnJlc2gnKSxcbiAgICAgICAgY29tbWFuZDoge1xuICAgICAgICAgIG5hbWU6ICdyZWZyZXNoJyxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICBdO1xuICB9XG4gIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VCcmVhZGNydW1icygpOiBQcm9taXNlPEFYUEJyZWFkY3J1bWJJdGVtW10+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdyb290LW1lbnUnLCB7IHNjb3BlOiB0aGlzLnJvb3RDb25maWcuY29uZmlnLmkxOG4gfSlcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGV4ZWN1dGUoY29tbWFuZDogQVhQRXhlY3V0ZUNvbW1hbmQpIHtcbiAgICBpZiAoY29tbWFuZC5uYW1lID09ICdwcmludCcpIHtcbiAgICAgIGF3YWl0IHRoaXMucHJpbnRDaGFydCgpO1xuICAgIH1cbiAgICBpZiAoY29tbWFuZC5uYW1lID09ICdyZWZyZXNoJykge1xuICAgICAgYXdhaXQgdGhpcy5jaGFydFNlcnZpY2UuZ2VuZXJhdGUoKTtcbiAgICAgIGF3YWl0IHRoaXMucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJDaGFydCh0aGlzLnRyZWVDb250YWluZXIoKS5uYXRpdmVFbGVtZW50KTtcbiAgfVxufVxuIiwiPGF4cC1wYWdlLWxheW91dCAqdHJhbnNsYXRlPVwibGV0IHRcIj5cbiAgPGF4cC1wYWdlLWNvbnRlbnQgY2xhc3M9XCJheC1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtaC1bY2FsYygxMDB2aC0yOTBweCldXCIgI3BhcmVudCBpZD1cInBhcmVudFwiPlxuICAgICAgPGRpdlxuICAgICAgICAjY2hhcnRcbiAgICAgICAgYXhQYW5WaWV3XG4gICAgICAgIFsocGFuWCldPVwicGFuWFwiXG4gICAgICAgIFsocGFuWSldPVwicGFuWVwiXG4gICAgICAgIFtmcmVlTW9kZV09XCJ0cnVlXCJcbiAgICAgICAgWyh6b29tKV09XCJwYW5ab29tTGV2ZWxcIlxuICAgICAgICBbZml0Q29udGVudF09XCJ0cnVlXCJcbiAgICAgICAgd3JhcHBlckNsYXNzZXM9XCJoXCJcbiAgICAgICAgY2xhc3M9XCJheC1saWdodFwiXG4gICAgICA+PC9kaXY+XG4gICAgICA8IS0tIDxheC1jb250ZXh0LW1lbnVcbiAgICAgICAgW3RhcmdldF09XCInLmF4cC1jaGFydC1ub2RlJ1wiXG4gICAgICAgIFtvcmllbnRhdGlvbl09XCIndmVydGljYWwnXCJcbiAgICAgICAgW2Nsb3NlT25dPVwiJ2xlYXZlJ1wiXG4gICAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVDb250ZXh0TWVudUl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgKG9uT3BlbmluZyk9XCJoYW5kbGVDb250ZXh0TWVudU9uT3BlbmluZygkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgIDwvYXgtY29udGV4dC1tZW51PiAtLT5cbiAgICA8L2Rpdj5cbiAgPC9heHAtcGFnZS1jb250ZW50PlxuICA8YXhwLXBhZ2UtZm9vdGVyPlxuICAgIDxheHAtbGF5b3V0LXByZWZpeD5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWdhcC0xIGF4LWxpZ2h0IGF4LWZsZXgtd3JhcCBheC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICBAbGV0IHYgPSB7Y2F0OidDb21wYW55J307IEBmb3IgKGl0ZW0gb2Ygbm9kZVR5cGVzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4cC1ub2RlLWhpbnRcIiBbc3R5bGVdPVwiZ2V0Tm9kZUNvbG9ycyhpdGVtLmNvbG9yKVwiIFtjbGFzcy5heC1tcy00XT1cInYuY2F0IT1pdGVtLmNhdGVnb3J5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIi0tYmFkZ2VcIj48L2Rpdj5cbiAgICAgICAgICB7e2l0ZW0udGl0bGV9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3t1cGRhdGVWYXIodiwgaXRlbS5jYXRlZ29yeSl9fSB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2F4cC1sYXlvdXQtcHJlZml4PlxuICAgIDxheHAtbGF5b3V0LXN1ZmZpeD5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWdhcC0yXCI+XG4gICAgICAgIDxheC1idXR0b24gKG9uQ2xpY2spPVwiem9vbU91dCgpXCI+XG4gICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS1taW51c1wiPiA8L2F4LWljb24+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8YXgtYnV0dG9uIFt0ZXh0XT1cInBhblpvb21MZXZlbCgpXCIgKG9uQ2xpY2spPVwiem9vbVJlc2V0KClcIj48L2F4LWJ1dHRvbj5cbiAgICAgICAgPGF4LWJ1dHRvbiAob25DbGljayk9XCJ6b29tSW4oKVwiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtYWRkXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDxheC1idXR0b24gKG9uQ2xpY2spPVwidG9nZ2xlRnVsbHNjcmVlbigpXCI+XG4gICAgICAgICAgPGF4LWljb24+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkXCIgW2NsYXNzXT1cImlzRnVsbHNjcmVlbigpPyAnZmEtY29tcHJlc3MnIDogJ2ZhLWV4cGFuZCdcIj48L2k+XG4gICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYXhwLWxheW91dC1zdWZmaXg+XG4gIDwvYXhwLXBhZ2UtZm9vdGVyPlxuPC9heHAtcGFnZS1sYXlvdXQ+XG5cbjxuZy10ZW1wbGF0ZSAjbm9kZVRlbXBsYXRlIGxldC1kYXRhPlxuICA8ZGl2PlxuICAgIEBzd2l0Y2ggKGRhdGEuY2F0ZWdvcnkpIHtcbiAgICA8IS0tIENvbXBhbnkgLS0+XG4gICAgQGNhc2UgKE5vZGVUeXBlcy5Db21wYW55KSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdlbmVyYWxUZW1wbGF0ZTsgY29udGV4dDogeyAgZGF0YSxjb2xvcjoncHJpbWFyeScgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgICA8IS0tIExvY2F0aW9uIC0tPlxuICAgIEBjYXNlIChOb2RlVHlwZXMuQ291bnRyeSkge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZW5lcmFsVGVtcGxhdGU7IGNvbnRleHQ6IHsgIGRhdGEsY29sb3I6J2FjY2VudDEnIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICB9IEBjYXNlIChOb2RlVHlwZXMuU3RhdGUpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2VuZXJhbFRlbXBsYXRlOyBjb250ZXh0OiB7ICBkYXRhLGNvbG9yOidhY2NlbnQxJyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgfSBAY2FzZSAoTm9kZVR5cGVzLkNpdHkpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2VuZXJhbFRlbXBsYXRlOyBjb250ZXh0OiB7ICBkYXRhLGNvbG9yOidhY2NlbnQxJyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIDwhLS0gQnVzaW5lc3NVbml0IC0tPlxuICAgIEBjYXNlIChOb2RlVHlwZXMuRGl2aXNpb24pIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2VuZXJhbFRlbXBsYXRlOyBjb250ZXh0OiB7ICBkYXRhLGNvbG9yOidhY2NlbnQyJyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgfSBAY2FzZSAoTm9kZVR5cGVzLkRlcGFydG1lbnQpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2VuZXJhbFRlbXBsYXRlOyBjb250ZXh0OiB7ICBkYXRhLGNvbG9yOidhY2NlbnQyJyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgfSBAY2FzZSAoTm9kZVR5cGVzLkJyYW5jaCkge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZW5lcmFsVGVtcGxhdGU7IGNvbnRleHQ6IHsgIGRhdGEsY29sb3I6J2FjY2VudDInIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gICAgPCEtLSBSb2xlIC0tPlxuICAgIEBjYXNlIChOb2RlVHlwZXMuUG9zaXRpb24pIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2VuZXJhbFRlbXBsYXRlOyBjb250ZXh0OiB7ICBkYXRhLGNvbG9yOidhY2NlbnQzJyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIDwhLS0gRW1wbG95ZWUgLS0+XG4gICAgQGNhc2UgKE5vZGVUeXBlcy5FbXBsb3llZSkge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZW5lcmFsVGVtcGxhdGU7IGNvbnRleHQ6IHsgIGRhdGEsY29sb3I6J3N1cmZhY2UnIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICB9IH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEdlbmVyYWwgTm9kZSBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbjxuZy10ZW1wbGF0ZSAjZ2VuZXJhbFRlbXBsYXRlIGxldC1kYXRhPVwiZGF0YVwiIGxldC1jb2xvcj1cImNvbG9yXCI+XG4gIDxkaXYgI25vZGUgY2xhc3M9XCItLW5vZGUtY29udGFpbmVyXCIgW3N0eWxlXT1cImdldE5vZGVDb2xvcnMoY29sb3IpXCI+XG4gICAgPGRpdiBjbGFzcz1cIi0tY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiLS1oZWFkaW5nLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiLS1jb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIi0taWNvblwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS14bCBmYS1md1wiIFtjbGFzc109XCJkYXRhLmljb25cIj48L2k+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIi0tdGl0bGVzXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIi0tdGl0bGVcIiBbdGl0bGVdPVwiZGF0YS50aXRsZVwiPnt7ZGF0YS50aXRsZX19PC9zcGFuPlxuICAgICAgICAgICAgQGlmKGRhdGEuc3VidGl0bGUpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiLS1zdWItdGl0bGVcIiBbdGl0bGVdPVwiZGF0YS5zdWJ0aXRsZVwiPnt7ZGF0YS5zdWJ0aXRsZX19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIEBpZihkYXRhPy5jaGlsZHJlbj8ubGVuZ3RoKXtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiLS1iYWRnZVwiPlxuICAgICAgICAgICAgPHNwYW4+e3tkYXRhPy5jaGlsZHJlbj8ubGVuZ3RoID8/IDB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICBAaWYoZGF0YS5kZXNjcmlwdGlvbikge1xuICAgICAgPGRpdiBjbGFzcz1cIi0tYm9keS1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIi0tZGVzY3JpcHRpb25cIiBbY2xhc3MuYXgtcGItM109XCJkYXRhLmNoaWxkcmVuICYmIGRhdGEuY2hpbGRyZW4ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxzcGFuPnt7ZGF0YS5kZXNjcmlwdGlvbn19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgfSBAaWYoZGF0YS5jaGlsZHJlbiAmJiBkYXRhLmNoaWxkcmVuLmxlbmd0aCA+IDApe1xuICAgICAgPGRpdiBjbGFzcz1cIi0tdG9nZ2xlXCI+XG4gICAgICAgIDxheC1idXR0b24gY2xhc3M9XCJheC14cyBheC1yb3VuZGVkLXNtXCIgKG9uQ2xpY2spPVwidG9nZ2xlTm9kZShkYXRhLG5vZGUpXCI+XG4gICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLXNvbGlkXCIgW2NsYXNzXT1cImRhdGEuaXNFeHBhbmRlZCA9PT0gZmFsc2UgPyAnZmEtY2hldnJvbi1kb3duJyA6ICdmYS1jaGV2cm9uLXVwJ1wiPjwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AASO,MAAM,kBAAkB,CAAC;AAChC,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,2CAA2C,CAAC;AAC/E,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAC3D,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACrD,QAAQ,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAC9D,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACvD,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAC/D,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtI,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AACnD,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACrD,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,IAAI,EAAE,CAAC;AACnB,YAAY,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACrD,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACpB;AACA,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE;AACjC,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;AACnC,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,IAAI,CAAC,QAAQ,EAAE;AACjC,YAAY,MAAM,IAAI,CAAC,IAAI,EAAE;AAC7B,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG;AACrB,QAAQ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE;AAC5D,QAAQ,IAAI,YAAY,CAAC,SAAS,EAAE;AACpC,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,IAAI;AAC5C,YAAY,gBAAgB,EAAE,IAAI;AAClC,YAAY,aAAa,EAAE,IAAI;AAC/B,YAAY,IAAI,EAAE,WAAW;AAC7B,SAAS;AACT;AACA,QAAQ,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,0CAA0C,EAAE,KAAK,CAAC;AAC5F,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAChD,QAAQ,MAAM,SAAS,GAAG,MAAM;AAChC,aAAa,KAAK,CAAC,sDAAsD;AACzE,aAAa,OAAO,CAAC,wDAAwD;AAC7E,aAAa,KAAK,CAAC,eAAe,EAAE,KAAK,IAAI;AAC7C,aAAa,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI;AACpC,aAAa,KAAK,CAAC,2DAA2D;AAC9E,aAAa,WAAW,CAAC,iEAAiE;AAC1F,aAAa,aAAa,CAAC;AAC3B,YAAY,UAAU,EAAE,OAAO;AAC/B,YAAY,SAAS,EAAE,MAAM;AAC7B,YAAY,UAAU,EAAE;AACxB,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,+CAA+C,EAAE;AAC7F,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,8CAA8C,EAAE;AAC3F,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,+CAA+C;AAC3F;AACA,SAAS,CAAC;AACV,aAAa,KAAK,CAAC,kBAAkB,EAAE,KAAK,IAAI;AAChD,aAAa,KAAK,CAAC,wEAAwE;AAC3F,aAAa,WAAW,CAAC,8EAA8E;AACvG,aAAa,YAAY,EAAE;AAC3B,aAAa,KAAK,CAAC,eAAe,EAAE,KAAK,IAAI;AAC7C,aAAa,KAAK,CAAC,qEAAqE;AACxF,aAAa,WAAW,CAAC,2EAA2E;AACpG,aAAa,YAAY,EAAE,CAAC;AAC5B,aAAa,OAAO,CAAC;AACrB,YAAY,IAAI,EAAE,WAAW;AAC7B,YAAY,gBAAgB,EAAE,IAAI;AAClC,YAAY,aAAa,EAAE;AAC3B,SAAS;AACT,aAAa,OAAO,CAAC,OAAO,IAAI;AAChC,aAAa,MAAM;AACnB,aAAa,MAAM,CAAC,mBAAmB,CAAC;AACxC,aAAa,IAAI,EAAE;AACnB;AACA,QAAQ,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE;AAC5C,QAAQ,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE;AACzC,QAAQ,SAAS,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,CAAC,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE;AAC9C,YAAY,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;AACtC,QAAQ;AACR,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,KAAK;AAC5B,YAAY,KAAK,EAAE;AACnB,SAAS;AACT,IAAI;AACJ;AACA,IAAI,MAAM,UAAU,CAAC,OAAO,EAAE;AAC9B,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAC1C,YAAY,KAAK,EAAE,gCAAgC;AACnD,YAAY,IAAI,EAAE,aAAa;AAC/B,YAAY,aAAa,EAAE,SAAS;AACpC,YAAY,aAAa,EAAE,CAAC;AAC5B,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,IAAI,EAAE,+BAA+B;AACjD,YAAY,OAAO,EAAE;AACrB,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE;AAC3E,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC;AAC5F,YAAY,MAAM,YAAY,GAAG,OAAO;AACxC,YAAY,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;AACrF,YAAY,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC;AACjG,YAAY,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,YAAY,EAAE;AACxF,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,MAAM,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACnG,gBAAgB,OAAO,EAAE,aAAa;AACtC,gBAAgB,KAAK,EAAE,CAAC;AACxB,gBAAgB,OAAO,EAAE,CAAC;AAC1B,gBAAgB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC;AACtE,gBAAgB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC;AACpE,aAAa,CAAC;AACd,YAAY,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,6BAA6B,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC;AACrG,YAAY,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,cAAc,CAAC;AACjE,YAAY,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC;AAC7F,YAAY,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;AAC9D,YAAY,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC;AAC5F,YAAY,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC;AAC7C,QAAQ;AACR,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC;AACxD,YAAY,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,gCAAgC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC;AACpH,YAAY,CAAC,CAAC,KAAK,EAAE;AACrB,QAAQ;AACR,IAAI;AACJ,IAAI,WAAW,CAAC,YAAY,EAAE;AAC9B,QAAQ,MAAM,cAAc,GAAG;AAC/B,YAAY,gBAAgB,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ;AACzD,YAAY,aAAa,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK;AACnD,YAAY,cAAc,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM;AACrD,SAAS;AACT,QAAQ,MAAM,cAAc,GAAG;AAC/B,YAAY,gBAAgB,EAAE,SAAS;AACvC,YAAY,aAAa,EAAE,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;AAC1D,YAAY,cAAc,EAAE,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;AAC5D,SAAS;AACT,QAAQ,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC,gBAAgB;AACrE,QAAQ,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,aAAa;AAC/D,QAAQ,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,cAAc;AACjE,QAAQ,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE;AACjD,IAAI;AACJ,IAAI,kBAAkB,CAAC,YAAY,EAAE,cAAc,EAAE;AACrD,QAAQ,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC,gBAAgB;AACrE,QAAQ,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,aAAa;AAC/D,QAAQ,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,cAAc;AACjE,IAAI;AACJ,IAAI,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAG,SAAS,EAAE;AACxE,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AACxC,YAAY,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC1C,YAAY,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;AACxC,YAAY,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAC7C,YAAY,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAC5C,YAAY,OAAO,EAAE;AACrB,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,SAAS,CAAC,GAAG,EAAE;AACzB,QAAQ,OAAO,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,IAAI,KAAK;AAChH,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,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,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;AACxI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC5H,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;AC1Jb;AACA;AACA;AACO,MAAM,eAAe,SAAS,0BAA0B,CAAC;AAChE,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC,QAAQ,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC9D,QAAQ,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;AACxD,QAAQ,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAClD,QAAQ,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,sBAAsB,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAClH,QAAQ,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,kBAAkB,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtG,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxD;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACtD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,uCAAuC;AACxE,QAAQ,IAAI,CAAC,iBAAiB,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,SAAS,GAAG,mBAAmB;AAC5C,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChG,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5E,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5E,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9F,QAAQ,IAAI,CAAC,eAAe,GAAG,KAAK;AACpC,QAAQ,IAAI,CAAC,SAAS,GAAG;AACzB,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,CAAC,OAAO,EAAE;AAClH,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE;AACjH,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,mBAAmB,CAAC,YAAY,EAAE;AAC5H,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE;AACpH,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE;AACxH,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,YAAY;AACvD,YAAY,IAAI,CAAC,EAAE,GAAG,MAAM,OAAO,IAAI,CAAC;AACxC,YAAY,MAAM,IAAI,CAAC,OAAO,EAAE;AAChC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,WAAW;AACf;AACA;AACA;AACA,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE;AAChC,IAAI;AACJ;AACA;AACA;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE;AACjC,IAAI;AACJ;AACA;AACA;AACA,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE;AACvC,IAAI;AACJ;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACjC,YAAY,QAAQ,CAAC,cAAc,EAAE;AACrC,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AACxC,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE;AAC3D,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AACvC,QAAQ;AACR,QAAQ,QAAQ,CAAC,aAAa,CAAC,CAAC,yBAAyB,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC;AAChH,YAAY,QAAQ,EAAE,QAAQ;AAC9B,YAAY,KAAK,EAAE,OAAO;AAC1B,YAAY,MAAM,EAAE,QAAQ;AAC5B,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AACvF,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,QAAQ,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3F,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AACvF,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC7F,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE;AAC1B,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACtB,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM;AAC5C,YAAY,MAAM,eAAe,GAAG,GAAG;AACvC,YAAY,MAAM,gBAAgB,GAAG,GAAG;AACxC,YAAY,MAAM,kBAAkB,GAAG,EAAE;AACzC,YAAY,MAAM,gBAAgB,GAAG,EAAE;AACvC,YAAY,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AAC/B,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3D,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;AAChD,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACjD,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AACpD,oBAAoB,IAAI,CAAC,QAAQ,GAAG,SAAS;AAC7C,gBAAgB;AAChB,YAAY,CAAC,CAAC;AACd,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC;AACpC,iBAAiB,IAAI;AACrB,iBAAiB,QAAQ,CAAC,CAAC,eAAe,GAAG,kBAAkB,EAAE,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;AACtG,YAAY,UAAU,CAAC,IAAI,CAAC;AAC5B,YAAY,IAAI,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ;AACpF,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AAC9C,gBAAgB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;AAC9B,oBAAoB,IAAI,GAAG,CAAC,CAAC,CAAC;AAC9B,gBAAgB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;AAC9B,oBAAoB,IAAI,GAAG,CAAC,CAAC,CAAC;AAC9B,gBAAgB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;AAC9B,oBAAoB,IAAI,GAAG,CAAC,CAAC,CAAC;AAC9B,gBAAgB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;AAC9B,oBAAoB,IAAI,GAAG,CAAC,CAAC,CAAC;AAC9B,YAAY,CAAC,CAAC;AACd,YAAY,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,eAAe,GAAG,CAAC,GAAG,kBAAkB;AAC1F,YAAY,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,GAAG,gBAAgB,GAAG,CAAC,GAAG,gBAAgB;AAC1F,YAAY,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAClF,YAAY,MAAM,CAAC,GAAG;AACtB,iBAAiB,MAAM,CAAC,GAAG;AAC3B,iBAAiB,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,GAAG,eAAe,GAAG,CAAC,GAAG,kBAAkB,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,gBAAgB,GAAG,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChK,YAAY,MAAM,IAAI,GAAG;AACzB,iBAAiB,SAAS,CAAC,OAAO;AAClC,iBAAiB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAClC,iBAAiB,KAAK;AACtB,iBAAiB,MAAM,CAAC,MAAM;AAC9B,iBAAiB,IAAI,CAAC,OAAO,EAAE,MAAM;AACrC,iBAAiB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK;AAClC,gBAAgB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM;AACvC,gBAAgB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM;AACvC,gBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3G,YAAY,CAAC;AACb,iBAAiB,IAAI,CAAC,MAAM,EAAE,MAAM;AACpC,iBAAiB,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB;AACtD,iBAAiB,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB;AAC5D,iBAAiB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/D,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,YAAY,MAAM,IAAI,GAAG;AACzB,iBAAiB,SAAS,CAAC,iBAAiB;AAC5C,iBAAiB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACxC,iBAAiB,KAAK;AACtB,iBAAiB,MAAM,CAAC,eAAe;AACvC,iBAAiB,IAAI,CAAC,OAAO,EAAE,gBAAgB;AAC/C,iBAAiB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxD,iBAAiB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,eAAe,GAAG,CAAC;AAC3D,iBAAiB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,GAAG,CAAC,GAAG,EAAE;AACjE,iBAAiB,IAAI,CAAC,OAAO,EAAE,eAAe;AAC9C,iBAAiB,IAAI,CAAC,QAAQ,EAAE,gBAAgB;AAChD,iBAAiB,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,YAAY,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE;AACzC,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACnC;AACA;AACA;AACA;AACA;AACA,YAAY,IAAI,CAAC,eAAe,GAAG,IAAI;AACvC,YAAY,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE;AAC3C,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;AACnC;AACA;AACA,QAAQ,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC;AACxC,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;AACtF,YAAY,SAAS,EAAE,IAAI;AAC3B,SAAS,CAAC;AACV,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACjH,QAAQ,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE;AAC1C,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrD,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE;AACzB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU;AAClF,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC1F;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,EAAE,EAAE;AACnB,QAAQ,IAAI,IAAI,CAAC,EAAE,EAAE;AACrB,YAAY,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;AACrD,YAAY,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACzC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,IAAI,IAAI,CAAC,EAAE,EAAE;AACrB,YAAY,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAC1C,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC9F,QAAQ;AACR,IAAI;AACJ;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,0BAA0B,CAAC,CAAC,EAAE;AACxC,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACxF,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;AACtE,QAAQ,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC;AAC9E,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AACrF,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACvC,YAAY,OAAO;AACnB,gBAAgB,iBAAiB,EAAE,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC;AACjE,gBAAgB,mBAAmB,EAAE,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC;AACtE,gBAAgB,qBAAqB,EAAE,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5E,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO;AACf,YAAY,iBAAiB,EAAE,CAAC,mBAAmB,EAAE,KAAK,CAAC,SAAS,CAAC;AACrE,YAAY,mBAAmB,EAAE,CAAC,sBAAsB,EAAE,KAAK,CAAC,SAAS,CAAC;AAC1E,YAAY,qBAAqB,EAAE,CAAC,0BAA0B,EAAE,KAAK,CAAC,SAAS,CAAC;AAChF,SAAS;AACT,IAAI;AACJ,IAAI,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE;AAClC,QAAQ,QAAQ,CAAC,GAAG,GAAG,QAAQ;AAC/B,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACrH,IAAI;AACJ,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAC3H,IAAI;AACJ,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,OAAO;AACf,YAAY;AACZ,gBAAgB,GAAG,eAAe,CAAC,OAAO,CAAC;AAC3C,gBAAgB,OAAO,EAAE;AACzB,oBAAoB,IAAI,EAAE,OAAO;AACjC,iBAAiB;AACjB,aAAa;AACb,YAAY;AACZ,gBAAgB,GAAG,eAAe,CAAC,SAAS,CAAC;AAC7C,gBAAgB,OAAO,EAAE;AACzB,oBAAoB,IAAI,EAAE,SAAS;AACnC,iBAAiB;AACjB;AACA,SAAS;AACT,IAAI;AACJ,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ,OAAO;AACf,YAAY;AACZ,gBAAgB,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;AACrH,aAAa;AACb,SAAS;AACT,IAAI;AACJ,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE;AAC3B,QAAQ,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,EAAE;AACrC,YAAY,MAAM,IAAI,CAAC,UAAU,EAAE;AACnC,QAAQ;AACR,QAAQ,IAAI,OAAO,CAAC,IAAI,IAAI,SAAS,EAAE;AACvC,YAAY,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC9C,YAAY,MAAM,IAAI,CAAC,OAAO,EAAE;AAChC,QAAQ;AACR,IAAI;AACJ,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC;AAC3D,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACnL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE;AAC5K,YAAY,kBAAkB;AAC9B,YAAY;AACZ,gBAAgB,OAAO,EAAE,iBAAiB;AAC1C,gBAAgB,WAAW,EAAE;AAC7B;AACA,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,sBAAsB,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,kBAAkB,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,m9JAAm9J,EAAE,MAAM,EAAE,CAAC,g8GAAg8G,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,yBAAyB,EAAE,kBAAkB,EAAE,0BAA0B,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI;AACvyS;AACA,gBAAgB,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,qBAAqB,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,CAAC,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI;AACzsC;AACA,gBAAgB,4BAA4B,EAAE,QAAQ,EAAE,qfAAqf,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACpuB;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AACzH,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE;AAC9B,wBAAwB,YAAY;AACpC,wBAAwB,YAAY;AACpC;AACA,wBAAwB,YAAY;AACpC,wBAAwB,cAAc;AACtC,wBAAwB,sBAAsB;AAC9C,wBAAwB,mBAAmB;AAC3C,wBAAwB,iBAAiB;AACzC,wBAAwB,kBAAkB;AAC1C,wBAAwB,eAAe;AACvC,wBAAwB,mBAAmB;AAC3C,wBAAwB,aAAa;AACrC;AACA,wBAAwB,4BAA4B;AACpD,wBAAwB,sBAAsB;AAC9C,qBAAqB,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE;AAC1H,wBAAwB,kBAAkB;AAC1C,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,iBAAiB;AACtD,4BAA4B,WAAW,EAAE;AACzC;AACA,qBAAqB,EAAE,QAAQ,EAAE,m9JAAm9J,EAAE,MAAM,EAAE,CAAC,g8GAAg8G,CAAC,EAAE;AACl8Q,SAAS,CAAC,EAAE,CAAC;;;;"}
|
|
@@ -30,7 +30,7 @@ async function factory(injector) {
|
|
|
30
30
|
groups: [
|
|
31
31
|
{
|
|
32
32
|
id: 'basic-info',
|
|
33
|
-
title:
|
|
33
|
+
title: `@general:terms.basic-info`,
|
|
34
34
|
},
|
|
35
35
|
],
|
|
36
36
|
properties: [
|
|
@@ -50,7 +50,7 @@ async function factory(injector) {
|
|
|
50
50
|
},
|
|
51
51
|
{
|
|
52
52
|
name: 'title',
|
|
53
|
-
title:
|
|
53
|
+
title: `@general:terms.title`,
|
|
54
54
|
groupId: 'basic-info',
|
|
55
55
|
schema: {
|
|
56
56
|
dataType: 'string',
|
|
@@ -79,7 +79,7 @@ async function factory(injector) {
|
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
name: 'description',
|
|
82
|
-
title:
|
|
82
|
+
title: `@general:terms.description`,
|
|
83
83
|
groupId: 'basic-info',
|
|
84
84
|
schema: {
|
|
85
85
|
dataType: 'string',
|
|
@@ -291,4 +291,4 @@ async function factory(injector) {
|
|
|
291
291
|
}
|
|
292
292
|
|
|
293
293
|
export { factory };
|
|
294
|
-
//# sourceMappingURL=acorex-modules-organization-management-position.entity-
|
|
294
|
+
//# sourceMappingURL=acorex-modules-organization-management-position.entity-C26xHNVh.mjs.map
|