@sapui5/sap.fe.core 1.102.0 → 1.103.0
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/package.json +5 -5
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AppComponent.js +62 -26
- package/src/sap/fe/core/AppComponent.ts +56 -40
- package/src/sap/fe/core/AppStateHandler.js +10 -10
- package/src/sap/fe/core/AppStateHandler.ts +9 -9
- package/src/sap/fe/core/BaseController.js +11 -9
- package/src/sap/fe/core/BaseController.ts +15 -13
- package/src/sap/fe/core/CommonUtils.js +236 -109
- package/src/sap/fe/core/CommonUtils.ts +252 -136
- package/src/sap/fe/core/ExtensionAPI.js +24 -27
- package/src/sap/fe/core/ExtensionAPI.ts +36 -38
- package/src/sap/fe/core/PageController.js +4 -4
- package/src/sap/fe/core/PageController.ts +4 -5
- package/src/sap/fe/core/TemplateComponent.js +1 -1
- package/src/sap/fe/core/TemplateComponent.ts +6 -6
- package/src/sap/fe/core/TemplateModel.js +1 -1
- package/src/sap/fe/core/TemplateModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +8 -8
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +11 -10
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +27 -27
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +28 -26
- package/src/sap/fe/core/controllerextensions/EditFlow.js +129 -118
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +154 -141
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +31 -26
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +34 -35
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +70 -70
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +77 -77
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +84 -78
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +105 -101
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
- package/src/sap/fe/core/controllerextensions/MassEdit.js +8 -8
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +19 -26
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +20 -12
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +29 -14
- package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
- package/src/sap/fe/core/controllerextensions/PageReady.ts +94 -34
- package/src/sap/fe/core/controllerextensions/Paginator.js +21 -22
- package/src/sap/fe/core/controllerextensions/Paginator.ts +24 -25
- package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
- package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
- package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
- package/src/sap/fe/core/controllerextensions/Share.js +22 -22
- package/src/sap/fe/core/controllerextensions/Share.ts +30 -29
- package/src/sap/fe/core/controllerextensions/SideEffects.js +46 -50
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
- package/src/sap/fe/core/controllerextensions/ViewState.js +65 -62
- package/src/sap/fe/core/controllerextensions/ViewState.ts +68 -63
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +6 -6
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +12 -17
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +4 -4
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +7 -9
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +18 -19
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +184 -137
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +253 -206
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +113 -121
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +148 -158
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +198 -148
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +223 -159
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +24 -26
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +35 -33
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +78 -44
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +90 -60
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +52 -55
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +55 -58
- package/src/sap/fe/core/controls/Any.js +9 -5
- package/src/sap/fe/core/controls/Any.ts +10 -4
- package/src/sap/fe/core/controls/CommandExecution.js +11 -25
- package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
- package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +22 -22
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
- package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
- package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
- package/src/sap/fe/core/controls/FileWrapper.js +2 -2
- package/src/sap/fe/core/controls/FileWrapper.ts +11 -11
- package/src/sap/fe/core/controls/FilterBar.js +6 -2
- package/src/sap/fe/core/controls/FilterBar.ts +13 -9
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
- package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +47 -47
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +52 -52
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
- package/src/sap/fe/core/converters/ConverterContext.js +26 -33
- package/src/sap/fe/core/converters/ConverterContext.ts +51 -60
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +14 -14
- package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
- package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
- package/src/sap/fe/core/converters/MetaModelConverter.js +50 -32
- package/src/sap/fe/core/converters/MetaModelConverter.ts +145 -127
- package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
- package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
- package/src/sap/fe/core/converters/annotations/DataField.js +54 -34
- package/src/sap/fe/core/converters/annotations/DataField.ts +97 -75
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
- package/src/sap/fe/core/converters/controls/Common/Action.js +50 -41
- package/src/sap/fe/core/converters/controls/Common/Action.ts +56 -46
- package/src/sap/fe/core/converters/controls/Common/Chart.js +14 -14
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +23 -26
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
- package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +28 -28
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +40 -36
- package/src/sap/fe/core/converters/controls/Common/Form.js +25 -27
- package/src/sap/fe/core/converters/controls/Common/Form.ts +37 -45
- package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +35 -39
- package/src/sap/fe/core/converters/controls/Common/Table.js +174 -183
- package/src/sap/fe/core/converters/controls/Common/Table.ts +237 -250
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +144 -141
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +45 -41
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +64 -57
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +67 -64
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +73 -72
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +98 -96
- package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +10 -13
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
- package/src/sap/fe/core/converters/helpers/ID.js +46 -46
- package/src/sap/fe/core/converters/helpers/ID.ts +25 -25
- package/src/sap/fe/core/converters/helpers/Key.js +7 -7
- package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -4
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +46 -62
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +30 -29
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +40 -40
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +39 -38
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +52 -61
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
- package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
- package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
- package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/StandardFormatter.js +89 -0
- package/src/sap/fe/core/formatters/StandardFormatter.ts +64 -0
- package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
- package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
- package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
- package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
- package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
- package/src/sap/fe/core/helpers/BindingToolkit.js +1809 -0
- package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +365 -264
- package/src/sap/fe/core/helpers/ClassSupport.js +20 -11
- package/src/sap/fe/core/helpers/ClassSupport.ts +14 -10
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -6
- package/src/sap/fe/core/helpers/EditState.ts +5 -10
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
- package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
- package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
- package/src/sap/fe/core/helpers/MassEditHelper.js +281 -254
- package/src/sap/fe/core/helpers/MassEditHelper.ts +337 -289
- package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
- package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
- package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
- package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
- package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
- package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
- package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.ts +8 -8
- package/src/sap/fe/core/library.js +42 -3
- package/src/sap/fe/core/library.ts +38 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
- package/src/sap/fe/core/messagebundle.properties +49 -35
- package/src/sap/fe/core/messagebundle_ar.properties +13 -5
- package/src/sap/fe/core/messagebundle_bg.properties +13 -5
- package/src/sap/fe/core/messagebundle_ca.properties +13 -5
- package/src/sap/fe/core/messagebundle_cs.properties +13 -5
- package/src/sap/fe/core/messagebundle_cy.properties +14 -6
- package/src/sap/fe/core/messagebundle_da.properties +13 -5
- package/src/sap/fe/core/messagebundle_de.properties +15 -7
- package/src/sap/fe/core/messagebundle_el.properties +14 -6
- package/src/sap/fe/core/messagebundle_en.properties +9 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +11 -3
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +7 -1
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +9 -1
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +44 -85
- package/src/sap/fe/core/messagebundle_es.properties +13 -5
- package/src/sap/fe/core/messagebundle_es_MX.properties +13 -5
- package/src/sap/fe/core/messagebundle_et.properties +13 -5
- package/src/sap/fe/core/messagebundle_fi.properties +14 -6
- package/src/sap/fe/core/messagebundle_fr.properties +14 -6
- package/src/sap/fe/core/messagebundle_fr_CA.properties +14 -6
- package/src/sap/fe/core/messagebundle_hi.properties +14 -6
- package/src/sap/fe/core/messagebundle_hr.properties +14 -6
- package/src/sap/fe/core/messagebundle_hu.properties +13 -5
- package/src/sap/fe/core/messagebundle_id.properties +13 -5
- package/src/sap/fe/core/messagebundle_it.properties +33 -25
- package/src/sap/fe/core/messagebundle_iw.properties +13 -5
- package/src/sap/fe/core/messagebundle_ja.properties +14 -6
- package/src/sap/fe/core/messagebundle_kk.properties +13 -5
- package/src/sap/fe/core/messagebundle_ko.properties +13 -5
- package/src/sap/fe/core/messagebundle_lt.properties +13 -5
- package/src/sap/fe/core/messagebundle_lv.properties +14 -6
- package/src/sap/fe/core/messagebundle_ms.properties +13 -5
- package/src/sap/fe/core/messagebundle_nl.properties +13 -5
- package/src/sap/fe/core/messagebundle_no.properties +13 -5
- package/src/sap/fe/core/messagebundle_pl.properties +13 -5
- package/src/sap/fe/core/messagebundle_pt.properties +13 -5
- package/src/sap/fe/core/messagebundle_pt_PT.properties +14 -6
- package/src/sap/fe/core/messagebundle_ro.properties +13 -5
- package/src/sap/fe/core/messagebundle_ru.properties +13 -5
- package/src/sap/fe/core/messagebundle_sh.properties +13 -5
- package/src/sap/fe/core/messagebundle_sk.properties +13 -5
- package/src/sap/fe/core/messagebundle_sl.properties +17 -9
- package/src/sap/fe/core/messagebundle_sv.properties +14 -6
- package/src/sap/fe/core/messagebundle_th.properties +13 -5
- package/src/sap/fe/core/messagebundle_tr.properties +13 -5
- package/src/sap/fe/core/messagebundle_uk.properties +13 -5
- package/src/sap/fe/core/messagebundle_vi.properties +13 -5
- package/src/sap/fe/core/messagebundle_zh_CN.properties +14 -6
- package/src/sap/fe/core/messagebundle_zh_TW.properties +13 -5
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +2 -2
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +14 -14
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.js +53 -44
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +54 -46
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
- package/src/sap/fe/core/services/RoutingServiceFactory.js +55 -55
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
- package/src/sap/fe/core/services/ShellServicesFactory.js +72 -76
- package/src/sap/fe/core/services/ShellServicesFactory.ts +76 -82
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +20 -15
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +26 -21
- package/src/sap/fe/core/support/CommonHelper.js +3 -2
- package/src/sap/fe/core/support/CommonHelper.ts +9 -13
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.ts +5 -5
- package/src/sap/fe/core/templating/CommonFormatters.js +84 -0
- package/src/sap/fe/core/templating/CommonFormatters.ts +86 -0
- package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
- package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
- package/src/sap/fe/core/templating/DataModelPathHelper.js +16 -15
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
- package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
- package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
- package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
- package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
- package/src/sap/fe/core/templating/FilterHelper.js +10 -9
- package/src/sap/fe/core/templating/FilterHelper.ts +13 -13
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
- package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
- package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
- package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
- package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
- package/src/sap/fe/core/templating/UIFormatters.js +148 -93
- package/src/sap/fe/core/templating/UIFormatters.ts +196 -124
- package/src/sap/fe/core/type/Email.js +2 -2
- package/src/sap/fe/core/type/Email.ts +2 -2
- package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
|
@@ -9,8 +9,8 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/conv
|
|
|
9
9
|
var VisualizationType = ManifestSettings.VisualizationType;
|
|
10
10
|
var TemplateType = ManifestSettings.TemplateType;
|
|
11
11
|
var ActionType = ManifestSettings.ActionType;
|
|
12
|
-
var
|
|
13
|
-
var
|
|
12
|
+
var getFilterBarID = ID.getFilterBarID;
|
|
13
|
+
var getChartID = ID.getChartID;
|
|
14
14
|
var AggregationHelper = Aggregation.AggregationHelper;
|
|
15
15
|
var getTargetObjectPath = DataModelPathHelper.getTargetObjectPath;
|
|
16
16
|
var KeyHelper = Key.KeyHelper;
|
|
@@ -36,7 +36,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/conv
|
|
|
36
36
|
* @param chartAnnotation
|
|
37
37
|
* @param visualizationPath
|
|
38
38
|
* @param converterContext
|
|
39
|
-
* @returns
|
|
39
|
+
* @returns The table annotation actions
|
|
40
40
|
*/
|
|
41
41
|
function getChartActionsFromAnnotations(chartAnnotation, visualizationPath, converterContext) {
|
|
42
42
|
var chartActions = [];
|
|
@@ -128,11 +128,11 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/conv
|
|
|
128
128
|
/**
|
|
129
129
|
* Create the ChartVisualization configuration that will be used to display a chart using the Chart building block.
|
|
130
130
|
*
|
|
131
|
-
* @param
|
|
132
|
-
* @param
|
|
133
|
-
* @param
|
|
134
|
-
* @param
|
|
135
|
-
* @returns
|
|
131
|
+
* @param chartAnnotation The target chart annotation
|
|
132
|
+
* @param visualizationPath The current visualization annotation path
|
|
133
|
+
* @param converterContext The converter context
|
|
134
|
+
* @param doNotCheckApplySupported Flag that indicates whether applysupported needs to be checked or not
|
|
135
|
+
* @returns The chart visualization based on the annotation
|
|
136
136
|
*/
|
|
137
137
|
|
|
138
138
|
|
|
@@ -154,7 +154,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/conv
|
|
|
154
154
|
var _aTransAggAnnos$i, _aTransAggAnnos$i$ann, _aTransAggAnnos$i$ann2;
|
|
155
155
|
|
|
156
156
|
transAggLabels[aTransAggAnnos[i].Name] = {
|
|
157
|
-
label: (_aTransAggAnnos$i = aTransAggAnnos[i]) === null || _aTransAggAnnos$i === void 0 ? void 0 : (_aTransAggAnnos$i$ann = _aTransAggAnnos$i.annotations) === null || _aTransAggAnnos$i$ann === void 0 ? void 0 : (_aTransAggAnnos$i$ann2 = _aTransAggAnnos$i$ann.Common) === null || _aTransAggAnnos$i$ann2 === void 0 ? void 0 : _aTransAggAnnos$i$ann2.Label
|
|
157
|
+
label: (_aTransAggAnnos$i = aTransAggAnnos[i]) === null || _aTransAggAnnos$i === void 0 ? void 0 : (_aTransAggAnnos$i$ann = _aTransAggAnnos$i.annotations) === null || _aTransAggAnnos$i$ann === void 0 ? void 0 : (_aTransAggAnnos$i$ann2 = _aTransAggAnnos$i$ann.Common) === null || _aTransAggAnnos$i$ann2 === void 0 ? void 0 : _aTransAggAnnos$i$ann2.Label.toString()
|
|
158
158
|
};
|
|
159
159
|
}
|
|
160
160
|
|
|
@@ -168,7 +168,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/conv
|
|
|
168
168
|
var aContextDefiningProperties = (_aCustomAggregates$_i = aCustomAggregates[_i].annotations) === null || _aCustomAggregates$_i === void 0 ? void 0 : (_aCustomAggregates$_i2 = _aCustomAggregates$_i.Aggregation) === null || _aCustomAggregates$_i2 === void 0 ? void 0 : _aCustomAggregates$_i2.ContextDefiningProperties;
|
|
169
169
|
mCustomAggregates[aCustomAggregates[_i].qualifier] = {
|
|
170
170
|
name: aCustomAggregates[_i].qualifier,
|
|
171
|
-
label: "Custom Aggregate ("
|
|
171
|
+
label: "Custom Aggregate (".concat(aCustomAggregates[_i].qualifier, ")"),
|
|
172
172
|
sortable: true,
|
|
173
173
|
sortOrder: "both",
|
|
174
174
|
contextDefiningProperty: aContextDefiningProperties ? aContextDefiningProperties.map(function (oCtxDefProperty) {
|
|
@@ -187,7 +187,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/conv
|
|
|
187
187
|
name: aTransAggregations[_i2].Name,
|
|
188
188
|
propertyPath: aTransAggregations[_i2].AggregatableProperty.valueOf().value,
|
|
189
189
|
aggregationMethod: aTransAggregations[_i2].AggregationMethod,
|
|
190
|
-
label: aTransAggregations[_i2].Name in transAggLabels ? transAggLabels[aTransAggregations[_i2].Name].label : "Aggregatable property ("
|
|
190
|
+
label: aTransAggregations[_i2].Name in transAggLabels ? transAggLabels[aTransAggregations[_i2].Name].label : "Aggregatable property (".concat(aTransAggregations[_i2].Name, ")"),
|
|
191
191
|
sortable: true,
|
|
192
192
|
sortOrder: "both",
|
|
193
193
|
custom: false
|
|
@@ -240,7 +240,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/conv
|
|
|
240
240
|
var dataModelPath = converterContext.getDataModelObjectPath();
|
|
241
241
|
var isEntitySet = navigationPropertyPath.length === 0;
|
|
242
242
|
var entityName = dataModelPath.targetEntitySet ? dataModelPath.targetEntitySet.name : dataModelPath.startingEntitySet.name;
|
|
243
|
-
var sFilterbarId = isEntitySet ?
|
|
243
|
+
var sFilterbarId = isEntitySet ? getFilterBarID(converterContext.getContextPath()) : undefined;
|
|
244
244
|
var oVizProperties = {
|
|
245
245
|
"legendGroup": {
|
|
246
246
|
"layout": {
|
|
@@ -269,7 +269,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/conv
|
|
|
269
269
|
|
|
270
270
|
return {
|
|
271
271
|
type: VisualizationType.Chart,
|
|
272
|
-
id: qualifier ?
|
|
272
|
+
id: qualifier ? getChartID(isEntitySet ? entityName : navigationPropertyPath, qualifier, VisualizationType.Chart) : getChartID(isEntitySet ? entityName : navigationPropertyPath, VisualizationType.Chart),
|
|
273
273
|
collection: getTargetObjectPath(converterContext.getDataModelObjectPath()),
|
|
274
274
|
entityName: entityName,
|
|
275
275
|
personalization: getP13nMode(visualizationPath, converterContext),
|
|
@@ -291,4 +291,4 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/conv
|
|
|
291
291
|
_exports.createChartVisualization = createChartVisualization;
|
|
292
292
|
return _exports;
|
|
293
293
|
}, false);
|
|
294
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNoYXJ0LnRzIl0sIm5hbWVzIjpbImdldENoYXJ0QWN0aW9uc0Zyb21Bbm5vdGF0aW9ucyIsImNoYXJ0QW5ub3RhdGlvbiIsInZpc3VhbGl6YXRpb25QYXRoIiwiY29udmVydGVyQ29udGV4dCIsImNoYXJ0QWN0aW9ucyIsImFBY3Rpb25zIiwiQWN0aW9ucyIsImZvckVhY2giLCJkYXRhRmllbGQiLCJjaGFydEFjdGlvbiIsImlzRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3QiLCJhbm5vdGF0aW9ucyIsIlVJIiwiSGlkZGVuIiwidmFsdWVPZiIsIklubGluZSIsIkRldGVybWluaW5nIiwiQWN0aW9uVGFyZ2V0IiwiaXNCb3VuZCIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsIiRUeXBlIiwidHlwZSIsIkFjdGlvblR5cGUiLCJEYXRhRmllbGRGb3JBY3Rpb24iLCJhbm5vdGF0aW9uUGF0aCIsImdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJwdXNoIiwiZ2V0Q2hhcnRBY3Rpb25zIiwiYUFubm90YXRpb25BY3Rpb25zIiwiaW5zZXJ0Q3VzdG9tRWxlbWVudHMiLCJnZXRBY3Rpb25zRnJvbU1hbmlmZXN0IiwiZ2V0TWFuaWZlc3RDb250cm9sQ29uZmlndXJhdGlvbiIsImFjdGlvbnMiLCJlbmFibGVPblNlbGVjdCIsImVuYWJsZWQiLCJjb21tYW5kIiwiZ2V0UDEzbk1vZGUiLCJtYW5pZmVzdFdyYXBwZXIiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJjaGFydE1hbmlmZXN0U2V0dGluZ3MiLCJoYXNWYXJpYW50TWFuYWdlbWVudCIsImluZGV4T2YiLCJnZXRWYXJpYW50TWFuYWdlbWVudCIsInBlcnNvbmFsaXphdGlvbiIsImFQZXJzb25hbGl6YXRpb24iLCJjaGFydFNldHRpbmdzIiwidW5kZWZpbmVkIiwiaXRlbSIsInNvcnQiLCJqb2luIiwiY3JlYXRlQ2hhcnRWaXN1YWxpemF0aW9uIiwiZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkIiwiYWdncmVnYXRpb25IZWxwZXIiLCJBZ2dyZWdhdGlvbkhlbHBlciIsImdldEVudGl0eVR5cGUiLCJpc0FuYWx5dGljc1N1cHBvcnRlZCIsIkVycm9yIiwiYVRyYW5zQWdnQW5ub3MiLCJBbmFseXRpY3MiLCJBZ2dyZWdhdGVkUHJvcGVydGllcyIsInRyYW5zQWdnTGFiZWxzIiwiaSIsImxlbmd0aCIsIk5hbWUiLCJsYWJlbCIsIkNvbW1vbiIsIkxhYmVsIiwiYUN1c3RvbUFnZ3JlZ2F0ZXMiLCJnZXRDdXN0b21BZ2dyZWdhdGVEZWZpbml0aW9ucyIsIm1DdXN0b21BZ2dyZWdhdGVzIiwiYUNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXMiLCJBZ2dyZWdhdGlvbiIsIkNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXMiLCJxdWFsaWZpZXIiLCJuYW1lIiwic29ydGFibGUiLCJzb3J0T3JkZXIiLCJjb250ZXh0RGVmaW5pbmdQcm9wZXJ0eSIsIm1hcCIsIm9DdHhEZWZQcm9wZXJ0eSIsInZhbHVlIiwiYVRyYW5zQWdncmVnYXRpb25zIiwiZ2V0VHJhbnNBZ2dyZWdhdGlvbnMiLCJtVHJhbnNBZ2dyZWdhdGlvbnMiLCJwcm9wZXJ0eVBhdGgiLCJBZ2dyZWdhdGFibGVQcm9wZXJ0eSIsImFnZ3JlZ2F0aW9uTWV0aG9kIiwiQWdncmVnYXRpb25NZXRob2QiLCJjdXN0b20iLCJhQWdnUHJvcHMiLCJnZXRBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzIiwiYUdycFByb3BzIiwiZ2V0R3JvdXBhYmxlUHJvcGVydGllcyIsIm1BcHBseVN1cHBvcnRlZCIsIkFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMiLCJHcm91cGFibGVQcm9wZXJ0aWVzIiwib2JqIiwiUHJvcGVydHkiLCIkUHJvcGVydHlQYXRoIiwic3BsaXQiLCJuYXZpZ2F0aW9uUHJvcGVydHlQYXRoIiwibGFzdEluZGV4T2YiLCJzdWJzdHIiLCJ0aXRsZSIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJ0YXJnZXRFbnRpdHlUeXBlIiwiSGVhZGVySW5mbyIsIlR5cGVOYW1lUGx1cmFsIiwiZGF0YU1vZGVsUGF0aCIsImlzRW50aXR5U2V0IiwiZW50aXR5TmFtZSIsInRhcmdldEVudGl0eVNldCIsInN0YXJ0aW5nRW50aXR5U2V0Iiwic0ZpbHRlcmJhcklkIiwiRmlsdGVyQmFySUQiLCJnZXRDb250ZXh0UGF0aCIsIm9WaXpQcm9wZXJ0aWVzIiwiYXV0b0JpbmRPbkluaXQiLCJnZXRUZW1wbGF0ZVR5cGUiLCJUZW1wbGF0ZVR5cGUiLCJPYmplY3RQYWdlIiwiTGlzdFJlcG9ydCIsIkFuYWx5dGljYWxMaXN0UGFnZSIsImhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMiLCJvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQiLCJ2aXNpYmxlIiwiYWxsb3dlZFRyYW5zZm9ybWF0aW9ucyIsImdldEFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMiLCJlbmFibGVTZWFyY2giLCJWaXN1YWxpemF0aW9uVHlwZSIsIkNoYXJ0IiwiaWQiLCJDaGFydElEIiwiY29sbGVjdGlvbiIsImdldFRhcmdldE9iamVjdFBhdGgiLCJuYXZpZ2F0aW9uUGF0aCIsImdldEFic29sdXRlQW5ub3RhdGlvblBhdGgiLCJmaWx0ZXJJZCIsInZpelByb3BlcnRpZXMiLCJKU09OIiwic3RyaW5naWZ5IiwiY3VzdG9tQWdnIiwidHJhbnNBZ2ciLCJhcHBseVN1cHBvcnRlZCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVNBLDhCQUFULENBQ0NDLGVBREQsRUFFQ0MsaUJBRkQsRUFHQ0MsZ0JBSEQsRUFJZ0I7QUFDZixRQUFNQyxZQUEwQixHQUFHLEVBQW5DOztBQUNBLFFBQUlILGVBQUosRUFBcUI7QUFDcEIsVUFBTUksUUFBUSxHQUFHSixlQUFl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SjtBQW1CTjRELE1BQUFBLGNBQWMsRUFBRWxEO0FBbkJWLEtBQVA7QUFxQkEiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYXJ0RGVmaW5pdGlvblR5cGVUeXBlcywgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgaXNEYXRhRmllbGRGb3JBY3Rpb25BYnN0cmFjdCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2Fubm90YXRpb25zL0RhdGFGaWVsZFwiO1xuaW1wb3J0IHsgQW5ub3RhdGlvbkFjdGlvbiwgQmFzZUFjdGlvbiwgZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCB7IGluc2VydEN1c3RvbUVsZW1lbnRzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IEtleUhlbHBlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvS2V5XCI7XG5pbXBvcnQgeyBnZXRUYXJnZXRPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uSGVscGVyIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvQWdncmVnYXRpb25cIjtcbmltcG9ydCB7IENoYXJ0SUQsIEZpbHRlckJhcklEIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvSURcIjtcbmltcG9ydCB7XG5cdEFjdGlvblR5cGUsXG5cdENoYXJ0TWFuaWZlc3RDb25maWd1cmF0aW9uLFxuXHRDaGFydFBlcnNvbmFsaXphdGlvbk1hbmlmZXN0U2V0dGluZ3MsXG5cdFRlbXBsYXRlVHlwZSxcblx0VmlzdWFsaXphdGlvblR5cGVcbn0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCBNYW5pZmVzdFdyYXBwZXIgZnJvbSBcIi4uLy4uL01hbmlmZXN0V3JhcHBlclwiO1xuXG4vKipcbiAqIEB0eXBlZGVmIENoYXJ0VmlzdWFsaXphdGlvblxuICovXG5leHBvcnQgdHlwZSBDaGFydFZpc3VhbGl6YXRpb24gPSB7XG5cdHR5cGU6IFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0O1xuXHRpZDogc3RyaW5nO1xuXHRjb2xsZWN0aW9uOiBzdHJpbmc7XG5cdGVudGl0eU5hbWU6IHN0cmluZztcblx0cGVyc29uYWxpemF0aW9uPzogc3RyaW5nO1xuXHRuYXZpZ2F0aW9uUGF0aDogc3RyaW5nO1xuXHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRmaWx0ZXJJZD86IHN0cmluZztcblx0dml6UHJvcGVydGllczogc3RyaW5nO1xuXHRhY3Rpb25zOiBCYXNlQWN0aW9uW107XG5cdHRpdGxlOiBzdHJpbmc7XG5cdGF1dG9CaW5kT25Jbml0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHRvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQ6IHN0cmluZztcblx0dmlzaWJsZTogc3RyaW5nO1xuXHRjdXN0b21BZ2c6IG9iamVjdDtcblx0dHJhbnNBZ2c6IG9iamVjdDtcblx0YXBwbHlTdXBwb3J0ZWQ6IHtcblx0XHQkVHlwZTogc3RyaW5nO1xuXHRcdGVuYWJsZVNlYXJjaDogYm9vbGVhbjtcblx0XHRBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzOiBhbnlbXTtcblx0XHRHcm91cGFibGVQcm9wZXJ0aWVzOiBhbnlbXTtcblx0fTtcblx0bXVsdGlWaWV3cz86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIE1ldGhvZCB0byByZXRyaWV2ZSBhbGwgY2hhcnQgYWN0aW9ucyBmcm9tIGFubm90YXRpb25zLlxuICpcbiAqIEBwYXJhbSBjaGFydEFubm90YXRpb25cbiAqIEBwYXJhbSB2aXN1YWxpemF0aW9uUGF0aFxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIHtCYXNlQWN0aW9uW119IFRoZSB0YWJsZSBhbm5vdGF0aW9uIGFjdGlvbnNcbiAqL1xuZnVuY3Rpb24gZ2V0Q2hhcnRBY3Rpb25zRnJvbUFubm90YXRpb25zKFxuXHRjaGFydEFubm90YXRpb246IENoYXJ0RGVmaW5pdGlvblR5cGVUeXBlcyxcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dFxuKTogQmFzZUFjdGlvbltdIHtcblx0Y29uc3QgY2hhcnRBY3Rpb25zOiBCYXNlQWN0aW9uW10gPSBbXTtcblx0aWYgKGNoYXJ0QW5ub3RhdGlvbikge1xuXHRcdGNvbnN0IGFBY3Rpb25zID0gY2hhcnRBbm5vdGF0aW9uLkFjdGlvbnMgfHwgW107XG5cdFx0YUFjdGlvbnMuZm9yRWFjaCgoZGF0YUZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzKSA9PiB7XG5cdFx0XHRsZXQgY2hhcnRBY3Rpb246IEFubm90YXRpb25BY3Rpb24gfCB1bmRlZmluZWQ7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGlzRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3QoZGF0YUZpZWxkKSAmJlxuXHRcdFx0XHQhKGRhdGFGaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpID09PSB0cnVlKSAmJlxuXHRcdFx0XHQhZGF0YUZpZWxkLklubGluZSAmJlxuXHRcdFx0XHQhZGF0YUZpZWxkLkRldGVybWluaW5nICYmXG5cdFx0XHRcdCEoZGF0YUZpZWxkIGFzIGFueSk/LkFjdGlvblRhcmdldD8uaXNCb3VuZFxuXHRcdFx0KSB7XG5cdFx0XHRcdGNvbnN0IGtleSA9IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZGF0YUZpZWxkKTtcblx0XHRcdFx0c3dpdGNoIChkYXRhRmllbGQuJFR5cGUpIHtcblx0XHRcdFx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQWN0aW9uXCI6XG5cdFx0XHRcdFx0XHRjaGFydEFjdGlvbiA9IHtcblx0XHRcdFx0XHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JBY3Rpb24sXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0XHRcdFx0XHRcdGtleToga2V5XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uXCI6XG5cdFx0XHRcdFx0XHRjaGFydEFjdGlvbiA9IHtcblx0XHRcdFx0XHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24sXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0XHRcdFx0XHRcdGtleToga2V5XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChjaGFydEFjdGlvbikge1xuXHRcdFx0XHRjaGFydEFjdGlvbnMucHVzaChjaGFydEFjdGlvbik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIGNoYXJ0QWN0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoYXJ0QWN0aW9ucyhcblx0Y2hhcnRBbm5vdGF0aW9uOiBDaGFydERlZmluaXRpb25UeXBlVHlwZXMsXG5cdHZpc3VhbGl6YXRpb25QYXRoOiBzdHJpbmcsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IEJhc2VBY3Rpb25bXSB7XG5cdGNvbnN0IGFBbm5vdGF0aW9uQWN0aW9uczogQmFzZUFjdGlvbltdID0gZ2V0Q2hhcnRBY3Rpb25zRnJvbUFubm90YXRpb25zKGNoYXJ0QW5ub3RhdGlvbiwgdmlzdWFsaXphdGlvblBhdGgsIGNvbnZlcnRlckNvbnRleHQpO1xuXG5cdHJldHVybiBpbnNlcnRDdXN0b21FbGVtZW50cyhcblx0XHRhQW5ub3RhdGlvbkFjdGlvbnMsXG5cdFx0Z2V0QWN0aW9uc0Zyb21NYW5pZmVzdChcblx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RDb250cm9sQ29uZmlndXJhdGlvbih2aXN1YWxpemF0aW9uUGF0aCkuYWN0aW9ucyxcblx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHRhQW5ub3RhdGlvbkFjdGlvbnNcblx0XHQpLFxuXHRcdHsgZW5hYmxlT25TZWxlY3Q6IFwib3ZlcndyaXRlXCIsIGVuYWJsZWQ6IFwib3ZlcndyaXRlXCIsIGNvbW1hbmQ6IFwib3ZlcndyaXRlXCIgfVxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UDEzbk1vZGUodmlzdWFsaXphdGlvblBhdGg6IHN0cmluZywgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IG1hbmlmZXN0V3JhcHBlcjogTWFuaWZlc3RXcmFwcGVyID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKTtcblx0Y29uc3QgY2hhcnRNYW5pZmVzdFNldHRpbmdzOiBDaGFydE1hbmlmZXN0Q29uZmlndXJhdGlvbiA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RDb250cm9sQ29uZmlndXJhdGlvbih2aXN1YWxpemF0aW9uUGF0aCk7XG5cdGNvbnN0IGhhc1ZhcmlhbnRNYW5hZ2VtZW50OiBib29sZWFuID0gW1wiUGFnZVwiLCBcIkNvbnRyb2xcIl0uaW5kZXhPZihtYW5pZmVzdFdyYXBwZXIuZ2V0VmFyaWFudE1hbmFnZW1lbnQoKSkgPiAtMTtcblx0bGV0IHBlcnNvbmFsaXphdGlvbjogQ2hhcnRQZXJzb25hbGl6YXRpb25NYW5pZmVzdFNldHRpbmdzID0gdHJ1ZTtcblx0Y29uc3QgYVBlcnNvbmFsaXphdGlvbjogc3RyaW5nW10gPSBbXTtcblx0aWYgKGNoYXJ0TWFuaWZlc3RTZXR0aW5ncz8uY2hhcnRTZXR0aW5ncz8ucGVyc29uYWxpemF0aW9uICE9PSB1bmRlZmluZWQpIHtcblx0XHRwZXJzb25hbGl6YXRpb24gPSBjaGFydE1hbmlmZXN0U2V0dGluZ3MuY2hhcnRTZXR0aW5ncy5wZXJzb25hbGl6YXRpb247XG5cdH1cblx0aWYgKGhhc1ZhcmlhbnRNYW5hZ2VtZW50ICYmIHBlcnNvbmFsaXphdGlvbikge1xuXHRcdGlmIChwZXJzb25hbGl6YXRpb24gPT09IHRydWUpIHtcblx0XHRcdHJldHVybiBcIlNvcnQsVHlwZSxJdGVtXCI7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgcGVyc29uYWxpemF0aW9uID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRpZiAocGVyc29uYWxpemF0aW9uLnR5cGUpIHtcblx0XHRcdFx0YVBlcnNvbmFsaXphdGlvbi5wdXNoKFwiVHlwZVwiKTtcblx0XHRcdH1cblx0XHRcdGlmIChwZXJzb25hbGl6YXRpb24uaXRlbSkge1xuXHRcdFx0XHRhUGVyc29uYWxpemF0aW9uLnB1c2goXCJJdGVtXCIpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBlcnNvbmFsaXphdGlvbi5zb3J0KSB7XG5cdFx0XHRcdGFQZXJzb25hbGl6YXRpb24ucHVzaChcIlNvcnRcIik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYVBlcnNvbmFsaXphdGlvbi5qb2luKFwiLFwiKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIENoYXJ0VmlzdWFsaXphdGlvbiBjb25maWd1cmF0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRpc3BsYXkgYSBjaGFydCB1c2luZyB0aGUgQ2hhcnQgYnVpbGRpbmcgYmxvY2suXG4gKlxuICogQHBhcmFtIHtDaGFydERlZmluaXRpb25UeXBlVHlwZXN9IGNoYXJ0QW5ub3RhdGlvbiBUaGUgdGFyZ2V0IGNoYXJ0IGFubm90YXRpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSB2aXN1YWxpemF0aW9uUGF0aCBUaGUgY3VycmVudCB2aXN1YWxpemF0aW9uIGFubm90YXRpb24gcGF0aFxuICogQHBhcmFtIHtDb252ZXJ0ZXJDb250ZXh0fSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIHtib29sZWFufSBkb05vdENoZWNrQXBwbHlTdXBwb3J0ZWQgRmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIGFwcGx5c3VwcG9ydGVkIG5lZWRzIHRvIGJlIGNoZWNrZWQgb3Igbm90XG4gKiBAcmV0dXJucyB7Q2hhcnRWaXN1YWxpemF0aW9ufSBUaGUgY2hhcnQgdmlzdWFsaXphdGlvbiBiYXNlZCBvbiB0aGUgYW5ub3RhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2hhcnRWaXN1YWxpemF0aW9uKFxuXHRjaGFydEFubm90YXRpb246IENoYXJ0RGVmaW5pdGlvblR5cGVUeXBlcyxcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0ZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkPzogYm9vbGVhblxuKTogQ2hhcnRWaXN1YWxpemF0aW9uIHtcblx0Y29uc3QgYWdncmVnYXRpb25IZWxwZXIgPSBuZXcgQWdncmVnYXRpb25IZWxwZXIoY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCksIGNvbnZlcnRlckNvbnRleHQpO1xuXHRpZiAoIWRvTm90Q2hlY2tBcHBseVN1cHBvcnRlZCAmJiAhYWdncmVnYXRpb25IZWxwZXIuaXNBbmFseXRpY3NTdXBwb3J0ZWQoKSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIkFwcGx5U3VwcG9ydGVkIGlzIG5vdCBhZGRlZCB0byB0aGUgYW5ub3RhdGlvbnNcIik7XG5cdH1cblx0Y29uc3QgYVRyYW5zQWdnQW5ub3MgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKS5hbm5vdGF0aW9ucy5BbmFseXRpY3M/LkFnZ3JlZ2F0ZWRQcm9wZXJ0aWVzIGFzIGFueTtcblx0Y29uc3QgdHJhbnNBZ2dMYWJlbHMgPSB7fSBhcyBhbnk7XG5cblx0Zm9yIChsZXQgaSA9IDA7IGFUcmFuc0FnZ0Fubm9zICYmIGkgPCBhVHJhbnNBZ2dBbm5vcy5sZW5ndGg7IGkrKykge1xuXHRcdHRyYW5zQWdnTGFiZWxzW2FUcmFuc0FnZ0Fubm9zW2ldLk5hbWVdID0ge1xuXHRcdFx0bGFiZWw6IGFUcmFuc0FnZ0Fubm9zW2ldPy5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbFxuXHRcdH07XG5cdH1cblxuXHRjb25zdCBhQ3VzdG9tQWdncmVnYXRlcyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEN1c3RvbUFnZ3JlZ2F0ZURlZmluaXRpb25zKCk7XG5cdGNvbnN0IG1DdXN0b21BZ2dyZWdhdGVzID0ge30gYXMgYW55O1xuXHRpZiAoYUN1c3RvbUFnZ3JlZ2F0ZXMpIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFDdXN0b21BZ2dyZWdhdGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBhQ29udGV4dERlZmluaW5nUHJvcGVydGllcyA9IGFDdXN0b21BZ2dyZWdhdGVzW2ldLmFubm90YXRpb25zPy5BZ2dyZWdhdGlvbj8uQ29udGV4dERlZmluaW5nUHJvcGVydGllcztcblx0XHRcdG1DdXN0b21BZ2dyZWdhdGVzW2FDdXN0b21BZ2dyZWdhdGVzW2ldLnF1YWxpZmllcl0gPSB7XG5cdFx0XHRcdG5hbWU6IGFDdXN0b21BZ2dyZWdhdGVzW2ldLnF1YWxpZmllcixcblx0XHRcdFx0bGFiZWw6IFwiQ3VzdG9tIEFnZ3JlZ2F0ZSAoXCIgKyBhQ3VzdG9tQWdncmVnYXRlc1tpXS5xdWFsaWZpZXIgKyBcIilcIixcblx0XHRcdFx0c29ydGFibGU6IHRydWUsXG5cdFx0XHRcdHNvcnRPcmRlcjogXCJib3RoXCIsXG5cdFx0XHRcdGNvbnRleHREZWZpbmluZ1Byb3BlcnR5OiBhQ29udGV4dERlZmluaW5nUHJvcGVydGllc1xuXHRcdFx0XHRcdD8gYUNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXMubWFwKChvQ3R4RGVmUHJvcGVydHkpID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG9DdHhEZWZQcm9wZXJ0eS52YWx1ZTtcblx0XHRcdFx0XHQgIH0pXG5cdFx0XHRcdFx0OiBbXVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBhVHJhbnNBZ2dyZWdhdGlvbnMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRUcmFuc0FnZ3JlZ2F0aW9ucygpWzBdO1xuXHRjb25zdCBtVHJhbnNBZ2dyZWdhdGlvbnMgPSB7fSBhcyBhbnk7XG5cdGlmIChhVHJhbnNBZ2dyZWdhdGlvbnMpIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFUcmFuc0FnZ3JlZ2F0aW9ucy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bVRyYW5zQWdncmVnYXRpb25zW2FUcmFuc0FnZ3JlZ2F0aW9uc1tpXS5OYW1lXSA9IHtcblx0XHRcdFx0bmFtZTogYVRyYW5zQWdncmVnYXRpb25zW2ldLk5hbWUsXG5cdFx0XHRcdHByb3BlcnR5UGF0aDogYVRyYW5zQWdncmVnYXRpb25zW2ldLkFnZ3JlZ2F0YWJsZVByb3BlcnR5LnZhbHVlT2YoKS52YWx1ZSxcblx0XHRcdFx0YWdncmVnYXRpb25NZXRob2Q6IGFUcmFuc0FnZ3JlZ2F0aW9uc1tpXS5BZ2dyZWdhdGlvbk1ldGhvZCxcblx0XHRcdFx0bGFiZWw6XG5cdFx0XHRcdFx0YVRyYW5zQWdncmVnYXRpb25zW2ldLk5hbWUgaW4gdHJhbnNBZ2dMYWJlbHNcblx0XHRcdFx0XHRcdD8gdHJhbnNBZ2dMYWJlbHNbYVRyYW5zQWdncmVnYXRpb25zW2ldLk5hbWVdLmxhYmVsXG5cdFx0XHRcdFx0XHQ6IFwiQWdncmVnYXRhYmxlIHByb3BlcnR5IChcIiArIGFUcmFuc0FnZ3JlZ2F0aW9uc1tpXS5OYW1lICsgXCIpXCIsXG5cdFx0XHRcdHNvcnRhYmxlOiB0cnVlLFxuXHRcdFx0XHRzb3J0T3JkZXI6IFwiYm90aFwiLFxuXHRcdFx0XHRjdXN0b206IGZhbHNlXG5cdFx0XHR9O1xuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGFBZ2dQcm9wcyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMoKTtcblx0Y29uc3QgYUdycFByb3BzID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0R3JvdXBhYmxlUHJvcGVydGllcygpO1xuXHRjb25zdCBtQXBwbHlTdXBwb3J0ZWQgPSB7fSBhcyBhbnk7XG5cdG1BcHBseVN1cHBvcnRlZC4kVHlwZSA9IFwiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkFwcGx5U3VwcG9ydGVkVHlwZVwiO1xuXHRtQXBwbHlTdXBwb3J0ZWQuQWdncmVnYXRhYmxlUHJvcGVydGllcyA9IFtdO1xuXHRtQXBwbHlTdXBwb3J0ZWQuR3JvdXBhYmxlUHJvcGVydGllcyA9IFtdO1xuXG5cdGZvciAobGV0IGkgPSAwOyBhQWdnUHJvcHMgJiYgaSA8IGFBZ2dQcm9wcy5sZW5ndGg7IGkrKykge1xuXHRcdGNvbnN0IG9iaiA9IHtcblx0XHRcdCRUeXBlOiBhQWdnUHJvcHNbaV0/LiRUeXBlLFxuXHRcdFx0UHJvcGVydHk6IHtcblx0XHRcdFx0JFByb3BlcnR5UGF0aDogYUFnZ1Byb3BzW2ldPy5Qcm9wZXJ0eT8udmFsdWVcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0bUFwcGx5U3VwcG9ydGVkLkFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMucHVzaChvYmopO1xuXHR9XG5cblx0Zm9yIChsZXQgaSA9IDA7IGFHcnBQcm9wcyAmJiBpIDwgYUdycFByb3BzLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3Qgb2JqID0geyAkUHJvcGVydHlQYXRoOiBhR3JwUHJvcHNbaV0/LnZhbHVlIH07XG5cblx0XHRtQXBwbHlTdXBwb3J0ZWQuR3JvdXBhYmxlUHJvcGVydGllcy5wdXNoKG9iaik7XG5cdH1cblxuXHRjb25zdCBjaGFydEFjdGlvbnMgPSBnZXRDaGFydEFjdGlvbnMoY2hhcnRBbm5vdGF0aW9uLCB2aXN1YWxpemF0aW9uUGF0aCwgY29udmVydGVyQ29udGV4dCk7XG5cdGxldCBbbmF2aWdhdGlvblByb3BlcnR5UGF0aCAvKiwgYW5ub3RhdGlvblBhdGgqL10gPSB2aXN1YWxpemF0aW9uUGF0aC5zcGxpdChcIkBcIik7XG5cdGlmIChuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxhc3RJbmRleE9mKFwiL1wiKSA9PT0gbmF2aWdhdGlvblByb3BlcnR5UGF0aC5sZW5ndGggLSAxKSB7XG5cdFx0Ly8gRHJvcCB0cmFpbGluZyBzbGFzaFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGggPSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLnN1YnN0cigwLCBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCAtIDEpO1xuXHR9XG5cdGNvbnN0IHRpdGxlOiBhbnkgPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKS50YXJnZXRFbnRpdHlUeXBlLmFubm90YXRpb25zPy5VST8uSGVhZGVySW5mbz8uVHlwZU5hbWVQbHVyYWw7XG5cdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKTtcblx0Y29uc3QgaXNFbnRpdHlTZXQ6IGJvb2xlYW4gPSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCA9PT0gMDtcblx0Y29uc3QgZW50aXR5TmFtZTogc3RyaW5nID0gZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQgPyBkYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVNldC5uYW1lIDogZGF0YU1vZGVsUGF0aC5zdGFydGluZ0VudGl0eVNldC5uYW1lO1xuXHRjb25zdCBzRmlsdGVyYmFySWQgPSBpc0VudGl0eVNldCA/IEZpbHRlckJhcklEKGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udGV4dFBhdGgoKSkgOiB1bmRlZmluZWQ7XG5cdGNvbnN0IG9WaXpQcm9wZXJ0aWVzID0ge1xuXHRcdFwibGVnZW5kR3JvdXBcIjoge1xuXHRcdFx0XCJsYXlvdXRcIjoge1xuXHRcdFx0XHRcInBvc2l0aW9uXCI6IFwiYm90dG9tXCJcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdGxldCBhdXRvQmluZE9uSW5pdDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblx0aWYgKGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5PYmplY3RQYWdlKSB7XG5cdFx0YXV0b0JpbmRPbkluaXQgPSB0cnVlO1xuXHR9IGVsc2UgaWYgKFxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5MaXN0UmVwb3J0IHx8XG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLkFuYWx5dGljYWxMaXN0UGFnZVxuXHQpIHtcblx0XHRhdXRvQmluZE9uSW5pdCA9IGZhbHNlO1xuXHR9XG5cdGNvbnN0IGhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMgPVxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucygpIHx8IGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFwiQW5hbHl0aWNhbExpc3RQYWdlXCI7XG5cdGNvbnN0IG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZCA9IGhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMgPyBcIi5oYW5kbGVycy5vblNlZ21lbnRlZEJ1dHRvblByZXNzZWRcIiA6IFwiXCI7XG5cdGNvbnN0IHZpc2libGUgPSBoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zID8gXCJ7PSAke3BhZ2VJbnRlcm5hbD5hbHBDb250ZW50Vmlld30gIT09ICdUYWJsZSd9XCIgOiBcInRydWVcIjtcblx0Y29uc3QgYWxsb3dlZFRyYW5zZm9ybWF0aW9ucyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMoKTtcblx0bUFwcGx5U3VwcG9ydGVkLmVuYWJsZVNlYXJjaCA9IGFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMgPyBhbGxvd2VkVHJhbnNmb3JtYXRpb25zLmluZGV4T2YoXCJzZWFyY2hcIikgPj0gMCA6IHRydWU7XG5cdGxldCBxdWFsaWZpZXI6IHN0cmluZyA9IFwiXCI7XG5cdGlmIChjaGFydEFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KFwiI1wiKS5sZW5ndGggPiAxKSB7XG5cdFx0cXVhbGlmaWVyID0gY2hhcnRBbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdChcIiNcIilbMV07XG5cdH1cblx0cmV0dXJuIHtcblx0XHR0eXBlOiBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCxcblx0XHRpZDogcXVhbGlmaWVyXG5cdFx0XHQ/IENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgcXVhbGlmaWVyLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydClcblx0XHRcdDogQ2hhcnRJRChpc0VudGl0eVNldCA/IGVudGl0eU5hbWUgOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCksXG5cdFx0Y29sbGVjdGlvbjogZ2V0VGFyZ2V0T2JqZWN0UGF0aChjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSksXG5cdFx0ZW50aXR5TmFtZTogZW50aXR5TmFtZSxcblx0XHRwZXJzb25hbGl6YXRpb246IGdldFAxM25Nb2RlKHZpc3VhbGl6YXRpb25QYXRoLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRuYXZpZ2F0aW9uUGF0aDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCxcblx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKHZpc3VhbGl6YXRpb25QYXRoKSxcblx0XHRmaWx0ZXJJZDogc0ZpbHRlcmJhcklkLFxuXHRcdHZpelByb3BlcnRpZXM6IEpTT04uc3RyaW5naWZ5KG9WaXpQcm9wZXJ0aWVzKSxcblx0XHRhY3Rpb25zOiBjaGFydEFjdGlvbnMsXG5cdFx0dGl0bGU6IHRpdGxlLFxuXHRcdGF1dG9CaW5kT25Jbml0OiBhdXRvQmluZE9uSW5pdCxcblx0XHRvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQ6IG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZCxcblx0XHR2aXNpYmxlOiB2aXNpYmxlLFxuXHRcdGN1c3RvbUFnZzogbUN1c3RvbUFnZ3JlZ2F0ZXMsXG5cdFx0dHJhbnNBZ2c6IG1UcmFuc0FnZ3JlZ2F0aW9ucyxcblx0XHRhcHBseVN1cHBvcnRlZDogbUFwcGx5U3VwcG9ydGVkXG5cdH07XG59XG4iXX0=
|
|
294
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNoYXJ0LnRzIl0sIm5hbWVzIjpbImdldENoYXJ0QWN0aW9uc0Zyb21Bbm5vdGF0aW9ucyIsImNoYXJ0QW5ub3RhdGlvbiIsInZpc3VhbGl6YXRpb25QYXRoIiwiY29udmVydGVyQ29udGV4dCIsImNoYXJ0QWN0aW9ucyIsImFBY3Rpb25zIiwiQWN0aW9ucyIsImZvckVhY2giLCJkYXRhRmllbGQiLCJjaGFydEFjdGlvbiIsImlzRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3QiLCJhbm5vdGF0aW9ucyIsIlVJIiwiSGlkZGVuIiwidmFsdWVPZiIsIklubGluZSIsIkRldGVybWluaW5nIiwiQWN0aW9uVGFyZ2V0IiwiaXNCb3VuZCIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsIiRUeXBlIiwidHlwZSIsIkFjdGlvblR5cGUiLCJEYXRhRmllbGRGb3JBY3Rpb24iLCJhbm5vdGF0aW9uUGF0aCIsImdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJwdXNoIiwiZ2V0Q2hhcnRBY3Rpb25zIiwiYUFubm90YXRpb25BY3Rpb25zIiwiaW5zZXJ0Q3VzdG9tRWxlbWVudHMiLCJnZXRBY3Rpb25zRnJvbU1hbmlmZXN0IiwiZ2V0TWFuaWZlc3RDb250cm9sQ29uZmlndXJhdGlvbiIsImFjdGlvbnMiLCJlbmFibGVPblNlbGVjdCIsImVuYWJsZWQiLCJjb21tYW5kIiwiZ2V0UDEzbk1vZGUiLCJtYW5pZmVzdFdyYXBwZXIiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJjaGFydE1hbmlmZXN0U2V0dGluZ3MiLCJoYXNWYXJpYW50TWFuYWdlbWVudCIsImluZGV4T2YiLCJnZXRWYXJpYW50TWFuYWdlbWVudCIsInBlcnNvbmFsaXphdGlvbiIsImFQZXJzb25hbGl6YXRpb24iLCJjaGFydFNldHRpbmdzIiwidW5kZWZpbmVkIiwiaXRlbSIsInNvcnQiLCJqb2luIiwiY3JlYXRlQ2hhcnRWaXN1YWxpemF0aW9uIiwiZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkIiwiYWdncmVnYXRpb25IZWxwZXIiLCJBZ2dyZWdhdGlvbkhlbHBlciIsImdldEVudGl0eVR5cGUiLCJpc0FuYWx5dGljc1N1cHBvcnRlZCIsIkVycm9yIiwiYVRyYW5zQWdnQW5ub3MiLCJBbmFseXRpY3MiLCJBZ2dyZWdhdGVkUHJvcGVydGllcyIsInRyYW5zQWdnTGFiZWxzIiwiaSIsImxlbmd0aCIsIk5hbWUiLCJsYWJlbCIsIkNvbW1vbiIsIkxhYmVsIiwidG9TdHJpbmciLCJhQ3VzdG9tQWdncmVnYXRlcyIsImdldEN1c3RvbUFnZ3JlZ2F0ZURlZmluaXRpb25zIiwibUN1c3RvbUFnZ3JlZ2F0ZXMiLCJhQ29udGV4dERlZmluaW5nUHJvcGVydGllcyIsIkFnZ3JlZ2F0aW9uIiwiQ29udGV4dERlZmluaW5nUHJvcGVydGllcyIsInF1YWxpZmllciIsIm5hbWUiLCJzb3J0YWJsZSIsInNvcnRPcmRlciIsImNvbnRleHREZWZpbmluZ1Byb3BlcnR5IiwibWFwIiwib0N0eERlZlByb3BlcnR5IiwidmFsdWUiLCJhVHJhbnNBZ2dyZWdhdGlvbnMiLCJnZXRUcmFuc0FnZ3JlZ2F0aW9ucyIsIm1UcmFuc0FnZ3JlZ2F0aW9ucyIsInByb3BlcnR5UGF0aCIsIkFnZ3JlZ2F0YWJsZVByb3BlcnR5IiwiYWdncmVnYXRpb25NZXRob2QiLCJBZ2dyZWdhdGlvbk1ldGhvZCIsImN1c3RvbSIsImFBZ2dQcm9wcyIsImdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMiLCJhR3JwUHJvcHMiLCJnZXRHcm91cGFibGVQcm9wZXJ0aWVzIiwibUFwcGx5U3VwcG9ydGVkIiwiQWdncmVnYXRhYmxlUHJvcGVydGllcyIsIkdyb3VwYWJsZVByb3BlcnRpZXMiLCJvYmoiLCJQcm9wZXJ0eSIsIiRQcm9wZXJ0eVBhdGgiLCJzcGxpdCIsIm5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJsYXN0SW5kZXhPZiIsInN1YnN0ciIsInRpdGxlIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsInRhcmdldEVudGl0eVR5cGUiLCJIZWFkZXJJbmZvIiwiVHlwZU5hbWVQbHVyYWwiLCJkYXRhTW9kZWxQYXRoIiwiaXNFbnRpdHlTZXQiLCJlbnRpdHlOYW1lIiwidGFyZ2V0RW50aXR5U2V0Iiwic3RhcnRpbmdFbnRpdHlTZXQiLCJzRmlsdGVyYmFySWQiLCJnZXRGaWx0ZXJCYXJJRCIsImdldENvbnRleHRQYXRoIiwib1ZpelByb3BlcnRpZXMiLCJhdXRvQmluZE9uSW5pdCIsImdldFRlbXBsYXRlVHlwZSIsIlRlbXBsYXRlVHlwZSIsIk9iamVjdFBhZ2UiLCJMaXN0UmVwb3J0IiwiQW5hbHl0aWNhbExpc3RQYWdlIiwiaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyIsIm9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZCIsInZpc2libGUiLCJhbGxvd2VkVHJhbnNmb3JtYXRpb25zIiwiZ2V0QWxsb3dlZFRyYW5zZm9ybWF0aW9ucyIsImVuYWJsZVNlYXJjaCIsIlZpc3VhbGl6YXRpb25UeXBlIiwiQ2hhcnQiLCJpZCIsImdldENoYXJ0SUQiLCJjb2xsZWN0aW9uIiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsIm5hdmlnYXRpb25QYXRoIiwiZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aCIsImZpbHRlcklkIiwidml6UHJvcGVydGllcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjdXN0b21BZ2ciLCJ0cmFuc0FnZyIsImFwcGx5U3VwcG9ydGVkIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBU0EsOEJBQVQsQ0FDQ0MsZUFERCxFQUVDQyxpQkFGRCxFQUdDQyxnQkFIRCxFQUlnQjtBQUNmLFFBQU1DLFlBQTBCLEdBQUcsRUFBbkM7O0FBQ0EsUUFBSUgsZUFBSixFQUFxQjtBQUNwQixVQUFNSSxRQUFRLEdBQUdKLGVBQWUsQ0FBQ0ssT0FBaEIsSUFBMkIsRUFBNUM7QUFDQUQsTUFBQUEsUUFBUSxDQUFDRSxPQUFULENBQWlCLFVBQUNDLFNBQUQsRUFBdUM7QUFBQTs7QUFDdkQsWUFBSUMsV0FBSjs7QUFDQSxZQUNDQyw0QkFBNEIsQ0FBQ0YsU0FBRCxDQUE1QixJQUNBLEVBQUUsMEJBQUFBLFNBQVMsQ0FBQ0csV0FBViwwR0FBdUJDLEVBQXZCLDRHQUEyQkMsTUFBM0Isa0ZBQW1DQyxPQUFuQyxRQUFpRCxJQUFuRCxDQURBLElBRUEsQ0FBQ04sU0FBUyxDQUFDTyxNQUZYLElBR0EsQ0FBQ1AsU0FBUyxDQUFDUSxXQUhYLElBSUEsRUFBRVIsU0FBRixhQUFFQSxTQUFGLGdDQUFFQSxTQUFELENBQW9CUyxZQUFyQiwwQ0FBQyxjQUFrQ0MsT0FBbkMsQ0FMRCxFQU1FO0FBQ0QsY0FBTUMsR0FBRyxHQUFHQyxTQUFTLENBQUNDLHdCQUFWLENBQW1DYixTQUFuQyxDQUFaOztBQUNBLGtCQUFRQSxTQUFTLENBQUNjLEtBQWxCO0FBQ0M7QUFDQ2IsY0FBQUEsV0FBVyxHQUFHO0FBQ2JjLGdCQUFBQSxJQUFJLEVBQUVDLFVBQVUsQ0FBQ0Msa0JBREo7QUFFYkMsZ0JBQUFBLGNBQWMsRUFBRXZCLGdCQUFnQixDQUFDd0IsK0JBQWpCLENBQWlEbkIsU0FBUyxDQUFDb0Isa0JBQTNELENBRkg7QUFHYlQsZ0JBQUFBLEdBQUcsRUFBRUE7QUFIUSxlQUFkO0FBS0E7O0FBRUQ7QUFDQ1YsY0FBQUEsV0FBVyxHQUFHO0FBQ2JjLGdCQUFBQSxJQUFJLEVBQUVDLFVBQVUsQ0FBQ0ssaUNBREo7QUFFYkgsZ0JBQUFBLGNBQWMsRUFBRXZCLGdCQUFnQixDQUFDd0IsK0JBQWpCLENBQWlEbkIsU0FBUyxDQUFDb0Isa0JBQTNELENBRkg7QUFHYlQsZ0JBQUFBLEdBQUcsRUFBRUE7QUFIUSxlQUFkO0FBS0E7QUFmRjtBQWlCQTs7QUFDRCxZQUFJVixXQUFKLEVBQWlCO0FBQ2hCTCxVQUFBQSxZQUFZLENBQUMwQixJQUFiLENBQWtCckIsV0FBbEI7QUFDQTtBQUNELE9BL0JEO0FBZ0NBOztBQUNELFdBQU9MLFlBQVA7QUFDQTs7QUFFTSxXQUFTMkIsZUFBVCxDQUNOOUIsZUFETSxFQUVOQyxpQkFGTSxFQUdOQyxnQkFITSxFQUlTO0FBQ2YsUUFBTTZCLGtCQUFnQyxHQUFHaEMsOEJBQThCLENBQUNDLGVBQUQsRUFBa0JDLGlCQUFsQixFQUFxQ0MsZ0JBQXJDLENBQXZFO0FBRUEsV0FBTzhCLG9CQUFvQixDQUMxQkQsa0JBRDBCLEVBRTFCRSxzQkFBc0IsQ0FDckIvQixnQkFBZ0IsQ0FBQ2dDLCtCQUFqQixDQUFpRGpDLGlCQUFqRCxFQUFvRWtDLE9BRC9DLEVBRXJCakMsZ0JBRnFCLEVBR3JCNkIsa0JBSHFCLENBRkksRUFPMUI7QUFBRUssTUFBQUEsY0FBYyxFQUFFLFdBQWxCO0FBQStCQyxNQUFBQSxPQUFPLEVBQUUsV0FBeEM7QUFBcURDLE1BQUFBLE9BQU8sRUFBRTtBQUE5RCxLQVAwQixDQUEzQjtBQVNBOzs7O0FBRU0sV0FBU0MsV0FBVCxDQUFxQnRDLGlCQUFyQixFQUFnREMsZ0JBQWhELEVBQXdHO0FBQUE7O0FBQzlHLFFBQU1zQyxlQUFnQyxHQUFHdEMsZ0JBQWdCLENBQUN1QyxrQkFBakIsRUFBekM7QUFDQSxRQUFNQyxxQkFBaUQsR0FBR3hDLGdCQUFnQixDQUFDZ0MsK0JBQWpCLENBQWlEakMsaUJBQWpELENBQTFEO0FBQ0EsUUFBTTBDLG9CQUE2QixHQUFHLENBQUMsTUFBRCxFQUFTLFNBQVQsRUFBb0JDLE9BQXBCLENBQTRCSixlQUFlLENBQUNLLG9CQUFoQixFQUE1QixJQUFzRSxDQUFDLENBQTdHO0FBQ0EsUUFBSUMsZUFBcUQsR0FBRyxJQUE1RDtBQUNBLFFBQU1DLGdCQUEwQixHQUFHLEVBQW5DOztBQUNBLFFBQUksQ0FBQUwscUJBQXFCLFNBQXJCLElBQUFBLHFCQUFxQixXQUFyQixxQ0FBQUEscUJBQXFCLENBQUVNLGFBQXZCLGdGQUFzQ0YsZUFBdEMsTUFBMERHLFNBQTlELEVBQXlFO0FBQ3hFSCxNQUFBQSxlQUFlLEdBQUdKLHFCQUFxQixDQUFDTSxhQUF0QixDQUFvQ0YsZUFBdEQ7QUFDQTs7QUFDRCxRQUFJSCxvQkFBb0IsSUFBSUcsZUFBNUIsRUFBNkM7QUFDNUMsVUFBSUEsZUFBZSxLQUFLLElBQXhCLEVBQThCO0FBQzdCLGVBQU8sZ0JBQVA7QUFDQSxPQUZELE1BRU8sSUFBSSxPQUFPQSxlQUFQLEtBQTJCLFFBQS9CLEVBQXlDO0FBQy9DLFlBQUlBLGVBQWUsQ0FBQ3hCLElBQXBCLEVBQTBCO0FBQ3pCeUIsVUFBQUEsZ0JBQWdCLENBQUNsQixJQUFqQixDQUFzQixNQUF0QjtBQUNBOztBQUNELFlBQUlpQixlQUFlLENBQUNJLElBQXBCLEVBQTBCO0FBQ3pCSCxVQUFBQSxnQkFBZ0IsQ0FBQ2xCLElBQWpCLENBQXNCLE1BQXRCO0FBQ0E7O0FBQ0QsWUFBSWlCLGVBQWUsQ0FBQ0ssSUFBcEIsRUFBMEI7QUFDekJKLFVBQUFBLGdCQUFnQixDQUFDbEIsSUFBakIsQ0FBc0IsTUFBdEI7QUFDQTs7QUFDRCxlQUFPa0IsZ0JBQWdCLENBQUNLLElBQWpCLENBQXNCLEdBQXRCLENBQVA7QUFDQTtBQUNEOztBQUNELFdBQU9ILFNBQVA7QUFDQTtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxXQUFTSSx3QkFBVCxDQUNOckQsZUFETSxFQUVOQyxpQkFGTSxFQUdOQyxnQkFITSxFQUlOb0Qsd0JBSk0sRUFLZTtBQUFBOztBQUNyQixRQUFNQyxpQkFBaUIsR0FBRyxJQUFJQyxpQkFBSixDQUFzQnRELGdCQUFnQixDQUFDdUQsYUFBakIsRUFBdEIsRUFBd0R2RCxnQkFBeEQsQ0FBMUI7O0FBQ0EsUUFBSSxDQUFDb0Qsd0JBQUQsSUFBNkIsQ0FBQ0MsaUJBQWlCLENBQUNHLG9CQUFsQixFQUFsQyxFQUE0RTtBQUMzRSxZQUFNLElBQUlDLEtBQUosQ0FBVSxnREFBVixDQUFOO0FBQ0E7O0FBQ0QsUUFBTUMsY0FBYyw0QkFBRzFELGdCQUFnQixDQUFDdUQsYUFBakIsR0FBaUMvQyxXQUFqQyxDQUE2Q21ELFNBQWhELDBEQUFHLHNCQUF3REMsb0JBQS9FO0FBQ0EsUUFBTUMsY0FBYyxHQUFHLEVBQXZCOztBQUVBLFNBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JKLGNBQWMsSUFBSUksQ0FBQyxHQUFHSixjQUFjLENBQUNLLE1BQXJELEVBQTZERCxDQUFDLEVBQTlELEVBQWtFO0FBQUE7O0FBQ2pFRCxNQUFBQSxjQUFjLENBQUNILGNBQWMsQ0FBQ0ksQ0FBRCxDQUFkLENBQWtCRSxJQUFuQixDQUFkLEdBQXlDO0FBQ3hDQyxRQUFBQSxLQUFLLHVCQUFFUCxjQUFjLENBQUNJLENBQUQsQ0FBaEIsK0VBQUUsa0JBQW1CdEQsV0FBckIsb0ZBQUUsc0JBQWdDMEQsTUFBbEMsMkRBQUUsdUJBQXdDQyxLQUF4QyxDQUE4Q0MsUUFBOUM7QUFEaUMsT0FBekM7QUFHQTs7QUFFRCxRQUFNQyxpQkFBaUIsR0FBR2hCLGlCQUFpQixDQUFDaUIsNkJBQWxCLEVBQTFCO0FBQ0EsUUFBTUMsaUJBQWlCLEdBQUcsRUFBMUI7O0FBQ0EsUUFBSUYsaUJBQUosRUFBdUI7QUFDdEIsV0FBSyxJQUFJUCxFQUFDLEdBQUcsQ0FBYixFQUFnQkEsRUFBQyxHQUFHTyxpQkFBaUIsQ0FBQ04sTUFBdEMsRUFBOENELEVBQUMsRUFBL0MsRUFBbUQ7QUFBQTs7QUFDbEQsWUFBTVUsMEJBQTBCLDRCQUFHSCxpQkFBaUIsQ0FBQ1AsRUFBRCxDQUFqQixDQUFxQnRELFdBQXhCLG9GQUFHLHNCQUFrQ2lFLFdBQXJDLDJEQUFHLHVCQUErQ0MseUJBQWxGO0FBQ0FILFFBQUFBLGlCQUFpQixDQUFDRixpQkFBaUIsQ0FBQ1AsRUFBRCxDQUFqQixDQUFxQmEsU0FBdEIsQ0FBakIsR0FBb0Q7QUFDbkRDLFVBQUFBLElBQUksRUFBRVAsaUJBQWlCLENBQUNQLEVBQUQsQ0FBakIsQ0FBcUJhLFNBRHdCO0FBRW5EVixVQUFBQSxLQUFLLDhCQUF1QkksaUJBQWlCLENBQUNQLEVBQUQsQ0FBakIsQ0FBcUJhLFNBQTVDLE1BRjhDO0FBR25ERSxVQUFBQSxRQUFRLEVBQUUsSUFIeUM7QUFJbkRDLFVBQUFBLFNBQVMsRUFBRSxNQUp3QztBQUtuREMsVUFBQUEsdUJBQXVCLEVBQUVQLDBCQUEwQixHQUNoREEsMEJBQTBCLENBQUNRLEdBQTNCLENBQStCLFVBQUNDLGVBQUQsRUFBcUI7QUFDcEQsbUJBQU9BLGVBQWUsQ0FBQ0MsS0FBdkI7QUFDQyxXQUZELENBRGdELEdBSWhEO0FBVGdELFNBQXBEO0FBV0E7QUFDRDs7QUFFRCxRQUFNQyxrQkFBa0IsR0FBRzlCLGlCQUFpQixDQUFDK0Isb0JBQWxCLEdBQXlDLENBQXpDLENBQTNCO0FBQ0EsUUFBTUMsa0JBQWtCLEdBQUcsRUFBM0I7O0FBQ0EsUUFBSUYsa0JBQUosRUFBd0I7QUFDdkIsV0FBSyxJQUFJckIsR0FBQyxHQUFHLENBQWIsRUFBZ0JBLEdBQUMsR0FBR3FCLGtCQUFrQixDQUFDcEIsTUFBdkMsRUFBK0NELEdBQUMsRUFBaEQsRUFBb0Q7QUFDbkR1QixRQUFBQSxrQkFBa0IsQ0FBQ0Ysa0JBQWtCLENBQUNyQixHQUFELENBQWxCLENBQXNCRSxJQUF2QixDQUFsQixHQUFpRDtBQUNoRFksVUFBQUEsSUFBSSxFQUFFTyxrQkFBa0IsQ0FBQ3JCLEdBQUQsQ0FBbEIsQ0FBc0JFLElBRG9CO0FBRWhEc0IsVUFBQUEsWUFBWSxFQUFFSCxrQkFBa0IsQ0FBQ3JCLEdBQUQsQ0FBbEIsQ0FBc0J5QixvQkFBdEIsQ0FBMkM1RSxPQUEzQyxHQUFxRHVFLEtBRm5CO0FBR2hETSxVQUFBQSxpQkFBaUIsRUFBRUwsa0JBQWtCLENBQUNyQixHQUFELENBQWxCLENBQXNCMkIsaUJBSE87QUFJaER4QixVQUFBQSxLQUFLLEVBQ0prQixrQkFBa0IsQ0FBQ3JCLEdBQUQsQ0FBbEIsQ0FBc0JFLElBQXRCLElBQThCSCxjQUE5QixHQUNHQSxjQUFjLENBQUNzQixrQkFBa0IsQ0FBQ3JCLEdBQUQsQ0FBbEIsQ0FBc0JFLElBQXZCLENBQWQsQ0FBMkNDLEtBRDlDLG9DQUU2QmtCLGtCQUFrQixDQUFDckIsR0FBRCxDQUFsQixDQUFzQkUsSUFGbkQsTUFMK0M7QUFRaERhLFVBQUFBLFFBQVEsRUFBRSxJQVJzQztBQVNoREMsVUFBQUEsU0FBUyxFQUFFLE1BVHFDO0FBVWhEWSxVQUFBQSxNQUFNLEVBQUU7QUFWd0MsU0FBakQ7QUFZQTtBQUNEOztBQUVELFFBQU1DLFNBQVMsR0FBR3RDLGlCQUFpQixDQUFDdUMseUJBQWxCLEVBQWxCO0FBQ0EsUUFBTUMsU0FBUyxHQUFHeEMsaUJBQWlCLENBQUN5QyxzQkFBbEIsRUFBbEI7QUFDQSxRQUFNQyxlQUFlLEdBQUcsRUFBeEI7QUFDQUEsSUFBQUEsZUFBZSxDQUFDNUUsS0FBaEIsR0FBd0IsNkNBQXhCO0FBQ0E0RSxJQUFBQSxlQUFlLENBQUNDLHNCQUFoQixHQUF5QyxFQUF6QztBQUNBRCxJQUFBQSxlQUFlLENBQUNFLG1CQUFoQixHQUFzQyxFQUF0Qzs7QUFFQSxTQUFLLElBQUluQyxHQUFDLEdBQUcsQ0FBYixFQUFnQjZCLFNBQVMsSUFBSTdCLEdBQUMsR0FBRzZCLFNBQVMsQ0FBQzVCLE1BQTNDLEVBQW1ERCxHQUFDLEVBQXBELEVBQXdEO0FBQUE7O0FBQ3ZELFVBQU1vQyxHQUFHLEdBQUc7QUFDWC9FLFFBQUFBLEtBQUssbUJBQUV3RSxTQUFTLENBQUM3QixHQUFELENBQVgsa0RBQUUsY0FBYzNDLEtBRFY7QUFFWGdGLFFBQUFBLFFBQVEsRUFBRTtBQUNUQyxVQUFBQSxhQUFhLG9CQUFFVCxTQUFTLENBQUM3QixHQUFELENBQVgsNEVBQUUsZUFBY3FDLFFBQWhCLDBEQUFFLHNCQUF3QmpCO0FBRDlCO0FBRkMsT0FBWjtBQU9BYSxNQUFBQSxlQUFlLENBQUNDLHNCQUFoQixDQUF1Q3JFLElBQXZDLENBQTRDdUUsR0FBNUM7QUFDQTs7QUFFRCxTQUFLLElBQUlwQyxHQUFDLEdBQUcsQ0FBYixFQUFnQitCLFNBQVMsSUFBSS9CLEdBQUMsR0FBRytCLFNBQVMsQ0FBQzlCLE1BQTNDLEVBQW1ERCxHQUFDLEVBQXBELEVBQXdEO0FBQUE7O0FBQ3ZELFVBQU1vQyxJQUFHLEdBQUc7QUFBRUUsUUFBQUEsYUFBYSxtQkFBRVAsU0FBUyxDQUFDL0IsR0FBRCxDQUFYLGtEQUFFLGNBQWNvQjtBQUEvQixPQUFaO0FBRUFhLE1BQUFBLGVBQWUsQ0FBQ0UsbUJBQWhCLENBQW9DdEUsSUFBcEMsQ0FBeUN1RSxJQUF6QztBQUNBOztBQUVELFFBQU1qRyxZQUFZLEdBQUcyQixlQUFlLENBQUM5QixlQUFELEVBQWtCQyxpQkFBbEIsRUFBcUNDLGdCQUFyQyxDQUFwQzs7QUFDQSxnQ0FBb0RELGlCQUFpQixDQUFDc0csS0FBbEIsQ0FBd0IsR0FBeEIsQ0FBcEQ7QUFBQTtBQUFBLFFBQUtDO0FBQXVCO0FBQTVCOztBQUNBLFFBQUlBLHNCQUFzQixDQUFDQyxXQUF2QixDQUFtQyxHQUFuQyxNQUE0Q0Qsc0JBQXNCLENBQUN2QyxNQUF2QixHQUFnQyxDQUFoRixFQUFtRjtBQUNsRjtBQUNBdUMsTUFBQUEsc0JBQXNCLEdBQUdBLHNCQUFzQixDQUFDRSxNQUF2QixDQUE4QixDQUE5QixFQUFpQ0Ysc0JBQXNCLENBQUN2QyxNQUF2QixHQUFnQyxDQUFqRSxDQUF6QjtBQUNBOztBQUNELFFBQU0wQyxLQUFVLDZCQUFHekcsZ0JBQWdCLENBQUMwRyxzQkFBakIsR0FBMENDLGdCQUExQyxDQUEyRG5HLFdBQTlELHFGQUFHLHVCQUF3RUMsRUFBM0UscUZBQUcsdUJBQTRFbUcsVUFBL0UsMkRBQUcsdUJBQXdGQyxjQUEzRztBQUNBLFFBQU1DLGFBQWEsR0FBRzlHLGdCQUFnQixDQUFDMEcsc0JBQWpCLEVBQXRCO0FBQ0EsUUFBTUssV0FBb0IsR0FBR1Qsc0JBQXNCLENBQUN2QyxNQUF2QixLQUFrQyxDQUEvRDtBQUNBLFFBQU1pRCxVQUFrQixHQUFHRixhQUFhLENBQUNHLGVBQWQsR0FBZ0NILGFBQWEsQ0FBQ0csZUFBZCxDQUE4QnJDLElBQTlELEdBQXFFa0MsYUFBYSxDQUFDSSxpQkFBZCxDQUFnQ3RDLElBQWhJO0FBQ0EsUUFBTXVDLFlBQVksR0FBR0osV0FBVyxHQUFHSyxjQUFjLENBQUNwSCxnQkFBZ0IsQ0FBQ3FILGNBQWpCLEVBQUQsQ0FBakIsR0FBdUR0RSxTQUF2RjtBQUNBLFFBQU11RSxjQUFjLEdBQUc7QUFDdEIscUJBQWU7QUFDZCxrQkFBVTtBQUNULHNCQUFZO0FBREg7QUFESTtBQURPLEtBQXZCO0FBT0EsUUFBSUMsY0FBSjs7QUFDQSxRQUFJdkgsZ0JBQWdCLENBQUN3SCxlQUFqQixPQUF1Q0MsWUFBWSxDQUFDQyxVQUF4RCxFQUFvRTtBQUNuRUgsTUFBQUEsY0FBYyxHQUFHLElBQWpCO0FBQ0EsS0FGRCxNQUVPLElBQ052SCxnQkFBZ0IsQ0FBQ3dILGVBQWpCLE9BQXVDQyxZQUFZLENBQUNFLFVBQXBELElBQ0EzSCxnQkFBZ0IsQ0FBQ3dILGVBQWpCLE9BQXVDQyxZQUFZLENBQUNHLGtCQUY5QyxFQUdMO0FBQ0RMLE1BQUFBLGNBQWMsR0FBRyxLQUFqQjtBQUNBOztBQUNELFFBQU1NLHlCQUF5QixHQUM5QjdILGdCQUFnQixDQUFDdUMsa0JBQWpCLEdBQXNDc0YseUJBQXRDLE1BQXFFN0gsZ0JBQWdCLENBQUN3SCxlQUFqQixPQUF1QyxvQkFEN0c7QUFFQSxRQUFNTSx3QkFBd0IsR0FBR0QseUJBQXlCLEdBQUcsb0NBQUgsR0FBMEMsRUFBcEc7QUFDQSxRQUFNRSxPQUFPLEdBQUdGLHlCQUF5QixHQUFHLGdEQUFILEdBQXNELE1BQS9GO0FBQ0EsUUFBTUcsc0JBQXNCLEdBQUczRSxpQkFBaUIsQ0FBQzRFLHlCQUFsQixFQUEvQjtBQUNBbEMsSUFBQUEsZUFBZSxDQUFDbUMsWUFBaEIsR0FBK0JGLHNCQUFzQixHQUFHQSxzQkFBc0IsQ0FBQ3RGLE9BQXZCLENBQStCLFFBQS9CLEtBQTRDLENBQS9DLEdBQW1ELElBQXhHO0FBQ0EsUUFBSWlDLFNBQWlCLEdBQUcsRUFBeEI7O0FBQ0EsUUFBSTdFLGVBQWUsQ0FBQzJCLGtCQUFoQixDQUFtQzRFLEtBQW5DLENBQXlDLEdBQXpDLEVBQThDdEMsTUFBOUMsR0FBdUQsQ0FBM0QsRUFBOEQ7QUFDN0RZLE1BQUFBLFNBQVMsR0FBRzdFLGVBQWUsQ0FBQzJCLGtCQUFoQixDQUFtQzRFLEtBQW5DLENBQXlDLEdBQXpDLEVBQThDLENBQTlDLENBQVo7QUFDQTs7QUFDRCxXQUFPO0FBQ05qRixNQUFBQSxJQUFJLEVBQUUrRyxpQkFBaUIsQ0FBQ0MsS0FEbEI7QUFFTkMsTUFBQUEsRUFBRSxFQUFFMUQsU0FBUyxHQUNWMkQsVUFBVSxDQUFDdkIsV0FBVyxHQUFHQyxVQUFILEdBQWdCVixzQkFBNUIsRUFBb0QzQixTQUFwRCxFQUErRHdELGlCQUFpQixDQUFDQyxLQUFqRixDQURBLEdBRVZFLFVBQVUsQ0FBQ3ZCLFdBQVcsR0FBR0MsVUFBSCxHQUFnQlYsc0JBQTVCLEVBQW9ENkIsaUJBQWlCLENBQUNDLEtBQXRFLENBSlA7QUFLTkcsTUFBQUEsVUFBVSxFQUFFQyxtQkFBbUIsQ0FBQ3hJLGdCQUFnQixDQUFDMEcsc0JBQWpCLEVBQUQsQ0FMekI7QUFNTk0sTUFBQUEsVUFBVSxFQUFFQSxVQU5OO0FBT05wRSxNQUFBQSxlQUFlLEVBQUVQLFdBQVcsQ0FBQ3RDLGlCQUFELEVBQW9CQyxnQkFBcEIsQ0FQdEI7QUFRTnlJLE1BQUFBLGNBQWMsRUFBRW5DLHNCQVJWO0FBU04vRSxNQUFBQSxjQUFjLEVBQUV2QixnQkFBZ0IsQ0FBQzBJLHlCQUFqQixDQUEyQzNJLGlCQUEzQyxDQVRWO0FBVU40SSxNQUFBQSxRQUFRLEVBQUV4QixZQVZKO0FBV055QixNQUFBQSxhQUFhLEVBQUVDLElBQUksQ0FBQ0MsU0FBTCxDQUFleEIsY0FBZixDQVhUO0FBWU5yRixNQUFBQSxPQUFPLEVBQUVoQyxZQVpIO0FBYU53RyxNQUFBQSxLQUFLLEVBQUVBLEtBYkQ7QUFjTmMsTUFBQUEsY0FBYyxFQUFFQSxjQWRWO0FBZU5PLE1BQUFBLHdCQUF3QixFQUFFQSx3QkFmcEI7QUFnQk5DLE1BQUFBLE9BQU8sRUFBRUEsT0FoQkg7QUFpQk5nQixNQUFBQSxTQUFTLEVBQUV4RSxpQkFqQkw7QUFrQk55RSxNQUFBQSxRQUFRLEVBQUUzRCxrQkFsQko7QUFtQk40RCxNQUFBQSxjQUFjLEVBQUVsRDtBQW5CVixLQUFQO0FBcUJBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENoYXJ0RGVmaW5pdGlvblR5cGVUeXBlcywgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgaXNEYXRhRmllbGRGb3JBY3Rpb25BYnN0cmFjdCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2Fubm90YXRpb25zL0RhdGFGaWVsZFwiO1xuaW1wb3J0IHR5cGUgeyBBbm5vdGF0aW9uQWN0aW9uLCBCYXNlQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHsgZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCB7IGluc2VydEN1c3RvbUVsZW1lbnRzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IEtleUhlbHBlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvS2V5XCI7XG5pbXBvcnQgeyBnZXRUYXJnZXRPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwiLi4vLi4vQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHsgQWdncmVnYXRpb25IZWxwZXIgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9BZ2dyZWdhdGlvblwiO1xuaW1wb3J0IHsgZ2V0Q2hhcnRJRCwgZ2V0RmlsdGVyQmFySUQgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9JRFwiO1xuaW1wb3J0IHR5cGUgeyBDaGFydE1hbmlmZXN0Q29uZmlndXJhdGlvbiwgQ2hhcnRQZXJzb25hbGl6YXRpb25NYW5pZmVzdFNldHRpbmdzIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IEFjdGlvblR5cGUsIFRlbXBsYXRlVHlwZSwgVmlzdWFsaXphdGlvblR5cGUgfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgTWFuaWZlc3RXcmFwcGVyIGZyb20gXCIuLi8uLi9NYW5pZmVzdFdyYXBwZXJcIjtcblxuLyoqXG4gKiBAdHlwZWRlZiBDaGFydFZpc3VhbGl6YXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgQ2hhcnRWaXN1YWxpemF0aW9uID0ge1xuXHR0eXBlOiBWaXN1YWxpemF0aW9uVHlwZS5DaGFydDtcblx0aWQ6IHN0cmluZztcblx0Y29sbGVjdGlvbjogc3RyaW5nO1xuXHRlbnRpdHlOYW1lOiBzdHJpbmc7XG5cdHBlcnNvbmFsaXphdGlvbj86IHN0cmluZztcblx0bmF2aWdhdGlvblBhdGg6IHN0cmluZztcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0ZmlsdGVySWQ/OiBzdHJpbmc7XG5cdHZpelByb3BlcnRpZXM6IHN0cmluZztcblx0YWN0aW9uczogQmFzZUFjdGlvbltdO1xuXHR0aXRsZTogc3RyaW5nO1xuXHRhdXRvQmluZE9uSW5pdDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblx0b25TZWdtZW50ZWRCdXR0b25QcmVzc2VkOiBzdHJpbmc7XG5cdHZpc2libGU6IHN0cmluZztcblx0Y3VzdG9tQWdnOiBvYmplY3Q7XG5cdHRyYW5zQWdnOiBvYmplY3Q7XG5cdGFwcGx5U3VwcG9ydGVkOiB7XG5cdFx0JFR5cGU6IHN0cmluZztcblx0XHRlbmFibGVTZWFyY2g6IGJvb2xlYW47XG5cdFx0QWdncmVnYXRhYmxlUHJvcGVydGllczogYW55W107XG5cdFx0R3JvdXBhYmxlUHJvcGVydGllczogYW55W107XG5cdH07XG5cdG11bHRpVmlld3M/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBNZXRob2QgdG8gcmV0cmlldmUgYWxsIGNoYXJ0IGFjdGlvbnMgZnJvbSBhbm5vdGF0aW9ucy5cbiAqXG4gKiBAcGFyYW0gY2hhcnRBbm5vdGF0aW9uXG4gKiBAcGFyYW0gdmlzdWFsaXphdGlvblBhdGhcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgdGFibGUgYW5ub3RhdGlvbiBhY3Rpb25zXG4gKi9cbmZ1bmN0aW9uIGdldENoYXJ0QWN0aW9uc0Zyb21Bbm5vdGF0aW9ucyhcblx0Y2hhcnRBbm5vdGF0aW9uOiBDaGFydERlZmluaXRpb25UeXBlVHlwZXMsXG5cdHZpc3VhbGl6YXRpb25QYXRoOiBzdHJpbmcsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IEJhc2VBY3Rpb25bXSB7XG5cdGNvbnN0IGNoYXJ0QWN0aW9uczogQmFzZUFjdGlvbltdID0gW107XG5cdGlmIChjaGFydEFubm90YXRpb24pIHtcblx0XHRjb25zdCBhQWN0aW9ucyA9IGNoYXJ0QW5ub3RhdGlvbi5BY3Rpb25zIHx8IFtdO1xuXHRcdGFBY3Rpb25zLmZvckVhY2goKGRhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcykgPT4ge1xuXHRcdFx0bGV0IGNoYXJ0QWN0aW9uOiBBbm5vdGF0aW9uQWN0aW9uIHwgdW5kZWZpbmVkO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRpc0RhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0KGRhdGFGaWVsZCkgJiZcblx0XHRcdFx0IShkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4/LnZhbHVlT2YoKSA9PT0gdHJ1ZSkgJiZcblx0XHRcdFx0IWRhdGFGaWVsZC5JbmxpbmUgJiZcblx0XHRcdFx0IWRhdGFGaWVsZC5EZXRlcm1pbmluZyAmJlxuXHRcdFx0XHQhKGRhdGFGaWVsZCBhcyBhbnkpPy5BY3Rpb25UYXJnZXQ/LmlzQm91bmRcblx0XHRcdCkge1xuXHRcdFx0XHRjb25zdCBrZXkgPSBLZXlIZWxwZXIuZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKGRhdGFGaWVsZCk7XG5cdFx0XHRcdHN3aXRjaCAoZGF0YUZpZWxkLiRUeXBlKSB7XG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb246XG5cdFx0XHRcdFx0XHRjaGFydEFjdGlvbiA9IHtcblx0XHRcdFx0XHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JBY3Rpb24sXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YUZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0XHRcdFx0XHRcdGtleToga2V5XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbjpcblx0XHRcdFx0XHRcdGNoYXJ0QWN0aW9uID0ge1xuXHRcdFx0XHRcdFx0XHR0eXBlOiBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbixcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChkYXRhRmllbGQuZnVsbHlRdWFsaWZpZWROYW1lKSxcblx0XHRcdFx0XHRcdFx0a2V5OiBrZXlcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGNoYXJ0QWN0aW9uKSB7XG5cdFx0XHRcdGNoYXJ0QWN0aW9ucy5wdXNoKGNoYXJ0QWN0aW9uKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gY2hhcnRBY3Rpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hhcnRBY3Rpb25zKFxuXHRjaGFydEFubm90YXRpb246IENoYXJ0RGVmaW5pdGlvblR5cGVUeXBlcyxcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dFxuKTogQmFzZUFjdGlvbltdIHtcblx0Y29uc3QgYUFubm90YXRpb25BY3Rpb25zOiBCYXNlQWN0aW9uW10gPSBnZXRDaGFydEFjdGlvbnNGcm9tQW5ub3RhdGlvbnMoY2hhcnRBbm5vdGF0aW9uLCB2aXN1YWxpemF0aW9uUGF0aCwgY29udmVydGVyQ29udGV4dCk7XG5cblx0cmV0dXJuIGluc2VydEN1c3RvbUVsZW1lbnRzKFxuXHRcdGFBbm5vdGF0aW9uQWN0aW9ucyxcblx0XHRnZXRBY3Rpb25zRnJvbU1hbmlmZXN0KFxuXHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdENvbnRyb2xDb25maWd1cmF0aW9uKHZpc3VhbGl6YXRpb25QYXRoKS5hY3Rpb25zLFxuXHRcdFx0Y29udmVydGVyQ29udGV4dCxcblx0XHRcdGFBbm5vdGF0aW9uQWN0aW9uc1xuXHRcdCksXG5cdFx0eyBlbmFibGVPblNlbGVjdDogXCJvdmVyd3JpdGVcIiwgZW5hYmxlZDogXCJvdmVyd3JpdGVcIiwgY29tbWFuZDogXCJvdmVyd3JpdGVcIiB9XG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQMTNuTW9kZSh2aXN1YWxpemF0aW9uUGF0aDogc3RyaW5nLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgbWFuaWZlc3RXcmFwcGVyOiBNYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCBjaGFydE1hbmlmZXN0U2V0dGluZ3M6IENoYXJ0TWFuaWZlc3RDb25maWd1cmF0aW9uID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdENvbnRyb2xDb25maWd1cmF0aW9uKHZpc3VhbGl6YXRpb25QYXRoKTtcblx0Y29uc3QgaGFzVmFyaWFudE1hbmFnZW1lbnQ6IGJvb2xlYW4gPSBbXCJQYWdlXCIsIFwiQ29udHJvbFwiXS5pbmRleE9mKG1hbmlmZXN0V3JhcHBlci5nZXRWYXJpYW50TWFuYWdlbWVudCgpKSA+IC0xO1xuXHRsZXQgcGVyc29uYWxpemF0aW9uOiBDaGFydFBlcnNvbmFsaXphdGlvbk1hbmlmZXN0U2V0dGluZ3MgPSB0cnVlO1xuXHRjb25zdCBhUGVyc29uYWxpemF0aW9uOiBzdHJpbmdbXSA9IFtdO1xuXHRpZiAoY2hhcnRNYW5pZmVzdFNldHRpbmdzPy5jaGFydFNldHRpbmdzPy5wZXJzb25hbGl6YXRpb24gIT09IHVuZGVmaW5lZCkge1xuXHRcdHBlcnNvbmFsaXphdGlvbiA9IGNoYXJ0TWFuaWZlc3RTZXR0aW5ncy5jaGFydFNldHRpbmdzLnBlcnNvbmFsaXphdGlvbjtcblx0fVxuXHRpZiAoaGFzVmFyaWFudE1hbmFnZW1lbnQgJiYgcGVyc29uYWxpemF0aW9uKSB7XG5cdFx0aWYgKHBlcnNvbmFsaXphdGlvbiA9PT0gdHJ1ZSkge1xuXHRcdFx0cmV0dXJuIFwiU29ydCxUeXBlLEl0ZW1cIjtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwZXJzb25hbGl6YXRpb24gPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdGlmIChwZXJzb25hbGl6YXRpb24udHlwZSkge1xuXHRcdFx0XHRhUGVyc29uYWxpemF0aW9uLnB1c2goXCJUeXBlXCIpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHBlcnNvbmFsaXphdGlvbi5pdGVtKSB7XG5cdFx0XHRcdGFQZXJzb25hbGl6YXRpb24ucHVzaChcIkl0ZW1cIik7XG5cdFx0XHR9XG5cdFx0XHRpZiAocGVyc29uYWxpemF0aW9uLnNvcnQpIHtcblx0XHRcdFx0YVBlcnNvbmFsaXphdGlvbi5wdXNoKFwiU29ydFwiKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBhUGVyc29uYWxpemF0aW9uLmpvaW4oXCIsXCIpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENyZWF0ZSB0aGUgQ2hhcnRWaXN1YWxpemF0aW9uIGNvbmZpZ3VyYXRpb24gdGhhdCB3aWxsIGJlIHVzZWQgdG8gZGlzcGxheSBhIGNoYXJ0IHVzaW5nIHRoZSBDaGFydCBidWlsZGluZyBibG9jay5cbiAqXG4gKiBAcGFyYW0gY2hhcnRBbm5vdGF0aW9uIFRoZSB0YXJnZXQgY2hhcnQgYW5ub3RhdGlvblxuICogQHBhcmFtIHZpc3VhbGl6YXRpb25QYXRoIFRoZSBjdXJyZW50IHZpc3VhbGl6YXRpb24gYW5ub3RhdGlvbiBwYXRoXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSBkb05vdENoZWNrQXBwbHlTdXBwb3J0ZWQgRmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIGFwcGx5c3VwcG9ydGVkIG5lZWRzIHRvIGJlIGNoZWNrZWQgb3Igbm90XG4gKiBAcmV0dXJucyBUaGUgY2hhcnQgdmlzdWFsaXphdGlvbiBiYXNlZCBvbiB0aGUgYW5ub3RhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2hhcnRWaXN1YWxpemF0aW9uKFxuXHRjaGFydEFubm90YXRpb246IENoYXJ0RGVmaW5pdGlvblR5cGVUeXBlcyxcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0ZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkPzogYm9vbGVhblxuKTogQ2hhcnRWaXN1YWxpemF0aW9uIHtcblx0Y29uc3QgYWdncmVnYXRpb25IZWxwZXIgPSBuZXcgQWdncmVnYXRpb25IZWxwZXIoY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCksIGNvbnZlcnRlckNvbnRleHQpO1xuXHRpZiAoIWRvTm90Q2hlY2tBcHBseVN1cHBvcnRlZCAmJiAhYWdncmVnYXRpb25IZWxwZXIuaXNBbmFseXRpY3NTdXBwb3J0ZWQoKSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIkFwcGx5U3VwcG9ydGVkIGlzIG5vdCBhZGRlZCB0byB0aGUgYW5ub3RhdGlvbnNcIik7XG5cdH1cblx0Y29uc3QgYVRyYW5zQWdnQW5ub3MgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKS5hbm5vdGF0aW9ucy5BbmFseXRpY3M/LkFnZ3JlZ2F0ZWRQcm9wZXJ0aWVzIGFzIGFueTtcblx0Y29uc3QgdHJhbnNBZ2dMYWJlbHMgPSB7fSBhcyBhbnk7XG5cblx0Zm9yIChsZXQgaSA9IDA7IGFUcmFuc0FnZ0Fubm9zICYmIGkgPCBhVHJhbnNBZ2dBbm5vcy5sZW5ndGg7IGkrKykge1xuXHRcdHRyYW5zQWdnTGFiZWxzW2FUcmFuc0FnZ0Fubm9zW2ldLk5hbWVdID0ge1xuXHRcdFx0bGFiZWw6IGFUcmFuc0FnZ0Fubm9zW2ldPy5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbC50b1N0cmluZygpXG5cdFx0fTtcblx0fVxuXG5cdGNvbnN0IGFDdXN0b21BZ2dyZWdhdGVzID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0Q3VzdG9tQWdncmVnYXRlRGVmaW5pdGlvbnMoKTtcblx0Y29uc3QgbUN1c3RvbUFnZ3JlZ2F0ZXMgPSB7fSBhcyBhbnk7XG5cdGlmIChhQ3VzdG9tQWdncmVnYXRlcykge1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYUN1c3RvbUFnZ3JlZ2F0ZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGFDb250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzID0gYUN1c3RvbUFnZ3JlZ2F0ZXNbaV0uYW5ub3RhdGlvbnM/LkFnZ3JlZ2F0aW9uPy5Db250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzO1xuXHRcdFx0bUN1c3RvbUFnZ3JlZ2F0ZXNbYUN1c3RvbUFnZ3JlZ2F0ZXNbaV0ucXVhbGlmaWVyXSA9IHtcblx0XHRcdFx0bmFtZTogYUN1c3RvbUFnZ3JlZ2F0ZXNbaV0ucXVhbGlmaWVyLFxuXHRcdFx0XHRsYWJlbDogYEN1c3RvbSBBZ2dyZWdhdGUgKCR7YUN1c3RvbUFnZ3JlZ2F0ZXNbaV0ucXVhbGlmaWVyfSlgLFxuXHRcdFx0XHRzb3J0YWJsZTogdHJ1ZSxcblx0XHRcdFx0c29ydE9yZGVyOiBcImJvdGhcIixcblx0XHRcdFx0Y29udGV4dERlZmluaW5nUHJvcGVydHk6IGFDb250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzXG5cdFx0XHRcdFx0PyBhQ29udGV4dERlZmluaW5nUHJvcGVydGllcy5tYXAoKG9DdHhEZWZQcm9wZXJ0eSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gb0N0eERlZlByb3BlcnR5LnZhbHVlO1xuXHRcdFx0XHRcdCAgfSlcblx0XHRcdFx0XHQ6IFtdXG5cdFx0XHR9O1xuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGFUcmFuc0FnZ3JlZ2F0aW9ucyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldFRyYW5zQWdncmVnYXRpb25zKClbMF07XG5cdGNvbnN0IG1UcmFuc0FnZ3JlZ2F0aW9ucyA9IHt9IGFzIGFueTtcblx0aWYgKGFUcmFuc0FnZ3JlZ2F0aW9ucykge1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYVRyYW5zQWdncmVnYXRpb25zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRtVHJhbnNBZ2dyZWdhdGlvbnNbYVRyYW5zQWdncmVnYXRpb25zW2ldLk5hbWVdID0ge1xuXHRcdFx0XHRuYW1lOiBhVHJhbnNBZ2dyZWdhdGlvbnNbaV0uTmFtZSxcblx0XHRcdFx0cHJvcGVydHlQYXRoOiBhVHJhbnNBZ2dyZWdhdGlvbnNbaV0uQWdncmVnYXRhYmxlUHJvcGVydHkudmFsdWVPZigpLnZhbHVlLFxuXHRcdFx0XHRhZ2dyZWdhdGlvbk1ldGhvZDogYVRyYW5zQWdncmVnYXRpb25zW2ldLkFnZ3JlZ2F0aW9uTWV0aG9kLFxuXHRcdFx0XHRsYWJlbDpcblx0XHRcdFx0XHRhVHJhbnNBZ2dyZWdhdGlvbnNbaV0uTmFtZSBpbiB0cmFuc0FnZ0xhYmVsc1xuXHRcdFx0XHRcdFx0PyB0cmFuc0FnZ0xhYmVsc1thVHJhbnNBZ2dyZWdhdGlvbnNbaV0uTmFtZV0ubGFiZWxcblx0XHRcdFx0XHRcdDogYEFnZ3JlZ2F0YWJsZSBwcm9wZXJ0eSAoJHthVHJhbnNBZ2dyZWdhdGlvbnNbaV0uTmFtZX0pYCxcblx0XHRcdFx0c29ydGFibGU6IHRydWUsXG5cdFx0XHRcdHNvcnRPcmRlcjogXCJib3RoXCIsXG5cdFx0XHRcdGN1c3RvbTogZmFsc2Vcblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgYUFnZ1Byb3BzID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0QWdncmVnYXRhYmxlUHJvcGVydGllcygpO1xuXHRjb25zdCBhR3JwUHJvcHMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRHcm91cGFibGVQcm9wZXJ0aWVzKCk7XG5cdGNvbnN0IG1BcHBseVN1cHBvcnRlZCA9IHt9IGFzIGFueTtcblx0bUFwcGx5U3VwcG9ydGVkLiRUeXBlID0gXCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQXBwbHlTdXBwb3J0ZWRUeXBlXCI7XG5cdG1BcHBseVN1cHBvcnRlZC5BZ2dyZWdhdGFibGVQcm9wZXJ0aWVzID0gW107XG5cdG1BcHBseVN1cHBvcnRlZC5Hcm91cGFibGVQcm9wZXJ0aWVzID0gW107XG5cblx0Zm9yIChsZXQgaSA9IDA7IGFBZ2dQcm9wcyAmJiBpIDwgYUFnZ1Byb3BzLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3Qgb2JqID0ge1xuXHRcdFx0JFR5cGU6IGFBZ2dQcm9wc1tpXT8uJFR5cGUsXG5cdFx0XHRQcm9wZXJ0eToge1xuXHRcdFx0XHQkUHJvcGVydHlQYXRoOiBhQWdnUHJvcHNbaV0/LlByb3BlcnR5Py52YWx1ZVxuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRtQXBwbHlTdXBwb3J0ZWQuQWdncmVnYXRhYmxlUHJvcGVydGllcy5wdXNoKG9iaik7XG5cdH1cblxuXHRmb3IgKGxldCBpID0gMDsgYUdycFByb3BzICYmIGkgPCBhR3JwUHJvcHMubGVuZ3RoOyBpKyspIHtcblx0XHRjb25zdCBvYmogPSB7ICRQcm9wZXJ0eVBhdGg6IGFHcnBQcm9wc1tpXT8udmFsdWUgfTtcblxuXHRcdG1BcHBseVN1cHBvcnRlZC5Hcm91cGFibGVQcm9wZXJ0aWVzLnB1c2gob2JqKTtcblx0fVxuXG5cdGNvbnN0IGNoYXJ0QWN0aW9ucyA9IGdldENoYXJ0QWN0aW9ucyhjaGFydEFubm90YXRpb24sIHZpc3VhbGl6YXRpb25QYXRoLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0bGV0IFtuYXZpZ2F0aW9uUHJvcGVydHlQYXRoIC8qLCBhbm5vdGF0aW9uUGF0aCovXSA9IHZpc3VhbGl6YXRpb25QYXRoLnNwbGl0KFwiQFwiKTtcblx0aWYgKG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGFzdEluZGV4T2YoXCIvXCIpID09PSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCAtIDEpIHtcblx0XHQvLyBEcm9wIHRyYWlsaW5nIHNsYXNoXG5cdFx0bmF2aWdhdGlvblByb3BlcnR5UGF0aCA9IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGguc3Vic3RyKDAsIG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGVuZ3RoIC0gMSk7XG5cdH1cblx0Y29uc3QgdGl0bGU6IGFueSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnM/LlVJPy5IZWFkZXJJbmZvPy5UeXBlTmFtZVBsdXJhbDtcblx0Y29uc3QgZGF0YU1vZGVsUGF0aCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpO1xuXHRjb25zdCBpc0VudGl0eVNldDogYm9vbGVhbiA9IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGVuZ3RoID09PSAwO1xuXHRjb25zdCBlbnRpdHlOYW1lOiBzdHJpbmcgPSBkYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVNldCA/IGRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0Lm5hbWUgOiBkYXRhTW9kZWxQYXRoLnN0YXJ0aW5nRW50aXR5U2V0Lm5hbWU7XG5cdGNvbnN0IHNGaWx0ZXJiYXJJZCA9IGlzRW50aXR5U2V0ID8gZ2V0RmlsdGVyQmFySUQoY29udmVydGVyQ29udGV4dC5nZXRDb250ZXh0UGF0aCgpKSA6IHVuZGVmaW5lZDtcblx0Y29uc3Qgb1ZpelByb3BlcnRpZXMgPSB7XG5cdFx0XCJsZWdlbmRHcm91cFwiOiB7XG5cdFx0XHRcImxheW91dFwiOiB7XG5cdFx0XHRcdFwicG9zaXRpb25cIjogXCJib3R0b21cIlxuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0bGV0IGF1dG9CaW5kT25Jbml0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHRpZiAoY29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLk9iamVjdFBhZ2UpIHtcblx0XHRhdXRvQmluZE9uSW5pdCA9IHRydWU7XG5cdH0gZWxzZSBpZiAoXG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLkxpc3RSZXBvcnQgfHxcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuQW5hbHl0aWNhbExpc3RQYWdlXG5cdCkge1xuXHRcdGF1dG9CaW5kT25Jbml0ID0gZmFsc2U7XG5cdH1cblx0Y29uc3QgaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyA9XG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKS5oYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zKCkgfHwgY29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gXCJBbmFseXRpY2FsTGlzdFBhZ2VcIjtcblx0Y29uc3Qgb25TZWdtZW50ZWRCdXR0b25QcmVzc2VkID0gaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyA/IFwiLmhhbmRsZXJzLm9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZFwiIDogXCJcIjtcblx0Y29uc3QgdmlzaWJsZSA9IGhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMgPyBcIns9ICR7cGFnZUludGVybmFsPmFscENvbnRlbnRWaWV3fSAhPT0gJ1RhYmxlJ31cIiA6IFwidHJ1ZVwiO1xuXHRjb25zdCBhbGxvd2VkVHJhbnNmb3JtYXRpb25zID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0QWxsb3dlZFRyYW5zZm9ybWF0aW9ucygpO1xuXHRtQXBwbHlTdXBwb3J0ZWQuZW5hYmxlU2VhcmNoID0gYWxsb3dlZFRyYW5zZm9ybWF0aW9ucyA/IGFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMuaW5kZXhPZihcInNlYXJjaFwiKSA+PSAwIDogdHJ1ZTtcblx0bGV0IHF1YWxpZmllcjogc3RyaW5nID0gXCJcIjtcblx0aWYgKGNoYXJ0QW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUuc3BsaXQoXCIjXCIpLmxlbmd0aCA+IDEpIHtcblx0XHRxdWFsaWZpZXIgPSBjaGFydEFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KFwiI1wiKVsxXTtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdHR5cGU6IFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0LFxuXHRcdGlkOiBxdWFsaWZpZXJcblx0XHRcdD8gZ2V0Q2hhcnRJRChpc0VudGl0eVNldCA/IGVudGl0eU5hbWUgOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBxdWFsaWZpZXIsIFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0KVxuXHRcdFx0OiBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0KSxcblx0XHRjb2xsZWN0aW9uOiBnZXRUYXJnZXRPYmplY3RQYXRoKGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpKSxcblx0XHRlbnRpdHlOYW1lOiBlbnRpdHlOYW1lLFxuXHRcdHBlcnNvbmFsaXphdGlvbjogZ2V0UDEzbk1vZGUodmlzdWFsaXphdGlvblBhdGgsIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdG5hdmlnYXRpb25QYXRoOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLFxuXHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEFic29sdXRlQW5ub3RhdGlvblBhdGgodmlzdWFsaXphdGlvblBhdGgpLFxuXHRcdGZpbHRlcklkOiBzRmlsdGVyYmFySWQsXG5cdFx0dml6UHJvcGVydGllczogSlNPTi5zdHJpbmdpZnkob1ZpelByb3BlcnRpZXMpLFxuXHRcdGFjdGlvbnM6IGNoYXJ0QWN0aW9ucyxcblx0XHR0aXRsZTogdGl0bGUsXG5cdFx0YXV0b0JpbmRPbkluaXQ6IGF1dG9CaW5kT25Jbml0LFxuXHRcdG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZDogb25TZWdtZW50ZWRCdXR0b25QcmVzc2VkLFxuXHRcdHZpc2libGU6IHZpc2libGUsXG5cdFx0Y3VzdG9tQWdnOiBtQ3VzdG9tQWdncmVnYXRlcyxcblx0XHR0cmFuc0FnZzogbVRyYW5zQWdncmVnYXRpb25zLFxuXHRcdGFwcGx5U3VwcG9ydGVkOiBtQXBwbHlTdXBwb3J0ZWRcblx0fTtcbn1cbiJdfQ==
|
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
import { ChartDefinitionTypeTypes, DataFieldAbstractTypes } from "@sap-ux/vocabularies-types";
|
|
1
|
+
import type { ChartDefinitionTypeTypes, DataFieldAbstractTypes } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
2
|
+
import { UIAnnotationTypes } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
2
3
|
import { isDataFieldForActionAbstract } from "sap/fe/core/converters/annotations/DataField";
|
|
3
|
-
import { AnnotationAction, BaseAction
|
|
4
|
+
import type { AnnotationAction, BaseAction } from "sap/fe/core/converters/controls/Common/Action";
|
|
5
|
+
import { getActionsFromManifest } from "sap/fe/core/converters/controls/Common/Action";
|
|
4
6
|
import { insertCustomElements } from "sap/fe/core/converters/helpers/ConfigurableObject";
|
|
5
7
|
import { KeyHelper } from "sap/fe/core/converters/helpers/Key";
|
|
6
8
|
import { getTargetObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
7
|
-
import ConverterContext from "../../ConverterContext";
|
|
9
|
+
import type ConverterContext from "../../ConverterContext";
|
|
8
10
|
import { AggregationHelper } from "../../helpers/Aggregation";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
ChartPersonalizationManifestSettings,
|
|
14
|
-
TemplateType,
|
|
15
|
-
VisualizationType
|
|
16
|
-
} from "../../ManifestSettings";
|
|
17
|
-
import ManifestWrapper from "../../ManifestWrapper";
|
|
11
|
+
import { getChartID, getFilterBarID } from "../../helpers/ID";
|
|
12
|
+
import type { ChartManifestConfiguration, ChartPersonalizationManifestSettings } from "../../ManifestSettings";
|
|
13
|
+
import { ActionType, TemplateType, VisualizationType } from "../../ManifestSettings";
|
|
14
|
+
import type ManifestWrapper from "../../ManifestWrapper";
|
|
18
15
|
|
|
19
16
|
/**
|
|
20
17
|
* @typedef ChartVisualization
|
|
@@ -51,7 +48,7 @@ export type ChartVisualization = {
|
|
|
51
48
|
* @param chartAnnotation
|
|
52
49
|
* @param visualizationPath
|
|
53
50
|
* @param converterContext
|
|
54
|
-
* @returns
|
|
51
|
+
* @returns The table annotation actions
|
|
55
52
|
*/
|
|
56
53
|
function getChartActionsFromAnnotations(
|
|
57
54
|
chartAnnotation: ChartDefinitionTypeTypes,
|
|
@@ -72,7 +69,7 @@ function getChartActionsFromAnnotations(
|
|
|
72
69
|
) {
|
|
73
70
|
const key = KeyHelper.generateKeyFromDataField(dataField);
|
|
74
71
|
switch (dataField.$Type) {
|
|
75
|
-
case
|
|
72
|
+
case UIAnnotationTypes.DataFieldForAction:
|
|
76
73
|
chartAction = {
|
|
77
74
|
type: ActionType.DataFieldForAction,
|
|
78
75
|
annotationPath: converterContext.getEntitySetBasedAnnotationPath(dataField.fullyQualifiedName),
|
|
@@ -80,7 +77,7 @@ function getChartActionsFromAnnotations(
|
|
|
80
77
|
};
|
|
81
78
|
break;
|
|
82
79
|
|
|
83
|
-
case
|
|
80
|
+
case UIAnnotationTypes.DataFieldForIntentBasedNavigation:
|
|
84
81
|
chartAction = {
|
|
85
82
|
type: ActionType.DataFieldForIntentBasedNavigation,
|
|
86
83
|
annotationPath: converterContext.getEntitySetBasedAnnotationPath(dataField.fullyQualifiedName),
|
|
@@ -146,11 +143,11 @@ export function getP13nMode(visualizationPath: string, converterContext: Convert
|
|
|
146
143
|
/**
|
|
147
144
|
* Create the ChartVisualization configuration that will be used to display a chart using the Chart building block.
|
|
148
145
|
*
|
|
149
|
-
* @param
|
|
150
|
-
* @param
|
|
151
|
-
* @param
|
|
152
|
-
* @param
|
|
153
|
-
* @returns
|
|
146
|
+
* @param chartAnnotation The target chart annotation
|
|
147
|
+
* @param visualizationPath The current visualization annotation path
|
|
148
|
+
* @param converterContext The converter context
|
|
149
|
+
* @param doNotCheckApplySupported Flag that indicates whether applysupported needs to be checked or not
|
|
150
|
+
* @returns The chart visualization based on the annotation
|
|
154
151
|
*/
|
|
155
152
|
export function createChartVisualization(
|
|
156
153
|
chartAnnotation: ChartDefinitionTypeTypes,
|
|
@@ -167,7 +164,7 @@ export function createChartVisualization(
|
|
|
167
164
|
|
|
168
165
|
for (let i = 0; aTransAggAnnos && i < aTransAggAnnos.length; i++) {
|
|
169
166
|
transAggLabels[aTransAggAnnos[i].Name] = {
|
|
170
|
-
label: aTransAggAnnos[i]?.annotations?.Common?.Label
|
|
167
|
+
label: aTransAggAnnos[i]?.annotations?.Common?.Label.toString()
|
|
171
168
|
};
|
|
172
169
|
}
|
|
173
170
|
|
|
@@ -178,7 +175,7 @@ export function createChartVisualization(
|
|
|
178
175
|
const aContextDefiningProperties = aCustomAggregates[i].annotations?.Aggregation?.ContextDefiningProperties;
|
|
179
176
|
mCustomAggregates[aCustomAggregates[i].qualifier] = {
|
|
180
177
|
name: aCustomAggregates[i].qualifier,
|
|
181
|
-
label:
|
|
178
|
+
label: `Custom Aggregate (${aCustomAggregates[i].qualifier})`,
|
|
182
179
|
sortable: true,
|
|
183
180
|
sortOrder: "both",
|
|
184
181
|
contextDefiningProperty: aContextDefiningProperties
|
|
@@ -201,7 +198,7 @@ export function createChartVisualization(
|
|
|
201
198
|
label:
|
|
202
199
|
aTransAggregations[i].Name in transAggLabels
|
|
203
200
|
? transAggLabels[aTransAggregations[i].Name].label
|
|
204
|
-
:
|
|
201
|
+
: `Aggregatable property (${aTransAggregations[i].Name})`,
|
|
205
202
|
sortable: true,
|
|
206
203
|
sortOrder: "both",
|
|
207
204
|
custom: false
|
|
@@ -243,7 +240,7 @@ export function createChartVisualization(
|
|
|
243
240
|
const dataModelPath = converterContext.getDataModelObjectPath();
|
|
244
241
|
const isEntitySet: boolean = navigationPropertyPath.length === 0;
|
|
245
242
|
const entityName: string = dataModelPath.targetEntitySet ? dataModelPath.targetEntitySet.name : dataModelPath.startingEntitySet.name;
|
|
246
|
-
const sFilterbarId = isEntitySet ?
|
|
243
|
+
const sFilterbarId = isEntitySet ? getFilterBarID(converterContext.getContextPath()) : undefined;
|
|
247
244
|
const oVizProperties = {
|
|
248
245
|
"legendGroup": {
|
|
249
246
|
"layout": {
|
|
@@ -273,8 +270,8 @@ export function createChartVisualization(
|
|
|
273
270
|
return {
|
|
274
271
|
type: VisualizationType.Chart,
|
|
275
272
|
id: qualifier
|
|
276
|
-
?
|
|
277
|
-
:
|
|
273
|
+
? getChartID(isEntitySet ? entityName : navigationPropertyPath, qualifier, VisualizationType.Chart)
|
|
274
|
+
: getChartID(isEntitySet ? entityName : navigationPropertyPath, VisualizationType.Chart),
|
|
278
275
|
collection: getTargetObjectPath(converterContext.getDataModelObjectPath()),
|
|
279
276
|
entityName: entityName,
|
|
280
277
|
personalization: getP13nMode(visualizationPath, converterContext),
|
|
@@ -11,8 +11,8 @@ sap.ui.define(["sap/fe/core/formatters/TableFormatterTypes"], function (TableFor
|
|
|
11
11
|
/**
|
|
12
12
|
* Gets a MessageType enum value from a CriticalityType enum value.
|
|
13
13
|
*
|
|
14
|
-
* @param
|
|
15
|
-
* @returns
|
|
14
|
+
* @param criticalityEnum The CriticalityType enum value
|
|
15
|
+
* @returns Returns the MessageType enum value
|
|
16
16
|
*/
|
|
17
17
|
function getMessageTypeFromCriticalityType(criticalityEnum) {
|
|
18
18
|
var messageType;
|
|
@@ -47,4 +47,4 @@ sap.ui.define(["sap/fe/core/formatters/TableFormatterTypes"], function (TableFor
|
|
|
47
47
|
_exports.getMessageTypeFromCriticalityType = getMessageTypeFromCriticalityType;
|
|
48
48
|
return _exports;
|
|
49
49
|
}, false);
|
|
50
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNyaXRpY2FsaXR5LnRzIl0sIm5hbWVzIjpbImdldE1lc3NhZ2VUeXBlRnJvbUNyaXRpY2FsaXR5VHlwZSIsImNyaXRpY2FsaXR5RW51bSIsIm1lc3NhZ2VUeXBlIiwiTWVzc2FnZVR5cGUiLCJFcnJvciIsIldhcm5pbmciLCJTdWNjZXNzIiwiSW5mb3JtYXRpb24iLCJOb25lIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sV0FBU0EsaUNBQVQsQ0FBMkNDLGVBQTNDLEVBQXFHO0FBQzNHLFFBQUlDLFdBQUo7O0FBQ0EsWUFBUUQsZUFBUjtBQUNDLFdBQUssNkJBQUw7QUFDQSxXQUFLLGlDQUFMO0FBQ0NDLFFBQUFBLFdBQVcsR0FBR0MsV0FBVyxDQUFDQyxLQUExQjtBQUNBOztBQUNELFdBQUssNkJBQUw7QUFDQ0YsUUFBQUEsV0FBVyxHQUFHQyxXQUFXLENBQUNFLE9BQTFCO0FBQ0E7O0FBQ0QsV0FBSyw2QkFBTDtBQUNBLFdBQUssaUNBQUw7QUFDQ0gsUUFBQUEsV0FBVyxHQUFHQyxXQUFXLENBQUNHLE9BQTFCO0FBQ0E7O0FBQ0QsV0FBSyxnQ0FBTDtBQUNDSixRQUFBQSxXQUFXLEdBQUdDLFdBQVcsQ0FBQ0ksV0FBMUI7QUFDQTs7QUFDRCxXQUFLLDRCQUFMO0FBQ0E7QUFDQ0wsUUFBQUEsV0FBVyxHQUFHQyxXQUFXLENBQUNLLElBQTFCO0FBakJGOztBQW1CQSxXQUFPTixXQUFQO0FBQ0EiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW51bVZhbHVlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IENyaXRpY2FsaXR5VHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IE1lc3NhZ2VUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvVGFibGVGb3JtYXR0ZXJUeXBlc1wiO1xuXG4vKipcbiAqIEdldHMgYSBNZXNzYWdlVHlwZSBlbnVtIHZhbHVlIGZyb20gYSBDcml0aWNhbGl0eVR5cGUgZW51bSB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gY3JpdGljYWxpdHlFbnVtIFRoZSBDcml0aWNhbGl0eVR5cGUgZW51bSB2YWx1ZVxuICogQHJldHVybnMgUmV0dXJucyB0aGUgTWVzc2FnZVR5cGUgZW51bSB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWVzc2FnZVR5cGVGcm9tQ3JpdGljYWxpdHlUeXBlKGNyaXRpY2FsaXR5RW51bTogRW51bVZhbHVlPENyaXRpY2FsaXR5VHlwZT4pOiBNZXNzYWdlVHlwZSB7XG5cdGxldCBtZXNzYWdlVHlwZTogTWVzc2FnZVR5cGU7XG5cdHN3aXRjaCAoY3JpdGljYWxpdHlFbnVtKSB7XG5cdFx0Y2FzZSBcIlVJLkNyaXRpY2FsaXR5VHlwZS9OZWdhdGl2ZVwiOlxuXHRcdGNhc2UgXCJVSS5Dcml0aWNhbGl0eVR5cGUvVmVyeU5lZ2F0aXZlXCI6XG5cdFx0XHRtZXNzYWdlVHlwZSA9IE1lc3NhZ2VUeXBlLkVycm9yO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIlVJLkNyaXRpY2FsaXR5VHlwZS9Dcml0aWNhbFwiOlxuXHRcdFx0bWVzc2FnZVR5cGUgPSBNZXNzYWdlVHlwZS5XYXJuaW5nO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiOlxuXHRcdGNhc2UgXCJVSS5Dcml0aWNhbGl0eVR5cGUvVmVyeVBvc2l0aXZlXCI6XG5cdFx0XHRtZXNzYWdlVHlwZSA9IE1lc3NhZ2VUeXBlLlN1Y2Nlc3M7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiVUkuQ3JpdGljYWxpdHlUeXBlL0luZm9ybWF0aW9uXCI6XG5cdFx0XHRtZXNzYWdlVHlwZSA9IE1lc3NhZ2VUeXBlLkluZm9ybWF0aW9uO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIlVJLkNyaXRpY2FsaXR5VHlwZS9OZXV0cmFsXCI6XG5cdFx0ZGVmYXVsdDpcblx0XHRcdG1lc3NhZ2VUeXBlID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0fVxuXHRyZXR1cm4gbWVzc2FnZVR5cGU7XG59XG4iXX0=
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import type { EnumValue } from "@sap-ux/vocabularies-types";
|
|
2
|
+
import type { CriticalityType } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
3
3
|
import { MessageType } from "sap/fe/core/formatters/TableFormatterTypes";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Gets a MessageType enum value from a CriticalityType enum value.
|
|
7
7
|
*
|
|
8
|
-
* @param
|
|
9
|
-
* @returns
|
|
8
|
+
* @param criticalityEnum The CriticalityType enum value
|
|
9
|
+
* @returns Returns the MessageType enum value
|
|
10
10
|
*/
|
|
11
11
|
export function getMessageTypeFromCriticalityType(criticalityEnum: EnumValue<CriticalityType>): MessageType {
|
|
12
12
|
let messageType: MessageType;
|