@sapui5/sap.fe.core 1.111.0 → 1.112.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 +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime-dbg.js +4 -4
- package/src/sap/fe/core/ActionRuntime.js +1 -1
- package/src/sap/fe/core/ActionRuntime.js.map +1 -1
- package/src/sap/fe/core/ActionRuntime.ts +11 -11
- package/src/sap/fe/core/AppComponent-dbg.js +27 -5
- package/src/sap/fe/core/AppComponent.js +1 -1
- package/src/sap/fe/core/AppComponent.js.map +1 -1
- package/src/sap/fe/core/AppComponent.ts +58 -3
- package/src/sap/fe/core/AppStateHandler-dbg.js +5 -2
- package/src/sap/fe/core/AppStateHandler.js +1 -1
- package/src/sap/fe/core/AppStateHandler.js.map +1 -1
- package/src/sap/fe/core/AppStateHandler.ts +10 -1
- package/src/sap/fe/core/BaseController-dbg.js +1 -1
- package/src/sap/fe/core/BaseController.ts +2 -1
- package/src/sap/fe/core/CommonUtils-dbg.js +152 -365
- package/src/sap/fe/core/CommonUtils.js +1 -1
- package/src/sap/fe/core/CommonUtils.js.map +1 -1
- package/src/sap/fe/core/CommonUtils.ts +201 -478
- package/src/sap/fe/core/ExtensionAPI-dbg.js +2 -1
- package/src/sap/fe/core/ExtensionAPI.js +1 -1
- package/src/sap/fe/core/ExtensionAPI.js.map +1 -1
- package/src/sap/fe/core/ExtensionAPI.ts +9 -1
- package/src/sap/fe/core/PageController-dbg.js +26 -31
- package/src/sap/fe/core/PageController.js +1 -1
- package/src/sap/fe/core/PageController.js.map +1 -1
- package/src/sap/fe/core/PageController.ts +17 -3
- package/src/sap/fe/core/ResourceModel-dbg.js +71 -0
- package/src/sap/fe/core/ResourceModel.js +6 -0
- package/src/sap/fe/core/ResourceModel.js.map +1 -0
- package/src/sap/fe/core/ResourceModel.ts +67 -0
- package/src/sap/fe/core/TemplateComponent-dbg.js +1 -1
- package/src/sap/fe/core/TemplateComponent.ts +1 -0
- package/src/sap/fe/core/TemplateModel-dbg.js +1 -1
- package/src/sap/fe/core/TemplateModel.ts +6 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel-dbg.js +5 -7
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +6 -5
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase-dbg.js +163 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +6 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +169 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport-dbg.js +88 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js +6 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.ts +147 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor-dbg.js +905 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js +21 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/{BuildingBlockRuntime.ts → BuildingBlockTemplateProcessor.ts} +279 -335
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock-dbg.js +79 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js +15 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.ts +68 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment-dbg.js +162 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js +6 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.ts +181 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo-dbg.js +4 -2
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +1 -1
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +5 -3
- package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +890 -220
- package/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +974 -239
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +24 -34
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +71 -61
- package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +14 -17
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +23 -17
- package/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +1 -1
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -0
- package/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +3 -3
- package/src/sap/fe/core/controllerextensions/MassEdit.js +1 -1
- package/src/sap/fe/core/controllerextensions/MassEdit.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +2 -2
- package/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +2 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +2 -0
- package/src/sap/fe/core/controllerextensions/PageReady-dbg.js +1 -1
- package/src/sap/fe/core/controllerextensions/PageReady.ts +24 -0
- package/src/sap/fe/core/controllerextensions/Paginator-dbg.js +2 -1
- package/src/sap/fe/core/controllerextensions/Paginator.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/Paginator.ts +7 -0
- package/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +1 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +8 -0
- package/src/sap/fe/core/controllerextensions/Share-dbg.js +8 -1
- package/src/sap/fe/core/controllerextensions/Share.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/Share.ts +11 -0
- package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +14 -13
- package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +27 -27
- package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +17 -8
- package/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
- package/src/sap/fe/core/controllerextensions/ViewState.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/ViewState.ts +35 -14
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase-dbg.js +6 -5
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +7 -4
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +285 -82
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +326 -89
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +23 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +32 -3
- package/src/sap/fe/core/controllerextensions/collaboration/Manage-dbg.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +2 -3
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +17 -3
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block-dbg.js +65 -34
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +1 -1
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +33 -18
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +45 -31
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +52 -42
- package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +44 -49
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +43 -63
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal-dbg.js +77 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js +6 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.ts +114 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade-dbg.js +1505 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +6 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +1985 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations-dbg.js +3 -1415
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +2 -1921
- package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +10 -11
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +9 -13
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +43 -41
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +1 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +44 -47
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher-dbg.js +12 -1
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +19 -0
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy-dbg.js +12 -13
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +1 -1
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +32 -13
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +4 -1
- package/src/sap/fe/core/controls/CommandExecution-dbg.js +16 -5
- package/src/sap/fe/core/controls/CommandExecution.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js.map +1 -1
- package/src/sap/fe/core/controls/CommandExecution.ts +15 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +3 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js.map +1 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +4 -1
- package/src/sap/fe/core/controls/FilterBar-dbg.js +1 -1
- package/src/sap/fe/core/controls/FilterBar.ts +5 -0
- package/src/sap/fe/core/controls/FormElementWrapper-dbg.js +1 -1
- package/src/sap/fe/core/controls/FormElementWrapper.ts +3 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +1 -1
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +7 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +4 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +10 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +4 -3
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +1 -1
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js.map +1 -1
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +3 -2
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +0 -1
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +2 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +6 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +1 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js.map +1 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +5 -0
- package/src/sap/fe/core/converters/ConverterContext-dbg.js +1 -1
- package/src/sap/fe/core/converters/ConverterContext.ts +2 -1
- package/src/sap/fe/core/converters/ManifestSettings-dbg.js +1 -8
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.js.map +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +15 -6
- package/src/sap/fe/core/converters/ManifestWrapper-dbg.js +17 -1
- package/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
- package/src/sap/fe/core/converters/ManifestWrapper.js.map +1 -1
- package/src/sap/fe/core/converters/ManifestWrapper.ts +16 -0
- package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +61 -49
- package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.js.map +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.ts +65 -51
- package/src/sap/fe/core/converters/TemplateConverter-dbg.js +2 -1
- package/src/sap/fe/core/converters/TemplateConverter.js.map +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
- package/src/sap/fe/core/converters/annotations/DataField-dbg.js +65 -16
- package/src/sap/fe/core/converters/annotations/DataField.js +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.js.map +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.ts +62 -18
- package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +1010 -957
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
- package/src/sap/fe/core/converters/common/AnnotationConverter.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action-dbg.js +8 -8
- package/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action.ts +28 -26
- package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +95 -33
- package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +133 -49
- package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +99 -62
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +140 -75
- package/src/sap/fe/core/converters/controls/Common/Form-dbg.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Form.ts +3 -3
- package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +6 -6
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +15 -15
- package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +97 -69
- package/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Table.ts +161 -137
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +3 -3
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +10 -9
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +48 -44
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +130 -86
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +34 -26
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +62 -45
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar-dbg.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet-dbg.js +6 -6
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +5 -8
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +34 -13
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +54 -20
- package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +3 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +8 -0
- package/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +7 -6
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +19 -10
- package/src/sap/fe/core/converters/helpers/DataFieldHelper-dbg.js +1 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +7 -2
- package/src/sap/fe/core/converters/helpers/ID-dbg.js +1 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +2 -1
- package/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +9 -8
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
- package/src/sap/fe/core/converters/helpers/IssueManager.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/IssueManager.ts +8 -7
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +8 -7
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js.map +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +9 -6
- package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +25 -33
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.js.map +1 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +35 -35
- package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +11 -4
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js.map +1 -1
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +7 -1
- package/src/sap/fe/core/formatters/FPMFormatter-dbg.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.ts +1 -1
- package/src/sap/fe/core/formatters/FiscalFormat-dbg.js +2 -2
- package/src/sap/fe/core/formatters/FiscalFormat.ts +6 -1
- package/src/sap/fe/core/formatters/TableFormatter-dbg.js +2 -2
- package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
- package/src/sap/fe/core/formatters/TableFormatter.js.map +1 -1
- package/src/sap/fe/core/formatters/TableFormatter.ts +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +5 -5
- package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.js.map +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.ts +6 -4
- package/src/sap/fe/core/fpm/Component-dbg.js +1 -1
- package/src/sap/fe/core/fpm/Component.ts +1 -0
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +2 -2
- package/src/sap/fe/core/helpers/AppStartupHelper.js +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +6 -6
- package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.ts +8 -8
- package/src/sap/fe/core/helpers/ClassSupport-dbg.js +1 -1
- package/src/sap/fe/core/helpers/ClassSupport.js.map +1 -1
- package/src/sap/fe/core/helpers/ClassSupport.ts +1 -0
- package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +93 -62
- package/src/sap/fe/core/helpers/DeleteHelper.js +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.ts +140 -185
- package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +20 -18
- package/src/sap/fe/core/helpers/MassEditHelper.js +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.ts +22 -23
- package/src/sap/fe/core/helpers/MessageStrip-dbg.js +4 -5
- package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
- package/src/sap/fe/core/helpers/MessageStrip.js.map +1 -1
- package/src/sap/fe/core/helpers/MessageStrip.ts +4 -4
- package/src/sap/fe/core/helpers/MetaModelFunction-dbg.js +354 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.js +6 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.js.map +1 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +408 -0
- package/src/sap/fe/core/helpers/ModelHelper-dbg.js +13 -13
- package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +13 -13
- package/src/sap/fe/core/helpers/PasteHelper-dbg.js +5 -5
- package/src/sap/fe/core/helpers/PasteHelper.js +1 -1
- package/src/sap/fe/core/helpers/PasteHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/PasteHelper.ts +6 -10
- package/src/sap/fe/core/helpers/ResourceModelHelper-dbg.js +26 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper.js +6 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper.ts +19 -0
- package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +93 -18
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.js.map +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +70 -17
- package/src/sap/fe/core/helpers/SemanticKeyHelper-dbg.js +2 -2
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
- package/src/sap/fe/core/helpers/Synchronization-dbg.js +1 -1
- package/src/sap/fe/core/helpers/Synchronization.ts +2 -0
- package/src/sap/fe/core/helpers/TypeGuards-dbg.js +5 -1
- package/src/sap/fe/core/helpers/TypeGuards.js +1 -1
- package/src/sap/fe/core/helpers/TypeGuards.js.map +1 -1
- package/src/sap/fe/core/helpers/TypeGuards.ts +12 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader-dbg.js +2 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js.map +1 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +6 -2
- package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +3 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents-dbg.js +3 -3
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js.map +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +1 -1
- package/src/sap/fe/core/library-dbg.js +2 -2
- package/src/sap/fe/core/library-preload.js +127 -125
- package/src/sap/fe/core/library-preload.js.map +1 -1
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/library.ts +7 -0
- package/src/sap/fe/core/manifest.json +1 -1
- package/src/sap/fe/core/messagebundle.properties +33 -0
- package/src/sap/fe/core/messagebundle_ar.properties +12 -10
- package/src/sap/fe/core/messagebundle_bg.properties +11 -9
- package/src/sap/fe/core/messagebundle_ca.properties +11 -9
- package/src/sap/fe/core/messagebundle_cs.properties +11 -9
- package/src/sap/fe/core/messagebundle_cy.properties +11 -9
- package/src/sap/fe/core/messagebundle_da.properties +11 -9
- package/src/sap/fe/core/messagebundle_de.properties +3 -1
- package/src/sap/fe/core/messagebundle_el.properties +11 -9
- package/src/sap/fe/core/messagebundle_en.properties +3 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +2 -0
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +2 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +20 -0
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +21 -3
- package/src/sap/fe/core/messagebundle_es.properties +11 -9
- package/src/sap/fe/core/messagebundle_es_MX.properties +11 -9
- package/src/sap/fe/core/messagebundle_et.properties +11 -9
- package/src/sap/fe/core/messagebundle_fi.properties +11 -9
- package/src/sap/fe/core/messagebundle_fr.properties +11 -9
- package/src/sap/fe/core/messagebundle_fr_CA.properties +3 -1
- package/src/sap/fe/core/messagebundle_hi.properties +2 -0
- package/src/sap/fe/core/messagebundle_hr.properties +11 -9
- package/src/sap/fe/core/messagebundle_hu.properties +11 -9
- package/src/sap/fe/core/messagebundle_id.properties +3 -1
- package/src/sap/fe/core/messagebundle_it.properties +11 -9
- package/src/sap/fe/core/messagebundle_iw.properties +11 -9
- package/src/sap/fe/core/messagebundle_ja.properties +11 -9
- package/src/sap/fe/core/messagebundle_kk.properties +11 -9
- package/src/sap/fe/core/messagebundle_ko.properties +2 -0
- package/src/sap/fe/core/messagebundle_lt.properties +11 -9
- package/src/sap/fe/core/messagebundle_lv.properties +2 -0
- package/src/sap/fe/core/messagebundle_ms.properties +12 -10
- package/src/sap/fe/core/messagebundle_nl.properties +12 -10
- package/src/sap/fe/core/messagebundle_no.properties +11 -9
- package/src/sap/fe/core/messagebundle_pl.properties +2 -0
- package/src/sap/fe/core/messagebundle_pt.properties +11 -9
- package/src/sap/fe/core/messagebundle_pt_PT.properties +11 -9
- package/src/sap/fe/core/messagebundle_ro.properties +3 -1
- package/src/sap/fe/core/messagebundle_ru.properties +3 -1
- package/src/sap/fe/core/messagebundle_sh.properties +11 -9
- package/src/sap/fe/core/messagebundle_sk.properties +11 -9
- package/src/sap/fe/core/messagebundle_sl.properties +11 -9
- package/src/sap/fe/core/messagebundle_sv.properties +2 -0
- package/src/sap/fe/core/messagebundle_th.properties +11 -9
- package/src/sap/fe/core/messagebundle_tr.properties +11 -9
- package/src/sap/fe/core/messagebundle_uk.properties +11 -9
- package/src/sap/fe/core/messagebundle_vi.properties +12 -10
- package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -0
- package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -0
- package/src/sap/fe/core/operationsHelper-dbg.js +70 -44
- package/src/sap/fe/core/operationsHelper.js +1 -1
- package/src/sap/fe/core/operationsHelper.js.map +1 -1
- package/src/sap/fe/core/operationsHelper.ts +88 -63
- package/src/sap/fe/core/rootView/Fcl-dbg.controller.js +1 -1
- package/src/sap/fe/core/rootView/Fcl.controller.ts +10 -0
- package/src/sap/fe/core/rootView/NavContainer-dbg.controller.js +2 -2
- package/src/sap/fe/core/rootView/NavContainer.controller.js +1 -1
- package/src/sap/fe/core/rootView/NavContainer.controller.js.map +1 -1
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +5 -3
- package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +4 -3
- package/src/sap/fe/core/rootView/RootViewBaseController.js +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.js.map +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +15 -5
- package/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +15 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +4 -1
- package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +9 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +19 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +2 -2
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +10 -3
- package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +3 -3
- package/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +29 -3
- package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/ShellServicesFactory.ts +14 -2
- package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +448 -279
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +502 -333
- package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +18 -5
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +41 -12
- package/src/sap/fe/core/support/Diagnostics-dbg.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.ts +5 -0
- package/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +185 -86
- package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.js.map +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +190 -82
- package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +2 -3
- package/src/sap/fe/core/templating/EntitySetHelper.js +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js.map +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.ts +1 -3
- package/src/sap/fe/core/templating/FilterHelper-dbg.js +3 -3
- package/src/sap/fe/core/templating/FilterHelper.js +1 -1
- package/src/sap/fe/core/templating/FilterHelper.js.map +1 -1
- package/src/sap/fe/core/templating/FilterHelper.ts +5 -3
- package/src/sap/fe/core/templating/PropertyHelper-dbg.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.ts +2 -2
- package/src/sap/fe/core/templating/UIFormatters-dbg.js +1 -1
- package/src/sap/fe/core/templating/UIFormatters.ts +4 -0
- package/src/sap/fe/core/type/DateTimeWithTimezone-dbg.js +1 -1
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +2 -0
- package/src/sap/fe/core/type/FiscalDate-dbg.js +2 -2
- package/src/sap/fe/core/type/FiscalDate.js.map +1 -1
- package/src/sap/fe/core/type/FiscalDate.ts +2 -1
- package/src/sap/fe/core/type/TypeUtil-dbg.js +5 -10
- package/src/sap/fe/core/type/TypeUtil.js +1 -1
- package/src/sap/fe/core/type/TypeUtil.js.map +1 -1
- package/src/sap/fe/core/type/TypeUtil.ts +3 -6
- package/src/sap/fe/core/buildingBlocks/BuildingBlock-dbg.js +0 -410
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +0 -15
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js.map +0 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +0 -536
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment-dbg.js +0 -44
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +0 -6
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js.map +0 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +0 -14
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime-dbg.js +0 -932
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +0 -19
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js.map +0 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +0 -711
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +0 -6
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js.map +0 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +0 -863
- package/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +0 -151
- package/src/sap/fe/core/controls/ConditionalWrapper.js +0 -6
- package/src/sap/fe/core/controls/ConditionalWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +0 -88
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper-dbg.js +0 -330
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +0 -6
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +0 -292
- package/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +0 -126
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +0 -6
- package/src/sap/fe/core/controls/CustomQuickViewPage.js.map +0 -1
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +0 -105
- package/src/sap/fe/core/controls/FieldWrapper-dbg.js +0 -194
- package/src/sap/fe/core/controls/FieldWrapper.js +0 -6
- package/src/sap/fe/core/controls/FieldWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/FieldWrapper.ts +0 -121
- package/src/sap/fe/core/controls/FileWrapper-dbg.js +0 -280
- package/src/sap/fe/core/controls/FileWrapper.js +0 -6
- package/src/sap/fe/core/controls/FileWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/FileWrapper.ts +0 -202
- package/src/sap/fe/core/helpers/SideEffectsHelper-dbg.js +0 -141
- package/src/sap/fe/core/helpers/SideEffectsHelper.js +0 -6
- package/src/sap/fe/core/helpers/SideEffectsHelper.js.map +0 -1
- package/src/sap/fe/core/helpers/SideEffectsHelper.ts +0 -129
|
@@ -435,9 +435,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/macros
|
|
|
435
435
|
aParams = aParams.length > 0 ? aParams : oSource && oSource.getSelectedKey() && oSource.getSelectedKey().split("/");
|
|
436
436
|
let oDataObject;
|
|
437
437
|
const sPropertyName = oSource.data("fieldPath");
|
|
438
|
+
const propertyFullyQualifiedName = oSource.data("propertyFullyQualifiedName");
|
|
438
439
|
if (aParams[0] === "Default") {
|
|
439
440
|
oDataObject = {
|
|
440
441
|
keyValue: aParams[1],
|
|
442
|
+
propertyFullyQualifiedName,
|
|
441
443
|
value: aParams[0]
|
|
442
444
|
};
|
|
443
445
|
} else if (aParams[0] === "ClearFieldValue") {
|
|
@@ -445,12 +447,14 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/macros
|
|
|
445
447
|
value = MassEditHandlers._getValueOnEmpty(oSource, fieldsInfoModel, value, sPropertyName);
|
|
446
448
|
oDataObject = {
|
|
447
449
|
keyValue: aParams[1],
|
|
450
|
+
propertyFullyQualifiedName,
|
|
448
451
|
value: value
|
|
449
452
|
};
|
|
450
453
|
} else if (!aParams) {
|
|
451
454
|
value = MassEditHandlers._getValueOnEmpty(oSource, fieldsInfoModel, value, sPropertyName);
|
|
452
455
|
oDataObject = {
|
|
453
456
|
keyValue: sPropertyName,
|
|
457
|
+
propertyFullyQualifiedName,
|
|
454
458
|
value: value
|
|
455
459
|
};
|
|
456
460
|
} else {
|
|
@@ -462,6 +466,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/macros
|
|
|
462
466
|
});
|
|
463
467
|
oDataObject = {
|
|
464
468
|
keyValue: propertyName,
|
|
469
|
+
propertyFullyQualifiedName,
|
|
465
470
|
value: relatedField.textInfo && MassEditHandlers._valueExists(relatedField.textInfo.value) ? relatedField.textInfo.value : relatedField.text
|
|
466
471
|
};
|
|
467
472
|
}
|
|
@@ -488,4 +493,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/macros
|
|
|
488
493
|
};
|
|
489
494
|
return MassEditHandlers;
|
|
490
495
|
}, false);
|
|
491
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNYXNzRWRpdEhhbmRsZXJzIiwiY29udGV4dFByb3BlcnR5Q2hhbmdlIiwibmV3VmFsdWUiLCJkYXRhUHJvcGVydHkiLCJtZGNGaWVsZElkIiwic291cmNlIiwiQ29yZSIsImJ5SWQiLCJ0cmFuc0N0eCIsImdldEJpbmRpbmdDb250ZXh0IiwiZmllbGRJbmZvTW9kZWwiLCJnZXRNb2RlbCIsInZhbHVlcyIsImdldFByb3BlcnR5IiwiaW5wdXRUeXBlIiwidmFsdWVMaXN0SW5mbyIsIl9zZXRWYWx1ZUxpc3RJbmZvIiwiaXNEaWFsb2dPcGVuIiwiZ2V0VmlzaWJsZSIsIl91cGRhdGVTZWxlY3RLZXkiLCJoYW5kbGVNRENGaWVsZENoYW5nZSIsImV2ZW50IiwicHJvcGVydHlOYW1lIiwiZ2V0U291cmNlIiwiY2hhbmdlUHJvbWlzZSIsImdldFBhcmFtZXRlciIsImNvbWJvQm94IiwiZ2V0Q29udGVudCIsInRoZW4iLCJfdXBkYXRlU2VsZWN0S2V5Rm9yTURDRmllbGRDaGFuZ2UiLCJiaW5kIiwiY2F0Y2giLCJlcnIiLCJMb2ciLCJ3YXJuaW5nIiwiaGFuZGxlU2VsZWN0aW9uQ2hhbmdlIiwia2V5IiwiZ2V0U2VsZWN0ZWRLZXkiLCJwYXJhbXMiLCJzcGxpdCIsInByZXZJdGVtIiwic2VsZWN0S2V5IiwiZ2V0S2V5Iiwic2xpY2UiLCJqb2luIiwiX29uVkhTZWxlY3QiLCJfZ2V0UHJvcGVydHlOYW1lRnJvbUtleSIsIl91cGRhdGVTdWdnZXN0aW9uRm9yRmllbGRzV2l0aEluUGFyYW1ldGVycyIsInN0YXJ0c1dpdGgiLCJfdXBkYXRlU3VnZ2VzdGlvbkZvckZpZWxkc1dpdGhPdXRQYXJhbWV0ZXJzIiwiX3VwZGF0ZVJlc3VsdHMiLCJ2YWx1ZSIsImZvcm1hdHRlZFZhbHVlIiwiZ2V0Rm9ybUZvcm1hdHRlZFZhbHVlIiwicmVzZXRWYWx1ZXMiLCJrZWVwRXhpc3RpbmdTZWxlY3Rpb24iLCJ1bml0RGF0YSIsImZpZWxkUGF0aHMiLCJPYmplY3QiLCJrZXlzIiwidW5pdEZpZWxkUGF0aHMiLCJmb3JFYWNoIiwiX3VwZGF0ZUluUGFyYW1ldGVyU3VnZ2V0aW9ucyIsInBhdGhQcmVmaXgiLCJzcmNQcm9wZXJ0eU5hbWUiLCJpblBhcmFtZXRlcnMiLCJsZW5ndGgiLCJpbmNsdWRlcyIsIl91cGRhdGVGaWVsZFBhdGhTdWdnZXN0aW9ucyIsIm91dFBhcmFtZXRlcnMiLCJfdXBkYXRlT3V0UGFyYW1ldGVyU3VnZ2V0aW9ucyIsIm91dFBhcmFtZXRlciIsImZpZWxkUGF0aEFic29sdXRlIiwib3B0aW9ucyIsImRlZmF1bHRPcHRpb25zIiwic2VsZWN0ZWRLZXkiLCJleGlzdGluZ1NlbGVjdGlvbiIsImZpbmQiLCJvcHRpb24iLCJzZWxlY3RPcHRpb25zIiwiZGVmYXVsdE9wdGlvbiIsInB1c2giLCJzZWxlY3RPcHRpb24iLCJzZXRQcm9wZXJ0eSIsInByb3BQYXRoIiwiX3JlcXVlc3RWYWx1ZUxpc3QiLCJtZXRhUGF0aCIsIk1vZGVsSGVscGVyIiwiZ2V0TWV0YVBhdGhGb3JDb250ZXh0IiwicHJvcGVydHlQYXRoIiwiZGVwZW5kZW50cyIsImdldERlcGVuZGVudHMiLCJmaWVsZEhlbHAiLCJnZXRGaWVsZEhlbHAiLCJmaWVsZFZhbHVlSGVscCIsImRlcGVuZGVudCIsImdldElkIiwicGF5bG9hZCIsImdldERlbGVnYXRlIiwic2V0QmluZGluZ0NvbnRleHQiLCJtZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJWYWx1ZUxpc3RIZWxwZXIiLCJjcmVhdGVWSFVJTW9kZWwiLCJnZXRWYWx1ZUxpc3RJbmZvIiwidkxpbmZvcyIsInZMaW5mbyIsImluZm8iLCJ2aFBhcmFtZXRlcnMiLCJnZXRJblBhcmFtZXRlcnMiLCJtYXAiLCJpblBhcmFtIiwiaGVscFBhdGgiLCJnZXRPdXRQYXJhbWV0ZXJzIiwib3V0UGFyYW0iLCJfZ2V0VmFsdWVIZWxwIiwiZ2V0UGFyZW50IiwiZmlyZVZhbHVlSGVscFJlcXVlc3QiLCJzdWJzdHJpbmciLCJpbmRleE9mIiwibGFzdEluZGV4T2YiLCJmdWxsVGV4dCIsImZvcm1hdHRlZFRleHQiLCJfdmFsdWVFeGlzdHMiLCJyZWxhdGVkRmllbGQiLCJmaWVsZERhdGEiLCJ0ZXh0SW5mbyIsInRleHQiLCJkZXNjcmlwdGlvblBhdGgiLCJkZXNjcmlwdGlvbiIsImdldEFkZGl0aW9uYWxWYWx1ZSIsInVuZGVmaW5lZCIsInNlbGVjdGlvbkluZm8iLCJ0ZXh0QXJyYW5nZW1lbnQiLCJnZXREaXNwbGF5IiwiZ2V0VmFsdWUiLCJ2YWx1ZVBhdGgiLCJfZ2V0VmFsdWUiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJnZXRTZWxlY3RlZEl0ZW0iLCJnZXRUZXh0IiwiX2dldFZhbHVlT25FbXB0eSIsIm9Tb3VyY2UiLCJmaWVsZHNJbmZvTW9kZWwiLCJzUHJvcGVydHlOYW1lIiwidW5pdFByb3BlcnR5Iiwic2V0VmFsdWUiLCJhUGFyYW1zIiwidXBkYXRlVHJhbnNDdHgiLCJvRmllbGRzSW5mb0RhdGEiLCJnZXREYXRhIiwib0RhdGFPYmplY3QiLCJkYXRhIiwia2V5VmFsdWUiLCJwcm9wZXJ0eVZhbHVlcyIsIm9GaWVsZERhdGEiLCJiRXhpc3RpbmdFbGVtZW50aW5kZXgiLCJpIiwicmVzdWx0cyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiTWFzc0VkaXRIYW5kbGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnN0cnVjdG9yIGZvciBhIG5ldyBWaXN1YWwgRmlsdGVyIENvbnRhaW5lci5cbiAqIFVzZWQgZm9yIHZpc3VhbCBmaWx0ZXJzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtzSWRdIElEIGZvciB0aGUgbmV3IGNvbnRyb2wsIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGlmIG5vIElEIGlzIGdpdmVuXG4gKiBAZXh0ZW5kcyBzYXAudWkubWRjLmZpbHRlcmJhci5JRmlsdGVyQ29udGFpbmVyXG4gKiBAY2xhc3NcbiAqIEBwcml2YXRlXG4gKiBAYWxpYXMgc2FwLmZlLmNvcmUuY29udHJvbHMuZmlsdGVyYmFyLlZpc3VhbEZpbHRlckNvbnRhaW5lclxuICovXG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZUhlbHBQYXlsb2FkLCBWYWx1ZUxpc3RJbmZvIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvdmFsdWVoZWxwL1ZhbHVlTGlzdEhlbHBlclwiO1xuaW1wb3J0IFZhbHVlTGlzdEhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC92YWx1ZWhlbHAvVmFsdWVMaXN0SGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb21ib0JveCBmcm9tIFwic2FwL20vQ29tYm9Cb3hcIjtcbmltcG9ydCB0eXBlIFNlbGVjdCBmcm9tIFwic2FwL20vU2VsZWN0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IHR5cGUgRmllbGQgZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCB0eXBlIFZhbHVlSGVscCBmcm9tIFwic2FwL3VpL21kYy9WYWx1ZUhlbHBcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuXG5jb25zdCBNYXNzRWRpdEhhbmRsZXJzOiBhbnkgPSB7XG5cdC8qKlxuXHQgKiBDYWxsZWQgZm9yIHByb3BlcnR5IGNoYW5nZSBpbiB0aGUgdHJhbnNpZW50IGNvbnRleHQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAcGFyYW0gbmV3VmFsdWUgTmV3IHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS5cblx0ICogQHBhcmFtIGRhdGFQcm9wZXJ0eSBGaW5hbCBjb250ZXh0IHJldHVybmVkIGFmdGVyIHRoZSBwYWdpbmF0b3IgYWN0aW9uXG5cdCAqIEBwYXJhbSBtZGNGaWVsZElkIEZpbmFsIGNvbnRleHQgcmV0dXJuZWQgYWZ0ZXIgdGhlIHBhZ2luYXRvciBhY3Rpb25cblx0ICovXG5cdGNvbnRleHRQcm9wZXJ0eUNoYW5nZTogZnVuY3Rpb24gKG5ld1ZhbHVlOiBhbnksIGRhdGFQcm9wZXJ0eTogc3RyaW5nLCBtZGNGaWVsZElkOiBzdHJpbmcpIHtcblx0XHQvLyBDYWxsZWQgZm9yXG5cdFx0Ly8gMS4gT3V0IFBhcmFtZXRlcnMuXG5cdFx0Ly8gMi4gVHJhbnNpZW50IGNvbnRleHQgcHJvcGVydHkgY2hhbmdlLlxuXG5cdFx0Y29uc3Qgc291cmNlID0gQ29yZS5ieUlkKG1kY0ZpZWxkSWQpIGFzIEZpZWxkO1xuXHRcdGNvbnN0IHRyYW5zQ3R4ID0gc291cmNlICYmIChzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0KTtcblx0XHRjb25zdCBmaWVsZEluZm9Nb2RlbCA9IHNvdXJjZSAmJiAoc291cmNlLmdldE1vZGVsKFwiZmllbGRzSW5mb1wiKSBhcyBKU09OTW9kZWwpO1xuXHRcdGNvbnN0IHZhbHVlcyA9XG5cdFx0XHRmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShgL3ZhbHVlcy8ke2RhdGFQcm9wZXJ0eX1gKSB8fCBmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShgL3VuaXREYXRhLyR7ZGF0YVByb3BlcnR5fWApIHx8IFtdO1xuXG5cdFx0aWYgKHRyYW5zQ3R4ICYmICh2YWx1ZXMuaW5wdXRUeXBlID09PSBcIklucHV0V2l0aFZhbHVlSGVscFwiIHx8IHZhbHVlcy5pbnB1dFR5cGUgPT09IFwiSW5wdXRXaXRoVW5pdFwiKSAmJiAhdmFsdWVzLnZhbHVlTGlzdEluZm8pIHtcblx0XHRcdE1hc3NFZGl0SGFuZGxlcnMuX3NldFZhbHVlTGlzdEluZm8odHJhbnNDdHgsIHNvdXJjZSwgZmllbGRJbmZvTW9kZWwsIGRhdGFQcm9wZXJ0eSk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgaXNEaWFsb2dPcGVuID0gZmllbGRJbmZvTW9kZWwgJiYgZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoXCIvaXNPcGVuXCIpO1xuXHRcdGlmICghaXNEaWFsb2dPcGVuIHx8ICFzb3VyY2UuZ2V0VmlzaWJsZSgpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0TWFzc0VkaXRIYW5kbGVycy5fdXBkYXRlU2VsZWN0S2V5KHNvdXJjZSwgZGF0YVByb3BlcnR5LCBuZXdWYWx1ZSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENhbGxlZCBmb3IgY2hhbmdlIGluIHRoZSBNREMgZmllbGQuXG5cdCAqIFRoaXMgaXMgY2FsbGVkIG9uIHNlbGVjdGlvbiBkb25lIHRocm91Z2ggVkhELlxuXHQgKiBUaGlzIGlzIG5vdCBjYWxsZWQgb24gY2hhbmdlIG9mIHRoZSBkcm9wZG93biBhcyB3ZSBhcmUgdXNpbmcgYSBjdXN0b20gTWFzc0VkaXRTZWxlY3QgY29udHJvbCBhbmQgbm90IGdlbmVyYWwgU2VsZWN0LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIGV2ZW50IEV2ZW50IG9iamVjdCBmb3IgY2hhbmdlLlxuXHQgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFByb3BlcnR5IHBhdGguXG5cdCAqL1xuXHRoYW5kbGVNRENGaWVsZENoYW5nZTogZnVuY3Rpb24gKGV2ZW50OiBhbnksIHByb3BlcnR5TmFtZTogc3RyaW5nKSB7XG5cdFx0Ly8gQ2FsbGVkIGZvclxuXHRcdC8vIDEuIFZIRCBwcm9wZXJ0eSBjaGFuZ2UuXG5cblx0XHRjb25zdCBzb3VyY2UgPSBldmVudCAmJiBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBjaGFuZ2VQcm9taXNlID0gZXZlbnQgJiYgZXZlbnQuZ2V0UGFyYW1ldGVyKFwicHJvbWlzZVwiKTtcblx0XHRjb25zdCBjb21ib0JveCA9IHNvdXJjZS5nZXRDb250ZW50KCk7XG5cdFx0aWYgKCFjb21ib0JveCB8fCAhcHJvcGVydHlOYW1lKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y2hhbmdlUHJvbWlzZVxuXHRcdFx0LnRoZW4oTWFzc0VkaXRIYW5kbGVycy5fdXBkYXRlU2VsZWN0S2V5Rm9yTURDRmllbGRDaGFuZ2UuYmluZChNYXNzRWRpdEhhbmRsZXJzLCBzb3VyY2UsIHByb3BlcnR5TmFtZSkpXG5cdFx0XHQuY2F0Y2goKGVycjogYW55KSA9PiB7XG5cdFx0XHRcdExvZy53YXJuaW5nKGBWSEQgc2VsZWN0aW9uIGNvdWxkbid0IGJlIHBvcHVsYXRlZCBpbiB0aGUgbWFzcyBlZGl0IGZpZWxkLiR7ZXJyfWApO1xuXHRcdFx0fSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENhbGxlZCBmb3Igc2VsZWN0aW9uIGNoYW5nZSB0aHJvdWdoIHRoZSBkcm9wIGRvd24uXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAcGFyYW0gZXZlbnQgRXZlbnQgb2JqZWN0IGZvciBjaGFuZ2UuXG5cdCAqL1xuXHRoYW5kbGVTZWxlY3Rpb25DaGFuZ2U6IGZ1bmN0aW9uIChldmVudDogYW55KSB7XG5cdFx0Ly8gQ2FsbGVkIGZvciBNYW51YWwgc2VsZWN0aW9uIGZyb20gZHJvcGRvd24oY29tYm9Cb3ggb3Igc2VsZWN0KVxuXHRcdC8vIDEuIFZIRCBzZWxlY3QuXG5cdFx0Ly8gMi4gQW55IHZhbHVlIGNoYW5nZSBpbiB0aGUgY29udHJvbC5cblxuXHRcdGNvbnN0IHNvdXJjZSA9IGV2ZW50ICYmIGV2ZW50LmdldFNvdXJjZSgpO1xuXHRcdGNvbnN0IGtleSA9IHNvdXJjZS5nZXRTZWxlY3RlZEtleSgpIGFzIHN0cmluZztcblx0XHRjb25zdCBwYXJhbXMgPSBzb3VyY2UgJiYga2V5ICYmIGtleS5zcGxpdChcIi9cIik7XG5cdFx0bGV0IHByb3BlcnR5TmFtZTtcblxuXHRcdGlmIChwYXJhbXNbMF0gPT09IFwiVXNlVmFsdWVIZWxwVmFsdWVcIikge1xuXHRcdFx0Y29uc3QgcHJldkl0ZW0gPSBldmVudC5nZXRQYXJhbWV0ZXIoXCJwcmV2aW91c1NlbGVjdGVkSXRlbVwiKTtcblx0XHRcdGNvbnN0IHNlbGVjdEtleSA9IHByZXZJdGVtLmdldEtleSgpO1xuXHRcdFx0cHJvcGVydHlOYW1lID0gcGFyYW1zLnNsaWNlKDEpLmpvaW4oXCIvXCIpO1xuXHRcdFx0TWFzc0VkaXRIYW5kbGVycy5fb25WSFNlbGVjdChzb3VyY2UsIHByb3BlcnR5TmFtZSwgc2VsZWN0S2V5KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBmaWVsZEluZm9Nb2RlbCA9IHNvdXJjZSAmJiAoc291cmNlLmdldE1vZGVsKFwiZmllbGRzSW5mb1wiKSBhcyBKU09OTW9kZWwpO1xuXHRcdHByb3BlcnR5TmFtZSA9IE1hc3NFZGl0SGFuZGxlcnMuX2dldFByb3BlcnR5TmFtZUZyb21LZXkoa2V5KTtcblx0XHRNYXNzRWRpdEhhbmRsZXJzLl91cGRhdGVTdWdnZXN0aW9uRm9yRmllbGRzV2l0aEluUGFyYW1ldGVycyhcblx0XHRcdGZpZWxkSW5mb01vZGVsLFxuXHRcdFx0cHJvcGVydHlOYW1lLFxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoXCJEZWZhdWx0L1wiKSB8fCBrZXkuc3RhcnRzV2l0aChcIkNsZWFyRmllbGRWYWx1ZS9cIiksXG5cdFx0XHR0cnVlXG5cdFx0KTtcblx0XHRNYXNzRWRpdEhhbmRsZXJzLl91cGRhdGVTdWdnZXN0aW9uRm9yRmllbGRzV2l0aE91dFBhcmFtZXRlcnMoXG5cdFx0XHRmaWVsZEluZm9Nb2RlbCxcblx0XHRcdHByb3BlcnR5TmFtZSxcblx0XHRcdGtleS5zdGFydHNXaXRoKFwiRGVmYXVsdC9cIikgfHwga2V5LnN0YXJ0c1dpdGgoXCJDbGVhckZpZWxkVmFsdWUvXCIpLFxuXHRcdFx0ZmFsc2Vcblx0XHQpO1xuXHRcdE1hc3NFZGl0SGFuZGxlcnMuX3VwZGF0ZVJlc3VsdHMoc291cmNlLCBwYXJhbXMsIHRydWUpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBVcGRhdGUgc2VsZWN0aW9ucyB0byByZXN1bHRzIGFuZCB0aGUgc3VnZ2VzdHMgaW4gZHJvcCBkb3ducy5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSBzb3VyY2UgTURDIGZpZWxkIHRoYXQgd2FzIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgUHJvcGVydHkgcGF0aC5cblx0ICogQHBhcmFtIHZhbHVlIE5ldyB2YWx1ZS5cblx0ICovXG5cdF91cGRhdGVTZWxlY3RLZXlGb3JNRENGaWVsZENoYW5nZTogZnVuY3Rpb24gKHNvdXJjZTogYW55LCBwcm9wZXJ0eU5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuXHRcdGNvbnN0IHRyYW5zQ3R4ID0gc291cmNlICYmIHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdGNvbnN0IGZpZWxkSW5mb01vZGVsID0gc291cmNlICYmIChzb3VyY2UuZ2V0TW9kZWwoXCJmaWVsZHNJbmZvXCIpIGFzIEpTT05Nb2RlbCk7XG5cdFx0Y29uc3QgdmFsdWVzID1cblx0XHRcdGZpZWxkSW5mb01vZGVsLmdldFByb3BlcnR5KGAvdmFsdWVzLyR7cHJvcGVydHlOYW1lfWApIHx8IGZpZWxkSW5mb01vZGVsLmdldFByb3BlcnR5KGAvdW5pdERhdGEvJHtwcm9wZXJ0eU5hbWV9YCkgfHwgW107XG5cblx0XHRpZiAodHJhbnNDdHggJiYgKHZhbHVlcy5pbnB1dFR5cGUgPT09IFwiSW5wdXRXaXRoVmFsdWVIZWxwXCIgfHwgdmFsdWVzLmlucHV0VHlwZSA9PT0gXCJJbnB1dFdpdGhVbml0XCIpICYmICF2YWx1ZXMudmFsdWVMaXN0SW5mbykge1xuXHRcdFx0TWFzc0VkaXRIYW5kbGVycy5fc2V0VmFsdWVMaXN0SW5mbyh0cmFuc0N0eCwgc291cmNlLCBmaWVsZEluZm9Nb2RlbCwgcHJvcGVydHlOYW1lKTtcblx0XHR9XG5cblx0XHRNYXNzRWRpdEhhbmRsZXJzLl91cGRhdGVTdWdnZXN0aW9uRm9yRmllbGRzV2l0aE91dFBhcmFtZXRlcnMoZmllbGRJbmZvTW9kZWwsIHByb3BlcnR5TmFtZSwgZmFsc2UsIHRydWUpO1xuXHRcdE1hc3NFZGl0SGFuZGxlcnMuX3VwZGF0ZVN1Z2dlc3Rpb25Gb3JGaWVsZHNXaXRoSW5QYXJhbWV0ZXJzKGZpZWxkSW5mb01vZGVsLCBwcm9wZXJ0eU5hbWUsIGZhbHNlLCB0cnVlKTtcblxuXHRcdGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gc291cmNlLmdldEZvcm1Gb3JtYXR0ZWRWYWx1ZSgpO1xuXHRcdE1hc3NFZGl0SGFuZGxlcnMuX3VwZGF0ZVNlbGVjdEtleShzb3VyY2UsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGZvcm1hdHRlZFZhbHVlKTtcblx0fSxcblxuXHQvKipcblx0ICogVXBkYXRlIHN1Z2dlc3RzIGZvciBhbGwgZHJvcCBkb3ducyB3aXRoIEluUGFyYW1ldGVyIGFzIHRoZSBwcm9wZXJ0eU5hbWUuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAcGFyYW0gZmllbGRJbmZvTW9kZWwgUnVudGltZSBtb2RlbCB3aXRoIHBhcmFtZXRlcnMgc3RvcmUgaW5mb3JtYXRpb24uXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgUHJvcGVydHkgcGF0aC5cblx0ICogQHBhcmFtIHJlc2V0VmFsdWVzIFNob3VsZCB0aGUgdmFsdWVzIGJlIHJlc2V0IHRvIG9yaWdpbmFsIHN0YXRlLlxuXHQgKiBAcGFyYW0ga2VlcEV4aXN0aW5nU2VsZWN0aW9uIFNob3VsZCB0aGUgZXhpc3Rpbmcgc2VsZWN0aW9uIGJlZm9yZSB1cGRhdGUgcmVtYWluLlxuXHQgKi9cblx0X3VwZGF0ZVN1Z2dlc3Rpb25Gb3JGaWVsZHNXaXRoSW5QYXJhbWV0ZXJzOiBmdW5jdGlvbiAoXG5cdFx0ZmllbGRJbmZvTW9kZWw6IEpTT05Nb2RlbCxcblx0XHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0XHRyZXNldFZhbHVlczogYm9vbGVhbixcblx0XHRrZWVwRXhpc3RpbmdTZWxlY3Rpb246IGJvb2xlYW5cblx0KTogdm9pZCB7XG5cdFx0Y29uc3QgdmFsdWVzID0gZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoXCIvdmFsdWVzXCIpO1xuXHRcdGNvbnN0IHVuaXREYXRhID0gZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoXCIvdW5pdERhdGFcIik7XG5cdFx0Y29uc3QgZmllbGRQYXRocyA9IE9iamVjdC5rZXlzKHZhbHVlcyk7XG5cdFx0Y29uc3QgdW5pdEZpZWxkUGF0aHMgPSBPYmplY3Qua2V5cyh1bml0RGF0YSk7XG5cblx0XHRmaWVsZFBhdGhzLmZvckVhY2goXG5cdFx0XHRNYXNzRWRpdEhhbmRsZXJzLl91cGRhdGVJblBhcmFtZXRlclN1Z2dldGlvbnMuYmluZChcblx0XHRcdFx0TWFzc0VkaXRIYW5kbGVycyxcblx0XHRcdFx0ZmllbGRJbmZvTW9kZWwsXG5cdFx0XHRcdFwiL3ZhbHVlcy9cIixcblx0XHRcdFx0cHJvcGVydHlOYW1lLFxuXHRcdFx0XHRyZXNldFZhbHVlcyxcblx0XHRcdFx0a2VlcEV4aXN0aW5nU2VsZWN0aW9uXG5cdFx0XHQpXG5cdFx0KTtcblx0XHR1bml0RmllbGRQYXRocy5mb3JFYWNoKFxuXHRcdFx0TWFzc0VkaXRIYW5kbGVycy5fdXBkYXRlSW5QYXJhbWV0ZXJTdWdnZXRpb25zLmJpbmQoXG5cdFx0XHRcdE1hc3NFZGl0SGFuZGxlcnMsXG5cdFx0XHRcdGZpZWxkSW5mb01vZGVsLFxuXHRcdFx0XHRcIi91bml0RGF0YS9cIixcblx0XHRcdFx0cHJvcGVydHlOYW1lLFxuXHRcdFx0XHRyZXNldFZhbHVlcyxcblx0XHRcdFx0a2VlcEV4aXN0aW5nU2VsZWN0aW9uXG5cdFx0XHQpXG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogVXBkYXRlIHN1Z2dlc3RzIGZvciBhIGRyb3AgZG93biB3aXRoIEluUGFyYW1ldGVyIGFzIHRoZSBzcmNQcm9wZXJ0eU5hbWUuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAcGFyYW0gZmllbGRJbmZvTW9kZWwgUnVudGltZSBtb2RlbCB3aXRoIHBhcmFtZXRlcnMgc3RvcmUgaW5mb3JtYXRpb24uXG5cdCAqIEBwYXJhbSBwYXRoUHJlZml4IFBhdGggaW4gdGhlIHJ1bnRpbWUgbW9kZWwuXG5cdCAqIEBwYXJhbSBzcmNQcm9wZXJ0eU5hbWUgVGhlIEluUGFyYW1ldGVyIFByb3BlcnR5IHBhdGguXG5cdCAqIEBwYXJhbSByZXNldFZhbHVlcyBTaG91bGQgdGhlIHZhbHVlcyBiZSByZXNldCB0byBvcmlnaW5hbCBzdGF0ZS5cblx0ICogQHBhcmFtIGtlZXBFeGlzdGluZ1NlbGVjdGlvbiBTaG91bGQgdGhlIGV4aXN0aW5nIHNlbGVjdGlvbiBiZWZvcmUgdXBkYXRlIHJlbWFpbi5cblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZSBQcm9wZXJ0eSBwYXRoIHRoYXQgbmVlZHMgdXBkYXRlIG9mIHN1Z2dlc3Rpb25zLlxuXHQgKi9cblx0X3VwZGF0ZUluUGFyYW1ldGVyU3VnZ2V0aW9uczogZnVuY3Rpb24gKFxuXHRcdGZpZWxkSW5mb01vZGVsOiBKU09OTW9kZWwsXG5cdFx0cGF0aFByZWZpeDogc3RyaW5nLFxuXHRcdHNyY1Byb3BlcnR5TmFtZTogc3RyaW5nLFxuXHRcdHJlc2V0VmFsdWVzOiBib29sZWFuLFxuXHRcdGtlZXBFeGlzdGluZ1NlbGVjdGlvbjogYm9vbGVhbixcblx0XHRwcm9wZXJ0eU5hbWU6IHN0cmluZ1xuXHQpIHtcblx0XHRjb25zdCB2YWx1ZUxpc3RJbmZvID0gZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYCR7cGF0aFByZWZpeCArIHByb3BlcnR5TmFtZX0vdmFsdWVMaXN0SW5mb2ApO1xuXHRcdGlmICh2YWx1ZUxpc3RJbmZvICYmIHNyY1Byb3BlcnR5TmFtZSAhPSBwcm9wZXJ0eU5hbWUpIHtcblx0XHRcdGNvbnN0IGluUGFyYW1ldGVycyA9IHZhbHVlTGlzdEluZm8uaW5QYXJhbWV0ZXJzO1xuXHRcdFx0aWYgKGluUGFyYW1ldGVycyAmJiBpblBhcmFtZXRlcnMubGVuZ3RoID4gMCAmJiBpblBhcmFtZXRlcnMuaW5jbHVkZXMoc3JjUHJvcGVydHlOYW1lKSkge1xuXHRcdFx0XHRNYXNzRWRpdEhhbmRsZXJzLl91cGRhdGVGaWVsZFBhdGhTdWdnZXN0aW9ucyhmaWVsZEluZm9Nb2RlbCwgcGF0aFByZWZpeCArIHByb3BlcnR5TmFtZSwgcmVzZXRWYWx1ZXMsIGtlZXBFeGlzdGluZ1NlbGVjdGlvbik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBVcGRhdGUgc3VnZ2VzdHMgZm9yIGFsbCBPdXRQYXJhbWV0ZXIncyBkcm9wIGRvd25zIG9mIHRoZSBwcm9wZXJ0eU5hbWUuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAcGFyYW0gZmllbGRJbmZvTW9kZWwgUnVudGltZSBtb2RlbCB3aXRoIHBhcmFtZXRlcnMgc3RvcmUgaW5mb3JtYXRpb24uXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgUHJvcGVydHkgcGF0aC5cblx0ICogQHBhcmFtIHJlc2V0VmFsdWVzIFNob3VsZCB0aGUgdmFsdWVzIGJlIHJlc2V0IHRvIG9yaWdpbmFsIHN0YXRlLlxuXHQgKiBAcGFyYW0ga2VlcEV4aXN0aW5nU2VsZWN0aW9uIFNob3VsZCB0aGUgZXhpc3Rpbmcgc2VsZWN0aW9uIGJlZm9yZSB1cGRhdGUgcmVtYWluLlxuXHQgKi9cblx0X3VwZGF0ZVN1Z2dlc3Rpb25Gb3JGaWVsZHNXaXRoT3V0UGFyYW1ldGVyczogZnVuY3Rpb24gKFxuXHRcdGZpZWxkSW5mb01vZGVsOiBKU09OTW9kZWwsXG5cdFx0cHJvcGVydHlOYW1lOiBzdHJpbmcsXG5cdFx0cmVzZXRWYWx1ZXM6IGJvb2xlYW4sXG5cdFx0a2VlcEV4aXN0aW5nU2VsZWN0aW9uOiBib29sZWFuXG5cdCk6IHZvaWQge1xuXHRcdGNvbnN0IHZhbHVlTGlzdEluZm8gPVxuXHRcdFx0ZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYC92YWx1ZXMvJHtwcm9wZXJ0eU5hbWV9L3ZhbHVlTGlzdEluZm9gKSB8fFxuXHRcdFx0ZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYC91bml0RGF0YS8ke3Byb3BlcnR5TmFtZX0vdmFsdWVMaXN0SW5mb2ApO1xuXG5cdFx0aWYgKHZhbHVlTGlzdEluZm8gJiYgdmFsdWVMaXN0SW5mby5vdXRQYXJhbWV0ZXJzKSB7XG5cdFx0XHRjb25zdCBvdXRQYXJhbWV0ZXJzID0gdmFsdWVMaXN0SW5mby5vdXRQYXJhbWV0ZXJzO1xuXHRcdFx0aWYgKG91dFBhcmFtZXRlcnMubGVuZ3RoICYmIG91dFBhcmFtZXRlcnMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRNYXNzRWRpdEhhbmRsZXJzLl91cGRhdGVPdXRQYXJhbWV0ZXJTdWdnZXRpb25zKG91dFBhcmFtZXRlcnMsIGZpZWxkSW5mb01vZGVsLCByZXNldFZhbHVlcywga2VlcEV4aXN0aW5nU2VsZWN0aW9uKTtcblx0XHRcdFx0Y29uc3QgcGF0aFByZWZpeCA9XG5cdFx0XHRcdFx0KGZpZWxkSW5mb01vZGVsLmdldFByb3BlcnR5KGAvdmFsdWVzLyR7cHJvcGVydHlOYW1lfWApICYmIGAvdmFsdWVzLyR7cHJvcGVydHlOYW1lfWApIHx8XG5cdFx0XHRcdFx0KGZpZWxkSW5mb01vZGVsLmdldFByb3BlcnR5KGAvdW5pdERhdGEvJHtwcm9wZXJ0eU5hbWV9YCkgJiYgYC91bml0RGF0YS8ke3Byb3BlcnR5TmFtZX1gKTtcblx0XHRcdFx0aWYgKHBhdGhQcmVmaXgpIHtcblx0XHRcdFx0XHRNYXNzRWRpdEhhbmRsZXJzLl91cGRhdGVGaWVsZFBhdGhTdWdnZXN0aW9ucyhmaWVsZEluZm9Nb2RlbCwgcGF0aFByZWZpeCwgZmFsc2UsIHRydWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBVcGRhdGUgc3VnZ2VzdHMgZm9yIGEgZHJvcCBkb3duIHdpdGggSW5QYXJhbWV0ZXIgYXMgdGhlIHNyY1Byb3BlcnR5TmFtZS5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSBvdXRQYXJhbWV0ZXJzIFN0cmluZyBhcnJhcnkgb2YgT3V0UGFyYW1ldGVyIHByb3BlcnR5IHBhdGhzLlxuXHQgKiBAcGFyYW0gZmllbGRJbmZvTW9kZWwgUnVudGltZSBtb2RlbCB3aXRoIHBhcmFtZXRlcnMgc3RvcmUgaW5mb3JtYXRpb24uXG5cdCAqIEBwYXJhbSByZXNldFZhbHVlcyBTaG91bGQgdGhlIHZhbHVlcyBiZSByZXNldCB0byBvcmlnaW5hbCBzdGF0ZS5cblx0ICogQHBhcmFtIGtlZXBFeGlzdGluZ1NlbGVjdGlvbiBTaG91bGQgdGhlIGV4aXN0aW5nIHNlbGVjdGlvbiBiZWZvcmUgdXBkYXRlIHJlbWFpbi5cblx0ICovXG5cdF91cGRhdGVPdXRQYXJhbWV0ZXJTdWdnZXRpb25zOiBmdW5jdGlvbiAoXG5cdFx0b3V0UGFyYW1ldGVyczogc3RyaW5nW10sXG5cdFx0ZmllbGRJbmZvTW9kZWw6IEpTT05Nb2RlbCxcblx0XHRyZXNldFZhbHVlczogYm9vbGVhbixcblx0XHRrZWVwRXhpc3RpbmdTZWxlY3Rpb246IGJvb2xlYW5cblx0KSB7XG5cdFx0Y29uc3QgdmFsdWVzID0gZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoXCIvdmFsdWVzXCIpO1xuXHRcdGNvbnN0IHVuaXREYXRhID0gZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoXCIvdW5pdERhdGFcIik7XG5cdFx0Y29uc3QgZmllbGRQYXRocyA9IE9iamVjdC5rZXlzKHZhbHVlcyk7XG5cdFx0Y29uc3QgdW5pdEZpZWxkUGF0aHMgPSBPYmplY3Qua2V5cyh1bml0RGF0YSk7XG5cblx0XHRvdXRQYXJhbWV0ZXJzLmZvckVhY2goKG91dFBhcmFtZXRlcjogc3RyaW5nKSA9PiB7XG5cdFx0XHRpZiAoZmllbGRQYXRocy5pbmNsdWRlcyhvdXRQYXJhbWV0ZXIpKSB7XG5cdFx0XHRcdE1hc3NFZGl0SGFuZGxlcnMuX3VwZGF0ZUZpZWxkUGF0aFN1Z2dlc3Rpb25zKGZpZWxkSW5mb01vZGVsLCBgL3ZhbHVlcy8ke291dFBhcmFtZXRlcn1gLCByZXNldFZhbHVlcywga2VlcEV4aXN0aW5nU2VsZWN0aW9uKTtcblx0XHRcdH0gZWxzZSBpZiAodW5pdEZpZWxkUGF0aHMuaW5jbHVkZXMob3V0UGFyYW1ldGVyKSkge1xuXHRcdFx0XHRNYXNzRWRpdEhhbmRsZXJzLl91cGRhdGVGaWVsZFBhdGhTdWdnZXN0aW9ucyhcblx0XHRcdFx0XHRmaWVsZEluZm9Nb2RlbCxcblx0XHRcdFx0XHRgL3VuaXREYXRhLyR7b3V0UGFyYW1ldGVyfWAsXG5cdFx0XHRcdFx0cmVzZXRWYWx1ZXMsXG5cdFx0XHRcdFx0a2VlcEV4aXN0aW5nU2VsZWN0aW9uXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFVwZGF0ZSBzdWdnZXN0cyBmb3IgYSBkcm9wIGRvd24gb2YgYSBmaWVsZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSBmaWVsZEluZm9Nb2RlbCBSdW50aW1lIG1vZGVsIHdpdGggcGFyYW1ldGVycyBzdG9yZSBpbmZvcm1hdGlvbi5cblx0ICogQHBhcmFtIGZpZWxkUGF0aEFic29sdXRlIENvbXBsZXRlIHJ1bnRpbWUgcHJvcGVydHkgcGF0aC5cblx0ICogQHBhcmFtIHJlc2V0VmFsdWVzIFNob3VsZCB0aGUgdmFsdWVzIGJlIHJlc2V0IHRvIG9yaWdpbmFsIHN0YXRlLlxuXHQgKiBAcGFyYW0ga2VlcEV4aXN0aW5nU2VsZWN0aW9uIFNob3VsZCB0aGUgZXhpc3Rpbmcgc2VsZWN0aW9uIGJlZm9yZSB1cGRhdGUgcmVtYWluLlxuXHQgKi9cblx0X3VwZGF0ZUZpZWxkUGF0aFN1Z2dlc3Rpb25zOiBmdW5jdGlvbiAoXG5cdFx0ZmllbGRJbmZvTW9kZWw6IEpTT05Nb2RlbCxcblx0XHRmaWVsZFBhdGhBYnNvbHV0ZTogc3RyaW5nLFxuXHRcdHJlc2V0VmFsdWVzOiBib29sZWFuLFxuXHRcdGtlZXBFeGlzdGluZ1NlbGVjdGlvbjogYm9vbGVhblxuXHQpIHtcblx0XHRjb25zdCBvcHRpb25zID0gZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoZmllbGRQYXRoQWJzb2x1dGUpO1xuXHRcdGNvbnN0IGRlZmF1bHRPcHRpb25zID0gb3B0aW9ucy5kZWZhdWx0T3B0aW9ucztcblx0XHRjb25zdCBzZWxlY3RlZEtleSA9IGZpZWxkSW5mb01vZGVsLmdldFByb3BlcnR5KGAke2ZpZWxkUGF0aEFic29sdXRlfS9zZWxlY3RlZEtleWApO1xuXHRcdGNvbnN0IGV4aXN0aW5nU2VsZWN0aW9uID0ga2VlcEV4aXN0aW5nU2VsZWN0aW9uICYmIG9wdGlvbnMuZmluZCgob3B0aW9uOiBhbnkpID0+IG9wdGlvbi5rZXkgPT09IHNlbGVjdGVkS2V5KTtcblx0XHRpZiAocmVzZXRWYWx1ZXMpIHtcblx0XHRcdGNvbnN0IHNlbGVjdE9wdGlvbnMgPSBvcHRpb25zLnNlbGVjdE9wdGlvbnM7XG5cdFx0XHRvcHRpb25zLmxlbmd0aCA9IDA7XG5cdFx0XHRkZWZhdWx0T3B0aW9ucy5mb3JFYWNoKChkZWZhdWx0T3B0aW9uOiBhbnkpID0+IG9wdGlvbnMucHVzaChkZWZhdWx0T3B0aW9uKSk7XG5cdFx0XHRzZWxlY3RPcHRpb25zLmZvckVhY2goKHNlbGVjdE9wdGlvbjogYW55KSA9PiBvcHRpb25zLnB1c2goc2VsZWN0T3B0aW9uKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9wdGlvbnMubGVuZ3RoID0gMDtcblx0XHRcdGRlZmF1bHRPcHRpb25zLmZvckVhY2goKGRlZmF1bHRPcHRpb246IGFueSkgPT4gb3B0aW9ucy5wdXNoKGRlZmF1bHRPcHRpb24pKTtcblx0XHR9XG5cblx0XHRmaWVsZEluZm9Nb2RlbC5zZXRQcm9wZXJ0eShmaWVsZFBhdGhBYnNvbHV0ZSwgb3B0aW9ucyk7XG5cblx0XHRpZiAoZXhpc3RpbmdTZWxlY3Rpb24gJiYgIW9wdGlvbnMuaW5jbHVkZXMoZXhpc3RpbmdTZWxlY3Rpb24pKSB7XG5cdFx0XHRvcHRpb25zLnB1c2goZXhpc3RpbmdTZWxlY3Rpb24pO1xuXHRcdFx0ZmllbGRJbmZvTW9kZWwuc2V0UHJvcGVydHkoYCR7ZmllbGRQYXRoQWJzb2x1dGV9L3NlbGVjdGVkS2V5YCwgc2VsZWN0ZWRLZXkpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogVXBkYXRlIEluIGFuZCBPdXQgUGFyYW1ldGVycyBpbiB0aGUgTUVELlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIHRyYW5zQ3R4IFRoZSB0cmFuc2llbnQgY29udGV4dCBvZiB0aGUgTUVELlxuXHQgKiBAcGFyYW0gc291cmNlIE1EQyBmaWVsZC5cblx0ICogQHBhcmFtIGZpZWxkSW5mb01vZGVsIFJ1bnRpbWUgbW9kZWwgd2l0aCBwYXJhbWV0ZXJzIHN0b3JlIGluZm9ybWF0aW9uLlxuXHQgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFByb3BlcnR5IHBhdGguXG5cdCAqL1xuXHRfc2V0VmFsdWVMaXN0SW5mbzogZnVuY3Rpb24gKHRyYW5zQ3R4OiBDb250ZXh0LCBzb3VyY2U6IEZpZWxkLCBmaWVsZEluZm9Nb2RlbDogSlNPTk1vZGVsLCBwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IHByb3BQYXRoID1cblx0XHRcdChmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShgL3ZhbHVlcy8ke3Byb3BlcnR5TmFtZX1gKSAmJiBcIi92YWx1ZXMvXCIpIHx8XG5cdFx0XHQoZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYC91bml0RGF0YS8ke3Byb3BlcnR5TmFtZX1gKSAmJiBcIi91bml0RGF0YS9cIik7XG5cblx0XHRpZiAoZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYCR7cHJvcFBhdGh9JHtwcm9wZXJ0eU5hbWV9L3ZhbHVlTGlzdEluZm9gKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCB2YWx1ZUxpc3RJbmZvID0gZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYCR7cHJvcFBhdGh9JHtwcm9wZXJ0eU5hbWV9L3ZhbHVlTGlzdEluZm9gKTtcblxuXHRcdGlmICghdmFsdWVMaXN0SW5mbykge1xuXHRcdFx0TWFzc0VkaXRIYW5kbGVycy5fcmVxdWVzdFZhbHVlTGlzdCh0cmFuc0N0eCwgc291cmNlLCBmaWVsZEluZm9Nb2RlbCwgcHJvcGVydHlOYW1lKTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJlcXVlc3QgYW5kIHVwZGF0ZSBJbiBhbmQgT3V0IFBhcmFtZXRlcnMgaW4gdGhlIE1FRC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSB0cmFuc0N0eCBUaGUgdHJhbnNpZW50IGNvbnRleHQgb2YgdGhlIE1FRC5cblx0ICogQHBhcmFtIHNvdXJjZSBNREMgZmllbGQuXG5cdCAqIEBwYXJhbSBmaWVsZEluZm9Nb2RlbCBSdW50aW1lIG1vZGVsIHdpdGggcGFyYW1ldGVycyBzdG9yZSBpbmZvcm1hdGlvbi5cblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZSBQcm9wZXJ0eSBwYXRoLlxuXHQgKi9cblx0X3JlcXVlc3RWYWx1ZUxpc3Q6IGZ1bmN0aW9uICh0cmFuc0N0eDogQ29udGV4dCwgc291cmNlOiBGaWVsZCwgZmllbGRJbmZvTW9kZWw6IEpTT05Nb2RlbCwgcHJvcGVydHlOYW1lOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBtZXRhUGF0aCA9IE1vZGVsSGVscGVyLmdldE1ldGFQYXRoRm9yQ29udGV4dCh0cmFuc0N0eCk7XG5cdFx0Y29uc3QgcHJvcGVydHlQYXRoID0gKG1ldGFQYXRoICYmIGAke21ldGFQYXRofS8ke3Byb3BlcnR5TmFtZX1gKSBhcyBzdHJpbmc7XG5cdFx0Y29uc3QgZGVwZW5kZW50cyA9IHNvdXJjZT8uZ2V0RGVwZW5kZW50cygpO1xuXHRcdGNvbnN0IGZpZWxkSGVscCA9IHNvdXJjZT8uZ2V0RmllbGRIZWxwKCk7XG5cdFx0Y29uc3QgZmllbGRWYWx1ZUhlbHAgPSBkZXBlbmRlbnRzPy5maW5kKChkZXBlbmRlbnQ6IGFueSkgPT4gZGVwZW5kZW50LmdldElkKCkgPT09IGZpZWxkSGVscCkgYXMgVmFsdWVIZWxwO1xuXHRcdGNvbnN0IHBheWxvYWQgPSAoZmllbGRWYWx1ZUhlbHAuZ2V0RGVsZWdhdGUoKSBhcyBhbnkpPy5wYXlsb2FkIGFzIFZhbHVlSGVscFBheWxvYWQ7XG5cdFx0aWYgKCFmaWVsZFZhbHVlSGVscD8uZ2V0QmluZGluZ0NvbnRleHQoKSkge1xuXHRcdFx0ZmllbGRWYWx1ZUhlbHA/LnNldEJpbmRpbmdDb250ZXh0KHRyYW5zQ3R4KTtcblx0XHR9XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gdHJhbnNDdHguZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRWYWx1ZUxpc3RIZWxwZXIuY3JlYXRlVkhVSU1vZGVsKGZpZWxkVmFsdWVIZWxwLCBwcm9wZXJ0eVBhdGgsIG1ldGFNb2RlbCk7XG5cdFx0Y29uc3QgdmFsdWVMaXN0SW5mbyA9IFZhbHVlTGlzdEhlbHBlci5nZXRWYWx1ZUxpc3RJbmZvKGZpZWxkVmFsdWVIZWxwLCBwcm9wZXJ0eVBhdGgsIHBheWxvYWQpO1xuXG5cdFx0dmFsdWVMaXN0SW5mb1xuXHRcdFx0LnRoZW4oKHZMaW5mb3M6IFZhbHVlTGlzdEluZm9bXSkgPT4ge1xuXHRcdFx0XHRjb25zdCB2TGluZm8gPSB2TGluZm9zWzBdO1xuXHRcdFx0XHRjb25zdCBwcm9wUGF0aCA9XG5cdFx0XHRcdFx0KGZpZWxkSW5mb01vZGVsLmdldFByb3BlcnR5KGAvdmFsdWVzLyR7cHJvcGVydHlOYW1lfWApICYmIFwiL3ZhbHVlcy9cIikgfHxcblx0XHRcdFx0XHQoZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYC91bml0RGF0YS8ke3Byb3BlcnR5TmFtZX1gKSAmJiBcIi91bml0RGF0YS9cIik7XG5cdFx0XHRcdGNvbnN0IGluZm86IGFueSA9IHtcblx0XHRcdFx0XHRpblBhcmFtZXRlcnM6XG5cdFx0XHRcdFx0XHR2TGluZm8udmhQYXJhbWV0ZXJzICYmIFZhbHVlTGlzdEhlbHBlci5nZXRJblBhcmFtZXRlcnModkxpbmZvLnZoUGFyYW1ldGVycykubWFwKChpblBhcmFtOiBhbnkpID0+IGluUGFyYW0uaGVscFBhdGgpLFxuXHRcdFx0XHRcdG91dFBhcmFtZXRlcnM6XG5cdFx0XHRcdFx0XHR2TGluZm8udmhQYXJhbWV0ZXJzICYmXG5cdFx0XHRcdFx0XHRWYWx1ZUxpc3RIZWxwZXIuZ2V0T3V0UGFyYW1ldGVycyh2TGluZm8udmhQYXJhbWV0ZXJzKS5tYXAoKG91dFBhcmFtOiBhbnkpID0+IG91dFBhcmFtLmhlbHBQYXRoKVxuXHRcdFx0XHR9O1xuXHRcdFx0XHRmaWVsZEluZm9Nb2RlbC5zZXRQcm9wZXJ0eShgJHtwcm9wUGF0aH0ke3Byb3BlcnR5TmFtZX0vdmFsdWVMaXN0SW5mb2AsIGluZm8pO1xuXHRcdFx0XHRpZiAoaW5mby5vdXRQYXJhbWV0ZXJzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRNYXNzRWRpdEhhbmRsZXJzLl91cGRhdGVGaWVsZFBhdGhTdWdnZXN0aW9ucyhmaWVsZEluZm9Nb2RlbCwgYC92YWx1ZXMvJHtwcm9wZXJ0eU5hbWV9YCwgZmFsc2UsIHRydWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKCgpID0+IHtcblx0XHRcdFx0TG9nLndhcm5pbmcoYE1hc3MgRWRpdDogQ291bGRuJ3QgbG9hZCB2YWx1ZUxpc3QgaW5mbyBmb3IgJHtwcm9wZXJ0eVBhdGh9YCk7XG5cdFx0XHR9KTtcblx0fSxcblxuXHQvKipcblx0ICogR2V0IGZpZWxkIGhlbHAgY29udHJvbCBmcm9tIE1EQyBmaWVsZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSB0cmFuc0N0eCBUaGUgdHJhbnNpZW50IGNvbnRleHQgb2YgdGhlIE1FRC5cblx0ICogQHBhcmFtIHNvdXJjZSBNREMgZmllbGQuXG5cdCAqIEByZXR1cm5zIEZpZWxkIEhlbHAgY29udHJvbC5cblx0ICovXG5cdF9nZXRWYWx1ZUhlbHA6IGZ1bmN0aW9uICh0cmFuc0N0eDogQ29udGV4dCwgc291cmNlOiBGaWVsZCk6IGFueSB7XG5cdFx0Y29uc3QgZGVwZW5kZW50cyA9IHNvdXJjZT8uZ2V0RGVwZW5kZW50cygpO1xuXHRcdGNvbnN0IGZpZWxkSGVscCA9IHNvdXJjZT8uZ2V0RmllbGRIZWxwKCk7XG5cdFx0cmV0dXJuIGRlcGVuZGVudHM/LmZpbmQoKGRlcGVuZGVudDogYW55KSA9PiBkZXBlbmRlbnQuZ2V0SWQoKSA9PT0gZmllbGRIZWxwKTtcblx0fSxcblxuXHQvKipcblx0ICogQ29sbGVkIG9uIGRyb3AgZG93biBzZWxlY3Rpb24gb2YgVkhEIG9wdGlvbi5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSBzb3VyY2UgQ3VzdG9tIE1hc3MgRWRpdCBTZWxlY3QgY29udHJvbC5cblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZSBQcm9wZXJ0eSBwYXRoLlxuXHQgKiBAcGFyYW0gc2VsZWN0S2V5IFByZXZpb3VzIGtleSBiZWZvcmUgdGhlIFZIRCB3YXMgc2VsZWN0ZWQuXG5cdCAqL1xuXHRfb25WSFNlbGVjdDogZnVuY3Rpb24gKHNvdXJjZTogYW55LCBwcm9wZXJ0eU5hbWU6IHN0cmluZywgc2VsZWN0S2V5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHQvLyBDYWxsZWQgZm9yXG5cdFx0Ly8gMS4gVkhEIHNlbGVjdGVkLlxuXG5cdFx0Y29uc3QgZmllbGRJbmZvTW9kZWwgPSBzb3VyY2UgJiYgc291cmNlLmdldE1vZGVsKFwiZmllbGRzSW5mb1wiKTtcblx0XHRjb25zdCBwcm9wUGF0aCA9XG5cdFx0XHQoZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYC92YWx1ZXMvJHtwcm9wZXJ0eU5hbWV9YCkgJiYgXCIvdmFsdWVzL1wiKSB8fFxuXHRcdFx0KGZpZWxkSW5mb01vZGVsLmdldFByb3BlcnR5KGAvdW5pdERhdGEvJHtwcm9wZXJ0eU5hbWV9YCkgJiYgXCIvdW5pdERhdGEvXCIpO1xuXHRcdGNvbnN0IHRyYW5zQ3R4ID0gc291cmNlLmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0Y29uc3QgZmllbGRWYWx1ZUhlbHAgPSBNYXNzRWRpdEhhbmRsZXJzLl9nZXRWYWx1ZUhlbHAodHJhbnNDdHgsIHNvdXJjZS5nZXRQYXJlbnQoKSk7XG5cdFx0aWYgKCFmaWVsZFZhbHVlSGVscD8uZ2V0QmluZGluZ0NvbnRleHQoKSkge1xuXHRcdFx0ZmllbGRWYWx1ZUhlbHA/LnNldEJpbmRpbmdDb250ZXh0KHRyYW5zQ3R4KTtcblx0XHR9XG5cdFx0c291cmNlLmZpcmVWYWx1ZUhlbHBSZXF1ZXN0KCk7XG5cblx0XHRmaWVsZEluZm9Nb2RlbC5zZXRQcm9wZXJ0eShgJHtwcm9wUGF0aCArIHByb3BlcnR5TmFtZX0vc2VsZWN0ZWRLZXlgLCBzZWxlY3RLZXkpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXRzIFByb3BlcnR5IG5hbWUgZnJvbSBzZWxlY3Rpb24ga2V5LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIGtleSBTZWxlY3Rpb24ga2V5LlxuXHQgKiBAcmV0dXJucyBQcm9wZXJ0eSBuYW1lLlxuXHQgKi9cblx0X2dldFByb3BlcnR5TmFtZUZyb21LZXk6IGZ1bmN0aW9uIChrZXk6IHN0cmluZykge1xuXHRcdGxldCBwcm9wZXJ0eU5hbWUgPSBcIlwiO1xuXHRcdGlmIChrZXkuc3RhcnRzV2l0aChcIkRlZmF1bHQvXCIpIHx8IGtleS5zdGFydHNXaXRoKFwiQ2xlYXJGaWVsZFZhbHVlL1wiKSB8fCBrZXkuc3RhcnRzV2l0aChcIlVzZVZhbHVlSGVscFZhbHVlL1wiKSkge1xuXHRcdFx0cHJvcGVydHlOYW1lID0ga2V5LnN1YnN0cmluZyhrZXkuaW5kZXhPZihcIi9cIikgKyAxKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cHJvcGVydHlOYW1lID0ga2V5LnN1YnN0cmluZygwLCBrZXkubGFzdEluZGV4T2YoXCIvXCIpKTtcblx0XHR9XG5cdFx0cmV0dXJuIHByb3BlcnR5TmFtZTtcblx0fSxcblxuXHQvKipcblx0ICogVXBkYXRlIHNlbGVjdGlvbiB0byBDdXN0b20gTWFzcyBFZGl0IFNlbGVjdCBmcm9tIE1EQyBmaWVsZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSBzb3VyY2UgTURDIGZpZWxkLlxuXHQgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFByb3BlcnR5IHBhdGguXG5cdCAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byB1cGRhdGUuXG5cdCAqIEBwYXJhbSBmdWxsVGV4dCBGdWxsIHRleHQgdG8gdXNlLlxuXHQgKi9cblx0X3VwZGF0ZVNlbGVjdEtleTogZnVuY3Rpb24gKHNvdXJjZTogRmllbGQsIHByb3BlcnR5TmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBmdWxsVGV4dD86IGFueSk6IHZvaWQge1xuXHRcdC8vIENhbGxlZCBmb3Jcblx0XHQvLyAxLiBWSEQgcHJvcGVydHkgY2hhbmdlXG5cdFx0Ly8gMi4gT3V0IFBhcmFtZXRlcnMuXG5cdFx0Ly8gMy4gVHJhbnNpZW50IGNvbnRleHQgcHJvcGVydHkgY2hhbmdlLlxuXG5cdFx0Y29uc3QgY29tYm9Cb3ggPSBzb3VyY2UuZ2V0Q29udGVudCgpIGFzIENvbWJvQm94O1xuXHRcdGlmICghY29tYm9Cb3ggfHwgIXByb3BlcnR5TmFtZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRsZXQga2V5OiBzdHJpbmcgPSBjb21ib0JveC5nZXRTZWxlY3RlZEtleSgpO1xuXHRcdGlmICgoa2V5LnN0YXJ0c1dpdGgoXCJEZWZhdWx0L1wiKSB8fCBrZXkuc3RhcnRzV2l0aChcIkNsZWFyRmllbGRWYWx1ZS9cIikpICYmICF2YWx1ZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IGZvcm1hdHRlZFRleHQgPSBNYXNzRWRpdEhhbmRsZXJzLl92YWx1ZUV4aXN0cyhmdWxsVGV4dCkgPyBmdWxsVGV4dCA6IHZhbHVlO1xuXHRcdGNvbnN0IGZpZWxkSW5mb01vZGVsID0gc291cmNlICYmIChzb3VyY2UuZ2V0TW9kZWwoXCJmaWVsZHNJbmZvXCIpIGFzIEpTT05Nb2RlbCk7XG5cdFx0Y29uc3QgdmFsdWVzID1cblx0XHRcdGZpZWxkSW5mb01vZGVsLmdldFByb3BlcnR5KGAvdmFsdWVzLyR7cHJvcGVydHlOYW1lfWApIHx8IGZpZWxkSW5mb01vZGVsLmdldFByb3BlcnR5KGAvdW5pdERhdGEvJHtwcm9wZXJ0eU5hbWV9YCkgfHwgW107XG5cdFx0Y29uc3QgcHJvcFBhdGggPVxuXHRcdFx0KGZpZWxkSW5mb01vZGVsLmdldFByb3BlcnR5KGAvdmFsdWVzLyR7cHJvcGVydHlOYW1lfWApICYmIFwiL3ZhbHVlcy9cIikgfHxcblx0XHRcdChmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShgL3VuaXREYXRhLyR7cHJvcGVydHlOYW1lfWApICYmIFwiL3VuaXREYXRhL1wiKTtcblxuXHRcdGNvbnN0IHJlbGF0ZWRGaWVsZCA9IHZhbHVlcy5maW5kKChmaWVsZERhdGE6IGFueSkgPT4gZmllbGREYXRhPy50ZXh0SW5mbz8udmFsdWUgPT09IHZhbHVlIHx8IGZpZWxkRGF0YS50ZXh0ID09PSB2YWx1ZSk7XG5cblx0XHRpZiAocmVsYXRlZEZpZWxkKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGZ1bGxUZXh0ICYmXG5cdFx0XHRcdHJlbGF0ZWRGaWVsZC50ZXh0SW5mbyAmJlxuXHRcdFx0XHRyZWxhdGVkRmllbGQudGV4dEluZm8uZGVzY3JpcHRpb25QYXRoICYmXG5cdFx0XHRcdChyZWxhdGVkRmllbGQudGV4dCAhPSBmb3JtYXR0ZWRUZXh0IHx8IHJlbGF0ZWRGaWVsZC50ZXh0SW5mby5mdWxsVGV4dCAhPSBmb3JtYXR0ZWRUZXh0KVxuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIFVwZGF0ZSB0aGUgZnVsbCB0ZXh0IG9ubHkgd2hlbiBwcm92aWRlZC5cblx0XHRcdFx0cmVsYXRlZEZpZWxkLnRleHQgPSBmb3JtYXR0ZWRUZXh0O1xuXHRcdFx0XHRyZWxhdGVkRmllbGQudGV4dEluZm8uZnVsbFRleHQgPSBmb3JtYXR0ZWRUZXh0O1xuXHRcdFx0XHRyZWxhdGVkRmllbGQudGV4dEluZm8uZGVzY3JpcHRpb24gPSBzb3VyY2UuZ2V0QWRkaXRpb25hbFZhbHVlKCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocmVsYXRlZEZpZWxkLmtleSA9PT0ga2V5KSB7XG5cdFx0XHRcdGZpZWxkSW5mb01vZGVsLnNldFByb3BlcnR5KGAke3Byb3BQYXRoICsgcHJvcGVydHlOYW1lfS9zZWxlY3RlZEtleWAsIGtleSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGtleSA9IHJlbGF0ZWRGaWVsZC5rZXk7XG5cdFx0fSBlbHNlIGlmIChbdW5kZWZpbmVkLCBudWxsLCBcIlwiXS5pbmRleE9mKHZhbHVlKSA9PT0gLTEpIHtcblx0XHRcdGtleSA9IGAke3Byb3BlcnR5TmFtZX0vJHt2YWx1ZX1gO1xuXHRcdFx0Y29uc3Qgc2VsZWN0aW9uSW5mbyA9IHtcblx0XHRcdFx0dGV4dDogZm9ybWF0dGVkVGV4dCxcblx0XHRcdFx0a2V5LFxuXHRcdFx0XHR0ZXh0SW5mbzoge1xuXHRcdFx0XHRcdGRlc2NyaXB0aW9uOiBzb3VyY2UuZ2V0QWRkaXRpb25hbFZhbHVlKCksXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb25QYXRoOiB2YWx1ZXMgJiYgdmFsdWVzLnRleHRJbmZvICYmIHZhbHVlcy50ZXh0SW5mby5kZXNjcmlwdGlvblBhdGgsXG5cdFx0XHRcdFx0ZnVsbFRleHQ6IGZvcm1hdHRlZFRleHQsXG5cdFx0XHRcdFx0dGV4dEFycmFuZ2VtZW50OiBzb3VyY2UuZ2V0RGlzcGxheSgpLFxuXHRcdFx0XHRcdHZhbHVlOiBzb3VyY2UuZ2V0VmFsdWUoKSxcblx0XHRcdFx0XHR2YWx1ZVBhdGg6IHByb3BlcnR5TmFtZVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0dmFsdWVzLnB1c2goc2VsZWN0aW9uSW5mbyk7XG5cdFx0XHR2YWx1ZXMuc2VsZWN0T3B0aW9ucyA9IHZhbHVlcy5zZWxlY3RPcHRpb25zIHx8IFtdO1xuXHRcdFx0dmFsdWVzLnNlbGVjdE9wdGlvbnMucHVzaChzZWxlY3Rpb25JbmZvKTtcblx0XHRcdGZpZWxkSW5mb01vZGVsLnNldFByb3BlcnR5KHByb3BQYXRoICsgcHJvcGVydHlOYW1lLCB2YWx1ZXMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRrZXkgPSBgRGVmYXVsdC8ke3Byb3BlcnR5TmFtZX1gO1xuXHRcdH1cblxuXHRcdGZpZWxkSW5mb01vZGVsLnNldFByb3BlcnR5KGAke3Byb3BQYXRoICsgcHJvcGVydHlOYW1lfS9zZWxlY3RlZEtleWAsIGtleSk7XG5cdFx0TWFzc0VkaXRIYW5kbGVycy5fdXBkYXRlUmVzdWx0cyhjb21ib0JveCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCBWYWx1ZSBmcm9tIERyb3AgZG93bi5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSBzb3VyY2UgRHJvcCBkb3duIGNvbnRyb2wuXG5cdCAqIEByZXR1cm5zIFZhbHVlIG9mIHNlbGVjdGlvbi5cblx0ICovXG5cdF9nZXRWYWx1ZTogZnVuY3Rpb24gKHNvdXJjZTogQ29udHJvbCkge1xuXHRcdHJldHVybiBzb3VyY2UuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCkgPT09IFwic2FwLmZlLmNvcmUuY29udHJvbHMuTWFzc0VkaXRTZWxlY3RcIlxuXHRcdFx0PyAoc291cmNlIGFzIFNlbGVjdCkuZ2V0U2VsZWN0ZWRJdGVtKCk/LmdldFRleHQoKVxuXHRcdFx0OiAoc291cmNlIGFzIENvbWJvQm94KS5nZXRWYWx1ZSgpO1xuXHR9LFxuXG5cdF9nZXRWYWx1ZU9uRW1wdHk6IGZ1bmN0aW9uIChvU291cmNlOiBhbnksIGZpZWxkc0luZm9Nb2RlbDogSlNPTk1vZGVsLCB2YWx1ZTogYW55LCBzUHJvcGVydHlOYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoIXZhbHVlKSB7XG5cdFx0XHRjb25zdCB2YWx1ZXMgPVxuXHRcdFx0XHRmaWVsZHNJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYC92YWx1ZXMvJHtzUHJvcGVydHlOYW1lfWApIHx8IGZpZWxkc0luZm9Nb2RlbC5nZXRQcm9wZXJ0eShgL3VuaXREYXRhLyR7c1Byb3BlcnR5TmFtZX1gKSB8fCBbXTtcblx0XHRcdGlmICh2YWx1ZXMudW5pdFByb3BlcnR5KSB7XG5cdFx0XHRcdHZhbHVlID0gMDtcblx0XHRcdFx0b1NvdXJjZS5zZXRWYWx1ZSh2YWx1ZSk7XG5cdFx0XHR9IGVsc2UgaWYgKHZhbHVlcy5pbnB1dFR5cGUgPT09IFwiQ2hlY2tCb3hcIikge1xuXHRcdFx0XHR2YWx1ZSA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdmFsdWU7XG5cdH0sXG5cblx0X3ZhbHVlRXhpc3RzOiBmdW5jdGlvbiAodmFsdWU6IGFueSkge1xuXHRcdHJldHVybiB2YWx1ZSAhPSB1bmRlZmluZWQgJiYgdmFsdWUgIT0gbnVsbDtcblx0fSxcblxuXHQvKipcblx0ICogVXBkYXRlcyBzZWxlY3Rpb25zIHRvIHJ1bnRpbWUgbW9kZWwuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAcGFyYW0gb1NvdXJjZSBEcm9wIGRvd24gY29udHJvbC5cblx0ICogQHBhcmFtIGFQYXJhbXMgUGFydHMgb2Yga2V5IGluIHJ1bnRpbWUgbW9kZWwuXG5cdCAqIEBwYXJhbSB1cGRhdGVUcmFuc0N0eCBTaG91bGQgdHJhbnNpZW50IGNvbnRleHQgYmUgdXBkYXRlZCB3aXRoIHRoZSB2YWx1ZS5cblx0ICovXG5cdF91cGRhdGVSZXN1bHRzOiBmdW5jdGlvbiAob1NvdXJjZTogYW55LCBhUGFyYW1zOiBBcnJheTxzdHJpbmc+ID0gW10sIHVwZGF0ZVRyYW5zQ3R4OiBib29sZWFuKSB7XG5cdFx0Ly8gQ2FsbGVkIGZvclxuXHRcdC8vIDEuIFZIRCBwcm9wZXJ0eSBjaGFuZ2UuXG5cdFx0Ly8gMi4gT3V0IHBhcmFtZXRlci5cblx0XHQvLyAzLiB0cmFuc2llbnQgY29udGV4dCBwcm9wZXJ0eSBjaGFuZ2UuXG5cdFx0Y29uc3QgZmllbGRzSW5mb01vZGVsID0gb1NvdXJjZSAmJiBvU291cmNlLmdldE1vZGVsKFwiZmllbGRzSW5mb1wiKTtcblx0XHRjb25zdCBvRmllbGRzSW5mb0RhdGEgPSBmaWVsZHNJbmZvTW9kZWwgJiYgZmllbGRzSW5mb01vZGVsLmdldERhdGEoKTtcblx0XHRsZXQgdmFsdWUgPSBNYXNzRWRpdEhhbmRsZXJzLl9nZXRWYWx1ZShvU291cmNlIGFzIENvbnRyb2wpO1xuXHRcdGFQYXJhbXMgPSBhUGFyYW1zLmxlbmd0aCA+IDAgPyBhUGFyYW1zIDogb1NvdXJjZSAmJiBvU291cmNlLmdldFNlbGVjdGVkS2V5KCkgJiYgb1NvdXJjZS5nZXRTZWxlY3RlZEtleSgpLnNwbGl0KFwiL1wiKTtcblxuXHRcdGxldCBvRGF0YU9iamVjdDtcblx0XHRjb25zdCBzUHJvcGVydHlOYW1lID0gb1NvdXJjZS5kYXRhKFwiZmllbGRQYXRoXCIpO1xuXG5cdFx0aWYgKGFQYXJhbXNbMF0gPT09IFwiRGVmYXVsdFwiKSB7XG5cdFx0XHRvRGF0YU9iamVjdCA9IHtcblx0XHRcdFx0a2V5VmFsdWU6IGFQYXJhbXNbMV0sXG5cdFx0XHRcdHZhbHVlOiBhUGFyYW1zWzBdXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSBpZiAoYVBhcmFtc1swXSA9PT0gXCJDbGVhckZpZWxkVmFsdWVcIikge1xuXHRcdFx0dmFsdWUgPSBcIlwiO1xuXHRcdFx0dmFsdWUgPSBNYXNzRWRpdEhhbmRsZXJzLl9nZXRWYWx1ZU9uRW1wdHkob1NvdXJjZSwgZmllbGRzSW5mb01vZGVsLCB2YWx1ZSwgc1Byb3BlcnR5TmFtZSk7XG5cdFx0XHRvRGF0YU9iamVjdCA9IHtcblx0XHRcdFx0a2V5VmFsdWU6IGFQYXJhbXNbMV0sXG5cdFx0XHRcdHZhbHVlOiB2YWx1ZVxuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKCFhUGFyYW1zKSB7XG5cdFx0XHR2YWx1ZSA9IE1hc3NFZGl0SGFuZGxlcnMuX2dldFZhbHVlT25FbXB0eShvU291cmNlLCBmaWVsZHNJbmZvTW9kZWwsIHZhbHVlLCBzUHJvcGVydHlOYW1lKTtcblx0XHRcdG9EYXRhT2JqZWN0ID0ge1xuXHRcdFx0XHRrZXlWYWx1ZTogc1Byb3BlcnR5TmFtZSxcblx0XHRcdFx0dmFsdWU6IHZhbHVlXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eU5hbWUgPSBhUGFyYW1zLnNsaWNlKDAsIC0xKS5qb2luKFwiL1wiKTtcblx0XHRcdGNvbnN0IHByb3BlcnR5VmFsdWVzID1cblx0XHRcdFx0ZmllbGRzSW5mb01vZGVsLmdldFByb3BlcnR5KGAvdmFsdWVzLyR7cHJvcGVydHlOYW1lfWApIHx8IGZpZWxkc0luZm9Nb2RlbC5nZXRQcm9wZXJ0eShgL3VuaXREYXRhLyR7cHJvcGVydHlOYW1lfWApIHx8IFtdO1xuXG5cdFx0XHRjb25zdCByZWxhdGVkRmllbGQgPSAocHJvcGVydHlWYWx1ZXMgfHwgW10pLmZpbmQoZnVuY3Rpb24gKG9GaWVsZERhdGE6IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gb0ZpZWxkRGF0YT8udGV4dEluZm8/LnZhbHVlID09PSB2YWx1ZSB8fCBvRmllbGREYXRhLnRleHQgPT09IHZhbHVlO1xuXHRcdFx0fSk7XG5cdFx0XHRvRGF0YU9iamVjdCA9IHtcblx0XHRcdFx0a2V5VmFsdWU6IHByb3BlcnR5TmFtZSxcblx0XHRcdFx0dmFsdWU6XG5cdFx0XHRcdFx0cmVsYXRlZEZpZWxkLnRleHRJbmZvICYmIE1hc3NFZGl0SGFuZGxlcnMuX3ZhbHVlRXhpc3RzKHJlbGF0ZWRGaWVsZC50ZXh0SW5mby52YWx1ZSlcblx0XHRcdFx0XHRcdD8gcmVsYXRlZEZpZWxkLnRleHRJbmZvLnZhbHVlXG5cdFx0XHRcdFx0XHQ6IHJlbGF0ZWRGaWVsZC50ZXh0XG5cdFx0XHR9O1xuXHRcdH1cblx0XHRsZXQgYkV4aXN0aW5nRWxlbWVudGluZGV4ID0gLTE7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBvRmllbGRzSW5mb0RhdGEucmVzdWx0cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKG9GaWVsZHNJbmZvRGF0YS5yZXN1bHRzW2ldLmtleVZhbHVlID09PSBvRGF0YU9iamVjdC5rZXlWYWx1ZSkge1xuXHRcdFx0XHRiRXhpc3RpbmdFbGVtZW50aW5kZXggPSBpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoYkV4aXN0aW5nRWxlbWVudGluZGV4ICE9PSAtMSkge1xuXHRcdFx0b0ZpZWxkc0luZm9EYXRhLnJlc3VsdHNbYkV4aXN0aW5nRWxlbWVudGluZGV4XSA9IG9EYXRhT2JqZWN0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvRmllbGRzSW5mb0RhdGEucmVzdWx0cy5wdXNoKG9EYXRhT2JqZWN0KTtcblx0XHR9XG5cdFx0aWYgKHVwZGF0ZVRyYW5zQ3R4ICYmICFvRGF0YU9iamVjdC5rZXlWYWx1ZS5pbmNsdWRlcyhcIi9cIikpIHtcblx0XHRcdGNvbnN0IHRyYW5zQ3R4ID0gb1NvdXJjZS5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdFx0aWYgKGFQYXJhbXNbMF0gPT09IFwiRGVmYXVsdFwiIHx8IGFQYXJhbXNbMF0gPT09IFwiQ2xlYXJGaWVsZFZhbHVlXCIpIHtcblx0XHRcdFx0dHJhbnNDdHguc2V0UHJvcGVydHkob0RhdGFPYmplY3Qua2V5VmFsdWUsIG51bGwpO1xuXHRcdFx0fSBlbHNlIGlmIChvRGF0YU9iamVjdCkge1xuXHRcdFx0XHR0cmFuc0N0eC5zZXRQcm9wZXJ0eShvRGF0YU9iamVjdC5rZXlWYWx1ZSwgb0RhdGFPYmplY3QudmFsdWUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgTWFzc0VkaXRIYW5kbGVycztcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7OztFQXVCQSxNQUFNQSxnQkFBcUIsR0FBRztJQUM3QjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLHFCQUFxQixFQUFFLFVBQVVDLFFBQWEsRUFBRUMsWUFBb0IsRUFBRUMsVUFBa0IsRUFBRTtNQUN6RjtNQUNBO01BQ0E7O01BRUEsTUFBTUMsTUFBTSxHQUFHQyxJQUFJLENBQUNDLElBQUksQ0FBQ0gsVUFBVSxDQUFVO01BQzdDLE1BQU1JLFFBQVEsR0FBR0gsTUFBTSxJQUFLQSxNQUFNLENBQUNJLGlCQUFpQixFQUFjO01BQ2xFLE1BQU1DLGNBQWMsR0FBR0wsTUFBTSxJQUFLQSxNQUFNLENBQUNNLFFBQVEsQ0FBQyxZQUFZLENBQWU7TUFDN0UsTUFBTUMsTUFBTSxHQUNYRixjQUFjLENBQUNH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
|
|
496
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNYXNzRWRpdEhhbmRsZXJzIiwiY29udGV4dFByb3BlcnR5Q2hhbmdlIiwibmV3VmFsdWUiLCJkYXRhUHJvcGVydHkiLCJtZGNGaWVsZElkIiwic291cmNlIiwiQ29yZSIsImJ5SWQiLCJ0cmFuc0N0eCIsImdldEJpbmRpbmdDb250ZXh0IiwiZmllbGRJbmZvTW9kZWwiLCJnZXRNb2RlbCIsInZhbHVlcyIsImdldFByb3BlcnR5IiwiaW5wdXRUeXBlIiwidmFsdWVMaXN0SW5mbyIsIl9zZXRWYWx1ZUxpc3RJbmZvIiwiaXNEaWFsb2dPcGVuIiwiZ2V0VmlzaWJsZSIsIl91cGRhdGVTZWxlY3RLZXkiLCJoYW5kbGVNRENGaWVsZENoYW5nZSIsImV2ZW50IiwicHJvcGVydHlOYW1lIiwiZ2V0U291cmNlIiwiY2hhbmdlUHJvbWlzZSIsImdldFBhcmFtZXRlciIsImNvbWJvQm94IiwiZ2V0Q29udGVudCIsInRoZW4iLCJfdXBkYXRlU2VsZWN0S2V5Rm9yTURDRmllbGRDaGFuZ2UiLCJiaW5kIiwiY2F0Y2giLCJlcnIiLCJMb2ciLCJ3YXJuaW5nIiwiaGFuZGxlU2VsZWN0aW9uQ2hhbmdlIiwia2V5IiwiZ2V0U2VsZWN0ZWRLZXkiLCJwYXJhbXMiLCJzcGxpdCIsInByZXZJdGVtIiwic2VsZWN0S2V5IiwiZ2V0S2V5Iiwic2xpY2UiLCJqb2luIiwiX29uVkhTZWxlY3QiLCJfZ2V0UHJvcGVydHlOYW1lRnJvbUtleSIsIl91cGRhdGVTdWdnZXN0aW9uRm9yRmllbGRzV2l0aEluUGFyYW1ldGVycyIsInN0YXJ0c1dpdGgiLCJfdXBkYXRlU3VnZ2VzdGlvbkZvckZpZWxkc1dpdGhPdXRQYXJhbWV0ZXJzIiwiX3VwZGF0ZVJlc3VsdHMiLCJ2YWx1ZSIsImZvcm1hdHRlZFZhbHVlIiwiZ2V0Rm9ybUZvcm1hdHRlZFZhbHVlIiwicmVzZXRWYWx1ZXMiLCJrZWVwRXhpc3RpbmdTZWxlY3Rpb24iLCJ1bml0RGF0YSIsImZpZWxkUGF0aHMiLCJPYmplY3QiLCJrZXlzIiwidW5pdEZpZWxkUGF0aHMiLCJmb3JFYWNoIiwiX3VwZGF0ZUluUGFyYW1ldGVyU3VnZ2V0aW9ucyIsInBhdGhQcmVmaXgiLCJzcmNQcm9wZXJ0eU5hbWUiLCJpblBhcmFtZXRlcnMiLCJsZW5ndGgiLCJpbmNsdWRlcyIsIl91cGRhdGVGaWVsZFBhdGhTdWdnZXN0aW9ucyIsIm91dFBhcmFtZXRlcnMiLCJfdXBkYXRlT3V0UGFyYW1ldGVyU3VnZ2V0aW9ucyIsIm91dFBhcmFtZXRlciIsImZpZWxkUGF0aEFic29sdXRlIiwib3B0aW9ucyIsImRlZmF1bHRPcHRpb25zIiwic2VsZWN0ZWRLZXkiLCJleGlzdGluZ1NlbGVjdGlvbiIsImZpbmQiLCJvcHRpb24iLCJzZWxlY3RPcHRpb25zIiwiZGVmYXVsdE9wdGlvbiIsInB1c2giLCJzZWxlY3RPcHRpb24iLCJzZXRQcm9wZXJ0eSIsInByb3BQYXRoIiwiX3JlcXVlc3RWYWx1ZUxpc3QiLCJtZXRhUGF0aCIsIk1vZGVsSGVscGVyIiwiZ2V0TWV0YVBhdGhGb3JDb250ZXh0IiwicHJvcGVydHlQYXRoIiwiZGVwZW5kZW50cyIsImdldERlcGVuZGVudHMiLCJmaWVsZEhlbHAiLCJnZXRGaWVsZEhlbHAiLCJmaWVsZFZhbHVlSGVscCIsImRlcGVuZGVudCIsImdldElkIiwicGF5bG9hZCIsImdldERlbGVnYXRlIiwic2V0QmluZGluZ0NvbnRleHQiLCJtZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJWYWx1ZUxpc3RIZWxwZXIiLCJjcmVhdGVWSFVJTW9kZWwiLCJnZXRWYWx1ZUxpc3RJbmZvIiwidkxpbmZvcyIsInZMaW5mbyIsImluZm8iLCJ2aFBhcmFtZXRlcnMiLCJnZXRJblBhcmFtZXRlcnMiLCJtYXAiLCJpblBhcmFtIiwiaGVscFBhdGgiLCJnZXRPdXRQYXJhbWV0ZXJzIiwib3V0UGFyYW0iLCJfZ2V0VmFsdWVIZWxwIiwiZ2V0UGFyZW50IiwiZmlyZVZhbHVlSGVscFJlcXVlc3QiLCJzdWJzdHJpbmciLCJpbmRleE9mIiwibGFzdEluZGV4T2YiLCJmdWxsVGV4dCIsImZvcm1hdHRlZFRleHQiLCJfdmFsdWVFeGlzdHMiLCJyZWxhdGVkRmllbGQiLCJmaWVsZERhdGEiLCJ0ZXh0SW5mbyIsInRleHQiLCJkZXNjcmlwdGlvblBhdGgiLCJkZXNjcmlwdGlvbiIsImdldEFkZGl0aW9uYWxWYWx1ZSIsInVuZGVmaW5lZCIsInNlbGVjdGlvbkluZm8iLCJ0ZXh0QXJyYW5nZW1lbnQiLCJnZXREaXNwbGF5IiwiZ2V0VmFsdWUiLCJ2YWx1ZVBhdGgiLCJfZ2V0VmFsdWUiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJnZXRTZWxlY3RlZEl0ZW0iLCJnZXRUZXh0IiwiX2dldFZhbHVlT25FbXB0eSIsIm9Tb3VyY2UiLCJmaWVsZHNJbmZvTW9kZWwiLCJzUHJvcGVydHlOYW1lIiwidW5pdFByb3BlcnR5Iiwic2V0VmFsdWUiLCJhUGFyYW1zIiwidXBkYXRlVHJhbnNDdHgiLCJvRmllbGRzSW5mb0RhdGEiLCJnZXREYXRhIiwib0RhdGFPYmplY3QiLCJkYXRhIiwicHJvcGVydHlGdWxseVF1YWxpZmllZE5hbWUiLCJrZXlWYWx1ZSIsInByb3BlcnR5VmFsdWVzIiwib0ZpZWxkRGF0YSIsImJFeGlzdGluZ0VsZW1lbnRpbmRleCIsImkiLCJyZXN1bHRzIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJNYXNzRWRpdEhhbmRsZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29uc3RydWN0b3IgZm9yIGEgbmV3IFZpc3VhbCBGaWx0ZXIgQ29udGFpbmVyLlxuICogVXNlZCBmb3IgdmlzdWFsIGZpbHRlcnNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3NJZF0gSUQgZm9yIHRoZSBuZXcgY29udHJvbCwgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgaWYgbm8gSUQgaXMgZ2l2ZW5cbiAqIEBleHRlbmRzIHNhcC51aS5tZGMuZmlsdGVyYmFyLklGaWx0ZXJDb250YWluZXJcbiAqIEBjbGFzc1xuICogQHByaXZhdGVcbiAqIEBhbGlhcyBzYXAuZmUuY29yZS5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyQ29udGFpbmVyXG4gKi9cbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFZhbHVlSGVscFBheWxvYWQsIFZhbHVlTGlzdEluZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC92YWx1ZWhlbHAvVmFsdWVMaXN0SGVscGVyXCI7XG5pbXBvcnQgVmFsdWVMaXN0SGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL3ZhbHVlaGVscC9WYWx1ZUxpc3RIZWxwZXJcIjtcbmltcG9ydCB0eXBlIENvbWJvQm94IGZyb20gXCJzYXAvbS9Db21ib0JveFwiO1xuaW1wb3J0IHR5cGUgU2VsZWN0IGZyb20gXCJzYXAvbS9TZWxlY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgdHlwZSBGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IHR5cGUgVmFsdWVIZWxwIGZyb20gXCJzYXAvdWkvbWRjL1ZhbHVlSGVscFwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5cbmNvbnN0IE1hc3NFZGl0SGFuZGxlcnM6IGFueSA9IHtcblx0LyoqXG5cdCAqIENhbGxlZCBmb3IgcHJvcGVydHkgY2hhbmdlIGluIHRoZSB0cmFuc2llbnQgY29udGV4dC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSBuZXdWYWx1ZSBOZXcgdmFsdWUgb2YgdGhlIHByb3BlcnR5LlxuXHQgKiBAcGFyYW0gZGF0YVByb3BlcnR5IEZpbmFsIGNvbnRleHQgcmV0dXJuZWQgYWZ0ZXIgdGhlIHBhZ2luYXRvciBhY3Rpb25cblx0ICogQHBhcmFtIG1kY0ZpZWxkSWQgRmluYWwgY29udGV4dCByZXR1cm5lZCBhZnRlciB0aGUgcGFnaW5hdG9yIGFjdGlvblxuXHQgKi9cblx0Y29udGV4dFByb3BlcnR5Q2hhbmdlOiBmdW5jdGlvbiAobmV3VmFsdWU6IGFueSwgZGF0YVByb3BlcnR5OiBzdHJpbmcsIG1kY0ZpZWxkSWQ6IHN0cmluZykge1xuXHRcdC8vIENhbGxlZCBmb3Jcblx0XHQvLyAxLiBPdXQgUGFyYW1ldGVycy5cblx0XHQvLyAyLiBUcmFuc2llbnQgY29udGV4dCBwcm9wZXJ0eSBjaGFuZ2UuXG5cblx0XHRjb25zdCBzb3VyY2UgPSBDb3JlLmJ5SWQobWRjRmllbGRJZCkgYXMgRmllbGQ7XG5cdFx0Y29uc3QgdHJhbnNDdHggPSBzb3VyY2UgJiYgKHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQpO1xuXHRcdGNvbnN0IGZpZWxkSW5mb01vZGVsID0gc291cmNlICYmIChzb3VyY2UuZ2V0TW9kZWwoXCJmaWVsZHNJbmZvXCIpIGFzIEpTT05Nb2RlbCk7XG5cdFx0Y29uc3QgdmFsdWVzID1cblx0XHRcdGZpZWxkSW5mb01vZGVsLmdldFByb3BlcnR5KGAvdmFsdWVzLyR7ZGF0YVByb3BlcnR5fWApIHx8IGZpZWxkSW5mb01vZGVsLmdldFByb3BlcnR5KGAvdW5pdERhdGEvJHtkYXRhUHJvcGVydHl9YCkgfHwgW107XG5cblx0XHRpZiAodHJhbnNDdHggJiYgKHZhbHVlcy5pbnB1dFR5cGUgPT09IFwiSW5wdXRXaXRoVmFsdWVIZWxwXCIgfHwgdmFsdWVzLmlucHV0VHlwZSA9PT0gXCJJbnB1dFdpdGhVbml0XCIpICYmICF2YWx1ZXMudmFsdWVMaXN0SW5mbykge1xuXHRcdFx0TWFzc0VkaXRIYW5kbGVycy5fc2V0VmFsdWVMaXN0SW5mbyh0cmFuc0N0eCwgc291cmNlLCBmaWVsZEluZm9Nb2RlbCwgZGF0YVByb3BlcnR5KTtcblx0XHR9XG5cblx0XHRjb25zdCBpc0RpYWxvZ09wZW4gPSBmaWVsZEluZm9Nb2RlbCAmJiBmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShcIi9pc09wZW5cIik7XG5cdFx0aWYgKCFpc0RpYWxvZ09wZW4gfHwgIXNvdXJjZS5nZXRWaXNpYmxlKCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRNYXNzRWRpdEhhbmRsZXJzLl91cGRhdGVTZWxlY3RLZXkoc291cmNlLCBkYXRhUHJvcGVydHksIG5ld1ZhbHVlKTtcblx0fSxcblxuXHQvKipcblx0ICogQ2FsbGVkIGZvciBjaGFuZ2UgaW4gdGhlIE1EQyBmaWVsZC5cblx0ICogVGhpcyBpcyBjYWxsZWQgb24gc2VsZWN0aW9uIGRvbmUgdGhyb3VnaCBWSEQuXG5cdCAqIFRoaXMgaXMgbm90IGNhbGxlZCBvbiBjaGFuZ2Ugb2YgdGhlIGRyb3Bkb3duIGFzIHdlIGFyZSB1c2luZyBhIGN1c3RvbSBNYXNzRWRpdFNlbGVjdCBjb250cm9sIGFuZCBub3QgZ2VuZXJhbCBTZWxlY3QuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAcGFyYW0gZXZlbnQgRXZlbnQgb2JqZWN0IGZvciBjaGFuZ2UuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgUHJvcGVydHkgcGF0aC5cblx0ICovXG5cdGhhbmRsZU1EQ0ZpZWxkQ2hhbmdlOiBmdW5jdGlvbiAoZXZlbnQ6IGFueSwgcHJvcGVydHlOYW1lOiBzdHJpbmcpIHtcblx0XHQvLyBDYWxsZWQgZm9yXG5cdFx0Ly8gMS4gVkhEIHByb3BlcnR5IGNoYW5nZS5cblxuXHRcdGNvbnN0IHNvdXJjZSA9IGV2ZW50ICYmIGV2ZW50LmdldFNvdXJjZSgpO1xuXHRcdGNvbnN0IGNoYW5nZVByb21pc2UgPSBldmVudCAmJiBldmVudC5nZXRQYXJhbWV0ZXIoXCJwcm9taXNlXCIpO1xuXHRcdGNvbnN0IGNvbWJvQm94ID0gc291cmNlLmdldENvbnRlbnQoKTtcblx0XHRpZiAoIWNvbWJvQm94IHx8ICFwcm9wZXJ0eU5hbWUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjaGFuZ2VQcm9taXNlXG5cdFx0XHQudGhlbihNYXNzRWRpdEhhbmRsZXJzLl91cGRhdGVTZWxlY3RLZXlGb3JNRENGaWVsZENoYW5nZS5iaW5kKE1hc3NFZGl0SGFuZGxlcnMsIHNvdXJjZSwgcHJvcGVydHlOYW1lKSlcblx0XHRcdC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcblx0XHRcdFx0TG9nLndhcm5pbmcoYFZIRCBzZWxlY3Rpb24gY291bGRuJ3QgYmUgcG9wdWxhdGVkIGluIHRoZSBtYXNzIGVkaXQgZmllbGQuJHtlcnJ9YCk7XG5cdFx0XHR9KTtcblx0fSxcblxuXHQvKipcblx0ICogQ2FsbGVkIGZvciBzZWxlY3Rpb24gY2hhbmdlIHRocm91Z2ggdGhlIGRyb3AgZG93bi5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSBldmVudCBFdmVudCBvYmplY3QgZm9yIGNoYW5nZS5cblx0ICovXG5cdGhhbmRsZVNlbGVjdGlvbkNoYW5nZTogZnVuY3Rpb24gKGV2ZW50OiBhbnkpIHtcblx0XHQvLyBDYWxsZWQgZm9yIE1hbnVhbCBzZWxlY3Rpb24gZnJvbSBkcm9wZG93bihjb21ib0JveCBvciBzZWxlY3QpXG5cdFx0Ly8gMS4gVkhEIHNlbGVjdC5cblx0XHQvLyAyLiBBbnkgdmFsdWUgY2hhbmdlIGluIHRoZSBjb250cm9sLlxuXG5cdFx0Y29uc3Qgc291cmNlID0gZXZlbnQgJiYgZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3Qga2V5ID0gc291cmNlLmdldFNlbGVjdGVkS2V5KCkgYXMgc3RyaW5nO1xuXHRcdGNvbnN0IHBhcmFtcyA9IHNvdXJjZSAmJiBrZXkgJiYga2V5LnNwbGl0KFwiL1wiKTtcblx0XHRsZXQgcHJvcGVydHlOYW1lO1xuXG5cdFx0aWYgKHBhcmFtc1swXSA9PT0gXCJVc2VWYWx1ZUhlbHBWYWx1ZVwiKSB7XG5cdFx0XHRjb25zdCBwcmV2SXRlbSA9IGV2ZW50LmdldFBhcmFtZXRlcihcInByZXZpb3VzU2VsZWN0ZWRJdGVtXCIpO1xuXHRcdFx0Y29uc3Qgc2VsZWN0S2V5ID0gcHJldkl0ZW0uZ2V0S2V5KCk7XG5cdFx0XHRwcm9wZXJ0eU5hbWUgPSBwYXJhbXMuc2xpY2UoMSkuam9pbihcIi9cIik7XG5cdFx0XHRNYXNzRWRpdEhhbmRsZXJzLl9vblZIU2VsZWN0KHNvdXJjZSwgcHJvcGVydHlOYW1lLCBzZWxlY3RLZXkpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IGZpZWxkSW5mb01vZGVsID0gc291cmNlICYmIChzb3VyY2UuZ2V0TW9kZWwoXCJmaWVsZHNJbmZvXCIpIGFzIEpTT05Nb2RlbCk7XG5cdFx0cHJvcGVydHlOYW1lID0gTWFzc0VkaXRIYW5kbGVycy5fZ2V0UHJvcGVydHlOYW1lRnJvbUtleShrZXkpO1xuXHRcdE1hc3NFZGl0SGFuZGxlcnMuX3VwZGF0ZVN1Z2dlc3Rpb25Gb3JGaWVsZHNXaXRoSW5QYXJhbWV0ZXJzKFxuXHRcdFx0ZmllbGRJbmZvTW9kZWwsXG5cdFx0XHRwcm9wZXJ0eU5hbWUsXG5cdFx0XHRrZXkuc3RhcnRzV2l0aChcIkRlZmF1bHQvXCIpIHx8IGtleS5zdGFydHNXaXRoKFwiQ2xlYXJGaWVsZFZhbHVlL1wiKSxcblx0XHRcdHRydWVcblx0XHQpO1xuXHRcdE1hc3NFZGl0SGFuZGxlcnMuX3VwZGF0ZVN1Z2dlc3Rpb25Gb3JGaWVsZHNXaXRoT3V0UGFyYW1ldGVycyhcblx0XHRcdGZpZWxkSW5mb01vZGVsLFxuXHRcdFx0cHJvcGVydHlOYW1lLFxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoXCJEZWZhdWx0L1wiKSB8fCBrZXkuc3RhcnRzV2l0aChcIkNsZWFyRmllbGRWYWx1ZS9cIiksXG5cdFx0XHRmYWxzZVxuXHRcdCk7XG5cdFx0TWFzc0VkaXRIYW5kbGVycy5fdXBkYXRlUmVzdWx0cyhzb3VyY2UsIHBhcmFtcywgdHJ1ZSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFVwZGF0ZSBzZWxlY3Rpb25zIHRvIHJlc3VsdHMgYW5kIHRoZSBzdWdnZXN0cyBpbiBkcm9wIGRvd25zLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIHNvdXJjZSBNREMgZmllbGQgdGhhdCB3YXMgY2hhbmdlZC5cblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZSBQcm9wZXJ0eSBwYXRoLlxuXHQgKiBAcGFyYW0gdmFsdWUgTmV3IHZhbHVlLlxuXHQgKi9cblx0X3VwZGF0ZVNlbGVjdEtleUZvck1EQ0ZpZWxkQ2hhbmdlOiBmdW5jdGlvbiAoc291cmNlOiBhbnksIHByb3BlcnR5TmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG5cdFx0Y29uc3QgdHJhbnNDdHggPSBzb3VyY2UgJiYgc291cmNlLmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0Y29uc3QgZmllbGRJbmZvTW9kZWwgPSBzb3VyY2UgJiYgKHNvdXJjZS5nZXRNb2RlbChcImZpZWxkc0luZm9cIikgYXMgSlNPTk1vZGVsKTtcblx0XHRjb25zdCB2YWx1ZXMgPVxuXHRcdFx0ZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYC92YWx1ZXMvJHtwcm9wZXJ0eU5hbWV9YCkgfHwgZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYC91bml0RGF0YS8ke3Byb3BlcnR5TmFtZX1gKSB8fCBbXTtcblxuXHRcdGlmICh0cmFuc0N0eCAmJiAodmFsdWVzLmlucHV0VHlwZSA9PT0gXCJJbnB1dFdpdGhWYWx1ZUhlbHBcIiB8fCB2YWx1ZXMuaW5wdXRUeXBlID09PSBcIklucHV0V2l0aFVuaXRcIikgJiYgIXZhbHVlcy52YWx1ZUxpc3RJbmZvKSB7XG5cdFx0XHRNYXNzRWRpdEhhbmRsZXJzLl9zZXRWYWx1ZUxpc3RJbmZvKHRyYW5zQ3R4LCBzb3VyY2UsIGZpZWxkSW5mb01vZGVsLCBwcm9wZXJ0eU5hbWUpO1xuXHRcdH1cblxuXHRcdE1hc3NFZGl0SGFuZGxlcnMuX3VwZGF0ZVN1Z2dlc3Rpb25Gb3JGaWVsZHNXaXRoT3V0UGFyYW1ldGVycyhmaWVsZEluZm9Nb2RlbCwgcHJvcGVydHlOYW1lLCBmYWxzZSwgdHJ1ZSk7XG5cdFx0TWFzc0VkaXRIYW5kbGVycy5fdXBkYXRlU3VnZ2VzdGlvbkZvckZpZWxkc1dpdGhJblBhcmFtZXRlcnMoZmllbGRJbmZvTW9kZWwsIHByb3BlcnR5TmFtZSwgZmFsc2UsIHRydWUpO1xuXG5cdFx0Y29uc3QgZm9ybWF0dGVkVmFsdWUgPSBzb3VyY2UuZ2V0Rm9ybUZvcm1hdHRlZFZhbHVlKCk7XG5cdFx0TWFzc0VkaXRIYW5kbGVycy5fdXBkYXRlU2VsZWN0S2V5KHNvdXJjZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgZm9ybWF0dGVkVmFsdWUpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBVcGRhdGUgc3VnZ2VzdHMgZm9yIGFsbCBkcm9wIGRvd25zIHdpdGggSW5QYXJhbWV0ZXIgYXMgdGhlIHByb3BlcnR5TmFtZS5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSBmaWVsZEluZm9Nb2RlbCBSdW50aW1lIG1vZGVsIHdpdGggcGFyYW1ldGVycyBzdG9yZSBpbmZvcm1hdGlvbi5cblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZSBQcm9wZXJ0eSBwYXRoLlxuXHQgKiBAcGFyYW0gcmVzZXRWYWx1ZXMgU2hvdWxkIHRoZSB2YWx1ZXMgYmUgcmVzZXQgdG8gb3JpZ2luYWwgc3RhdGUuXG5cdCAqIEBwYXJhbSBrZWVwRXhpc3RpbmdTZWxlY3Rpb24gU2hvdWxkIHRoZSBleGlzdGluZyBzZWxlY3Rpb24gYmVmb3JlIHVwZGF0ZSByZW1haW4uXG5cdCAqL1xuXHRfdXBkYXRlU3VnZ2VzdGlvbkZvckZpZWxkc1dpdGhJblBhcmFtZXRlcnM6IGZ1bmN0aW9uIChcblx0XHRmaWVsZEluZm9Nb2RlbDogSlNPTk1vZGVsLFxuXHRcdHByb3BlcnR5TmFtZTogc3RyaW5nLFxuXHRcdHJlc2V0VmFsdWVzOiBib29sZWFuLFxuXHRcdGtlZXBFeGlzdGluZ1NlbGVjdGlvbjogYm9vbGVhblxuXHQpOiB2b2lkIHtcblx0XHRjb25zdCB2YWx1ZXMgPSBmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShcIi92YWx1ZXNcIik7XG5cdFx0Y29uc3QgdW5pdERhdGEgPSBmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShcIi91bml0RGF0YVwiKTtcblx0XHRjb25zdCBmaWVsZFBhdGhzID0gT2JqZWN0LmtleXModmFsdWVzKTtcblx0XHRjb25zdCB1bml0RmllbGRQYXRocyA9IE9iamVjdC5rZXlzKHVuaXREYXRhKTtcblxuXHRcdGZpZWxkUGF0aHMuZm9yRWFjaChcblx0XHRcdE1hc3NFZGl0SGFuZGxlcnMuX3VwZGF0ZUluUGFyYW1ldGVyU3VnZ2V0aW9ucy5iaW5kKFxuXHRcdFx0XHRNYXNzRWRpdEhhbmRsZXJzLFxuXHRcdFx0XHRmaWVsZEluZm9Nb2RlbCxcblx0XHRcdFx0XCIvdmFsdWVzL1wiLFxuXHRcdFx0XHRwcm9wZXJ0eU5hbWUsXG5cdFx0XHRcdHJlc2V0VmFsdWVzLFxuXHRcdFx0XHRrZWVwRXhpc3RpbmdTZWxlY3Rpb25cblx0XHRcdClcblx0XHQpO1xuXHRcdHVuaXRGaWVsZFBhdGhzLmZvckVhY2goXG5cdFx0XHRNYXNzRWRpdEhhbmRsZXJzLl91cGRhdGVJblBhcmFtZXRlclN1Z2dldGlvbnMuYmluZChcblx0XHRcdFx0TWFzc0VkaXRIYW5kbGVycyxcblx0XHRcdFx0ZmllbGRJbmZvTW9kZWwsXG5cdFx0XHRcdFwiL3VuaXREYXRhL1wiLFxuXHRcdFx0XHRwcm9wZXJ0eU5hbWUsXG5cdFx0XHRcdHJlc2V0VmFsdWVzLFxuXHRcdFx0XHRrZWVwRXhpc3RpbmdTZWxlY3Rpb25cblx0XHRcdClcblx0XHQpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBVcGRhdGUgc3VnZ2VzdHMgZm9yIGEgZHJvcCBkb3duIHdpdGggSW5QYXJhbWV0ZXIgYXMgdGhlIHNyY1Byb3BlcnR5TmFtZS5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSBmaWVsZEluZm9Nb2RlbCBSdW50aW1lIG1vZGVsIHdpdGggcGFyYW1ldGVycyBzdG9yZSBpbmZvcm1hdGlvbi5cblx0ICogQHBhcmFtIHBhdGhQcmVmaXggUGF0aCBpbiB0aGUgcnVudGltZSBtb2RlbC5cblx0ICogQHBhcmFtIHNyY1Byb3BlcnR5TmFtZSBUaGUgSW5QYXJhbWV0ZXIgUHJvcGVydHkgcGF0aC5cblx0ICogQHBhcmFtIHJlc2V0VmFsdWVzIFNob3VsZCB0aGUgdmFsdWVzIGJlIHJlc2V0IHRvIG9yaWdpbmFsIHN0YXRlLlxuXHQgKiBAcGFyYW0ga2VlcEV4aXN0aW5nU2VsZWN0aW9uIFNob3VsZCB0aGUgZXhpc3Rpbmcgc2VsZWN0aW9uIGJlZm9yZSB1cGRhdGUgcmVtYWluLlxuXHQgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFByb3BlcnR5IHBhdGggdGhhdCBuZWVkcyB1cGRhdGUgb2Ygc3VnZ2VzdGlvbnMuXG5cdCAqL1xuXHRfdXBkYXRlSW5QYXJhbWV0ZXJTdWdnZXRpb25zOiBmdW5jdGlvbiAoXG5cdFx0ZmllbGRJbmZvTW9kZWw6IEpTT05Nb2RlbCxcblx0XHRwYXRoUHJlZml4OiBzdHJpbmcsXG5cdFx0c3JjUHJvcGVydHlOYW1lOiBzdHJpbmcsXG5cdFx0cmVzZXRWYWx1ZXM6IGJvb2xlYW4sXG5cdFx0a2VlcEV4aXN0aW5nU2VsZWN0aW9uOiBib29sZWFuLFxuXHRcdHByb3BlcnR5TmFtZTogc3RyaW5nXG5cdCkge1xuXHRcdGNvbnN0IHZhbHVlTGlzdEluZm8gPSBmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShgJHtwYXRoUHJlZml4ICsgcHJvcGVydHlOYW1lfS92YWx1ZUxpc3RJbmZvYCk7XG5cdFx0aWYgKHZhbHVlTGlzdEluZm8gJiYgc3JjUHJvcGVydHlOYW1lICE9IHByb3BlcnR5TmFtZSkge1xuXHRcdFx0Y29uc3QgaW5QYXJhbWV0ZXJzID0gdmFsdWVMaXN0SW5mby5pblBhcmFtZXRlcnM7XG5cdFx0XHRpZiAoaW5QYXJhbWV0ZXJzICYmIGluUGFyYW1ldGVycy5sZW5ndGggPiAwICYmIGluUGFyYW1ldGVycy5pbmNsdWRlcyhzcmNQcm9wZXJ0eU5hbWUpKSB7XG5cdFx0XHRcdE1hc3NFZGl0SGFuZGxlcnMuX3VwZGF0ZUZpZWxkUGF0aFN1Z2dlc3Rpb25zKGZpZWxkSW5mb01vZGVsLCBwYXRoUHJlZml4ICsgcHJvcGVydHlOYW1lLCByZXNldFZhbHVlcywga2VlcEV4aXN0aW5nU2VsZWN0aW9uKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIFVwZGF0ZSBzdWdnZXN0cyBmb3IgYWxsIE91dFBhcmFtZXRlcidzIGRyb3AgZG93bnMgb2YgdGhlIHByb3BlcnR5TmFtZS5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSBmaWVsZEluZm9Nb2RlbCBSdW50aW1lIG1vZGVsIHdpdGggcGFyYW1ldGVycyBzdG9yZSBpbmZvcm1hdGlvbi5cblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZSBQcm9wZXJ0eSBwYXRoLlxuXHQgKiBAcGFyYW0gcmVzZXRWYWx1ZXMgU2hvdWxkIHRoZSB2YWx1ZXMgYmUgcmVzZXQgdG8gb3JpZ2luYWwgc3RhdGUuXG5cdCAqIEBwYXJhbSBrZWVwRXhpc3RpbmdTZWxlY3Rpb24gU2hvdWxkIHRoZSBleGlzdGluZyBzZWxlY3Rpb24gYmVmb3JlIHVwZGF0ZSByZW1haW4uXG5cdCAqL1xuXHRfdXBkYXRlU3VnZ2VzdGlvbkZvckZpZWxkc1dpdGhPdXRQYXJhbWV0ZXJzOiBmdW5jdGlvbiAoXG5cdFx0ZmllbGRJbmZvTW9kZWw6IEpTT05Nb2RlbCxcblx0XHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0XHRyZXNldFZhbHVlczogYm9vbGVhbixcblx0XHRrZWVwRXhpc3RpbmdTZWxlY3Rpb246IGJvb2xlYW5cblx0KTogdm9pZCB7XG5cdFx0Y29uc3QgdmFsdWVMaXN0SW5mbyA9XG5cdFx0XHRmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShgL3ZhbHVlcy8ke3Byb3BlcnR5TmFtZX0vdmFsdWVMaXN0SW5mb2ApIHx8XG5cdFx0XHRmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShgL3VuaXREYXRhLyR7cHJvcGVydHlOYW1lfS92YWx1ZUxpc3RJbmZvYCk7XG5cblx0XHRpZiAodmFsdWVMaXN0SW5mbyAmJiB2YWx1ZUxpc3RJbmZvLm91dFBhcmFtZXRlcnMpIHtcblx0XHRcdGNvbnN0IG91dFBhcmFtZXRlcnMgPSB2YWx1ZUxpc3RJbmZvLm91dFBhcmFtZXRlcnM7XG5cdFx0XHRpZiAob3V0UGFyYW1ldGVycy5sZW5ndGggJiYgb3V0UGFyYW1ldGVycy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdE1hc3NFZGl0SGFuZGxlcnMuX3VwZGF0ZU91dFBhcmFtZXRlclN1Z2dldGlvbnMob3V0UGFyYW1ldGVycywgZmllbGRJbmZvTW9kZWwsIHJlc2V0VmFsdWVzLCBrZWVwRXhpc3RpbmdTZWxlY3Rpb24pO1xuXHRcdFx0XHRjb25zdCBwYXRoUHJlZml4ID1cblx0XHRcdFx0XHQoZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYC92YWx1ZXMvJHtwcm9wZXJ0eU5hbWV9YCkgJiYgYC92YWx1ZXMvJHtwcm9wZXJ0eU5hbWV9YCkgfHxcblx0XHRcdFx0XHQoZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYC91bml0RGF0YS8ke3Byb3BlcnR5TmFtZX1gKSAmJiBgL3VuaXREYXRhLyR7cHJvcGVydHlOYW1lfWApO1xuXHRcdFx0XHRpZiAocGF0aFByZWZpeCkge1xuXHRcdFx0XHRcdE1hc3NFZGl0SGFuZGxlcnMuX3VwZGF0ZUZpZWxkUGF0aFN1Z2dlc3Rpb25zKGZpZWxkSW5mb01vZGVsLCBwYXRoUHJlZml4LCBmYWxzZSwgdHJ1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIFVwZGF0ZSBzdWdnZXN0cyBmb3IgYSBkcm9wIGRvd24gd2l0aCBJblBhcmFtZXRlciBhcyB0aGUgc3JjUHJvcGVydHlOYW1lLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIG91dFBhcmFtZXRlcnMgU3RyaW5nIGFycmFyeSBvZiBPdXRQYXJhbWV0ZXIgcHJvcGVydHkgcGF0aHMuXG5cdCAqIEBwYXJhbSBmaWVsZEluZm9Nb2RlbCBSdW50aW1lIG1vZGVsIHdpdGggcGFyYW1ldGVycyBzdG9yZSBpbmZvcm1hdGlvbi5cblx0ICogQHBhcmFtIHJlc2V0VmFsdWVzIFNob3VsZCB0aGUgdmFsdWVzIGJlIHJlc2V0IHRvIG9yaWdpbmFsIHN0YXRlLlxuXHQgKiBAcGFyYW0ga2VlcEV4aXN0aW5nU2VsZWN0aW9uIFNob3VsZCB0aGUgZXhpc3Rpbmcgc2VsZWN0aW9uIGJlZm9yZSB1cGRhdGUgcmVtYWluLlxuXHQgKi9cblx0X3VwZGF0ZU91dFBhcmFtZXRlclN1Z2dldGlvbnM6IGZ1bmN0aW9uIChcblx0XHRvdXRQYXJhbWV0ZXJzOiBzdHJpbmdbXSxcblx0XHRmaWVsZEluZm9Nb2RlbDogSlNPTk1vZGVsLFxuXHRcdHJlc2V0VmFsdWVzOiBib29sZWFuLFxuXHRcdGtlZXBFeGlzdGluZ1NlbGVjdGlvbjogYm9vbGVhblxuXHQpIHtcblx0XHRjb25zdCB2YWx1ZXMgPSBmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShcIi92YWx1ZXNcIik7XG5cdFx0Y29uc3QgdW5pdERhdGEgPSBmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShcIi91bml0RGF0YVwiKTtcblx0XHRjb25zdCBmaWVsZFBhdGhzID0gT2JqZWN0LmtleXModmFsdWVzKTtcblx0XHRjb25zdCB1bml0RmllbGRQYXRocyA9IE9iamVjdC5rZXlzKHVuaXREYXRhKTtcblxuXHRcdG91dFBhcmFtZXRlcnMuZm9yRWFjaCgob3V0UGFyYW1ldGVyOiBzdHJpbmcpID0+IHtcblx0XHRcdGlmIChmaWVsZFBhdGhzLmluY2x1ZGVzKG91dFBhcmFtZXRlcikpIHtcblx0XHRcdFx0TWFzc0VkaXRIYW5kbGVycy5fdXBkYXRlRmllbGRQYXRoU3VnZ2VzdGlvbnMoZmllbGRJbmZvTW9kZWwsIGAvdmFsdWVzLyR7b3V0UGFyYW1ldGVyfWAsIHJlc2V0VmFsdWVzLCBrZWVwRXhpc3RpbmdTZWxlY3Rpb24pO1xuXHRcdFx0fSBlbHNlIGlmICh1bml0RmllbGRQYXRocy5pbmNsdWRlcyhvdXRQYXJhbWV0ZXIpKSB7XG5cdFx0XHRcdE1hc3NFZGl0SGFuZGxlcnMuX3VwZGF0ZUZpZWxkUGF0aFN1Z2dlc3Rpb25zKFxuXHRcdFx0XHRcdGZpZWxkSW5mb01vZGVsLFxuXHRcdFx0XHRcdGAvdW5pdERhdGEvJHtvdXRQYXJhbWV0ZXJ9YCxcblx0XHRcdFx0XHRyZXNldFZhbHVlcyxcblx0XHRcdFx0XHRrZWVwRXhpc3RpbmdTZWxlY3Rpb25cblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHQvKipcblx0ICogVXBkYXRlIHN1Z2dlc3RzIGZvciBhIGRyb3AgZG93biBvZiBhIGZpZWxkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIGZpZWxkSW5mb01vZGVsIFJ1bnRpbWUgbW9kZWwgd2l0aCBwYXJhbWV0ZXJzIHN0b3JlIGluZm9ybWF0aW9uLlxuXHQgKiBAcGFyYW0gZmllbGRQYXRoQWJzb2x1dGUgQ29tcGxldGUgcnVudGltZSBwcm9wZXJ0eSBwYXRoLlxuXHQgKiBAcGFyYW0gcmVzZXRWYWx1ZXMgU2hvdWxkIHRoZSB2YWx1ZXMgYmUgcmVzZXQgdG8gb3JpZ2luYWwgc3RhdGUuXG5cdCAqIEBwYXJhbSBrZWVwRXhpc3RpbmdTZWxlY3Rpb24gU2hvdWxkIHRoZSBleGlzdGluZyBzZWxlY3Rpb24gYmVmb3JlIHVwZGF0ZSByZW1haW4uXG5cdCAqL1xuXHRfdXBkYXRlRmllbGRQYXRoU3VnZ2VzdGlvbnM6IGZ1bmN0aW9uIChcblx0XHRmaWVsZEluZm9Nb2RlbDogSlNPTk1vZGVsLFxuXHRcdGZpZWxkUGF0aEFic29sdXRlOiBzdHJpbmcsXG5cdFx0cmVzZXRWYWx1ZXM6IGJvb2xlYW4sXG5cdFx0a2VlcEV4aXN0aW5nU2VsZWN0aW9uOiBib29sZWFuXG5cdCkge1xuXHRcdGNvbnN0IG9wdGlvbnMgPSBmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShmaWVsZFBhdGhBYnNvbHV0ZSk7XG5cdFx0Y29uc3QgZGVmYXVsdE9wdGlvbnMgPSBvcHRpb25zLmRlZmF1bHRPcHRpb25zO1xuXHRcdGNvbnN0IHNlbGVjdGVkS2V5ID0gZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYCR7ZmllbGRQYXRoQWJzb2x1dGV9L3NlbGVjdGVkS2V5YCk7XG5cdFx0Y29uc3QgZXhpc3RpbmdTZWxlY3Rpb24gPSBrZWVwRXhpc3RpbmdTZWxlY3Rpb24gJiYgb3B0aW9ucy5maW5kKChvcHRpb246IGFueSkgPT4gb3B0aW9uLmtleSA9PT0gc2VsZWN0ZWRLZXkpO1xuXHRcdGlmIChyZXNldFZhbHVlcykge1xuXHRcdFx0Y29uc3Qgc2VsZWN0T3B0aW9ucyA9IG9wdGlvbnMuc2VsZWN0T3B0aW9ucztcblx0XHRcdG9wdGlvbnMubGVuZ3RoID0gMDtcblx0XHRcdGRlZmF1bHRPcHRpb25zLmZvckVhY2goKGRlZmF1bHRPcHRpb246IGFueSkgPT4gb3B0aW9ucy5wdXNoKGRlZmF1bHRPcHRpb24pKTtcblx0XHRcdHNlbGVjdE9wdGlvbnMuZm9yRWFjaCgoc2VsZWN0T3B0aW9uOiBhbnkpID0+IG9wdGlvbnMucHVzaChzZWxlY3RPcHRpb24pKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b3B0aW9ucy5sZW5ndGggPSAwO1xuXHRcdFx0ZGVmYXVsdE9wdGlvbnMuZm9yRWFjaCgoZGVmYXVsdE9wdGlvbjogYW55KSA9PiBvcHRpb25zLnB1c2goZGVmYXVsdE9wdGlvbikpO1xuXHRcdH1cblxuXHRcdGZpZWxkSW5mb01vZGVsLnNldFByb3BlcnR5KGZpZWxkUGF0aEFic29sdXRlLCBvcHRpb25zKTtcblxuXHRcdGlmIChleGlzdGluZ1NlbGVjdGlvbiAmJiAhb3B0aW9ucy5pbmNsdWRlcyhleGlzdGluZ1NlbGVjdGlvbikpIHtcblx0XHRcdG9wdGlvbnMucHVzaChleGlzdGluZ1NlbGVjdGlvbik7XG5cdFx0XHRmaWVsZEluZm9Nb2RlbC5zZXRQcm9wZXJ0eShgJHtmaWVsZFBhdGhBYnNvbHV0ZX0vc2VsZWN0ZWRLZXlgLCBzZWxlY3RlZEtleSk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBVcGRhdGUgSW4gYW5kIE91dCBQYXJhbWV0ZXJzIGluIHRoZSBNRUQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAcGFyYW0gdHJhbnNDdHggVGhlIHRyYW5zaWVudCBjb250ZXh0IG9mIHRoZSBNRUQuXG5cdCAqIEBwYXJhbSBzb3VyY2UgTURDIGZpZWxkLlxuXHQgKiBAcGFyYW0gZmllbGRJbmZvTW9kZWwgUnVudGltZSBtb2RlbCB3aXRoIHBhcmFtZXRlcnMgc3RvcmUgaW5mb3JtYXRpb24uXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgUHJvcGVydHkgcGF0aC5cblx0ICovXG5cdF9zZXRWYWx1ZUxpc3RJbmZvOiBmdW5jdGlvbiAodHJhbnNDdHg6IENvbnRleHQsIHNvdXJjZTogRmllbGQsIGZpZWxkSW5mb01vZGVsOiBKU09OTW9kZWwsIHByb3BlcnR5TmFtZTogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgcHJvcFBhdGggPVxuXHRcdFx0KGZpZWxkSW5mb01vZGVsLmdldFByb3BlcnR5KGAvdmFsdWVzLyR7cHJvcGVydHlOYW1lfWApICYmIFwiL3ZhbHVlcy9cIikgfHxcblx0XHRcdChmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShgL3VuaXREYXRhLyR7cHJvcGVydHlOYW1lfWApICYmIFwiL3VuaXREYXRhL1wiKTtcblxuXHRcdGlmIChmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShgJHtwcm9wUGF0aH0ke3Byb3BlcnR5TmFtZX0vdmFsdWVMaXN0SW5mb2ApKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHZhbHVlTGlzdEluZm8gPSBmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShgJHtwcm9wUGF0aH0ke3Byb3BlcnR5TmFtZX0vdmFsdWVMaXN0SW5mb2ApO1xuXG5cdFx0aWYgKCF2YWx1ZUxpc3RJbmZvKSB7XG5cdFx0XHRNYXNzRWRpdEhhbmRsZXJzLl9yZXF1ZXN0VmFsdWVMaXN0KHRyYW5zQ3R4LCBzb3VyY2UsIGZpZWxkSW5mb01vZGVsLCBwcm9wZXJ0eU5hbWUpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogUmVxdWVzdCBhbmQgdXBkYXRlIEluIGFuZCBPdXQgUGFyYW1ldGVycyBpbiB0aGUgTUVELlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIHRyYW5zQ3R4IFRoZSB0cmFuc2llbnQgY29udGV4dCBvZiB0aGUgTUVELlxuXHQgKiBAcGFyYW0gc291cmNlIE1EQyBmaWVsZC5cblx0ICogQHBhcmFtIGZpZWxkSW5mb01vZGVsIFJ1bnRpbWUgbW9kZWwgd2l0aCBwYXJhbWV0ZXJzIHN0b3JlIGluZm9ybWF0aW9uLlxuXHQgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFByb3BlcnR5IHBhdGguXG5cdCAqL1xuXHRfcmVxdWVzdFZhbHVlTGlzdDogZnVuY3Rpb24gKHRyYW5zQ3R4OiBDb250ZXh0LCBzb3VyY2U6IEZpZWxkLCBmaWVsZEluZm9Nb2RlbDogSlNPTk1vZGVsLCBwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IG1ldGFQYXRoID0gTW9kZWxIZWxwZXIuZ2V0TWV0YVBhdGhGb3JDb250ZXh0KHRyYW5zQ3R4KTtcblx0XHRjb25zdCBwcm9wZXJ0eVBhdGggPSAobWV0YVBhdGggJiYgYCR7bWV0YVBhdGh9LyR7cHJvcGVydHlOYW1lfWApIGFzIHN0cmluZztcblx0XHRjb25zdCBkZXBlbmRlbnRzID0gc291cmNlPy5nZXREZXBlbmRlbnRzKCk7XG5cdFx0Y29uc3QgZmllbGRIZWxwID0gc291cmNlPy5nZXRGaWVsZEhlbHAoKTtcblx0XHRjb25zdCBmaWVsZFZhbHVlSGVscCA9IGRlcGVuZGVudHM/LmZpbmQoKGRlcGVuZGVudDogYW55KSA9PiBkZXBlbmRlbnQuZ2V0SWQoKSA9PT0gZmllbGRIZWxwKSBhcyBWYWx1ZUhlbHA7XG5cdFx0Y29uc3QgcGF5bG9hZCA9IChmaWVsZFZhbHVlSGVscC5nZXREZWxlZ2F0ZSgpIGFzIGFueSk/LnBheWxvYWQgYXMgVmFsdWVIZWxwUGF5bG9hZDtcblx0XHRpZiAoIWZpZWxkVmFsdWVIZWxwPy5nZXRCaW5kaW5nQ29udGV4dCgpKSB7XG5cdFx0XHRmaWVsZFZhbHVlSGVscD8uc2V0QmluZGluZ0NvbnRleHQodHJhbnNDdHgpO1xuXHRcdH1cblx0XHRjb25zdCBtZXRhTW9kZWwgPSB0cmFuc0N0eC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdFZhbHVlTGlzdEhlbHBlci5jcmVhdGVWSFVJTW9kZWwoZmllbGRWYWx1ZUhlbHAsIHByb3BlcnR5UGF0aCwgbWV0YU1vZGVsKTtcblx0XHRjb25zdCB2YWx1ZUxpc3RJbmZvID0gVmFsdWVMaXN0SGVscGVyLmdldFZhbHVlTGlzdEluZm8oZmllbGRWYWx1ZUhlbHAsIHByb3BlcnR5UGF0aCwgcGF5bG9hZCk7XG5cblx0XHR2YWx1ZUxpc3RJbmZvXG5cdFx0XHQudGhlbigodkxpbmZvczogVmFsdWVMaXN0SW5mb1tdKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHZMaW5mbyA9IHZMaW5mb3NbMF07XG5cdFx0XHRcdGNvbnN0IHByb3BQYXRoID1cblx0XHRcdFx0XHQoZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYC92YWx1ZXMvJHtwcm9wZXJ0eU5hbWV9YCkgJiYgXCIvdmFsdWVzL1wiKSB8fFxuXHRcdFx0XHRcdChmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShgL3VuaXREYXRhLyR7cHJvcGVydHlOYW1lfWApICYmIFwiL3VuaXREYXRhL1wiKTtcblx0XHRcdFx0Y29uc3QgaW5mbzogYW55ID0ge1xuXHRcdFx0XHRcdGluUGFyYW1ldGVyczpcblx0XHRcdFx0XHRcdHZMaW5mby52aFBhcmFtZXRlcnMgJiYgVmFsdWVMaXN0SGVscGVyLmdldEluUGFyYW1ldGVycyh2TGluZm8udmhQYXJhbWV0ZXJzKS5tYXAoKGluUGFyYW06IGFueSkgPT4gaW5QYXJhbS5oZWxwUGF0aCksXG5cdFx0XHRcdFx0b3V0UGFyYW1ldGVyczpcblx0XHRcdFx0XHRcdHZMaW5mby52aFBhcmFtZXRlcnMgJiZcblx0XHRcdFx0XHRcdFZhbHVlTGlzdEhlbHBlci5nZXRPdXRQYXJhbWV0ZXJzKHZMaW5mby52aFBhcmFtZXRlcnMpLm1hcCgob3V0UGFyYW06IGFueSkgPT4gb3V0UGFyYW0uaGVscFBhdGgpXG5cdFx0XHRcdH07XG5cdFx0XHRcdGZpZWxkSW5mb01vZGVsLnNldFByb3BlcnR5KGAke3Byb3BQYXRofSR7cHJvcGVydHlOYW1lfS92YWx1ZUxpc3RJbmZvYCwgaW5mbyk7XG5cdFx0XHRcdGlmIChpbmZvLm91dFBhcmFtZXRlcnMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdE1hc3NFZGl0SGFuZGxlcnMuX3VwZGF0ZUZpZWxkUGF0aFN1Z2dlc3Rpb25zKGZpZWxkSW5mb01vZGVsLCBgL3ZhbHVlcy8ke3Byb3BlcnR5TmFtZX1gLCBmYWxzZSwgdHJ1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKCkgPT4ge1xuXHRcdFx0XHRMb2cud2FybmluZyhgTWFzcyBFZGl0OiBDb3VsZG4ndCBsb2FkIHZhbHVlTGlzdCBpbmZvIGZvciAke3Byb3BlcnR5UGF0aH1gKTtcblx0XHRcdH0pO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgZmllbGQgaGVscCBjb250cm9sIGZyb20gTURDIGZpZWxkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIHRyYW5zQ3R4IFRoZSB0cmFuc2llbnQgY29udGV4dCBvZiB0aGUgTUVELlxuXHQgKiBAcGFyYW0gc291cmNlIE1EQyBmaWVsZC5cblx0ICogQHJldHVybnMgRmllbGQgSGVscCBjb250cm9sLlxuXHQgKi9cblx0X2dldFZhbHVlSGVscDogZnVuY3Rpb24gKHRyYW5zQ3R4OiBDb250ZXh0LCBzb3VyY2U6IEZpZWxkKTogYW55IHtcblx0XHRjb25zdCBkZXBlbmRlbnRzID0gc291cmNlPy5nZXREZXBlbmRlbnRzKCk7XG5cdFx0Y29uc3QgZmllbGRIZWxwID0gc291cmNlPy5nZXRGaWVsZEhlbHAoKTtcblx0XHRyZXR1cm4gZGVwZW5kZW50cz8uZmluZCgoZGVwZW5kZW50OiBhbnkpID0+IGRlcGVuZGVudC5nZXRJZCgpID09PSBmaWVsZEhlbHApO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDb2xsZWQgb24gZHJvcCBkb3duIHNlbGVjdGlvbiBvZiBWSEQgb3B0aW9uLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIHNvdXJjZSBDdXN0b20gTWFzcyBFZGl0IFNlbGVjdCBjb250cm9sLlxuXHQgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFByb3BlcnR5IHBhdGguXG5cdCAqIEBwYXJhbSBzZWxlY3RLZXkgUHJldmlvdXMga2V5IGJlZm9yZSB0aGUgVkhEIHdhcyBzZWxlY3RlZC5cblx0ICovXG5cdF9vblZIU2VsZWN0OiBmdW5jdGlvbiAoc291cmNlOiBhbnksIHByb3BlcnR5TmFtZTogc3RyaW5nLCBzZWxlY3RLZXk6IHN0cmluZyk6IHZvaWQge1xuXHRcdC8vIENhbGxlZCBmb3Jcblx0XHQvLyAxLiBWSEQgc2VsZWN0ZWQuXG5cblx0XHRjb25zdCBmaWVsZEluZm9Nb2RlbCA9IHNvdXJjZSAmJiBzb3VyY2UuZ2V0TW9kZWwoXCJmaWVsZHNJbmZvXCIpO1xuXHRcdGNvbnN0IHByb3BQYXRoID1cblx0XHRcdChmaWVsZEluZm9Nb2RlbC5nZXRQcm9wZXJ0eShgL3ZhbHVlcy8ke3Byb3BlcnR5TmFtZX1gKSAmJiBcIi92YWx1ZXMvXCIpIHx8XG5cdFx0XHQoZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYC91bml0RGF0YS8ke3Byb3BlcnR5TmFtZX1gKSAmJiBcIi91bml0RGF0YS9cIik7XG5cdFx0Y29uc3QgdHJhbnNDdHggPSBzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRjb25zdCBmaWVsZFZhbHVlSGVscCA9IE1hc3NFZGl0SGFuZGxlcnMuX2dldFZhbHVlSGVscCh0cmFuc0N0eCwgc291cmNlLmdldFBhcmVudCgpKTtcblx0XHRpZiAoIWZpZWxkVmFsdWVIZWxwPy5nZXRCaW5kaW5nQ29udGV4dCgpKSB7XG5cdFx0XHRmaWVsZFZhbHVlSGVscD8uc2V0QmluZGluZ0NvbnRleHQodHJhbnNDdHgpO1xuXHRcdH1cblx0XHRzb3VyY2UuZmlyZVZhbHVlSGVscFJlcXVlc3QoKTtcblxuXHRcdGZpZWxkSW5mb01vZGVsLnNldFByb3BlcnR5KGAke3Byb3BQYXRoICsgcHJvcGVydHlOYW1lfS9zZWxlY3RlZEtleWAsIHNlbGVjdEtleSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldHMgUHJvcGVydHkgbmFtZSBmcm9tIHNlbGVjdGlvbiBrZXkuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAcGFyYW0ga2V5IFNlbGVjdGlvbiBrZXkuXG5cdCAqIEByZXR1cm5zIFByb3BlcnR5IG5hbWUuXG5cdCAqL1xuXHRfZ2V0UHJvcGVydHlOYW1lRnJvbUtleTogZnVuY3Rpb24gKGtleTogc3RyaW5nKSB7XG5cdFx0bGV0IHByb3BlcnR5TmFtZSA9IFwiXCI7XG5cdFx0aWYgKGtleS5zdGFydHNXaXRoKFwiRGVmYXVsdC9cIikgfHwga2V5LnN0YXJ0c1dpdGgoXCJDbGVhckZpZWxkVmFsdWUvXCIpIHx8IGtleS5zdGFydHNXaXRoKFwiVXNlVmFsdWVIZWxwVmFsdWUvXCIpKSB7XG5cdFx0XHRwcm9wZXJ0eU5hbWUgPSBrZXkuc3Vic3RyaW5nKGtleS5pbmRleE9mKFwiL1wiKSArIDEpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRwcm9wZXJ0eU5hbWUgPSBrZXkuc3Vic3RyaW5nKDAsIGtleS5sYXN0SW5kZXhPZihcIi9cIikpO1xuXHRcdH1cblx0XHRyZXR1cm4gcHJvcGVydHlOYW1lO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBVcGRhdGUgc2VsZWN0aW9uIHRvIEN1c3RvbSBNYXNzIEVkaXQgU2VsZWN0IGZyb20gTURDIGZpZWxkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIHNvdXJjZSBNREMgZmllbGQuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgUHJvcGVydHkgcGF0aC5cblx0ICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIHVwZGF0ZS5cblx0ICogQHBhcmFtIGZ1bGxUZXh0IEZ1bGwgdGV4dCB0byB1c2UuXG5cdCAqL1xuXHRfdXBkYXRlU2VsZWN0S2V5OiBmdW5jdGlvbiAoc291cmNlOiBGaWVsZCwgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIGZ1bGxUZXh0PzogYW55KTogdm9pZCB7XG5cdFx0Ly8gQ2FsbGVkIGZvclxuXHRcdC8vIDEuIFZIRCBwcm9wZXJ0eSBjaGFuZ2Vcblx0XHQvLyAyLiBPdXQgUGFyYW1ldGVycy5cblx0XHQvLyAzLiBUcmFuc2llbnQgY29udGV4dCBwcm9wZXJ0eSBjaGFuZ2UuXG5cblx0XHRjb25zdCBjb21ib0JveCA9IHNvdXJjZS5nZXRDb250ZW50KCkgYXMgQ29tYm9Cb3g7XG5cdFx0aWYgKCFjb21ib0JveCB8fCAhcHJvcGVydHlOYW1lKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGxldCBrZXk6IHN0cmluZyA9IGNvbWJvQm94LmdldFNlbGVjdGVkS2V5KCk7XG5cdFx0aWYgKChrZXkuc3RhcnRzV2l0aChcIkRlZmF1bHQvXCIpIHx8IGtleS5zdGFydHNXaXRoKFwiQ2xlYXJGaWVsZFZhbHVlL1wiKSkgJiYgIXZhbHVlKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgZm9ybWF0dGVkVGV4dCA9IE1hc3NFZGl0SGFuZGxlcnMuX3ZhbHVlRXhpc3RzKGZ1bGxUZXh0KSA/IGZ1bGxUZXh0IDogdmFsdWU7XG5cdFx0Y29uc3QgZmllbGRJbmZvTW9kZWwgPSBzb3VyY2UgJiYgKHNvdXJjZS5nZXRNb2RlbChcImZpZWxkc0luZm9cIikgYXMgSlNPTk1vZGVsKTtcblx0XHRjb25zdCB2YWx1ZXMgPVxuXHRcdFx0ZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYC92YWx1ZXMvJHtwcm9wZXJ0eU5hbWV9YCkgfHwgZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYC91bml0RGF0YS8ke3Byb3BlcnR5TmFtZX1gKSB8fCBbXTtcblx0XHRjb25zdCBwcm9wUGF0aCA9XG5cdFx0XHQoZmllbGRJbmZvTW9kZWwuZ2V0UHJvcGVydHkoYC92YWx1ZXMvJHtwcm9wZXJ0eU5hbWV9YCkgJiYgXCIvdmFsdWVzL1wiKSB8fFxuXHRcdFx0KGZpZWxkSW5mb01vZGVsLmdldFByb3BlcnR5KGAvdW5pdERhdGEvJHtwcm9wZXJ0eU5hbWV9YCkgJiYgXCIvdW5pdERhdGEvXCIpO1xuXG5cdFx0Y29uc3QgcmVsYXRlZEZpZWxkID0gdmFsdWVzLmZpbmQoKGZpZWxkRGF0YTogYW55KSA9PiBmaWVsZERhdGE/LnRleHRJbmZvPy52YWx1ZSA9PT0gdmFsdWUgfHwgZmllbGREYXRhLnRleHQgPT09IHZhbHVlKTtcblxuXHRcdGlmIChyZWxhdGVkRmllbGQpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0ZnVsbFRleHQgJiZcblx0XHRcdFx0cmVsYXRlZEZpZWxkLnRleHRJbmZvICYmXG5cdFx0XHRcdHJlbGF0ZWRGaWVsZC50ZXh0SW5mby5kZXNjcmlwdGlvblBhdGggJiZcblx0XHRcdFx0KHJlbGF0ZWRGaWVsZC50ZXh0ICE9IGZvcm1hdHRlZFRleHQgfHwgcmVsYXRlZEZpZWxkLnRleHRJbmZvLmZ1bGxUZXh0ICE9IGZvcm1hdHRlZFRleHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gVXBkYXRlIHRoZSBmdWxsIHRleHQgb25seSB3aGVuIHByb3ZpZGVkLlxuXHRcdFx0XHRyZWxhdGVkRmllbGQudGV4dCA9IGZvcm1hdHRlZFRleHQ7XG5cdFx0XHRcdHJlbGF0ZWRGaWVsZC50ZXh0SW5mby5mdWxsVGV4dCA9IGZvcm1hdHRlZFRleHQ7XG5cdFx0XHRcdHJlbGF0ZWRGaWVsZC50ZXh0SW5mby5kZXNjcmlwdGlvbiA9IHNvdXJjZS5nZXRBZGRpdGlvbmFsVmFsdWUoKTtcblx0XHRcdH1cblx0XHRcdGlmIChyZWxhdGVkRmllbGQua2V5ID09PSBrZXkpIHtcblx0XHRcdFx0ZmllbGRJbmZvTW9kZWwuc2V0UHJvcGVydHkoYCR7cHJvcFBhdGggKyBwcm9wZXJ0eU5hbWV9L3NlbGVjdGVkS2V5YCwga2V5KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0a2V5ID0gcmVsYXRlZEZpZWxkLmtleTtcblx0XHR9IGVsc2UgaWYgKFt1bmRlZmluZWQsIG51bGwsIFwiXCJdLmluZGV4T2YodmFsdWUpID09PSAtMSkge1xuXHRcdFx0a2V5ID0gYCR7cHJvcGVydHlOYW1lfS8ke3ZhbHVlfWA7XG5cdFx0XHRjb25zdCBzZWxlY3Rpb25JbmZvID0ge1xuXHRcdFx0XHR0ZXh0OiBmb3JtYXR0ZWRUZXh0LFxuXHRcdFx0XHRrZXksXG5cdFx0XHRcdHRleHRJbmZvOiB7XG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHNvdXJjZS5nZXRBZGRpdGlvbmFsVmFsdWUoKSxcblx0XHRcdFx0XHRkZXNjcmlwdGlvblBhdGg6IHZhbHVlcyAmJiB2YWx1ZXMudGV4dEluZm8gJiYgdmFsdWVzLnRleHRJbmZvLmRlc2NyaXB0aW9uUGF0aCxcblx0XHRcdFx0XHRmdWxsVGV4dDogZm9ybWF0dGVkVGV4dCxcblx0XHRcdFx0XHR0ZXh0QXJyYW5nZW1lbnQ6IHNvdXJjZS5nZXREaXNwbGF5KCksXG5cdFx0XHRcdFx0dmFsdWU6IHNvdXJjZS5nZXRWYWx1ZSgpLFxuXHRcdFx0XHRcdHZhbHVlUGF0aDogcHJvcGVydHlOYW1lXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHR2YWx1ZXMucHVzaChzZWxlY3Rpb25JbmZvKTtcblx0XHRcdHZhbHVlcy5zZWxlY3RPcHRpb25zID0gdmFsdWVzLnNlbGVjdE9wdGlvbnMgfHwgW107XG5cdFx0XHR2YWx1ZXMuc2VsZWN0T3B0aW9ucy5wdXNoKHNlbGVjdGlvbkluZm8pO1xuXHRcdFx0ZmllbGRJbmZvTW9kZWwuc2V0UHJvcGVydHkocHJvcFBhdGggKyBwcm9wZXJ0eU5hbWUsIHZhbHVlcyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGtleSA9IGBEZWZhdWx0LyR7cHJvcGVydHlOYW1lfWA7XG5cdFx0fVxuXG5cdFx0ZmllbGRJbmZvTW9kZWwuc2V0UHJvcGVydHkoYCR7cHJvcFBhdGggKyBwcm9wZXJ0eU5hbWV9L3NlbGVjdGVkS2V5YCwga2V5KTtcblx0XHRNYXNzRWRpdEhhbmRsZXJzLl91cGRhdGVSZXN1bHRzKGNvbWJvQm94KTtcblx0fSxcblxuXHQvKipcblx0ICogR2V0IFZhbHVlIGZyb20gRHJvcCBkb3duLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIHNvdXJjZSBEcm9wIGRvd24gY29udHJvbC5cblx0ICogQHJldHVybnMgVmFsdWUgb2Ygc2VsZWN0aW9uLlxuXHQgKi9cblx0X2dldFZhbHVlOiBmdW5jdGlvbiAoc291cmNlOiBDb250cm9sKSB7XG5cdFx0cmV0dXJuIHNvdXJjZS5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKSA9PT0gXCJzYXAuZmUuY29yZS5jb250cm9scy5NYXNzRWRpdFNlbGVjdFwiXG5cdFx0XHQ/IChzb3VyY2UgYXMgU2VsZWN0KS5nZXRTZWxlY3RlZEl0ZW0oKT8uZ2V0VGV4dCgpXG5cdFx0XHQ6IChzb3VyY2UgYXMgQ29tYm9Cb3gpLmdldFZhbHVlKCk7XG5cdH0sXG5cblx0X2dldFZhbHVlT25FbXB0eTogZnVuY3Rpb24gKG9Tb3VyY2U6IGFueSwgZmllbGRzSW5mb01vZGVsOiBKU09OTW9kZWwsIHZhbHVlOiBhbnksIHNQcm9wZXJ0eU5hbWU6IHN0cmluZykge1xuXHRcdGlmICghdmFsdWUpIHtcblx0XHRcdGNvbnN0IHZhbHVlcyA9XG5cdFx0XHRcdGZpZWxkc0luZm9Nb2RlbC5nZXRQcm9wZXJ0eShgL3ZhbHVlcy8ke3NQcm9wZXJ0eU5hbWV9YCkgfHwgZmllbGRzSW5mb01vZGVsLmdldFByb3BlcnR5KGAvdW5pdERhdGEvJHtzUHJvcGVydHlOYW1lfWApIHx8IFtdO1xuXHRcdFx0aWYgKHZhbHVlcy51bml0UHJvcGVydHkpIHtcblx0XHRcdFx0dmFsdWUgPSAwO1xuXHRcdFx0XHRvU291cmNlLnNldFZhbHVlKHZhbHVlKTtcblx0XHRcdH0gZWxzZSBpZiAodmFsdWVzLmlucHV0VHlwZSA9PT0gXCJDaGVja0JveFwiKSB7XG5cdFx0XHRcdHZhbHVlID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB2YWx1ZTtcblx0fSxcblxuXHRfdmFsdWVFeGlzdHM6IGZ1bmN0aW9uICh2YWx1ZTogYW55KSB7XG5cdFx0cmV0dXJuIHZhbHVlICE9IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPSBudWxsO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHNlbGVjdGlvbnMgdG8gcnVudGltZSBtb2RlbC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSBvU291cmNlIERyb3AgZG93biBjb250cm9sLlxuXHQgKiBAcGFyYW0gYVBhcmFtcyBQYXJ0cyBvZiBrZXkgaW4gcnVudGltZSBtb2RlbC5cblx0ICogQHBhcmFtIHVwZGF0ZVRyYW5zQ3R4IFNob3VsZCB0cmFuc2llbnQgY29udGV4dCBiZSB1cGRhdGVkIHdpdGggdGhlIHZhbHVlLlxuXHQgKi9cblx0X3VwZGF0ZVJlc3VsdHM6IGZ1bmN0aW9uIChvU291cmNlOiBhbnksIGFQYXJhbXM6IEFycmF5PHN0cmluZz4gPSBbXSwgdXBkYXRlVHJhbnNDdHg6IGJvb2xlYW4pIHtcblx0XHQvLyBDYWxsZWQgZm9yXG5cdFx0Ly8gMS4gVkhEIHByb3BlcnR5IGNoYW5nZS5cblx0XHQvLyAyLiBPdXQgcGFyYW1ldGVyLlxuXHRcdC8vIDMuIHRyYW5zaWVudCBjb250ZXh0IHByb3BlcnR5IGNoYW5nZS5cblx0XHRjb25zdCBmaWVsZHNJbmZvTW9kZWwgPSBvU291cmNlICYmIG9Tb3VyY2UuZ2V0TW9kZWwoXCJmaWVsZHNJbmZvXCIpO1xuXHRcdGNvbnN0IG9GaWVsZHNJbmZvRGF0YSA9IGZpZWxkc0luZm9Nb2RlbCAmJiBmaWVsZHNJbmZvTW9kZWwuZ2V0RGF0YSgpO1xuXHRcdGxldCB2YWx1ZSA9IE1hc3NFZGl0SGFuZGxlcnMuX2dldFZhbHVlKG9Tb3VyY2UgYXMgQ29udHJvbCk7XG5cdFx0YVBhcmFtcyA9IGFQYXJhbXMubGVuZ3RoID4gMCA/IGFQYXJhbXMgOiBvU291cmNlICYmIG9Tb3VyY2UuZ2V0U2VsZWN0ZWRLZXkoKSAmJiBvU291cmNlLmdldFNlbGVjdGVkS2V5KCkuc3BsaXQoXCIvXCIpO1xuXG5cdFx0bGV0IG9EYXRhT2JqZWN0O1xuXHRcdGNvbnN0IHNQcm9wZXJ0eU5hbWUgPSBvU291cmNlLmRhdGEoXCJmaWVsZFBhdGhcIik7XG5cdFx0Y29uc3QgcHJvcGVydHlGdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyA9IG9Tb3VyY2UuZGF0YShcInByb3BlcnR5RnVsbHlRdWFsaWZpZWROYW1lXCIpO1xuXG5cdFx0aWYgKGFQYXJhbXNbMF0gPT09IFwiRGVmYXVsdFwiKSB7XG5cdFx0XHRvRGF0YU9iamVjdCA9IHtcblx0XHRcdFx0a2V5VmFsdWU6IGFQYXJhbXNbMV0sXG5cdFx0XHRcdHByb3BlcnR5RnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHR2YWx1ZTogYVBhcmFtc1swXVxuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKGFQYXJhbXNbMF0gPT09IFwiQ2xlYXJGaWVsZFZhbHVlXCIpIHtcblx0XHRcdHZhbHVlID0gXCJcIjtcblx0XHRcdHZhbHVlID0gTWFzc0VkaXRIYW5kbGVycy5fZ2V0VmFsdWVPbkVtcHR5KG9Tb3VyY2UsIGZpZWxkc0luZm9Nb2RlbCwgdmFsdWUsIHNQcm9wZXJ0eU5hbWUpO1xuXHRcdFx0b0RhdGFPYmplY3QgPSB7XG5cdFx0XHRcdGtleVZhbHVlOiBhUGFyYW1zWzFdLFxuXHRcdFx0XHRwcm9wZXJ0eUZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRcdFx0dmFsdWU6IHZhbHVlXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSBpZiAoIWFQYXJhbXMpIHtcblx0XHRcdHZhbHVlID0gTWFzc0VkaXRIYW5kbGVycy5fZ2V0VmFsdWVPbkVtcHR5KG9Tb3VyY2UsIGZpZWxkc0luZm9Nb2RlbCwgdmFsdWUsIHNQcm9wZXJ0eU5hbWUpO1xuXHRcdFx0b0RhdGFPYmplY3QgPSB7XG5cdFx0XHRcdGtleVZhbHVlOiBzUHJvcGVydHlOYW1lLFxuXHRcdFx0XHRwcm9wZXJ0eUZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRcdFx0dmFsdWU6IHZhbHVlXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eU5hbWUgPSBhUGFyYW1zLnNsaWNlKDAsIC0xKS5qb2luKFwiL1wiKTtcblx0XHRcdGNvbnN0IHByb3BlcnR5VmFsdWVzID1cblx0XHRcdFx0ZmllbGRzSW5mb01vZGVsLmdldFByb3BlcnR5KGAvdmFsdWVzLyR7cHJvcGVydHlOYW1lfWApIHx8IGZpZWxkc0luZm9Nb2RlbC5nZXRQcm9wZXJ0eShgL3VuaXREYXRhLyR7cHJvcGVydHlOYW1lfWApIHx8IFtdO1xuXG5cdFx0XHRjb25zdCByZWxhdGVkRmllbGQgPSAocHJvcGVydHlWYWx1ZXMgfHwgW10pLmZpbmQoZnVuY3Rpb24gKG9GaWVsZERhdGE6IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gb0ZpZWxkRGF0YT8udGV4dEluZm8/LnZhbHVlID09PSB2YWx1ZSB8fCBvRmllbGREYXRhLnRleHQgPT09IHZhbHVlO1xuXHRcdFx0fSk7XG5cdFx0XHRvRGF0YU9iamVjdCA9IHtcblx0XHRcdFx0a2V5VmFsdWU6IHByb3BlcnR5TmFtZSxcblx0XHRcdFx0cHJvcGVydHlGdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRcdHZhbHVlOlxuXHRcdFx0XHRcdHJlbGF0ZWRGaWVsZC50ZXh0SW5mbyAmJiBNYXNzRWRpdEhhbmRsZXJzLl92YWx1ZUV4aXN0cyhyZWxhdGVkRmllbGQudGV4dEluZm8udmFsdWUpXG5cdFx0XHRcdFx0XHQ/IHJlbGF0ZWRGaWVsZC50ZXh0SW5mby52YWx1ZVxuXHRcdFx0XHRcdFx0OiByZWxhdGVkRmllbGQudGV4dFxuXHRcdFx0fTtcblx0XHR9XG5cdFx0bGV0IGJFeGlzdGluZ0VsZW1lbnRpbmRleCA9IC0xO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgb0ZpZWxkc0luZm9EYXRhLnJlc3VsdHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGlmIChvRmllbGRzSW5mb0RhdGEucmVzdWx0c1tpXS5rZXlWYWx1ZSA9PT0gb0RhdGFPYmplY3Qua2V5VmFsdWUpIHtcblx0XHRcdFx0YkV4aXN0aW5nRWxlbWVudGluZGV4ID0gaTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGJFeGlzdGluZ0VsZW1lbnRpbmRleCAhPT0gLTEpIHtcblx0XHRcdG9GaWVsZHNJbmZvRGF0YS5yZXN1bHRzW2JFeGlzdGluZ0VsZW1lbnRpbmRleF0gPSBvRGF0YU9iamVjdDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b0ZpZWxkc0luZm9EYXRhLnJlc3VsdHMucHVzaChvRGF0YU9iamVjdCk7XG5cdFx0fVxuXHRcdGlmICh1cGRhdGVUcmFuc0N0eCAmJiAhb0RhdGFPYmplY3Qua2V5VmFsdWUuaW5jbHVkZXMoXCIvXCIpKSB7XG5cdFx0XHRjb25zdCB0cmFuc0N0eCA9IG9Tb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRcdGlmIChhUGFyYW1zWzBdID09PSBcIkRlZmF1bHRcIiB8fCBhUGFyYW1zWzBdID09PSBcIkNsZWFyRmllbGRWYWx1ZVwiKSB7XG5cdFx0XHRcdHRyYW5zQ3R4LnNldFByb3BlcnR5KG9EYXRhT2JqZWN0LmtleVZhbHVlLCBudWxsKTtcblx0XHRcdH0gZWxzZSBpZiAob0RhdGFPYmplY3QpIHtcblx0XHRcdFx0dHJhbnNDdHguc2V0UHJvcGVydHkob0RhdGFPYmplY3Qua2V5VmFsdWUsIG9EYXRhT2JqZWN0LnZhbHVlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1hc3NFZGl0SGFuZGxlcnM7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7RUF1QkEsTUFBTUEsZ0JBQXFCLEdBQUc7SUFDN0I7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxxQkFBcUIs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
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log","sap/fe/core/helpers/ModelHelper","sap/fe/macros/internal/valuehelp/ValueListHelper","sap/ui/core/Core"],function(e,t,n,
|
|
5
|
+
sap.ui.define(["sap/base/Log","sap/fe/core/helpers/ModelHelper","sap/fe/macros/internal/valuehelp/ValueListHelper","sap/ui/core/Core"],function(e,t,n,a){"use strict";const l={contextPropertyChange:function(e,t,n){const s=a.byId(n);const o=s&&s.getBindingContext();const i=s&&s.getModel("fieldsInfo");const u=i.getProperty(`/values/${t}`)||i.getProperty(`/unitData/${t}`)||[];if(o&&(u.inputType==="InputWithValueHelp"||u.inputType==="InputWithUnit")&&!u.valueListInfo){l._setValueListInfo(o,s,i,t)}const r=i&&i.getProperty("/isOpen");if(!r||!s.getVisible()){return}l._updateSelectKey(s,t,e)},handleMDCFieldChange:function(t,n){const a=t&&t.getSource();const s=t&&t.getParameter("promise");const o=a.getContent();if(!o||!n){return}s.then(l._updateSelectKeyForMDCFieldChange.bind(l,a,n)).catch(t=>{e.warning(`VHD selection couldn't be populated in the mass edit field.${t}`)})},handleSelectionChange:function(e){const t=e&&e.getSource();const n=t.getSelectedKey();const a=t&&n&&n.split("/");let s;if(a[0]==="UseValueHelpValue"){const n=e.getParameter("previousSelectedItem");const o=n.getKey();s=a.slice(1).join("/");l._onVHSelect(t,s,o);return}const o=t&&t.getModel("fieldsInfo");s=l._getPropertyNameFromKey(n);l._updateSuggestionForFieldsWithInParameters(o,s,n.startsWith("Default/")||n.startsWith("ClearFieldValue/"),true);l._updateSuggestionForFieldsWithOutParameters(o,s,n.startsWith("Default/")||n.startsWith("ClearFieldValue/"),false);l._updateResults(t,a,true)},_updateSelectKeyForMDCFieldChange:function(e,t,n){const a=e&&e.getBindingContext();const s=e&&e.getModel("fieldsInfo");const o=s.getProperty(`/values/${t}`)||s.getProperty(`/unitData/${t}`)||[];if(a&&(o.inputType==="InputWithValueHelp"||o.inputType==="InputWithUnit")&&!o.valueListInfo){l._setValueListInfo(a,e,s,t)}l._updateSuggestionForFieldsWithOutParameters(s,t,false,true);l._updateSuggestionForFieldsWithInParameters(s,t,false,true);const i=e.getFormFormattedValue();l._updateSelectKey(e,t,n,i)},_updateSuggestionForFieldsWithInParameters:function(e,t,n,a){const s=e.getProperty("/values");const o=e.getProperty("/unitData");const i=Object.keys(s);const u=Object.keys(o);i.forEach(l._updateInParameterSuggetions.bind(l,e,"/values/",t,n,a));u.forEach(l._updateInParameterSuggetions.bind(l,e,"/unitData/",t,n,a))},_updateInParameterSuggetions:function(e,t,n,a,s,o){const i=e.getProperty(`${t+o}/valueListInfo`);if(i&&n!=o){const u=i.inParameters;if(u&&u.length>0&&u.includes(n)){l._updateFieldPathSuggestions(e,t+o,a,s)}}},_updateSuggestionForFieldsWithOutParameters:function(e,t,n,a){const s=e.getProperty(`/values/${t}/valueListInfo`)||e.getProperty(`/unitData/${t}/valueListInfo`);if(s&&s.outParameters){const o=s.outParameters;if(o.length&&o.length>0){l._updateOutParameterSuggetions(o,e,n,a);const s=e.getProperty(`/values/${t}`)&&`/values/${t}`||e.getProperty(`/unitData/${t}`)&&`/unitData/${t}`;if(s){l._updateFieldPathSuggestions(e,s,false,true)}}}},_updateOutParameterSuggetions:function(e,t,n,a){const s=t.getProperty("/values");const o=t.getProperty("/unitData");const i=Object.keys(s);const u=Object.keys(o);e.forEach(e=>{if(i.includes(e)){l._updateFieldPathSuggestions(t,`/values/${e}`,n,a)}else if(u.includes(e)){l._updateFieldPathSuggestions(t,`/unitData/${e}`,n,a)}})},_updateFieldPathSuggestions:function(e,t,n,a){const l=e.getProperty(t);const s=l.defaultOptions;const o=e.getProperty(`${t}/selectedKey`);const i=a&&l.find(e=>e.key===o);if(n){const e=l.selectOptions;l.length=0;s.forEach(e=>l.push(e));e.forEach(e=>l.push(e))}else{l.length=0;s.forEach(e=>l.push(e))}e.setProperty(t,l);if(i&&!l.includes(i)){l.push(i);e.setProperty(`${t}/selectedKey`,o)}},_setValueListInfo:function(e,t,n,a){const s=n.getProperty(`/values/${a}`)&&"/values/"||n.getProperty(`/unitData/${a}`)&&"/unitData/";if(n.getProperty(`${s}${a}/valueListInfo`)){return}const o=n.getProperty(`${s}${a}/valueListInfo`);if(!o){l._requestValueList(e,t,n,a)}},_requestValueList:function(a,s,o,i){var u;const r=t.getMetaPathForContext(a);const d=r&&`${r}/${i}`;const c=s===null||s===void 0?void 0:s.getDependents();const g=s===null||s===void 0?void 0:s.getFieldHelp();const p=c===null||c===void 0?void 0:c.find(e=>e.getId()===g);const f=(u=p.getDelegate())===null||u===void 0?void 0:u.payload;if(!(p!==null&&p!==void 0&&p.getBindingContext())){p===null||p===void 0?void 0:p.setBindingContext(a)}const y=a.getModel().getMetaModel();n.createVHUIModel(p,d,y);const P=n.getValueListInfo(p,d,f);P.then(e=>{const t=e[0];const a=o.getProperty(`/values/${i}`)&&"/values/"||o.getProperty(`/unitData/${i}`)&&"/unitData/";const s={inParameters:t.vhParameters&&n.getInParameters(t.vhParameters).map(e=>e.helpPath),outParameters:t.vhParameters&&n.getOutParameters(t.vhParameters).map(e=>e.helpPath)};o.setProperty(`${a}${i}/valueListInfo`,s);if(s.outParameters.length>0){l._updateFieldPathSuggestions(o,`/values/${i}`,false,true)}}).catch(()=>{e.warning(`Mass Edit: Couldn't load valueList info for ${d}`)})},_getValueHelp:function(e,t){const n=t===null||t===void 0?void 0:t.getDependents();const a=t===null||t===void 0?void 0:t.getFieldHelp();return n===null||n===void 0?void 0:n.find(e=>e.getId()===a)},_onVHSelect:function(e,t,n){const a=e&&e.getModel("fieldsInfo");const s=a.getProperty(`/values/${t}`)&&"/values/"||a.getProperty(`/unitData/${t}`)&&"/unitData/";const o=e.getBindingContext();const i=l._getValueHelp(o,e.getParent());if(!(i!==null&&i!==void 0&&i.getBindingContext())){i===null||i===void 0?void 0:i.setBindingContext(o)}e.fireValueHelpRequest();a.setProperty(`${s+t}/selectedKey`,n)},_getPropertyNameFromKey:function(e){let t="";if(e.startsWith("Default/")||e.startsWith("ClearFieldValue/")||e.startsWith("UseValueHelpValue/")){t=e.substring(e.indexOf("/")+1)}else{t=e.substring(0,e.lastIndexOf("/"))}return t},_updateSelectKey:function(e,t,n,a){const s=e.getContent();if(!s||!t){return}let o=s.getSelectedKey();if((o.startsWith("Default/")||o.startsWith("ClearFieldValue/"))&&!n){return}const i=l._valueExists(a)?a:n;const u=e&&e.getModel("fieldsInfo");const r=u.getProperty(`/values/${t}`)||u.getProperty(`/unitData/${t}`)||[];const d=u.getProperty(`/values/${t}`)&&"/values/"||u.getProperty(`/unitData/${t}`)&&"/unitData/";const c=r.find(e=>{var t;return(e===null||e===void 0?void 0:(t=e.textInfo)===null||t===void 0?void 0:t.value)===n||e.text===n});if(c){if(a&&c.textInfo&&c.textInfo.descriptionPath&&(c.text!=i||c.textInfo.fullText!=i)){c.text=i;c.textInfo.fullText=i;c.textInfo.description=e.getAdditionalValue()}if(c.key===o){u.setProperty(`${d+t}/selectedKey`,o);return}o=c.key}else if([undefined,null,""].indexOf(n)===-1){o=`${t}/${n}`;const a={text:i,key:o,textInfo:{description:e.getAdditionalValue(),descriptionPath:r&&r.textInfo&&r.textInfo.descriptionPath,fullText:i,textArrangement:e.getDisplay(),value:e.getValue(),valuePath:t}};r.push(a);r.selectOptions=r.selectOptions||[];r.selectOptions.push(a);u.setProperty(d+t,r)}else{o=`Default/${t}`}u.setProperty(`${d+t}/selectedKey`,o);l._updateResults(s)},_getValue:function(e){var t;return e.getMetadata().getName()==="sap.fe.core.controls.MassEditSelect"?(t=e.getSelectedItem())===null||t===void 0?void 0:t.getText():e.getValue()},_getValueOnEmpty:function(e,t,n,a){if(!n){const l=t.getProperty(`/values/${a}`)||t.getProperty(`/unitData/${a}`)||[];if(l.unitProperty){n=0;e.setValue(n)}else if(l.inputType==="CheckBox"){n=false}}return n},_valueExists:function(e){return e!=undefined&&e!=null},_updateResults:function(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];let n=arguments.length>2?arguments[2]:undefined;const a=e&&e.getModel("fieldsInfo");const s=a&&a.getData();let o=l._getValue(e);t=t.length>0?t:e&&e.getSelectedKey()&&e.getSelectedKey().split("/");let i;const u=e.data("fieldPath");const r=e.data("propertyFullyQualifiedName");if(t[0]==="Default"){i={keyValue:t[1],propertyFullyQualifiedName:r,value:t[0]}}else if(t[0]==="ClearFieldValue"){o="";o=l._getValueOnEmpty(e,a,o,u);i={keyValue:t[1],propertyFullyQualifiedName:r,value:o}}else if(!t){o=l._getValueOnEmpty(e,a,o,u);i={keyValue:u,propertyFullyQualifiedName:r,value:o}}else{const e=t.slice(0,-1).join("/");const n=a.getProperty(`/values/${e}`)||a.getProperty(`/unitData/${e}`)||[];const s=(n||[]).find(function(e){var t;return(e===null||e===void 0?void 0:(t=e.textInfo)===null||t===void 0?void 0:t.value)===o||e.text===o});i={keyValue:e,propertyFullyQualifiedName:r,value:s.textInfo&&l._valueExists(s.textInfo.value)?s.textInfo.value:s.text}}let d=-1;for(let e=0;e<s.results.length;e++){if(s.results[e].keyValue===i.keyValue){d=e}}if(d!==-1){s.results[d]=i}else{s.results.push(i)}if(n&&!i.keyValue.includes("/")){const n=e.getBindingContext();if(t[0]==="Default"||t[0]==="ClearFieldValue"){n.setProperty(i.keyValue,null)}else if(i){n.setProperty(i.keyValue,i.value)}}}};return l},false);
|
|
6
6
|
//# sourceMappingURL=MassEditHandlers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MassEditHandlers.js","names":["sap","ui","define","Log","ModelHelper","ValueListHelper","Core","MassEditHandlers","contextPropertyChange","newValue","dataProperty","mdcFieldId","source","byId","transCtx","getBindingContext","fieldInfoModel","getModel","values","getProperty","inputType","valueListInfo","_setValueListInfo","isDialogOpen","getVisible","_updateSelectKey","handleMDCFieldChange","event","propertyName","getSource","changePromise","getParameter","comboBox","getContent","then","_updateSelectKeyForMDCFieldChange","bind","catch","err","warning","handleSelectionChange","key","getSelectedKey","params","split","prevItem","selectKey","getKey","slice","join","_onVHSelect","_getPropertyNameFromKey","_updateSuggestionForFieldsWithInParameters","startsWith","_updateSuggestionForFieldsWithOutParameters","_updateResults","value","formattedValue","getFormFormattedValue","resetValues","keepExistingSelection","unitData","fieldPaths","Object","keys","unitFieldPaths","forEach","_updateInParameterSuggetions","pathPrefix","srcPropertyName","inParameters","length","includes","_updateFieldPathSuggestions","outParameters","_updateOutParameterSuggetions","outParameter","fieldPathAbsolute","options","defaultOptions","selectedKey","existingSelection","find","option","selectOptions","defaultOption","push","selectOption","setProperty","propPath","_requestValueList","_fieldValueHelp$getDe","metaPath","getMetaPathForContext","propertyPath","dependents","getDependents","fieldHelp","getFieldHelp","fieldValueHelp","dependent","getId","payload","getDelegate","setBindingContext","metaModel","getMetaModel","createVHUIModel","getValueListInfo","vLinfos","vLinfo","info","vhParameters","getInParameters","map","inParam","helpPath","getOutParameters","outParam","_getValueHelp","getParent","fireValueHelpRequest","substring","indexOf","lastIndexOf","fullText","formattedText","_valueExists","relatedField","fieldData","_fieldData$textInfo","textInfo","text","descriptionPath","description","getAdditionalValue","undefined","selectionInfo","textArrangement","getDisplay","getValue","valuePath","_getValue","_getSelectedItem","getMetadata","getName","getSelectedItem","getText","_getValueOnEmpty","oSource","fieldsInfoModel","sPropertyName","unitProperty","setValue","aParams","arguments","updateTransCtx","oFieldsInfoData","getData","oDataObject","data","keyValue","propertyValues","oFieldData","_oFieldData$textInfo","bExistingElementindex","i","results"],"sources":["MassEditHandlers-dbg.js"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MassEditHandlers.js","names":["sap","ui","define","Log","ModelHelper","ValueListHelper","Core","MassEditHandlers","contextPropertyChange","newValue","dataProperty","mdcFieldId","source","byId","transCtx","getBindingContext","fieldInfoModel","getModel","values","getProperty","inputType","valueListInfo","_setValueListInfo","isDialogOpen","getVisible","_updateSelectKey","handleMDCFieldChange","event","propertyName","getSource","changePromise","getParameter","comboBox","getContent","then","_updateSelectKeyForMDCFieldChange","bind","catch","err","warning","handleSelectionChange","key","getSelectedKey","params","split","prevItem","selectKey","getKey","slice","join","_onVHSelect","_getPropertyNameFromKey","_updateSuggestionForFieldsWithInParameters","startsWith","_updateSuggestionForFieldsWithOutParameters","_updateResults","value","formattedValue","getFormFormattedValue","resetValues","keepExistingSelection","unitData","fieldPaths","Object","keys","unitFieldPaths","forEach","_updateInParameterSuggetions","pathPrefix","srcPropertyName","inParameters","length","includes","_updateFieldPathSuggestions","outParameters","_updateOutParameterSuggetions","outParameter","fieldPathAbsolute","options","defaultOptions","selectedKey","existingSelection","find","option","selectOptions","defaultOption","push","selectOption","setProperty","propPath","_requestValueList","_fieldValueHelp$getDe","metaPath","getMetaPathForContext","propertyPath","dependents","getDependents","fieldHelp","getFieldHelp","fieldValueHelp","dependent","getId","payload","getDelegate","setBindingContext","metaModel","getMetaModel","createVHUIModel","getValueListInfo","vLinfos","vLinfo","info","vhParameters","getInParameters","map","inParam","helpPath","getOutParameters","outParam","_getValueHelp","getParent","fireValueHelpRequest","substring","indexOf","lastIndexOf","fullText","formattedText","_valueExists","relatedField","fieldData","_fieldData$textInfo","textInfo","text","descriptionPath","description","getAdditionalValue","undefined","selectionInfo","textArrangement","getDisplay","getValue","valuePath","_getValue","_getSelectedItem","getMetadata","getName","getSelectedItem","getText","_getValueOnEmpty","oSource","fieldsInfoModel","sPropertyName","unitProperty","setValue","aParams","arguments","updateTransCtx","oFieldsInfoData","getData","oDataObject","data","propertyFullyQualifiedName","keyValue","propertyValues","oFieldData","_oFieldData$textInfo","bExistingElementindex","i","results"],"sources":["MassEditHandlers-dbg.js"],"mappings":"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"}
|
|
@@ -575,10 +575,12 @@ const MassEditHandlers: any = {
|
|
|
575
575
|
|
|
576
576
|
let oDataObject;
|
|
577
577
|
const sPropertyName = oSource.data("fieldPath");
|
|
578
|
+
const propertyFullyQualifiedName: string = oSource.data("propertyFullyQualifiedName");
|
|
578
579
|
|
|
579
580
|
if (aParams[0] === "Default") {
|
|
580
581
|
oDataObject = {
|
|
581
582
|
keyValue: aParams[1],
|
|
583
|
+
propertyFullyQualifiedName,
|
|
582
584
|
value: aParams[0]
|
|
583
585
|
};
|
|
584
586
|
} else if (aParams[0] === "ClearFieldValue") {
|
|
@@ -586,12 +588,14 @@ const MassEditHandlers: any = {
|
|
|
586
588
|
value = MassEditHandlers._getValueOnEmpty(oSource, fieldsInfoModel, value, sPropertyName);
|
|
587
589
|
oDataObject = {
|
|
588
590
|
keyValue: aParams[1],
|
|
591
|
+
propertyFullyQualifiedName,
|
|
589
592
|
value: value
|
|
590
593
|
};
|
|
591
594
|
} else if (!aParams) {
|
|
592
595
|
value = MassEditHandlers._getValueOnEmpty(oSource, fieldsInfoModel, value, sPropertyName);
|
|
593
596
|
oDataObject = {
|
|
594
597
|
keyValue: sPropertyName,
|
|
598
|
+
propertyFullyQualifiedName,
|
|
595
599
|
value: value
|
|
596
600
|
};
|
|
597
601
|
} else {
|
|
@@ -604,6 +608,7 @@ const MassEditHandlers: any = {
|
|
|
604
608
|
});
|
|
605
609
|
oDataObject = {
|
|
606
610
|
keyValue: propertyName,
|
|
611
|
+
propertyFullyQualifiedName,
|
|
607
612
|
value:
|
|
608
613
|
relatedField.textInfo && MassEditHandlers._valueExists(relatedField.textInfo.value)
|
|
609
614
|
? relatedField.textInfo.value
|