@sapui5/sap.fe.core 1.113.0 → 1.115.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 +68 -5
- 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 +120 -4
- package/src/sap/fe/core/AppComponent-dbg.js +8 -2
- 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 +19 -3
- package/src/sap/fe/core/AppStateHandler-dbg.js +14 -10
- 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 +17 -11
- package/src/sap/fe/core/BaseController-dbg.js +1 -1
- package/src/sap/fe/core/BaseController.ts +13 -2
- package/src/sap/fe/core/CommonUtils-dbg.js +74 -317
- 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 +96 -473
- package/src/sap/fe/core/ExtensionAPI-dbg.js +1 -1
- package/src/sap/fe/core/ExtensionAPI.ts +2 -2
- package/src/sap/fe/core/StateFilterToSelectionVariant-dbg.js +263 -0
- package/src/sap/fe/core/StateFilterToSelectionVariant.js +6 -0
- package/src/sap/fe/core/StateFilterToSelectionVariant.js.map +1 -0
- package/src/sap/fe/core/StateFilterToSelectionVariant.ts +316 -0
- package/src/sap/fe/core/TemplateComponent-dbg.js +1 -1
- package/src/sap/fe/core/TemplateComponent.ts +6 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase-dbg.js +10 -3
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +8 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport-dbg.js +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.ts +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor-dbg.js +8 -8
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.ts +7 -7
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment-dbg.js +1 -1
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.ts +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +68 -36
- 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 +83 -43
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +12 -11
- 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 +17 -21
- package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +233 -133
- 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 +260 -145
- package/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +1 -1
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +3 -3
- package/src/sap/fe/core/controllerextensions/Routing-dbg.js +5 -3
- package/src/sap/fe/core/controllerextensions/Routing.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/Routing.ts +5 -4
- package/src/sap/fe/core/controllerextensions/Share-dbg.js +3 -2
- package/src/sap/fe/core/controllerextensions/Share.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/Share.ts +2 -1
- package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +19 -14
- 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 +25 -18
- package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +40 -26
- 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 +59 -33
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +8 -8
- 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 +23 -25
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +7 -45
- 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 +5 -48
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog-dbg.js +2 -2
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +7 -3
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +73 -90
- 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 +88 -101
- package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +26 -4
- 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 +29 -3
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup-dbg.js +13 -10
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +7 -20
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade-dbg.js +64 -4
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +91 -8
- package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +2 -4
- 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 +3 -5
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +9 -9
- 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 +8 -8
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -0
- package/src/sap/fe/core/controls/CommandExecution-dbg.js +4 -9
- 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 +0 -8
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block-dbg.js +335 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +6 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js.map +1 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +336 -0
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +1 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +3 -28
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js.map +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +8 -29
- package/src/sap/fe/core/controls/filterbar/adapter/SelectionVariantToStateFilters-dbg.js +435 -0
- package/src/sap/fe/core/controls/filterbar/adapter/SelectionVariantToStateFilters.js +6 -0
- package/src/sap/fe/core/controls/filterbar/adapter/SelectionVariantToStateFilters.js.map +1 -0
- package/src/sap/fe/core/controls/filterbar/adapter/SelectionVariantToStateFilters.ts +532 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +30 -1
- 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 +38 -0
- package/src/sap/fe/core/converters/ManifestSettings-dbg.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +7 -5
- package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +36 -4
- 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 +45 -4
- package/src/sap/fe/core/converters/TemplateConverter-dbg.js +2 -3
- package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.js.map +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.ts +1 -6
- package/src/sap/fe/core/converters/annotations/DataField-dbg.js +18 -3
- 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 +18 -2
- package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +679 -676
- 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/Chart-dbg.js +32 -20
- 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 +30 -18
- package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +4 -5
- 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 +6 -37
- package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +100 -72
- 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 +146 -99
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +37 -10
- 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 +49 -16
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +47 -18
- 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 +74 -20
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +26 -9
- 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 +24 -8
- package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +28 -2
- package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +28 -9
- package/src/sap/fe/core/converters/helpers/InsightsHelpers-dbg.js +39 -0
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +6 -0
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.js.map +1 -0
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +45 -0
- package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +13 -15
- 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 +18 -54
- package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +12 -12
- 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 +16 -11
- package/src/sap/fe/core/formatters/CollaborationFormatter-dbg.js +17 -33
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +1 -1
- package/src/sap/fe/core/formatters/CollaborationFormatter.js.map +1 -1
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +27 -22
- package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +5 -11
- 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 +4 -25
- package/src/sap/fe/core/fpm/Component-dbg.js +3 -1
- package/src/sap/fe/core/fpm/Component.js +1 -1
- package/src/sap/fe/core/fpm/Component.js.map +1 -1
- package/src/sap/fe/core/fpm/Component.ts +3 -1
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +74 -26
- package/src/sap/fe/core/helpers/BindingToolkit.js +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.ts +116 -33
- package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +82 -37
- 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 +109 -56
- package/src/sap/fe/core/helpers/KeepAliveHelper-dbg.js +1 -1
- package/src/sap/fe/core/helpers/KeepAliveHelper.ts +7 -5
- package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +13 -3
- 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 +28 -18
- package/src/sap/fe/core/helpers/MessageStrip-dbg.js +1 -1
- package/src/sap/fe/core/helpers/MessageStrip.ts +2 -1
- package/src/sap/fe/core/helpers/ModelHelper-dbg.js +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +3 -3
- package/src/sap/fe/core/helpers/RecommendationHelper-dbg.js +71 -0
- package/src/sap/fe/core/helpers/RecommendationHelper.js +6 -0
- package/src/sap/fe/core/helpers/RecommendationHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/RecommendationHelper.ts +94 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper-dbg.js +5 -2
- package/src/sap/fe/core/helpers/ResourceModelHelper.js +1 -1
- package/src/sap/fe/core/helpers/ResourceModelHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/ResourceModelHelper.ts +5 -0
- package/src/sap/fe/core/helpers/StableIdHelper-dbg.js +24 -2
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.ts +23 -1
- package/src/sap/fe/core/helpers/TitleHelper-dbg.js +239 -0
- package/src/sap/fe/core/helpers/TitleHelper.js +6 -0
- package/src/sap/fe/core/helpers/TitleHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/TitleHelper.ts +295 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader-dbg.js +4 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js +1 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js.map +1 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +3 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +41 -17
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx-control.js.map +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +45 -21
- package/src/sap/fe/core/jsx-runtime/jsx-dbg.js +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.ts +1 -0
- package/src/sap/fe/core/jsx-runtime/useMDXComponents-dbg.js +8 -4
- 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 +7 -2
- package/src/sap/fe/core/library-dbg.js +4 -3
- package/src/sap/fe/core/library-preload.js +91 -74
- 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.js.map +1 -1
- package/src/sap/fe/core/library.ts +1 -1
- package/src/sap/fe/core/manifest.json +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +4 -3
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js.map +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +3 -2
- package/src/sap/fe/core/messagebundle.properties +12 -8
- package/src/sap/fe/core/messagebundle_ar.properties +7 -5
- package/src/sap/fe/core/messagebundle_bg.properties +7 -5
- package/src/sap/fe/core/messagebundle_ca.properties +7 -5
- package/src/sap/fe/core/messagebundle_cs.properties +7 -5
- package/src/sap/fe/core/messagebundle_cy.properties +7 -5
- package/src/sap/fe/core/messagebundle_da.properties +7 -5
- package/src/sap/fe/core/messagebundle_de.properties +7 -5
- package/src/sap/fe/core/messagebundle_el.properties +7 -5
- package/src/sap/fe/core/messagebundle_en.properties +7 -5
- package/src/sap/fe/core/messagebundle_en_GB.properties +6 -4
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +7 -4
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +6 -4
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +7 -4
- package/src/sap/fe/core/messagebundle_es.properties +7 -5
- package/src/sap/fe/core/messagebundle_es_MX.properties +7 -5
- package/src/sap/fe/core/messagebundle_et.properties +7 -5
- package/src/sap/fe/core/messagebundle_fi.properties +7 -5
- package/src/sap/fe/core/messagebundle_fr.properties +7 -5
- package/src/sap/fe/core/messagebundle_fr_CA.properties +8 -6
- package/src/sap/fe/core/messagebundle_hi.properties +7 -5
- package/src/sap/fe/core/messagebundle_hr.properties +7 -5
- package/src/sap/fe/core/messagebundle_hu.properties +7 -5
- package/src/sap/fe/core/messagebundle_id.properties +7 -5
- package/src/sap/fe/core/messagebundle_it.properties +8 -6
- package/src/sap/fe/core/messagebundle_iw.properties +7 -5
- package/src/sap/fe/core/messagebundle_ja.properties +7 -5
- package/src/sap/fe/core/messagebundle_kk.properties +7 -5
- package/src/sap/fe/core/messagebundle_ko.properties +7 -5
- package/src/sap/fe/core/messagebundle_lt.properties +7 -5
- package/src/sap/fe/core/messagebundle_lv.properties +7 -5
- package/src/sap/fe/core/messagebundle_ms.properties +7 -5
- package/src/sap/fe/core/messagebundle_nl.properties +7 -5
- package/src/sap/fe/core/messagebundle_no.properties +7 -5
- package/src/sap/fe/core/messagebundle_pl.properties +7 -5
- package/src/sap/fe/core/messagebundle_pt.properties +7 -5
- package/src/sap/fe/core/messagebundle_pt_PT.properties +7 -5
- package/src/sap/fe/core/messagebundle_ro.properties +7 -5
- package/src/sap/fe/core/messagebundle_ru.properties +7 -5
- package/src/sap/fe/core/messagebundle_sh.properties +7 -5
- package/src/sap/fe/core/messagebundle_sk.properties +7 -5
- package/src/sap/fe/core/messagebundle_sl.properties +7 -5
- package/src/sap/fe/core/messagebundle_sv.properties +7 -5
- package/src/sap/fe/core/messagebundle_th.properties +7 -5
- package/src/sap/fe/core/messagebundle_tr.properties +7 -5
- package/src/sap/fe/core/messagebundle_uk.properties +7 -5
- package/src/sap/fe/core/messagebundle_vi.properties +7 -5
- package/src/sap/fe/core/messagebundle_zh_CN.properties +7 -5
- package/src/sap/fe/core/messagebundle_zh_TW.properties +7 -5
- package/src/sap/fe/core/operationsHelper-dbg.js +1 -1
- package/src/sap/fe/core/operationsHelper.ts +1 -1
- package/src/sap/fe/core/rootView/Fcl-dbg.controller.js +8 -2
- package/src/sap/fe/core/rootView/Fcl.controller.js +1 -1
- package/src/sap/fe/core/rootView/Fcl.controller.js.map +1 -1
- package/src/sap/fe/core/rootView/Fcl.controller.ts +8 -1
- package/src/sap/fe/core/rootView/NavContainer-dbg.controller.js +8 -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 +10 -3
- package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +16 -6
- 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 +10 -4
- package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +54 -5
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +52 -6
- package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +31 -14
- package/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +15 -1
- package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +10 -4
- 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 -7
- package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +5 -2
- 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 +9 -5
- package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +1 -2
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +2 -18
- package/src/sap/fe/core/templating/CommonFormatters-dbg.js +8 -8
- package/src/sap/fe/core/templating/CommonFormatters.js.map +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.ts +9 -9
- package/src/sap/fe/core/templating/CriticalityFormatters-dbg.js +1 -1
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +2 -2
- package/src/sap/fe/core/templating/DataFieldFormatters-dbg.js +38 -2
- package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -1
- package/src/sap/fe/core/templating/DataFieldFormatters.js.map +1 -1
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +40 -0
- package/src/sap/fe/core/templating/FieldControlHelper-dbg.js +5 -6
- package/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
- package/src/sap/fe/core/templating/FieldControlHelper.js.map +1 -1
- package/src/sap/fe/core/templating/FieldControlHelper.ts +13 -11
- package/src/sap/fe/core/templating/FilterHelper-dbg.js +13 -1
- 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 +13 -1
- package/src/sap/fe/core/templating/PropertyHelper-dbg.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.ts +7 -7
- package/src/sap/fe/core/templating/UIFormatters-dbg.js +5 -6
- package/src/sap/fe/core/templating/UIFormatters.js +1 -1
- package/src/sap/fe/core/templating/UIFormatters.js.map +1 -1
- package/src/sap/fe/core/templating/UIFormatters.ts +6 -7
- package/src/sap/fe/core/type/TypeUtil-dbg.js +2 -2
- 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 +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/Manage-dbg.js +0 -243
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +0 -6
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +0 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +0 -283
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +0 -121
- package/src/sap/fe/core/controllerextensions/collaboration/UserDetails.fragment.xml +0 -11
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +0 -59
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +0 -171
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +0 -6
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js.map +0 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +0 -184
|
@@ -6,6 +6,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
9
|
+
var getActivityKeyFromPath = CollaborationCommon.getActivityKeyFromPath;
|
|
9
10
|
var CollaborationUtils = CollaborationCommon.CollaborationUtils;
|
|
10
11
|
var Activity = CollaborationCommon.Activity;
|
|
11
12
|
var isCollaborationConnected = ActivityBase.isCollaborationConnected;
|
|
@@ -169,7 +170,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
169
170
|
break;
|
|
170
171
|
case Activity.LiveChange:
|
|
171
172
|
mactivity = sender;
|
|
172
|
-
mactivity.key =
|
|
173
|
+
mactivity.key = getActivityKeyFromPath(message.clientContent);
|
|
173
174
|
|
|
174
175
|
// stupid JSON model...
|
|
175
176
|
let initJSONModel = "";
|
|
@@ -188,7 +189,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
188
189
|
case Activity.Undo:
|
|
189
190
|
// The user did a change but reverted it, therefore unblock the control
|
|
190
191
|
activities = internalModel.getProperty(ACTIVITIES + metaPath);
|
|
191
|
-
activityKey =
|
|
192
|
+
activityKey = getActivityKeyFromPath(message.clientContent);
|
|
192
193
|
internalModel.setProperty(ACTIVITIES + metaPath, activities.filter(a => a.key !== activityKey));
|
|
193
194
|
break;
|
|
194
195
|
}
|
|
@@ -227,7 +228,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
227
228
|
updatedObjectsPaths.forEach(updatedPath => {
|
|
228
229
|
var _currentActivities;
|
|
229
230
|
const updatedMetaPath = metaModel.getMetaPath(updatedPath);
|
|
230
|
-
const activityKey =
|
|
231
|
+
const activityKey = getActivityKeyFromPath(updatedPath);
|
|
231
232
|
let currentActivities = internalModel.getProperty(ACTIVITIES + updatedMetaPath) || [];
|
|
232
233
|
currentActivities = ((_currentActivities = currentActivities) === null || _currentActivities === void 0 ? void 0 : _currentActivities.filter) && currentActivities.filter(activity => activity.key !== activityKey);
|
|
233
234
|
if (currentActivities) {
|
|
@@ -382,9 +383,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
382
383
|
const actionName = message.clientTriggeredActionName || "";
|
|
383
384
|
const requestedProperties = (_message$clientReques = message.clientRequestedProperties) === null || _message$clientReques === void 0 ? void 0 : _message$clientReques.split("|");
|
|
384
385
|
const refreshListBinding = message.clientRefreshListBinding === "true";
|
|
385
|
-
|
|
386
|
+
let requestPromises = [];
|
|
386
387
|
if (refreshListBinding) {
|
|
387
388
|
requestPromises.push(applyUpdatesForCollection(view, pathsForAction[0]));
|
|
389
|
+
} else {
|
|
390
|
+
requestPromises = pathsForAction.map(path => requestUpdateForAction(view, path, actionName, requestedProperties));
|
|
388
391
|
}
|
|
389
392
|
|
|
390
393
|
// Simulate any change so the edit flow shows the draft indicator and sets the page to dirty
|
|
@@ -486,9 +489,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
486
489
|
const appComponent = CollaborationUtils.getAppComponent(view);
|
|
487
490
|
return CommonUtils.getCurrentPageView(appComponent);
|
|
488
491
|
}
|
|
489
|
-
function getActivityKey(x) {
|
|
490
|
-
return x.substring(x.lastIndexOf("(") + 1, x.lastIndexOf(")"));
|
|
491
|
-
}
|
|
492
492
|
|
|
493
493
|
/**
|
|
494
494
|
* Calculates the metapath from one or more data path(s).
|
|
@@ -514,4 +514,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
514
514
|
send: send
|
|
515
515
|
};
|
|
516
516
|
}, false);
|
|
517
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNWUFDVElWSVRZIiwiQUNUSVZFVVNFUlMiLCJBQ1RJVklUSUVTIiwiU1lOQ0dST1VQSUQiLCJpc0Nvbm5lY3RlZCIsImNvbnRyb2wiLCJpbnRlcm5hbE1vZGVsIiwiZ2V0TW9kZWwiLCJpc0NvbGxhYm9yYXRpb25Db25uZWN0ZWQiLCJzZW5kIiwiYWN0aW9uIiwiY29udGVudCIsInRyaWdnZXJlZEFjdGlvbk5hbWUiLCJyZWZyZXNoTGlzdEJpbmRpbmciLCJhY3Rpb25SZXF1ZXN0ZWRQcm9wZXJ0aWVzIiwiY2xpZW50Q29udGVudCIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJyZXF1ZXN0ZWRQcm9wZXJ0aWVzIiwibXlBY3Rpdml0eSIsImdldFByb3BlcnR5IiwiQWN0aXZpdHkiLCJMaXZlQ2hhbmdlIiwic2V0UHJvcGVydHkiLCJVbmRvIiwiYnJvYWRjYXN0Q29sbGFib3JhdGlvbk1lc3NhZ2UiLCJnZXRXZWJTb2NrZXRCYXNlVVJMIiwiYmluZGluZ0NvbnRleHQiLCJnZXRNZXRhTW9kZWwiLCJnZXRPYmplY3QiLCJpc0NvbGxhYm9yYXRpb25FbmFibGVkIiwidmlldyIsImdldEJpbmRpbmdDb250ZXh0IiwiY29ubmVjdCIsIm1lIiwiQ29sbGFib3JhdGlvblV0aWxzIiwiZ2V0TWUiLCJ3ZWJTb2NrZXRCYXNlVVJMIiwic2VydmljZVVybCIsImdldFNlcnZpY2VVcmwiLCJzRHJhZnRVVUlEIiwicmVxdWVzdFByb3BlcnR5IiwiaW5pdGlhbGl6ZUNvbGxhYm9yYXRpb24iLCJtZXNzYWdlIiwibWVzc2FnZVJlY2VpdmUiLCJkaXNjb25uZWN0IiwiZW5kQ29sbGFib3JhdGlvbiIsImFjdGl2ZVVzZXJzIiwiYWN0aXZpdGllcyIsImFjdGl2aXR5S2V5IiwibWV0YVBhdGgiLCJjYWxjdWxhdGVNZXRhUGF0aCIsInVzZXJBY3Rpb24iLCJjbGllbnRBY3Rpb24iLCJzZW5kZXIiLCJpZCIsInVzZXJJRCIsIm5hbWUiLCJ1c2VyRGVzY3JpcHRpb24iLCJpbml0aWFscyIsImZvcm1hdEluaXRpYWxzIiwiY29sb3IiLCJnZXRVc2VyQ29sb3IiLCJtYWN0aXZpdHkiLCJKb2luIiwiSm9pbkVjaG8iLCJmaW5kSW5kZXgiLCJ1c2VyIiwidW5zaGlmdCIsIkxlYXZlIiwiZmlsdGVyIiwiYWxsQWN0aXZpdGllcyIsInJlbW92ZVVzZXJBY3Rpdml0aWVzIiwiYmFnIiwiYWN0aXZpdHkiLCJwIiwiQ2hhbmdlIiwidXBkYXRlT25DaGFuZ2UiLCJDcmVhdGUiLCJ1cGRhdGVPbkNyZWF0ZSIsIkRlbGV0ZSIsInVwZGF0ZU9uRGVsZXRlIiwiQWN0aXZhdGUiLCJkcmFmdENsb3NlZEJ5T3RoZXJVc2VyIiwiZ2V0VGV4dCIsIkRpc2NhcmQiLCJBY3Rpb24iLCJ1cGRhdGVPbkFjdGlvbiIsImtleSIsImdldEFjdGl2aXR5S2V5IiwiaW5pdEpTT05Nb2RlbCIsInBhcnRzIiwic3BsaXQiLCJpIiwibGVuZ3RoIiwic2xpY2UiLCJwdXNoIiwiYSIsInBhdGgiLCJtZXNzYWdlVGV4dCIsIk1lc3NhZ2VCb3giLCJpbmZvcm1hdGlvbiIsImdldEJpbmRpbmciLCJyZXNldENoYW5nZXMiLCJ0aGVuIiwibmF2aWdhdGUiLCJjYXRjaCIsIkxvZyIsImVycm9yIiwidXBkYXRlZE9iamVjdHNQYXRocyIsIm1ldGFNb2RlbCIsImZvckVhY2giLCJ1cGRhdGVkUGF0aCIsInVwZGF0ZWRNZXRhUGF0aCIsImdldE1ldGFQYXRoIiwiY3VycmVudEFjdGl2aXRpZXMiLCJjdXJyZW50UGFnZSIsImdldEN1cnJlbnRQYWdlIiwiY3VycmVudENvbnRleHQiLCJyZXF1ZXN0UHJvbWlzZXMiLCJtYXAiLCJhcHBseVVwZGF0ZXNGb3JDaGFuZ2UiLCJnZXRDb250cm9sbGVyIiwiZWRpdEZsb3ciLCJ1cGRhdGVEb2N1bWVudCIsIlByb21pc2UiLCJhbGwiLCJwcm9wZXJ0eVBhdGhGb3JVcGRhdGUiLCJtZXRhQ29udGV4dCIsImdldE1ldGFDb250ZXh0IiwiZGF0YU1vZGVsT2JqZWN0IiwiTWV0YU1vZGVsQ29udmVydGVyIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwidGFyZ2V0Q29udGV4dFBhdGgiLCJzdWJzdHJpbmciLCJsYXN0SW5kZXhPZiIsInRhcmdldENvbnRleHQiLCJmaW5kQ29udGV4dEZvclVwZGF0ZSIsInBhcmVudENvbGxlY3Rpb25QYXRoIiwicGFyZW50Q29udGV4dFBhdGgiLCJwYXJlbnRDb250ZXh0IiwidW5kZWZpbmVkIiwic2lkZUVmZmVjdHNQcm9taXNlcyIsInNpZGVFZmZlY3RzU2VydmljZSIsImdldEFwcENvbXBvbmVudCIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsInRhcmdldE1ldGFQYXRoIiwiZ2V0UGF0aCIsInJlbGF0aXZlTWV0YVBhdGhGb3JVcGRhdGUiLCJyZXBsYWNlIiwicmVxdWVzdFNpZGVFZmZlY3RzIiwiZmllbGRHcm91cElkcyIsImNvbXB1dGVGaWVsZEdyb3VwSWRzIiwidGFyZ2V0RW50aXR5VHlwZSIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInRhcmdldE9iamVjdCIsInBhZ2VDb250cm9sbGVyIiwic2lkZUVmZmVjdHNNYXBGb3JGaWVsZEdyb3VwIiwiX3NpZGVFZmZlY3RzIiwiZ2V0U2lkZUVmZmVjdHNNYXBGb3JGaWVsZEdyb3VwcyIsIk9iamVjdCIsImtleXMiLCJzaWRlRWZmZWN0TmFtZSIsInNpZGVFZmZlY3QiLCJzaWRlRWZmZWN0cyIsImNvbnRleHQiLCJlcnIiLCJjdXJyZW50UGF0aCIsImRlbGV0ZWRPYmplY3RQYXRocyIsImRlbGV0ZWRQYXRoSW5Vc2UiLCJmaW5kIiwiZGVsZXRlZFBhdGgiLCJzdGFydHNXaXRoIiwib25DbG9zZSIsImdldEtlZXBBbGl2ZUNvbnRleHQiLCJzZXRLZWVwQWxpdmUiLCJyZXF1ZXN0UHJvbWlzZSIsImFwcGx5VXBkYXRlc0ZvckNvbGxlY3Rpb24iLCJfcm91dGluZyIsIm5hdmlnYXRlQmFja0Zyb21Db250ZXh0IiwiY3JlYXRlZE9iamVjdFBhdGhzIiwicGF0aEluQ29sbGVjdGlvbiIsImFwcENvbXBvbmVudCIsInBhcmVudFBhdGgiLCJtZXRhUGF0aEZvclVwZGF0ZSIsInBhcmVudE1ldGFQYXRoIiwicmVsYXRpdmVQYXRoIiwicmVxdWVzdFNpZGVFZmZlY3RzRm9yTmF2aWdhdGlvblByb3BlcnR5IiwicGF0aHNGb3JBY3Rpb24iLCJhY3Rpb25OYW1lIiwiY2xpZW50VHJpZ2dlcmVkQWN0aW9uTmFtZSIsImNsaWVudFJlcXVlc3RlZFByb3BlcnRpZXMiLCJjbGllbnRSZWZyZXNoTGlzdEJpbmRpbmciLCJyZXF1ZXN0VXBkYXRlRm9yQWN0aW9uIiwicGF0aEZvckFjdGlvbiIsInNpZGVFZmZlY3RTZXJ2aWNlIiwic2lkZUVmZmVjdHNGcm9tQWN0aW9uIiwiZ2V0T0RhdGFBY3Rpb25TaWRlRWZmZWN0cyIsInNpZGVFZmZlY3RQcm9taXNlcyIsInBhdGhFeHByZXNzaW9ucyIsIm1ldGFQYXRoRm9yQWN0aW9uIiwiZGF0YU1vZGVsUGF0aCIsImdldENvbnRleHQiLCJwcm9wZXJ0aWVzVG9SZXF1ZXN0IiwiZW50aXR5UHJvcGVydGllcyIsInByb3BlcnR5IiwicHJvcCIsImluY2x1ZGVzIiwidGFyZ2V0UGF0aHMiLCJlbmRzV2l0aCIsImluZGV4T2YiLCJtb2RlbCIsInBhcmVudExpc3RCaW5kaW5nIiwiZ2V0QWxsQmluZGluZ3MiLCJiaW5kaW5nIiwiYmluZGluZ1BhdGgiLCJpc1JlbGF0aXZlIiwiZ2V0UmVzb2x2ZWRQYXRoIiwiaXNBIiwiZ2V0QWxsQ3VycmVudENvbnRleHRzIiwiYmluZENvbnRleHQiLCJnZXRCb3VuZENvbnRleHQiLCJyb3V0aW5nIiwiQ29tbW9uVXRpbHMiLCJnZXRDdXJyZW50UGFnZVZpZXciLCJ4IiwiZGF0YVBhdGgiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkFjdGl2aXR5U3luYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQge1xuXHRicm9hZGNhc3RDb2xsYWJvcmF0aW9uTWVzc2FnZSxcblx0ZW5kQ29sbGFib3JhdGlvbixcblx0aW5pdGlhbGl6ZUNvbGxhYm9yYXRpb24sXG5cdGlzQ29sbGFib3JhdGlvbkNvbm5lY3RlZFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9BY3Rpdml0eUJhc2VcIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZSwgVXNlciwgVXNlckFjdGl2aXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IHsgQWN0aXZpdHksIENvbGxhYm9yYXRpb25VdGlscyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCB7IEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2lkZUVmZmVjdHNcIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBNZXNzYWdlQm94IGZyb20gXCJzYXAvbS9NZXNzYWdlQm94XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcblxuY29uc3QgTVlBQ1RJVklUWSA9IFwiL2NvbGxhYm9yYXRpb24vbXlBY3Rpdml0eVwiO1xuY29uc3QgQUNUSVZFVVNFUlMgPSBcIi9jb2xsYWJvcmF0aW9uL2FjdGl2ZVVzZXJzXCI7XG5jb25zdCBBQ1RJVklUSUVTID0gXCIvY29sbGFib3JhdGlvbi9hY3Rpdml0aWVzXCI7XG5jb25zdCBTWU5DR1JPVVBJRCA9IFwiJGF1dG8uc3luY1wiO1xuXG5leHBvcnQgY29uc3QgaXNDb25uZWN0ZWQgPSBmdW5jdGlvbiAoY29udHJvbDogQ29udHJvbCk6IGJvb2xlYW4ge1xuXHRjb25zdCBpbnRlcm5hbE1vZGVsID0gY29udHJvbC5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbDtcblx0cmV0dXJuIGlzQ29sbGFib3JhdGlvbkNvbm5lY3RlZChpbnRlcm5hbE1vZGVsKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZW5kID0gZnVuY3Rpb24gKFxuXHRjb250cm9sOiBDb250cm9sLFxuXHRhY3Rpb246IEFjdGl2aXR5LFxuXHRjb250ZW50OiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcblx0dHJpZ2dlcmVkQWN0aW9uTmFtZT86IHN0cmluZyxcblx0cmVmcmVzaExpc3RCaW5kaW5nPzogYm9vbGVhbixcblx0YWN0aW9uUmVxdWVzdGVkUHJvcGVydGllcz86IHN0cmluZ1tdXG4pIHtcblx0aWYgKGlzQ29ubmVjdGVkKGNvbnRyb2wpKSB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0Y29uc3QgY2xpZW50Q29udGVudCA9IEFycmF5LmlzQXJyYXkoY29udGVudCkgPyBjb250ZW50LmpvaW4oXCJ8XCIpIDogY29udGVudDtcblx0XHRjb25zdCByZXF1ZXN0ZWRQcm9wZXJ0aWVzID0gYWN0aW9uUmVxdWVzdGVkUHJvcGVydGllcz8uam9pbihcInxcIik7XG5cdFx0Y29uc3QgbXlBY3Rpdml0eSA9IGludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoTVlBQ1RJVklUWSk7XG5cdFx0aWYgKGFjdGlvbiA9PT0gQWN0aXZpdHkuTGl2ZUNoYW5nZSkge1xuXHRcdFx0Ly8gVG8gYXZvaWQgdW5uZWNlc3NhcnkgdHJhZmZpYyB3ZSBrZWVwIHRyYWNrIG9mIGxpdmUgY2hhbmdlcyBhbmQgc2VuZCBpdCBvbmx5IG9uY2VcblxuXHRcdFx0aWYgKG15QWN0aXZpdHkgPT09IGNsaWVudENvbnRlbnQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShNWUFDVElWSVRZLCBjbGllbnRDb250ZW50KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gTm8gbmVlZCB0byBzZW5kIGFuIFVuZG8gbWVzc2FnZSBpZiB0aGVyZSdzIG5vIGN1cnJlbnQgYWN0aXZpdHlcblx0XHRcdGlmIChhY3Rpb24gPT09IEFjdGl2aXR5LlVuZG8gJiYgbXlBY3Rpdml0eSA9PT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIHVzZXIgZmluaXNoZWQgdGhlIGFjdGl2aXR5XG5cdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KE1ZQUNUSVZJVFksIG51bGwpO1xuXHRcdH1cblxuXHRcdGJyb2FkY2FzdENvbGxhYm9yYXRpb25NZXNzYWdlKGFjdGlvbiwgY2xpZW50Q29udGVudCwgaW50ZXJuYWxNb2RlbCwgdHJpZ2dlcmVkQWN0aW9uTmFtZSwgcmVmcmVzaExpc3RCaW5kaW5nLCByZXF1ZXN0ZWRQcm9wZXJ0aWVzKTtcblx0fVxufTtcblxuY29uc3QgZ2V0V2ViU29ja2V0QmFzZVVSTCA9IGZ1bmN0aW9uIChiaW5kaW5nQ29udGV4dDogQ29udGV4dCk6IHN0cmluZyB7XG5cdHJldHVybiBiaW5kaW5nQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE9iamVjdChcIi9AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLldlYlNvY2tldEJhc2VVUkxcIik7XG59O1xuXG5leHBvcnQgY29uc3QgaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCA9IGZ1bmN0aW9uICh2aWV3OiBWaWV3KTogYm9vbGVhbiB7XG5cdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQgJiYgKHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0KTtcblx0cmV0dXJuICEhKGJpbmRpbmdDb250ZXh0ICYmIGdldFdlYlNvY2tldEJhc2VVUkwoYmluZGluZ0NvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25uZWN0ID0gYXN5bmMgZnVuY3Rpb24gKHZpZXc6IFZpZXcpIHtcblx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IHZpZXcuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdGNvbnN0IG1lID0gQ29sbGFib3JhdGlvblV0aWxzLmdldE1lKHZpZXcpO1xuXG5cdC8vIFJldHJpZXZpbmcgTUUgZnJvbSBzaGVsbCBzZXJ2aWNlXG5cdGlmICghbWUpIHtcblx0XHQvLyBubyBtZSA9IG5vIHNoZWxsID0gbm90IHN1cmUgd2hhdCB0byBkb1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdGNvbnN0IHdlYlNvY2tldEJhc2VVUkwgPSBnZXRXZWJTb2NrZXRCYXNlVVJMKGJpbmRpbmdDb250ZXh0KTtcblx0Y29uc3Qgc2VydmljZVVybCA9IGJpbmRpbmdDb250ZXh0LmdldE1vZGVsKCkuZ2V0U2VydmljZVVybCgpO1xuXG5cdGlmICghd2ViU29ja2V0QmFzZVVSTCkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IHNEcmFmdFVVSUQgPSBhd2FpdCBiaW5kaW5nQ29udGV4dC5yZXF1ZXN0UHJvcGVydHkoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9EcmFmdFVVSURcIik7XG5cdGlmICghc0RyYWZ0VVVJRCkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGluaXRpYWxpemVDb2xsYWJvcmF0aW9uKG1lLCB3ZWJTb2NrZXRCYXNlVVJMLCBzRHJhZnRVVUlELCBzZXJ2aWNlVXJsLCBpbnRlcm5hbE1vZGVsLCAobWVzc2FnZTogTWVzc2FnZSkgPT4ge1xuXHRcdG1lc3NhZ2VSZWNlaXZlKG1lc3NhZ2UsIHZpZXcpO1xuXHR9KTtcblx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShNWUFDVElWSVRZLCBudWxsKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkaXNjb25uZWN0ID0gZnVuY3Rpb24gKGNvbnRyb2w6IENvbnRyb2wpIHtcblx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdGVuZENvbGxhYm9yYXRpb24oaW50ZXJuYWxNb2RlbCk7XG59O1xuXG4vKipcbiAqIENhbGxiYWNrIHdoZW4gYSBtZXNzYWdlIGlzIHJlY2VpdmVkIGZyb20gdGhlIHdlYnNvY2tldC5cbiAqXG4gKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSByZWNlaXZlZFxuICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhhdCB3YXMgdXNlZCBpbml0aWFsbHkgd2hlbiBjb25uZWN0aW5nIHRoZSB3ZWJzb2NrZXRcbiAqL1xuZnVuY3Rpb24gbWVzc2FnZVJlY2VpdmUobWVzc2FnZTogTWVzc2FnZSwgdmlldzogVmlldykge1xuXHRjb25zdCBpbnRlcm5hbE1vZGVsOiBhbnkgPSB2aWV3LmdldE1vZGVsKFwiaW50ZXJuYWxcIik7XG5cdGxldCBhY3RpdmVVc2VyczogVXNlcltdID0gaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShBQ1RJVkVVU0VSUyk7XG5cdGxldCBhY3Rpdml0aWVzOiBVc2VyQWN0aXZpdHlbXTtcblx0bGV0IGFjdGl2aXR5S2V5OiBzdHJpbmc7XG5cdGNvbnN0IG1ldGFQYXRoID0gY2FsY3VsYXRlTWV0YVBhdGgodmlldywgbWVzc2FnZS5jbGllbnRDb250ZW50KTtcblx0bWVzc2FnZS51c2VyQWN0aW9uID0gbWVzc2FnZS51c2VyQWN0aW9uIHx8IG1lc3NhZ2UuY2xpZW50QWN0aW9uO1xuXG5cdGNvbnN0IHNlbmRlcjogVXNlciA9IHtcblx0XHRpZDogbWVzc2FnZS51c2VySUQsXG5cdFx0bmFtZTogbWVzc2FnZS51c2VyRGVzY3JpcHRpb24sXG5cdFx0aW5pdGlhbHM6IENvbGxhYm9yYXRpb25VdGlscy5mb3JtYXRJbml0aWFscyhtZXNzYWdlLnVzZXJEZXNjcmlwdGlvbiksXG5cdFx0Y29sb3I6IENvbGxhYm9yYXRpb25VdGlscy5nZXRVc2VyQ29sb3IobWVzc2FnZS51c2VySUQsIGFjdGl2ZVVzZXJzLCBbXSlcblx0fTtcblxuXHRsZXQgbWFjdGl2aXR5OiBVc2VyQWN0aXZpdHkgPSBzZW5kZXI7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlZmF1bHQtY2FzZVxuXHRzd2l0Y2ggKG1lc3NhZ2UudXNlckFjdGlvbikge1xuXHRcdGNhc2UgQWN0aXZpdHkuSm9pbjpcblx0XHRjYXNlIEFjdGl2aXR5LkpvaW5FY2hvOlxuXHRcdFx0aWYgKGFjdGl2ZVVzZXJzLmZpbmRJbmRleCgodXNlcikgPT4gdXNlci5pZCA9PT0gc2VuZGVyLmlkKSA9PT0gLTEpIHtcblx0XHRcdFx0YWN0aXZlVXNlcnMudW5zaGlmdChzZW5kZXIpO1xuXHRcdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KEFDVElWRVVTRVJTLCBhY3RpdmVVc2Vycyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChtZXNzYWdlLnVzZXJBY3Rpb24gPT09IEFjdGl2aXR5LkpvaW4pIHtcblx0XHRcdFx0Ly8gd2UgZWNobyBvdXIgZXhpc3RlbmNlIHRvIHRoZSBuZXdseSBlbnRlcmVkIHVzZXIgYW5kIGFsc28gc2VuZCB0aGUgY3VycmVudCBhY3Rpdml0eSBpZiB0aGVyZSBpcyBhbnlcblx0XHRcdFx0YnJvYWRjYXN0Q29sbGFib3JhdGlvbk1lc3NhZ2UoQWN0aXZpdHkuSm9pbkVjaG8sIGludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoTVlBQ1RJVklUWSksIGludGVybmFsTW9kZWwpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobWVzc2FnZS51c2VyQWN0aW9uID09PSBBY3Rpdml0eS5Kb2luRWNobykge1xuXHRcdFx0XHRpZiAobWVzc2FnZS5jbGllbnRDb250ZW50KSB7XG5cdFx0XHRcdFx0Ly8gYW5vdGhlciB1c2VyIHdhcyBhbHJlYWR5IHR5cGluZyB0aGVyZWZvcmUgSSB3YW50IHRvIHNlZSBoaXMgYWN0aXZpdHkgaW1tZWRpYXRlbHkuIENhbGxpbmcgbWUgYWdhaW4gYXMgYSBsaXZlIGNoYW5nZVxuXHRcdFx0XHRcdG1lc3NhZ2UudXNlckFjdGlvbiA9IEFjdGl2aXR5LkxpdmVDaGFuZ2U7XG5cdFx0XHRcdFx0bWVzc2FnZVJlY2VpdmUobWVzc2FnZSwgdmlldyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIEFjdGl2aXR5LkxlYXZlOlxuXHRcdFx0Ly8gUmVtb3ZpbmcgdGhlIGFjdGl2ZSB1c2VyLiBOb3QgcmVtb3ZpbmcgXCJtZVwiIGlmIEkgaGFkIHRoZSBzY3JlZW4gb3BlbiBpbiBhbm90aGVyIHNlc3Npb25cblx0XHRcdGFjdGl2ZVVzZXJzID0gYWN0aXZlVXNlcnMuZmlsdGVyKCh1c2VyKSA9PiB1c2VyLmlkICE9PSBzZW5kZXIuaWQgfHwgdXNlci5tZSk7XG5cdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KEFDVElWRVVTRVJTLCBhY3RpdmVVc2Vycyk7XG5cdFx0XHRjb25zdCBhbGxBY3Rpdml0aWVzID0gaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShBQ1RJVklUSUVTKSB8fCB7fTtcblx0XHRcdGNvbnN0IHJlbW92ZVVzZXJBY3Rpdml0aWVzID0gZnVuY3Rpb24gKGJhZzogYW55KSB7XG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGJhZykpIHtcblx0XHRcdFx0XHRyZXR1cm4gYmFnLmZpbHRlcigoYWN0aXZpdHkpID0+IGFjdGl2aXR5LmlkICE9PSBzZW5kZXIuaWQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgcCBpbiBiYWcpIHtcblx0XHRcdFx0XHRcdGJhZ1twXSA9IHJlbW92ZVVzZXJBY3Rpdml0aWVzKGJhZ1twXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBiYWc7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRyZW1vdmVVc2VyQWN0aXZpdGllcyhhbGxBY3Rpdml0aWVzKTtcblx0XHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoQUNUSVZJVElFUywgYWxsQWN0aXZpdGllcyk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgQWN0aXZpdHkuQ2hhbmdlOlxuXHRcdFx0dXBkYXRlT25DaGFuZ2UodmlldywgbWVzc2FnZSk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgQWN0aXZpdHkuQ3JlYXRlOlxuXHRcdFx0Ly8gRm9yIGNyZWF0ZSB3ZSBhY3R1YWxseSBqdXN0IG5lZWQgdG8gcmVmcmVzaCB0aGUgdGFibGVcblx0XHRcdHVwZGF0ZU9uQ3JlYXRlKHZpZXcsIG1lc3NhZ2UpO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIEFjdGl2aXR5LkRlbGV0ZTpcblx0XHRcdC8vIEZvciBub3cgYWxzbyByZWZyZXNoIHRoZSBwYWdlIGJ1dCBpbiBjYXNlIG9mIGRlbGV0aW9uIHdlIG5lZWQgdG8gaW5mb3JtIHRoZSB1c2VyXG5cdFx0XHR1cGRhdGVPbkRlbGV0ZSh2aWV3LCBtZXNzYWdlKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBBY3Rpdml0eS5BY3RpdmF0ZTpcblx0XHRcdGRyYWZ0Q2xvc2VkQnlPdGhlclVzZXIodmlldywgbWVzc2FnZS5jbGllbnRDb250ZW50LCBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0FDVElWQVRFXCIsIHNlbmRlci5uYW1lKSk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgQWN0aXZpdHkuRGlzY2FyZDpcblx0XHRcdGRyYWZ0Q2xvc2VkQnlPdGhlclVzZXIodmlldywgbWVzc2FnZS5jbGllbnRDb250ZW50LCBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0RJU0NBUkRcIiwgc2VuZGVyLm5hbWUpKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBBY3Rpdml0eS5BY3Rpb246XG5cdFx0XHR1cGRhdGVPbkFjdGlvbih2aWV3LCBtZXNzYWdlKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBBY3Rpdml0eS5MaXZlQ2hhbmdlOlxuXHRcdFx0bWFjdGl2aXR5ID0gc2VuZGVyO1xuXHRcdFx0bWFjdGl2aXR5LmtleSA9IGdldEFjdGl2aXR5S2V5KG1lc3NhZ2UuY2xpZW50Q29udGVudCk7XG5cblx0XHRcdC8vIHN0dXBpZCBKU09OIG1vZGVsLi4uXG5cdFx0XHRsZXQgaW5pdEpTT05Nb2RlbDogc3RyaW5nID0gXCJcIjtcblx0XHRcdGNvbnN0IHBhcnRzID0gbWV0YVBhdGguc3BsaXQoXCIvXCIpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBwYXJ0cy5sZW5ndGggLSAxOyBpKyspIHtcblx0XHRcdFx0aW5pdEpTT05Nb2RlbCArPSBgLyR7cGFydHNbaV19YDtcblx0XHRcdFx0aWYgKCFpbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KEFDVElWSVRJRVMgKyBpbml0SlNPTk1vZGVsKSkge1xuXHRcdFx0XHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoQUNUSVZJVElFUyArIGluaXRKU09OTW9kZWwsIHt9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRhY3Rpdml0aWVzID0gaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShBQ1RJVklUSUVTICsgbWV0YVBhdGgpO1xuXHRcdFx0YWN0aXZpdGllcyA9IGFjdGl2aXRpZXM/LnNsaWNlID8gYWN0aXZpdGllcy5zbGljZSgpIDogW107XG5cdFx0XHRhY3Rpdml0aWVzLnB1c2gobWFjdGl2aXR5KTtcblx0XHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoQUNUSVZJVElFUyArIG1ldGFQYXRoLCBhY3Rpdml0aWVzKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBBY3Rpdml0eS5VbmRvOlxuXHRcdFx0Ly8gVGhlIHVzZXIgZGlkIGEgY2hhbmdlIGJ1dCByZXZlcnRlZCBpdCwgdGhlcmVmb3JlIHVuYmxvY2sgdGhlIGNvbnRyb2xcblx0XHRcdGFjdGl2aXRpZXMgPSBpbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KEFDVElWSVRJRVMgKyBtZXRhUGF0aCk7XG5cdFx0XHRhY3Rpdml0eUtleSA9IGdldEFjdGl2aXR5S2V5KG1lc3NhZ2UuY2xpZW50Q29udGVudCk7XG5cdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFxuXHRcdFx0XHRBQ1RJVklUSUVTICsgbWV0YVBhdGgsXG5cdFx0XHRcdGFjdGl2aXRpZXMuZmlsdGVyKChhKSA9PiBhLmtleSAhPT0gYWN0aXZpdHlLZXkpXG5cdFx0XHQpO1xuXHRcdFx0YnJlYWs7XG5cdH1cbn1cblxuLyoqXG4gKiBEaXNwbGF5cyBhIG1lc3NhZ2UgdGhhdCB0aGUgY3VycmVudCBkcmFmdCB3YXMgY2xvc2VkIGJlIGFub3RoZXIgdXNlciwgYW5kIG5hdmlnYXRlcyBiYWNrIHRvIGEgcHJvcGVyIHZpZXcuXG4gKlxuICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhhdCB3YXMgdXNlZCBpbml0aWFsbHkgd2hlbiBjb25uZWN0aW5nIHRoZSB3ZWJzb2NrZXRcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBjb250ZXh0IHRvIG5hdmlnYXRlIHRvXG4gKiBAcGFyYW0gbWVzc2FnZVRleHQgVGhlIG1lc3NhZ2UgdG8gZGlzcGxheVxuICovXG5mdW5jdGlvbiBkcmFmdENsb3NlZEJ5T3RoZXJVc2VyKHZpZXc6IFZpZXcsIHBhdGg6IHN0cmluZywgbWVzc2FnZVRleHQ6IHN0cmluZykge1xuXHRkaXNjb25uZWN0KHZpZXcpO1xuXHRNZXNzYWdlQm94LmluZm9ybWF0aW9uKG1lc3NhZ2VUZXh0KTtcblx0KHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0KVxuXHRcdC5nZXRCaW5kaW5nKClcblx0XHQucmVzZXRDaGFuZ2VzKClcblx0XHQudGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRuYXZpZ2F0ZShwYXRoLCB2aWV3KTtcblx0XHR9KVxuXHRcdC5jYXRjaChmdW5jdGlvbiAoKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJQZW5kaW5nIENoYW5nZXMgY291bGQgbm90IGJlIHJlc2V0IC0gc3RpbGwgbmF2aWdhdGluZyB0byBhY3RpdmUgaW5zdGFuY2VcIik7XG5cdFx0XHRuYXZpZ2F0ZShwYXRoLCB2aWV3KTtcblx0XHR9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIGRhdGEgd2hlbiBhIENIQU5HRSBtZXNzYWdlIGhhcyBiZWVuIHJlY2VpdmVkLlxuICpcbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHRoZSB3ZWJzb2NrZXRcbiAqL1xuZnVuY3Rpb24gdXBkYXRlT25DaGFuZ2UodmlldzogVmlldywgbWVzc2FnZTogTWVzc2FnZSkge1xuXHRjb25zdCB1cGRhdGVkT2JqZWN0c1BhdGhzID0gbWVzc2FnZS5jbGllbnRDb250ZW50LnNwbGl0KFwifFwiKTtcblx0Y29uc3QgbWV0YU1vZGVsID0gdmlldy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHRjb25zdCBpbnRlcm5hbE1vZGVsID0gdmlldy5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbDtcblxuXHQvLyBSZW1vdmUgYWxsIGxvY2tzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBhdGhzXG5cdHVwZGF0ZWRPYmplY3RzUGF0aHMuZm9yRWFjaCgodXBkYXRlZFBhdGgpID0+IHtcblx0XHRjb25zdCB1cGRhdGVkTWV0YVBhdGggPSBtZXRhTW9kZWwuZ2V0TWV0YVBhdGgodXBkYXRlZFBhdGgpO1xuXHRcdGNvbnN0IGFjdGl2aXR5S2V5ID0gZ2V0QWN0aXZpdHlLZXkodXBkYXRlZFBhdGgpO1xuXHRcdGxldCBjdXJyZW50QWN0aXZpdGllczogYW55W10gPSBpbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KEFDVElWSVRJRVMgKyB1cGRhdGVkTWV0YVBhdGgpIHx8IFtdO1xuXHRcdGN1cnJlbnRBY3Rpdml0aWVzID0gY3VycmVudEFjdGl2aXRpZXM/LmZpbHRlciAmJiBjdXJyZW50QWN0aXZpdGllcy5maWx0ZXIoKGFjdGl2aXR5KSA9PiBhY3Rpdml0eS5rZXkgIT09IGFjdGl2aXR5S2V5KTtcblx0XHRpZiAoY3VycmVudEFjdGl2aXRpZXMpIHtcblx0XHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoQUNUSVZJVElFUyArIHVwZGF0ZWRNZXRhUGF0aCwgY3VycmVudEFjdGl2aXRpZXMpO1xuXHRcdH1cblx0fSk7XG5cblx0Y29uc3QgY3VycmVudFBhZ2UgPSBnZXRDdXJyZW50UGFnZSh2aWV3KTtcblx0Y29uc3QgY3VycmVudENvbnRleHQgPSBjdXJyZW50UGFnZS5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQgfCB1bmRlZmluZWQ7XG5cdGNvbnN0IHJlcXVlc3RQcm9taXNlcyA9IHVwZGF0ZWRPYmplY3RzUGF0aHMubWFwKChwYXRoKSA9PiBhcHBseVVwZGF0ZXNGb3JDaGFuZ2UodmlldywgcGF0aCkpO1xuXG5cdC8vIFNpbXVsYXRlIGFueSBjaGFuZ2Ugc28gdGhlIGVkaXQgZmxvdyBzaG93cyB0aGUgZHJhZnQgaW5kaWNhdG9yIGFuZCBzZXRzIHRoZSBwYWdlIHRvIGRpcnR5XG5cdGN1cnJlbnRQYWdlLmdldENvbnRyb2xsZXIoKS5lZGl0Rmxvdy51cGRhdGVEb2N1bWVudChjdXJyZW50Q29udGV4dCwgUHJvbWlzZS5hbGwocmVxdWVzdFByb21pc2VzKSk7XG59XG5cbi8qKlxuICogVXBkYXRlcyBkYXRhIGNvcnJlc3BvbmRpbmcgdG8gYSBwYXRoLlxuICpcbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKiBAcGFyYW0gcHJvcGVydHlQYXRoRm9yVXBkYXRlIEFic29sdXRlIHBhdGggdG8gdGhlIHVwZGF0ZWQgcHJvcGVydHlcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSByZXNvbHZlZCB3aGVuIHRoZSBkYXRhIGFuZCBpdHMgcmVsYXRlZCBzaWRlIGVmZmVjdHMgaGF2ZSBiZWVuIHJlY2VpdmVkXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFwcGx5VXBkYXRlc0ZvckNoYW5nZSh2aWV3OiBWaWV3LCBwcm9wZXJ0eVBhdGhGb3JVcGRhdGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuXHRjb25zdCBtZXRhTW9kZWwgPSB2aWV3LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdGNvbnN0IG1ldGFDb250ZXh0ID0gbWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KHByb3BlcnR5UGF0aEZvclVwZGF0ZSk7XG5cdGNvbnN0IGRhdGFNb2RlbE9iamVjdCA9IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMobWV0YUNvbnRleHQpO1xuXHRjb25zdCB0YXJnZXRDb250ZXh0UGF0aCA9IHByb3BlcnR5UGF0aEZvclVwZGF0ZS5zdWJzdHJpbmcoMCwgcHJvcGVydHlQYXRoRm9yVXBkYXRlLmxhc3RJbmRleE9mKFwiL1wiKSk7IC8vIFJlbW92ZSBwcm9wZXJ0eSBuYW1lXG5cdGNvbnN0IHRhcmdldENvbnRleHQgPSBmaW5kQ29udGV4dEZvclVwZGF0ZSh2aWV3LCB0YXJnZXRDb250ZXh0UGF0aCk7XG5cdGNvbnN0IHBhcmVudENvbGxlY3Rpb25QYXRoID0gdGFyZ2V0Q29udGV4dFBhdGguc3Vic3RyaW5nKDAsIHRhcmdldENvbnRleHRQYXRoLmxhc3RJbmRleE9mKFwiKFwiKSk7XG5cdGNvbnN0IHBhcmVudENvbnRleHRQYXRoID0gcGFyZW50Q29sbGVjdGlvblBhdGguc3Vic3RyaW5nKDAsIHBhcmVudENvbGxlY3Rpb25QYXRoLmxhc3RJbmRleE9mKFwiL1wiKSk7XG5cdGNvbnN0IHBhcmVudENvbnRleHQgPSBwYXJlbnRDb250ZXh0UGF0aCA/IGZpbmRDb250ZXh0Rm9yVXBkYXRlKHZpZXcsIHBhcmVudENvbnRleHRQYXRoKSA6IHVuZGVmaW5lZDtcblxuXHRpZiAoIXRhcmdldENvbnRleHQgJiYgIXBhcmVudENvbnRleHQpIHtcblx0XHRyZXR1cm47IC8vIE5vIGNvbnRleHQgZm9yIHVwZGF0ZVxuXHR9XG5cblx0dHJ5IHtcblx0XHRjb25zdCBzaWRlRWZmZWN0c1Byb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuXHRcdGNvbnN0IHNpZGVFZmZlY3RzU2VydmljZSA9IENvbGxhYm9yYXRpb25VdGlscy5nZXRBcHBDb21wb25lbnQodmlldykuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cblx0XHRpZiAodGFyZ2V0Q29udGV4dCkge1xuXHRcdFx0Ly8gV2UgaGF2ZSBhIHRhcmdldCBjb250ZXh0LCBzbyB3ZSBjYW4gcmV0cmlldmUgdGhlIHVwZGF0ZWQgcHJvcGVydHlcblx0XHRcdGNvbnN0IHRhcmdldE1ldGFQYXRoID0gbWV0YU1vZGVsLmdldE1ldGFQYXRoKHRhcmdldENvbnRleHQuZ2V0UGF0aCgpKTtcblx0XHRcdGNvbnN0IHJlbGF0aXZlTWV0YVBhdGhGb3JVcGRhdGUgPSBtZXRhTW9kZWwuZ2V0TWV0YVBhdGgocHJvcGVydHlQYXRoRm9yVXBkYXRlKS5yZXBsYWNlKHRhcmdldE1ldGFQYXRoLCBcIlwiKS5zbGljZSgxKTtcblx0XHRcdHNpZGVFZmZlY3RzUHJvbWlzZXMucHVzaChzaWRlRWZmZWN0c1NlcnZpY2UucmVxdWVzdFNpZGVFZmZlY3RzKFtyZWxhdGl2ZU1ldGFQYXRoRm9yVXBkYXRlXSwgdGFyZ2V0Q29udGV4dCwgU1lOQ0dST1VQSUQpKTtcblx0XHR9XG5cblx0XHQvLyBHZXQgdGhlIGZpZWxkR3JvdXBJZHMgY29ycmVzcG9uZGluZyB0byBwYXRoRm9yVXBkYXRlXG5cdFx0Y29uc3QgZmllbGRHcm91cElkcyA9IHNpZGVFZmZlY3RzU2VydmljZS5jb21wdXRlRmllbGRHcm91cElkcyhcblx0XHRcdGRhdGFNb2RlbE9iamVjdC50YXJnZXRFbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRcdGRhdGFNb2RlbE9iamVjdC50YXJnZXRPYmplY3QuZnVsbHlRdWFsaWZpZWROYW1lXG5cdFx0KTtcblxuXHRcdC8vIEV4ZWN1dGUgdGhlIHNpZGUgZWZmZWN0cyBmb3IgdGhlIGZpZWxkR3JvdXBJZHNcblx0XHRpZiAoZmllbGRHcm91cElkcy5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IHBhZ2VDb250cm9sbGVyID0gdmlldy5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0XHRjb25zdCBzaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXAgPSBwYWdlQ29udHJvbGxlci5fc2lkZUVmZmVjdHMuZ2V0U2lkZUVmZmVjdHNNYXBGb3JGaWVsZEdyb3Vwcyhcblx0XHRcdFx0ZmllbGRHcm91cElkcyxcblx0XHRcdFx0dGFyZ2V0Q29udGV4dCB8fCBwYXJlbnRDb250ZXh0XG5cdFx0XHQpIGFzIEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnk7XG5cdFx0XHRPYmplY3Qua2V5cyhzaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXApLmZvckVhY2goKHNpZGVFZmZlY3ROYW1lKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHNpZGVFZmZlY3QgPSBzaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXBbc2lkZUVmZmVjdE5hbWVdO1xuXHRcdFx0XHRzaWRlRWZmZWN0c1Byb21pc2VzLnB1c2goXG5cdFx0XHRcdFx0cGFnZUNvbnRyb2xsZXIuX3NpZGVFZmZlY3RzLnJlcXVlc3RTaWRlRWZmZWN0cyhzaWRlRWZmZWN0LnNpZGVFZmZlY3RzLCBzaWRlRWZmZWN0LmNvbnRleHQsIFNZTkNHUk9VUElEKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0YXdhaXQgUHJvbWlzZS5hbGwoc2lkZUVmZmVjdHNQcm9taXNlcyk7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdExvZy5lcnJvcihcIkZhaWxlZCB0byB1cGRhdGUgZGF0YSBhZnRlciBjaGFuZ2U6XCIgKyBlcnIpO1xuXHRcdHRocm93IGVycjtcblx0fVxufVxuXG4vKipcbiAqIFVwZGF0ZXMgZGF0YSB3aGVuIGEgREVMRVRFIG1lc3NhZ2UgaGFzIGJlZW4gcmVjZWl2ZWQuXG4gKlxuICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhhdCB3YXMgdXNlZCBpbml0aWFsbHkgd2hlbiBjb25uZWN0aW5nIHRoZSB3ZWJzb2NrZXRcbiAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHJlY2VpdmVkIGZyb20gdGhlIHdlYnNvY2tldFxuICovXG5mdW5jdGlvbiB1cGRhdGVPbkRlbGV0ZSh2aWV3OiBWaWV3LCBtZXNzYWdlOiBNZXNzYWdlKSB7XG5cdGNvbnN0IGN1cnJlbnRQYWdlID0gZ2V0Q3VycmVudFBhZ2Uodmlldyk7XG5cdGNvbnN0IGN1cnJlbnRDb250ZXh0ID0gY3VycmVudFBhZ2UuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRjb25zdCBjdXJyZW50UGF0aCA9IGN1cnJlbnRDb250ZXh0LmdldFBhdGgoKTtcblxuXHRjb25zdCBkZWxldGVkT2JqZWN0UGF0aHMgPSBtZXNzYWdlLmNsaWVudENvbnRlbnQuc3BsaXQoXCJ8XCIpO1xuXG5cdC8vIGNoZWNrIGlmIHVzZXIgY3VycmVudGx5IGRpc3BsYXlzIGEgZGVsZXRlZCBvYmplY3Qgb3Igb25lIG9mIGl0cyBkZXNjZW5kYW50c1xuXHRjb25zdCBkZWxldGVkUGF0aEluVXNlID0gZGVsZXRlZE9iamVjdFBhdGhzLmZpbmQoKGRlbGV0ZWRQYXRoKSA9PiBjdXJyZW50UGF0aC5zdGFydHNXaXRoKGRlbGV0ZWRQYXRoKSk7XG5cdGlmIChkZWxldGVkUGF0aEluVXNlKSB7XG5cdFx0Ly8gYW55IG90aGVyIHVzZXIgZGVsZXRlZCB0aGUgb2JqZWN0IEknbSBjdXJyZW50bHkgbG9va2luZyBhdC4gSW5mb3JtIHRoZSB1c2VyIHdlIHdpbGwgbmF2aWdhdGUgdG8gcm9vdCBub3dcblx0XHRNZXNzYWdlQm94LmluZm9ybWF0aW9uKENvbGxhYm9yYXRpb25VdGlscy5nZXRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfREVMRVRFXCIsIG1lc3NhZ2UudXNlckRlc2NyaXB0aW9uKSwge1xuXHRcdFx0b25DbG9zZTogKCkgPT4ge1xuXHRcdFx0XHQvLyBXZSByZXRyaWV2ZSB0aGUgZGVsZXRlZCBjb250ZXh0IGFzIGEga2VlcC1hbGl2ZSwgYW5kIGRpc2FibGUgaXRzIGtlZXBhbGl2ZSBzdGF0dXMsXG5cdFx0XHRcdC8vIHNvIHRoYXQgaXQgaXMgcHJvcGVybHkgZGVzdHJveWVkIHdoZW4gcmVmcmVzaGluZyBkYXRhXG5cdFx0XHRcdGNvbnN0IHRhcmdldENvbnRleHQgPSBjdXJyZW50Q29udGV4dC5nZXRNb2RlbCgpLmdldEtlZXBBbGl2ZUNvbnRleHQoZGVsZXRlZFBhdGhJblVzZSk7XG5cdFx0XHRcdHRhcmdldENvbnRleHQuc2V0S2VlcEFsaXZlKGZhbHNlKTtcblx0XHRcdFx0Y29uc3QgcmVxdWVzdFByb21pc2UgPSBhcHBseVVwZGF0ZXNGb3JDb2xsZWN0aW9uKHZpZXcsIGRlbGV0ZWRPYmplY3RQYXRoc1swXSk7XG5cdFx0XHRcdGN1cnJlbnRQYWdlLmdldENvbnRyb2xsZXIoKS5lZGl0Rmxvdy51cGRhdGVEb2N1bWVudChjdXJyZW50UGFnZS5nZXRCaW5kaW5nQ29udGV4dCgpLCByZXF1ZXN0UHJvbWlzZSk7XG5cdFx0XHRcdChjdXJyZW50UGFnZS5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXIpLl9yb3V0aW5nLm5hdmlnYXRlQmFja0Zyb21Db250ZXh0KHRhcmdldENvbnRleHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IHJlcXVlc3RQcm9taXNlID0gYXBwbHlVcGRhdGVzRm9yQ29sbGVjdGlvbih2aWV3LCBkZWxldGVkT2JqZWN0UGF0aHNbMF0pO1xuXHRcdGN1cnJlbnRQYWdlLmdldENvbnRyb2xsZXIoKS5lZGl0Rmxvdy51cGRhdGVEb2N1bWVudChjdXJyZW50UGFnZS5nZXRCaW5kaW5nQ29udGV4dCgpLCByZXF1ZXN0UHJvbWlzZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBVcGRhdGVzIGRhdGEgd2hlbiBhIENSRUFURSBtZXNzYWdlIGhhcyBiZWVuIHJlY2VpdmVkLlxuICpcbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHRoZSB3ZWJzb2NrZXRcbiAqL1xuZnVuY3Rpb24gdXBkYXRlT25DcmVhdGUodmlldzogVmlldywgbWVzc2FnZTogTWVzc2FnZSkge1xuXHRjb25zdCBjdXJyZW50UGFnZSA9IGdldEN1cnJlbnRQYWdlKHZpZXcpO1xuXHRjb25zdCBjcmVhdGVkT2JqZWN0UGF0aHMgPSBtZXNzYWdlLmNsaWVudENvbnRlbnQuc3BsaXQoXCJ8XCIpO1xuXG5cdGNvbnN0IHJlcXVlc3RQcm9taXNlID0gYXBwbHlVcGRhdGVzRm9yQ29sbGVjdGlvbih2aWV3LCBjcmVhdGVkT2JqZWN0UGF0aHNbMF0pO1xuXHQvLyBTaW11bGF0ZSBhIGNoYW5nZSBzbyB0aGUgZWRpdCBmbG93IHNob3dzIHRoZSBkcmFmdCBpbmRpY2F0b3IgYW5kIHNldHMgdGhlIHBhZ2UgdG8gZGlydHlcblx0Y3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlcigpLmVkaXRGbG93LnVwZGF0ZURvY3VtZW50KGN1cnJlbnRQYWdlLmdldEJpbmRpbmdDb250ZXh0KCksIHJlcXVlc3RQcm9taXNlKTtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIGRhdGEgaW4gYSBjb2xsZWN0aW9uLlxuICpcbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKiBAcGFyYW0gcGF0aEluQ29sbGVjdGlvbiBBIHBhdGggdG8gYW4gZW50aXR5IGluIHRoZSBjb2xsZWN0aW9uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFwcGx5VXBkYXRlc0ZvckNvbGxlY3Rpb24odmlldzogVmlldywgcGF0aEluQ29sbGVjdGlvbjogc3RyaW5nKSB7XG5cdGNvbnN0IGFwcENvbXBvbmVudCA9IENvbGxhYm9yYXRpb25VdGlscy5nZXRBcHBDb21wb25lbnQodmlldyk7XG5cdGNvbnN0IHBhcmVudFBhdGggPSBwYXRoSW5Db2xsZWN0aW9uLnN1YnN0cmluZygwLCBwYXRoSW5Db2xsZWN0aW9uLmxhc3RJbmRleE9mKFwiL1wiKSk7XG5cdGNvbnN0IHBhcmVudENvbnRleHQgPSBmaW5kQ29udGV4dEZvclVwZGF0ZSh2aWV3LCBwYXJlbnRQYXRoKTtcblxuXHRpZiAocGFyZW50Q29udGV4dCkge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBzaWRlRWZmZWN0c1Byb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuXG5cdFx0XHRjb25zdCBtZXRhTW9kZWwgPSBwYXJlbnRDb250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRjb25zdCBtZXRhUGF0aEZvclVwZGF0ZSA9IG1ldGFNb2RlbC5nZXRNZXRhUGF0aChwYXRoSW5Db2xsZWN0aW9uKTtcblx0XHRcdGNvbnN0IHBhcmVudE1ldGFQYXRoID0gbWV0YU1vZGVsLmdldE1ldGFQYXRoKHBhcmVudENvbnRleHQuZ2V0UGF0aCgpKTtcblx0XHRcdGNvbnN0IHJlbGF0aXZlUGF0aCA9IG1ldGFQYXRoRm9yVXBkYXRlLnJlcGxhY2UoYCR7cGFyZW50TWV0YVBhdGh9L2AsIFwiXCIpO1xuXG5cdFx0XHQvLyBSZWxvYWQgdGhlIGNvbGxlY3Rpb25cblx0XHRcdGNvbnN0IHNpZGVFZmZlY3RzU2VydmljZSA9IGFwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKTtcblx0XHRcdHNpZGVFZmZlY3RzUHJvbWlzZXMucHVzaChzaWRlRWZmZWN0c1NlcnZpY2UucmVxdWVzdFNpZGVFZmZlY3RzKFtyZWxhdGl2ZVBhdGhdLCBwYXJlbnRDb250ZXh0LCBTWU5DR1JPVVBJRCkpO1xuXG5cdFx0XHQvLyBSZXF1ZXN0IHRoZSBzaWRlIGVmZmVjdHMgZm9yIHRoZSBjb2xsZWN0aW9uXG5cdFx0XHRzaWRlRWZmZWN0c1Byb21pc2VzLnB1c2goc2lkZUVmZmVjdHNTZXJ2aWNlLnJlcXVlc3RTaWRlRWZmZWN0c0Zvck5hdmlnYXRpb25Qcm9wZXJ0eShyZWxhdGl2ZVBhdGgsIHBhcmVudENvbnRleHQsIFNZTkNHUk9VUElEKSk7XG5cblx0XHRcdGF3YWl0IFByb21pc2UuYWxsKHNpZGVFZmZlY3RzUHJvbWlzZXMpO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0TG9nLmVycm9yKFwiRmFpbGVkIHRvIHVwZGF0ZSBkYXRhIGFmdGVyIGNvbGxlY3Rpb24gdXBkYXRlOlwiICsgZXJyKTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBVcGRhdGVzIGRhdGEgd2hlbiBhIEFDVElPTiBtZXNzYWdlIGhhcyBiZWVuIHJlY2VpdmVkLlxuICpcbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHRoZSB3ZWJzb2NrZXRcbiAqL1xuZnVuY3Rpb24gdXBkYXRlT25BY3Rpb24odmlldzogVmlldywgbWVzc2FnZTogTWVzc2FnZSkge1xuXHRjb25zdCBjdXJyZW50UGFnZSA9IGdldEN1cnJlbnRQYWdlKHZpZXcpO1xuXHRjb25zdCBwYXRoc0ZvckFjdGlvbiA9IG1lc3NhZ2UuY2xpZW50Q29udGVudC5zcGxpdChcInxcIik7XG5cdGNvbnN0IGFjdGlvbk5hbWUgPSBtZXNzYWdlLmNsaWVudFRyaWdnZXJlZEFjdGlvbk5hbWUgfHwgXCJcIjtcblx0Y29uc3QgcmVxdWVzdGVkUHJvcGVydGllcyA9IG1lc3NhZ2UuY2xpZW50UmVxdWVzdGVkUHJvcGVydGllcz8uc3BsaXQoXCJ8XCIpO1xuXHRjb25zdCByZWZyZXNoTGlzdEJpbmRpbmcgPSBtZXNzYWdlLmNsaWVudFJlZnJlc2hMaXN0QmluZGluZyA9PT0gXCJ0cnVlXCI7XG5cblx0Y29uc3QgcmVxdWVzdFByb21pc2VzID0gcGF0aHNGb3JBY3Rpb24ubWFwKChwYXRoKSA9PiByZXF1ZXN0VXBkYXRlRm9yQWN0aW9uKHZpZXcsIHBhdGgsIGFjdGlvbk5hbWUsIHJlcXVlc3RlZFByb3BlcnRpZXMpKTtcblxuXHRpZiAocmVmcmVzaExpc3RCaW5kaW5nKSB7XG5cdFx0cmVxdWVzdFByb21pc2VzLnB1c2goYXBwbHlVcGRhdGVzRm9yQ29sbGVjdGlvbih2aWV3LCBwYXRoc0ZvckFjdGlvblswXSkpO1xuXHR9XG5cblx0Ly8gU2ltdWxhdGUgYW55IGNoYW5nZSBzbyB0aGUgZWRpdCBmbG93IHNob3dzIHRoZSBkcmFmdCBpbmRpY2F0b3IgYW5kIHNldHMgdGhlIHBhZ2UgdG8gZGlydHlcblx0Y3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlcigpLmVkaXRGbG93LnVwZGF0ZURvY3VtZW50KGN1cnJlbnRQYWdlLmdldEJpbmRpbmdDb250ZXh0KCksIFByb21pc2UuYWxsKHJlcXVlc3RQcm9taXNlcykpO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgc2lkZS1lZmZlY3RzIGRhdGEgd2hlbiBhbiBhY3Rpb24gaGFzIGJlZW4gdHJpZ2dlcmVkIG9uIGEgY29udGV4dC5cbiAqXG4gKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGF0IHdhcyB1c2VkIGluaXRpYWxseSB3aGVuIGNvbm5lY3RpbmcgdGhlIHdlYnNvY2tldFxuICogQHBhcmFtIHBhdGhGb3JBY3Rpb24gUGF0aCBvZiB0aGUgY29udGV4dCB0byBhcHBseSB0aGUgYWN0aW9uIHRvXG4gKiBAcGFyYW0gYWN0aW9uTmFtZSBOYW1lIG9mIHRoZSBhY3Rpb25cbiAqIEBwYXJhbSByZXF1ZXN0ZWRQcm9wZXJ0aWVzXG4gKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmVkIHdoZW4gdGhlIHNpZGUtZWZmZWN0cyBkYXRhIGhhcyBiZWVuIGxvYWRlZFxuICovXG5hc3luYyBmdW5jdGlvbiByZXF1ZXN0VXBkYXRlRm9yQWN0aW9uKFxuXHR2aWV3OiBWaWV3LFxuXHRwYXRoRm9yQWN0aW9uOiBzdHJpbmcsXG5cdGFjdGlvbk5hbWU6IHN0cmluZyxcblx0cmVxdWVzdGVkUHJvcGVydGllcz86IHN0cmluZ1tdXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0Y29uc3QgdGFyZ2V0Q29udGV4dCA9IGZpbmRDb250ZXh0Rm9yVXBkYXRlKHZpZXcsIHBhdGhGb3JBY3Rpb24pO1xuXHRpZiAoIXRhcmdldENvbnRleHQpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBhcHBDb21wb25lbnQgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHZpZXcpO1xuXHRjb25zdCBzaWRlRWZmZWN0U2VydmljZSA9IGFwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKTtcblx0Y29uc3Qgc2lkZUVmZmVjdHNGcm9tQWN0aW9uID0gc2lkZUVmZmVjdFNlcnZpY2UuZ2V0T0RhdGFBY3Rpb25TaWRlRWZmZWN0cyhhY3Rpb25OYW1lLCB0YXJnZXRDb250ZXh0KTtcblx0Y29uc3Qgc2lkZUVmZmVjdFByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuXHRpZiAoc2lkZUVmZmVjdHNGcm9tQWN0aW9uKSB7XG5cdFx0aWYgKHNpZGVFZmZlY3RzRnJvbUFjdGlvbi5wYXRoRXhwcmVzc2lvbnM/Lmxlbmd0aCkge1xuXHRcdFx0c2lkZUVmZmVjdFByb21pc2VzLnB1c2goXG5cdFx0XHRcdHNpZGVFZmZlY3RTZXJ2aWNlLnJlcXVlc3RTaWRlRWZmZWN0cyhzaWRlRWZmZWN0c0Zyb21BY3Rpb24ucGF0aEV4cHJlc3Npb25zLCB0YXJnZXRDb250ZXh0LCBTWU5DR1JPVVBJRClcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cdGlmIChyZXF1ZXN0ZWRQcm9wZXJ0aWVzICYmIHJlcXVlc3RlZFByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuXHRcdC8vY2xlYW4tdXAgb2YgdGhlIHByb3BlcnRpZXMgdG8gcmVxdWVzdCBsaXN0OlxuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHZpZXcuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0XHRjb25zdCBtZXRhUGF0aEZvckFjdGlvbiA9IGNhbGN1bGF0ZU1ldGFQYXRoKHZpZXcsIHBhdGhGb3JBY3Rpb24pO1xuXHRcdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG1ldGFNb2RlbC5nZXRDb250ZXh0KG1ldGFQYXRoRm9yQWN0aW9uKSk7XG5cdFx0Y29uc3QgcHJvcGVydGllc1RvUmVxdWVzdCA9IGRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzXG5cdFx0XHQubWFwKChwcm9wZXJ0eTogUHJvcGVydHkpID0+IHtcblx0XHRcdFx0cmV0dXJuIHByb3BlcnR5Lm5hbWU7XG5cdFx0XHR9KVxuXHRcdFx0LmZpbHRlcigocHJvcCkgPT4gcmVxdWVzdGVkUHJvcGVydGllcy5pbmNsdWRlcyhwcm9wKSk7XG5cdFx0aWYgKHByb3BlcnRpZXNUb1JlcXVlc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0c2lkZUVmZmVjdFByb21pc2VzLnB1c2goc2lkZUVmZmVjdFNlcnZpY2UucmVxdWVzdFNpZGVFZmZlY3RzKHByb3BlcnRpZXNUb1JlcXVlc3QsIHRhcmdldENvbnRleHQsIFNZTkNHUk9VUElEKSk7XG5cdFx0fVxuXHR9XG5cblx0YXdhaXQgUHJvbWlzZS5hbGwoc2lkZUVmZmVjdFByb21pc2VzKTtcbn1cblxuLyoqXG4gKiBGaW5kcyBhIGNvbnRleHQgdG8gYXBwbHkgYW4gdXBkYXRlIG1lc3NhZ2UgKENIQU5HRSwgQ1JFQVRFLCBERUxFVEUgb3IgQUNUSU9OKS5cbiAqXG4gKiBAcGFyYW0gdmlldyAgVGhlIHZpZXcgdGhhdCB3YXMgdXNlZCBpbml0aWFsbHkgd2hlbiBjb25uZWN0aW5nIHRoZSB3ZWJzb2NrZXRcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBjb250ZXh0IHRvIGJlIGZvdW5kIChzaGFsbCBwb2ludCB0byBhbiBlbnRpdHksIG5vdCBhIHByb3BlcnR5KVxuICogQHJldHVybnMgQSBjb250ZXh0IGlmIGl0IGNvdWxkIGJlIGZvdW5kXG4gKi9cbmZ1bmN0aW9uIGZpbmRDb250ZXh0Rm9yVXBkYXRlKHZpZXc6IFZpZXcsIHBhdGg6IHN0cmluZyk6IENvbnRleHQgfCB1bmRlZmluZWQge1xuXHRpZiAoIXBhdGgpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdC8vIEZpbmQgYWxsIHBvdGVudGlhbCBwYXRoc1xuXHRjb25zdCB0YXJnZXRQYXRoczogc3RyaW5nW10gPSBbXTtcblx0d2hpbGUgKCFwYXRoLmVuZHNXaXRoKFwiKVwiKSkge1xuXHRcdHRhcmdldFBhdGhzLnVuc2hpZnQocGF0aCk7XG5cdFx0cGF0aCA9IHBhdGguc3Vic3RyaW5nKDAsIHBhdGgubGFzdEluZGV4T2YoXCIvXCIpKTtcblx0fVxuXHR0YXJnZXRQYXRocy51bnNoaWZ0KHBhdGgpO1xuXG5cdGNvbnN0IHBhcmVudENvbGxlY3Rpb25QYXRoID0gcGF0aC5zdWJzdHJpbmcoMCwgcGF0aC5sYXN0SW5kZXhPZihcIihcIikpOyAvLyBSZW1vdmUgdGhlIGxhc3Qga2V5XG5cblx0bGV0IHRhcmdldENvbnRleHQ6IENvbnRleHQgfCB1bmRlZmluZWQ7XG5cdGxldCBjdXJyZW50Q29udGV4dCA9IGdldEN1cnJlbnRQYWdlKHZpZXcpLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dCB8IHVuZGVmaW5lZDtcblx0d2hpbGUgKGN1cnJlbnRDb250ZXh0ICYmICF0YXJnZXRDb250ZXh0KSB7XG5cdFx0aWYgKHRhcmdldFBhdGhzLmluZGV4T2YoY3VycmVudENvbnRleHQuZ2V0UGF0aCgpKSA+PSAwKSB7XG5cdFx0XHR0YXJnZXRDb250ZXh0ID0gY3VycmVudENvbnRleHQ7XG5cdFx0fVxuXG5cdFx0Y3VycmVudENvbnRleHQgPSBjdXJyZW50Q29udGV4dC5nZXRCaW5kaW5nKCk/LmdldENvbnRleHQoKSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkO1xuXHR9XG5cblx0aWYgKHRhcmdldENvbnRleHQpIHtcblx0XHQvLyBGb3VuZCAhXG5cdFx0cmV0dXJuIHRhcmdldENvbnRleHQ7XG5cdH1cblxuXHQvLyBUcnkgdG8gZmluZCB0aGUgdGFyZ2V0IGNvbnRleHQgaW4gYSBsaXN0QmluZGluZ1xuXHRjb25zdCBtb2RlbCA9IGdldEN1cnJlbnRQYWdlKHZpZXcpLmdldEJpbmRpbmdDb250ZXh0KCkuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsO1xuXHRjb25zdCBwYXJlbnRMaXN0QmluZGluZyA9IG1vZGVsLmdldEFsbEJpbmRpbmdzKCkuZmluZCgoYmluZGluZykgPT4ge1xuXHRcdGNvbnN0IGJpbmRpbmdQYXRoID0gYmluZGluZy5pc1JlbGF0aXZlKCkgPyBiaW5kaW5nLmdldFJlc29sdmVkUGF0aCgpIDogYmluZGluZy5nZXRQYXRoKCk7XG5cdFx0cmV0dXJuIGJpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikgJiYgYmluZGluZ1BhdGggPT09IHBhcmVudENvbGxlY3Rpb25QYXRoO1xuXHR9KSBhcyBPRGF0YUxpc3RCaW5kaW5nIHwgdW5kZWZpbmVkO1xuXHQvLyBXZSd2ZSBmb3VuZCBhIGxpc3QgYmluZGluZyB0aGF0IGNvdWxkIGNvbnRhaW4gdGhlIHRhcmdldCBjb250ZXh0IC0tPiBsb29rIGZvciBpdFxuXHR0YXJnZXRDb250ZXh0ID0gcGFyZW50TGlzdEJpbmRpbmc/LmdldEFsbEN1cnJlbnRDb250ZXh0cygpLmZpbmQoKGNvbnRleHQpID0+IHtcblx0XHRyZXR1cm4gdGFyZ2V0UGF0aHMuaW5kZXhPZihjb250ZXh0LmdldFBhdGgoKSkgPj0gMDtcblx0fSk7XG5cblx0cmV0dXJuIHRhcmdldENvbnRleHQ7XG59XG5cbmZ1bmN0aW9uIG5hdmlnYXRlKHBhdGg6IHN0cmluZywgdmlldzogVmlldykge1xuXHQvLyBUT0RPOiByb3V0aW5nLm5hdmlnYXRlIGRvZXNuJ3QgY29uc2lkZXIgc2VtYW50aWMgYm9va21hcmtpbmdcblx0Y29uc3QgY3VycmVudFBhZ2UgPSBnZXRDdXJyZW50UGFnZSh2aWV3KTtcblx0Y29uc3QgdGFyZ2V0Q29udGV4dCA9IHZpZXcuZ2V0TW9kZWwoKS5iaW5kQ29udGV4dChwYXRoKS5nZXRCb3VuZENvbnRleHQoKTtcblx0Y3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlcigpLnJvdXRpbmcubmF2aWdhdGUodGFyZ2V0Q29udGV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRQYWdlKHZpZXc6IFZpZXcpIHtcblx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29sbGFib3JhdGlvblV0aWxzLmdldEFwcENvbXBvbmVudCh2aWV3KTtcblx0cmV0dXJuIENvbW1vblV0aWxzLmdldEN1cnJlbnRQYWdlVmlldyhhcHBDb21wb25lbnQpO1xufVxuXG5mdW5jdGlvbiBnZXRBY3Rpdml0eUtleSh4OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4geC5zdWJzdHJpbmcoeC5sYXN0SW5kZXhPZihcIihcIikgKyAxLCB4Lmxhc3RJbmRleE9mKFwiKVwiKSk7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgbWV0YXBhdGggZnJvbSBvbmUgb3IgbW9yZSBkYXRhIHBhdGgocykuXG4gKlxuICogQHBhcmFtIHZpZXcgVGhlIGN1cnJlbnQgdmlld1xuICogQHBhcmFtIHBhdGggT25lIG9yZSBtb3JlIGRhdGEgcGF0aChzKSwgaW4gY2FzZSBvZiBtdWx0aXBsZSBwYXRocyBzZXBhcmF0ZWQgYnkgJ3wnXG4gKiBAcmV0dXJucyBUaGUgY2FsY3VsYXRlZCBtZXRhUGF0aFxuICovXG5mdW5jdGlvbiBjYWxjdWxhdGVNZXRhUGF0aCh2aWV3OiBWaWV3LCBwYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcblx0bGV0IG1ldGFQYXRoID0gXCJcIjtcblx0aWYgKHBhdGgpIHtcblx0XHQvLyBpbiBjYXNlIG1vcmUgdGhhbiBvbmUgcGF0aCBpcyBzZW50IGFsbCBvZiB0aGVtIGhhdmUgdG8gdXNlIHRoZSBzYW1lIG1ldGFwYXRoIHRoZXJlZm9yZSB3ZSBqdXN0IGNvbnNpZGVyIHRoZSBmaXJzdCBvbmVcblx0XHRjb25zdCBkYXRhUGF0aCA9IHBhdGguc3BsaXQoXCJ8XCIpWzBdO1xuXHRcdG1ldGFQYXRoID0gKHZpZXcuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCkuZ2V0TWV0YVBhdGgoZGF0YVBhdGgpO1xuXHR9XG5cdHJldHVybiBtZXRhUGF0aDtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuXHRjb25uZWN0OiBjb25uZWN0LFxuXHRkaXNjb25uZWN0OiBkaXNjb25uZWN0LFxuXHRpc0Nvbm5lY3RlZDogaXNDb25uZWN0ZWQsXG5cdGlzQ29sbGFib3JhdGlvbkVuYWJsZWQ6IGlzQ29sbGFib3JhdGlvbkVuYWJsZWQsXG5cdHNlbmQ6IHNlbmRcbn07XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7O0VBdUJBLE1BQU1BLFVBQVUsR0FBRywyQkFBMkI7RUFDOUMsTUFBTUMsV0FBVyxHQUFHLDRCQUE0QjtFQUNoRCxNQUFNQyxVQUFVLEdBQUcsMkJBQTJCO0VBQzlDLE1BQU1DLFdBQVcsR0FBRyxZQUFZO0VBRXpCLE1BQU1DLFdBQVcsR0FBRyxVQUFVQyxPQUFnQixFQUFXO0lBQy9ELE1BQU1DLGFBQWEsR0FBR0QsT0FBTyxDQUFDRSxRQUFRLENBQUMsVUFBVSxDQUFjO0lBQy9ELE9BQU9DLHdCQUF3QixDQUFDRixhQUFhLENBQUM7RUFDL0MsQ0FBQztFQUFDO0VBRUssTUFBTUcsSUFBSSxHQUFHLFVBQ25CSixPQUFnQixFQUNoQkssTUFBZ0IsRUFDaEJDLE9BQXNDLEVBQ3RDQyxtQkFBNEIsRUFDNUJDLGtCQUE0QixFQUM1QkMseUJBQW9DLEVBQ25DO0lBQ0QsSUFBSVYsV0FBVyxDQUFDQyxPQUFPLENBQUMsRUFBRTtNQUN6QixNQUFNQyxhQUFhLEdBQUdELE9BQU8sQ0FBQ0UsUUFBUSxDQUFDLFVBQVUsQ0FBYztNQUMvRCxNQUFNUSxhQUFhLEdBQUdDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDTixPQUFPLENBQUMsR0FBR0EsT0FBTyxDQUFDTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUdQLE9BQU87TUFDMUUsTUFBTVEsbUJBQW1CLEdBQUdMLHlCQUF5QixhQUF6QkEseUJBQXlCLHVCQUF6QkEseUJBQXlCLENBQUVJLElBQUksQ0FBQyxHQUFHLENBQUM7TUFDaEUsTUFBTUUsVUFBVSxHQUFHZCxhQUFhLENBQUNlLFdBQVcsQ0FBQ3JCLFVBQVUsQ0FB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
|
|
517
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNWUFDVElWSVRZIiwiQUNUSVZFVVNFUlMiLCJBQ1RJVklUSUVTIiwiU1lOQ0dST1VQSUQiLCJpc0Nvbm5lY3RlZCIsImNvbnRyb2wiLCJpbnRlcm5hbE1vZGVsIiwiZ2V0TW9kZWwiLCJpc0NvbGxhYm9yYXRpb25Db25uZWN0ZWQiLCJzZW5kIiwiYWN0aW9uIiwiY29udGVudCIsInRyaWdnZXJlZEFjdGlvbk5hbWUiLCJyZWZyZXNoTGlzdEJpbmRpbmciLCJhY3Rpb25SZXF1ZXN0ZWRQcm9wZXJ0aWVzIiwiY2xpZW50Q29udGVudCIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJyZXF1ZXN0ZWRQcm9wZXJ0aWVzIiwibXlBY3Rpdml0eSIsImdldFByb3BlcnR5IiwiQWN0aXZpdHkiLCJMaXZlQ2hhbmdlIiwic2V0UHJvcGVydHkiLCJVbmRvIiwiYnJvYWRjYXN0Q29sbGFib3JhdGlvbk1lc3NhZ2UiLCJnZXRXZWJTb2NrZXRCYXNlVVJMIiwiYmluZGluZ0NvbnRleHQiLCJnZXRNZXRhTW9kZWwiLCJnZXRPYmplY3QiLCJpc0NvbGxhYm9yYXRpb25FbmFibGVkIiwidmlldyIsImdldEJpbmRpbmdDb250ZXh0IiwiY29ubmVjdCIsIm1lIiwiQ29sbGFib3JhdGlvblV0aWxzIiwiZ2V0TWUiLCJ3ZWJTb2NrZXRCYXNlVVJMIiwic2VydmljZVVybCIsImdldFNlcnZpY2VVcmwiLCJzRHJhZnRVVUlEIiwicmVxdWVzdFByb3BlcnR5IiwiaW5pdGlhbGl6ZUNvbGxhYm9yYXRpb24iLCJtZXNzYWdlIiwibWVzc2FnZVJlY2VpdmUiLCJkaXNjb25uZWN0IiwiZW5kQ29sbGFib3JhdGlvbiIsImFjdGl2ZVVzZXJzIiwiYWN0aXZpdGllcyIsImFjdGl2aXR5S2V5IiwibWV0YVBhdGgiLCJjYWxjdWxhdGVNZXRhUGF0aCIsInVzZXJBY3Rpb24iLCJjbGllbnRBY3Rpb24iLCJzZW5kZXIiLCJpZCIsInVzZXJJRCIsIm5hbWUiLCJ1c2VyRGVzY3JpcHRpb24iLCJpbml0aWFscyIsImZvcm1hdEluaXRpYWxzIiwiY29sb3IiLCJnZXRVc2VyQ29sb3IiLCJtYWN0aXZpdHkiLCJKb2luIiwiSm9pbkVjaG8iLCJmaW5kSW5kZXgiLCJ1c2VyIiwidW5zaGlmdCIsIkxlYXZlIiwiZmlsdGVyIiwiYWxsQWN0aXZpdGllcyIsInJlbW92ZVVzZXJBY3Rpdml0aWVzIiwiYmFnIiwiYWN0aXZpdHkiLCJwIiwiQ2hhbmdlIiwidXBkYXRlT25DaGFuZ2UiLCJDcmVhdGUiLCJ1cGRhdGVPbkNyZWF0ZSIsIkRlbGV0ZSIsInVwZGF0ZU9uRGVsZXRlIiwiQWN0aXZhdGUiLCJkcmFmdENsb3NlZEJ5T3RoZXJVc2VyIiwiZ2V0VGV4dCIsIkRpc2NhcmQiLCJBY3Rpb24iLCJ1cGRhdGVPbkFjdGlvbiIsImtleSIsImdldEFjdGl2aXR5S2V5RnJvbVBhdGgiLCJpbml0SlNPTk1vZGVsIiwicGFydHMiLCJzcGxpdCIsImkiLCJsZW5ndGgiLCJzbGljZSIsInB1c2giLCJhIiwicGF0aCIsIm1lc3NhZ2VUZXh0IiwiTWVzc2FnZUJveCIsImluZm9ybWF0aW9uIiwiZ2V0QmluZGluZyIsInJlc2V0Q2hhbmdlcyIsInRoZW4iLCJuYXZpZ2F0ZSIsImNhdGNoIiwiTG9nIiwiZXJyb3IiLCJ1cGRhdGVkT2JqZWN0c1BhdGhzIiwibWV0YU1vZGVsIiwiZm9yRWFjaCIsInVwZGF0ZWRQYXRoIiwidXBkYXRlZE1ldGFQYXRoIiwiZ2V0TWV0YVBhdGgiLCJjdXJyZW50QWN0aXZpdGllcyIsImN1cnJlbnRQYWdlIiwiZ2V0Q3VycmVudFBhZ2UiLCJjdXJyZW50Q29udGV4dCIsInJlcXVlc3RQcm9taXNlcyIsIm1hcCIsImFwcGx5VXBkYXRlc0ZvckNoYW5nZSIsImdldENvbnRyb2xsZXIiLCJlZGl0RmxvdyIsInVwZGF0ZURvY3VtZW50IiwiUHJvbWlzZSIsImFsbCIsInByb3BlcnR5UGF0aEZvclVwZGF0ZSIsIm1ldGFDb250ZXh0IiwiZ2V0TWV0YUNvbnRleHQiLCJkYXRhTW9kZWxPYmplY3QiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJ0YXJnZXRDb250ZXh0UGF0aCIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwidGFyZ2V0Q29udGV4dCIsImZpbmRDb250ZXh0Rm9yVXBkYXRlIiwicGFyZW50Q29sbGVjdGlvblBhdGgiLCJwYXJlbnRDb250ZXh0UGF0aCIsInBhcmVudENvbnRleHQiLCJ1bmRlZmluZWQiLCJzaWRlRWZmZWN0c1Byb21pc2VzIiwic2lkZUVmZmVjdHNTZXJ2aWNlIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwidGFyZ2V0TWV0YVBhdGgiLCJnZXRQYXRoIiwicmVsYXRpdmVNZXRhUGF0aEZvclVwZGF0ZSIsInJlcGxhY2UiLCJyZXF1ZXN0U2lkZUVmZmVjdHMiLCJmaWVsZEdyb3VwSWRzIiwiY29tcHV0ZUZpZWxkR3JvdXBJZHMiLCJ0YXJnZXRFbnRpdHlUeXBlIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwidGFyZ2V0T2JqZWN0IiwicGFnZUNvbnRyb2xsZXIiLCJzaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXAiLCJfc2lkZUVmZmVjdHMiLCJnZXRTaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXBzIiwiT2JqZWN0Iiwia2V5cyIsInNpZGVFZmZlY3ROYW1lIiwic2lkZUVmZmVjdCIsInNpZGVFZmZlY3RzIiwiY29udGV4dCIsImVyciIsImN1cnJlbnRQYXRoIiwiZGVsZXRlZE9iamVjdFBhdGhzIiwiZGVsZXRlZFBhdGhJblVzZSIsImZpbmQiLCJkZWxldGVkUGF0aCIsInN0YXJ0c1dpdGgiLCJvbkNsb3NlIiwiZ2V0S2VlcEFsaXZlQ29udGV4dCIsInNldEtlZXBBbGl2ZSIsInJlcXVlc3RQcm9taXNlIiwiYXBwbHlVcGRhdGVzRm9yQ29sbGVjdGlvbiIsIl9yb3V0aW5nIiwibmF2aWdhdGVCYWNrRnJvbUNvbnRleHQiLCJjcmVhdGVkT2JqZWN0UGF0aHMiLCJwYXRoSW5Db2xsZWN0aW9uIiwiYXBwQ29tcG9uZW50IiwicGFyZW50UGF0aCIsIm1ldGFQYXRoRm9yVXBkYXRlIiwicGFyZW50TWV0YVBhdGgiLCJyZWxhdGl2ZVBhdGgiLCJyZXF1ZXN0U2lkZUVmZmVjdHNGb3JOYXZpZ2F0aW9uUHJvcGVydHkiLCJwYXRoc0ZvckFjdGlvbiIsImFjdGlvbk5hbWUiLCJjbGllbnRUcmlnZ2VyZWRBY3Rpb25OYW1lIiwiY2xpZW50UmVxdWVzdGVkUHJvcGVydGllcyIsImNsaWVudFJlZnJlc2hMaXN0QmluZGluZyIsInJlcXVlc3RVcGRhdGVGb3JBY3Rpb24iLCJwYXRoRm9yQWN0aW9uIiwic2lkZUVmZmVjdFNlcnZpY2UiLCJzaWRlRWZmZWN0c0Zyb21BY3Rpb24iLCJnZXRPRGF0YUFjdGlvblNpZGVFZmZlY3RzIiwic2lkZUVmZmVjdFByb21pc2VzIiwicGF0aEV4cHJlc3Npb25zIiwibWV0YVBhdGhGb3JBY3Rpb24iLCJkYXRhTW9kZWxQYXRoIiwiZ2V0Q29udGV4dCIsInByb3BlcnRpZXNUb1JlcXVlc3QiLCJlbnRpdHlQcm9wZXJ0aWVzIiwicHJvcGVydHkiLCJwcm9wIiwiaW5jbHVkZXMiLCJ0YXJnZXRQYXRocyIsImVuZHNXaXRoIiwiaW5kZXhPZiIsIm1vZGVsIiwicGFyZW50TGlzdEJpbmRpbmciLCJnZXRBbGxCaW5kaW5ncyIsImJpbmRpbmciLCJiaW5kaW5nUGF0aCIsImlzUmVsYXRpdmUiLCJnZXRSZXNvbHZlZFBhdGgiLCJpc0EiLCJnZXRBbGxDdXJyZW50Q29udGV4dHMiLCJiaW5kQ29udGV4dCIsImdldEJvdW5kQ29udGV4dCIsInJvdXRpbmciLCJDb21tb25VdGlscyIsImdldEN1cnJlbnRQYWdlVmlldyIsImRhdGFQYXRoIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBY3Rpdml0eVN5bmMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQge1xuXHRicm9hZGNhc3RDb2xsYWJvcmF0aW9uTWVzc2FnZSxcblx0ZW5kQ29sbGFib3JhdGlvbixcblx0aW5pdGlhbGl6ZUNvbGxhYm9yYXRpb24sXG5cdGlzQ29sbGFib3JhdGlvbkNvbm5lY3RlZFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9BY3Rpdml0eUJhc2VcIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZSwgVXNlciwgVXNlckFjdGl2aXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IHsgQWN0aXZpdHksIENvbGxhYm9yYXRpb25VdGlscywgZ2V0QWN0aXZpdHlLZXlGcm9tUGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCB7IEZpZWxkU2lkZUVmZmVjdERpY3Rpb25hcnkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2lkZUVmZmVjdHNcIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBNZXNzYWdlQm94IGZyb20gXCJzYXAvbS9NZXNzYWdlQm94XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcblxuY29uc3QgTVlBQ1RJVklUWSA9IFwiL2NvbGxhYm9yYXRpb24vbXlBY3Rpdml0eVwiO1xuY29uc3QgQUNUSVZFVVNFUlMgPSBcIi9jb2xsYWJvcmF0aW9uL2FjdGl2ZVVzZXJzXCI7XG5jb25zdCBBQ1RJVklUSUVTID0gXCIvY29sbGFib3JhdGlvbi9hY3Rpdml0aWVzXCI7XG5jb25zdCBTWU5DR1JPVVBJRCA9IFwiJGF1dG8uc3luY1wiO1xuXG5leHBvcnQgY29uc3QgaXNDb25uZWN0ZWQgPSBmdW5jdGlvbiAoY29udHJvbDogQ29udHJvbCk6IGJvb2xlYW4ge1xuXHRjb25zdCBpbnRlcm5hbE1vZGVsID0gY29udHJvbC5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbDtcblx0cmV0dXJuIGlzQ29sbGFib3JhdGlvbkNvbm5lY3RlZChpbnRlcm5hbE1vZGVsKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZW5kID0gZnVuY3Rpb24gKFxuXHRjb250cm9sOiBDb250cm9sLFxuXHRhY3Rpb246IEFjdGl2aXR5LFxuXHRjb250ZW50OiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcblx0dHJpZ2dlcmVkQWN0aW9uTmFtZT86IHN0cmluZyxcblx0cmVmcmVzaExpc3RCaW5kaW5nPzogYm9vbGVhbixcblx0YWN0aW9uUmVxdWVzdGVkUHJvcGVydGllcz86IHN0cmluZ1tdXG4pIHtcblx0aWYgKGlzQ29ubmVjdGVkKGNvbnRyb2wpKSB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0Y29uc3QgY2xpZW50Q29udGVudCA9IEFycmF5LmlzQXJyYXkoY29udGVudCkgPyBjb250ZW50LmpvaW4oXCJ8XCIpIDogY29udGVudDtcblx0XHRjb25zdCByZXF1ZXN0ZWRQcm9wZXJ0aWVzID0gYWN0aW9uUmVxdWVzdGVkUHJvcGVydGllcz8uam9pbihcInxcIik7XG5cdFx0Y29uc3QgbXlBY3Rpdml0eSA9IGludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoTVlBQ1RJVklUWSk7XG5cdFx0aWYgKGFjdGlvbiA9PT0gQWN0aXZpdHkuTGl2ZUNoYW5nZSkge1xuXHRcdFx0Ly8gVG8gYXZvaWQgdW5uZWNlc3NhcnkgdHJhZmZpYyB3ZSBrZWVwIHRyYWNrIG9mIGxpdmUgY2hhbmdlcyBhbmQgc2VuZCBpdCBvbmx5IG9uY2VcblxuXHRcdFx0aWYgKG15QWN0aXZpdHkgPT09IGNsaWVudENvbnRlbnQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShNWUFDVElWSVRZLCBjbGllbnRDb250ZW50KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gTm8gbmVlZCB0byBzZW5kIGFuIFVuZG8gbWVzc2FnZSBpZiB0aGVyZSdzIG5vIGN1cnJlbnQgYWN0aXZpdHlcblx0XHRcdGlmIChhY3Rpb24gPT09IEFjdGl2aXR5LlVuZG8gJiYgbXlBY3Rpdml0eSA9PT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIHVzZXIgZmluaXNoZWQgdGhlIGFjdGl2aXR5XG5cdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KE1ZQUNUSVZJVFksIG51bGwpO1xuXHRcdH1cblxuXHRcdGJyb2FkY2FzdENvbGxhYm9yYXRpb25NZXNzYWdlKGFjdGlvbiwgY2xpZW50Q29udGVudCwgaW50ZXJuYWxNb2RlbCwgdHJpZ2dlcmVkQWN0aW9uTmFtZSwgcmVmcmVzaExpc3RCaW5kaW5nLCByZXF1ZXN0ZWRQcm9wZXJ0aWVzKTtcblx0fVxufTtcblxuY29uc3QgZ2V0V2ViU29ja2V0QmFzZVVSTCA9IGZ1bmN0aW9uIChiaW5kaW5nQ29udGV4dDogQ29udGV4dCk6IHN0cmluZyB7XG5cdHJldHVybiBiaW5kaW5nQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE9iamVjdChcIi9AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLldlYlNvY2tldEJhc2VVUkxcIik7XG59O1xuXG5leHBvcnQgY29uc3QgaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCA9IGZ1bmN0aW9uICh2aWV3OiBWaWV3KTogYm9vbGVhbiB7XG5cdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQgJiYgKHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0KTtcblx0cmV0dXJuICEhKGJpbmRpbmdDb250ZXh0ICYmIGdldFdlYlNvY2tldEJhc2VVUkwoYmluZGluZ0NvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25uZWN0ID0gYXN5bmMgZnVuY3Rpb24gKHZpZXc6IEZFVmlldykge1xuXHRjb25zdCBpbnRlcm5hbE1vZGVsID0gdmlldy5nZXRNb2RlbChcImludGVybmFsXCIpO1xuXHRjb25zdCBtZSA9IENvbGxhYm9yYXRpb25VdGlscy5nZXRNZSh2aWV3KTtcblxuXHQvLyBSZXRyaWV2aW5nIE1FIGZyb20gc2hlbGwgc2VydmljZVxuXHRpZiAoIW1lKSB7XG5cdFx0Ly8gbm8gbWUgPSBubyBzaGVsbCA9IG5vdCBzdXJlIHdoYXQgdG8gZG9cblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRjb25zdCB3ZWJTb2NrZXRCYXNlVVJMID0gZ2V0V2ViU29ja2V0QmFzZVVSTChiaW5kaW5nQ29udGV4dCk7XG5cdGNvbnN0IHNlcnZpY2VVcmwgPSBiaW5kaW5nQ29udGV4dC5nZXRNb2RlbCgpLmdldFNlcnZpY2VVcmwoKTtcblxuXHRpZiAoIXdlYlNvY2tldEJhc2VVUkwpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBzRHJhZnRVVUlEID0gYXdhaXQgYmluZGluZ0NvbnRleHQucmVxdWVzdFByb3BlcnR5KFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvRHJhZnRVVUlEXCIpO1xuXHRpZiAoIXNEcmFmdFVVSUQpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpbml0aWFsaXplQ29sbGFib3JhdGlvbihtZSwgd2ViU29ja2V0QmFzZVVSTCwgc0RyYWZ0VVVJRCwgc2VydmljZVVybCwgaW50ZXJuYWxNb2RlbCwgKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IHtcblx0XHRtZXNzYWdlUmVjZWl2ZShtZXNzYWdlLCB2aWV3KTtcblx0fSk7XG5cdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoTVlBQ1RJVklUWSwgbnVsbCk7XG59O1xuXG5leHBvcnQgY29uc3QgZGlzY29ubmVjdCA9IGZ1bmN0aW9uIChjb250cm9sOiBDb250cm9sKSB7XG5cdGNvbnN0IGludGVybmFsTW9kZWwgPSBjb250cm9sLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRlbmRDb2xsYWJvcmF0aW9uKGludGVybmFsTW9kZWwpO1xufTtcblxuLyoqXG4gKiBDYWxsYmFjayB3aGVuIGEgbWVzc2FnZSBpcyByZWNlaXZlZCBmcm9tIHRoZSB3ZWJzb2NrZXQuXG4gKlxuICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgcmVjZWl2ZWRcbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKi9cbmZ1bmN0aW9uIG1lc3NhZ2VSZWNlaXZlKG1lc3NhZ2U6IE1lc3NhZ2UsIHZpZXc6IEZFVmlldykge1xuXHRjb25zdCBpbnRlcm5hbE1vZGVsOiBhbnkgPSB2aWV3LmdldE1vZGVsKFwiaW50ZXJuYWxcIik7XG5cdGxldCBhY3RpdmVVc2VyczogVXNlcltdID0gaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShBQ1RJVkVVU0VSUyk7XG5cdGxldCBhY3Rpdml0aWVzOiBVc2VyQWN0aXZpdHlbXTtcblx0bGV0IGFjdGl2aXR5S2V5OiBzdHJpbmc7XG5cdGNvbnN0IG1ldGFQYXRoID0gY2FsY3VsYXRlTWV0YVBhdGgodmlldywgbWVzc2FnZS5jbGllbnRDb250ZW50KTtcblx0bWVzc2FnZS51c2VyQWN0aW9uID0gbWVzc2FnZS51c2VyQWN0aW9uIHx8IG1lc3NhZ2UuY2xpZW50QWN0aW9uO1xuXG5cdGNvbnN0IHNlbmRlcjogVXNlciA9IHtcblx0XHRpZDogbWVzc2FnZS51c2VySUQsXG5cdFx0bmFtZTogbWVzc2FnZS51c2VyRGVzY3JpcHRpb24sXG5cdFx0aW5pdGlhbHM6IENvbGxhYm9yYXRpb25VdGlscy5mb3JtYXRJbml0aWFscyhtZXNzYWdlLnVzZXJEZXNjcmlwdGlvbiksXG5cdFx0Y29sb3I6IENvbGxhYm9yYXRpb25VdGlscy5nZXRVc2VyQ29sb3IobWVzc2FnZS51c2VySUQsIGFjdGl2ZVVzZXJzLCBbXSlcblx0fTtcblxuXHRsZXQgbWFjdGl2aXR5OiBVc2VyQWN0aXZpdHkgPSBzZW5kZXI7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlZmF1bHQtY2FzZVxuXHRzd2l0Y2ggKG1lc3NhZ2UudXNlckFjdGlvbikge1xuXHRcdGNhc2UgQWN0aXZpdHkuSm9pbjpcblx0XHRjYXNlIEFjdGl2aXR5LkpvaW5FY2hvOlxuXHRcdFx0aWYgKGFjdGl2ZVVzZXJzLmZpbmRJbmRleCgodXNlcikgPT4gdXNlci5pZCA9PT0gc2VuZGVyLmlkKSA9PT0gLTEpIHtcblx0XHRcdFx0YWN0aXZlVXNlcnMudW5zaGlmdChzZW5kZXIpO1xuXHRcdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KEFDVElWRVVTRVJTLCBhY3RpdmVVc2Vycyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChtZXNzYWdlLnVzZXJBY3Rpb24gPT09IEFjdGl2aXR5LkpvaW4pIHtcblx0XHRcdFx0Ly8gd2UgZWNobyBvdXIgZXhpc3RlbmNlIHRvIHRoZSBuZXdseSBlbnRlcmVkIHVzZXIgYW5kIGFsc28gc2VuZCB0aGUgY3VycmVudCBhY3Rpdml0eSBpZiB0aGVyZSBpcyBhbnlcblx0XHRcdFx0YnJvYWRjYXN0Q29sbGFib3JhdGlvbk1lc3NhZ2UoQWN0aXZpdHkuSm9pbkVjaG8sIGludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoTVlBQ1RJVklUWSksIGludGVybmFsTW9kZWwpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobWVzc2FnZS51c2VyQWN0aW9uID09PSBBY3Rpdml0eS5Kb2luRWNobykge1xuXHRcdFx0XHRpZiAobWVzc2FnZS5jbGllbnRDb250ZW50KSB7XG5cdFx0XHRcdFx0Ly8gYW5vdGhlciB1c2VyIHdhcyBhbHJlYWR5IHR5cGluZyB0aGVyZWZvcmUgSSB3YW50IHRvIHNlZSBoaXMgYWN0aXZpdHkgaW1tZWRpYXRlbHkuIENhbGxpbmcgbWUgYWdhaW4gYXMgYSBsaXZlIGNoYW5nZVxuXHRcdFx0XHRcdG1lc3NhZ2UudXNlckFjdGlvbiA9IEFjdGl2aXR5LkxpdmVDaGFuZ2U7XG5cdFx0XHRcdFx0bWVzc2FnZVJlY2VpdmUobWVzc2FnZSwgdmlldyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIEFjdGl2aXR5LkxlYXZlOlxuXHRcdFx0Ly8gUmVtb3ZpbmcgdGhlIGFjdGl2ZSB1c2VyLiBOb3QgcmVtb3ZpbmcgXCJtZVwiIGlmIEkgaGFkIHRoZSBzY3JlZW4gb3BlbiBpbiBhbm90aGVyIHNlc3Npb25cblx0XHRcdGFjdGl2ZVVzZXJzID0gYWN0aXZlVXNlcnMuZmlsdGVyKCh1c2VyKSA9PiB1c2VyLmlkICE9PSBzZW5kZXIuaWQgfHwgdXNlci5tZSk7XG5cdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KEFDVElWRVVTRVJTLCBhY3RpdmVVc2Vycyk7XG5cdFx0XHRjb25zdCBhbGxBY3Rpdml0aWVzID0gaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShBQ1RJVklUSUVTKSB8fCB7fTtcblx0XHRcdGNvbnN0IHJlbW92ZVVzZXJBY3Rpdml0aWVzID0gZnVuY3Rpb24gKGJhZzogYW55KSB7XG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGJhZykpIHtcblx0XHRcdFx0XHRyZXR1cm4gYmFnLmZpbHRlcigoYWN0aXZpdHkpID0+IGFjdGl2aXR5LmlkICE9PSBzZW5kZXIuaWQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgcCBpbiBiYWcpIHtcblx0XHRcdFx0XHRcdGJhZ1twXSA9IHJlbW92ZVVzZXJBY3Rpdml0aWVzKGJhZ1twXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBiYWc7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRyZW1vdmVVc2VyQWN0aXZpdGllcyhhbGxBY3Rpdml0aWVzKTtcblx0XHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoQUNUSVZJVElFUywgYWxsQWN0aXZpdGllcyk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgQWN0aXZpdHkuQ2hhbmdlOlxuXHRcdFx0dXBkYXRlT25DaGFuZ2UodmlldywgbWVzc2FnZSk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgQWN0aXZpdHkuQ3JlYXRlOlxuXHRcdFx0Ly8gRm9yIGNyZWF0ZSB3ZSBhY3R1YWxseSBqdXN0IG5lZWQgdG8gcmVmcmVzaCB0aGUgdGFibGVcblx0XHRcdHVwZGF0ZU9uQ3JlYXRlKHZpZXcsIG1lc3NhZ2UpO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIEFjdGl2aXR5LkRlbGV0ZTpcblx0XHRcdC8vIEZvciBub3cgYWxzbyByZWZyZXNoIHRoZSBwYWdlIGJ1dCBpbiBjYXNlIG9mIGRlbGV0aW9uIHdlIG5lZWQgdG8gaW5mb3JtIHRoZSB1c2VyXG5cdFx0XHR1cGRhdGVPbkRlbGV0ZSh2aWV3LCBtZXNzYWdlKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBBY3Rpdml0eS5BY3RpdmF0ZTpcblx0XHRcdGRyYWZ0Q2xvc2VkQnlPdGhlclVzZXIodmlldywgbWVzc2FnZS5jbGllbnRDb250ZW50LCBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0FDVElWQVRFXCIsIHNlbmRlci5uYW1lKSk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgQWN0aXZpdHkuRGlzY2FyZDpcblx0XHRcdGRyYWZ0Q2xvc2VkQnlPdGhlclVzZXIodmlldywgbWVzc2FnZS5jbGllbnRDb250ZW50LCBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0RJU0NBUkRcIiwgc2VuZGVyLm5hbWUpKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBBY3Rpdml0eS5BY3Rpb246XG5cdFx0XHR1cGRhdGVPbkFjdGlvbih2aWV3LCBtZXNzYWdlKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBBY3Rpdml0eS5MaXZlQ2hhbmdlOlxuXHRcdFx0bWFjdGl2aXR5ID0gc2VuZGVyO1xuXHRcdFx0bWFjdGl2aXR5LmtleSA9IGdldEFjdGl2aXR5S2V5RnJvbVBhdGgobWVzc2FnZS5jbGllbnRDb250ZW50KTtcblxuXHRcdFx0Ly8gc3R1cGlkIEpTT04gbW9kZWwuLi5cblx0XHRcdGxldCBpbml0SlNPTk1vZGVsOiBzdHJpbmcgPSBcIlwiO1xuXHRcdFx0Y29uc3QgcGFydHMgPSBtZXRhUGF0aC5zcGxpdChcIi9cIik7XG5cdFx0XHRmb3IgKGxldCBpID0gMTsgaSA8IHBhcnRzLmxlbmd0aCAtIDE7IGkrKykge1xuXHRcdFx0XHRpbml0SlNPTk1vZGVsICs9IGAvJHtwYXJ0c1tpXX1gO1xuXHRcdFx0XHRpZiAoIWludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoQUNUSVZJVElFUyArIGluaXRKU09OTW9kZWwpKSB7XG5cdFx0XHRcdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShBQ1RJVklUSUVTICsgaW5pdEpTT05Nb2RlbCwge30pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGFjdGl2aXRpZXMgPSBpbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KEFDVElWSVRJRVMgKyBtZXRhUGF0aCk7XG5cdFx0XHRhY3Rpdml0aWVzID0gYWN0aXZpdGllcz8uc2xpY2UgPyBhY3Rpdml0aWVzLnNsaWNlKCkgOiBbXTtcblx0XHRcdGFjdGl2aXRpZXMucHVzaChtYWN0aXZpdHkpO1xuXHRcdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShBQ1RJVklUSUVTICsgbWV0YVBhdGgsIGFjdGl2aXRpZXMpO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIEFjdGl2aXR5LlVuZG86XG5cdFx0XHQvLyBUaGUgdXNlciBkaWQgYSBjaGFuZ2UgYnV0IHJldmVydGVkIGl0LCB0aGVyZWZvcmUgdW5ibG9jayB0aGUgY29udHJvbFxuXHRcdFx0YWN0aXZpdGllcyA9IGludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoQUNUSVZJVElFUyArIG1ldGFQYXRoKTtcblx0XHRcdGFjdGl2aXR5S2V5ID0gZ2V0QWN0aXZpdHlLZXlGcm9tUGF0aChtZXNzYWdlLmNsaWVudENvbnRlbnQpO1xuXHRcdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShcblx0XHRcdFx0QUNUSVZJVElFUyArIG1ldGFQYXRoLFxuXHRcdFx0XHRhY3Rpdml0aWVzLmZpbHRlcigoYSkgPT4gYS5rZXkgIT09IGFjdGl2aXR5S2V5KVxuXHRcdFx0KTtcblx0XHRcdGJyZWFrO1xuXHR9XG59XG5cbi8qKlxuICogRGlzcGxheXMgYSBtZXNzYWdlIHRoYXQgdGhlIGN1cnJlbnQgZHJhZnQgd2FzIGNsb3NlZCBiZSBhbm90aGVyIHVzZXIsIGFuZCBuYXZpZ2F0ZXMgYmFjayB0byBhIHByb3BlciB2aWV3LlxuICpcbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCBvZiB0aGUgY29udGV4dCB0byBuYXZpZ2F0ZSB0b1xuICogQHBhcmFtIG1lc3NhZ2VUZXh0IFRoZSBtZXNzYWdlIHRvIGRpc3BsYXlcbiAqL1xuZnVuY3Rpb24gZHJhZnRDbG9zZWRCeU90aGVyVXNlcih2aWV3OiBGRVZpZXcsIHBhdGg6IHN0cmluZywgbWVzc2FnZVRleHQ6IHN0cmluZykge1xuXHRkaXNjb25uZWN0KHZpZXcpO1xuXHRNZXNzYWdlQm94LmluZm9ybWF0aW9uKG1lc3NhZ2VUZXh0KTtcblx0KHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0KVxuXHRcdC5nZXRCaW5kaW5nKClcblx0XHQucmVzZXRDaGFuZ2VzKClcblx0XHQudGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRuYXZpZ2F0ZShwYXRoLCB2aWV3KTtcblx0XHR9KVxuXHRcdC5jYXRjaChmdW5jdGlvbiAoKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJQZW5kaW5nIENoYW5nZXMgY291bGQgbm90IGJlIHJlc2V0IC0gc3RpbGwgbmF2aWdhdGluZyB0byBhY3RpdmUgaW5zdGFuY2VcIik7XG5cdFx0XHRuYXZpZ2F0ZShwYXRoLCB2aWV3KTtcblx0XHR9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIGRhdGEgd2hlbiBhIENIQU5HRSBtZXNzYWdlIGhhcyBiZWVuIHJlY2VpdmVkLlxuICpcbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHRoZSB3ZWJzb2NrZXRcbiAqL1xuZnVuY3Rpb24gdXBkYXRlT25DaGFuZ2UodmlldzogRkVWaWV3LCBtZXNzYWdlOiBNZXNzYWdlKSB7XG5cdGNvbnN0IHVwZGF0ZWRPYmplY3RzUGF0aHMgPSBtZXNzYWdlLmNsaWVudENvbnRlbnQuc3BsaXQoXCJ8XCIpO1xuXHRjb25zdCBtZXRhTW9kZWwgPSB2aWV3LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdGNvbnN0IGludGVybmFsTW9kZWwgPSB2aWV3LmdldE1vZGVsKFwiaW50ZXJuYWxcIik7XG5cblx0Ly8gUmVtb3ZlIGFsbCBsb2NrcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXRoc1xuXHR1cGRhdGVkT2JqZWN0c1BhdGhzLmZvckVhY2goKHVwZGF0ZWRQYXRoKSA9PiB7XG5cdFx0Y29uc3QgdXBkYXRlZE1ldGFQYXRoID0gbWV0YU1vZGVsLmdldE1ldGFQYXRoKHVwZGF0ZWRQYXRoKTtcblx0XHRjb25zdCBhY3Rpdml0eUtleSA9IGdldEFjdGl2aXR5S2V5RnJvbVBhdGgodXBkYXRlZFBhdGgpO1xuXHRcdGxldCBjdXJyZW50QWN0aXZpdGllczogYW55W10gPSBpbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KEFDVElWSVRJRVMgKyB1cGRhdGVkTWV0YVBhdGgpIHx8IFtdO1xuXHRcdGN1cnJlbnRBY3Rpdml0aWVzID0gY3VycmVudEFjdGl2aXRpZXM/LmZpbHRlciAmJiBjdXJyZW50QWN0aXZpdGllcy5maWx0ZXIoKGFjdGl2aXR5KSA9PiBhY3Rpdml0eS5rZXkgIT09IGFjdGl2aXR5S2V5KTtcblx0XHRpZiAoY3VycmVudEFjdGl2aXRpZXMpIHtcblx0XHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoQUNUSVZJVElFUyArIHVwZGF0ZWRNZXRhUGF0aCwgY3VycmVudEFjdGl2aXRpZXMpO1xuXHRcdH1cblx0fSk7XG5cblx0Y29uc3QgY3VycmVudFBhZ2UgPSBnZXRDdXJyZW50UGFnZSh2aWV3KTtcblx0Y29uc3QgY3VycmVudENvbnRleHQgPSBjdXJyZW50UGFnZS5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQgfCB1bmRlZmluZWQ7XG5cdGNvbnN0IHJlcXVlc3RQcm9taXNlcyA9IHVwZGF0ZWRPYmplY3RzUGF0aHMubWFwKChwYXRoKSA9PiBhcHBseVVwZGF0ZXNGb3JDaGFuZ2UodmlldywgcGF0aCkpO1xuXG5cdC8vIFNpbXVsYXRlIGFueSBjaGFuZ2Ugc28gdGhlIGVkaXQgZmxvdyBzaG93cyB0aGUgZHJhZnQgaW5kaWNhdG9yIGFuZCBzZXRzIHRoZSBwYWdlIHRvIGRpcnR5XG5cdGN1cnJlbnRQYWdlLmdldENvbnRyb2xsZXIoKS5lZGl0Rmxvdy51cGRhdGVEb2N1bWVudChjdXJyZW50Q29udGV4dCwgUHJvbWlzZS5hbGwocmVxdWVzdFByb21pc2VzKSk7XG59XG5cbi8qKlxuICogVXBkYXRlcyBkYXRhIGNvcnJlc3BvbmRpbmcgdG8gYSBwYXRoLlxuICpcbiAqIEBwYXJhbSB2aWV3IFRoZSB2aWV3IHRoYXQgd2FzIHVzZWQgaW5pdGlhbGx5IHdoZW4gY29ubmVjdGluZyB0aGUgd2Vic29ja2V0XG4gKiBAcGFyYW0gcHJvcGVydHlQYXRoRm9yVXBkYXRlIEFic29sdXRlIHBhdGggdG8gdGhlIHVwZGF0ZWQgcHJvcGVydHlcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSByZXNvbHZlZCB3aGVuIHRoZSBkYXRhIGFuZCBpdHMgcmVsYXRlZCBzaWRlIGVmZmVjdHMgaGF2ZSBiZWVuIHJlY2VpdmVkXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFwcGx5VXBkYXRlc0ZvckNoYW5nZSh2aWV3OiBGRVZpZXcsIHByb3BlcnR5UGF0aEZvclVwZGF0ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IG1ldGFNb2RlbCA9IHZpZXcuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0Y29uc3QgbWV0YUNvbnRleHQgPSBtZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQocHJvcGVydHlQYXRoRm9yVXBkYXRlKTtcblx0Y29uc3QgZGF0YU1vZGVsT2JqZWN0ID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhtZXRhQ29udGV4dCk7XG5cdGNvbnN0IHRhcmdldENvbnRleHRQYXRoID0gcHJvcGVydHlQYXRoRm9yVXBkYXRlLnN1YnN0cmluZygwLCBwcm9wZXJ0eVBhdGhGb3JVcGRhdGUubGFzdEluZGV4T2YoXCIvXCIpKTsgLy8gUmVtb3ZlIHByb3BlcnR5IG5hbWVcblx0Y29uc3QgdGFyZ2V0Q29udGV4dCA9IGZpbmRDb250ZXh0Rm9yVXBkYXRlKHZpZXcsIHRhcmdldENvbnRleHRQYXRoKTtcblx0Y29uc3QgcGFyZW50Q29sbGVjdGlvblBhdGggPSB0YXJnZXRDb250ZXh0UGF0aC5zdWJzdHJpbmcoMCwgdGFyZ2V0Q29udGV4dFBhdGgubGFzdEluZGV4T2YoXCIoXCIpKTtcblx0Y29uc3QgcGFyZW50Q29udGV4dFBhdGggPSBwYXJlbnRDb2xsZWN0aW9uUGF0aC5zdWJzdHJpbmcoMCwgcGFyZW50Q29sbGVjdGlvblBhdGgubGFzdEluZGV4T2YoXCIvXCIpKTtcblx0Y29uc3QgcGFyZW50Q29udGV4dCA9IHBhcmVudENvbnRleHRQYXRoID8gZmluZENvbnRleHRGb3JVcGRhdGUodmlldywgcGFyZW50Q29udGV4dFBhdGgpIDogdW5kZWZpbmVkO1xuXG5cdGlmICghdGFyZ2V0Q29udGV4dCAmJiAhcGFyZW50Q29udGV4dCkge1xuXHRcdHJldHVybjsgLy8gTm8gY29udGV4dCBmb3IgdXBkYXRlXG5cdH1cblxuXHR0cnkge1xuXHRcdGNvbnN0IHNpZGVFZmZlY3RzUHJvbWlzZXM6IFByb21pc2U8YW55PltdID0gW107XG5cdFx0Y29uc3Qgc2lkZUVmZmVjdHNTZXJ2aWNlID0gQ29sbGFib3JhdGlvblV0aWxzLmdldEFwcENvbXBvbmVudCh2aWV3KS5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKTtcblxuXHRcdGlmICh0YXJnZXRDb250ZXh0KSB7XG5cdFx0XHQvLyBXZSBoYXZlIGEgdGFyZ2V0IGNvbnRleHQsIHNvIHdlIGNhbiByZXRyaWV2ZSB0aGUgdXBkYXRlZCBwcm9wZXJ0eVxuXHRcdFx0Y29uc3QgdGFyZ2V0TWV0YVBhdGggPSBtZXRhTW9kZWwuZ2V0TWV0YVBhdGgodGFyZ2V0Q29udGV4dC5nZXRQYXRoKCkpO1xuXHRcdFx0Y29uc3QgcmVsYXRpdmVNZXRhUGF0aEZvclVwZGF0ZSA9IG1ldGFNb2RlbC5nZXRNZXRhUGF0aChwcm9wZXJ0eVBhdGhGb3JVcGRhdGUpLnJlcGxhY2UodGFyZ2V0TWV0YVBhdGgsIFwiXCIpLnNsaWNlKDEpO1xuXHRcdFx0c2lkZUVmZmVjdHNQcm9taXNlcy5wdXNoKHNpZGVFZmZlY3RzU2VydmljZS5yZXF1ZXN0U2lkZUVmZmVjdHMoW3JlbGF0aXZlTWV0YVBhdGhGb3JVcGRhdGVdLCB0YXJnZXRDb250ZXh0LCBTWU5DR1JPVVBJRCkpO1xuXHRcdH1cblxuXHRcdC8vIEdldCB0aGUgZmllbGRHcm91cElkcyBjb3JyZXNwb25kaW5nIHRvIHBhdGhGb3JVcGRhdGVcblx0XHRjb25zdCBmaWVsZEdyb3VwSWRzID0gc2lkZUVmZmVjdHNTZXJ2aWNlLmNvbXB1dGVGaWVsZEdyb3VwSWRzKFxuXHRcdFx0ZGF0YU1vZGVsT2JqZWN0LnRhcmdldEVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0ZGF0YU1vZGVsT2JqZWN0LnRhcmdldE9iamVjdC5mdWxseVF1YWxpZmllZE5hbWVcblx0XHQpO1xuXG5cdFx0Ly8gRXhlY3V0ZSB0aGUgc2lkZSBlZmZlY3RzIGZvciB0aGUgZmllbGRHcm91cElkc1xuXHRcdGlmIChmaWVsZEdyb3VwSWRzLmxlbmd0aCkge1xuXHRcdFx0Y29uc3QgcGFnZUNvbnRyb2xsZXIgPSB2aWV3LmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcjtcblx0XHRcdGNvbnN0IHNpZGVFZmZlY3RzTWFwRm9yRmllbGRHcm91cCA9IHBhZ2VDb250cm9sbGVyLl9zaWRlRWZmZWN0cy5nZXRTaWRlRWZmZWN0c01hcEZvckZpZWxkR3JvdXBzKFxuXHRcdFx0XHRmaWVsZEdyb3VwSWRzLFxuXHRcdFx0XHR0YXJnZXRDb250ZXh0IHx8IHBhcmVudENvbnRleHRcblx0XHRcdCkgYXMgRmllbGRTaWRlRWZmZWN0RGljdGlvbmFyeTtcblx0XHRcdE9iamVjdC5rZXlzKHNpZGVFZmZlY3RzTWFwRm9yRmllbGRHcm91cCkuZm9yRWFjaCgoc2lkZUVmZmVjdE5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3Qgc2lkZUVmZmVjdCA9IHNpZGVFZmZlY3RzTWFwRm9yRmllbGRHcm91cFtzaWRlRWZmZWN0TmFtZV07XG5cdFx0XHRcdHNpZGVFZmZlY3RzUHJvbWlzZXMucHVzaChcblx0XHRcdFx0XHRwYWdlQ29udHJvbGxlci5fc2lkZUVmZmVjdHMucmVxdWVzdFNpZGVFZmZlY3RzKHNpZGVFZmZlY3Quc2lkZUVmZmVjdHMsIHNpZGVFZmZlY3QuY29udGV4dCwgU1lOQ0dST1VQSUQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRhd2FpdCBQcm9taXNlLmFsbChzaWRlRWZmZWN0c1Byb21pc2VzKTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0TG9nLmVycm9yKFwiRmFpbGVkIHRvIHVwZGF0ZSBkYXRhIGFmdGVyIGNoYW5nZTpcIiArIGVycik7XG5cdFx0dGhyb3cgZXJyO1xuXHR9XG59XG5cbi8qKlxuICogVXBkYXRlcyBkYXRhIHdoZW4gYSBERUxFVEUgbWVzc2FnZSBoYXMgYmVlbiByZWNlaXZlZC5cbiAqXG4gKiBAcGFyYW0gdmlldyBUaGUgdmlldyB0aGF0IHdhcyB1c2VkIGluaXRpYWxseSB3aGVuIGNvbm5lY3RpbmcgdGhlIHdlYnNvY2tldFxuICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSB0aGUgd2Vic29ja2V0XG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZU9uRGVsZXRlKHZpZXc6IFZpZXcsIG1lc3NhZ2U6IE1lc3NhZ2UpIHtcblx0Y29uc3QgY3VycmVudFBhZ2UgPSBnZXRDdXJyZW50UGFnZSh2aWV3KTtcblx0Y29uc3QgY3VycmVudENvbnRleHQgPSBjdXJyZW50UGFnZS5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdGNvbnN0IGN1cnJlbnRQYXRoID0gY3VycmVudENvbnRleHQuZ2V0UGF0aCgpO1xuXG5cdGNvbnN0IGRlbGV0ZWRPYmplY3RQYXRocyA9IG1lc3NhZ2UuY2xpZW50Q29udGVudC5zcGxpdChcInxcIik7XG5cblx0Ly8gY2hlY2sgaWYgdXNlciBjdXJyZW50bHkgZGlzcGxheXMgYSBkZWxldGVkIG9iamVjdCBvciBvbmUgb2YgaXRzIGRlc2NlbmRhbnRzXG5cdGNvbnN0IGRlbGV0ZWRQYXRoSW5Vc2UgPSBkZWxldGVkT2JqZWN0UGF0aHMuZmluZCgoZGVsZXRlZFBhdGgpID0+IGN1cnJlbnRQYXRoLnN0YXJ0c1dpdGgoZGVsZXRlZFBhdGgpKTtcblx0aWYgKGRlbGV0ZWRQYXRoSW5Vc2UpIHtcblx0XHQvLyBhbnkgb3RoZXIgdXNlciBkZWxldGVkIHRoZSBvYmplY3QgSSdtIGN1cnJlbnRseSBsb29raW5nIGF0LiBJbmZvcm0gdGhlIHVzZXIgd2Ugd2lsbCBuYXZpZ2F0ZSB0byByb290IG5vd1xuXHRcdE1lc3NhZ2VCb3guaW5mb3JtYXRpb24oQ29sbGFib3JhdGlvblV0aWxzLmdldFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9ERUxFVEVcIiwgbWVzc2FnZS51c2VyRGVzY3JpcHRpb24pLCB7XG5cdFx0XHRvbkNsb3NlOiAoKSA9PiB7XG5cdFx0XHRcdC8vIFdlIHJldHJpZXZlIHRoZSBkZWxldGVkIGNvbnRleHQgYXMgYSBrZWVwLWFsaXZlLCBhbmQgZGlzYWJsZSBpdHMga2VlcGFsaXZlIHN0YXR1cyxcblx0XHRcdFx0Ly8gc28gdGhhdCBpdCBpcyBwcm9wZXJseSBkZXN0cm95ZWQgd2hlbiByZWZyZXNoaW5nIGRhdGFcblx0XHRcdFx0Y29uc3QgdGFyZ2V0Q29udGV4dCA9IGN1cnJlbnRDb250ZXh0LmdldE1vZGVsKCkuZ2V0S2VlcEFsaXZlQ29udGV4dChkZWxldGVkUGF0aEluVXNlKTtcblx0XHRcdFx0dGFyZ2V0Q29udGV4dC5zZXRLZWVwQWxpdmUoZmFsc2UpO1xuXHRcdFx0XHRjb25zdCByZXF1ZXN0UHJvbWlzZSA9IGFwcGx5VXBkYXRlc0ZvckNvbGxlY3Rpb24odmlldywgZGVsZXRlZE9iamVjdFBhdGhzWzBdKTtcblx0XHRcdFx0Y3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlcigpLmVkaXRGbG93LnVwZGF0ZURvY3VtZW50KGN1cnJlbnRQYWdlLmdldEJpbmRpbmdDb250ZXh0KCksIHJlcXVlc3RQcm9taXNlKTtcblx0XHRcdFx0KGN1cnJlbnRQYWdlLmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcikuX3JvdXRpbmcubmF2aWdhdGVCYWNrRnJvbUNvbnRleHQodGFyZ2V0Q29udGV4dCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgcmVxdWVzdFByb21pc2UgPSBhcHBseVVwZGF0ZXNGb3JDb2xsZWN0aW9uKHZpZXcsIGRlbGV0ZWRPYmplY3RQYXRoc1swXSk7XG5cdFx0Y3VycmVudFBhZ2UuZ2V0Q29udHJvbGxlcigpLmVkaXRGbG93LnVwZGF0ZURvY3VtZW50KGN1cnJlbnRQYWdlLmdldEJpbmRpbmdDb250ZXh0KCksIHJlcXVlc3RQcm9taXNlKTtcblx0fVxufVxuXG4vKipcbiAqIFVwZGF0ZXMgZGF0YSB3aGVuIGEgQ1JFQVRFIG1lc3NhZ2UgaGFzIGJlZW4gcmVjZWl2ZWQuXG4gKlxuICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhhdCB3YXMgdXNlZCBpbml0aWFsbHkgd2hlbiBjb25uZWN0aW5nIHRoZSB3ZWJzb2NrZXRcbiAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHJlY2VpdmVkIGZyb20gdGhlIHdlYnNvY2tldFxuICovXG5mdW5jdGlvbiB1cGRhdGVPbkNyZWF0ZSh2aWV3OiBWaWV3LCBtZXNzYWdlOiBNZXNzYWdlKSB7XG5cdGNvbnN0IGN1cnJlbnRQYWdlID0gZ2V0Q3VycmVudFBhZ2Uodmlldyk7XG5cdGNvbnN0IGNyZWF0ZWRPYmplY3RQYXRocyA9IG1lc3NhZ2UuY2xpZW50Q29udGVudC5zcGxpdChcInxcIik7XG5cblx0Y29uc3QgcmVxdWVzdFByb21pc2UgPSBhcHBseVVwZGF0ZXNGb3JDb2xsZWN0aW9uKHZpZXcsIGNyZWF0ZWRPYmplY3RQYXRoc1swXSk7XG5cdC8vIFNpbXVsYXRlIGEgY2hhbmdlIHNvIHRoZSBlZGl0IGZsb3cgc2hvd3MgdGhlIGRyYWZ0IGluZGljYXRvciBhbmQgc2V0cyB0aGUgcGFnZSB0byBkaXJ0eVxuXHRjdXJyZW50UGFnZS5nZXRDb250cm9sbGVyKCkuZWRpdEZsb3cudXBkYXRlRG9jdW1lbnQoY3VycmVudFBhZ2UuZ2V0QmluZGluZ0NvbnRleHQoKSwgcmVxdWVzdFByb21pc2UpO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgZGF0YSBpbiBhIGNvbGxlY3Rpb24uXG4gKlxuICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhhdCB3YXMgdXNlZCBpbml0aWFsbHkgd2hlbiBjb25uZWN0aW5nIHRoZSB3ZWJzb2NrZXRcbiAqIEBwYXJhbSBwYXRoSW5Db2xsZWN0aW9uIEEgcGF0aCB0byBhbiBlbnRpdHkgaW4gdGhlIGNvbGxlY3Rpb25cbiAqL1xuYXN5bmMgZnVuY3Rpb24gYXBwbHlVcGRhdGVzRm9yQ29sbGVjdGlvbih2aWV3OiBWaWV3LCBwYXRoSW5Db2xsZWN0aW9uOiBzdHJpbmcpIHtcblx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29sbGFib3JhdGlvblV0aWxzLmdldEFwcENvbXBvbmVudCh2aWV3KTtcblx0Y29uc3QgcGFyZW50UGF0aCA9IHBhdGhJbkNvbGxlY3Rpb24uc3Vic3RyaW5nKDAsIHBhdGhJbkNvbGxlY3Rpb24ubGFzdEluZGV4T2YoXCIvXCIpKTtcblx0Y29uc3QgcGFyZW50Q29udGV4dCA9IGZpbmRDb250ZXh0Rm9yVXBkYXRlKHZpZXcsIHBhcmVudFBhdGgpO1xuXG5cdGlmIChwYXJlbnRDb250ZXh0KSB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHNpZGVFZmZlY3RzUHJvbWlzZXM6IFByb21pc2U8YW55PltdID0gW107XG5cblx0XHRcdGNvbnN0IG1ldGFNb2RlbCA9IHBhcmVudENvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1ldGFQYXRoRm9yVXBkYXRlID0gbWV0YU1vZGVsLmdldE1ldGFQYXRoKHBhdGhJbkNvbGxlY3Rpb24pO1xuXHRcdFx0Y29uc3QgcGFyZW50TWV0YVBhdGggPSBtZXRhTW9kZWwuZ2V0TWV0YVBhdGgocGFyZW50Q29udGV4dC5nZXRQYXRoKCkpO1xuXHRcdFx0Y29uc3QgcmVsYXRpdmVQYXRoID0gbWV0YVBhdGhGb3JVcGRhdGUucmVwbGFjZShgJHtwYXJlbnRNZXRhUGF0aH0vYCwgXCJcIik7XG5cblx0XHRcdC8vIFJlbG9hZCB0aGUgY29sbGVjdGlvblxuXHRcdFx0Y29uc3Qgc2lkZUVmZmVjdHNTZXJ2aWNlID0gYXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpO1xuXHRcdFx0c2lkZUVmZmVjdHNQcm9taXNlcy5wdXNoKHNpZGVFZmZlY3RzU2VydmljZS5yZXF1ZXN0U2lkZUVmZmVjdHMoW3JlbGF0aXZlUGF0aF0sIHBhcmVudENvbnRleHQsIFNZTkNHUk9VUElEKSk7XG5cblx0XHRcdC8vIFJlcXVlc3QgdGhlIHNpZGUgZWZmZWN0cyBmb3IgdGhlIGNvbGxlY3Rpb25cblx0XHRcdHNpZGVFZmZlY3RzUHJvbWlzZXMucHVzaChzaWRlRWZmZWN0c1NlcnZpY2UucmVxdWVzdFNpZGVFZmZlY3RzRm9yTmF2aWdhdGlvblByb3BlcnR5KHJlbGF0aXZlUGF0aCwgcGFyZW50Q29udGV4dCwgU1lOQ0dST1VQSUQpKTtcblxuXHRcdFx0YXdhaXQgUHJvbWlzZS5hbGwoc2lkZUVmZmVjdHNQcm9taXNlcyk7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJGYWlsZWQgdG8gdXBkYXRlIGRhdGEgYWZ0ZXIgY29sbGVjdGlvbiB1cGRhdGU6XCIgKyBlcnIpO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIFVwZGF0ZXMgZGF0YSB3aGVuIGEgQUNUSU9OIG1lc3NhZ2UgaGFzIGJlZW4gcmVjZWl2ZWQuXG4gKlxuICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhhdCB3YXMgdXNlZCBpbml0aWFsbHkgd2hlbiBjb25uZWN0aW5nIHRoZSB3ZWJzb2NrZXRcbiAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHJlY2VpdmVkIGZyb20gdGhlIHdlYnNvY2tldFxuICovXG5mdW5jdGlvbiB1cGRhdGVPbkFjdGlvbih2aWV3OiBGRVZpZXcsIG1lc3NhZ2U6IE1lc3NhZ2UpIHtcblx0Y29uc3QgY3VycmVudFBhZ2UgPSBnZXRDdXJyZW50UGFnZSh2aWV3KTtcblx0Y29uc3QgcGF0aHNGb3JBY3Rpb24gPSBtZXNzYWdlLmNsaWVudENvbnRlbnQuc3BsaXQoXCJ8XCIpO1xuXHRjb25zdCBhY3Rpb25OYW1lID0gbWVzc2FnZS5jbGllbnRUcmlnZ2VyZWRBY3Rpb25OYW1lIHx8IFwiXCI7XG5cdGNvbnN0IHJlcXVlc3RlZFByb3BlcnRpZXMgPSBtZXNzYWdlLmNsaWVudFJlcXVlc3RlZFByb3BlcnRpZXM/LnNwbGl0KFwifFwiKTtcblx0Y29uc3QgcmVmcmVzaExpc3RCaW5kaW5nID0gbWVzc2FnZS5jbGllbnRSZWZyZXNoTGlzdEJpbmRpbmcgPT09IFwidHJ1ZVwiO1xuXG5cdGxldCByZXF1ZXN0UHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuXG5cdGlmIChyZWZyZXNoTGlzdEJpbmRpbmcpIHtcblx0XHRyZXF1ZXN0UHJvbWlzZXMucHVzaChhcHBseVVwZGF0ZXNGb3JDb2xsZWN0aW9uKHZpZXcsIHBhdGhzRm9yQWN0aW9uWzBdKSk7XG5cdH0gZWxzZSB7XG5cdFx0cmVxdWVzdFByb21pc2VzID0gcGF0aHNGb3JBY3Rpb24ubWFwKChwYXRoKSA9PiByZXF1ZXN0VXBkYXRlRm9yQWN0aW9uKHZpZXcsIHBhdGgsIGFjdGlvbk5hbWUsIHJlcXVlc3RlZFByb3BlcnRpZXMpKTtcblx0fVxuXG5cdC8vIFNpbXVsYXRlIGFueSBjaGFuZ2Ugc28gdGhlIGVkaXQgZmxvdyBzaG93cyB0aGUgZHJhZnQgaW5kaWNhdG9yIGFuZCBzZXRzIHRoZSBwYWdlIHRvIGRpcnR5XG5cdGN1cnJlbnRQYWdlLmdldENvbnRyb2xsZXIoKS5lZGl0Rmxvdy51cGRhdGVEb2N1bWVudChjdXJyZW50UGFnZS5nZXRCaW5kaW5nQ29udGV4dCgpLCBQcm9taXNlLmFsbChyZXF1ZXN0UHJvbWlzZXMpKTtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIHNpZGUtZWZmZWN0cyBkYXRhIHdoZW4gYW4gYWN0aW9uIGhhcyBiZWVuIHRyaWdnZXJlZCBvbiBhIGNvbnRleHQuXG4gKlxuICogQHBhcmFtIHZpZXcgVGhlIHZpZXcgdGhhdCB3YXMgdXNlZCBpbml0aWFsbHkgd2hlbiBjb25uZWN0aW5nIHRoZSB3ZWJzb2NrZXRcbiAqIEBwYXJhbSBwYXRoRm9yQWN0aW9uIFBhdGggb2YgdGhlIGNvbnRleHQgdG8gYXBwbHkgdGhlIGFjdGlvbiB0b1xuICogQHBhcmFtIGFjdGlvbk5hbWUgTmFtZSBvZiB0aGUgYWN0aW9uXG4gKiBAcGFyYW0gcmVxdWVzdGVkUHJvcGVydGllc1xuICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZlZCB3aGVuIHRoZSBzaWRlLWVmZmVjdHMgZGF0YSBoYXMgYmVlbiBsb2FkZWRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVxdWVzdFVwZGF0ZUZvckFjdGlvbihcblx0dmlldzogRkVWaWV3LFxuXHRwYXRoRm9yQWN0aW9uOiBzdHJpbmcsXG5cdGFjdGlvbk5hbWU6IHN0cmluZyxcblx0cmVxdWVzdGVkUHJvcGVydGllcz86IHN0cmluZ1tdXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0Y29uc3QgdGFyZ2V0Q29udGV4dCA9IGZpbmRDb250ZXh0Rm9yVXBkYXRlKHZpZXcsIHBhdGhGb3JBY3Rpb24pO1xuXHRpZiAoIXRhcmdldENvbnRleHQpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBhcHBDb21wb25lbnQgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHZpZXcpO1xuXHRjb25zdCBzaWRlRWZmZWN0U2VydmljZSA9IGFwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKTtcblx0Y29uc3Qgc2lkZUVmZmVjdHNGcm9tQWN0aW9uID0gc2lkZUVmZmVjdFNlcnZpY2UuZ2V0T0RhdGFBY3Rpb25TaWRlRWZmZWN0cyhhY3Rpb25OYW1lLCB0YXJnZXRDb250ZXh0KTtcblx0Y29uc3Qgc2lkZUVmZmVjdFByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuXHRpZiAoc2lkZUVmZmVjdHNGcm9tQWN0aW9uKSB7XG5cdFx0aWYgKHNpZGVFZmZlY3RzRnJvbUFjdGlvbi5wYXRoRXhwcmVzc2lvbnM/Lmxlbmd0aCkge1xuXHRcdFx0c2lkZUVmZmVjdFByb21pc2VzLnB1c2goXG5cdFx0XHRcdHNpZGVFZmZlY3RTZXJ2aWNlLnJlcXVlc3RTaWRlRWZmZWN0cyhzaWRlRWZmZWN0c0Zyb21BY3Rpb24ucGF0aEV4cHJlc3Npb25zLCB0YXJnZXRDb250ZXh0LCBTWU5DR1JPVVBJRClcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cdGlmIChyZXF1ZXN0ZWRQcm9wZXJ0aWVzICYmIHJlcXVlc3RlZFByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuXHRcdC8vY2xlYW4tdXAgb2YgdGhlIHByb3BlcnRpZXMgdG8gcmVxdWVzdCBsaXN0OlxuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHZpZXcuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBtZXRhUGF0aEZvckFjdGlvbiA9IGNhbGN1bGF0ZU1ldGFQYXRoKHZpZXcsIHBhdGhGb3JBY3Rpb24pO1xuXHRcdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG1ldGFNb2RlbC5nZXRDb250ZXh0KG1ldGFQYXRoRm9yQWN0aW9uKSk7XG5cdFx0Y29uc3QgcHJvcGVydGllc1RvUmVxdWVzdCA9IGRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzXG5cdFx0XHQubWFwKChwcm9wZXJ0eTogUHJvcGVydHkpID0+IHtcblx0XHRcdFx0cmV0dXJuIHByb3BlcnR5Lm5hbWU7XG5cdFx0XHR9KVxuXHRcdFx0LmZpbHRlcigocHJvcCkgPT4gcmVxdWVzdGVkUHJvcGVydGllcy5pbmNsdWRlcyhwcm9wKSk7XG5cdFx0aWYgKHByb3BlcnRpZXNUb1JlcXVlc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0c2lkZUVmZmVjdFByb21pc2VzLnB1c2goc2lkZUVmZmVjdFNlcnZpY2UucmVxdWVzdFNpZGVFZmZlY3RzKHByb3BlcnRpZXNUb1JlcXVlc3QsIHRhcmdldENvbnRleHQsIFNZTkNHUk9VUElEKSk7XG5cdFx0fVxuXHR9XG5cblx0YXdhaXQgUHJvbWlzZS5hbGwoc2lkZUVmZmVjdFByb21pc2VzKTtcbn1cblxuLyoqXG4gKiBGaW5kcyBhIGNvbnRleHQgdG8gYXBwbHkgYW4gdXBkYXRlIG1lc3NhZ2UgKENIQU5HRSwgQ1JFQVRFLCBERUxFVEUgb3IgQUNUSU9OKS5cbiAqXG4gKiBAcGFyYW0gdmlldyAgVGhlIHZpZXcgdGhhdCB3YXMgdXNlZCBpbml0aWFsbHkgd2hlbiBjb25uZWN0aW5nIHRoZSB3ZWJzb2NrZXRcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBjb250ZXh0IHRvIGJlIGZvdW5kIChzaGFsbCBwb2ludCB0byBhbiBlbnRpdHksIG5vdCBhIHByb3BlcnR5KVxuICogQHJldHVybnMgQSBjb250ZXh0IGlmIGl0IGNvdWxkIGJlIGZvdW5kXG4gKi9cbmZ1bmN0aW9uIGZpbmRDb250ZXh0Rm9yVXBkYXRlKHZpZXc6IFZpZXcsIHBhdGg6IHN0cmluZyk6IENvbnRleHQgfCB1bmRlZmluZWQge1xuXHRpZiAoIXBhdGgpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdC8vIEZpbmQgYWxsIHBvdGVudGlhbCBwYXRoc1xuXHRjb25zdCB0YXJnZXRQYXRoczogc3RyaW5nW10gPSBbXTtcblx0d2hpbGUgKCFwYXRoLmVuZHNXaXRoKFwiKVwiKSkge1xuXHRcdHRhcmdldFBhdGhzLnVuc2hpZnQocGF0aCk7XG5cdFx0cGF0aCA9IHBhdGguc3Vic3RyaW5nKDAsIHBhdGgubGFzdEluZGV4T2YoXCIvXCIpKTtcblx0fVxuXHR0YXJnZXRQYXRocy51bnNoaWZ0KHBhdGgpO1xuXG5cdGNvbnN0IHBhcmVudENvbGxlY3Rpb25QYXRoID0gcGF0aC5zdWJzdHJpbmcoMCwgcGF0aC5sYXN0SW5kZXhPZihcIihcIikpOyAvLyBSZW1vdmUgdGhlIGxhc3Qga2V5XG5cblx0bGV0IHRhcmdldENvbnRleHQ6IENvbnRleHQgfCB1bmRlZmluZWQ7XG5cdGxldCBjdXJyZW50Q29udGV4dCA9IGdldEN1cnJlbnRQYWdlKHZpZXcpLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dCB8IHVuZGVmaW5lZDtcblx0d2hpbGUgKGN1cnJlbnRDb250ZXh0ICYmICF0YXJnZXRDb250ZXh0KSB7XG5cdFx0aWYgKHRhcmdldFBhdGhzLmluZGV4T2YoY3VycmVudENvbnRleHQuZ2V0UGF0aCgpKSA+PSAwKSB7XG5cdFx0XHR0YXJnZXRDb250ZXh0ID0gY3VycmVudENvbnRleHQ7XG5cdFx0fVxuXG5cdFx0Y3VycmVudENvbnRleHQgPSBjdXJyZW50Q29udGV4dC5nZXRCaW5kaW5nKCk/LmdldENvbnRleHQoKSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkO1xuXHR9XG5cblx0aWYgKHRhcmdldENvbnRleHQpIHtcblx0XHQvLyBGb3VuZCAhXG5cdFx0cmV0dXJuIHRhcmdldENvbnRleHQ7XG5cdH1cblxuXHQvLyBUcnkgdG8gZmluZCB0aGUgdGFyZ2V0IGNvbnRleHQgaW4gYSBsaXN0QmluZGluZ1xuXHRjb25zdCBtb2RlbCA9IGdldEN1cnJlbnRQYWdlKHZpZXcpLmdldEJpbmRpbmdDb250ZXh0KCkuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsO1xuXHRjb25zdCBwYXJlbnRMaXN0QmluZGluZyA9IG1vZGVsLmdldEFsbEJpbmRpbmdzKCkuZmluZCgoYmluZGluZykgPT4ge1xuXHRcdGNvbnN0IGJpbmRpbmdQYXRoID0gYmluZGluZy5pc1JlbGF0aXZlKCkgPyBiaW5kaW5nLmdldFJlc29sdmVkUGF0aCgpIDogYmluZGluZy5nZXRQYXRoKCk7XG5cdFx0cmV0dXJuIGJpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikgJiYgYmluZGluZ1BhdGggPT09IHBhcmVudENvbGxlY3Rpb25QYXRoO1xuXHR9KSBhcyBPRGF0YUxpc3RCaW5kaW5nIHwgdW5kZWZpbmVkO1xuXHQvLyBXZSd2ZSBmb3VuZCBhIGxpc3QgYmluZGluZyB0aGF0IGNvdWxkIGNvbnRhaW4gdGhlIHRhcmdldCBjb250ZXh0IC0tPiBsb29rIGZvciBpdFxuXHR0YXJnZXRDb250ZXh0ID0gcGFyZW50TGlzdEJpbmRpbmc/LmdldEFsbEN1cnJlbnRDb250ZXh0cygpLmZpbmQoKGNvbnRleHQpID0+IHtcblx0XHRyZXR1cm4gdGFyZ2V0UGF0aHMuaW5kZXhPZihjb250ZXh0LmdldFBhdGgoKSkgPj0gMDtcblx0fSk7XG5cblx0cmV0dXJuIHRhcmdldENvbnRleHQ7XG59XG5cbmZ1bmN0aW9uIG5hdmlnYXRlKHBhdGg6IHN0cmluZywgdmlldzogRkVWaWV3KSB7XG5cdC8vIFRPRE86IHJvdXRpbmcubmF2aWdhdGUgZG9lc24ndCBjb25zaWRlciBzZW1hbnRpYyBib29rbWFya2luZ1xuXHRjb25zdCBjdXJyZW50UGFnZSA9IGdldEN1cnJlbnRQYWdlKHZpZXcpO1xuXHRjb25zdCB0YXJnZXRDb250ZXh0ID0gdmlldy5nZXRNb2RlbCgpLmJpbmRDb250ZXh0KHBhdGgpLmdldEJvdW5kQ29udGV4dCgpO1xuXHRjdXJyZW50UGFnZS5nZXRDb250cm9sbGVyKCkucm91dGluZy5uYXZpZ2F0ZSh0YXJnZXRDb250ZXh0KTtcbn1cblxuZnVuY3Rpb24gZ2V0Q3VycmVudFBhZ2UodmlldzogVmlldykge1xuXHRjb25zdCBhcHBDb21wb25lbnQgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHZpZXcpO1xuXHRyZXR1cm4gQ29tbW9uVXRpbHMuZ2V0Q3VycmVudFBhZ2VWaWV3KGFwcENvbXBvbmVudCk7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgbWV0YXBhdGggZnJvbSBvbmUgb3IgbW9yZSBkYXRhIHBhdGgocykuXG4gKlxuICogQHBhcmFtIHZpZXcgVGhlIGN1cnJlbnQgdmlld1xuICogQHBhcmFtIHBhdGggT25lIG9yZSBtb3JlIGRhdGEgcGF0aChzKSwgaW4gY2FzZSBvZiBtdWx0aXBsZSBwYXRocyBzZXBhcmF0ZWQgYnkgJ3wnXG4gKiBAcmV0dXJucyBUaGUgY2FsY3VsYXRlZCBtZXRhUGF0aFxuICovXG5mdW5jdGlvbiBjYWxjdWxhdGVNZXRhUGF0aCh2aWV3OiBGRVZpZXcsIHBhdGg/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRsZXQgbWV0YVBhdGggPSBcIlwiO1xuXHRpZiAocGF0aCkge1xuXHRcdC8vIGluIGNhc2UgbW9yZSB0aGFuIG9uZSBwYXRoIGlzIHNlbnQgYWxsIG9mIHRoZW0gaGF2ZSB0byB1c2UgdGhlIHNhbWUgbWV0YXBhdGggdGhlcmVmb3JlIHdlIGp1c3QgY29uc2lkZXIgdGhlIGZpcnN0IG9uZVxuXHRcdGNvbnN0IGRhdGFQYXRoID0gcGF0aC5zcGxpdChcInxcIilbMF07XG5cdFx0bWV0YVBhdGggPSB2aWV3LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkuZ2V0TWV0YVBhdGgoZGF0YVBhdGgpO1xuXHR9XG5cdHJldHVybiBtZXRhUGF0aDtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuXHRjb25uZWN0OiBjb25uZWN0LFxuXHRkaXNjb25uZWN0OiBkaXNjb25uZWN0LFxuXHRpc0Nvbm5lY3RlZDogaXNDb25uZWN0ZWQsXG5cdGlzQ29sbGFib3JhdGlvbkVuYWJsZWQ6IGlzQ29sbGFib3JhdGlvbkVuYWJsZWQsXG5cdHNlbmQ6IHNlbmRcbn07XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7OztFQXVCQSxNQUFNQSxVQUFVLEdBQUcsMkJBQTJCO0VBQzlDLE1BQU1DLFdBQVcsR0FBRyw0QkFBNEI7RUFDaEQsTUFBTUMsVUFBVSxHQUFHLDJCQUEyQjtFQUM5QyxNQUFNQyxXQUFXLEdBQUcsWUFBWTtFQUV6QixNQUFNQyxXQUFXLEdBQUcsVUFBVUMsT0FBZ0IsRUFBVztJQUMvRCxNQUFNQyxhQUFhLEdBQUdELE9BQU8sQ0FBQ0UsUUFBUSxDQUFDLFVBQVUsQ0FBYztJQUMvRCxPQUFPQyx3QkFBd0IsQ0FBQ0YsYUFBYSxDQUFDO0VBQy9DLENBQUM7RUFBQztFQUVLLE1BQU1HLElBQUksR0FBRyxVQUNuQkosT0FBZ0IsRUFDaEJLLE1BQWdCLEVBQ2hCQyxPQUFzQyxFQUN0Q0MsbUJBQTRCLEVBQzVCQyxrQkFBNEIsRUFDNUJDLHlCQUFvQyxFQUNuQztJQUNELElBQUlWLFdBQVcsQ0FBQ0MsT0FBTyxDQUFDLEVBQUU7TUFDekIsTUFBTUMsYUFBYSxHQUFHRCxPQUFPLENBQUNFLFFBQVEsQ0FBQyxVQUFVLENBQWM7TUFDL0QsTUFBTVEsYUFBYSxHQUFHQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ04sT0FBTyxDQUFDLEdBQUdBLE9BQU8sQ0FBQ08sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHUCxPQUFPO01BQzFFLE1BQU1RLG1CQUFtQixHQUFHTCx5QkFBeUIsYUFBekJBLHlCQUF5Qix1QkFBekJBLHlCQUF5QixDQUFFSSxJQUFJLENBQUMsR0FBRyxDQUFDO01BQ2hFLE1BQU1FLFVBQVUsR0FBR2QsYUFBYSxDQUFDZSxXQUFXLENBQUNyQixVQUFVLENBQUM7TUFDeEQsSUFBSVUsTUFBTSxLQUFLWSxRQUFRLENBQUNDLFVBQVUsRUFBRTtRQUNuQzs7UUFFQSxJQUFJSCxVQUFVLEtBQUtMLGFBQWEsRUFBRTtVQUNqQztRQUNELENBQUMsTUFBTTtVQUNOVCxhQUFhLENBQUNrQixXQUFXLENBQUN4QixVQUFVLEVBQUVlLGFBQWEsQ0FBQztRQUNyRDtNQUNELENBQUMsTUFBTTtRQUNOO1FBQ0EsSUFBSUwsTUFBTSxLQUFLWSxRQUFRLENBQUNHLElBQUksSUFBSUwsVUFBVSxLQUFLLElBQUksRUFBRTtVQUNwRDtRQUNEOztRQUVBO1FBQ0FkLGFBQWEsQ0FBQ2tCLFdBQVcsQ0FBQ3hCLFVBQVUsRUFBRSxJQUFJLENBQUM7TUFDNUM7TUFFQTBCLDZCQUE2QixDQUFDaEIsTUFBTSxFQUFFSyxhQUFhLEVBQUVULGFBQWEsRUFBRU0sbUJBQW1CLEVBQUVDLGtCQUFrQixFQUFFTSxtQkFBbUIsQ0FBQztJQUNsSTtFQUNELENBQUM7RUFBQztFQUVGLE1BQU1RLG1CQUFtQixHQUFHLFVBQVVDLGNBQXVCLEVBQVU7SUFDdEUsT0FBT0EsY0FBYyxDQUFDckIsUUFBUSxFQUFFLENBQUNzQixZQUFZLEVBQUUsQ0FBQ0MsU0FBUyxDQUFDLG1EQUFtRCxDQUFDO0VBQy9HLENBQUM7RUFFTSxNQUFNQyxzQkFBc0IsR0FBRyxVQUFVQyxJQUFVLEVBQVc7SUFDcEUsTUFBTUosY0FBYyxHQUFHLENBQUFJLElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFQyxpQkFBaUIsS0FBS0QsSUFBSSxDQUFDQyxpQkFBaUIsRUFBYztJQUN2RixPQUFPLENBQUMsRUFBRUwsY0FBYyxJQUFJRCxtQkFBbUIsQ0FBQ0MsY0FBYyxDQUFDLENBQUM7RUFDakUsQ0FBQztFQUFDO0VBRUssTUFBTU0sT0FBTyxHQUFHLGdCQUFnQkYsSUFBWSxFQUFFO0lBQ3BELE1BQU0xQixhQUFhLEdBQUcwQixJQUFJLENBQUN6QixRQUFRLENBQUMsVUFBVSxDQUFDO0lBQy9DLE1BQU00QixFQUFFLEdBQUdDLGtCQUFrQixDQUFDQyxLQUFLLENBQUNMLElBQUksQ0FBQzs7SUFFekM7SUFDQSxJQUFJLENBQUNHLEVBQUUsRUFBRTtNQUNSO01BQ0E7SUFDRDtJQUVBLE1BQU1QLGNBQWMsR0FBR0ksSUFBSSxDQUFDQyxpQkFBaUIsRUFBYTtJQUMxRCxNQUFNSyxnQkFBZ0IsR0FBR1gsbUJBQW1CLENBQUNDLGNBQWMsQ0FBQztJQUM1RCxNQUFNVyxVQUFVLEdBQUdYLGNBQWMsQ0FBQ3JCLFFBQVEsRUFBRSxDQUFDaUMsYUFBYSxFQUFFO0lBRTVELElBQUksQ0FBQ0YsZ0JBQWdCLEVBQUU7TUFDdEI7SUFDRDtJQUVBLE1BQU1HLFVBQVUsR0FBRyxNQUFNYixjQUFjLENBQUNjLGVBQWUsQ0FBQyxtQ0FBbUMsQ0FBQztJQUM1RixJQUFJLENBQUNELFVBQVUsRUFBRTtNQUNoQjtJQUNEO0lBRUFFLHVCQUF1QixDQUFDUixFQUFFLEVBQUVHLGdCQUFnQixFQUFFRyxVQUFVLEVBQUVGLFVBQVUsRUFBRWpDLGFBQWEsRUFBR3NDLE9BQWdCLElBQUs7TUFDMUdDLGNBQWMsQ0FBQ0QsT0FBTyxFQUFFWixJQUFJLENBQUM7SUFDOUIsQ0FBQyxDQUFDO0lBQ0YxQixhQUFhLENBQUNrQixXQUFXLENBQUN4QixVQUFVLEVBQUUsSUFBSSxDQUFDO0VBQzVDLENBQUM7RUFBQztFQUVLLE1BQU04QyxVQUFVLEdBQUcsVUFBVXpDLE9BQWdCLEVBQUU7SUFDckQsTUFBTUMsYUFBYSxHQUFHRCxPQUFPLENBQUNFLFFBQVEsQ0FBQyxVQUFVLENBQWM7SUFDL0R3QyxnQkFBZ0IsQ0FBQ3pDLGFBQWEsQ0FBQztFQUNoQyxDQUFDOztFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUxBO0VBTUEsU0FBU3VDLGNBQWMsQ0FBQ0QsT0FBZ0IsRUFBRVosSUFBWSxFQUFFO0lBQUE7SUFDdkQsTUFBTTFCLGFBQWtCLEdBQUcwQixJQUFJLENBQUN6QixRQUFRLENBQUMsVUFBVSxDQUFDO0lBQ3BELElBQUl5QyxXQUFtQixHQUFHMUMsYUFBYSxDQUFDZSxXQUFXLENBQUNwQixXQUFXLENBQUM7SUFDaEUsSUFBSWdELFVBQTBCO0lBQzlCLElBQUlDLFdBQW1CO0lBQ3ZCLE1BQU1DLFFBQVEsR0FBR0MsaUJBQWlCLENBQUNwQixJQUFJLEVBQUVZLE9BQU8sQ0FBQzdCLGFBQWEsQ0FBQztJQUMvRDZCLE9BQU8sQ0FBQ1MsVUFBVSxHQUFHVCxPQUFPLENBQUNTLFVBQVUsSUFBSVQsT0FBTyxDQUFDVSxZQUFZO0lBRS9ELE1BQU1DLE1BQVksR0FBRztNQUNwQkMsRUFBRSxFQUFFWixPQUFPLENBQUNhLE1BQU07TUFDbEJDLElBQUksRUFBRWQsT0FBTyxDQUFDZSxlQUFlO01BQzdCQyxRQUFRLEVBQUV4QixrQkFBa0IsQ0FBQ3lCLGNBQWMsQ0FBQ2pCLE9BQU8sQ0FBQ2UsZUFBZSxDQUFDO01BQ3BFRyxLQUFLLEVBQUUxQixrQkFBa0IsQ0FBQzJCLFlBQVksQ0FBQ25CLE9BQU8sQ0FBQ2EsTUFBTSxFQUFFVCxXQUFXLEVBQUUsRUFBRTtJQUN2RSxDQUFDO0lBRUQsSUFBSWdCLFNBQXVCLEdBQUdULE1BQU07O0lBRXBDO0lBQ0EsUUFBUVgsT0FBTyxDQUFDUyxVQUFVO01BQ3pCLEtBQUsvQixRQUFRLENBQUMyQyxJQUFJO01BQ2xCLEtBQUszQyxRQUFRLENBQUM0QyxRQUFRO1FBQ3JCLElBQUlsQixXQUFXLENBQUNtQixTQUFTLENBQUVDLElBQUksSUFBS0EsSUFBSSxDQUFDWixFQUFFLEtBQUtELE1BQU0sQ0FBQ0MsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7VUFDbEVSLFdBQVcsQ0FBQ3FCLE9BQU8sQ0FBQ2QsTUFBTSxDQUFDO1VBQzNCakQsYUFBYSxDQUFDa0IsV0FBVyxDQUFDdkIsV0FBVyxFQUFFK0MsV0FBVyxDQUFDO1FBQ3BEO1FBRUEsSUFBSUosT0FBTyxDQUFDUyxVQUFVLEtBQUsvQixRQUFRLENBQUMyQyxJQUFJLEVBQUU7VUFDekM7VUFDQXZDLDZCQUE2QixDQUFDSixRQUFRLENBQUM0QyxRQUFRLEVBQUU1RCxhQUFhLENBQUNlLFdBQVcsQ0FBQ3JCLFVBQVUsQ0FBQyxFQUFFTSxhQUFhLENBQUM7UUFDdkc7UUFFQSxJQUFJc0MsT0FBTyxDQUFDUyxVQUFVLEtBQUsvQixRQUFRLENBQUM0QyxRQUFRLEVBQUU7VUFDN0MsSUFBSXRCLE9BQU8sQ0FBQzdCLGFBQWEsRUFBRTtZQUMxQjtZQUNBNkIsT0FBTyxDQUFDUyxVQUFVLEdBQUcvQixRQUFRLENBQUNDLFVBQVU7WUFDeENzQixjQUFjLENBQUNELE9BQU8sRUFBRVosSUFBSSxDQUFDO1VBQzlCO1FBQ0Q7UUFFQTtNQUVELEtBQUtWLFFBQVEsQ0FBQ2dELEtBQUs7UUFDbEI7UUFDQXRCLFdBQVcsR0FBR0EsV0FBVyxDQUFDdUIsTUFBTSxDQUFFSCxJQUFJLElBQUtBLElBQUksQ0FBQ1osRUFBRSxLQUFLRCxNQUFNLENBQUNDLEVBQUUsSUFBSVksSUFBSSxDQUFDakMsRUFBRSxDQUFDO1FBQzVFN0IsYUFBYSxDQUFDa0IsV0FBVyxDQUFDdkIsV0FBVyxFQUFFK0MsV0FBVyxDQUFDO1FBQ25ELE1BQU13QixhQUFhLEdBQUdsRSxhQUFhLENBQUNlLFdBQVcsQ0FBQ25CLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRSxNQUFNdUUsb0JBQW9CLEdBQUcsVUFBVUMsR0FBUSxFQUFFO1VBQ2hELElBQUkxRCxLQUFLLENBQUNDLE9BQU8sQ0FBQ3lELEdBQUcsQ0FBQyxFQUFFO1lBQ3ZCLE9BQU9BLEdBQUcsQ0FBQ0gsTUFBTSxDQUFFSSxRQUFRLElBQUtBLFFBQVEsQ0FBQ25CLEVBQUUsS0FBS0QsTUFBTSxDQUFDQyxFQUFFLENBQUM7VUFDM0QsQ0FBQyxNQUFNO1lBQ04sS0FBSyxNQUFNb0IsQ0FBQyxJQUFJRixHQUFHLEVBQUU7Y0FDcEJBLEdBQUcsQ0FBQ0UsQ0FBQyxDQUFDLEdBQUdILG9CQUFvQixDQUFDQyxHQUFHLENBQUNFLENBQUMsQ0FBQyxDQUFDO1lBQ3RDO1lBQ0EsT0FBT0YsR0FBRztVQUNYO1FBQ0QsQ0FBQztRQUNERCxvQkFBb0IsQ0FBQ0QsYUFBYSxDQUFDO1FBQ25DbEUsYUFBYSxDQUFDa0IsV0FBVyxDQUFDdEIsVUFBVSxFQUFFc0UsYUFBYSxDQUFDO1FBQ3BEO01BRUQsS0FBS2xELFFBQVEsQ0FBQ3VELE1BQU07UUFDbkJDLGNBQWMsQ0FBQzlDLElBQUksRUFBRVksT0FBTyxDQUFDO1FBQzdCO01BRUQsS0FBS3RCLFFBQVEsQ0FBQ3lELE1BQU07UUFDbkI7UUFDQUMsY0FBYyxDQUFDaEQsSUFBSSxFQUFFWSxPQUFPLENBQUM7UUFDN0I7TUFFRCxLQUFLdEIsUUFBUSxDQUFDMkQsTUFBTTtRQUNuQjtRQUNBQyxjQUFjLENBQUNsRCxJQUFJLEVBQUVZLE9BQU8sQ0FBQztRQUM3QjtNQUVELEtBQUt0QixRQUFRLENBQUM2RCxRQUFRO1FBQ3JCQyxzQkFBc0IsQ0FBQ3BELElBQUksRUFBRVksT0FBTyxDQUFDN0IsYUFBYSxFQUFFcUIsa0JBQWtCLENBQUNpRCxPQUFPLENBQUMsK0JBQStCLEVBQUU5QixNQUFNLENBQUNHLElBQUksQ0FBQyxDQUFDO1FBQzdIO01BRUQsS0FBS3BDLFFBQVEsQ0FBQ2dFLE9BQU87UUFDcEJGLHNCQUFzQixDQUFDcEQsSUFBSSxFQUFFWSxPQUFPLENBQUM3QixhQUFhLEVBQUVxQixrQkFBa0IsQ0FBQ2lELE9BQU8sQ0FBQyw4QkFBOEIsRUFBRTlCLE1BQU0sQ0FBQ0csSUFBSSxDQUFDLENBQUM7UUFDNUg7TUFFRCxLQUFLcEMsUUFBUSxDQUFDaUUsTUFBTTtRQUNuQkMsY0FBYyxDQUFDeEQsSUFBSSxFQUFFWSxPQUFPLENBQUM7UUFDN0I7TUFFRCxLQUFLdEIsUUFBUSxDQUFDQyxVQUFVO1FBQ3ZCeUMsU0FBUyxHQUFHVCxNQUFNO1FBQ2xCUyxTQUFTLENBQUN5QixHQUFHLEdBQUdDLHNCQUFzQixDQUFDOUMsT0FBTyxDQUFDN0IsYUFBYSxDQUFDOztRQUU3RDtRQUNBLElBQUk0RSxhQUFxQixHQUFHLEVBQUU7UUFDOUIsTUFBTUMsS0FBSyxHQUFHekMsUUFBUSxDQUFDMEMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUNqQyxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR0YsS0FBSyxDQUFDRyxNQUFNLEdBQUcsQ0FBQyxFQUFFRCxDQUFDLEVBQUUsRUFBRTtVQUMxQ0gsYUFBYSxJQUFLLElBQUdDLEtBQUssQ0FBQ0UsQ0FBQyxDQUFFLEVBQUM7VUFDL0IsSUFBSSxDQUFDeEYsYUFBYSxDQUFDZSxXQUFXLENBQUNuQixVQUFVLEdBQUd5RixhQUFhLENBQUMsRUFBRTtZQUMzRHJGLGFBQWEsQ0FBQ2tCLFdBQVcsQ0FBQ3RCLFVBQVUsR0FBR3lGLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztVQUMxRDtRQUNEO1FBRUExQyxVQUFVLEdBQUczQyxhQUFhLENBQUNlLFdBQVcsQ0FBQ25CLFVBQVUsR0FBR2lELFFBQVEsQ0FBQztRQUM3REYsVUFBVSxHQUFHLGVBQUFBLFVBQVUsd0NBQVYsWUFBWStDLEtBQUssR0FBRy9DLFVBQVUsQ0FBQytDLEtBQUssRUFBRSxHQUFHLEVBQUU7UUFDeEQvQyxVQUFVLENBQUNnRCxJQUFJLENBQUNqQyxTQUFTLENBQUM7UUFDMUIxRCxhQUFhLENBQUNrQixXQUFXLENBQUN0QixVQUFVLEdBQUdpRCxRQUFRLEVBQUVGLFVBQVUsQ0FBQztRQUM1RDtNQUVELEtBQUszQixRQUFRLENBQUNHLElBQUk7UUFDakI7UUFDQXdCLFVBQVUsR0FBRzNDLGFBQWEsQ0FBQ2UsV0FBVyxDQUFDbkIsVUFBVSxHQUFHaUQsUUFBUSxDQUFDO1FBQzdERCxXQUFXLEdBQUd3QyxzQkFBc0IsQ0FBQzlDLE9BQU8sQ0FBQzdCLGFBQWEsQ0FBQztRQUMzRFQsYUFBYSxDQUFDa0IsV0FBVyxDQUN4QnRCLFVBQVUsR0FBR2lELFFBQVEsRUFDckJGLFVBQVUsQ0FBQ3NCLE1BQU0sQ0FBRTJCLENBQUMsSUFBS0EsQ0FBQyxDQUFDVCxHQUFHLEtBQUt2QyxXQUFXLENBQUMsQ0FDL0M7UUFDRDtJQUFNO0VBRVQ7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTa0Msc0JBQXNCLENBQUNwRCxJQUFZLEVBQUVtRSxJQUFZLEVBQUVDLFdBQW1CLEVBQUU7SUFDaEZ0RCxVQUFVLENBQUNkLElBQUksQ0FBQztJQUNoQnFFLFVBQVUsQ0FBQ0MsV0FBVyxDQUFDRixXQUFXLENBQUM7SUFDbENwRSxJQUFJLENBQUNDLGlCQUFpQixFQUFFLENBQ3ZCc0UsVUFBVSxFQUFFLENBQ1pDLFlBQVksRUFBRSxDQUNkQyxJQUFJLENBQUMsWUFBWTtNQUNqQkMsUUFBUSxDQUFDUCxJQUFJLEVBQUVuRSxJQUFJLENBQUM7SUFDckIsQ0FBQyxDQUFDLENBQ0QyRSxLQUFLLENBQUMsWUFBWTtNQUNsQkMsR0FBRyxDQUFDQyxLQUFLLENBQUMsMEVBQTBFLENBQUM7TUFDckZILFFBQVEsQ0FBQ1AsSUFBSSxFQUFFbkUsSUFBSSxDQUFDO0lBQ3JCLENBQUMsQ0FBQztFQUNKOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVM4QyxjQUFjLENBQUM5QyxJQUFZLEVBQUVZLE9BQWdCLEVBQUU7SUFDdkQsTUFBTWtFLG1CQUFtQixHQUFHbEUsT0FBTyxDQUFDN0IsYUFBYSxDQUFDOEUsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUM1RCxNQUFNa0IsU0FBUyxHQUFHL0UsSUFBSSxDQUFDekIsUUFBUSxFQUFFLENBQUNzQixZQUFZLEVBQUU7SUFDaEQsTUFBTXZCLGFBQWEsR0FBRzBCLElBQUksQ0FBQ3pCLFFBQVEsQ0FBQyxVQUFVLENBQUM7O0lBRS9DO0lBQ0F1RyxtQkFBbUIsQ0FBQ0UsT0FBTyxDQUFFQyxXQUFXLElBQUs7TUFBQTtNQUM1QyxNQUFNQyxlQUFlLEdBQUdILFNBQVMsQ0FBQ0ksV0FBVyxDQUFDRixXQUFXLENBQUM7TUFDMUQsTUFBTS9ELFdBQVcsR0FBR3dDLHNCQUFzQixDQUFDdUIsV0FBVyxDQUFDO01BQ3ZELElBQUlHLGlCQUF3QixHQUFHOUcsYUFBYSxDQUFDZSxXQUFXLENBQUNuQixVQUFVLEdBQUdnSCxlQUFlLENBQUMsSUFBSSxFQUFFO01BQzVGRSxpQkFBaUIsR0FBRyx1QkFBQUEsaUJBQWlCLHVEQUFqQixtQkFBbUI3QyxNQUFNLEtBQUk2QyxpQkFBaUIsQ0FBQzdDLE1BQU0sQ0FBRUksUUFBUSxJQUFLQSxRQUFRLENBQUNjLEdBQUcsS0FBS3ZDLFdBQVcsQ0FBQztNQUNySCxJQUFJa0UsaUJBQWlCLEVBQUU7UUFDdEI5RyxhQUFhLENBQUNrQixXQUFXLENBQUN0QixVQUFVLEdBQUdnSCxlQUFlLEVBQUVFLGlCQUFpQixDQUFDO01BQzNFO0lBQ0QsQ0FBQyxDQUFDO0lBRUYsTUFBTUMsV0FBVyxHQUFHQyxjQUFjLENBQUN0RixJQUFJLENBQUM7SUFDeEMsTUFBTXVGLGNBQWMsR0FBR0YsV0FBVyxDQUFDcEYsaUJBQWlCLEVBQXlCO0lBQzdFLE1BQU11RixlQUFlLEdBQUdWLG1CQUFtQixDQUFDVyxHQUFHLENBQUV0QixJQUFJLElBQUt1QixxQkFBcUIsQ0FBQzFGLElBQUksRUFBRW1FLElBQUksQ0FBQyxDQUFDOztJQUU1RjtJQUNBa0IsV0FBVyxDQUFDTSxhQUFhLEVBQUUsQ0FBQ0MsUUFBUSxDQUFDQyxjQUFjLENBQUNOLGNBQWMsRUFBRU8sT0FBTyxDQUFDQyxHQUFHLENBQUNQLGVBQWUsQ0FBQyxDQUFDO0VBQ2xHOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsZUFBZUUscUJBQXFCLENBQUMxRixJQUFZLEVBQUVnRyxxQkFBNkIsRUFBaUI7SUFDaEcsTUFBTWpCLFNBQVMsR0FBRy9FLElBQUksQ0FBQ3pCLFFBQVEsRUFBRSxDQUFDc0IsWUFBWSxFQUFFO0lBQ2hELE1BQU1vRyxXQUFXLEdBQUdsQixTQUFTLENBQUNtQixjQUFjLENBQUNGLHFCQUFxQixDQUFDO0lBQ25FLE1BQU1HLGVBQWUsR0FBR0Msa0JBQWtCLENBQUNDLDJCQUEyQixDQUFDSixXQUFXLENBQUM7SUFDbkYsTUFBTUssaUJBQWlCLEdBQUdOLHFCQUFxQixDQUFDTyxTQUFTLENBQUMsQ0FBQyxFQUFFUCxxQkFBcUIsQ0FBQ1EsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RyxNQUFNQyxhQUFhLEdBQUdDLG9CQUFvQixDQUFDMUcsSUFBSSxFQUFFc0csaUJBQWlCLENBQUM7SUFDbkUsTUFBTUssb0JBQW9CLEdBQUdMLGlCQUFpQixDQUFDQyxTQUFTLENBQUMsQ0FBQyxFQUFFRCxpQkFBaUIsQ0FBQ0UsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9GLE1BQU1JLGlCQUFpQixHQUFHRCxvQkFBb0IsQ0FBQ0osU0FBUyxDQUFDLENBQUMsRUFBRUksb0JBQW9CLENBQUNILFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRyxNQUFNSyxhQUFhLEdBQUdELGlCQUFpQixHQUFHRixvQkFBb0IsQ0FBQzFHLElBQUksRUFBRTRHLGlCQUFpQixDQUFDLEdBQUdFLFNBQVM7SUFFbkcsSUFBSSxDQUFDTCxhQUFhLElBQUksQ0FBQ0ksYUFBYSxFQUFFO01BQ3JDLE9BQU8sQ0FBQztJQUNUOztJQUVBLElBQUk7TUFDSCxNQUFNRSxtQkFBbUMsR0FBRyxFQUFFO01BQzlDLE1BQU1DLGtCQUFrQixHQUFHNUcsa0JBQWtCLENBQUM2RyxlQUFlLENBQUNqSCxJQUFJLENBQUMsQ0FBQ2tILHFCQUFxQixFQUFFO01BRTNGLElBQUlULGFBQWEsRUFBRTtRQUNsQjtRQUNBLE1BQU1VLGNBQWMsR0FBR3BDLFNBQVMsQ0FBQ0ksV0FBVyxDQUFDc0IsYUFBYSxDQUFDVyxPQUFPLEVBQUUsQ0FBQztRQUNyRSxNQUFNQyx5QkFBeUIsR0FBR3RDLFNBQVMsQ0FBQ0ksV0FBVyxDQUFDYSxxQkFBcUIsQ0FBQyxDQUFDc0IsT0FBTyxDQUFDSCxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUNuRCxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ25IK0MsbUJBQW1CLENBQUM5QyxJQUFJLENBQUMrQyxrQkFBa0IsQ0FBQ08sa0JBQWtCLENBQUMsQ0FBQ0YseUJBQXlCLENBQUMsRUFBRVosYUFBYSxFQUFFdEksV0FBVyxDQUFDLENBQUM7TUFDekg7O01BRUE7TUFDQSxNQUFNcUosYUFBYSxHQUFHUixrQkFBa0IsQ0FBQ1Msb0JBQW9CLENBQzVEdEIsZUFBZSxDQUFDdUIsZ0JBQWdCLENBQUNDLGtCQUFrQixFQUNuRHhCLGVBQWUsQ0FBQ3lCLFlBQVksQ0FBQ0Qsa0JBQWtCLENBQy9DOztNQUVEO01BQ0EsSUFBSUgsYUFBYSxDQUFDekQsTUFBTSxFQUFFO1FBQ3pCLE1BQU04RCxjQUFjLEdBQUc3SCxJQUFJLENBQUMyRixhQUFhLEVBQW9CO1FBQzdELE1BQU1tQywyQkFBMkIsR0FBR0QsY0FBYyxDQUFDRSxZQUFZLENBQUNDLCtCQUErQixDQUM5RlIsYUFBYSxFQUNiZixhQUFhLElBQUlJLGFBQWEsQ0FDRDtRQUM5Qm9CLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDSiwyQkFBMkIsQ0FBQyxDQUFDOUMsT0FBTyxDQUFFbUQsY0FBYyxJQUFLO1VBQ3BFLE1BQU1DLFVBQVUsR0FBR04sMkJBQTJCLENBQUNLLGNBQWMsQ0FBQztVQUM5RHBCLG1CQUFtQixDQUFDOUMsSUFBSSxDQUN2QjRELGNBQWMsQ0FBQ0UsWUFBWSxDQUFDUixrQkFBa0IsQ0FBQ2EsVUFBVSxDQUFDQyxXQUFXLEVBQUVELFVBQVUsQ0FBQ0UsT0FBTyxFQUFFbkssV0FBVyxDQUFDLENBQ3ZHO1FBQ0YsQ0FBQyxDQUFDO01BQ0g7TUFFQSxNQUFNMkgsT0FBTyxDQUFDQyxHQUFHLENBQUNnQixtQkFBbUIsQ0FBQztJQUN2QyxDQUFDLENBQUMsT0FBT3dCLEdBQUcsRUFBRTtNQUNiM0QsR0FBRyxDQUFDQyxLQUFLLENBQUMscUNBQXFDLEdBQUcwRCxHQUFHLENBQUM7TUFDdEQsTUFBTUEsR0FBRztJQUNWO0VBQ0Q7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU3JGLGNBQWMsQ0FBQ2xELElBQVUsRUFBRVksT0FBZ0IsRUFBRTtJQUNyRCxNQUFNeUUsV0FBVyxHQUFHQyxjQUFjLENBQUN0RixJQUFJLENBQUM7SUFDeEMsTUFBTXVGLGNBQWMsR0FBR0YsV0FBVyxDQUFDcEYsaUJBQWlCLEVBQWE7SUFDakUsTUFBTXVJLFdBQVcsR0FBR2pELGNBQWMsQ0FBQzZCLE9BQU8sRUFBRTtJQUU1QyxNQUFNcUIsa0JBQWtCLEdBQUc3SCxPQUFPLENBQUM3QixhQUFhLENBQUM4RSxLQUFLLENBQUMsR0FBRyxDQUFDOztJQUUzRDtJQUNBLE1BQU02RSxnQkFBZ0IsR0FBR0Qsa0JBQWtCLENBQUNFLElBQUksQ0FBRUMsV0FBVyxJQUFLSixXQUFXLENBQUNLLFVBQVUsQ0FBQ0QsV0FBVyxDQUFDLENBQUM7SUFDdEcsSUFBSUYsZ0JBQWdCLEVBQUU7TUFDckI7TUFDQXJFLFVBQVUsQ0FBQ0MsV0FBVyxDQUFDbEUsa0JBQWtCLENBQUNpRCxPQUFPLENBQUMsNkJBQTZCLEVBQUV6QyxPQUFPLENBQUNlLGVBQWUsQ0FBQyxFQUFFO1FBQzFHbUgsT0FBTyxFQUFFLE1BQU07VUFDZDtVQUNBO1VBQ0EsTUFBTXJDLGFBQWEsR0FBR2xCLGNBQWMsQ0FBQ2hILFFBQVEsRUFBRSxDQUFDd0ssbUJBQW1CLENBQUNMLGdCQUFnQixDQUFDO1VBQ3JGakMsYUFBYSxDQUFDdUMsWUFBWSxDQUFDLEtBQUssQ0FBQztVQUNqQyxNQUFNQyxjQUFjLEdBQUdDLHlCQUF5QixDQUFDbEosSUFBSSxFQUFFeUksa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFDN0VwRCxXQUFXLENBQUNNLGFBQWEsRUFBRSxDQUFDQyxRQUFRLENBQUNDLGNBQWMsQ0FBQ1IsV0FBVyxDQUFDcEYsaUJBQWlCLEVBQUUsRUFBRWdKLGNBQWMsQ0FBQztVQUNuRzVELFdBQVcsQ0FBQ00sYUFBYSxFQUFFLENBQW9Cd0QsUUFBUSxDQUFDQyx1QkFBdUIsQ0FBQzNDLGFBQWEsQ0FBQztRQUNoRztNQUNELENBQUMsQ0FBQztJQUNILENBQUMsTUFBTTtNQUNOLE1BQU13QyxjQUFjLEdBQUdDLHlCQUF5QixDQUFDbEosSUFBSSxFQUFFeUksa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDN0VwRCxXQUFXLENBQUNNLGFBQWEsRUFBRSxDQUFDQyxRQUFRLENBQUNDLGNBQWMsQ0FBQ1IsV0FBVyxDQUFDcEYsaUJBQWlCLEVBQUUsRUFBRWdKLGNBQWMsQ0FBQztJQUNyRztFQUNEOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNqRyxjQUFjLENBQUNoRCxJQUFVLEVBQUVZLE9BQWdCLEVBQUU7SUFDckQsTUFBTXlFLFdBQVcsR0FBR0MsY0FBYyxDQUFDdEYsSUFBSSxDQUFDO0lBQ3hDLE1BQU1xSixrQkFBa0IsR0FBR3pJLE9BQU8sQ0FBQzdCLGFBQWEsQ0FBQzhFLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFFM0QsTUFBTW9GLGNBQWMsR0FBR0MseUJBQXlCLENBQUNsSixJQUFJLEVBQUVxSixrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RTtJQUNBaEUsV0FBVyxDQUFDTSxhQUFhLEVBQUUsQ0FBQ0MsUUFBUSxDQUFDQyxjQUFjLENBQUNSLFdBQVcsQ0FBQ3BGLGlCQUFpQixFQUFFLEVBQUVnSixjQUFjLENBQUM7RUFDckc7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsZUFBZUMseUJBQXlCLENBQUNsSixJQUFVLEVBQUVzSixnQkFBd0IsRUFBRTtJQUM5RSxNQUFNQyxZQUFZLEdBQUduSixrQkFBa0IsQ0FBQzZHLGVBQWUsQ0FBQ2pILElBQUksQ0FBQztJQUM3RCxNQUFNd0osVUFBVSxHQUFHRixnQkFBZ0IsQ0FBQy9DLFNBQVMsQ0FBQyxDQUFDLEVBQUUrQyxnQkFBZ0IsQ0FBQzlDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRixNQUFNSyxhQUFhLEdBQUdILG9CQUFvQixDQUFDMUcsSUFBSSxFQUFFd0osVUFBVSxDQUFDO0lBRTVELElBQUkzQyxhQUFhLEVBQUU7TUFDbEIsSUFBSTtRQUNILE1BQU1FLG1CQUFtQyxHQUFHLEVBQUU7UUFFOUMsTUFBTWhDLFNBQVMsR0FBRzhCLGFBQWEsQ0FBQ3RJLFFBQVEsRUFBRSxDQUFDc0IsWUFBWSxFQUFFO1FBQ3pELE1BQU00SixpQkFBaUIsR0FBRzFFLFNBQVMsQ0FBQ0ksV0FBVyxDQUFDbUUsZ0JBQWdCLENBQUM7UUFDakUsTUFBTUksY0FBYyxHQUFHM0UsU0FBUyxDQUFDSSxXQUFXLENBQUMwQixhQUFhLENBQUNPLE9BQU8sRUFBRSxDQUFDO1FBQ3JFLE1BQU11QyxZQUFZLEdBQUdGLGlCQUFpQixDQUFDbkMsT0FBTyxDQUFFLEdBQUVvQyxjQUFlLEdBQUUsRUFBRSxFQUFFLENBQUM7O1FBRXhFO1FBQ0EsTUFBTTFDLGtCQUFrQixHQUFHdUMsWUFBWSxDQUFDckMscUJBQXFCLEVBQUU7UUFDL0RILG1CQUFtQixDQUFDOUMsSUFBSSxDQUFDK0Msa0JBQWtCLENBQUNPLGtCQUFrQixDQUFDLENBQUNvQyxZQUFZLENBQUMsRUFBRTlDLGFBQWEsRUFBRTFJLFdBQVcsQ0FBQyxDQUFDOztRQUUzRztRQUNBNEksbUJBQW1CLENBQUM5QyxJQUFJLENBQUMrQyxrQkFBa0IsQ0FBQzRDLHVDQUF1QyxDQUFDRCxZQUFZLEVBQUU5QyxhQUFhLEVBQUUxSSxXQUFXLENBQUMsQ0FBQztRQUU5SCxNQUFNMkgsT0FBTyxDQUFDQyxHQUFHLENBQUNnQixtQkFBbUIsQ0FBQztNQUN2QyxDQUFDLENBQUMsT0FBT3dCLEdBQUcsRUFBRTtRQUNiM0QsR0FBRyxDQUFDQyxLQUFLLENBQUMsZ0RBQWdELEdBQUcwRCxHQUFHLENBQUM7TUFDbEU7SUFDRDtFQUNEOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVMvRSxjQUFjLENBQUN4RCxJQUFZLEVBQUVZLE9BQWdCLEVBQUU7SUFBQTtJQUN2RCxNQUFNeUUsV0FBVyxHQUFHQyxjQUFjLENBQUN0RixJQUFJLENBQUM7SUFDeEMsTUFBTTZKLGNBQWMsR0FBR2pKLE9BQU8sQ0FBQzdCLGFBQWEsQ0FBQzhFLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFDdkQsTUFBTWlHLFVBQVUsR0FBR2xKLE9BQU8sQ0FBQ21KLHlCQUF5QixJQUFJLEVBQUU7SUFDMUQsTUFBTTVLLG1CQUFtQiw0QkFBR3lCLE9BQU8sQ0FBQ29KLHlCQUF5QiwwREFBakMsc0JBQW1DbkcsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUN6RSxNQUFNaEYsa0JBQWtCLEdBQUcrQixPQUFPLENBQUNxSix3QkFBd0IsS0FBSyxNQUFNO0lBRXRFLElBQUl6RSxlQUFnQyxHQUFHLEVBQUU7SUFFekMsSUFBSTNHLGtCQUFrQixFQUFFO01BQ3ZCMkcsZUFBZSxDQUFDdkIsSUFBSSxDQUFDaUYseUJBQXlCLENBQUNsSixJQUFJLEVBQUU2SixjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDLE1BQU07TUFDTnJFLGVBQWUsR0FBR3FFLGNBQWMsQ0FBQ3BFLEdBQUcsQ0FBRXRCLElBQUksSUFBSytGLHNCQUFzQixDQUFDbEssSUFBSSxFQUFFbUUsSUFBSSxFQUFFMkYsVUFBVSxFQUFFM0ssbUJBQW1CLENBQUMsQ0FBQztJQUNwSDs7SUFFQTtJQUNBa0csV0FBVyxDQUFDTSxhQUFhLEVBQUUsQ0FBQ0MsUUFBUSxDQUFDQyxjQUFjLENBQUNSLFdBQVcsQ0FBQ3BGLGlCQUFpQixFQUFFLEVBQUU2RixPQUFPLENBQUNDLEdBQUcsQ0FBQ1AsZUFBZSxDQUFDLENBQUM7RUFDbkg7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsZUFBZTBFLHNCQUFzQixDQUNwQ2xLLElBQVksRUFDWm1LLGFBQXFCLEVBQ3JCTCxVQUFrQixFQUNsQjNLLG1CQUE4QixFQUNkO0lBQ2hCLE1BQU1zSCxhQUFhLEdBQUdDLG9CQUFvQixDQUFDMUcsSUFBSSxFQUFFbUssYUFBYSxDQUFDO0lBQy9ELElBQUksQ0FBQzFELGFBQWEsRUFBRTtNQUNuQjtJQUNEO0lBRUEsTUFBTThDLFlBQVksR0FBR25KLGtCQUFrQixDQUFDNkcsZUFBZSxDQUFDakgsSUFBSSxDQUFDO0lBQzdELE1BQU1vSyxpQkFBaUIsR0FBR2IsWUFBWSxDQUFDckMscUJBQXFCLEVBQUU7SUFDOUQsTUFBTW1ELHFCQUFxQixHQUFHRCxpQkFBaUIsQ0FBQ0UseUJBQXlCLENBQUNSLFVBQVUsRUFBRXJELGFBQWEsQ0FBQztJQUNwRyxNQUFNOEQsa0JBQWtDLEdBQUcsRUFBRTtJQUM3QyxJQUFJRixxQkFBcUIsRUFBRTtNQUFBO01BQzFCLDZCQUFJQSxxQkFBcUIsQ0FBQ0csZUFBZSxrREFBckMsc0JBQXVDekcsTUFBTSxFQUFFO1FBQ2xEd0csa0JBQWtCLENBQUN0RyxJQUFJLENBQ3RCbUcsaUJBQWlCLENBQUM3QyxrQkFBa0IsQ0FBQzhDLHFCQUFxQixDQUFDRyxlQUFlLEVBQUUvRCxhQUFhLEVBQUV0SSxXQUFXLENBQUMsQ0FDdkc7TUFDRjtJQUNEO0lBQ0EsSUFBSWdCLG1CQUFtQixJQUFJQSxtQkFBbUIsQ0FBQzRFLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDMUQ7TUFDQSxNQUFNZ0IsU0FBUyxHQUFHL0UsSUFBSSxDQUFDekIsUUFBUSxFQUFFLENBQUNzQixZQUFZLEVBQUU7TUFDaEQsTUFBTTRLLGlCQUFpQixHQUFHckosaUJBQWlCLENBQUNwQixJQUFJLEVBQUVtSyxhQUFhLENBQUM7TUFDaEUsTUFBTU8sYUFBYSxHQUFHdEUsa0JBQWtCLENBQUNDLDJCQUEyQixDQUFDdEIsU0FBUyxDQUFDNEYsVUFBVSxDQUFDRixpQkFBaUIsQ0FBQyxDQUFDO01BQzdHLE1BQU1HLG1CQUFtQixHQUFHRixhQUFhLENBQUNoRCxnQkFBZ0IsQ0FBQ21ELGdCQUFnQixDQUN6RXBGLEdBQUcsQ0FBRXFGLFFBQWtCLElBQUs7UUFDNUIsT0FBT0EsUUFBUSxDQUFDcEosSUFBSTtNQUNyQixDQUFDLENBQUMsQ0FDRGEsTUFBTSxDQUFFd0ksSUFBSSxJQUFLNUwsbUJBQW1CLENBQUM2TCxRQUFRLENBQUNELElBQUksQ0FBQyxDQUFDO01BQ3RELElBQUlILG1CQUFtQixDQUFDN0csTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNuQ3dHLGtCQUFrQixDQUFDdEcsSUFBSSxDQUFDbUcsaUJBQWlCLENBQUM3QyxrQkFBa0IsQ0FBQ3FELG1CQUFtQixFQUFFbkUsYUFBYSxFQUFFdEksV0FBVyxDQUFDLENBQUM7TUFDL0c7SUFDRDtJQUVBLE1BQU0ySCxPQUFPLENBQUNDLEdBQUcsQ0FBQ3dFLGtCQUFrQixDQUFDO0VBQ3RDOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBUzdELG9CQUFvQixDQUFDMUcsSUFBVSxFQUFFbUUsSUFBWSxFQUF1QjtJQUM1RSxJQUFJLENBQUNBLElBQUksRUFBRTtNQUNWLE9BQU8yQyxTQUFTO0lBQ2pCO0lBQ0E7SUFDQSxNQUFNbUUsV0FBcUIsR0FBRyxFQUFFO0lBQ2hDLE9BQU8sQ0FBQzlHLElBQUksQ0FBQytHLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtNQUMzQkQsV0FBVyxDQUFDNUksT0FBTyxDQUFDOEIsSUFBSSxDQUFDO01BQ3pCQSxJQUFJLEdBQUdBLElBQUksQ0FBQ29DLFNBQVMsQ0FBQyxDQUFDLEVBQUVwQyxJQUFJLENBQUNxQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQ7SUFDQXlFLFdBQVcsQ0FBQzVJLE9BQU8sQ0FBQzhCLElBQUksQ0FBQztJQUV6QixNQUFNd0Msb0JBQW9CLEdBQUd4QyxJQUFJLENBQUNvQyxTQUFTLENBQUMsQ0FBQyxFQUFFcEMsSUFBSSxDQUFDcUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7SUFFdkUsSUFBSUMsYUFBa0M7SUFDdEMsSUFBSWxCLGNBQWMsR0FBR0QsY0FBYyxDQUFDdEYsSUFBSSxDQUFDLENBQUNDLGlCQUFpQixFQUF5QjtJQUNwRixPQUFPc0YsY0FBYyxJQUFJLENBQUNrQixhQUFhLEVBQUU7TUFBQTtNQUN4QyxJQUFJd0UsV0FBVyxDQUFDRSxPQUFPLENBQUM1RixjQUFjLENBQUM2QixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN2RFgsYUFBYSxHQUFHbEIsY0FBYztNQUMvQjtNQUVBQSxjQUFjLDRCQUFHQSxjQUFjLENBQUNoQixVQUFVLEVBQUUsMERBQTNCLHNCQUE2Qm9HLFVBQVUsRUFBeUI7SUFDbEY7SUFFQSxJQUFJbEUsYUFBYSxFQUFFO01BQ2xCO01BQ0EsT0FBT0EsYUFBYTtJQUNyQjs7SUFFQTtJQUNBLE1BQU0yRSxLQUFLLEdBQUc5RixjQUFjLENBQUN0RixJQUFJLENBQUMsQ0FBQ0MsaUJBQWlCLEVBQUUsQ0FBQzFCLFFBQVEsRUFBZ0I7SUFDL0UsTUFBTThNLGlCQUFpQixHQUFHRCxLQUFLLENBQUNFLGNBQWMsRUFBRSxDQUFDM0MsSUFBSSxDQUFFNEMsT0FBTyxJQUFLO01BQ2xFLE1BQU1DLFdBQVcsR0FBR0QsT0FBTyxDQUFDRSxVQUFVLEVBQUUsR0FBR0YsT0FBTyxDQUFDRyxlQUFlLEVBQUUsR0FBR0gsT0FBTyxDQUFDbkUsT0FBTyxFQUFFO01BQ3hGLE9BQU9tRSxPQUFPLENBQUNJLEdBQUcsQ0FBQyx3Q0FBd0MsQ0FBQyxJQUFJSCxXQUFXLEtBQUs3RSxvQkFBb0I7SUFDckcsQ0FBQyxDQUFpQztJQUNsQztJQUNBRixhQUFhLEdBQUc0RSxpQkFBaUIsYUFBakJBLGlCQUFpQix1QkFBakJBLGlCQUFpQixDQUFFTyxxQkFBcUIsRUFBRSxDQUFDakQsSUFBSSxDQUFFTCxPQUFPLElBQUs7TUFDNUUsT0FBTzJDLFdBQVcsQ0FBQ0UsT0FBTyxDQUFDN0MsT0FBTyxDQUFDbEIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ25ELENBQUMsQ0FBQztJQUVGLE9BQU9YLGFBQWE7RUFDckI7RUFFQSxTQUFTL0IsUUFBUSxDQUFDUCxJQUFZLEVBQUVuRSxJQUFZLEVBQUU7SUFDN0M7SUFDQSxNQUFNcUYsV0FBVyxHQUFHQyxjQUFjLENBQUN0RixJQUFJLENBQUM7SUFDeEMsTUFBTXlHLGFBQWEsR0FBR3pHLElBQUksQ0FBQ3pCLFFBQVEsRUFBRSxDQUFDc04sV0FBVyxDQUFDMUgsSUFBSSxDQUFDLENBQUMySCxlQUFlLEVBQUU7SUFDekV6RyxXQUFXLENBQUNNLGFBQWEsRUFBRSxDQUFDb0csT0FBTyxDQUFDckgsUUFBUSxDQUFDK0IsYUFBYSxDQUFDO0VBQzVEO0VBRUEsU0FBU25CLGNBQWMsQ0FBQ3RGLElBQVUsRUFBRTtJQUNuQyxNQUFNdUosWUFBWSxHQUFHbkosa0JBQWtCLENBQUM2RyxlQUFlLENBQUNqSCxJQUFJLENBQUM7SUFDN0QsT0FBT2dNLFdBQVcsQ0FBQ0Msa0JBQWtCLENBQUMxQyxZQUFZLENBQUM7RUFDcEQ7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTbkksaUJBQWlCLENBQUNwQixJQUFZLEVBQUVtRSxJQUFhLEVBQVU7SUFDL0QsSUFBSWhELFFBQVEsR0FBRyxFQUFFO0lBQ2pCLElBQUlnRCxJQUFJLEVBQUU7TUFDVDtNQUNBLE1BQU0rSCxRQUFRLEdBQUcvSCxJQUFJLENBQUNOLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDbkMxQyxRQUFRLEdBQUduQixJQUFJLENBQUN6QixRQUFRLEVBQUUsQ0FBQ3NCLFlBQVksRUFBRSxDQUFDc0YsV0FBVyxDQUFDK0csUUFBUSxDQUFDO0lBQ2hFO0lBQ0EsT0FBTy9LLFFBQVE7RUFDaEI7RUFBQyxPQUVjO0lBQ2RqQixPQUFPLEVBQUVBLE9BQU87SUFDaEJZLFVBQVUsRUFBRUEsVUFBVTtJQUN0QjFDLFdBQVcsRUFBRUEsV0FBVztJQUN4QjJCLHNCQUFzQixFQUFFQSxzQkFBc0I7SUFDOUN0QixJQUFJLEVBQUVBO0VBQ1AsQ0FBQztBQUFBIn0=
|
|
@@ -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/CommonUtils","sap/fe/core/controllerextensions/collaboration/ActivityBase","sap/fe/core/controllerextensions/collaboration/CollaborationCommon","sap/fe/core/converters/MetaModelConverter","sap/m/MessageBox"],function(t,e,n,o,i,s){"use strict";var r={};var c=o.
|
|
5
|
+
sap.ui.define(["sap/base/Log","sap/fe/core/CommonUtils","sap/fe/core/controllerextensions/collaboration/ActivityBase","sap/fe/core/controllerextensions/collaboration/CollaborationCommon","sap/fe/core/converters/MetaModelConverter","sap/m/MessageBox"],function(t,e,n,o,i,s){"use strict";var r={};var c=o.getActivityKeyFromPath;var a=o.CollaborationUtils;var l=o.Activity;var d=n.isCollaborationConnected;var g=n.initializeCollaboration;var f=n.endCollaboration;var u=n.broadcastCollaborationMessage;const p="/collaboration/myActivity";const C="/collaboration/activeUsers";const v="/collaboration/activities";const h="$auto.sync";const y=function(t){const e=t.getModel("internal");return d(e)};r.isConnected=y;const M=function(t,e,n,o,i,s){if(y(t)){const r=t.getModel("internal");const c=Array.isArray(n)?n.join("|"):n;const a=s===null||s===void 0?void 0:s.join("|");const d=r.getProperty(p);if(e===l.LiveChange){if(d===c){return}else{r.setProperty(p,c)}}else{if(e===l.Undo&&d===null){return}r.setProperty(p,null)}u(e,c,r,o,i,a)}};r.send=M;const P=function(t){return t.getModel().getMetaModel().getObject("/@com.sap.vocabularies.Common.v1.WebSocketBaseURL")};const b=function(t){const e=(t===null||t===void 0?void 0:t.getBindingContext)&&t.getBindingContext();return!!(e&&P(e))};r.isCollaborationEnabled=b;const m=async function(t){const e=t.getModel("internal");const n=a.getMe(t);if(!n){return}const o=t.getBindingContext();const i=P(o);const s=o.getModel().getServiceUrl();if(!i){return}const r=await o.requestProperty("DraftAdministrativeData/DraftUUID");if(!r){return}g(n,i,r,s,e,e=>{x(e,t)});e.setProperty(p,null)};r.connect=m;const A=function(t){const e=t.getModel("internal");f(e)};r.disconnect=A;function x(t,e){var n;const o=e.getModel("internal");let i=o.getProperty(C);let s;let r;const d=R(e,t.clientContent);t.userAction=t.userAction||t.clientAction;const g={id:t.userID,name:t.userDescription,initials:a.formatInitials(t.userDescription),color:a.getUserColor(t.userID,i,[])};let f=g;switch(t.userAction){case l.Join:case l.JoinEcho:if(i.findIndex(t=>t.id===g.id)===-1){i.unshift(g);o.setProperty(C,i)}if(t.userAction===l.Join){u(l.JoinEcho,o.getProperty(p),o)}if(t.userAction===l.JoinEcho){if(t.clientContent){t.userAction=l.LiveChange;x(t,e)}}break;case l.Leave:i=i.filter(t=>t.id!==g.id||t.me);o.setProperty(C,i);const h=o.getProperty(v)||{};const y=function(t){if(Array.isArray(t)){return t.filter(t=>t.id!==g.id)}else{for(const e in t){t[e]=y(t[e])}return t}};y(h);o.setProperty(v,h);break;case l.Change:D(e,t);break;case l.Create:I(e,t);break;case l.Delete:O(e,t);break;case l.Activate:E(e,t.clientContent,a.getText("C_COLLABORATIONDRAFT_ACTIVATE",g.name));break;case l.Discard:E(e,t.clientContent,a.getText("C_COLLABORATIONDRAFT_DISCARD",g.name));break;case l.Action:k(e,t);break;case l.LiveChange:f=g;f.key=c(t.clientContent);let M="";const P=d.split("/");for(let t=1;t<P.length-1;t++){M+=`/${P[t]}`;if(!o.getProperty(v+M)){o.setProperty(v+M,{})}}s=o.getProperty(v+d);s=(n=s)!==null&&n!==void 0&&n.slice?s.slice():[];s.push(f);o.setProperty(v+d,s);break;case l.Undo:s=o.getProperty(v+d);r=c(t.clientContent);o.setProperty(v+d,s.filter(t=>t.key!==r));break}}function E(e,n,o){A(e);s.information(o);e.getBindingContext().getBinding().resetChanges().then(function(){T(n,e)}).catch(function(){t.error("Pending Changes could not be reset - still navigating to active instance");T(n,e)})}function D(t,e){const n=e.clientContent.split("|");const o=t.getModel().getMetaModel();const i=t.getModel("internal");n.forEach(t=>{var e;const n=o.getMetaPath(t);const s=c(t);let r=i.getProperty(v+n)||[];r=((e=r)===null||e===void 0?void 0:e.filter)&&r.filter(t=>t.key!==s);if(r){i.setProperty(v+n,r)}});const s=w(t);const r=s.getBindingContext();const a=n.map(e=>B(t,e));s.getController().editFlow.updateDocument(r,Promise.all(a))}async function B(e,n){const o=e.getModel().getMetaModel();const s=o.getMetaContext(n);const r=i.getInvolvedDataModelObjects(s);const c=n.substring(0,n.lastIndexOf("/"));const l=L(e,c);const d=c.substring(0,c.lastIndexOf("("));const g=d.substring(0,d.lastIndexOf("/"));const f=g?L(e,g):undefined;if(!l&&!f){return}try{const t=[];const i=a.getAppComponent(e).getSideEffectsService();if(l){const e=o.getMetaPath(l.getPath());const s=o.getMetaPath(n).replace(e,"").slice(1);t.push(i.requestSideEffects([s],l,h))}const s=i.computeFieldGroupIds(r.targetEntityType.fullyQualifiedName,r.targetObject.fullyQualifiedName);if(s.length){const n=e.getController();const o=n._sideEffects.getSideEffectsMapForFieldGroups(s,l||f);Object.keys(o).forEach(e=>{const i=o[e];t.push(n._sideEffects.requestSideEffects(i.sideEffects,i.context,h))})}await Promise.all(t)}catch(e){t.error("Failed to update data after change:"+e);throw e}}function O(t,e){const n=w(t);const o=n.getBindingContext();const i=o.getPath();const r=e.clientContent.split("|");const c=r.find(t=>i.startsWith(t));if(c){s.information(a.getText("C_COLLABORATIONDRAFT_DELETE",e.userDescription),{onClose:()=>{const e=o.getModel().getKeepAliveContext(c);e.setKeepAlive(false);const i=S(t,r[0]);n.getController().editFlow.updateDocument(n.getBindingContext(),i);n.getController()._routing.navigateBackFromContext(e)}})}else{const e=S(t,r[0]);n.getController().editFlow.updateDocument(n.getBindingContext(),e)}}function I(t,e){const n=w(t);const o=e.clientContent.split("|");const i=S(t,o[0]);n.getController().editFlow.updateDocument(n.getBindingContext(),i)}async function S(e,n){const o=a.getAppComponent(e);const i=n.substring(0,n.lastIndexOf("/"));const s=L(e,i);if(s){try{const t=[];const e=s.getModel().getMetaModel();const i=e.getMetaPath(n);const r=e.getMetaPath(s.getPath());const c=i.replace(`${r}/`,"");const a=o.getSideEffectsService();t.push(a.requestSideEffects([c],s,h));t.push(a.requestSideEffectsForNavigationProperty(c,s,h));await Promise.all(t)}catch(e){t.error("Failed to update data after collection update:"+e)}}}function k(t,e){var n;const o=w(t);const i=e.clientContent.split("|");const s=e.clientTriggeredActionName||"";const r=(n=e.clientRequestedProperties)===null||n===void 0?void 0:n.split("|");const c=e.clientRefreshListBinding==="true";let a=[];if(c){a.push(S(t,i[0]))}else{a=i.map(e=>F(t,e,s,r))}o.getController().editFlow.updateDocument(o.getBindingContext(),Promise.all(a))}async function F(t,e,n,o){const s=L(t,e);if(!s){return}const r=a.getAppComponent(t);const c=r.getSideEffectsService();const l=c.getODataActionSideEffects(n,s);const d=[];if(l){var g;if((g=l.pathExpressions)!==null&&g!==void 0&&g.length){d.push(c.requestSideEffects(l.pathExpressions,s,h))}}if(o&&o.length>0){const n=t.getModel().getMetaModel();const r=R(t,e);const a=i.getInvolvedDataModelObjects(n.getContext(r));const l=a.targetEntityType.entityProperties.map(t=>t.name).filter(t=>o.includes(t));if(l.length>0){d.push(c.requestSideEffects(l,s,h))}}await Promise.all(d)}function L(t,e){if(!e){return undefined}const n=[];while(!e.endsWith(")")){n.unshift(e);e=e.substring(0,e.lastIndexOf("/"))}n.unshift(e);const o=e.substring(0,e.lastIndexOf("("));let i;let s=w(t).getBindingContext();while(s&&!i){var r;if(n.indexOf(s.getPath())>=0){i=s}s=(r=s.getBinding())===null||r===void 0?void 0:r.getContext()}if(i){return i}const c=w(t).getBindingContext().getModel();const a=c.getAllBindings().find(t=>{const e=t.isRelative()?t.getResolvedPath():t.getPath();return t.isA("sap.ui.model.odata.v4.ODataListBinding")&&e===o});i=a===null||a===void 0?void 0:a.getAllCurrentContexts().find(t=>n.indexOf(t.getPath())>=0);return i}function T(t,e){const n=w(e);const o=e.getModel().bindContext(t).getBoundContext();n.getController().routing.navigate(o)}function w(t){const n=a.getAppComponent(t);return e.getCurrentPageView(n)}function R(t,e){let n="";if(e){const o=e.split("|")[0];n=t.getModel().getMetaModel().getMetaPath(o)}return n}return{connect:m,disconnect:A,isConnected:y,isCollaborationEnabled:b,send:M}},false);
|
|
6
6
|
//# sourceMappingURL=ActivitySync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivitySync.js","names":["sap","ui","define","Log","CommonUtils","ActivityBase","CollaborationCommon","MetaModelConverter","MessageBox","_exports","CollaborationUtils","Activity","isCollaborationConnected","initializeCollaboration","endCollaboration","broadcastCollaborationMessage","MYACTIVITY","ACTIVEUSERS","ACTIVITIES","SYNCGROUPID","isConnected","control","internalModel","getModel","send","action","content","triggeredActionName","refreshListBinding","actionRequestedProperties","clientContent","Array","isArray","join","requestedProperties","myActivity","getProperty","LiveChange","setProperty","Undo","getWebSocketBaseURL","bindingContext","getMetaModel","getObject","isCollaborationEnabled","view","getBindingContext","connect","async","me","getMe","webSocketBaseURL","serviceUrl","getServiceUrl","sDraftUUID","requestProperty","message","messageReceive","disconnect","_activities","activeUsers","activities","activityKey","metaPath","calculateMetaPath","userAction","clientAction","sender","id","userID","name","userDescription","initials","formatInitials","color","getUserColor","mactivity","Join","JoinEcho","findIndex","user","unshift","Leave","filter","allActivities","removeUserActivities","bag","activity","p","Change","updateOnChange","Create","updateOnCreate","Delete","updateOnDelete","Activate","draftClosedByOtherUser","getText","Discard","Action","updateOnAction","key","getActivityKey","initJSONModel","parts","split","i","length","slice","push","a","path","messageText","information","getBinding","resetChanges","then","navigate","catch","error","updatedObjectsPaths","metaModel","forEach","updatedPath","_currentActivities","updatedMetaPath","getMetaPath","currentActivities","currentPage","getCurrentPage","currentContext","requestPromises","map","applyUpdatesForChange","getController","editFlow","updateDocument","Promise","all","propertyPathForUpdate","metaContext","getMetaContext","dataModelObject","getInvolvedDataModelObjects","targetContextPath","substring","lastIndexOf","targetContext","findContextForUpdate","parentCollectionPath","parentContextPath","parentContext","undefined","sideEffectsPromises","sideEffectsService","getAppComponent","getSideEffectsService","targetMetaPath","getPath","relativeMetaPathForUpdate","replace","requestSideEffects","fieldGroupIds","computeFieldGroupIds","targetEntityType","fullyQualifiedName","targetObject","pageController","sideEffectsMapForFieldGroup","_sideEffects","getSideEffectsMapForFieldGroups","Object","keys","sideEffectName","sideEffect","sideEffects","context","err","currentPath","deletedObjectPaths","deletedPathInUse","find","deletedPath","startsWith","onClose","getKeepAliveContext","setKeepAlive","requestPromise","applyUpdatesForCollection","_routing","navigateBackFromContext","createdObjectPaths","pathInCollection","appComponent","parentPath","metaPathForUpdate","parentMetaPath","relativePath","requestSideEffectsForNavigationProperty","_message$clientReques","pathsForAction","actionName","clientTriggeredActionName","clientRequestedProperties","clientRefreshListBinding","requestUpdateForAction","pathForAction","sideEffectService","sideEffectsFromAction","getODataActionSideEffects","sideEffectPromises","_sideEffectsFromActio","pathExpressions","metaPathForAction","dataModelPath","getContext","propertiesToRequest","entityProperties","property","prop","includes","targetPaths","endsWith","_currentContext$getBi","indexOf","model","parentListBinding","getAllBindings","binding","bindingPath","isRelative","getResolvedPath","isA","getAllCurrentContexts","bindContext","getBoundContext","routing","getCurrentPageView","x","dataPath"],"sources":["ActivitySync-dbg.js"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ActivitySync.js","names":["sap","ui","define","Log","CommonUtils","ActivityBase","CollaborationCommon","MetaModelConverter","MessageBox","_exports","getActivityKeyFromPath","CollaborationUtils","Activity","isCollaborationConnected","initializeCollaboration","endCollaboration","broadcastCollaborationMessage","MYACTIVITY","ACTIVEUSERS","ACTIVITIES","SYNCGROUPID","isConnected","control","internalModel","getModel","send","action","content","triggeredActionName","refreshListBinding","actionRequestedProperties","clientContent","Array","isArray","join","requestedProperties","myActivity","getProperty","LiveChange","setProperty","Undo","getWebSocketBaseURL","bindingContext","getMetaModel","getObject","isCollaborationEnabled","view","getBindingContext","connect","async","me","getMe","webSocketBaseURL","serviceUrl","getServiceUrl","sDraftUUID","requestProperty","message","messageReceive","disconnect","_activities","activeUsers","activities","activityKey","metaPath","calculateMetaPath","userAction","clientAction","sender","id","userID","name","userDescription","initials","formatInitials","color","getUserColor","mactivity","Join","JoinEcho","findIndex","user","unshift","Leave","filter","allActivities","removeUserActivities","bag","activity","p","Change","updateOnChange","Create","updateOnCreate","Delete","updateOnDelete","Activate","draftClosedByOtherUser","getText","Discard","Action","updateOnAction","key","initJSONModel","parts","split","i","length","slice","push","a","path","messageText","information","getBinding","resetChanges","then","navigate","catch","error","updatedObjectsPaths","metaModel","forEach","updatedPath","_currentActivities","updatedMetaPath","getMetaPath","currentActivities","currentPage","getCurrentPage","currentContext","requestPromises","map","applyUpdatesForChange","getController","editFlow","updateDocument","Promise","all","propertyPathForUpdate","metaContext","getMetaContext","dataModelObject","getInvolvedDataModelObjects","targetContextPath","substring","lastIndexOf","targetContext","findContextForUpdate","parentCollectionPath","parentContextPath","parentContext","undefined","sideEffectsPromises","sideEffectsService","getAppComponent","getSideEffectsService","targetMetaPath","getPath","relativeMetaPathForUpdate","replace","requestSideEffects","fieldGroupIds","computeFieldGroupIds","targetEntityType","fullyQualifiedName","targetObject","pageController","sideEffectsMapForFieldGroup","_sideEffects","getSideEffectsMapForFieldGroups","Object","keys","sideEffectName","sideEffect","sideEffects","context","err","currentPath","deletedObjectPaths","deletedPathInUse","find","deletedPath","startsWith","onClose","getKeepAliveContext","setKeepAlive","requestPromise","applyUpdatesForCollection","_routing","navigateBackFromContext","createdObjectPaths","pathInCollection","appComponent","parentPath","metaPathForUpdate","parentMetaPath","relativePath","requestSideEffectsForNavigationProperty","_message$clientReques","pathsForAction","actionName","clientTriggeredActionName","clientRequestedProperties","clientRefreshListBinding","requestUpdateForAction","pathForAction","sideEffectService","sideEffectsFromAction","getODataActionSideEffects","sideEffectPromises","_sideEffectsFromActio","pathExpressions","metaPathForAction","dataModelPath","getContext","propertiesToRequest","entityProperties","property","prop","includes","targetPaths","endsWith","_currentContext$getBi","indexOf","model","parentListBinding","getAllBindings","binding","bindingPath","isRelative","getResolvedPath","isA","getAllCurrentContexts","bindContext","getBoundContext","routing","getCurrentPageView","dataPath"],"sources":["ActivitySync-dbg.js"],"mappings":"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"}
|