@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
|
@@ -2,25 +2,25 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/helpers/
|
|
5
|
+
sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/DataModelPathHelper", "../../../helpers/StableIdHelper", "../../helpers/ConfigurableObject", "../../helpers/ID", "../../helpers/Key", "../../ManifestSettings"], function (DataField, BindingToolkit, DataModelPathHelper, StableIdHelper, ConfigurableObject, ID, Key, ManifestSettings) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
9
9
|
var ActionType = ManifestSettings.ActionType;
|
|
10
10
|
var KeyHelper = Key.KeyHelper;
|
|
11
|
-
var
|
|
12
|
-
var
|
|
11
|
+
var getFormStandardActionButtonID = ID.getFormStandardActionButtonID;
|
|
12
|
+
var getFormID = ID.getFormID;
|
|
13
13
|
var Placement = ConfigurableObject.Placement;
|
|
14
14
|
var insertCustomElements = ConfigurableObject.insertCustomElements;
|
|
15
15
|
var generate = StableIdHelper.generate;
|
|
16
16
|
var getTargetObjectPath = DataModelPathHelper.getTargetObjectPath;
|
|
17
17
|
var getTargetEntitySetPath = DataModelPathHelper.getTargetEntitySetPath;
|
|
18
|
-
var
|
|
19
|
-
var
|
|
20
|
-
var
|
|
21
|
-
var
|
|
22
|
-
var
|
|
23
|
-
var
|
|
18
|
+
var pathInModel = BindingToolkit.pathInModel;
|
|
19
|
+
var not = BindingToolkit.not;
|
|
20
|
+
var ifElse = BindingToolkit.ifElse;
|
|
21
|
+
var getExpressionFromAnnotation = BindingToolkit.getExpressionFromAnnotation;
|
|
22
|
+
var equal = BindingToolkit.equal;
|
|
23
|
+
var compileExpression = BindingToolkit.compileExpression;
|
|
24
24
|
var getSemanticObjectPath = DataField.getSemanticObjectPath;
|
|
25
25
|
|
|
26
26
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -41,7 +41,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
41
41
|
/**
|
|
42
42
|
* Returns default format options for text fields on a form.
|
|
43
43
|
*
|
|
44
|
-
* @returns
|
|
44
|
+
* @returns Collection of format options with default values
|
|
45
45
|
*/
|
|
46
46
|
function getDefaultFormatOptionsForForm() {
|
|
47
47
|
return {
|
|
@@ -71,7 +71,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
71
71
|
formElements.push({
|
|
72
72
|
key: KeyHelper.generateKeyFromDataField(field),
|
|
73
73
|
type: FormElementType.Annotation,
|
|
74
|
-
annotationPath: converterContext.getEntitySetBasedAnnotationPath(field.fullyQualifiedName)
|
|
74
|
+
annotationPath: "".concat(converterContext.getEntitySetBasedAnnotationPath(field.fullyQualifiedName), "/"),
|
|
75
75
|
semanticObjectPath: semanticObjectAnnotationPath,
|
|
76
76
|
formatOptions: getDefaultFormatOptionsForForm(),
|
|
77
77
|
isPartOfPreview: isFieldPartOfPreview(field, formPartOfPreview)
|
|
@@ -99,18 +99,18 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
99
99
|
case "com.sap.vocabularies.UI.v1.DataPoint":
|
|
100
100
|
formElements.push({
|
|
101
101
|
// key: KeyHelper.generateKeyFromDataField(formAnnotation),
|
|
102
|
-
key: "DataPoint::"
|
|
102
|
+
key: "DataPoint::".concat(formAnnotation.qualifier ? formAnnotation.qualifier : ""),
|
|
103
103
|
type: FormElementType.Annotation,
|
|
104
|
-
annotationPath: converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName)
|
|
104
|
+
annotationPath: "".concat(converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName), "/")
|
|
105
105
|
});
|
|
106
106
|
break;
|
|
107
107
|
|
|
108
108
|
case "com.sap.vocabularies.Communication.v1.Contact":
|
|
109
109
|
formElements.push({
|
|
110
110
|
// key: KeyHelper.generateKeyFromDataField(formAnnotation),
|
|
111
|
-
key: "Contact::"
|
|
111
|
+
key: "Contact::".concat(formAnnotation.qualifier ? formAnnotation.qualifier : ""),
|
|
112
112
|
type: FormElementType.Annotation,
|
|
113
|
-
annotationPath: converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName)
|
|
113
|
+
annotationPath: "".concat(converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName), "/")
|
|
114
114
|
});
|
|
115
115
|
break;
|
|
116
116
|
|
|
@@ -130,7 +130,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
130
130
|
Object.keys(manifestFormContainer === null || manifestFormContainer === void 0 ? void 0 : manifestFormContainer.fields).forEach(function (fieldId) {
|
|
131
131
|
formElements[fieldId] = {
|
|
132
132
|
key: fieldId,
|
|
133
|
-
id: "CustomFormElement::"
|
|
133
|
+
id: "CustomFormElement::".concat(fieldId),
|
|
134
134
|
type: FormElementType.Default,
|
|
135
135
|
template: manifestFormContainer.fields[fieldId].template,
|
|
136
136
|
label: manifestFormContainer.fields[fieldId].label,
|
|
@@ -153,9 +153,9 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
153
153
|
var sFormContainerId = generate([{
|
|
154
154
|
Facet: facetDefinition
|
|
155
155
|
}]);
|
|
156
|
-
var sAnnotationPath = "/"
|
|
156
|
+
var sAnnotationPath = "/".concat(facetDefinition.fullyQualifiedName);
|
|
157
157
|
var resolvedTarget = converterContext.getEntityTypeAnnotation(facetDefinition.Target.value);
|
|
158
|
-
var isVisible =
|
|
158
|
+
var isVisible = compileExpression(not(equal(true, getExpressionFromAnnotation((_facetDefinition$anno5 = facetDefinition.annotations) === null || _facetDefinition$anno5 === void 0 ? void 0 : (_facetDefinition$anno6 = _facetDefinition$anno5.UI) === null || _facetDefinition$anno6 === void 0 ? void 0 : _facetDefinition$anno6.Hidden))));
|
|
159
159
|
var sEntitySetPath; // resolvedTarget doesn't have a entitySet in case Containments and Paramterized services.
|
|
160
160
|
|
|
161
161
|
if (resolvedTarget.converterContext.getEntitySet() && resolvedTarget.converterContext.getEntitySet() !== converterContext.getEntitySet()) {
|
|
@@ -176,9 +176,9 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
var oActionShowDetails = {
|
|
179
|
-
id:
|
|
179
|
+
id: getFormStandardActionButtonID(sFormContainerId, "ShowHideDetails"),
|
|
180
180
|
key: "StandardAction::ShowHideDetails",
|
|
181
|
-
text:
|
|
181
|
+
text: compileExpression(ifElse(equal(pathInModel("showDetails", "internal"), true), pathInModel("T_COMMON_OBJECT_PAGE_HIDE_FORM_CONTAINER_DETAILS", "sap.fe.i18n"), pathInModel("T_COMMON_OBJECT_PAGE_SHOW_FORM_CONTAINER_DETAILS", "sap.fe.i18n"))),
|
|
182
182
|
type: ActionType.ShowFormDetails,
|
|
183
183
|
press: "FormContainerRuntime.toggleDetails"
|
|
184
184
|
};
|
|
@@ -232,8 +232,8 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
232
232
|
switch (facetDefinition.$Type) {
|
|
233
233
|
case "com.sap.vocabularies.UI.v1.CollectionFacet":
|
|
234
234
|
// Keep only valid children
|
|
235
|
-
|
|
236
|
-
id:
|
|
235
|
+
return {
|
|
236
|
+
id: getFormID({
|
|
237
237
|
Facet: facetDefinition
|
|
238
238
|
}),
|
|
239
239
|
useFormContainerLabels: true,
|
|
@@ -245,11 +245,10 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
245
245
|
formContainers: getFormContainersForCollection(facetDefinition, converterContext, actions),
|
|
246
246
|
isVisible: isVisible
|
|
247
247
|
};
|
|
248
|
-
return formCollectionDefinition;
|
|
249
248
|
|
|
250
249
|
case "com.sap.vocabularies.UI.v1.ReferenceFacet":
|
|
251
|
-
|
|
252
|
-
id:
|
|
250
|
+
return {
|
|
251
|
+
id: getFormID({
|
|
253
252
|
Facet: facetDefinition
|
|
254
253
|
}),
|
|
255
254
|
useFormContainerLabels: false,
|
|
@@ -257,7 +256,6 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
257
256
|
formContainers: [getFormContainer(facetDefinition, converterContext, actions)],
|
|
258
257
|
isVisible: isVisible
|
|
259
258
|
};
|
|
260
|
-
return formDefinition;
|
|
261
259
|
|
|
262
260
|
default:
|
|
263
261
|
throw new Error("Cannot create form based on ReferenceURLFacet");
|
|
@@ -267,4 +265,4 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
|
|
|
267
265
|
_exports.createFormDefinition = createFormDefinition;
|
|
268
266
|
return _exports;
|
|
269
267
|
}, false);
|
|
270
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZvcm0udHMiXSwibmFtZXMiOlsiRm9ybUVsZW1lbnRUeXBlIiwiZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnNGb3JGb3JtIiwidGV4dExpbmVzRWRpdCIsImlzRmllbGRQYXJ0T2ZQcmV2aWV3IiwiZmllbGQiLCJmb3JtUGFydE9mUHJldmlldyIsInZhbHVlT2YiLCJhbm5vdGF0aW9ucyIsIlVJIiwiUGFydE9mUHJldmlldyIsInVuZGVmaW5lZCIsImdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyIsImZhY2V0RGVmaW5pdGlvbiIsImNvbnZlcnRlckNvbnRleHQiLCJmb3JtRWxlbWVudHMiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiVGFyZ2V0IiwidmFsdWUiLCJmb3JtQW5ub3RhdGlvbiIsImFubm90YXRpb24iLCJnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zIiwic2VtYW50aWNPYmplY3RBbm5vdGF0aW9uUGF0aCIsImdldFNlbWFudGljT2JqZWN0UGF0aCIsIiRUeXBlIiwiSGlkZGVuIiwicHVzaCIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsInR5cGUiLCJBbm5vdGF0aW9uIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwic2VtYW50aWNPYmplY3RQYXRoIiwiZm9ybWF0T3B0aW9ucyIsImlzUGFydE9mUHJldmlldyIsInRlcm0iLCJEYXRhIiwiZm9yRWFjaCIsInF1YWxpZmllciIsImdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdCIsIm1hbmlmZXN0V3JhcHBlciIsImdldE1hbmlmZXN0V3JhcHBlciIsIm1hbmlmZXN0Rm9ybUNvbnRhaW5lciIsImdldEZvcm1Db250YWluZXIiLCJmaWVsZHMiLCJPYmplY3QiLCJrZXlzIiwiZmllbGRJZCIsImlkIiwiRGVmYXVsdCIsInRlbXBsYXRlIiwibGFiZWwiLCJwb3NpdGlvbiIsInBsYWNlbWVudCIsIlBsYWNlbWVudCIsIkFmdGVyIiwiYWN0aW9ucyIsInNGb3JtQ29udGFpbmVySWQiLCJnZW5lcmF0ZSIsIkZhY2V0Iiwic0Fubm90YXRpb25QYXRoIiwiaXNWaXNpYmxlIiwiY29tcGlsZUJpbmRpbmciLCJub3QiLCJlcXVhbCIsImFubm90YXRpb25FeHByZXNzaW9uIiwic0VudGl0eVNldFBhdGgiLCJnZXRFbnRpdHlTZXQiLCJnZXRUYXJnZXRFbnRpdHlTZXRQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsInRhcmdldE9iamVjdCIsImNvbnRhaW5zVGFyZ2V0IiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsImFGb3JtRWxlbWVudHMiLCJpbnNlcnRDdXN0b21FbGVtZW50cyIsImZpbHRlciIsImFjdGlvbiIsImZhY2V0TmFtZSIsImxlbmd0aCIsIm9BY3Rpb25TaG93RGV0YWlscyIsIkZvcm1TdGFuZGFyZEFjdGlvbkJ1dHRvbklEIiwidGV4dCIsImlmRWxzZSIsImJpbmRpbmdFeHByZXNzaW9uIiwiQWN0aW9uVHlwZSIsIlNob3dGb3JtRGV0YWlscyIsInByZXNzIiwic29tZSIsIm9Gb3JtRWxlbWVudCIsImVudGl0eVNldCIsImdldEZvcm1Db250YWluZXJzRm9yQ29sbGVjdGlvbiIsImZvcm1Db250YWluZXJzIiwiRmFjZXRzIiwiZmFjZXQiLCJpc1JlZmVyZW5jZUZhY2V0IiwiY3JlYXRlRm9ybURlZmluaXRpb24iLCJmb3JtQ29sbGVjdGlvbkRlZmluaXRpb24iLCJGb3JtSUQiLCJ1c2VGb3JtQ29udGFpbmVyTGFiZWxzIiwiaGFzRmFjZXRzTm90UGFydE9mUHJldmlldyIsImNoaWxkRmFjZXQiLCJmb3JtRGVmaW5pdGlvbiIsIkVycm9yIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bc0NZQSxlOzthQUFBQSxlO0FBQUFBLElBQUFBLGU7QUFBQUEsSUFBQUEsZTtL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MEdBQXdCQyxFQUF4Qiw0R0FBNEJDLGFBQTVCLGtGQUEyQ0gsT0FBM0MsUUFBeUQsS0FBekU7QUFBQSxXQUQwQixDQUhLO0FBTWhDd0YsVUFBQUEsY0FBYyxFQUFFRCw4QkFBOEIsQ0FBQ2pGLGVBQUQsRUFBa0JDLGdCQUFsQixFQUFvQzhDLE9BQXBDLENBTmQ7QUFPaENLLFVBQUFBLFNBQVMsRUFBRUE7QUFQcUIsU0FBakM7QUFTQSxlQUFPbUMsd0JBQVA7O0FBQ0Q7QUFDQyxZQUFNSyxjQUFjLEdBQUc7QUFDdEJyRCxVQUFBQSxFQUFFLEVBQUVpRCxNQUFNLENBQUM7QUFBRXRDLFlBQUFBLEtBQUssRUFBRWxEO0FBQVQsV0FBRCxDQURZO0FBRXRCeUYsVUFBQUEsc0JBQXNCLEVBQUUsS0FGRjtBQUd0QkMsVUFBQUEseUJBQXlCLEVBQUUsNEJBQUExRixlQUFlLENBQUNMLFdBQWhCLCtHQUE2QkMsRUFBN0IsK0dBQWlDQyxhQUFqQyxvRkFBZ0RILE9BQWhELFFBQThELEtBSG5FO0FBSXRCd0YsVUFBQUEsY0FBYyxFQUFFLENBQUNoRCxnQkFBZ0IsQ0FBQ2xDLGVBQUQsRUFBa0JDLGdCQUFsQixFQUFvQzhDLE9BQXBDLENBQWpCLENBSk07QUFLdEJLLFVBQUFBLFNBQVMsRUFBRUE7QUFMVyxTQUF2QjtBQU9BLGVBQU93QyxjQUFQOztBQUNEO0FBQ0MsY0FBTSxJQUFJQyxLQUFKLENBQVUsK0NBQVYsQ0FBTjtBQXZCRjtBQXlCQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0QW5ub3RhdGlvblRlcm0sXG5cdENvbGxlY3Rpb25GYWNldFR5cGVzLFxuXHRDb21tdW5pY2F0aW9uQW5ub3RhdGlvblRlcm1zLFxuXHREYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHRGYWNldFR5cGVzLFxuXHRGaWVsZEdyb3VwLFxuXHRJZGVudGlmaWNhdGlvbixcblx0UGFydE9mUHJldmlldyxcblx0UmVmZXJlbmNlRmFjZXRUeXBlcyxcblx0VUlBbm5vdGF0aW9uVGVybXMsXG5cdFVJQW5ub3RhdGlvblR5cGVzXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgZ2V0U2VtYW50aWNPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvYW5ub3RhdGlvbnMvRGF0YUZpZWxkXCI7XG5pbXBvcnQgeyBCYXNlQWN0aW9uLCBDb252ZXJ0ZXJBY3Rpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQge1xuXHRhbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0YmluZGluZ0V4cHJlc3Npb24sXG5cdEJpbmRpbmdFeHByZXNzaW9uLFxuXHRjb21waWxlQmluZGluZyxcblx0ZXF1YWwsXG5cdGlmRWxzZSxcblx0bm90XG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdFeHByZXNzaW9uXCI7XG5pbXBvcnQgeyBnZXRUYXJnZXRFbnRpdHlTZXRQYXRoLCBnZXRUYXJnZXRPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwiLi4vLi4vLi4vaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB7IENvbmZpZ3VyYWJsZU9iamVjdCwgQ3VzdG9tRWxlbWVudCwgaW5zZXJ0Q3VzdG9tRWxlbWVudHMsIFBsYWNlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgRm9ybUlELCBGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgeyBLZXlIZWxwZXIgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9LZXlcIjtcbmltcG9ydCB7IEFjdGlvblR5cGUsIEZvcm1hdE9wdGlvbnNUeXBlLCBGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcblxuZXhwb3J0IHR5cGUgRm9ybURlZmluaXRpb24gPSB7XG5cdGlkOiBzdHJpbmc7XG5cdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IGJvb2xlYW47XG5cdGhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXc6IGJvb2xlYW47XG5cdGZvcm1Db250YWluZXJzOiBGb3JtQ29udGFpbmVyW107XG5cdGlzVmlzaWJsZTogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG59O1xuXG5leHBvcnQgZW51bSBGb3JtRWxlbWVudFR5cGUge1xuXHREZWZhdWx0ID0gXCJEZWZhdWx0XCIsXG5cdEFubm90YXRpb24gPSBcIkFubm90YXRpb25cIlxufVxuXG5leHBvcnQgdHlwZSBCYXNlRm9ybUVsZW1lbnQgPSBDb25maWd1cmFibGVPYmplY3QgJiB7XG5cdGlkPzogc3RyaW5nO1xuXHR0eXBlOiBGb3JtRWxlbWVudFR5cGU7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHR2aXNpYmxlPzogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIEFubm90YXRpb25Gb3JtRWxlbWVudCA9IEJhc2VGb3JtRWxlbWVudCAmIHtcblx0aWRQcmVmaXg/OiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRpc1ZhbHVlTXVsdGlsaW5lVGV4dD86IGJvb2xlYW47XG5cdHNlbWFudGljT2JqZWN0UGF0aD86IHN0cmluZztcblx0aXNQYXJ0T2ZQcmV2aWV3PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUZvcm1FbGVtZW50ID0gQ3VzdG9tRWxlbWVudDxcblx0QmFzZUZvcm1FbGVtZW50ICYge1xuXHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5EZWZhdWx0O1xuXHRcdHRlbXBsYXRlOiBzdHJpbmc7XG5cdH1cbj47XG5cbmV4cG9ydCB0eXBlIEZvcm1FbGVtZW50ID0gQ3VzdG9tRm9ybUVsZW1lbnQgfCBBbm5vdGF0aW9uRm9ybUVsZW1lbnQ7XG5cbnR5cGUgRm9ybUNvbnRhaW5lciA9IHtcblx0aWQ/OiBzdHJpbmc7XG5cdGZvcm1FbGVtZW50czogRm9ybUVsZW1lbnRbXTtcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0aXNWaXNpYmxlOiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPjtcblx0ZW50aXR5U2V0Pzogc3RyaW5nO1xuXHRhY3Rpb25zPzogQ29udmVydGVyQWN0aW9uW10gfCBCYXNlQWN0aW9uW107XG59O1xuXG4vKipcbiAqIFJldHVybnMgZGVmYXVsdCBmb3JtYXQgb3B0aW9ucyBmb3IgdGV4dCBmaWVsZHMgb24gYSBmb3JtLlxuICpcbiAqIEByZXR1cm5zIHtGb3JtYXRPcHRpb25zVHlwZX0gQ29sbGVjdGlvbiBvZiBmb3JtYXQgb3B0aW9ucyB3aXRoIGRlZmF1bHQgdmFsdWVzXG4gKi9cbmZ1bmN0aW9uIGdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpOiBGb3JtYXRPcHRpb25zVHlwZSB7XG5cdHJldHVybiB7XG5cdFx0dGV4dExpbmVzRWRpdDogNFxuXHR9O1xufVxuXG5mdW5jdGlvbiBpc0ZpZWxkUGFydE9mUHJldmlldyhmaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgZm9ybVBhcnRPZlByZXZpZXc/OiBQYXJ0T2ZQcmV2aWV3KTogYm9vbGVhbiB7XG5cdC8vIEJvdGggZWFjaCBmb3JtIGFuZCBmaWVsZCBjYW4gaGF2ZSB0aGUgUGFydE9mUHJldmlldyBhbm5vdGF0aW9uLiBPbmx5IGlmIHRoZSBmb3JtIGlzIG5vdCBoaWRkZW4gKG5vdCBwYXJ0T2ZQcmV2aWV3KSB3ZSBhbGxvdyB0b2dnbGluZyBvbiBmaWVsZCBsZXZlbFxuXHRyZXR1cm4gKFxuXHRcdGZvcm1QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlIHx8XG5cdFx0ZmllbGQuYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3ID09PSB1bmRlZmluZWQgfHxcblx0XHRmaWVsZC5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXcudmFsdWVPZigpID09PSB0cnVlXG5cdCk7XG59XG5cbmZ1bmN0aW9uIGdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyhmYWNldERlZmluaXRpb246IFJlZmVyZW5jZUZhY2V0VHlwZXMsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBBbm5vdGF0aW9uRm9ybUVsZW1lbnRbXSB7XG5cdGNvbnN0IGZvcm1FbGVtZW50czogQW5ub3RhdGlvbkZvcm1FbGVtZW50W10gPSBbXTtcblx0Y29uc3QgcmVzb2x2ZWRUYXJnZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWUpO1xuXHRjb25zdCBmb3JtQW5ub3RhdGlvbjogQW5ub3RhdGlvblRlcm08SWRlbnRpZmljYXRpb24+IHwgQW5ub3RhdGlvblRlcm08RmllbGRHcm91cD4gPSByZXNvbHZlZFRhcmdldC5hbm5vdGF0aW9uIGFzXG5cdFx0fCBBbm5vdGF0aW9uVGVybTxJZGVudGlmaWNhdGlvbj5cblx0XHR8IEFubm90YXRpb25UZXJtPEZpZWxkR3JvdXA+O1xuXHRjb252ZXJ0ZXJDb250ZXh0ID0gcmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dDtcblxuXHRmdW5jdGlvbiBnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zKGZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzLCBmb3JtUGFydE9mUHJldmlldzogUGFydE9mUHJldmlldyB8IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvblBhdGggPSBnZXRTZW1hbnRpY09iamVjdFBhdGgoY29udmVydGVyQ29udGV4dCwgZmllbGQpO1xuXHRcdGlmIChcblx0XHRcdGZpZWxkLiRUeXBlICE9PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb24gJiZcblx0XHRcdGZpZWxkLiRUeXBlICE9PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24gJiZcblx0XHRcdGZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkgIT09IHRydWVcblx0XHQpIHtcblx0XHRcdGZvcm1FbGVtZW50cy5wdXNoKHtcblx0XHRcdFx0a2V5OiBLZXlIZWxwZXIuZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKGZpZWxkKSxcblx0XHRcdFx0dHlwZTogRm9ybUVsZW1lbnRUeXBlLkFubm90YXRpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZmllbGQuZnVsbHlRdWFsaWZpZWROYW1lKSArIFwiL1wiLFxuXHRcdFx0XHRzZW1hbnRpY09iamVjdFBhdGg6IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvblBhdGgsXG5cdFx0XHRcdGZvcm1hdE9wdGlvbnM6IGdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpLFxuXHRcdFx0XHRpc1BhcnRPZlByZXZpZXc6IGlzRmllbGRQYXJ0T2ZQcmV2aWV3KGZpZWxkLCBmb3JtUGFydE9mUHJldmlldylcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHN3aXRjaCAoZm9ybUFubm90YXRpb24/LnRlcm0pIHtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkZpZWxkR3JvdXA6XG5cdFx0XHQoZm9ybUFubm90YXRpb24gYXMgQW5ub3RhdGlvblRlcm08RmllbGRHcm91cD4pLkRhdGEuZm9yRWFjaCgoZmllbGQpID0+XG5cdFx0XHRcdGdldERhdGFGaWVsZHNGcm9tQW5ub3RhdGlvbnMoZmllbGQsIGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXcpXG5cdFx0XHQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5JZGVudGlmaWNhdGlvbjpcblx0XHRcdChmb3JtQW5ub3RhdGlvbiBhcyBBbm5vdGF0aW9uVGVybTxJZGVudGlmaWNhdGlvbj4pLmZvckVhY2goKGZpZWxkKSA9PlxuXHRcdFx0XHRnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zKGZpZWxkLCBmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3KVxuXHRcdFx0KTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuRGF0YVBvaW50OlxuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHQvLyBrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZm9ybUFubm90YXRpb24pLFxuXHRcdFx0XHRrZXk6IFwiRGF0YVBvaW50OjpcIiArIChmb3JtQW5ub3RhdGlvbi5xdWFsaWZpZXIgPyBmb3JtQW5ub3RhdGlvbi5xdWFsaWZpZXIgOiBcIlwiKSxcblx0XHRcdFx0dHlwZTogRm9ybUVsZW1lbnRUeXBlLkFubm90YXRpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZm9ybUFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKSArIFwiL1wiXG5cdFx0XHR9KTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgQ29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcy5Db250YWN0OlxuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHQvLyBrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZm9ybUFubm90YXRpb24pLFxuXHRcdFx0XHRrZXk6IFwiQ29udGFjdDo6XCIgKyAoZm9ybUFubm90YXRpb24ucXVhbGlmaWVyID8gZm9ybUFubm90YXRpb24ucXVhbGlmaWVyIDogXCJcIiksXG5cdFx0XHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5Bbm5vdGF0aW9uLFxuXHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGZvcm1Bbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSkgKyBcIi9cIlxuXHRcdFx0fSk7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0YnJlYWs7XG5cdH1cblx0cmV0dXJuIGZvcm1FbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdChcblx0ZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21Gb3JtRWxlbWVudD4ge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCBtYW5pZmVzdEZvcm1Db250YWluZXI6IEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24gPSBtYW5pZmVzdFdyYXBwZXIuZ2V0Rm9ybUNvbnRhaW5lcihmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlKTtcblx0Y29uc3QgZm9ybUVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21Gb3JtRWxlbWVudD4gPSB7fTtcblx0aWYgKG1hbmlmZXN0Rm9ybUNvbnRhaW5lcj8uZmllbGRzKSB7XG5cdFx0T2JqZWN0LmtleXMobWFuaWZlc3RGb3JtQ29udGFpbmVyPy5maWVsZHMpLmZvckVhY2goKGZpZWxkSWQpID0+IHtcblx0XHRcdGZvcm1FbGVtZW50c1tmaWVsZElkXSA9IHtcblx0XHRcdFx0a2V5OiBmaWVsZElkLFxuXHRcdFx0XHRpZDogXCJDdXN0b21Gb3JtRWxlbWVudDo6XCIgKyBmaWVsZElkLFxuXHRcdFx0XHR0eXBlOiBGb3JtRWxlbWVudFR5cGUuRGVmYXVsdCxcblx0XHRcdFx0dGVtcGxhdGU6IG1hbmlmZXN0Rm9ybUNvbnRhaW5lci5maWVsZHNbZmllbGRJZF0udGVtcGxhdGUsXG5cdFx0XHRcdGxhYmVsOiBtYW5pZmVzdEZvcm1Db250YWluZXIuZmllbGRzW2ZpZWxkSWRdLmxhYmVsLFxuXHRcdFx0XHRwb3NpdGlvbjogbWFuaWZlc3RGb3JtQ29udGFpbmVyLmZpZWxkc1tmaWVsZElkXS5wb3NpdGlvbiB8fCB7XG5cdFx0XHRcdFx0cGxhY2VtZW50OiBQbGFjZW1lbnQuQWZ0ZXJcblx0XHRcdFx0fSxcblx0XHRcdFx0Zm9ybWF0T3B0aW9uczoge1xuXHRcdFx0XHRcdC4uLmdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpLFxuXHRcdFx0XHRcdC4uLm1hbmlmZXN0Rm9ybUNvbnRhaW5lci5maWVsZHNbZmllbGRJZF0uZm9ybWF0T3B0aW9uc1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBmb3JtRWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtQ29udGFpbmVyKFxuXHRmYWNldERlZmluaXRpb246IFJlZmVyZW5jZUZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFjdGlvbnM/OiBCYXNlQWN0aW9uW10gfCBDb252ZXJ0ZXJBY3Rpb25bXVxuKTogRm9ybUNvbnRhaW5lciB7XG5cdGNvbnN0IHNGb3JtQ29udGFpbmVySWQgPSBnZW5lcmF0ZShbeyBGYWNldDogZmFjZXREZWZpbml0aW9uIH1dKTtcblx0Y29uc3Qgc0Fubm90YXRpb25QYXRoID0gXCIvXCIgKyBmYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lO1xuXHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24oZmFjZXREZWZpbml0aW9uLlRhcmdldC52YWx1ZSk7XG5cdGNvbnN0IGlzVmlzaWJsZSA9IGNvbXBpbGVCaW5kaW5nKG5vdChlcXVhbCh0cnVlLCBhbm5vdGF0aW9uRXhwcmVzc2lvbihmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4pKSkpO1xuXHRsZXQgc0VudGl0eVNldFBhdGghOiBzdHJpbmc7XG5cdC8vIHJlc29sdmVkVGFyZ2V0IGRvZXNuJ3QgaGF2ZSBhIGVudGl0eVNldCBpbiBjYXNlIENvbnRhaW5tZW50cyBhbmQgUGFyYW10ZXJpemVkIHNlcnZpY2VzLlxuXHRpZiAoXG5cdFx0cmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKSAmJlxuXHRcdHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCkgIT09IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KClcblx0KSB7XG5cdFx0c0VudGl0eVNldFBhdGggPSBnZXRUYXJnZXRFbnRpdHlTZXRQYXRoKHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpKTtcblx0fSBlbHNlIGlmIChyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKS50YXJnZXRPYmplY3Q/LmNvbnRhaW5zVGFyZ2V0ID09PSB0cnVlKSB7XG5cdFx0c0VudGl0eVNldFBhdGggPSBnZXRUYXJnZXRPYmplY3RQYXRoKHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLCBmYWxzZSk7XG5cdH1cblx0Y29uc3QgYUZvcm1FbGVtZW50cyA9IGluc2VydEN1c3RvbUVsZW1lbnRzKFxuXHRcdGdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyhmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdGdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdChmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdHsgZm9ybWF0T3B0aW9uczogXCJvdmVyd3JpdGVcIiB9XG5cdCk7XG5cblx0YWN0aW9ucyA9IGFjdGlvbnMgIT09IHVuZGVmaW5lZCA/IGFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5mYWNldE5hbWUgPT0gZmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSkgOiBbXTtcblx0aWYgKGFjdGlvbnMubGVuZ3RoID09PSAwKSB7XG5cdFx0YWN0aW9ucyA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdGNvbnN0IG9BY3Rpb25TaG93RGV0YWlsczogQmFzZUFjdGlvbiA9IHtcblx0XHRpZDogRm9ybVN0YW5kYXJkQWN0aW9uQnV0dG9uSUQoc0Zvcm1Db250YWluZXJJZCwgXCJTaG93SGlkZURldGFpbHNcIiksXG5cdFx0a2V5OiBcIlN0YW5kYXJkQWN0aW9uOjpTaG93SGlkZURldGFpbHNcIixcblx0XHR0ZXh0OiBjb21waWxlQmluZGluZyhcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0ZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCJzaG93RGV0YWlsc1wiLCBcImludGVybmFsXCIpLCB0cnVlKSxcblx0XHRcdFx0YmluZGluZ0V4cHJlc3Npb24oXCJUX0NPTU1PTl9PQkpFQ1RfUEFHRV9ISURFX0ZPUk1fQ09OVEFJTkVSX0RFVEFJTFNcIiwgXCJzYXAuZmUuaTE4blwiKSxcblx0XHRcdFx0YmluZGluZ0V4cHJlc3Npb24oXCJUX0NPTU1PTl9PQkpFQ1RfUEFHRV9TSE9XX0ZPUk1fQ09OVEFJTkVSX0RFVEFJTFNcIiwgXCJzYXAuZmUuaTE4blwiKVxuXHRcdFx0KVxuXHRcdCksXG5cdFx0dHlwZTogQWN0aW9uVHlwZS5TaG93Rm9ybURldGFpbHMsXG5cdFx0cHJlc3M6IFwiRm9ybUNvbnRhaW5lclJ1bnRpbWUudG9nZ2xlRGV0YWlsc1wiXG5cdH07XG5cblx0aWYgKFxuXHRcdGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXc/LnZhbHVlT2YoKSAhPT0gZmFsc2UgJiZcblx0XHRhRm9ybUVsZW1lbnRzLnNvbWUoKG9Gb3JtRWxlbWVudCkgPT4gb0Zvcm1FbGVtZW50LmlzUGFydE9mUHJldmlldyA9PT0gZmFsc2UpXG5cdCkge1xuXHRcdGlmIChhY3Rpb25zICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGFjdGlvbnMucHVzaChvQWN0aW9uU2hvd0RldGFpbHMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhY3Rpb25zID0gW29BY3Rpb25TaG93RGV0YWlsc107XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRpZDogc0Zvcm1Db250YWluZXJJZCxcblx0XHRmb3JtRWxlbWVudHM6IGFGb3JtRWxlbWVudHMsXG5cdFx0YW5ub3RhdGlvblBhdGg6IHNBbm5vdGF0aW9uUGF0aCxcblx0XHRpc1Zpc2libGU6IGlzVmlzaWJsZSxcblx0XHRlbnRpdHlTZXQ6IHNFbnRpdHlTZXRQYXRoLFxuXHRcdGFjdGlvbnM6IGFjdGlvbnNcblx0fTtcbn1cblxuZnVuY3Rpb24gZ2V0Rm9ybUNvbnRhaW5lcnNGb3JDb2xsZWN0aW9uKFxuXHRmYWNldERlZmluaXRpb246IENvbGxlY3Rpb25GYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRhY3Rpb25zPzogQmFzZUFjdGlvbltdIHwgQ29udmVydGVyQWN0aW9uW11cbik6IEZvcm1Db250YWluZXJbXSB7XG5cdGNvbnN0IGZvcm1Db250YWluZXJzOiBGb3JtQ29udGFpbmVyW10gPSBbXTtcblx0ZmFjZXREZWZpbml0aW9uLkZhY2V0cz8uZm9yRWFjaCgoZmFjZXQpID0+IHtcblx0XHQvLyBJZ25vcmUgbGV2ZWwgMyBjb2xsZWN0aW9uIGZhY2V0XG5cdFx0aWYgKGZhY2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Zm9ybUNvbnRhaW5lcnMucHVzaChnZXRGb3JtQ29udGFpbmVyKGZhY2V0IGFzIFJlZmVyZW5jZUZhY2V0VHlwZXMsIGNvbnZlcnRlckNvbnRleHQsIGFjdGlvbnMpKTtcblx0fSk7XG5cdHJldHVybiBmb3JtQ29udGFpbmVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVmZXJlbmNlRmFjZXQoZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzKTogZmFjZXREZWZpbml0aW9uIGlzIFJlZmVyZW5jZUZhY2V0VHlwZXMge1xuXHRyZXR1cm4gZmFjZXREZWZpbml0aW9uLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1EZWZpbml0aW9uKFxuXHRmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsXG5cdGlzVmlzaWJsZTogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj4sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFjdGlvbnM/OiBCYXNlQWN0aW9uW10gfCBDb252ZXJ0ZXJBY3Rpb25bXVxuKTogRm9ybURlZmluaXRpb24ge1xuXHRzd2l0Y2ggKGZhY2V0RGVmaW5pdGlvbi4kVHlwZSkge1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0OlxuXHRcdFx0Ly8gS2VlcCBvbmx5IHZhbGlkIGNoaWxkcmVuXG5cdFx0XHRjb25zdCBmb3JtQ29sbGVjdGlvbkRlZmluaXRpb24gPSB7XG5cdFx0XHRcdGlkOiBGb3JtSUQoeyBGYWNldDogZmFjZXREZWZpbml0aW9uIH0pLFxuXHRcdFx0XHR1c2VGb3JtQ29udGFpbmVyTGFiZWxzOiB0cnVlLFxuXHRcdFx0XHRoYXNGYWNldHNOb3RQYXJ0T2ZQcmV2aWV3OiBmYWNldERlZmluaXRpb24uRmFjZXRzLnNvbWUoXG5cdFx0XHRcdFx0KGNoaWxkRmFjZXQpID0+IGNoaWxkRmFjZXQuYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlXG5cdFx0XHRcdCksXG5cdFx0XHRcdGZvcm1Db250YWluZXJzOiBnZXRGb3JtQ29udGFpbmVyc0ZvckNvbGxlY3Rpb24oZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25zKSxcblx0XHRcdFx0aXNWaXNpYmxlOiBpc1Zpc2libGVcblx0XHRcdH07XG5cdFx0XHRyZXR1cm4gZm9ybUNvbGxlY3Rpb25EZWZpbml0aW9uO1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQ6XG5cdFx0XHRjb25zdCBmb3JtRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0aWQ6IEZvcm1JRCh7IEZhY2V0OiBmYWNldERlZmluaXRpb24gfSksXG5cdFx0XHRcdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IGZhbHNlLFxuXHRcdFx0XHRoYXNGYWNldHNOb3RQYXJ0T2ZQcmV2aWV3OiBmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlLFxuXHRcdFx0XHRmb3JtQ29udGFpbmVyczogW2dldEZvcm1Db250YWluZXIoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25zKV0sXG5cdFx0XHRcdGlzVmlzaWJsZTogaXNWaXNpYmxlXG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIGZvcm1EZWZpbml0aW9uO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY3JlYXRlIGZvcm0gYmFzZWQgb24gUmVmZXJlbmNlVVJMRmFjZXRcIik7XG5cdH1cbn1cbiJdfQ==
|
|
268
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZvcm0udHMiXSwibmFtZXMiOlsiRm9ybUVsZW1lbnRUeXBlIiwiZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnNGb3JGb3JtIiwidGV4dExpbmVzRWRpdCIsImlzRmllbGRQYXJ0T2ZQcmV2aWV3IiwiZmllbGQiLCJmb3JtUGFydE9mUHJldmlldyIsInZhbHVlT2YiLCJhbm5vdGF0aW9ucyIsIlVJIiwiUGFydE9mUHJldmlldyIsInVuZGVmaW5lZCIsImdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyIsImZhY2V0RGVmaW5pdGlvbiIsImNvbnZlcnRlckNvbnRleHQiLCJmb3JtRWxlbWVudHMiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiVGFyZ2V0IiwidmFsdWUiLCJmb3JtQW5ub3RhdGlvbiIsImFubm90YXRpb24iLCJnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zIiwic2VtYW50aWNPYmplY3RBbm5vdGF0aW9uUGF0aCIsImdldFNlbWFudGljT2JqZWN0UGF0aCIsIiRUeXBlIiwiSGlkZGVuIiwicHVzaCIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsInR5cGUiLCJBbm5vdGF0aW9uIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwic2VtYW50aWNPYmplY3RQYXRoIiwiZm9ybWF0T3B0aW9ucyIsImlzUGFydE9mUHJldmlldyIsInRlcm0iLCJEYXRhIiwiZm9yRWFjaCIsInF1YWxpZmllciIsImdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdCIsIm1hbmlmZXN0V3JhcHBlciIsImdldE1hbmlmZXN0V3JhcHBlciIsIm1hbmlmZXN0Rm9ybUNvbnRhaW5lciIsImdldEZvcm1Db250YWluZXIiLCJmaWVsZHMiLCJPYmplY3QiLCJrZXlzIiwiZmllbGRJZCIsImlkIiwiRGVmYXVsdCIsInRlbXBsYXRlIiwibGFiZWwiLCJwb3NpdGlvbiIsInBsYWNlbWVudCIsIlBsYWNlbWVudCIsIkFmdGVyIiwiYWN0aW9ucyIsInNGb3JtQ29udGFpbmVySWQiLCJnZW5lcmF0ZSIsIkZhY2V0Iiwic0Fubm90YXRpb25QYXRoIiwiaXNWaXNpYmxlIiwiY29tcGlsZUV4cHJlc3Npb24iLCJub3QiLCJlcXVhbCIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsInNFbnRpdHlTZXRQYXRoIiwiZ2V0RW50aXR5U2V0IiwiZ2V0VGFyZ2V0RW50aXR5U2V0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJ0YXJnZXRPYmplY3QiLCJjb250YWluc1RhcmdldCIsImdldFRhcmdldE9iamVjdFBhdGgiLCJhRm9ybUVsZW1lbnRzIiwiaW5zZXJ0Q3VzdG9tRWxlbWVudHMiLCJmaWx0ZXIiLCJhY3Rpb24iLCJmYWNldE5hbWUiLCJsZW5ndGgiLCJvQWN0aW9uU2hvd0RldGFpbHMiLCJnZXRGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRCIsInRleHQiLCJpZkVsc2UiLCJwYXRoSW5Nb2RlbCIsIkFjdGlvblR5cGUiLCJTaG93Rm9ybURldGFpbHMiLCJwcmVzcyIsInNvbWUiLCJvRm9ybUVsZW1lbnQiLCJlbnRpdHlTZXQiLCJnZXRGb3JtQ29udGFpbmVyc0ZvckNvbGxlY3Rpb24iLCJmb3JtQ29udGFpbmVycyIsIkZhY2V0cyIsImZhY2V0IiwiaXNSZWZlcmVuY2VGYWNldCIsImNyZWF0ZUZvcm1EZWZpbml0aW9uIiwiZ2V0Rm9ybUlEIiwidXNlRm9ybUNvbnRhaW5lckxhYmVscyIsImhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXciLCJjaGlsZEZhY2V0IiwiRXJyb3IiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFnQ1lBLGU7O2FBQUFBLGU7QUFBQUEsSUFBQUEsZTtBQUFBQSxJQUFBQSxlO0tBQUFBLGUsS0FBQUEsZTs7OztBQXVDWjtBQUNBO0FBQ0E7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QUhyQjtBQU1Od0YsVUFBQUEsY0FBYyxFQUFFRCw4QkFBOEIsQ0FBQ2pGLGVBQUQsRUFBa0JDLGdCQUFsQixFQUFvQzhDLE9BQXBDLENBTnhDO0FBT05LLFVBQUFBLFNBQVMsRUFBRUE7QUFQTCxTQUFQOztBQVNEO0FBQ0MsZUFBTztBQUNOYixVQUFBQSxFQUFFLEVBQUVnRCxTQUFTLENBQUM7QUFBRXJDLFlBQUFBLEtBQUssRUFBRWxEO0FBQVQsV0FBRCxDQURQO0FBRU53RixVQUFBQSxzQkFBc0IsRUFBRSxLQUZsQjtBQUdOQyxVQUFBQSx5QkFBeUIsRUFBRSw0QkFBQXpGLGVBQWUsQ0FBQ0wsV0FBaEIsK0dBQTZCQyxFQUE3QiwrR0FBaUNDLGFBQWpDLG9GQUFnREgsT0FBaEQsUUFBOEQsS0FIbkY7QUFJTndGLFVBQUFBLGNBQWMsRUFBRSxDQUFDaEQsZ0JBQWdCLENBQUNsQyxlQUFELEVBQWtCQyxnQkFBbEIsRUFBb0M4QyxPQUFwQyxDQUFqQixDQUpWO0FBS05LLFVBQUFBLFNBQVMsRUFBRUE7QUFMTCxTQUFQOztBQU9EO0FBQ0MsY0FBTSxJQUFJdUMsS0FBSixDQUFVLCtDQUFWLENBQU47QUFyQkY7QUF1QkEiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQW5ub3RhdGlvblRlcm0gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IENvbW11bmljYXRpb25Bbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW11bmljYXRpb25cIjtcbmltcG9ydCB0eXBlIHtcblx0Q29sbGVjdGlvbkZhY2V0VHlwZXMsXG5cdERhdGFGaWVsZEFic3RyYWN0VHlwZXMsXG5cdEZhY2V0VHlwZXMsXG5cdEZpZWxkR3JvdXAsXG5cdElkZW50aWZpY2F0aW9uLFxuXHRQYXJ0T2ZQcmV2aWV3LFxuXHRSZWZlcmVuY2VGYWNldFR5cGVzXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblRlcm1zLCBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IGdldFNlbWFudGljT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2Fubm90YXRpb25zL0RhdGFGaWVsZFwiO1xuaW1wb3J0IHR5cGUgeyBCYXNlQWN0aW9uLCBDb252ZXJ0ZXJBY3Rpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBlcXVhbCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCBpZkVsc2UsIG5vdCwgcGF0aEluTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgZ2V0VGFyZ2V0RW50aXR5U2V0UGF0aCwgZ2V0VGFyZ2V0T2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcIi4uLy4uLy4uL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQ29uZmlndXJhYmxlT2JqZWN0LCBDdXN0b21FbGVtZW50IH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBpbnNlcnRDdXN0b21FbGVtZW50cywgUGxhY2VtZW50IH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBnZXRGb3JtSUQsIGdldEZvcm1TdGFuZGFyZEFjdGlvbkJ1dHRvbklEIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvSURcIjtcbmltcG9ydCB7IEtleUhlbHBlciB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0tleVwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtYXRPcHRpb25zVHlwZSwgRm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi8uLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBBY3Rpb25UeXBlIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcblxuZXhwb3J0IHR5cGUgRm9ybURlZmluaXRpb24gPSB7XG5cdGlkOiBzdHJpbmc7XG5cdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IGJvb2xlYW47XG5cdGhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXc6IGJvb2xlYW47XG5cdGZvcm1Db250YWluZXJzOiBGb3JtQ29udGFpbmVyW107XG5cdGlzVmlzaWJsZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG59O1xuXG5leHBvcnQgZW51bSBGb3JtRWxlbWVudFR5cGUge1xuXHREZWZhdWx0ID0gXCJEZWZhdWx0XCIsXG5cdEFubm90YXRpb24gPSBcIkFubm90YXRpb25cIlxufVxuXG5leHBvcnQgdHlwZSBCYXNlRm9ybUVsZW1lbnQgPSBDb25maWd1cmFibGVPYmplY3QgJiB7XG5cdGlkPzogc3RyaW5nO1xuXHR0eXBlOiBGb3JtRWxlbWVudFR5cGU7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHR2aXNpYmxlPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIEFubm90YXRpb25Gb3JtRWxlbWVudCA9IEJhc2VGb3JtRWxlbWVudCAmIHtcblx0aWRQcmVmaXg/OiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRpc1ZhbHVlTXVsdGlsaW5lVGV4dD86IGJvb2xlYW47XG5cdHNlbWFudGljT2JqZWN0UGF0aD86IHN0cmluZztcblx0aXNQYXJ0T2ZQcmV2aWV3PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUZvcm1FbGVtZW50ID0gQ3VzdG9tRWxlbWVudDxcblx0QmFzZUZvcm1FbGVtZW50ICYge1xuXHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5EZWZhdWx0O1xuXHRcdHRlbXBsYXRlOiBzdHJpbmc7XG5cdH1cbj47XG5cbmV4cG9ydCB0eXBlIEZvcm1FbGVtZW50ID0gQ3VzdG9tRm9ybUVsZW1lbnQgfCBBbm5vdGF0aW9uRm9ybUVsZW1lbnQ7XG5cbnR5cGUgRm9ybUNvbnRhaW5lciA9IHtcblx0aWQ/OiBzdHJpbmc7XG5cdGZvcm1FbGVtZW50czogRm9ybUVsZW1lbnRbXTtcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0aXNWaXNpYmxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0ZW50aXR5U2V0Pzogc3RyaW5nO1xuXHRhY3Rpb25zPzogQ29udmVydGVyQWN0aW9uW10gfCBCYXNlQWN0aW9uW107XG59O1xuXG4vKipcbiAqIFJldHVybnMgZGVmYXVsdCBmb3JtYXQgb3B0aW9ucyBmb3IgdGV4dCBmaWVsZHMgb24gYSBmb3JtLlxuICpcbiAqIEByZXR1cm5zIENvbGxlY3Rpb24gb2YgZm9ybWF0IG9wdGlvbnMgd2l0aCBkZWZhdWx0IHZhbHVlc1xuICovXG5mdW5jdGlvbiBnZXREZWZhdWx0Rm9ybWF0T3B0aW9uc0ZvckZvcm0oKTogRm9ybWF0T3B0aW9uc1R5cGUge1xuXHRyZXR1cm4ge1xuXHRcdHRleHRMaW5lc0VkaXQ6IDRcblx0fTtcbn1cblxuZnVuY3Rpb24gaXNGaWVsZFBhcnRPZlByZXZpZXcoZmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMsIGZvcm1QYXJ0T2ZQcmV2aWV3PzogUGFydE9mUHJldmlldyk6IGJvb2xlYW4ge1xuXHQvLyBCb3RoIGVhY2ggZm9ybSBhbmQgZmllbGQgY2FuIGhhdmUgdGhlIFBhcnRPZlByZXZpZXcgYW5ub3RhdGlvbi4gT25seSBpZiB0aGUgZm9ybSBpcyBub3QgaGlkZGVuIChub3QgcGFydE9mUHJldmlldykgd2UgYWxsb3cgdG9nZ2xpbmcgb24gZmllbGQgbGV2ZWxcblx0cmV0dXJuIChcblx0XHRmb3JtUGFydE9mUHJldmlldz8udmFsdWVPZigpID09PSBmYWxzZSB8fFxuXHRcdGZpZWxkLmFubm90YXRpb25zPy5VST8uUGFydE9mUHJldmlldyA9PT0gdW5kZWZpbmVkIHx8XG5cdFx0ZmllbGQuYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3LnZhbHVlT2YoKSA9PT0gdHJ1ZVxuXHQpO1xufVxuXG5mdW5jdGlvbiBnZXRGb3JtRWxlbWVudHNGcm9tQW5ub3RhdGlvbnMoZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogQW5ub3RhdGlvbkZvcm1FbGVtZW50W10ge1xuXHRjb25zdCBmb3JtRWxlbWVudHM6IEFubm90YXRpb25Gb3JtRWxlbWVudFtdID0gW107XG5cdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlKTtcblx0Y29uc3QgZm9ybUFubm90YXRpb246IEFubm90YXRpb25UZXJtPElkZW50aWZpY2F0aW9uPiB8IEFubm90YXRpb25UZXJtPEZpZWxkR3JvdXA+ID0gcmVzb2x2ZWRUYXJnZXQuYW5ub3RhdGlvbiBhc1xuXHRcdHwgQW5ub3RhdGlvblRlcm08SWRlbnRpZmljYXRpb24+XG5cdFx0fCBBbm5vdGF0aW9uVGVybTxGaWVsZEdyb3VwPjtcblx0Y29udmVydGVyQ29udGV4dCA9IHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQ7XG5cblx0ZnVuY3Rpb24gZ2V0RGF0YUZpZWxkc0Zyb21Bbm5vdGF0aW9ucyhmaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgZm9ybVBhcnRPZlByZXZpZXc6IFBhcnRPZlByZXZpZXcgfCB1bmRlZmluZWQpIHtcblx0XHRjb25zdCBzZW1hbnRpY09iamVjdEFubm90YXRpb25QYXRoID0gZ2V0U2VtYW50aWNPYmplY3RQYXRoKGNvbnZlcnRlckNvbnRleHQsIGZpZWxkKTtcblx0XHRpZiAoXG5cdFx0XHRmaWVsZC4kVHlwZSAhPT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uICYmXG5cdFx0XHRmaWVsZC4kVHlwZSAhPT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uICYmXG5cdFx0XHRmaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpICE9PSB0cnVlXG5cdFx0KSB7XG5cdFx0XHRmb3JtRWxlbWVudHMucHVzaCh7XG5cdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChmaWVsZCksXG5cdFx0XHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5Bbm5vdGF0aW9uLFxuXHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogYCR7Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSl9L2AsXG5cdFx0XHRcdHNlbWFudGljT2JqZWN0UGF0aDogc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uUGF0aCxcblx0XHRcdFx0Zm9ybWF0T3B0aW9uczogZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnNGb3JGb3JtKCksXG5cdFx0XHRcdGlzUGFydE9mUHJldmlldzogaXNGaWVsZFBhcnRPZlByZXZpZXcoZmllbGQsIGZvcm1QYXJ0T2ZQcmV2aWV3KVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0c3dpdGNoIChmb3JtQW5ub3RhdGlvbj8udGVybSkge1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuRmllbGRHcm91cDpcblx0XHRcdChmb3JtQW5ub3RhdGlvbiBhcyBBbm5vdGF0aW9uVGVybTxGaWVsZEdyb3VwPikuRGF0YS5mb3JFYWNoKChmaWVsZCkgPT5cblx0XHRcdFx0Z2V0RGF0YUZpZWxkc0Zyb21Bbm5vdGF0aW9ucyhmaWVsZCwgZmFjZXREZWZpbml0aW9uLmFubm90YXRpb25zPy5VST8uUGFydE9mUHJldmlldylcblx0XHRcdCk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLklkZW50aWZpY2F0aW9uOlxuXHRcdFx0KGZvcm1Bbm5vdGF0aW9uIGFzIEFubm90YXRpb25UZXJtPElkZW50aWZpY2F0aW9uPikuZm9yRWFjaCgoZmllbGQpID0+XG5cdFx0XHRcdGdldERhdGFGaWVsZHNGcm9tQW5ub3RhdGlvbnMoZmllbGQsIGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXcpXG5cdFx0XHQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5EYXRhUG9pbnQ6XG5cdFx0XHRmb3JtRWxlbWVudHMucHVzaCh7XG5cdFx0XHRcdC8vIGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChmb3JtQW5ub3RhdGlvbiksXG5cdFx0XHRcdGtleTogYERhdGFQb2ludDo6JHtmb3JtQW5ub3RhdGlvbi5xdWFsaWZpZXIgPyBmb3JtQW5ub3RhdGlvbi5xdWFsaWZpZXIgOiBcIlwifWAsXG5cdFx0XHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5Bbm5vdGF0aW9uLFxuXHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogYCR7Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGZvcm1Bbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSl9L2Bcblx0XHRcdH0pO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBDb21tdW5pY2F0aW9uQW5ub3RhdGlvblRlcm1zLkNvbnRhY3Q6XG5cdFx0XHRmb3JtRWxlbWVudHMucHVzaCh7XG5cdFx0XHRcdC8vIGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChmb3JtQW5ub3RhdGlvbiksXG5cdFx0XHRcdGtleTogYENvbnRhY3Q6OiR7Zm9ybUFubm90YXRpb24ucXVhbGlmaWVyID8gZm9ybUFubm90YXRpb24ucXVhbGlmaWVyIDogXCJcIn1gLFxuXHRcdFx0XHR0eXBlOiBGb3JtRWxlbWVudFR5cGUuQW5ub3RhdGlvbixcblx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGAke2NvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChmb3JtQW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUpfS9gXG5cdFx0XHR9KTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRicmVhaztcblx0fVxuXHRyZXR1cm4gZm9ybUVsZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUVsZW1lbnRzRnJvbU1hbmlmZXN0KFxuXHRmYWNldERlZmluaXRpb246IFJlZmVyZW5jZUZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUZvcm1FbGVtZW50PiB7XG5cdGNvbnN0IG1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGNvbnN0IG1hbmlmZXN0Rm9ybUNvbnRhaW5lcjogRm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvbiA9IG1hbmlmZXN0V3JhcHBlci5nZXRGb3JtQ29udGFpbmVyKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWUpO1xuXHRjb25zdCBmb3JtRWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUZvcm1FbGVtZW50PiA9IHt9O1xuXHRpZiAobWFuaWZlc3RGb3JtQ29udGFpbmVyPy5maWVsZHMpIHtcblx0XHRPYmplY3Qua2V5cyhtYW5pZmVzdEZvcm1Db250YWluZXI/LmZpZWxkcykuZm9yRWFjaCgoZmllbGRJZCkgPT4ge1xuXHRcdFx0Zm9ybUVsZW1lbnRzW2ZpZWxkSWRdID0ge1xuXHRcdFx0XHRrZXk6IGZpZWxkSWQsXG5cdFx0XHRcdGlkOiBgQ3VzdG9tRm9ybUVsZW1lbnQ6OiR7ZmllbGRJZH1gLFxuXHRcdFx0XHR0eXBlOiBGb3JtRWxlbWVudFR5cGUuRGVmYXVsdCxcblx0XHRcdFx0dGVtcGxhdGU6IG1hbmlmZXN0Rm9ybUNvbnRhaW5lci5maWVsZHNbZmllbGRJZF0udGVtcGxhdGUsXG5cdFx0XHRcdGxhYmVsOiBtYW5pZmVzdEZvcm1Db250YWluZXIuZmllbGRzW2ZpZWxkSWRdLmxhYmVsLFxuXHRcdFx0XHRwb3NpdGlvbjogbWFuaWZlc3RGb3JtQ29udGFpbmVyLmZpZWxkc1tmaWVsZElkXS5wb3NpdGlvbiB8fCB7XG5cdFx0XHRcdFx0cGxhY2VtZW50OiBQbGFjZW1lbnQuQWZ0ZXJcblx0XHRcdFx0fSxcblx0XHRcdFx0Zm9ybWF0T3B0aW9uczoge1xuXHRcdFx0XHRcdC4uLmdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpLFxuXHRcdFx0XHRcdC4uLm1hbmlmZXN0Rm9ybUNvbnRhaW5lci5maWVsZHNbZmllbGRJZF0uZm9ybWF0T3B0aW9uc1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBmb3JtRWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtQ29udGFpbmVyKFxuXHRmYWNldERlZmluaXRpb246IFJlZmVyZW5jZUZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFjdGlvbnM/OiBCYXNlQWN0aW9uW10gfCBDb252ZXJ0ZXJBY3Rpb25bXVxuKTogRm9ybUNvbnRhaW5lciB7XG5cdGNvbnN0IHNGb3JtQ29udGFpbmVySWQgPSBnZW5lcmF0ZShbeyBGYWNldDogZmFjZXREZWZpbml0aW9uIH1dKTtcblx0Y29uc3Qgc0Fubm90YXRpb25QYXRoID0gYC8ke2ZhY2V0RGVmaW5pdGlvbi5mdWxseVF1YWxpZmllZE5hbWV9YDtcblx0Y29uc3QgcmVzb2x2ZWRUYXJnZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWUpO1xuXHRjb25zdCBpc1Zpc2libGUgPSBjb21waWxlRXhwcmVzc2lvbihub3QoZXF1YWwodHJ1ZSwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbikpKSk7XG5cdGxldCBzRW50aXR5U2V0UGF0aCE6IHN0cmluZztcblx0Ly8gcmVzb2x2ZWRUYXJnZXQgZG9lc24ndCBoYXZlIGEgZW50aXR5U2V0IGluIGNhc2UgQ29udGFpbm1lbnRzIGFuZCBQYXJhbXRlcml6ZWQgc2VydmljZXMuXG5cdGlmIChcblx0XHRyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpICYmXG5cdFx0cmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKSAhPT0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKVxuXHQpIHtcblx0XHRzRW50aXR5U2V0UGF0aCA9IGdldFRhcmdldEVudGl0eVNldFBhdGgocmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkpO1xuXHR9IGVsc2UgaWYgKHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLnRhcmdldE9iamVjdD8uY29udGFpbnNUYXJnZXQgPT09IHRydWUpIHtcblx0XHRzRW50aXR5U2V0UGF0aCA9IGdldFRhcmdldE9iamVjdFBhdGgocmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCksIGZhbHNlKTtcblx0fVxuXHRjb25zdCBhRm9ybUVsZW1lbnRzID0gaW5zZXJ0Q3VzdG9tRWxlbWVudHMoXG5cdFx0Z2V0Rm9ybUVsZW1lbnRzRnJvbUFubm90YXRpb25zKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0Z2V0Rm9ybUVsZW1lbnRzRnJvbU1hbmlmZXN0KGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0eyBmb3JtYXRPcHRpb25zOiBcIm92ZXJ3cml0ZVwiIH1cblx0KTtcblxuXHRhY3Rpb25zID0gYWN0aW9ucyAhPT0gdW5kZWZpbmVkID8gYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLmZhY2V0TmFtZSA9PSBmYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKSA6IFtdO1xuXHRpZiAoYWN0aW9ucy5sZW5ndGggPT09IDApIHtcblx0XHRhY3Rpb25zID0gdW5kZWZpbmVkO1xuXHR9XG5cblx0Y29uc3Qgb0FjdGlvblNob3dEZXRhaWxzOiBCYXNlQWN0aW9uID0ge1xuXHRcdGlkOiBnZXRGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRChzRm9ybUNvbnRhaW5lcklkLCBcIlNob3dIaWRlRGV0YWlsc1wiKSxcblx0XHRrZXk6IFwiU3RhbmRhcmRBY3Rpb246OlNob3dIaWRlRGV0YWlsc1wiLFxuXHRcdHRleHQ6IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRlcXVhbChwYXRoSW5Nb2RlbChcInNob3dEZXRhaWxzXCIsIFwiaW50ZXJuYWxcIiksIHRydWUpLFxuXHRcdFx0XHRwYXRoSW5Nb2RlbChcIlRfQ09NTU9OX09CSkVDVF9QQUdFX0hJREVfRk9STV9DT05UQUlORVJfREVUQUlMU1wiLCBcInNhcC5mZS5pMThuXCIpLFxuXHRcdFx0XHRwYXRoSW5Nb2RlbChcIlRfQ09NTU9OX09CSkVDVF9QQUdFX1NIT1dfRk9STV9DT05UQUlORVJfREVUQUlMU1wiLCBcInNhcC5mZS5pMThuXCIpXG5cdFx0XHQpXG5cdFx0KSxcblx0XHR0eXBlOiBBY3Rpb25UeXBlLlNob3dGb3JtRGV0YWlscyxcblx0XHRwcmVzczogXCJGb3JtQ29udGFpbmVyUnVudGltZS50b2dnbGVEZXRhaWxzXCJcblx0fTtcblxuXHRpZiAoXG5cdFx0ZmFjZXREZWZpbml0aW9uLmFubm90YXRpb25zPy5VST8uUGFydE9mUHJldmlldz8udmFsdWVPZigpICE9PSBmYWxzZSAmJlxuXHRcdGFGb3JtRWxlbWVudHMuc29tZSgob0Zvcm1FbGVtZW50KSA9PiBvRm9ybUVsZW1lbnQuaXNQYXJ0T2ZQcmV2aWV3ID09PSBmYWxzZSlcblx0KSB7XG5cdFx0aWYgKGFjdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0YWN0aW9ucy5wdXNoKG9BY3Rpb25TaG93RGV0YWlscyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFjdGlvbnMgPSBbb0FjdGlvblNob3dEZXRhaWxzXTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdGlkOiBzRm9ybUNvbnRhaW5lcklkLFxuXHRcdGZvcm1FbGVtZW50czogYUZvcm1FbGVtZW50cyxcblx0XHRhbm5vdGF0aW9uUGF0aDogc0Fubm90YXRpb25QYXRoLFxuXHRcdGlzVmlzaWJsZTogaXNWaXNpYmxlLFxuXHRcdGVudGl0eVNldDogc0VudGl0eVNldFBhdGgsXG5cdFx0YWN0aW9uczogYWN0aW9uc1xuXHR9O1xufVxuXG5mdW5jdGlvbiBnZXRGb3JtQ29udGFpbmVyc0ZvckNvbGxlY3Rpb24oXG5cdGZhY2V0RGVmaW5pdGlvbjogQ29sbGVjdGlvbkZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFjdGlvbnM/OiBCYXNlQWN0aW9uW10gfCBDb252ZXJ0ZXJBY3Rpb25bXVxuKTogRm9ybUNvbnRhaW5lcltdIHtcblx0Y29uc3QgZm9ybUNvbnRhaW5lcnM6IEZvcm1Db250YWluZXJbXSA9IFtdO1xuXHRmYWNldERlZmluaXRpb24uRmFjZXRzPy5mb3JFYWNoKChmYWNldCkgPT4ge1xuXHRcdC8vIElnbm9yZSBsZXZlbCAzIGNvbGxlY3Rpb24gZmFjZXRcblx0XHRpZiAoZmFjZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRmb3JtQ29udGFpbmVycy5wdXNoKGdldEZvcm1Db250YWluZXIoZmFjZXQgYXMgUmVmZXJlbmNlRmFjZXRUeXBlcywgY29udmVydGVyQ29udGV4dCwgYWN0aW9ucykpO1xuXHR9KTtcblx0cmV0dXJuIGZvcm1Db250YWluZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZWZlcmVuY2VGYWNldChmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMpOiBmYWNldERlZmluaXRpb24gaXMgUmVmZXJlbmNlRmFjZXRUeXBlcyB7XG5cdHJldHVybiBmYWNldERlZmluaXRpb24uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybURlZmluaXRpb24oXG5cdGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyxcblx0aXNWaXNpYmxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbixcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0YWN0aW9ucz86IEJhc2VBY3Rpb25bXSB8IENvbnZlcnRlckFjdGlvbltdXG4pOiBGb3JtRGVmaW5pdGlvbiB7XG5cdHN3aXRjaCAoZmFjZXREZWZpbml0aW9uLiRUeXBlKSB7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXQ6XG5cdFx0XHQvLyBLZWVwIG9ubHkgdmFsaWQgY2hpbGRyZW5cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGlkOiBnZXRGb3JtSUQoeyBGYWNldDogZmFjZXREZWZpbml0aW9uIH0pLFxuXHRcdFx0XHR1c2VGb3JtQ29udGFpbmVyTGFiZWxzOiB0cnVlLFxuXHRcdFx0XHRoYXNGYWNldHNOb3RQYXJ0T2ZQcmV2aWV3OiBmYWNldERlZmluaXRpb24uRmFjZXRzLnNvbWUoXG5cdFx0XHRcdFx0KGNoaWxkRmFjZXQpID0+IGNoaWxkRmFjZXQuYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlXG5cdFx0XHRcdCksXG5cdFx0XHRcdGZvcm1Db250YWluZXJzOiBnZXRGb3JtQ29udGFpbmVyc0ZvckNvbGxlY3Rpb24oZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25zKSxcblx0XHRcdFx0aXNWaXNpYmxlOiBpc1Zpc2libGVcblx0XHRcdH07XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldDpcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGlkOiBnZXRGb3JtSUQoeyBGYWNldDogZmFjZXREZWZpbml0aW9uIH0pLFxuXHRcdFx0XHR1c2VGb3JtQ29udGFpbmVyTGFiZWxzOiBmYWxzZSxcblx0XHRcdFx0aGFzRmFjZXRzTm90UGFydE9mUHJldmlldzogZmFjZXREZWZpbml0aW9uLmFubm90YXRpb25zPy5VST8uUGFydE9mUHJldmlldz8udmFsdWVPZigpID09PSBmYWxzZSxcblx0XHRcdFx0Zm9ybUNvbnRhaW5lcnM6IFtnZXRGb3JtQ29udGFpbmVyKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCwgYWN0aW9ucyldLFxuXHRcdFx0XHRpc1Zpc2libGU6IGlzVmlzaWJsZVxuXHRcdFx0fTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGNyZWF0ZSBmb3JtIGJhc2VkIG9uIFJlZmVyZW5jZVVSTEZhY2V0XCIpO1xuXHR9XG59XG4iXX0=
|
|
@@ -1,41 +1,35 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import type { AnnotationTerm } from "@sap-ux/vocabularies-types";
|
|
2
|
+
import { CommunicationAnnotationTerms } from "@sap-ux/vocabularies-types/vocabularies/Communication";
|
|
3
|
+
import type {
|
|
3
4
|
CollectionFacetTypes,
|
|
4
|
-
CommunicationAnnotationTerms,
|
|
5
5
|
DataFieldAbstractTypes,
|
|
6
6
|
FacetTypes,
|
|
7
7
|
FieldGroup,
|
|
8
8
|
Identification,
|
|
9
9
|
PartOfPreview,
|
|
10
|
-
ReferenceFacetTypes
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
} from "@sap-ux/vocabularies-types";
|
|
10
|
+
ReferenceFacetTypes
|
|
11
|
+
} from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
12
|
+
import { UIAnnotationTerms, UIAnnotationTypes } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
14
13
|
import { getSemanticObjectPath } from "sap/fe/core/converters/annotations/DataField";
|
|
15
|
-
import { BaseAction, ConverterAction } from "sap/fe/core/converters/controls/Common/Action";
|
|
16
|
-
import {
|
|
17
|
-
|
|
18
|
-
bindingExpression,
|
|
19
|
-
BindingExpression,
|
|
20
|
-
compileBinding,
|
|
21
|
-
equal,
|
|
22
|
-
ifElse,
|
|
23
|
-
not
|
|
24
|
-
} from "sap/fe/core/helpers/BindingExpression";
|
|
14
|
+
import type { BaseAction, ConverterAction } from "sap/fe/core/converters/controls/Common/Action";
|
|
15
|
+
import type { CompiledBindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
|
|
16
|
+
import { compileExpression, equal, getExpressionFromAnnotation, ifElse, not, pathInModel } from "sap/fe/core/helpers/BindingToolkit";
|
|
25
17
|
import { getTargetEntitySetPath, getTargetObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
26
18
|
import { generate } from "../../../helpers/StableIdHelper";
|
|
27
|
-
import ConverterContext from "../../ConverterContext";
|
|
28
|
-
import { ConfigurableObject, CustomElement
|
|
29
|
-
import {
|
|
19
|
+
import type ConverterContext from "../../ConverterContext";
|
|
20
|
+
import type { ConfigurableObject, CustomElement } from "../../helpers/ConfigurableObject";
|
|
21
|
+
import { insertCustomElements, Placement } from "../../helpers/ConfigurableObject";
|
|
22
|
+
import { getFormID, getFormStandardActionButtonID } from "../../helpers/ID";
|
|
30
23
|
import { KeyHelper } from "../../helpers/Key";
|
|
31
|
-
import {
|
|
24
|
+
import type { FormatOptionsType, FormManifestConfiguration } from "../../ManifestSettings";
|
|
25
|
+
import { ActionType } from "../../ManifestSettings";
|
|
32
26
|
|
|
33
27
|
export type FormDefinition = {
|
|
34
28
|
id: string;
|
|
35
29
|
useFormContainerLabels: boolean;
|
|
36
30
|
hasFacetsNotPartOfPreview: boolean;
|
|
37
31
|
formContainers: FormContainer[];
|
|
38
|
-
isVisible:
|
|
32
|
+
isVisible: CompiledBindingToolkitExpression;
|
|
39
33
|
};
|
|
40
34
|
|
|
41
35
|
export enum FormElementType {
|
|
@@ -47,7 +41,7 @@ export type BaseFormElement = ConfigurableObject & {
|
|
|
47
41
|
id?: string;
|
|
48
42
|
type: FormElementType;
|
|
49
43
|
label?: string;
|
|
50
|
-
visible?:
|
|
44
|
+
visible?: CompiledBindingToolkitExpression;
|
|
51
45
|
formatOptions?: FormatOptionsType;
|
|
52
46
|
};
|
|
53
47
|
|
|
@@ -72,7 +66,7 @@ type FormContainer = {
|
|
|
72
66
|
id?: string;
|
|
73
67
|
formElements: FormElement[];
|
|
74
68
|
annotationPath: string;
|
|
75
|
-
isVisible:
|
|
69
|
+
isVisible: CompiledBindingToolkitExpression;
|
|
76
70
|
entitySet?: string;
|
|
77
71
|
actions?: ConverterAction[] | BaseAction[];
|
|
78
72
|
};
|
|
@@ -80,7 +74,7 @@ type FormContainer = {
|
|
|
80
74
|
/**
|
|
81
75
|
* Returns default format options for text fields on a form.
|
|
82
76
|
*
|
|
83
|
-
* @returns
|
|
77
|
+
* @returns Collection of format options with default values
|
|
84
78
|
*/
|
|
85
79
|
function getDefaultFormatOptionsForForm(): FormatOptionsType {
|
|
86
80
|
return {
|
|
@@ -115,7 +109,7 @@ function getFormElementsFromAnnotations(facetDefinition: ReferenceFacetTypes, co
|
|
|
115
109
|
formElements.push({
|
|
116
110
|
key: KeyHelper.generateKeyFromDataField(field),
|
|
117
111
|
type: FormElementType.Annotation,
|
|
118
|
-
annotationPath: converterContext.getEntitySetBasedAnnotationPath(field.fullyQualifiedName)
|
|
112
|
+
annotationPath: `${converterContext.getEntitySetBasedAnnotationPath(field.fullyQualifiedName)}/`,
|
|
119
113
|
semanticObjectPath: semanticObjectAnnotationPath,
|
|
120
114
|
formatOptions: getDefaultFormatOptionsForForm(),
|
|
121
115
|
isPartOfPreview: isFieldPartOfPreview(field, formPartOfPreview)
|
|
@@ -137,17 +131,17 @@ function getFormElementsFromAnnotations(facetDefinition: ReferenceFacetTypes, co
|
|
|
137
131
|
case UIAnnotationTerms.DataPoint:
|
|
138
132
|
formElements.push({
|
|
139
133
|
// key: KeyHelper.generateKeyFromDataField(formAnnotation),
|
|
140
|
-
key:
|
|
134
|
+
key: `DataPoint::${formAnnotation.qualifier ? formAnnotation.qualifier : ""}`,
|
|
141
135
|
type: FormElementType.Annotation,
|
|
142
|
-
annotationPath: converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName)
|
|
136
|
+
annotationPath: `${converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName)}/`
|
|
143
137
|
});
|
|
144
138
|
break;
|
|
145
139
|
case CommunicationAnnotationTerms.Contact:
|
|
146
140
|
formElements.push({
|
|
147
141
|
// key: KeyHelper.generateKeyFromDataField(formAnnotation),
|
|
148
|
-
key:
|
|
142
|
+
key: `Contact::${formAnnotation.qualifier ? formAnnotation.qualifier : ""}`,
|
|
149
143
|
type: FormElementType.Annotation,
|
|
150
|
-
annotationPath: converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName)
|
|
144
|
+
annotationPath: `${converterContext.getEntitySetBasedAnnotationPath(formAnnotation.fullyQualifiedName)}/`
|
|
151
145
|
});
|
|
152
146
|
break;
|
|
153
147
|
default:
|
|
@@ -167,7 +161,7 @@ export function getFormElementsFromManifest(
|
|
|
167
161
|
Object.keys(manifestFormContainer?.fields).forEach((fieldId) => {
|
|
168
162
|
formElements[fieldId] = {
|
|
169
163
|
key: fieldId,
|
|
170
|
-
id:
|
|
164
|
+
id: `CustomFormElement::${fieldId}`,
|
|
171
165
|
type: FormElementType.Default,
|
|
172
166
|
template: manifestFormContainer.fields[fieldId].template,
|
|
173
167
|
label: manifestFormContainer.fields[fieldId].label,
|
|
@@ -190,9 +184,9 @@ export function getFormContainer(
|
|
|
190
184
|
actions?: BaseAction[] | ConverterAction[]
|
|
191
185
|
): FormContainer {
|
|
192
186
|
const sFormContainerId = generate([{ Facet: facetDefinition }]);
|
|
193
|
-
const sAnnotationPath =
|
|
187
|
+
const sAnnotationPath = `/${facetDefinition.fullyQualifiedName}`;
|
|
194
188
|
const resolvedTarget = converterContext.getEntityTypeAnnotation(facetDefinition.Target.value);
|
|
195
|
-
const isVisible =
|
|
189
|
+
const isVisible = compileExpression(not(equal(true, getExpressionFromAnnotation(facetDefinition.annotations?.UI?.Hidden))));
|
|
196
190
|
let sEntitySetPath!: string;
|
|
197
191
|
// resolvedTarget doesn't have a entitySet in case Containments and Paramterized services.
|
|
198
192
|
if (
|
|
@@ -215,13 +209,13 @@ export function getFormContainer(
|
|
|
215
209
|
}
|
|
216
210
|
|
|
217
211
|
const oActionShowDetails: BaseAction = {
|
|
218
|
-
id:
|
|
212
|
+
id: getFormStandardActionButtonID(sFormContainerId, "ShowHideDetails"),
|
|
219
213
|
key: "StandardAction::ShowHideDetails",
|
|
220
|
-
text:
|
|
214
|
+
text: compileExpression(
|
|
221
215
|
ifElse(
|
|
222
|
-
equal(
|
|
223
|
-
|
|
224
|
-
|
|
216
|
+
equal(pathInModel("showDetails", "internal"), true),
|
|
217
|
+
pathInModel("T_COMMON_OBJECT_PAGE_HIDE_FORM_CONTAINER_DETAILS", "sap.fe.i18n"),
|
|
218
|
+
pathInModel("T_COMMON_OBJECT_PAGE_SHOW_FORM_CONTAINER_DETAILS", "sap.fe.i18n")
|
|
225
219
|
)
|
|
226
220
|
),
|
|
227
221
|
type: ActionType.ShowFormDetails,
|
|
@@ -271,15 +265,15 @@ export function isReferenceFacet(facetDefinition: FacetTypes): facetDefinition i
|
|
|
271
265
|
|
|
272
266
|
export function createFormDefinition(
|
|
273
267
|
facetDefinition: FacetTypes,
|
|
274
|
-
isVisible:
|
|
268
|
+
isVisible: CompiledBindingToolkitExpression,
|
|
275
269
|
converterContext: ConverterContext,
|
|
276
270
|
actions?: BaseAction[] | ConverterAction[]
|
|
277
271
|
): FormDefinition {
|
|
278
272
|
switch (facetDefinition.$Type) {
|
|
279
273
|
case UIAnnotationTypes.CollectionFacet:
|
|
280
274
|
// Keep only valid children
|
|
281
|
-
|
|
282
|
-
id:
|
|
275
|
+
return {
|
|
276
|
+
id: getFormID({ Facet: facetDefinition }),
|
|
283
277
|
useFormContainerLabels: true,
|
|
284
278
|
hasFacetsNotPartOfPreview: facetDefinition.Facets.some(
|
|
285
279
|
(childFacet) => childFacet.annotations?.UI?.PartOfPreview?.valueOf() === false
|
|
@@ -287,16 +281,14 @@ export function createFormDefinition(
|
|
|
287
281
|
formContainers: getFormContainersForCollection(facetDefinition, converterContext, actions),
|
|
288
282
|
isVisible: isVisible
|
|
289
283
|
};
|
|
290
|
-
return formCollectionDefinition;
|
|
291
284
|
case UIAnnotationTypes.ReferenceFacet:
|
|
292
|
-
|
|
293
|
-
id:
|
|
285
|
+
return {
|
|
286
|
+
id: getFormID({ Facet: facetDefinition }),
|
|
294
287
|
useFormContainerLabels: false,
|
|
295
288
|
hasFacetsNotPartOfPreview: facetDefinition.annotations?.UI?.PartOfPreview?.valueOf() === false,
|
|
296
289
|
formContainers: [getFormContainer(facetDefinition, converterContext, actions)],
|
|
297
290
|
isVisible: isVisible
|
|
298
291
|
};
|
|
299
|
-
return formDefinition;
|
|
300
292
|
default:
|
|
301
293
|
throw new Error("Cannot create form based on ReferenceURLFacet");
|
|
302
294
|
}
|