@sapui5/sap.fe.core 1.103.0 → 1.106.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -5
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime.js +121 -0
- package/src/sap/fe/core/ActionRuntime.ts +122 -0
- package/src/sap/fe/core/AppComponent.js +24 -11
- package/src/sap/fe/core/AppComponent.ts +17 -5
- package/src/sap/fe/core/AppStateHandler.js +74 -62
- package/src/sap/fe/core/AppStateHandler.ts +24 -29
- package/src/sap/fe/core/BaseController.js +2 -2
- package/src/sap/fe/core/CommonUtils.js +147 -180
- package/src/sap/fe/core/CommonUtils.ts +166 -193
- package/src/sap/fe/core/ExtensionAPI.js +2 -2
- package/src/sap/fe/core/PageController.js +2 -2
- package/src/sap/fe/core/TemplateComponent.js +21 -10
- package/src/sap/fe/core/TemplateComponent.ts +3 -0
- package/src/sap/fe/core/TemplateModel.js +2 -2
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +11 -3
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +7 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +194 -43
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +162 -24
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +14 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.ts +5 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +609 -227
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +268 -119
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +111 -76
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +96 -76
- package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js +723 -637
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +361 -398
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +2 -2
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +83 -55
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +42 -44
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +29 -27
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +35 -30
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +171 -74
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +167 -76
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +5 -21
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -17
- package/src/sap/fe/core/controllerextensions/MassEdit.js +3 -3
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +1 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -2
- package/src/sap/fe/core/controllerextensions/PageReady.js +3 -3
- package/src/sap/fe/core/controllerextensions/PageReady.ts +5 -1
- package/src/sap/fe/core/controllerextensions/Paginator.js +13 -13
- package/src/sap/fe/core/controllerextensions/Paginator.ts +11 -11
- package/src/sap/fe/core/controllerextensions/Placeholder.js +2 -2
- package/src/sap/fe/core/controllerextensions/Routing.js +2 -2
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +154 -123
- package/src/sap/fe/core/controllerextensions/Share.ts +93 -95
- package/src/sap/fe/core/controllerextensions/SideEffects.js +157 -97
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +151 -95
- package/src/sap/fe/core/controllerextensions/ViewState.js +151 -80
- package/src/sap/fe/core/controllerextensions/ViewState.ts +95 -93
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +9 -9
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +6 -7
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +26 -11
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +30 -11
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +57 -40
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +55 -47
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +31 -32
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1376 -914
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +654 -714
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +372 -326
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +210 -276
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +309 -0
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +320 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +670 -521
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +537 -535
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +85 -65
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +16 -21
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +25 -13
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +53 -43
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +18 -27
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +9 -15
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +19 -3
- package/src/sap/fe/core/controls/ActionParameterDialogFieldValueHelp.fragment.xml +35 -0
- package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +26 -16
- package/src/sap/fe/core/controls/Any.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js +2 -2
- package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +5 -5
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +0 -3
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
- package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
- package/src/sap/fe/core/controls/FileWrapper.js +8 -3
- package/src/sap/fe/core/controls/FileWrapper.ts +5 -1
- package/src/sap/fe/core/controls/FilterBar.js +2 -2
- package/src/sap/fe/core/controls/FormElementWrapper.js +2 -2
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -1
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +48 -17
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +2 -2
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +2 -2
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +2 -2
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +3 -3
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +2 -2
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +2 -2
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +1 -1
- package/src/sap/fe/core/converters/ConverterContext.js +23 -2
- package/src/sap/fe/core/converters/ConverterContext.ts +34 -9
- package/src/sap/fe/core/converters/ManifestSettings.js +19 -18
- package/src/sap/fe/core/converters/ManifestSettings.ts +53 -47
- package/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.js +32 -10
- package/src/sap/fe/core/converters/MetaModelConverter.ts +42 -19
- package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.js +5 -2
- package/src/sap/fe/core/converters/annotations/DataField.ts +5 -1
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +69 -23
- package/src/sap/fe/core/converters/controls/Common/Action.js +98 -51
- package/src/sap/fe/core/converters/controls/Common/Action.ts +121 -44
- package/src/sap/fe/core/converters/controls/Common/Chart.js +31 -34
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +26 -34
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +43 -7
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +60 -33
- package/src/sap/fe/core/converters/controls/Common/Form.js +8 -6
- package/src/sap/fe/core/converters/controls/Common/Form.ts +11 -14
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +16 -15
- package/src/sap/fe/core/converters/controls/Common/Table.js +188 -157
- package/src/sap/fe/core/converters/controls/Common/Table.ts +279 -230
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +4 -4
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +57 -21
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +71 -18
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +30 -8
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +24 -7
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +43 -34
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +37 -25
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +85 -49
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +74 -50
- package/src/sap/fe/core/converters/helpers/Aggregation.js +54 -4
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +56 -8
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +6 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +10 -2
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +182 -0
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +167 -0
- package/src/sap/fe/core/converters/helpers/ID.js +3 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
- package/src/sap/fe/core/converters/helpers/Key.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +2 -3
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +8 -14
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +6 -9
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +31 -31
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +54 -47
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +44 -15
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +64 -30
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
- package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
- package/src/sap/fe/core/formatters/StandardFormatter.js +13 -6
- package/src/sap/fe/core/formatters/StandardFormatter.ts +20 -14
- package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
- package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
- package/src/sap/fe/core/fpm/Component.js +33 -7
- package/src/sap/fe/core/fpm/Component.ts +14 -0
- package/src/sap/fe/core/helpers/AnnotationEnum.js +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +5 -4
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +4 -3
- package/src/sap/fe/core/helpers/BindingToolkit.js +56 -24
- package/src/sap/fe/core/helpers/BindingToolkit.ts +67 -21
- package/src/sap/fe/core/helpers/ClassSupport.js +31 -3
- package/src/sap/fe/core/helpers/ClassSupport.ts +24 -1
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -1
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +1 -1
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -1
- package/src/sap/fe/core/helpers/LoaderUtils.js +39 -0
- package/src/sap/fe/core/helpers/LoaderUtils.ts +14 -0
- package/src/sap/fe/core/helpers/MassEditHelper.js +475 -99
- package/src/sap/fe/core/helpers/MassEditHelper.ts +468 -155
- package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
- package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +1 -1
- package/src/sap/fe/core/helpers/PasteHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +82 -36
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +52 -36
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SideEffectsHelper.js +146 -0
- package/src/sap/fe/core/helpers/SideEffectsHelper.ts +128 -0
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
- package/src/sap/fe/core/helpers/Synchronization.js +1 -1
- package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
- package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js +109 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +47 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +119 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +98 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
- package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
- package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
- package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +179 -0
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +150 -0
- package/src/sap/fe/core/library.js +2 -2
- package/src/sap/fe/core/library.support.js +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/src/sap/fe/core/messagebundle.properties +4 -41
- package/src/sap/fe/core/messagebundle_ar.properties +22 -45
- package/src/sap/fe/core/messagebundle_bg.properties +22 -45
- package/src/sap/fe/core/messagebundle_ca.properties +22 -45
- package/src/sap/fe/core/messagebundle_cs.properties +22 -45
- package/src/sap/fe/core/messagebundle_cy.properties +21 -44
- package/src/sap/fe/core/messagebundle_da.properties +22 -45
- package/src/sap/fe/core/messagebundle_de.properties +22 -45
- package/src/sap/fe/core/messagebundle_el.properties +22 -45
- package/src/sap/fe/core/messagebundle_en.properties +21 -44
- package/src/sap/fe/core/messagebundle_en_GB.properties +21 -44
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +21 -42
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +20 -40
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +21 -42
- package/src/sap/fe/core/messagebundle_es.properties +22 -45
- package/src/sap/fe/core/messagebundle_es_MX.properties +22 -45
- package/src/sap/fe/core/messagebundle_et.properties +22 -45
- package/src/sap/fe/core/messagebundle_fi.properties +22 -45
- package/src/sap/fe/core/messagebundle_fr.properties +21 -44
- package/src/sap/fe/core/messagebundle_fr_CA.properties +20 -43
- package/src/sap/fe/core/messagebundle_hi.properties +22 -45
- package/src/sap/fe/core/messagebundle_hr.properties +22 -45
- package/src/sap/fe/core/messagebundle_hu.properties +22 -45
- package/src/sap/fe/core/messagebundle_id.properties +22 -45
- package/src/sap/fe/core/messagebundle_it.properties +22 -45
- package/src/sap/fe/core/messagebundle_iw.properties +22 -45
- package/src/sap/fe/core/messagebundle_ja.properties +22 -45
- package/src/sap/fe/core/messagebundle_kk.properties +22 -45
- package/src/sap/fe/core/messagebundle_ko.properties +27 -50
- package/src/sap/fe/core/messagebundle_lt.properties +22 -45
- package/src/sap/fe/core/messagebundle_lv.properties +22 -45
- package/src/sap/fe/core/messagebundle_ms.properties +22 -45
- package/src/sap/fe/core/messagebundle_nl.properties +24 -47
- package/src/sap/fe/core/messagebundle_no.properties +22 -45
- package/src/sap/fe/core/messagebundle_pl.properties +23 -46
- package/src/sap/fe/core/messagebundle_pt.properties +23 -46
- package/src/sap/fe/core/messagebundle_pt_PT.properties +22 -45
- package/src/sap/fe/core/messagebundle_ro.properties +22 -45
- package/src/sap/fe/core/messagebundle_ru.properties +22 -45
- package/src/sap/fe/core/messagebundle_sh.properties +22 -45
- package/src/sap/fe/core/messagebundle_sk.properties +22 -45
- package/src/sap/fe/core/messagebundle_sl.properties +22 -45
- package/src/sap/fe/core/messagebundle_sv.properties +22 -45
- package/src/sap/fe/core/messagebundle_th.properties +20 -43
- package/src/sap/fe/core/messagebundle_tr.properties +22 -45
- package/src/sap/fe/core/messagebundle_uk.properties +22 -45
- package/src/sap/fe/core/messagebundle_vi.properties +22 -45
- package/src/sap/fe/core/messagebundle_zh_CN.properties +22 -45
- package/src/sap/fe/core/messagebundle_zh_TW.properties +22 -45
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +102 -74
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +62 -63
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.js +11 -8
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -7
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
- package/src/sap/fe/core/services/RoutingServiceFactory.js +2 -2
- package/src/sap/fe/core/services/ShellServicesFactory.js +22 -2
- package/src/sap/fe/core/services/ShellServicesFactory.ts +19 -0
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +2 -2
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +251 -200
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +160 -144
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -2
- package/src/sap/fe/core/support/AnnotationIssue.support.js +1 -1
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +1 -1
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.js +4 -3
- package/src/sap/fe/core/templating/CommonFormatters.ts +5 -1
- package/src/sap/fe/core/templating/CriticalityFormatters.js +1 -1
- package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.js +8 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +5 -2
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js +4 -5
- package/src/sap/fe/core/templating/EntitySetHelper.ts +4 -3
- package/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
- package/src/sap/fe/core/templating/FilterHelper.js +34 -15
- package/src/sap/fe/core/templating/FilterHelper.ts +28 -12
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.js +1 -1
- package/src/sap/fe/core/templating/UIFormatters.js +5 -3
- package/src/sap/fe/core/templating/UIFormatters.ts +7 -5
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +2 -2
- package/src/sap/fe/core/type/Email.js +2 -2
|
@@ -22,6 +22,7 @@ import type {
|
|
|
22
22
|
RawV4NavigationProperty,
|
|
23
23
|
Reference,
|
|
24
24
|
ReferentialConstraint,
|
|
25
|
+
ServiceObject,
|
|
25
26
|
Singleton
|
|
26
27
|
} from "@sap-ux/vocabularies-types";
|
|
27
28
|
import { AnnotationConverter } from "sap/fe/core/converters/common";
|
|
@@ -791,6 +792,7 @@ function prepareAction(actionName: string, actionRawData: MetaModelAction, names
|
|
|
791
792
|
_type: "ActionParameter",
|
|
792
793
|
isEntitySet: param.$Type === actionRawData.$EntitySetPath,
|
|
793
794
|
fullyQualifiedName: `${actionFQN}/${param.$Name}`,
|
|
795
|
+
isCollection: param.$isCollection ?? false,
|
|
794
796
|
name: param.$Name,
|
|
795
797
|
type: param.$Type
|
|
796
798
|
};
|
|
@@ -985,13 +987,19 @@ export function convertMetaModelContext(oMetaModelContext: Context, bIncludeVisi
|
|
|
985
987
|
const sPath = oMetaModelContext.getPath();
|
|
986
988
|
|
|
987
989
|
const aPathSplit = sPath.split("/");
|
|
990
|
+
let firstPart = aPathSplit[1];
|
|
991
|
+
let beginIndex = 2;
|
|
992
|
+
if (oConvertedMetadata.entityContainer.fullyQualifiedName === firstPart) {
|
|
993
|
+
firstPart = aPathSplit[2];
|
|
994
|
+
beginIndex++;
|
|
995
|
+
}
|
|
988
996
|
let targetEntitySet: EntitySet | Singleton = oConvertedMetadata.entitySets.find(
|
|
989
|
-
(entitySet) => entitySet.name ===
|
|
997
|
+
(entitySet) => entitySet.name === firstPart
|
|
990
998
|
) as EntitySet;
|
|
991
999
|
if (!targetEntitySet) {
|
|
992
|
-
targetEntitySet = oConvertedMetadata.singletons.find((singleton) => singleton.name ===
|
|
1000
|
+
targetEntitySet = oConvertedMetadata.singletons.find((singleton) => singleton.name === firstPart) as Singleton;
|
|
993
1001
|
}
|
|
994
|
-
let relativePath = aPathSplit.slice(
|
|
1002
|
+
let relativePath = aPathSplit.slice(beginIndex).join("/");
|
|
995
1003
|
|
|
996
1004
|
const localObjects: any[] = [targetEntitySet];
|
|
997
1005
|
while (relativePath && relativePath.length > 0 && relativePath.startsWith("$NavigationPropertyBinding")) {
|
|
@@ -1043,8 +1051,13 @@ export function convertMetaModelContext(oMetaModelContext: Context, bIncludeVisi
|
|
|
1043
1051
|
relativePath = relativeSplit.join("/");
|
|
1044
1052
|
}
|
|
1045
1053
|
if (relativePath.startsWith("$Type")) {
|
|
1046
|
-
//
|
|
1047
|
-
|
|
1054
|
+
// As $Type@ is allowed as well
|
|
1055
|
+
if (relativePath.startsWith("$Type@")) {
|
|
1056
|
+
relativePath = relativePath.replace("$Type", "");
|
|
1057
|
+
} else {
|
|
1058
|
+
// We're anyway going to look on the entityType...
|
|
1059
|
+
relativePath = aPathSplit.slice(3).join("/");
|
|
1060
|
+
}
|
|
1048
1061
|
}
|
|
1049
1062
|
if (targetEntitySet && relativePath.length) {
|
|
1050
1063
|
const oTarget = targetEntitySet.entityType.resolvePath(relativePath, bIncludeVisitedObjects);
|
|
@@ -1080,13 +1093,9 @@ export function convertMetaModelContext(oMetaModelContext: Context, bIncludeVisi
|
|
|
1080
1093
|
}
|
|
1081
1094
|
}
|
|
1082
1095
|
|
|
1083
|
-
type ConverterObject = {
|
|
1084
|
-
_type: string;
|
|
1085
|
-
name: string;
|
|
1086
|
-
};
|
|
1087
1096
|
export type ResolvedTarget = {
|
|
1088
|
-
target?:
|
|
1089
|
-
visitedObjects:
|
|
1097
|
+
target?: ServiceObject;
|
|
1098
|
+
visitedObjects: (ServiceObject | Singleton)[];
|
|
1090
1099
|
};
|
|
1091
1100
|
|
|
1092
1101
|
export function getInvolvedDataModelObjects(oMetaModelContext: Context, oEntitySetMetaModelContext?: Context): DataModelObjectPath {
|
|
@@ -1102,18 +1111,29 @@ export function getInvolvedDataModelObjects(oMetaModelContext: Context, oEntityS
|
|
|
1102
1111
|
export function getInvolvedDataModelObjectFromPath(
|
|
1103
1112
|
metaModelContext: ResolvedTarget,
|
|
1104
1113
|
convertedTypes: ConvertedMetadata,
|
|
1105
|
-
targetEntitySetLocation?: DataModelObjectPath
|
|
1114
|
+
targetEntitySetLocation?: DataModelObjectPath,
|
|
1115
|
+
onlyServiceObjects?: boolean
|
|
1106
1116
|
): DataModelObjectPath {
|
|
1107
1117
|
const dataModelObjects = metaModelContext.visitedObjects.filter(
|
|
1108
|
-
(visitedObject: any) =>
|
|
1118
|
+
(visitedObject: any) =>
|
|
1119
|
+
visitedObject &&
|
|
1120
|
+
visitedObject.hasOwnProperty("_type") &&
|
|
1121
|
+
visitedObject._type !== "EntityType" &&
|
|
1122
|
+
visitedObject._type !== "EntityContainer"
|
|
1109
1123
|
);
|
|
1110
|
-
if (
|
|
1124
|
+
if (
|
|
1125
|
+
metaModelContext.target &&
|
|
1126
|
+
metaModelContext.target.hasOwnProperty("_type") &&
|
|
1127
|
+
metaModelContext.target._type !== "EntityType" &&
|
|
1128
|
+
dataModelObjects[dataModelObjects.length - 1] !== metaModelContext.target &&
|
|
1129
|
+
!onlyServiceObjects
|
|
1130
|
+
) {
|
|
1111
1131
|
dataModelObjects.push(metaModelContext.target);
|
|
1112
1132
|
}
|
|
1113
1133
|
const navigationProperties: NavigationProperty[] = [];
|
|
1114
1134
|
const rootEntitySet: EntitySet = dataModelObjects[0] as EntitySet;
|
|
1115
1135
|
// currentEntitySet can be undefined.
|
|
1116
|
-
let currentEntitySet: EntitySet | undefined = rootEntitySet;
|
|
1136
|
+
let currentEntitySet: EntitySet | Singleton | undefined = rootEntitySet;
|
|
1117
1137
|
let currentEntityType: EntityType = rootEntitySet.entityType;
|
|
1118
1138
|
let i = 1;
|
|
1119
1139
|
let currentObject;
|
|
@@ -1122,8 +1142,8 @@ export function getInvolvedDataModelObjectFromPath(
|
|
|
1122
1142
|
currentObject = dataModelObjects[i++];
|
|
1123
1143
|
if (currentObject._type === "NavigationProperty") {
|
|
1124
1144
|
navigatedPaths.push(currentObject.name);
|
|
1125
|
-
navigationProperties.push(currentObject
|
|
1126
|
-
currentEntityType =
|
|
1145
|
+
navigationProperties.push(currentObject);
|
|
1146
|
+
currentEntityType = currentObject.targetType;
|
|
1127
1147
|
if (currentEntitySet && currentEntitySet.navigationPropertyBinding.hasOwnProperty(navigatedPaths.join("/"))) {
|
|
1128
1148
|
currentEntitySet = currentEntitySet.navigationPropertyBinding[currentObject.name] as EntitySet;
|
|
1129
1149
|
navigatedPaths = [];
|
|
@@ -1131,8 +1151,8 @@ export function getInvolvedDataModelObjectFromPath(
|
|
|
1131
1151
|
currentEntitySet = undefined;
|
|
1132
1152
|
}
|
|
1133
1153
|
}
|
|
1134
|
-
if (currentObject._type === "EntitySet") {
|
|
1135
|
-
currentEntitySet = currentObject
|
|
1154
|
+
if (currentObject._type === "EntitySet" || currentObject._type === "Singleton") {
|
|
1155
|
+
currentEntitySet = currentObject;
|
|
1136
1156
|
currentEntityType = currentEntitySet.entityType;
|
|
1137
1157
|
}
|
|
1138
1158
|
}
|
|
@@ -1159,6 +1179,9 @@ export function getInvolvedDataModelObjectFromPath(
|
|
|
1159
1179
|
contextLocation: targetEntitySetLocation,
|
|
1160
1180
|
convertedTypes: convertedTypes
|
|
1161
1181
|
};
|
|
1182
|
+
if (!outDataModelPath.targetObject?.hasOwnProperty("_type") && onlyServiceObjects) {
|
|
1183
|
+
outDataModelPath.targetObject = currentObject;
|
|
1184
|
+
}
|
|
1162
1185
|
if (!outDataModelPath.contextLocation) {
|
|
1163
1186
|
outDataModelPath.contextLocation = outDataModelPath;
|
|
1164
1187
|
}
|
|
@@ -98,4 +98,4 @@ sap.ui.define(["sap/base/util/merge", "sap/fe/core/converters/helpers/IssueManag
|
|
|
98
98
|
_exports.convertPage = convertPage;
|
|
99
99
|
return _exports;
|
|
100
100
|
}, false);
|
|
101
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRlbXBsYXRlQ29udmVydGVyLnRzIl0sIm5hbWVzIjpbImhhbmRsZUVycm9yRm9yQ29sbGVjdGlvbkZhY2V0cyIsIm9GYWNldHMiLCJvRGlhZ25vc3RpY3MiLCJzRW50aXR5U2V0TmFtZSIsImxldmVsIiwiZm9yRWFjaCIsIm9GYWNldCIsIk1lc3NhZ2UiLCIkVHlwZSIsIklEIiwiYWRkSXNzdWUiLCJJc3N1ZUNhdGVnb3J5IiwiRmFjZXRzIiwiSXNzdWVTZXZlcml0eSIsIkhpZ2giLCJJc3N1ZUNhdGVnb3J5VHlwZSIsIk1pc3NpbmdJRCIsIkxhYmVsIiwiTWVkaXVtIiwiVW5TdXBwb3J0ZWRMZXZlbCIsImNvbnZlcnRQYWdlIiwic1RlbXBsYXRlVHlwZSIsIm9NZXRhTW9kZWwiLCJvTWFuaWZlc3RTZXR0aW5ncyIsInNGdWxsQ29udGV4dFBhdGgiLCJvQ2FwYWJpbGl0aWVzIiwib0NvbnZlcnRlZE1ldGFkYXRhIiwiY29udmVydFR5cGVzIiwiZGlhZ25vc3RpY3MiLCJhbm5vdGF0aW9uRXJyb3JEZXRhaWwiLCJjaGVja0lmSXNzdWVFeGlzdHMiLCJBbm5vdGF0aW9uIiwibWVzc2FnZSIsImVudGl0eVR5cGVzIiwib0VudGl0eVNldCIsImFubm90YXRpb25zIiwiVUkiLCJuYW1lIiwic1RhcmdldEVudGl0eVNldE5hbWUiLCJlbnRpdHlTZXQiLCJzQ29udGV4dFBhdGgiLCJjb250ZXh0UGF0aCIsIm9Db250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJvRnVsbENvbnRleHQiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJvQ29udmVydGVkUGFnZSIsIlRlbXBsYXRlVHlwZSIsIkxpc3RSZXBvcnQiLCJBbmFseXRpY2FsTGlzdFBhZ2UiLCJMaXN0UmVwb3J0Q29udmVydGVyIiwiQ29udmVydGVyQ29udGV4dCIsIm1lcmdlIiwiT2JqZWN0UGFnZSIsIk9iamVjdFBhZ2VDb252ZXJ0ZXIiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQXNDQSxXQUFTQSw4QkFBVCxDQUF3Q0MsT0FBeEMsRUFBK0RDLFlBQS9ELEVBQTJGQyxjQUEzRixFQUFtSEMsS0FBbkgsRUFBa0k7QUFDaklILElBQUFBLE9BQU8sQ0FBQ0ksT0FBUixDQUFnQixVQUFDQyxNQUFELEVBQWlCO0FBQ2hDLFVBQUlDLE9BQU8sNEJBQXFCSixjQUFyQixDQUFYOztBQUNBLFVBQUksQ0FBQUcsTUFBTSxTQUFOLElBQUFBLE1BQU0sV0FBTixZQUFBQSxNQUFNLENBQUVFLEtBQVIsc0RBQXVELEVBQUNGLE1BQUQsYUFBQ0EsTUFBRCxlQUFDQSxNQUFNLENBQUVHLEVBQVQsQ0FBM0QsRUFBd0U7QUFBQTs7QUFDdkVGLFFBQUFBLE9BQU8sR0FBRyxVQUFHQSxPQUFILDBCQUEwQkgsS0FBMUIsZ0RBQVY7QUFDQUYsUUFBQUEsWUFBWSxDQUFDUSxRQUFiLENBQ0NDLGFBQWEsQ0FBQ0MsTUFEZixFQUVDQyxhQUFhLENBQUNDLElBRmYsRUFHQ1AsT0FIRCxFQUlDUSxpQkFKRCxFQUtDQSxpQkFMRCxhQUtDQSxpQkFMRCxnREFLQ0EsaUJBQWlCLENBQUVILE1BTHBCLDBEQUtDLHNCQUEyQkksU0FMNUI7QUFPQTs7QUFDRCxVQUFJLENBQUFWLE1BQU0sU0FBTixJQUFBQSxNQUFNLFdBQU4sWUFBQUEsTUFBTSxDQUFFRSxLQUFSLHNEQUF1REosS0FBSyxJQUFJLENBQXBFLEVBQXVFO0FBQUE7O0FBQ3RFRyxRQUFBQSxPQUFPLEdBQUcsVUFBR0EsT0FBSCxnQ0FBZ0NELE1BQU0sQ0FBQ1csS0FBdkMsNkNBQStFYixLQUEvRSxDQUFWO0FBQ0FGLFFBQUFBLFlBQVksQ0FBQ1EsUUFBYixDQUNDQyxhQUFhLENBQUNDLE1BRGYsRUFFQ0MsYUFBYSxDQUFDSyxNQUZmLEVBR0NYLE9BSEQsRUFJQ1EsaUJBSkQsRUFLQ0EsaUJBTEQsYUFLQ0EsaUJBTEQsaURBS0NBLGlCQUFpQixDQUFFSCxNQUxwQiwyREFLQyx1QkFBMkJPLGdCQUw1QjtBQU9BOztBQUNELFVBQUliLE1BQUosYUFBSUEsTUFBSixlQUFJQSxNQUFNLENBQUVNLE1BQVosRUFBb0I7QUFDbkJaLFFBQUFBLDhCQUE4QixDQUFDTSxNQUFELGFBQUNBLE1BQUQsdUJBQUNBLE1BQU0sQ0FBRU0sTUFBVCxFQUFpQlYsWUFBakIsRUFBK0JDLGNBQS9CLEVBQStDLEVBQUVDLEtBQWpELENBQTlCO0FBQ0FBLFFBQUFBLEtBQUssR0FBR0EsS0FBSyxHQUFHLENBQWhCO0FBQ0E7QUFDRCxLQTFCRDtBQTJCQTtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFdBQVNnQixXQUFULENBQ05DLGFBRE0sRUFFTkMsVUFGTSxFQUdOQyxpQkFITSxFQUlOckIsWUFKTSxFQUtOc0IsZ0JBTE0sRUFNTkMsYUFOTSxFQU9MO0FBQUE7O0FBQ0QsUUFBTUMsa0JBQWtCLEdBQUdDLFlBQVksQ0FBQ0wsVUFBRCxFQUFhRyxhQUFiLENBQXZDO0FBQ0FDLElBQUFBLGtCQUFrQixDQUFDRSxXQUFuQixDQUErQnZCLE9BQS9CLENBQXVDLFVBQUN3QixxQkFBRCxFQUEyQjtBQUNqRSxVQUFNQyxrQkFBa0IsR0FBRzVCLFlBQVksQ0FBQzRCLGtCQUFiLENBQzFCbkIsYUFBYSxDQUFDb0IsVUFEWSxFQUUxQmxCLGFBQWEsQ0FBQ0MsSUFGWSxFQUcxQmUscUJBQXFCLENBQUNHLE9BSEksQ0FBM0I7O0FBS0EsVUFBSSxDQUFDRixrQkFBTCxFQUF5QjtBQUN4QjVCLFFBQUFBLFlBQVksQ0FBQ1EsUUFBYixDQUFzQkMsYUFBYSxDQUFDb0IsVUFBcEMsRUFBZ0RsQixhQUFhLENBQUNDLElBQTlELEVBQW9FZSxxQkFBcUIsQ0FBQ0csT0FBMUY7QUFDQTtBQUNELEtBVEQ7QUFVQU4sSUFBQUEsa0JBQWtCLFNBQWxCLElBQUFBLGtCQUFrQixXQUFsQixxQ0FBQUEsa0JBQWtCLENBQUVPLFdBQXBCLGdGQUFpQzVCLE9BQWpDLENBQXlDLFVBQUM2QixVQUFELEVBQXFCO0FBQUE7O0FBQzdELFVBQUlBLFVBQUosYUFBSUEsVUFBSix3Q0FBSUEsVUFBVSxDQUFFQyxXQUFoQiw0RUFBSSxzQkFBeUJDLEVBQTdCLG1EQUFJLHVCQUE2QnhCLE1BQWpDLEVBQXlDO0FBQUE7O0FBQ3hDWixRQUFBQSw4QkFBOEIsQ0FBQ2tDLFVBQUQsYUFBQ0EsVUFBRCxpREFBQ0EsVUFBVSxDQUFFQyxXQUFiLHFGQUFDLHVCQUF5QkMsRUFBMUIsMkRBQUMsdUJBQTZCeEIsTUFBOUIsRUFBc0NWLFlBQXRDLEVBQW9EZ0MsVUFBcEQsYUFBb0RBLFVBQXBELHVCQUFvREEsVUFBVSxDQUFFRyxJQUFoRSxFQUFzRSxDQUF0RSxDQUE5QjtBQUNBO0FBQ0QsS0FKRDtBQUtBLFFBQU1DLG9CQUFvQixHQUFHZixpQkFBaUIsQ0FBQ2dCLFNBQS9DO0FBQ0EsUUFBTUMsWUFBWSxHQUNqQixDQUFBakIsaUJBQWlCLFNBQWpCLElBQUFBLGlCQUFpQixXQUFqQixZQUFBQSxpQkFBaUIsQ0FBRWtCLFdBQW5CLE1BQW1DakIsZ0JBQWdCLEtBQUssR0FBckIsR0FBMkJBLGdCQUFnQixHQUFHYyxvQkFBOUMsR0FBcUVkLGdCQUF4RyxDQUREO0FBRUEsUUFBTWtCLFFBQVEsR0FBR3BCLFVBQVUsQ0FBQ3FCLG9CQUFYLENBQWdDSCxZQUFoQyxDQUFqQjtBQUNBLFFBQU1JLFlBQVksR0FBR0MsMkJBQTJCLENBQUNILFFBQUQsQ0FBaEQ7O0FBRUEsUUFBSUUsWUFBSixFQUFrQjtBQUNqQixVQUFJRSxjQUFjLEdBQUcsRUFBckI7O0FBQ0EsY0FBUXpCLGFBQVI7QUFDQyxhQUFLMEIsWUFBWSxDQUFDQyxVQUFsQjtBQUNBLGFBQUtELFlBQVksQ0FBQ0Usa0JBQWxCO0FBQ0NILFVBQUFBLGNBQWMsR0FBR0ksbUJBQW1CLENBQUM5QixXQUFwQixDQUNoQixJQUFJK0IsZ0JBQUosQ0FBcUJ6QixrQkFBckIsRUFBeUNILGlCQUF6QyxFQUE0RHJCLFlBQTVELEVBQTBFa0QsS0FBMUUsRUFBaUZSLFlBQWpGLENBRGdCLENBQWpCO0FBR0E7O0FBQ0QsYUFBS0csWUFBWSxDQUFDTSxVQUFsQjtBQUNDUCxVQUFBQSxjQUFjLEdBQUdRLG1CQUFtQixDQUFDbEMsV0FBcEIsQ0FDaEIsSUFBSStCLGdCQUFKLENBQXFCekIsa0JBQXJCLEVBQXlDSCxpQkFBekMsRUFBNERyQixZQUE1RCxFQUEwRWtELEtBQTFFLEVBQWlGUixZQUFqRixDQURnQixDQUFqQjtBQUdBO0FBWEY7O0FBYUEsYUFBT0UsY0FBUDtBQUNBOztBQUNELFdBQU9TLFNBQVA7QUFDQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGYWNldFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgbWVyZ2UgZnJvbSBcInNhcC9iYXNlL3V0aWwvbWVyZ2VcIjtcbmltcG9ydCB7IElzc3VlQ2F0ZWdvcnksIElzc3VlQ2F0ZWdvcnlUeXBlLCBJc3N1ZVNldmVyaXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Jc3N1ZU1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgQ29udmVydGVyQ29udGV4dCBmcm9tIFwiLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEJhc2VNYW5pZmVzdFNldHRpbmdzIH0gZnJvbSBcIi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGVUeXBlIH0gZnJvbSBcIi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudENhcGFiaWxpdGllcyB9IGZyb20gXCIuL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgY29udmVydFR5cGVzLCBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwiLi9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCAqIGFzIExpc3RSZXBvcnRDb252ZXJ0ZXIgZnJvbSBcIi4vdGVtcGxhdGVzL0xpc3RSZXBvcnRDb252ZXJ0ZXJcIjtcbmltcG9ydCAqIGFzIE9iamVjdFBhZ2VDb252ZXJ0ZXIgZnJvbSBcIi4vdGVtcGxhdGVzL09iamVjdFBhZ2VDb252ZXJ0ZXJcIjtcblxuLyoqXG4gKiBAdHlwZWRlZiBQYWdlRGVmaW5pdGlvblxuICovXG5leHBvcnQgdHlwZSBQYWdlRGVmaW5pdGlvbiA9IHtcblx0dGVtcGxhdGU6IHN0cmluZztcbn07XG5cbi8qKiBAdHlwZWRlZiBJRGlhZ25vc3RpY3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURpYWdub3N0aWNzIHtcblx0YWRkSXNzdWUoXG5cdFx0aXNzdWVDYXRlZ29yeTogSXNzdWVDYXRlZ29yeSB8IHN0cmluZyxcblx0XHRpc3N1ZVNldmVyaXR5OiBJc3N1ZVNldmVyaXR5LFxuXHRcdGRldGFpbHM6IHN0cmluZyxcblx0XHRpc3N1ZUNhdGVnb3J5VHlwZT86IGFueSxcblx0XHRpc3N1ZVN1YkNhdGVnb3J5Pzogc3RyaW5nXG5cdCk6IHZvaWQ7XG5cdGdldElzc3VlcygpOiBhbnlbXTtcblx0Y2hlY2tJZklzc3VlRXhpc3RzKFxuXHRcdGlzc3VlQ2F0ZWdvcnk6IElzc3VlQ2F0ZWdvcnksXG5cdFx0aXNzdWVTZXZlcml0eTogSXNzdWVTZXZlcml0eSxcblx0XHRkZXRhaWxzOiBzdHJpbmcsXG5cdFx0aXNzdWVDYXRlZ29yeVR5cGU/OiBhbnksXG5cdFx0aXNzdWVTdWJDYXRlZ29yeT86IHN0cmluZ1xuXHQpOiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVFcnJvckZvckNvbGxlY3Rpb25GYWNldHMob0ZhY2V0czogRmFjZXRUeXBlc1tdLCBvRGlhZ25vc3RpY3M6IElEaWFnbm9zdGljcywgc0VudGl0eVNldE5hbWU6IHN0cmluZywgbGV2ZWw6IG51bWJlcikge1xuXHRvRmFjZXRzLmZvckVhY2goKG9GYWNldDogYW55KSA9PiB7XG5cdFx0bGV0IE1lc3NhZ2UgPSBgRm9yIGVudGl0eSBzZXQgJHtzRW50aXR5U2V0TmFtZX1gO1xuXHRcdGlmIChvRmFjZXQ/LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXQgJiYgIW9GYWNldD8uSUQpIHtcblx0XHRcdE1lc3NhZ2UgPSBgJHtNZXNzYWdlfSwgYCArIGBsZXZlbCAke2xldmVsfSwgdGhlIGNvbGxlY3Rpb24gZmFjZXQgZG9lcyBub3QgaGF2ZSBhbiBJRC5gO1xuXHRcdFx0b0RpYWdub3N0aWNzLmFkZElzc3VlKFxuXHRcdFx0XHRJc3N1ZUNhdGVnb3J5LkZhY2V0cyxcblx0XHRcdFx0SXNzdWVTZXZlcml0eS5IaWdoLFxuXHRcdFx0XHRNZXNzYWdlLFxuXHRcdFx0XHRJc3N1ZUNhdGVnb3J5VHlwZSxcblx0XHRcdFx0SXNzdWVDYXRlZ29yeVR5cGU/LkZhY2V0cz8uTWlzc2luZ0lEXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAob0ZhY2V0Py4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0ICYmIGxldmVsID49IDMpIHtcblx0XHRcdE1lc3NhZ2UgPSBgJHtNZXNzYWdlfSwgY29sbGVjdGlvbiBmYWNldCAke29GYWNldC5MYWJlbH0gaXMgbm90IHN1cHBvcnRlZCBhdCBgICsgYGxldmVsICR7bGV2ZWx9YDtcblx0XHRcdG9EaWFnbm9zdGljcy5hZGRJc3N1ZShcblx0XHRcdFx0SXNzdWVDYXRlZ29yeS5GYWNldHMsXG5cdFx0XHRcdElzc3VlU2V2ZXJpdHkuTWVkaXVtLFxuXHRcdFx0XHRNZXNzYWdlLFxuXHRcdFx0XHRJc3N1ZUNhdGVnb3J5VHlwZSxcblx0XHRcdFx0SXNzdWVDYXRlZ29yeVR5cGU/LkZhY2V0cz8uVW5TdXBwb3J0ZWRMZXZlbFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKG9GYWNldD8uRmFjZXRzKSB7XG5cdFx0XHRoYW5kbGVFcnJvckZvckNvbGxlY3Rpb25GYWNldHMob0ZhY2V0Py5GYWNldHMsIG9EaWFnbm9zdGljcywgc0VudGl0eVNldE5hbWUsICsrbGV2ZWwpO1xuXHRcdFx0bGV2ZWwgPSBsZXZlbCAtIDE7XG5cdFx0fVxuXHR9KTtcbn1cblxuLyoqXG4gKiBCYXNlZCBvbiBhIHRlbXBsYXRlIHR5cGUsIGNvbnZlcnQgdGhlIG1ldGFtb2RlbCBhbmQgbWFuaWZlc3QgZGVmaW5pdGlvbiBpbnRvIGEganNvbiBzdHJ1Y3R1cmUgZm9yIHRoZSBwYWdlLlxuICpcbiAqIEBwYXJhbSBzVGVtcGxhdGVUeXBlIFRoZSB0ZW1wbGF0ZSB0eXBlXG4gKiBAcGFyYW0gb01ldGFNb2RlbCBUaGUgb2RhdGEgbW9kZWwgbWV0YU1vZGVsXG4gKiBAcGFyYW0gb01hbmlmZXN0U2V0dGluZ3MgVGhlIGN1cnJlbnQgbWFuaWZlc3Qgc2V0dGluZ3NcbiAqIEBwYXJhbSBvRGlhZ25vc3RpY3MgVGhlIGRpYWdub3N0aWNzIHdyYXBwZXJcbiAqIEBwYXJhbSBzRnVsbENvbnRleHRQYXRoIFRoZSBjb250ZXh0IHBhdGggdG8gcmVhY2ggdGhpcyBwYWdlXG4gKiBAcGFyYW0gb0NhcGFiaWxpdGllc1xuICogQHJldHVybnMgVGhlIHRhcmdldCBwYWdlIGRlZmluaXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRQYWdlKFxuXHRzVGVtcGxhdGVUeXBlOiBUZW1wbGF0ZVR5cGUsXG5cdG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsLFxuXHRvTWFuaWZlc3RTZXR0aW5nczogQmFzZU1hbmlmZXN0U2V0dGluZ3MsXG5cdG9EaWFnbm9zdGljczogSURpYWdub3N0aWNzLFxuXHRzRnVsbENvbnRleHRQYXRoOiBzdHJpbmcsXG5cdG9DYXBhYmlsaXRpZXM/OiBFbnZpcm9ubWVudENhcGFiaWxpdGllc1xuKSB7XG5cdGNvbnN0IG9Db252ZXJ0ZWRNZXRhZGF0YSA9IGNvbnZlcnRUeXBlcyhvTWV0YU1vZGVsLCBvQ2FwYWJpbGl0aWVzKTtcblx0b0NvbnZlcnRlZE1ldGFkYXRhLmRpYWdub3N0aWNzLmZvckVhY2goKGFubm90YXRpb25FcnJvckRldGFpbCkgPT4ge1xuXHRcdGNvbnN0IGNoZWNrSWZJc3N1ZUV4aXN0cyA9IG9EaWFnbm9zdGljcy5jaGVja0lmSXNzdWVFeGlzdHMoXG5cdFx0XHRJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sXG5cdFx0XHRJc3N1ZVNldmVyaXR5LkhpZ2gsXG5cdFx0XHRhbm5vdGF0aW9uRXJyb3JEZXRhaWwubWVzc2FnZVxuXHRcdCk7XG5cdFx0aWYgKCFjaGVja0lmSXNzdWVFeGlzdHMpIHtcblx0XHRcdG9EaWFnbm9zdGljcy5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuSGlnaCwgYW5ub3RhdGlvbkVycm9yRGV0YWlsLm1lc3NhZ2UpO1xuXHRcdH1cblx0fSk7XG5cdG9Db252ZXJ0ZWRNZXRhZGF0YT8uZW50aXR5VHlwZXM/LmZvckVhY2goKG9FbnRpdHlTZXQ6IGFueSkgPT4ge1xuXHRcdGlmIChvRW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uVUk/LkZhY2V0cykge1xuXHRcdFx0aGFuZGxlRXJyb3JGb3JDb2xsZWN0aW9uRmFjZXRzKG9FbnRpdHlTZXQ/LmFubm90YXRpb25zPy5VST8uRmFjZXRzLCBvRGlhZ25vc3RpY3MsIG9FbnRpdHlTZXQ/Lm5hbWUsIDEpO1xuXHRcdH1cblx0fSk7XG5cdGNvbnN0IHNUYXJnZXRFbnRpdHlTZXROYW1lID0gb01hbmlmZXN0U2V0dGluZ3MuZW50aXR5U2V0O1xuXHRjb25zdCBzQ29udGV4dFBhdGggPVxuXHRcdG9NYW5pZmVzdFNldHRpbmdzPy5jb250ZXh0UGF0aCB8fCAoc0Z1bGxDb250ZXh0UGF0aCA9PT0gXCIvXCIgPyBzRnVsbENvbnRleHRQYXRoICsgc1RhcmdldEVudGl0eVNldE5hbWUgOiBzRnVsbENvbnRleHRQYXRoKTtcblx0Y29uc3Qgb0NvbnRleHQgPSBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNDb250ZXh0UGF0aCkgYXMgQ29udGV4dDtcblx0Y29uc3Qgb0Z1bGxDb250ZXh0ID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG9Db250ZXh0KTtcblxuXHRpZiAob0Z1bGxDb250ZXh0KSB7XG5cdFx0bGV0IG9Db252ZXJ0ZWRQYWdlID0ge307XG5cdFx0c3dpdGNoIChzVGVtcGxhdGVUeXBlKSB7XG5cdFx0XHRjYXNlIFRlbXBsYXRlVHlwZS5MaXN0UmVwb3J0OlxuXHRcdFx0Y2FzZSBUZW1wbGF0ZVR5cGUuQW5hbHl0aWNhbExpc3RQYWdlOlxuXHRcdFx0XHRvQ29udmVydGVkUGFnZSA9IExpc3RSZXBvcnRDb252ZXJ0ZXIuY29udmVydFBhZ2UoXG5cdFx0XHRcdFx0bmV3IENvbnZlcnRlckNvbnRleHQob0NvbnZlcnRlZE1ldGFkYXRhLCBvTWFuaWZlc3RTZXR0aW5ncywgb0RpYWdub3N0aWNzLCBtZXJnZSwgb0Z1bGxDb250ZXh0KVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVGVtcGxhdGVUeXBlLk9iamVjdFBhZ2U6XG5cdFx0XHRcdG9Db252ZXJ0ZWRQYWdlID0gT2JqZWN0UGFnZUNvbnZlcnRlci5jb252ZXJ0UGFnZShcblx0XHRcdFx0XHRuZXcgQ29udmVydGVyQ29udGV4dChvQ29udmVydGVkTWV0YWRhdGEsIG9NYW5pZmVzdFNldHRpbmdzLCBvRGlhZ25vc3RpY3MsIG1lcmdlLCBvRnVsbENvbnRleHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyZXR1cm4gb0NvbnZlcnRlZFBhZ2U7XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
|
101
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJoYW5kbGVFcnJvckZvckNvbGxlY3Rpb25GYWNldHMiLCJvRmFjZXRzIiwib0RpYWdub3N0aWNzIiwic0VudGl0eVNldE5hbWUiLCJsZXZlbCIsImZvckVhY2giLCJvRmFjZXQiLCJNZXNzYWdlIiwiJFR5cGUiLCJJRCIsImFkZElzc3VlIiwiSXNzdWVDYXRlZ29yeSIsIkZhY2V0cyIsIklzc3VlU2V2ZXJpdHkiLCJIaWdoIiwiSXNzdWVDYXRlZ29yeVR5cGUiLCJNaXNzaW5nSUQiLCJMYWJlbCIsIk1lZGl1bSIsIlVuU3VwcG9ydGVkTGV2ZWwiLCJjb252ZXJ0UGFnZSIsInNUZW1wbGF0ZVR5cGUiLCJvTWV0YU1vZGVsIiwib01hbmlmZXN0U2V0dGluZ3MiLCJzRnVsbENvbnRleHRQYXRoIiwib0NhcGFiaWxpdGllcyIsIm9Db252ZXJ0ZWRNZXRhZGF0YSIsImNvbnZlcnRUeXBlcyIsImRpYWdub3N0aWNzIiwiYW5ub3RhdGlvbkVycm9yRGV0YWlsIiwiY2hlY2tJZklzc3VlRXhpc3RzIiwiQW5ub3RhdGlvbiIsIm1lc3NhZ2UiLCJlbnRpdHlUeXBlcyIsIm9FbnRpdHlTZXQiLCJhbm5vdGF0aW9ucyIsIlVJIiwibmFtZSIsInNUYXJnZXRFbnRpdHlTZXROYW1lIiwiZW50aXR5U2V0Iiwic0NvbnRleHRQYXRoIiwiY29udGV4dFBhdGgiLCJvQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0Iiwib0Z1bGxDb250ZXh0IiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwib0NvbnZlcnRlZFBhZ2UiLCJUZW1wbGF0ZVR5cGUiLCJMaXN0UmVwb3J0IiwiQW5hbHl0aWNhbExpc3RQYWdlIiwiTGlzdFJlcG9ydENvbnZlcnRlciIsIkNvbnZlcnRlckNvbnRleHQiLCJtZXJnZSIsIk9iamVjdFBhZ2UiLCJPYmplY3RQYWdlQ29udmVydGVyIiwidW5kZWZpbmVkIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUZW1wbGF0ZUNvbnZlcnRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZhY2V0VHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBtZXJnZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9tZXJnZVwiO1xuaW1wb3J0IHsgSXNzdWVDYXRlZ29yeSwgSXNzdWVDYXRlZ29yeVR5cGUsIElzc3VlU2V2ZXJpdHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0lzc3VlTWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQmFzZU1hbmlmZXN0U2V0dGluZ3MgfSBmcm9tIFwiLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZVR5cGUgfSBmcm9tIFwiLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIH0gZnJvbSBcIi4vTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0VHlwZXMsIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCIuL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0ICogYXMgTGlzdFJlcG9ydENvbnZlcnRlciBmcm9tIFwiLi90ZW1wbGF0ZXMvTGlzdFJlcG9ydENvbnZlcnRlclwiO1xuaW1wb3J0ICogYXMgT2JqZWN0UGFnZUNvbnZlcnRlciBmcm9tIFwiLi90ZW1wbGF0ZXMvT2JqZWN0UGFnZUNvbnZlcnRlclwiO1xuXG4vKipcbiAqIEB0eXBlZGVmIFBhZ2VEZWZpbml0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFBhZ2VEZWZpbml0aW9uID0ge1xuXHR0ZW1wbGF0ZTogc3RyaW5nO1xufTtcblxuLyoqIEB0eXBlZGVmIElEaWFnbm9zdGljcyAqL1xuZXhwb3J0IGludGVyZmFjZSBJRGlhZ25vc3RpY3Mge1xuXHRhZGRJc3N1ZShcblx0XHRpc3N1ZUNhdGVnb3J5OiBJc3N1ZUNhdGVnb3J5IHwgc3RyaW5nLFxuXHRcdGlzc3VlU2V2ZXJpdHk6IElzc3VlU2V2ZXJpdHksXG5cdFx0ZGV0YWlsczogc3RyaW5nLFxuXHRcdGlzc3VlQ2F0ZWdvcnlUeXBlPzogYW55LFxuXHRcdGlzc3VlU3ViQ2F0ZWdvcnk/OiBzdHJpbmdcblx0KTogdm9pZDtcblx0Z2V0SXNzdWVzKCk6IGFueVtdO1xuXHRjaGVja0lmSXNzdWVFeGlzdHMoXG5cdFx0aXNzdWVDYXRlZ29yeTogSXNzdWVDYXRlZ29yeSxcblx0XHRpc3N1ZVNldmVyaXR5OiBJc3N1ZVNldmVyaXR5LFxuXHRcdGRldGFpbHM6IHN0cmluZyxcblx0XHRpc3N1ZUNhdGVnb3J5VHlwZT86IGFueSxcblx0XHRpc3N1ZVN1YkNhdGVnb3J5Pzogc3RyaW5nXG5cdCk6IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUVycm9yRm9yQ29sbGVjdGlvbkZhY2V0cyhvRmFjZXRzOiBGYWNldFR5cGVzW10sIG9EaWFnbm9zdGljczogSURpYWdub3N0aWNzLCBzRW50aXR5U2V0TmFtZTogc3RyaW5nLCBsZXZlbDogbnVtYmVyKSB7XG5cdG9GYWNldHMuZm9yRWFjaCgob0ZhY2V0OiBhbnkpID0+IHtcblx0XHRsZXQgTWVzc2FnZSA9IGBGb3IgZW50aXR5IHNldCAke3NFbnRpdHlTZXROYW1lfWA7XG5cdFx0aWYgKG9GYWNldD8uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldCAmJiAhb0ZhY2V0Py5JRCkge1xuXHRcdFx0TWVzc2FnZSA9IGAke01lc3NhZ2V9LCBgICsgYGxldmVsICR7bGV2ZWx9LCB0aGUgY29sbGVjdGlvbiBmYWNldCBkb2VzIG5vdCBoYXZlIGFuIElELmA7XG5cdFx0XHRvRGlhZ25vc3RpY3MuYWRkSXNzdWUoXG5cdFx0XHRcdElzc3VlQ2F0ZWdvcnkuRmFjZXRzLFxuXHRcdFx0XHRJc3N1ZVNldmVyaXR5LkhpZ2gsXG5cdFx0XHRcdE1lc3NhZ2UsXG5cdFx0XHRcdElzc3VlQ2F0ZWdvcnlUeXBlLFxuXHRcdFx0XHRJc3N1ZUNhdGVnb3J5VHlwZT8uRmFjZXRzPy5NaXNzaW5nSURcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGlmIChvRmFjZXQ/LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXQgJiYgbGV2ZWwgPj0gMykge1xuXHRcdFx0TWVzc2FnZSA9IGAke01lc3NhZ2V9LCBjb2xsZWN0aW9uIGZhY2V0ICR7b0ZhY2V0LkxhYmVsfSBpcyBub3Qgc3VwcG9ydGVkIGF0IGAgKyBgbGV2ZWwgJHtsZXZlbH1gO1xuXHRcdFx0b0RpYWdub3N0aWNzLmFkZElzc3VlKFxuXHRcdFx0XHRJc3N1ZUNhdGVnb3J5LkZhY2V0cyxcblx0XHRcdFx0SXNzdWVTZXZlcml0eS5NZWRpdW0sXG5cdFx0XHRcdE1lc3NhZ2UsXG5cdFx0XHRcdElzc3VlQ2F0ZWdvcnlUeXBlLFxuXHRcdFx0XHRJc3N1ZUNhdGVnb3J5VHlwZT8uRmFjZXRzPy5VblN1cHBvcnRlZExldmVsXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAob0ZhY2V0Py5GYWNldHMpIHtcblx0XHRcdGhhbmRsZUVycm9yRm9yQ29sbGVjdGlvbkZhY2V0cyhvRmFjZXQ/LkZhY2V0cywgb0RpYWdub3N0aWNzLCBzRW50aXR5U2V0TmFtZSwgKytsZXZlbCk7XG5cdFx0XHRsZXZlbCA9IGxldmVsIC0gMTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIEJhc2VkIG9uIGEgdGVtcGxhdGUgdHlwZSwgY29udmVydCB0aGUgbWV0YW1vZGVsIGFuZCBtYW5pZmVzdCBkZWZpbml0aW9uIGludG8gYSBqc29uIHN0cnVjdHVyZSBmb3IgdGhlIHBhZ2UuXG4gKlxuICogQHBhcmFtIHNUZW1wbGF0ZVR5cGUgVGhlIHRlbXBsYXRlIHR5cGVcbiAqIEBwYXJhbSBvTWV0YU1vZGVsIFRoZSBvZGF0YSBtb2RlbCBtZXRhTW9kZWxcbiAqIEBwYXJhbSBvTWFuaWZlc3RTZXR0aW5ncyBUaGUgY3VycmVudCBtYW5pZmVzdCBzZXR0aW5nc1xuICogQHBhcmFtIG9EaWFnbm9zdGljcyBUaGUgZGlhZ25vc3RpY3Mgd3JhcHBlclxuICogQHBhcmFtIHNGdWxsQ29udGV4dFBhdGggVGhlIGNvbnRleHQgcGF0aCB0byByZWFjaCB0aGlzIHBhZ2VcbiAqIEBwYXJhbSBvQ2FwYWJpbGl0aWVzXG4gKiBAcmV0dXJucyBUaGUgdGFyZ2V0IHBhZ2UgZGVmaW5pdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFBhZ2UoXG5cdHNUZW1wbGF0ZVR5cGU6IFRlbXBsYXRlVHlwZSxcblx0b01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsXG5cdG9NYW5pZmVzdFNldHRpbmdzOiBCYXNlTWFuaWZlc3RTZXR0aW5ncyxcblx0b0RpYWdub3N0aWNzOiBJRGlhZ25vc3RpY3MsXG5cdHNGdWxsQ29udGV4dFBhdGg6IHN0cmluZyxcblx0b0NhcGFiaWxpdGllcz86IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzXG4pIHtcblx0Y29uc3Qgb0NvbnZlcnRlZE1ldGFkYXRhID0gY29udmVydFR5cGVzKG9NZXRhTW9kZWwsIG9DYXBhYmlsaXRpZXMpO1xuXHRvQ29udmVydGVkTWV0YWRhdGEuZGlhZ25vc3RpY3MuZm9yRWFjaCgoYW5ub3RhdGlvbkVycm9yRGV0YWlsKSA9PiB7XG5cdFx0Y29uc3QgY2hlY2tJZklzc3VlRXhpc3RzID0gb0RpYWdub3N0aWNzLmNoZWNrSWZJc3N1ZUV4aXN0cyhcblx0XHRcdElzc3VlQ2F0ZWdvcnkuQW5ub3RhdGlvbixcblx0XHRcdElzc3VlU2V2ZXJpdHkuSGlnaCxcblx0XHRcdGFubm90YXRpb25FcnJvckRldGFpbC5tZXNzYWdlXG5cdFx0KTtcblx0XHRpZiAoIWNoZWNrSWZJc3N1ZUV4aXN0cykge1xuXHRcdFx0b0RpYWdub3N0aWNzLmFkZElzc3VlKElzc3VlQ2F0ZWdvcnkuQW5ub3RhdGlvbiwgSXNzdWVTZXZlcml0eS5IaWdoLCBhbm5vdGF0aW9uRXJyb3JEZXRhaWwubWVzc2FnZSk7XG5cdFx0fVxuXHR9KTtcblx0b0NvbnZlcnRlZE1ldGFkYXRhPy5lbnRpdHlUeXBlcz8uZm9yRWFjaCgob0VudGl0eVNldDogYW55KSA9PiB7XG5cdFx0aWYgKG9FbnRpdHlTZXQ/LmFubm90YXRpb25zPy5VST8uRmFjZXRzKSB7XG5cdFx0XHRoYW5kbGVFcnJvckZvckNvbGxlY3Rpb25GYWNldHMob0VudGl0eVNldD8uYW5ub3RhdGlvbnM/LlVJPy5GYWNldHMsIG9EaWFnbm9zdGljcywgb0VudGl0eVNldD8ubmFtZSwgMSk7XG5cdFx0fVxuXHR9KTtcblx0Y29uc3Qgc1RhcmdldEVudGl0eVNldE5hbWUgPSBvTWFuaWZlc3RTZXR0aW5ncy5lbnRpdHlTZXQ7XG5cdGNvbnN0IHNDb250ZXh0UGF0aCA9XG5cdFx0b01hbmlmZXN0U2V0dGluZ3M/LmNvbnRleHRQYXRoIHx8IChzRnVsbENvbnRleHRQYXRoID09PSBcIi9cIiA/IHNGdWxsQ29udGV4dFBhdGggKyBzVGFyZ2V0RW50aXR5U2V0TmFtZSA6IHNGdWxsQ29udGV4dFBhdGgpO1xuXHRjb25zdCBvQ29udGV4dCA9IG9NZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoc0NvbnRleHRQYXRoKSBhcyBDb250ZXh0O1xuXHRjb25zdCBvRnVsbENvbnRleHQgPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMob0NvbnRleHQpO1xuXG5cdGlmIChvRnVsbENvbnRleHQpIHtcblx0XHRsZXQgb0NvbnZlcnRlZFBhZ2UgPSB7fTtcblx0XHRzd2l0Y2ggKHNUZW1wbGF0ZVR5cGUpIHtcblx0XHRcdGNhc2UgVGVtcGxhdGVUeXBlLkxpc3RSZXBvcnQ6XG5cdFx0XHRjYXNlIFRlbXBsYXRlVHlwZS5BbmFseXRpY2FsTGlzdFBhZ2U6XG5cdFx0XHRcdG9Db252ZXJ0ZWRQYWdlID0gTGlzdFJlcG9ydENvbnZlcnRlci5jb252ZXJ0UGFnZShcblx0XHRcdFx0XHRuZXcgQ29udmVydGVyQ29udGV4dChvQ29udmVydGVkTWV0YWRhdGEsIG9NYW5pZmVzdFNldHRpbmdzLCBvRGlhZ25vc3RpY3MsIG1lcmdlLCBvRnVsbENvbnRleHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBUZW1wbGF0ZVR5cGUuT2JqZWN0UGFnZTpcblx0XHRcdFx0b0NvbnZlcnRlZFBhZ2UgPSBPYmplY3RQYWdlQ29udmVydGVyLmNvbnZlcnRQYWdlKFxuXHRcdFx0XHRcdG5ldyBDb252ZXJ0ZXJDb250ZXh0KG9Db252ZXJ0ZWRNZXRhZGF0YSwgb01hbmlmZXN0U2V0dGluZ3MsIG9EaWFnbm9zdGljcywgbWVyZ2UsIG9GdWxsQ29udGV4dClcblx0XHRcdFx0KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdHJldHVybiBvQ29udmVydGVkUGFnZTtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7RUF3Q0EsU0FBU0EsOEJBQVQsQ0FBd0NDLE9BQXhDLEVBQStEQyxZQUEvRCxFQUEyRkMsY0FBM0YsRUFBbUhDLEtBQW5ILEVBQWtJO0lBQ2pJSCxPQUFPLENBQUNJLE9BQVIsQ0FBZ0IsVUFBQ0MsTUFBRCxFQUFpQjtNQUNoQyxJQUFJQyxPQUFPLDRCQUFxQkosY0FBckIsQ0FBWDs7TUFDQSxJQUFJLENBQUFHLE1BQU0sU0FBTixJQUFBQSxNQUFNLFdBQU4sWUFBQUEsTUFBTSxDQUFFRSxLQUFSLHNEQUF1RCxFQUFDRixNQUFELGFBQUNBLE1BQUQsZUFBQ0EsTUFBTSxDQUFFRyxF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
|
|
@@ -415,8 +415,11 @@ sap.ui.define(["sap/fe/core/templating/DisplayModeFormatter", "sap/fe/core/templ
|
|
|
415
415
|
|
|
416
416
|
sDataType = ((_Target5 = oDataField.Target) === null || _Target5 === void 0 ? void 0 : (_Target5$$target = _Target5.$target) === null || _Target5$$target === void 0 ? void 0 : (_Target5$$target$Valu = _Target5$$target.Value) === null || _Target5$$target$Valu === void 0 ? void 0 : (_Target5$$target$Valu2 = _Target5$$target$Valu.$Path) === null || _Target5$$target$Valu2 === void 0 ? void 0 : _Target5$$target$Valu2.$Type) || ((_Target6 = oDataField.Target) === null || _Target6 === void 0 ? void 0 : (_Target6$$target = _Target6.$target) === null || _Target6$$target === void 0 ? void 0 : (_Target6$$target$Valu = _Target6$$target.Value) === null || _Target6$$target$Valu === void 0 ? void 0 : _Target6$$target$Valu.$target.type);
|
|
417
417
|
} else {
|
|
418
|
+
var _Target7;
|
|
419
|
+
|
|
418
420
|
// e.g. FieldGroup or Chart
|
|
419
|
-
|
|
421
|
+
// FieldGroup Properties have no type, so we define it as a boolean type to prevent exceptions during the calculation of the width
|
|
422
|
+
sDataType = ((_Target7 = oDataField.Target) === null || _Target7 === void 0 ? void 0 : _Target7.$target.$Type) === "com.sap.vocabularies.UI.v1.ChartDefinitionType" ? undefined : "Edm.Boolean";
|
|
420
423
|
}
|
|
421
424
|
} else {
|
|
422
425
|
sDataType = undefined;
|
|
@@ -431,4 +434,4 @@ sap.ui.define(["sap/fe/core/templating/DisplayModeFormatter", "sap/fe/core/templ
|
|
|
431
434
|
_exports.getDataFieldDataType = getDataFieldDataType;
|
|
432
435
|
return _exports;
|
|
433
436
|
}, false);
|
|
434
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRhdGFGaWVsZC50cyJdLCJuYW1lcyI6WyJpc0RhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0IiwiZGF0YUZpZWxkIiwiaGFzT3duUHJvcGVydHkiLCJpc0RhdGFGaWVsZFR5cGVzIiwiaXNEYXRhRmllbGRBbHdheXNIaWRkZW4iLCJhbm5vdGF0aW9ucyIsIlVJIiwiSGlkZGVuIiwidmFsdWVPZiIsIlZhbHVlIiwiJHRhcmdldCIsImdldFNlbWFudGljT2JqZWN0UGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJvYmplY3QiLCJwcm9wZXJ0eSIsIkNvbW1vbiIsIlNlbWFudGljT2JqZWN0IiwidW5kZWZpbmVkIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImlzUHJvcGVydHkiLCJfZ2V0TmF2aWdhdGlvblBhdGhQcmVmaXgiLCJwYXRoIiwiaW5kZXhPZiIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwiX2NvbGxlY3RBZGRpdGlvbmFsUHJvcGVydGllc0ZvckFuYWx5dGljYWxUYWJsZSIsInRhcmdldCIsIm5hdmlnYXRpb25QYXRoUHJlZml4IiwidGFibGVUeXBlIiwicmVsYXRlZFByb3BlcnRpZXMiLCJoaWRkZW5Bbm5vdGF0aW9uIiwiX3R5cGUiLCJoaWRkZW5Bbm5vdGF0aW9uUHJvcGVydHlQYXRoIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJjb2xsZWN0UmVsYXRlZFByb3BlcnRpZXMiLCJpZ25vcmVTZWxmIiwicHJvcGVydGllcyIsImFkZFVuaXRJblRlbXBsYXRlIiwiX3B1c2hVbmlxdWUiLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImtleXMiLCJfYXBwZW5kVGVtcGxhdGUiLCJleHBvcnRTZXR0aW5nc1RlbXBsYXRlIiwidGV4dEFubm90YXRpb24iLCJUZXh0IiwidmFsdWVJbmRleCIsInRhcmdldFZhbHVlIiwiY3VycmVuY3lPclVvTUluZGV4IiwidGltZXpvbmVPclVvTUluZGV4IiwiZXhwb3J0U2V0dGluZ3NXcmFwcGluZyIsImRhdGFNb2RlbE9iamVjdFBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwidGV4dEFubm90YXRpb25Qcm9wZXJ0eVBhdGgiLCJkaXNwbGF5TW9kZSIsImdldERpc3BsYXlNb2RlIiwiZGVzY3JpcHRpb25JbmRleCIsInZpc3VhbFNldHRpbmdzVG9CZUV4Y2x1ZGVkIiwiY3VycmVuY3lPclVvTVByb3BlcnR5IiwiZ2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHkiLCJnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5IiwiY3VycmVuY3lPclVuaXRBbm5vdGF0aW9uIiwiTWVhc3VyZXMiLCJJU09DdXJyZW5jeSIsIlVuaXQiLCJ0aW1lem9uZVByb3BlcnR5IiwiZ2V0QXNzb2NpYXRlZFRpbWV6b25lUHJvcGVydHkiLCJ0aW1lem9uZUFubm90YXRpb24iLCJUaW1lem9uZSIsIm5hbWUiLCJleHBvcnRVbml0TmFtZSIsImV4cG9ydFRpbWV6b25lTmFtZSIsIlRhcmdldCIsIlZpc3VhbGl6YXRpb24iLCJkYXRhUG9pbnRQcm9wZXJ0eSIsIlRhcmdldFZhbHVlIiwiTWF4aW11bVZhbHVlIiwidG9TdHJpbmciLCJEYXRhRmllbGREZWZhdWx0IiwiJFR5cGUiLCJkYXRhUG9pbnREZWZhdWx0UHJvcGVydHkiLCJleHBvcnRTZXR0aW5nc0NvbnRhY3RQcm9wZXJ0eSIsImZuIiwiZXhwb3J0VW5pdFN0cmluZyIsImV4cG9ydFRpbWV6b25lU3RyaW5nIiwibGVuZ3RoIiwiY29sbGVjdFJlbGF0ZWRQcm9wZXJ0aWVzUmVjdXJzaXZlbHkiLCJpc0VtYmVkZGVkIiwiRGF0YSIsImZvckVhY2giLCJpbm5lckRhdGFGaWVsZCIsImdldERhdGFGaWVsZERhdGFUeXBlIiwib0RhdGFGaWVsZCIsInNEYXRhVHlwZSIsInR5cGUiLCJzRGF0YVR5cGVGb3JEYXRhRmllbGRGb3JBbm5vdGF0aW9uIiwiJFBhdGgiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FB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REFBQyxpQkFBcUUwRSxFQUF0RSxFQUFpRjFFLE9BQXBGLDZDQUFHLFNBQTBGc0YsSUFBdEc7QUFDQSxXQUZELE1BRU8sSUFBSSxhQUFDRixVQUFELENBQXVDcEIsTUFBdkMsc0RBQStDaEUsT0FBL0MsQ0FBdUR1RSxLQUF2RCxnREFBSixFQUFzRztBQUFBOztBQUM1R2MsWUFBQUEsU0FBUyxHQUNSLGFBQUVELFVBQUQsQ0FBdUNwQixNQUF4QyxpRUFBQyxTQUErQ2hFLE9BQWhELCtGQUF1RUQsS0FBdkUsMEdBQThFeUYsS0FBOUUsa0ZBQXFGakIsS0FBckYsa0JBQ0VhLFVBQUQsQ0FBdUNwQixNQUR4QyxpRUFDQyxTQUErQ2hFLE9BRGhELDhFQUNBLGlCQUF1RUQsS0FEdkUsMERBQ0Esc0JBQThFQyxPQUE5RSxDQUFzRnNGLElBRHRGLENBREQ7QUFHQSxXQUpNLE1BSUE7QUFDTjtBQUNBRCxZQUFBQSxTQUFTLEdBQUc5RSxTQUFaO0FBQ0E7QUFDRCxTQVhELE1BV087QUFDTjhFLFVBQUFBLFNBQVMsR0FBRzlFLFNBQVo7QUFDQTs7QUFDRDtBQS9CRjs7QUFrQ0EsV0FBTzhFLFNBQVA7QUFDQSxHQXJDTSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcmltaXRpdmVUeXBlLCBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBDb250YWN0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tdW5pY2F0aW9uXCI7XG5pbXBvcnQgeyBDb21tdW5pY2F0aW9uQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tdW5pY2F0aW9uXCI7XG5pbXBvcnQgdHlwZSB7XG5cdERhdGFGaWVsZCxcblx0RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0RGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3RUeXBlcyxcblx0RGF0YUZpZWxkRm9yQW5ub3RhdGlvbixcblx0RGF0YUZpZWxkVHlwZXMsXG5cdERhdGFQb2ludFxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB0eXBlIHsgVGFibGVUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL1RhYmxlXCI7XG5pbXBvcnQgeyBnZXREaXNwbGF5TW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0Rpc3BsYXlNb2RlRm9ybWF0dGVyXCI7XG5pbXBvcnQge1xuXHRnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eSxcblx0Z2V0QXNzb2NpYXRlZFRpbWV6b25lUHJvcGVydHksXG5cdGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHksXG5cdGlzUHJvcGVydHlcbn0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uL0NvbnZlcnRlckNvbnRleHRcIjtcblxuZXhwb3J0IHR5cGUgQ29tcGxleFByb3BlcnR5SW5mbyA9IHtcblx0cHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUHJvcGVydHk+O1xuXHRhZGRpdGlvbmFsUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUHJvcGVydHk+O1xuXHRleHBvcnRTZXR0aW5nc1RlbXBsYXRlPzogc3RyaW5nO1xuXHRleHBvcnRTZXR0aW5nc1dyYXBwaW5nPzogYm9vbGVhbjtcblx0ZXhwb3J0U2V0dGluZ3NDb250YWN0UHJvcGVydHk/OiBzdHJpbmc7XG5cdHZpc3VhbFNldHRpbmdzVG9CZUV4Y2x1ZGVkPzogc3RyaW5nO1xuXHRleHBvcnRVbml0TmFtZT86IHN0cmluZztcblx0ZXhwb3J0VW5pdFN0cmluZz86IHN0cmluZztcblx0ZXhwb3J0VGltZXpvbmVOYW1lPzogc3RyaW5nO1xuXHRleHBvcnRUaW1lem9uZVN0cmluZz86IHN0cmluZztcbn07XG5cbi8qKlxuICogSWRlbnRpZmllcyBpZiB0aGUgZ2l2ZW4gZGF0YUZpZWxkQWJzdHJhY3QgdGhhdCBpcyBwYXNzZWQgaXMgYSBcIkRhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0XCIuXG4gKiBEYXRhRmllbGRGb3JBY3Rpb25BYnN0cmFjdCBoYXMgYW4gaW5saW5lIGFjdGlvbiBkZWZpbmVkLlxuICpcbiAqIEBwYXJhbSBkYXRhRmllbGQgRGF0YUZpZWxkIHRvIGJlIGV2YWx1YXRlZFxuICogQHJldHVybnMgVmFsaWRhdGVzIHRoYXQgZGF0YUZpZWxkIGlzIGEgRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3RUeXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0KGRhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyk6IGRhdGFGaWVsZCBpcyBEYXRhRmllbGRGb3JBY3Rpb25BYnN0cmFjdFR5cGVzIHtcblx0cmV0dXJuIChkYXRhRmllbGQgYXMgRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3RUeXBlcykuaGFzT3duUHJvcGVydHkoXCJBY3Rpb25cIik7XG59XG5cbi8qKlxuICogSWRlbnRpZmllcyBpZiB0aGUgZ2l2ZW4gZGF0YUZpZWxkQWJzdHJhY3QgdGhhdCBpcyBwYXNzZWQgaXMgYSBcIkRhdGFGaWVsZFwiLlxuICogRGF0YUZpZWxkIGhhcyBhIHZhbHVlIGRlZmluZWQuXG4gKlxuICogQHBhcmFtIGRhdGFGaWVsZCBEYXRhRmllbGQgdG8gYmUgZXZhbHVhdGVkXG4gKiBAcmV0dXJucyBWYWxpZGF0ZSB0aGF0IGRhdGFGaWVsZCBpcyBhIERhdGFGaWVsZFR5cGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGFGaWVsZFR5cGVzKGRhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyk6IGRhdGFGaWVsZCBpcyBEYXRhRmllbGRUeXBlcyB7XG5cdHJldHVybiAoZGF0YUZpZWxkIGFzIERhdGFGaWVsZFR5cGVzKS5oYXNPd25Qcm9wZXJ0eShcIlZhbHVlXCIpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBnaXZlbiBEYXRhRmllbGQgaGFzIGEgc3RhdGljIGhpZGRlbiBhbm5vdGF0aW9uLlxuICpcbiAqIEBwYXJhbSBkYXRhRmllbGQgVGhlIERhdGFGaWVsZCB0byBjaGVja1xuICogQHJldHVybnMgYHRydWVgIGlmIERhdGFGaWVsZCBvciByZWZlcmVuY2VkIHByb3BlcnR5IGhhcyBhIHN0YXRpYyBIaWRkZW4gYW5ub3RhdGlvbiwgZmFsc2UgZWxzZVxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0YUZpZWxkQWx3YXlzSGlkZGVuKGRhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gKFxuXHRcdGRhdGFGaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpID09PSB0cnVlIHx8XG5cdFx0KGlzRGF0YUZpZWxkVHlwZXMoZGF0YUZpZWxkKSAmJiBkYXRhRmllbGQuVmFsdWU/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5VST8uSGlkZGVuID09PSB0cnVlKVxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VtYW50aWNPYmplY3RQYXRoKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsIG9iamVjdDogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKHR5cGVvZiBvYmplY3QgPT09IFwib2JqZWN0XCIpIHtcblx0XHRpZiAoaXNEYXRhRmllbGRUeXBlcyhvYmplY3QpICYmIG9iamVjdC5WYWx1ZT8uJHRhcmdldCkge1xuXHRcdFx0Y29uc3QgcHJvcGVydHkgPSBvYmplY3QuVmFsdWU/LiR0YXJnZXQ7XG5cdFx0XHRpZiAocHJvcGVydHk/LmFubm90YXRpb25zPy5Db21tb24/LlNlbWFudGljT2JqZWN0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0cmV0dXJuIGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChwcm9wZXJ0eT8uZnVsbHlRdWFsaWZpZWROYW1lKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGlzUHJvcGVydHkob2JqZWN0KSkge1xuXHRcdFx0aWYgKG9iamVjdD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uU2VtYW50aWNPYmplY3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRyZXR1cm4gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKG9iamVjdD8uZnVsbHlRdWFsaWZpZWROYW1lKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBuYXZpZ2F0aW9uIHBhdGggcHJlZml4IGZvciBhIHByb3BlcnR5IHBhdGguXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHByb3BlcnR5IHBhdGggRm9yIGUuZy4gL0VudGl0eVR5cGUvTmF2aWdhdGlvbi9Qcm9wZXJ0eVxuICogQHJldHVybnMgVGhlIG5hdmlnYXRpb24gcGF0aCBwcmVmaXggRm9yIGUuZy4gL0VudGl0eVR5cGUvTmF2aWdhdGlvbi9cbiAqL1xuZnVuY3Rpb24gX2dldE5hdmlnYXRpb25QYXRoUHJlZml4KHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBwYXRoLmluZGV4T2YoXCIvXCIpID4gLTEgPyBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxhc3RJbmRleE9mKFwiL1wiKSArIDEpIDogXCJcIjtcbn1cblxuLyoqXG4gKiBDb2xsZWN0IGFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgdGhlIEFMUCB0YWJsZSB1c2UtY2FzZS5cbiAqXG4gKiBGb3IgZS5nLiBJZiBVSS5IaWRkZW4gcG9pbnRzIHRvIGEgcHJvcGVydHksIGluY2x1ZGUgdGhpcyBwcm9wZXJ0eSBpbiB0aGUgYWRkaXRpb25hbFByb3BlcnRpZXMgb2YgQ29tcGxleFByb3BlcnR5SW5mbyBvYmplY3QuXG4gKlxuICogQHBhcmFtIHRhcmdldCBQcm9wZXJ0eSBvciBEYXRhRmllbGQgYmVpbmcgcHJvY2Vzc2VkXG4gKiBAcGFyYW0gbmF2aWdhdGlvblBhdGhQcmVmaXggTmF2aWdhdGlvbiBwYXRoIHByZWZpeCwgYXBwbGljYWJsZSBpbiBjYXNlIG9mIG5hdmlnYXRpb24gcHJvcGVydGllcy5cbiAqIEBwYXJhbSB0YWJsZVR5cGUgVGFibGUgdHlwZS5cbiAqIEBwYXJhbSByZWxhdGVkUHJvcGVydGllcyBUaGUgcmVsYXRlZCBwcm9wZXJ0aWVzIGlkZW50aWZpZWQgc28gZmFyLlxuICogQHJldHVybnMgVGhlIHJlbGF0ZWQgcHJvcGVydGllcyBpZGVudGlmaWVkLlxuICovXG5mdW5jdGlvbiBfY29sbGVjdEFkZGl0aW9uYWxQcm9wZXJ0aWVzRm9yQW5hbHl0aWNhbFRhYmxlKFxuXHR0YXJnZXQ6IFByaW1pdGl2ZVR5cGUsXG5cdG5hdmlnYXRpb25QYXRoUHJlZml4OiBzdHJpbmcsXG5cdHRhYmxlVHlwZTogVGFibGVUeXBlLFxuXHRyZWxhdGVkUHJvcGVydGllczogQ29tcGxleFByb3BlcnR5SW5mb1xuKTogQ29tcGxleFByb3BlcnR5SW5mbyB7XG5cdGlmICh0YWJsZVR5cGUgPT09IFwiQW5hbHl0aWNhbFRhYmxlXCIpIHtcblx0XHRjb25zdCBoaWRkZW5Bbm5vdGF0aW9uID0gdGFyZ2V0LmFubm90YXRpb25zPy5VST8uSGlkZGVuO1xuXHRcdGlmIChoaWRkZW5Bbm5vdGF0aW9uPy5wYXRoICYmIGhpZGRlbkFubm90YXRpb24uJHRhcmdldD8uX3R5cGUgPT09IFwiUHJvcGVydHlcIikge1xuXHRcdFx0Y29uc3QgaGlkZGVuQW5ub3RhdGlvblByb3BlcnR5UGF0aCA9IG5hdmlnYXRpb25QYXRoUHJlZml4ICsgaGlkZGVuQW5ub3RhdGlvbi5wYXRoO1xuXHRcdFx0Ly8gVGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgYWRkZWQgdG8gYWRkaXRpb25hbFByb3BlcnRpZXMgbWFwIGZvciB0aGUgQUxQIHRhYmxlIHVzZS1jYXNlLlxuXHRcdFx0cmVsYXRlZFByb3BlcnRpZXMuYWRkaXRpb25hbFByb3BlcnRpZXNbaGlkZGVuQW5ub3RhdGlvblByb3BlcnR5UGF0aF0gPSBoaWRkZW5Bbm5vdGF0aW9uLiR0YXJnZXQ7XG5cdFx0fVxuXHR9XG5cdHJldHVybiByZWxhdGVkUHJvcGVydGllcztcbn1cblxuLyoqXG4gKiBDb2xsZWN0IHJlbGF0ZWQgcHJvcGVydGllcyBmcm9tIGEgcHJvcGVydHkncyBhbm5vdGF0aW9ucy5cbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcHJvcGVydHkgcGF0aFxuICogQHBhcmFtIHByb3BlcnR5IFRoZSBwcm9wZXJ0eSB0byBiZSBjb25zaWRlcmVkXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSBpZ25vcmVTZWxmIFdoZXRoZXIgdG8gZXhjbHVkZSB0aGUgc2FtZSBwcm9wZXJ0eSBmcm9tIHJlbGF0ZWQgcHJvcGVydGllcy5cbiAqIEBwYXJhbSB0YWJsZVR5cGUgVGhlIHRhYmxlIHR5cGUuXG4gKiBAcGFyYW0gcmVsYXRlZFByb3BlcnRpZXMgVGhlIHJlbGF0ZWQgcHJvcGVydGllcyBpZGVudGlmaWVkIHNvIGZhci5cbiAqIEBwYXJhbSBhZGRVbml0SW5UZW1wbGF0ZSBUcnVlIGlmIHRoZSB1bml0L2N1cnJlbmN5IHByb3BlcnR5IG5lZWRzIHRvIGJlIGFkZGVkIGluIHRoZSBleHBvcnQgdGVtcGxhdGVcbiAqIEByZXR1cm5zIFRoZSByZWxhdGVkIHByb3BlcnRpZXMgaWRlbnRpZmllZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbGxlY3RSZWxhdGVkUHJvcGVydGllcyhcblx0cGF0aDogc3RyaW5nLFxuXHRwcm9wZXJ0eTogUHJpbWl0aXZlVHlwZSxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0aWdub3JlU2VsZjogYm9vbGVhbixcblx0dGFibGVUeXBlOiBUYWJsZVR5cGUsXG5cdHJlbGF0ZWRQcm9wZXJ0aWVzOiBDb21wbGV4UHJvcGVydHlJbmZvID0geyBwcm9wZXJ0aWVzOiB7fSwgYWRkaXRpb25hbFByb3BlcnRpZXM6IHt9IH0sXG5cdGFkZFVuaXRJblRlbXBsYXRlOiBib29sZWFuID0gZmFsc2Vcbik6IENvbXBsZXhQcm9wZXJ0eUluZm8ge1xuXHQvKipcblx0ICogSGVscGVyIHRvIHB1c2ggdW5pcXVlIHJlbGF0ZWQgcHJvcGVydGllcy5cblx0ICpcblx0ICogQHBhcmFtIGtleSBUaGUgcHJvcGVydHkgcGF0aFxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIHByb3BlcnRpZXMgb2JqZWN0IGNvbnRhaW5pbmcgdmFsdWUgcHJvcGVydHksIGRlc2NyaXB0aW9uIHByb3BlcnR5Li4uXG5cdCAqIEByZXR1cm5zIEluZGV4IGF0IHdoaWNoIHRoZSBwcm9wZXJ0eSBpcyBhdmFpbGFibGVcblx0ICovXG5cdGZ1bmN0aW9uIF9wdXNoVW5pcXVlKGtleTogc3RyaW5nLCB2YWx1ZTogUHJvcGVydHkpOiBudW1iZXIge1xuXHRcdGlmICghcmVsYXRlZFByb3BlcnRpZXMucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG5cdFx0XHRyZWxhdGVkUHJvcGVydGllcy5wcm9wZXJ0aWVzW2tleV0gPSB2YWx1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKHJlbGF0ZWRQcm9wZXJ0aWVzLnByb3BlcnRpZXMpLmluZGV4T2Yoa2V5KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIZWxwZXIgdG8gYXBwZW5kIHRoZSBleHBvcnQgc2V0dGluZ3MgdGVtcGxhdGUgd2l0aCBhIGZvcm1hdHRlZCB0ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0gdmFsdWUgRm9ybWF0dGVkIHRleHRcblx0ICovXG5cdGZ1bmN0aW9uIF9hcHBlbmRUZW1wbGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG5cdFx0cmVsYXRlZFByb3BlcnRpZXMuZXhwb3J0U2V0dGluZ3NUZW1wbGF0ZSA9IHJlbGF0ZWRQcm9wZXJ0aWVzLmV4cG9ydFNldHRpbmdzVGVtcGxhdGVcblx0XHRcdD8gYCR7cmVsYXRlZFByb3BlcnRpZXMuZXhwb3J0U2V0dGluZ3NUZW1wbGF0ZX0ke3ZhbHVlfWBcblx0XHRcdDogYCR7dmFsdWV9YDtcblx0fVxuXG5cdGlmIChwYXRoICYmIHByb3BlcnR5KSB7XG5cdFx0Y29uc3QgbmF2aWdhdGlvblBhdGhQcmVmaXggPSBfZ2V0TmF2aWdhdGlvblBhdGhQcmVmaXgocGF0aCk7XG5cblx0XHQvLyBDaGVjayBmb3IgVGV4dCBhbm5vdGF0aW9uLlxuXHRcdGNvbnN0IHRleHRBbm5vdGF0aW9uID0gcHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dDtcblx0XHRsZXQgdmFsdWVJbmRleDogbnVtYmVyO1xuXHRcdGxldCB0YXJnZXRWYWx1ZTogc3RyaW5nO1xuXHRcdGxldCBjdXJyZW5jeU9yVW9NSW5kZXg6IG51bWJlcjtcblx0XHRsZXQgdGltZXpvbmVPclVvTUluZGV4OiBudW1iZXI7XG5cblx0XHRpZiAocmVsYXRlZFByb3BlcnRpZXMuZXhwb3J0U2V0dGluZ3NUZW1wbGF0ZSkge1xuXHRcdFx0Ly8gRmllbGRHcm91cCB1c2UtY2FzZS4gTmVlZCB0byBhZGQgZWFjaCBGaWVsZCBpbiBuZXcgbGluZS5cblx0XHRcdF9hcHBlbmRUZW1wbGF0ZShcIlxcblwiKTtcblx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzLmV4cG9ydFNldHRpbmdzV3JhcHBpbmcgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGlmICh0ZXh0QW5ub3RhdGlvbj8ucGF0aCAmJiB0ZXh0QW5ub3RhdGlvbj8uJHRhcmdldCkge1xuXHRcdFx0Ly8gQ2hlY2sgZm9yIFRleHQgQXJyYW5nZW1lbnQuXG5cdFx0XHRjb25zdCBkYXRhTW9kZWxPYmplY3RQYXRoID0gY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCk7XG5cdFx0XHRjb25zdCB0ZXh0QW5ub3RhdGlvblByb3BlcnR5UGF0aCA9IG5hdmlnYXRpb25QYXRoUHJlZml4ICsgdGV4dEFubm90YXRpb24ucGF0aDtcblx0XHRcdGNvbnN0IGRpc3BsYXlNb2RlID0gZ2V0RGlzcGxheU1vZGUocHJvcGVydHksIGRhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRcdFx0bGV0IGRlc2NyaXB0aW9uSW5kZXg6IG51bWJlcjtcblx0XHRcdHN3aXRjaCAoZGlzcGxheU1vZGUpIHtcblx0XHRcdFx0Y2FzZSBcIlZhbHVlXCI6XG5cdFx0XHRcdFx0dmFsdWVJbmRleCA9IF9wdXNoVW5pcXVlKHBhdGgsIHByb3BlcnR5KTtcblx0XHRcdFx0XHRfYXBwZW5kVGVtcGxhdGUoYHske3ZhbHVlSW5kZXh9fWApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRcdC8vIEtlZXAgdmFsdWUgd2hlbiBleHBvcnRpbmcgKHNwbGl0IG1vZGUpIG9uIHRleHQgQXJyYW5nZW1lbnQgZGVmaW5lZCBhcyAjVGV4dE9ubHkgKE9ubHkgdmFsdWVzIGFyZSBleHBlY3RlZCBvbiBwYXN0ZSBmcm9tIEV4Y2VsIGZ1bmN0aW9uYWxpdHkpXG5cdFx0XHRcdFx0X3B1c2hVbmlxdWUocGF0aCwgcHJvcGVydHkpO1xuXHRcdFx0XHRcdGRlc2NyaXB0aW9uSW5kZXggPSBfcHVzaFVuaXF1ZSh0ZXh0QW5ub3RhdGlvblByb3BlcnR5UGF0aCwgdGV4dEFubm90YXRpb24uJHRhcmdldCk7XG5cdFx0XHRcdFx0X2FwcGVuZFRlbXBsYXRlKGB7JHtkZXNjcmlwdGlvbkluZGV4fX1gKTtcblx0XHRcdFx0XHRyZWxhdGVkUHJvcGVydGllcy52aXN1YWxTZXR0aW5nc1RvQmVFeGNsdWRlZCA9IHBhdGg7XG5cdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0Y2FzZSBcIlZhbHVlRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0XHR2YWx1ZUluZGV4ID0gX3B1c2hVbmlxdWUocGF0aCwgcHJvcGVydHkpO1xuXHRcdFx0XHRcdGRlc2NyaXB0aW9uSW5kZXggPSBfcHVzaFVuaXF1ZSh0ZXh0QW5ub3RhdGlvblByb3BlcnR5UGF0aCwgdGV4dEFubm90YXRpb24uJHRhcmdldCk7XG5cdFx0XHRcdFx0X2FwcGVuZFRlbXBsYXRlKGB7JHt2YWx1ZUluZGV4fX0gKHske2Rlc2NyaXB0aW9uSW5kZXh9fSlgKTtcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25WYWx1ZVwiOlxuXHRcdFx0XHRcdHZhbHVlSW5kZXggPSBfcHVzaFVuaXF1ZShwYXRoLCBwcm9wZXJ0eSk7XG5cdFx0XHRcdFx0ZGVzY3JpcHRpb25JbmRleCA9IF9wdXNoVW5pcXVlKHRleHRBbm5vdGF0aW9uUHJvcGVydHlQYXRoLCB0ZXh0QW5ub3RhdGlvbi4kdGFyZ2V0KTtcblx0XHRcdFx0XHRfYXBwZW5kVGVtcGxhdGUoYHske2Rlc2NyaXB0aW9uSW5kZXh9fSAoeyR7dmFsdWVJbmRleH19KWApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHQvLyBubyBkZWZhdWx0XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIENoZWNrIGZvciBmaWVsZCBjb250YWluaW5nIEN1cnJlbmN5IE9yIFVuaXQgUHJvcGVydGllcyBvciBUaW1lem9uZVxuXHRcdFx0Y29uc3QgY3VycmVuY3lPclVvTVByb3BlcnR5ID0gZ2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHkocHJvcGVydHkpIHx8IGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkocHJvcGVydHkpO1xuXHRcdFx0Y29uc3QgY3VycmVuY3lPclVuaXRBbm5vdGF0aW9uID0gcHJvcGVydHk/LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kgfHwgcHJvcGVydHk/LmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdDtcblx0XHRcdGNvbnN0IHRpbWV6b25lUHJvcGVydHkgPSBnZXRBc3NvY2lhdGVkVGltZXpvbmVQcm9wZXJ0eShwcm9wZXJ0eSk7XG5cdFx0XHRjb25zdCB0aW1lem9uZUFubm90YXRpb24gPSBwcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGltZXpvbmU7XG5cblx0XHRcdGlmIChjdXJyZW5jeU9yVW9NUHJvcGVydHkgJiYgY3VycmVuY3lPclVuaXRBbm5vdGF0aW9uPy4kdGFyZ2V0KSB7XG5cdFx0XHRcdHZhbHVlSW5kZXggPSBfcHVzaFVuaXF1ZShwYXRoLCBwcm9wZXJ0eSk7XG5cdFx0XHRcdGN1cnJlbmN5T3JVb01JbmRleCA9IF9wdXNoVW5pcXVlKGN1cnJlbmN5T3JVb01Qcm9wZXJ0eS5uYW1lLCBjdXJyZW5jeU9yVW5pdEFubm90YXRpb24uJHRhcmdldCk7XG5cdFx0XHRcdGlmIChhZGRVbml0SW5UZW1wbGF0ZSkge1xuXHRcdFx0XHRcdF9hcHBlbmRUZW1wbGF0ZShgeyR7dmFsdWVJbmRleH19ICB7JHtjdXJyZW5jeU9yVW9NSW5kZXh9fWApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzLmV4cG9ydFVuaXROYW1lID0gY3VycmVuY3lPclVvTVByb3BlcnR5Lm5hbWU7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAodGltZXpvbmVQcm9wZXJ0eSAmJiB0aW1lem9uZUFubm90YXRpb24/LiR0YXJnZXQpIHtcblx0XHRcdFx0dmFsdWVJbmRleCA9IF9wdXNoVW5pcXVlKHBhdGgsIHByb3BlcnR5KTtcblx0XHRcdFx0dGltZXpvbmVPclVvTUluZGV4ID0gX3B1c2hVbmlxdWUodGltZXpvbmVQcm9wZXJ0eS5uYW1lLCB0aW1lem9uZUFubm90YXRpb24uJHRhcmdldCk7XG5cdFx0XHRcdGlmIChhZGRVbml0SW5UZW1wbGF0ZSkge1xuXHRcdFx0XHRcdF9hcHBlbmRUZW1wbGF0ZShgeyR7dmFsdWVJbmRleH19ICB7JHt0aW1lem9uZU9yVW9NSW5kZXh9fWApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzLmV4cG9ydFRpbWV6b25lTmFtZSA9IHRpbWV6b25lUHJvcGVydHkubmFtZTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChwcm9wZXJ0eS5UYXJnZXQ/LiR0YXJnZXQ/LlZpc3VhbGl6YXRpb24pIHtcblx0XHRcdFx0Y29uc3QgZGF0YVBvaW50UHJvcGVydHk6IFByaW1pdGl2ZVR5cGUgPSBwcm9wZXJ0eS5UYXJnZXQuJHRhcmdldC5WYWx1ZS4kdGFyZ2V0O1xuXHRcdFx0XHR2YWx1ZUluZGV4ID0gX3B1c2hVbmlxdWUocGF0aCwgZGF0YVBvaW50UHJvcGVydHkpO1xuXHRcdFx0XHQvLyBOZXcgZmFrZSBwcm9wZXJ0eSBjcmVhdGVkIGZvciB0aGUgUmF0aW5nL1Byb2dyZXNzIFRhcmdldCBWYWx1ZS4gSXQnbGwgYmUgdXNlZCBmb3IgdGhlIGV4cG9ydCBvbiBzcGxpdCBtb2RlLlxuXHRcdFx0XHRfcHVzaFVuaXF1ZShwcm9wZXJ0eS5UYXJnZXQudmFsdWUsIHByb3BlcnR5LlRhcmdldC4kdGFyZ2V0KTtcblx0XHRcdFx0dGFyZ2V0VmFsdWUgPSAocHJvcGVydHkuVGFyZ2V0LiR0YXJnZXQuVGFyZ2V0VmFsdWUgfHwgcHJvcGVydHkuVGFyZ2V0LiR0YXJnZXQuTWF4aW11bVZhbHVlKS50b1N0cmluZygpO1xuXHRcdFx0XHRfYXBwZW5kVGVtcGxhdGUoYHske3ZhbHVlSW5kZXh9fS8ke3RhcmdldFZhbHVlfWApO1xuXHRcdFx0fSBlbHNlIGlmIChwcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVUk/LkRhdGFGaWVsZERlZmF1bHQ/LlRhcmdldD8uJHRhcmdldD8uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFQb2ludFR5cGUpIHtcblx0XHRcdFx0Ly8gRGF0YVBvaW50IHVzZS1jYXNlIHVzaW5nIERhdGFGaWVsZERlZmF1bHQuXG5cdFx0XHRcdGNvbnN0IGRhdGFQb2ludERlZmF1bHRQcm9wZXJ0eTogUHJpbWl0aXZlVHlwZSA9IHByb3BlcnR5LmFubm90YXRpb25zLlVJLkRhdGFGaWVsZERlZmF1bHQ7XG5cdFx0XHRcdHZhbHVlSW5kZXggPSBfcHVzaFVuaXF1ZShwYXRoLCBwcm9wZXJ0eSk7XG5cdFx0XHRcdC8vIE5ldyBmYWtlIHByb3BlcnR5IGNyZWF0ZWQgZm9yIHRoZSBSYXRpbmcvUHJvZ3Jlc3MgVGFyZ2V0IFZhbHVlLiBJdCdsbCBiZSB1c2VkIGZvciB0aGUgZXhwb3J0IG9uIHNwbGl0IG1vZGUuXG5cdFx0XHRcdF9wdXNoVW5pcXVlKGRhdGFQb2ludERlZmF1bHRQcm9wZXJ0eS5UYXJnZXQudmFsdWUsIHByb3BlcnR5KTtcblx0XHRcdFx0dGFyZ2V0VmFsdWUgPSAoXG5cdFx0XHRcdFx0ZGF0YVBvaW50RGVmYXVsdFByb3BlcnR5LlRhcmdldC4kdGFyZ2V0LlRhcmdldFZhbHVlIHx8IGRhdGFQb2ludERlZmF1bHRQcm9wZXJ0eS5UYXJnZXQuJHRhcmdldC5UYXJnZXRWYWx1ZS5NYXhpbXVtVmFsdWVcblx0XHRcdFx0KS50b1N0cmluZygpO1xuXHRcdFx0XHRfYXBwZW5kVGVtcGxhdGUoYHske3ZhbHVlSW5kZXh9fS8ke3RhcmdldFZhbHVlfWApO1xuXHRcdFx0fSBlbHNlIGlmIChwcm9wZXJ0eS5UYXJnZXQ/LiR0YXJnZXQ/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQ29udGFjdFR5cGVcIikge1xuXHRcdFx0XHRyZWxhdGVkUHJvcGVydGllcy5leHBvcnRTZXR0aW5nc0NvbnRhY3RQcm9wZXJ0eSA9XG5cdFx0XHRcdFx0cHJvcGVydHkuVGFyZ2V0LnZhbHVlLnN1YnN0cmluZygwLCBwcm9wZXJ0eS5UYXJnZXQudmFsdWUuaW5kZXhPZihcIi9cIikgKyAxKSArIHByb3BlcnR5LlRhcmdldC4kdGFyZ2V0LmZuPy5wYXRoO1xuXHRcdFx0XHR2YWx1ZUluZGV4ID0gX3B1c2hVbmlxdWUocGF0aCwgcHJvcGVydHkuVGFyZ2V0LiR0YXJnZXQuZm4uJHRhcmdldCk7XG5cdFx0XHRcdF9hcHBlbmRUZW1wbGF0ZShgeyR7dmFsdWVJbmRleH19YCk7XG5cdFx0XHR9IGVsc2UgaWYgKCFpZ25vcmVTZWxmKSB7XG5cdFx0XHRcdC8vIENvbGxlY3QgdW5kZXJseWluZyBwcm9wZXJ0eVxuXHRcdFx0XHR2YWx1ZUluZGV4ID0gX3B1c2hVbmlxdWUocGF0aCwgcHJvcGVydHkpO1xuXHRcdFx0XHRfYXBwZW5kVGVtcGxhdGUoYHske3ZhbHVlSW5kZXh9fWApO1xuXHRcdFx0XHRpZiAoY3VycmVuY3lPclVuaXRBbm5vdGF0aW9uKSB7XG5cdFx0XHRcdFx0cmVsYXRlZFByb3BlcnRpZXMuZXhwb3J0VW5pdFN0cmluZyA9IGAke2N1cnJlbmN5T3JVbml0QW5ub3RhdGlvbn1gOyAvLyBIYXJkLWNvZGVkIGN1cnJlbmN5L3VuaXRcblx0XHRcdFx0fSBlbHNlIGlmICh0aW1lem9uZUFubm90YXRpb24pIHtcblx0XHRcdFx0XHRyZWxhdGVkUHJvcGVydGllcy5leHBvcnRUaW1lem9uZVN0cmluZyA9IGAke3RpbWV6b25lQW5ub3RhdGlvbn1gOyAvLyBIYXJkLWNvZGVkIHRpbWV6b25lXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZWxhdGVkUHJvcGVydGllcyA9IF9jb2xsZWN0QWRkaXRpb25hbFByb3BlcnRpZXNGb3JBbmFseXRpY2FsVGFibGUocHJvcGVydHksIG5hdmlnYXRpb25QYXRoUHJlZml4LCB0YWJsZVR5cGUsIHJlbGF0ZWRQcm9wZXJ0aWVzKTtcblx0XHRpZiAoT2JqZWN0LmtleXMocmVsYXRlZFByb3BlcnRpZXMuYWRkaXRpb25hbFByb3BlcnRpZXMpLmxlbmd0aCA+IDAgJiYgT2JqZWN0LmtleXMocmVsYXRlZFByb3BlcnRpZXMucHJvcGVydGllcykubGVuZ3RoID09PSAwKSB7XG5cdFx0XHQvLyBDb2xsZWN0IHVuZGVybHlpbmcgcHJvcGVydHkgaWYgbm90IGNvbGxlY3RlZCBhbHJlYWR5LlxuXHRcdFx0Ly8gVGhpcyBpcyB0byBlbnN1cmUgdGhhdCBhZGRpdGlvbmFsUHJvcGVydGllcyBhcmUgbWFkZSBhdmFpbGFibGUgb25seSB0byBjb21wbGV4IHByb3BlcnR5IGluZm9zLlxuXHRcdFx0dmFsdWVJbmRleCA9IF9wdXNoVW5pcXVlKHBhdGgsIHByb3BlcnR5KTtcblx0XHRcdF9hcHBlbmRUZW1wbGF0ZShgeyR7dmFsdWVJbmRleH19YCk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHJlbGF0ZWRQcm9wZXJ0aWVzO1xufVxuXG4vKipcbiAqIENvbGxlY3QgcHJvcGVydGllcyBjb25zdW1lZCBieSBhIERhdGFGaWVsZC5cbiAqIFRoaXMgaXMgZm9yIHBvcHVsYXRpbmcgdGhlIENvbXBsZXhQcm9wZXJ0eUluZm9zIG9mIHRoZSB0YWJsZSBkZWxlZ2F0ZS5cbiAqXG4gKiBAcGFyYW0gZGF0YUZpZWxkIFRoZSBEYXRhRmllbGQgZm9yIHdoaWNoIHRoZSBwcm9wZXJ0aWVzIG5lZWQgdG8gYmUgaWRlbnRpZmllZC5cbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dC5cbiAqIEBwYXJhbSB0YWJsZVR5cGUgVGhlIHRhYmxlIHR5cGUuXG4gKiBAcGFyYW0gcmVsYXRlZFByb3BlcnRpZXMgVGhlIHByb3BlcnRpZXMgaWRlbnRpZmllZCBzbyBmYXIuXG4gKiBAcGFyYW0gaXNFbWJlZGRlZCBUcnVlIGlmIHRoZSBEYXRhRmllbGQgaXMgZW1iZWRkZWQgaW4gYW5vdGhlciBhbm5vdGF0aW9uIChlLmcuIEZpZWxkR3JvdXApLlxuICogQHJldHVybnMgVGhlIHByb3BlcnRpZXMgcmVsYXRlZCB0byB0aGUgRGF0YUZpZWxkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sbGVjdFJlbGF0ZWRQcm9wZXJ0aWVzUmVjdXJzaXZlbHkoXG5cdGRhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0dGFibGVUeXBlOiBUYWJsZVR5cGUsXG5cdHJlbGF0ZWRQcm9wZXJ0aWVzOiBDb21wbGV4UHJvcGVydHlJbmZvID0geyBwcm9wZXJ0aWVzOiB7fSwgYWRkaXRpb25hbFByb3BlcnRpZXM6IHt9IH0sXG5cdGlzRW1iZWRkZWQ6IGJvb2xlYW4gPSBmYWxzZVxuKTogQ29tcGxleFByb3BlcnR5SW5mbyB7XG5cdHN3aXRjaCAoZGF0YUZpZWxkPy4kVHlwZSkge1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkOlxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aFVybDpcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aDpcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoQWN0aW9uOlxuXHRcdFx0Y29uc3QgcHJvcGVydHkgPSBkYXRhRmllbGQuVmFsdWU7XG5cdFx0XHRyZWxhdGVkUHJvcGVydGllcyA9IGNvbGxlY3RSZWxhdGVkUHJvcGVydGllcyhcblx0XHRcdFx0cHJvcGVydHkucGF0aCxcblx0XHRcdFx0cHJvcGVydHkuJHRhcmdldCxcblx0XHRcdFx0Y29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdHRhYmxlVHlwZSxcblx0XHRcdFx0cmVsYXRlZFByb3BlcnRpZXMsXG5cdFx0XHRcdGlzRW1iZWRkZWRcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBuYXZpZ2F0aW9uUGF0aFByZWZpeCA9IF9nZXROYXZpZ2F0aW9uUGF0aFByZWZpeChwcm9wZXJ0eS5wYXRoKTtcblx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzID0gX2NvbGxlY3RBZGRpdGlvbmFsUHJvcGVydGllc0ZvckFuYWx5dGljYWxUYWJsZShcblx0XHRcdFx0ZGF0YUZpZWxkLFxuXHRcdFx0XHRuYXZpZ2F0aW9uUGF0aFByZWZpeCxcblx0XHRcdFx0dGFibGVUeXBlLFxuXHRcdFx0XHRyZWxhdGVkUHJvcGVydGllc1xuXHRcdFx0KTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb246XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQW5ub3RhdGlvbjpcblx0XHRcdHN3aXRjaCAoZGF0YUZpZWxkLlRhcmdldD8uJHRhcmdldD8uJFR5cGUpIHtcblx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5GaWVsZEdyb3VwVHlwZTpcblx0XHRcdFx0XHRkYXRhRmllbGQuVGFyZ2V0LiR0YXJnZXQuRGF0YT8uZm9yRWFjaCgoaW5uZXJEYXRhRmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMpID0+IHtcblx0XHRcdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzID0gY29sbGVjdFJlbGF0ZWRQcm9wZXJ0aWVzUmVjdXJzaXZlbHkoXG5cdFx0XHRcdFx0XHRcdGlubmVyRGF0YUZpZWxkLFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRcdFx0XHR0YWJsZVR5cGUsXG5cdFx0XHRcdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzLFxuXHRcdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YVBvaW50VHlwZTpcblx0XHRcdFx0XHRyZWxhdGVkUHJvcGVydGllcyA9IGNvbGxlY3RSZWxhdGVkUHJvcGVydGllcyhcblx0XHRcdFx0XHRcdGRhdGFGaWVsZC5UYXJnZXQuJHRhcmdldC5WYWx1ZS5wYXRoLFxuXHRcdFx0XHRcdFx0ZGF0YUZpZWxkLFxuXHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdFx0dGFibGVUeXBlLFxuXHRcdFx0XHRcdFx0cmVsYXRlZFByb3BlcnRpZXMsXG5cdFx0XHRcdFx0XHRpc0VtYmVkZGVkXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5Db250YWN0VHlwZVwiOlxuXHRcdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzID0gY29sbGVjdFJlbGF0ZWRQcm9wZXJ0aWVzKFxuXHRcdFx0XHRcdFx0ZGF0YUZpZWxkLlRhcmdldC52YWx1ZSxcblx0XHRcdFx0XHRcdGRhdGFGaWVsZCxcblx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0XHRcdHRhYmxlVHlwZSxcblx0XHRcdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzLFxuXHRcdFx0XHRcdFx0aXNFbWJlZGRlZFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblxuXHRcdGRlZmF1bHQ6XG5cdFx0XHRicmVhaztcblx0fVxuXG5cdHJldHVybiByZWxhdGVkUHJvcGVydGllcztcbn1cblxuZXhwb3J0IGNvbnN0IGdldERhdGFGaWVsZERhdGFUeXBlID0gZnVuY3Rpb24gKG9EYXRhRmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBQcm9wZXJ0eSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGxldCBzRGF0YVR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IChvRGF0YUZpZWxkIGFzIERhdGFGaWVsZEFic3RyYWN0VHlwZXMpLiRUeXBlO1xuXHRzd2l0Y2ggKHNEYXRhVHlwZSkge1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uOlxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uOlxuXHRcdFx0c0RhdGFUeXBlID0gdW5kZWZpbmVkO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZDpcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aDpcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmw6XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uOlxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbjpcblx0XHRcdHNEYXRhVHlwZSA9IChvRGF0YUZpZWxkIGFzIERhdGFGaWVsZCk/LlZhbHVlPy4kdGFyZ2V0Py50eXBlO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFubm90YXRpb246XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGNvbnN0IHNEYXRhVHlwZUZvckRhdGFGaWVsZEZvckFubm90YXRpb24gPSAob0RhdGFGaWVsZCBhcyBEYXRhRmllbGRGb3JBbm5vdGF0aW9uKS5UYXJnZXQ/LiR0YXJnZXQuJFR5cGU7XG5cdFx0XHRpZiAoc0RhdGFUeXBlRm9yRGF0YUZpZWxkRm9yQW5ub3RhdGlvbikge1xuXHRcdFx0XHRpZiAoKG9EYXRhRmllbGQgYXMgRGF0YUZpZWxkRm9yQW5ub3RhdGlvbikuVGFyZ2V0Py4kdGFyZ2V0LiRUeXBlID09PSBDb21tdW5pY2F0aW9uQW5ub3RhdGlvblR5cGVzLkNvbnRhY3RUeXBlKSB7XG5cdFx0XHRcdFx0c0RhdGFUeXBlID0gKCgob0RhdGFGaWVsZCBhcyBEYXRhRmllbGRGb3JBbm5vdGF0aW9uKS5UYXJnZXQ/LiR0YXJnZXQgYXMgQ29udGFjdCk/LmZuIGFzIGFueSkuJHRhcmdldD8udHlwZTtcblx0XHRcdFx0fSBlbHNlIGlmICgob0RhdGFGaWVsZCBhcyBEYXRhRmllbGRGb3JBbm5vdGF0aW9uKS5UYXJnZXQ/LiR0YXJnZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFQb2ludFR5cGUpIHtcblx0XHRcdFx0XHRzRGF0YVR5cGUgPVxuXHRcdFx0XHRcdFx0KChvRGF0YUZpZWxkIGFzIERhdGFGaWVsZEZvckFubm90YXRpb24pLlRhcmdldD8uJHRhcmdldCBhcyBEYXRhUG9pbnQpPy5WYWx1ZT8uJFBhdGg/LiRUeXBlIHx8XG5cdFx0XHRcdFx0XHQoKG9EYXRhRmllbGQgYXMgRGF0YUZpZWxkRm9yQW5ub3RhdGlvbikuVGFyZ2V0Py4kdGFyZ2V0IGFzIERhdGFQb2ludCk/LlZhbHVlPy4kdGFyZ2V0LnR5cGU7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gZS5nLiBGaWVsZEdyb3VwIG9yIENoYXJ0XG5cdFx0XHRcdFx0c0RhdGFUeXBlID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzRGF0YVR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0fVxuXG5cdHJldHVybiBzRGF0YVR5cGU7XG59O1xuIl19
|
|
437
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc0RhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0IiwiZGF0YUZpZWxkIiwiaGFzT3duUHJvcGVydHkiLCJpc0RhdGFGaWVsZFR5cGVzIiwiaXNEYXRhRmllbGRBbHdheXNIaWRkZW4iLCJhbm5vdGF0aW9ucyIsIlVJIiwiSGlkZGVuIiwidmFsdWVPZiIsIlZhbHVlIiwiJHRhcmdldCIsImdldFNlbWFudGljT2JqZWN0UGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJvYmplY3QiLCJwcm9wZXJ0eSIsIkNvbW1vbiIsIlNlbWFudGljT2JqZWN0IiwidW5kZWZpbmVkIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImlzUHJvcGVydHkiLCJfZ2V0TmF2aWdhdGlvblBhdGhQcmVmaXgiLCJwYXRoIiwiaW5kZXhPZiIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwiX2NvbGxlY3RBZGRpdGlvbmFsUHJvcGVydGllc0ZvckFuYWx5dGljYWxUYWJsZSIsInRhcmdldCIsIm5hdmlnYXRpb25QYXRoUHJlZml4IiwidGFibGVUeXBlIiwicmVsYXRlZFByb3BlcnRpZXMiLCJoaWRkZW5Bbm5vdGF0aW9uIiwiX3R5cGUiLCJoaWRkZW5Bbm5vdGF0aW9uUHJvcGVydHlQYXRoIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJjb2xsZWN0UmVsYXRlZFByb3BlcnRpZXMiLCJpZ25vcmVTZWxmIiwicHJvcGVydGllcyIsImFkZFVuaXRJblRlbXBsYXRlIiwiX3B1c2hVbmlxdWUiLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImtleXMiLCJfYXBwZW5kVGVtcGxhdGUiLCJleHBvcnRTZXR0aW5nc1RlbXBsYXRlIiwidGV4dEFubm90YXRpb24iLCJUZXh0IiwidmFsdWVJbmRleCIsInRhcmdldFZhbHVlIiwiY3VycmVuY3lPclVvTUluZGV4IiwidGltZXpvbmVPclVvTUluZGV4IiwiZXhwb3J0U2V0dGluZ3NXcmFwcGluZyIsImRhdGFNb2RlbE9iamVjdFBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwidGV4dEFubm90YXRpb25Qcm9wZXJ0eVBhdGgiLCJkaXNwbGF5TW9kZSIsImdldERpc3BsYXlNb2RlIiwiZGVzY3JpcHRpb25JbmRleCIsInZpc3VhbFNldHRpbmdzVG9CZUV4Y2x1ZGVkIiwiY3VycmVuY3lPclVvTVByb3BlcnR5IiwiZ2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHkiLCJnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5IiwiY3VycmVuY3lPclVuaXRBbm5vdGF0aW9uIiwiTWVhc3VyZXMiLCJJU09DdXJyZW5jeSIsIlVuaXQiLCJ0aW1lem9uZVByb3BlcnR5IiwiZ2V0QXNzb2NpYXRlZFRpbWV6b25lUHJvcGVydHkiLCJ0aW1lem9uZUFubm90YXRpb24iLCJUaW1lem9uZSIsIm5hbWUiLCJleHBvcnRVbml0TmFtZSIsImV4cG9ydFRpbWV6b25lTmFtZSIsIlRhcmdldCIsIlZpc3VhbGl6YXRpb24iLCJkYXRhUG9pbnRQcm9wZXJ0eSIsIlRhcmdldFZhbHVlIiwiTWF4aW11bVZhbHVlIiwidG9TdHJpbmciLCJEYXRhRmllbGREZWZhdWx0IiwiJFR5cGUiLCJkYXRhUG9pbnREZWZhdWx0UHJvcGVydHkiLCJleHBvcnRTZXR0aW5nc0NvbnRhY3RQcm9wZXJ0eSIsImZuIiwiZXhwb3J0VW5pdFN0cmluZyIsImV4cG9ydFRpbWV6b25lU3RyaW5nIiwibGVuZ3RoIiwiY29sbGVjdFJlbGF0ZWRQcm9wZXJ0aWVzUmVjdXJzaXZlbHkiLCJpc0VtYmVkZGVkIiwiRGF0YSIsImZvckVhY2giLCJpbm5lckRhdGFGaWVsZCIsImdldERhdGFGaWVsZERhdGFUeXBlIiwib0RhdGFGaWVsZCIsInNEYXRhVHlwZSIsInR5cGUiLCJzRGF0YVR5cGVGb3JEYXRhRmllbGRGb3JBbm5vdGF0aW9uIiwiJFBhdGgiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRhdGFGaWVsZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByaW1pdGl2ZVR5cGUsIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IENvbnRhY3QgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW11bmljYXRpb25cIjtcbmltcG9ydCB7IENvbW11bmljYXRpb25Bbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW11bmljYXRpb25cIjtcbmltcG9ydCB0eXBlIHtcblx0RGF0YUZpZWxkLFxuXHREYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHREYXRhRmllbGRGb3JBY3Rpb25BYnN0cmFjdFR5cGVzLFxuXHREYXRhRmllbGRGb3JBbm5vdGF0aW9uLFxuXHREYXRhRmllbGRUeXBlcyxcblx0RGF0YVBvaW50XG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHR5cGUgeyBUYWJsZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCB7IGdldERpc3BsYXlNb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGlzcGxheU1vZGVGb3JtYXR0ZXJcIjtcbmltcG9ydCB7XG5cdGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5LFxuXHRnZXRBc3NvY2lhdGVkVGltZXpvbmVQcm9wZXJ0eSxcblx0Z2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eSxcblx0aXNQcm9wZXJ0eVxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwiLi4vQ29udmVydGVyQ29udGV4dFwiO1xuXG5leHBvcnQgdHlwZSBDb21wbGV4UHJvcGVydHlJbmZvID0ge1xuXHRwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBQcm9wZXJ0eT47XG5cdGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBQcm9wZXJ0eT47XG5cdGV4cG9ydFNldHRpbmdzVGVtcGxhdGU/OiBzdHJpbmc7XG5cdGV4cG9ydFNldHRpbmdzV3JhcHBpbmc/OiBib29sZWFuO1xuXHRleHBvcnRTZXR0aW5nc0NvbnRhY3RQcm9wZXJ0eT86IHN0cmluZztcblx0dmlzdWFsU2V0dGluZ3NUb0JlRXhjbHVkZWQ/OiBzdHJpbmc7XG5cdGV4cG9ydFVuaXROYW1lPzogc3RyaW5nO1xuXHRleHBvcnRVbml0U3RyaW5nPzogc3RyaW5nO1xuXHRleHBvcnRUaW1lem9uZU5hbWU/OiBzdHJpbmc7XG5cdGV4cG9ydFRpbWV6b25lU3RyaW5nPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBJZGVudGlmaWVzIGlmIHRoZSBnaXZlbiBkYXRhRmllbGRBYnN0cmFjdCB0aGF0IGlzIHBhc3NlZCBpcyBhIFwiRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3RcIi5cbiAqIERhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0IGhhcyBhbiBpbmxpbmUgYWN0aW9uIGRlZmluZWQuXG4gKlxuICogQHBhcmFtIGRhdGFGaWVsZCBEYXRhRmllbGQgdG8gYmUgZXZhbHVhdGVkXG4gKiBAcmV0dXJucyBWYWxpZGF0ZXMgdGhhdCBkYXRhRmllbGQgaXMgYSBEYXRhRmllbGRGb3JBY3Rpb25BYnN0cmFjdFR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3QoZGF0YUZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzKTogZGF0YUZpZWxkIGlzIERhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0VHlwZXMge1xuXHRyZXR1cm4gKGRhdGFGaWVsZCBhcyBEYXRhRmllbGRGb3JBY3Rpb25BYnN0cmFjdFR5cGVzKS5oYXNPd25Qcm9wZXJ0eShcIkFjdGlvblwiKTtcbn1cblxuLyoqXG4gKiBJZGVudGlmaWVzIGlmIHRoZSBnaXZlbiBkYXRhRmllbGRBYnN0cmFjdCB0aGF0IGlzIHBhc3NlZCBpcyBhIFwiRGF0YUZpZWxkXCIuXG4gKiBEYXRhRmllbGQgaGFzIGEgdmFsdWUgZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0gZGF0YUZpZWxkIERhdGFGaWVsZCB0byBiZSBldmFsdWF0ZWRcbiAqIEByZXR1cm5zIFZhbGlkYXRlIHRoYXQgZGF0YUZpZWxkIGlzIGEgRGF0YUZpZWxkVHlwZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0YUZpZWxkVHlwZXMoZGF0YUZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzKTogZGF0YUZpZWxkIGlzIERhdGFGaWVsZFR5cGVzIHtcblx0cmV0dXJuIChkYXRhRmllbGQgYXMgRGF0YUZpZWxkVHlwZXMpLmhhc093blByb3BlcnR5KFwiVmFsdWVcIik7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIGdpdmVuIERhdGFGaWVsZCBoYXMgYSBzdGF0aWMgaGlkZGVuIGFubm90YXRpb24uXG4gKlxuICogQHBhcmFtIGRhdGFGaWVsZCBUaGUgRGF0YUZpZWxkIHRvIGNoZWNrXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgRGF0YUZpZWxkIG9yIHJlZmVyZW5jZWQgcHJvcGVydHkgaGFzIGEgc3RhdGljIEhpZGRlbiBhbm5vdGF0aW9uLCBmYWxzZSBlbHNlXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRhRmllbGRBbHdheXNIaWRkZW4oZGF0YUZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzKTogYm9vbGVhbiB7XG5cdHJldHVybiAoXG5cdFx0ZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkgPT09IHRydWUgfHxcblx0XHQoaXNEYXRhRmllbGRUeXBlcyhkYXRhRmllbGQpICYmIGRhdGFGaWVsZC5WYWx1ZT8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4gPT09IHRydWUpXG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZW1hbnRpY09iamVjdFBhdGgoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCwgb2JqZWN0OiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRpZiAodHlwZW9mIG9iamVjdCA9PT0gXCJvYmplY3RcIikge1xuXHRcdGlmIChpc0RhdGFGaWVsZFR5cGVzKG9iamVjdCkgJiYgb2JqZWN0LlZhbHVlPy4kdGFyZ2V0KSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eSA9IG9iamVjdC5WYWx1ZT8uJHRhcmdldDtcblx0XHRcdGlmIChwcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uU2VtYW50aWNPYmplY3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRyZXR1cm4gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKHByb3BlcnR5Py5mdWxseVF1YWxpZmllZE5hbWUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoaXNQcm9wZXJ0eShvYmplY3QpKSB7XG5cdFx0XHRpZiAob2JqZWN0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5TZW1hbnRpY09iamVjdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHJldHVybiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgob2JqZWN0Py5mdWxseVF1YWxpZmllZE5hbWUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG5hdmlnYXRpb24gcGF0aCBwcmVmaXggZm9yIGEgcHJvcGVydHkgcGF0aC5cbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcHJvcGVydHkgcGF0aCBGb3IgZS5nLiAvRW50aXR5VHlwZS9OYXZpZ2F0aW9uL1Byb3BlcnR5XG4gKiBAcmV0dXJucyBUaGUgbmF2aWdhdGlvbiBwYXRoIHByZWZpeCBGb3IgZS5nLiAvRW50aXR5VHlwZS9OYXZpZ2F0aW9uL1xuICovXG5mdW5jdGlvbiBfZ2V0TmF2aWdhdGlvblBhdGhQcmVmaXgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIHBhdGguaW5kZXhPZihcIi9cIikgPiAtMSA/IHBhdGguc3Vic3RyaW5nKDAsIHBhdGgubGFzdEluZGV4T2YoXCIvXCIpICsgMSkgOiBcIlwiO1xufVxuXG4vKipcbiAqIENvbGxlY3QgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGZvciB0aGUgQUxQIHRhYmxlIHVzZS1jYXNlLlxuICpcbiAqIEZvciBlLmcuIElmIFVJLkhpZGRlbiBwb2ludHMgdG8gYSBwcm9wZXJ0eSwgaW5jbHVkZSB0aGlzIHByb3BlcnR5IGluIHRoZSBhZGRpdGlvbmFsUHJvcGVydGllcyBvZiBDb21wbGV4UHJvcGVydHlJbmZvIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IFByb3BlcnR5IG9yIERhdGFGaWVsZCBiZWluZyBwcm9jZXNzZWRcbiAqIEBwYXJhbSBuYXZpZ2F0aW9uUGF0aFByZWZpeCBOYXZpZ2F0aW9uIHBhdGggcHJlZml4LCBhcHBsaWNhYmxlIGluIGNhc2Ugb2YgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzLlxuICogQHBhcmFtIHRhYmxlVHlwZSBUYWJsZSB0eXBlLlxuICogQHBhcmFtIHJlbGF0ZWRQcm9wZXJ0aWVzIFRoZSByZWxhdGVkIHByb3BlcnRpZXMgaWRlbnRpZmllZCBzbyBmYXIuXG4gKiBAcmV0dXJucyBUaGUgcmVsYXRlZCBwcm9wZXJ0aWVzIGlkZW50aWZpZWQuXG4gKi9cbmZ1bmN0aW9uIF9jb2xsZWN0QWRkaXRpb25hbFByb3BlcnRpZXNGb3JBbmFseXRpY2FsVGFibGUoXG5cdHRhcmdldDogUHJpbWl0aXZlVHlwZSxcblx0bmF2aWdhdGlvblBhdGhQcmVmaXg6IHN0cmluZyxcblx0dGFibGVUeXBlOiBUYWJsZVR5cGUsXG5cdHJlbGF0ZWRQcm9wZXJ0aWVzOiBDb21wbGV4UHJvcGVydHlJbmZvXG4pOiBDb21wbGV4UHJvcGVydHlJbmZvIHtcblx0aWYgKHRhYmxlVHlwZSA9PT0gXCJBbmFseXRpY2FsVGFibGVcIikge1xuXHRcdGNvbnN0IGhpZGRlbkFubm90YXRpb24gPSB0YXJnZXQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW47XG5cdFx0aWYgKGhpZGRlbkFubm90YXRpb24/LnBhdGggJiYgaGlkZGVuQW5ub3RhdGlvbi4kdGFyZ2V0Py5fdHlwZSA9PT0gXCJQcm9wZXJ0eVwiKSB7XG5cdFx0XHRjb25zdCBoaWRkZW5Bbm5vdGF0aW9uUHJvcGVydHlQYXRoID0gbmF2aWdhdGlvblBhdGhQcmVmaXggKyBoaWRkZW5Bbm5vdGF0aW9uLnBhdGg7XG5cdFx0XHQvLyBUaGlzIHByb3BlcnR5IHNob3VsZCBiZSBhZGRlZCB0byBhZGRpdGlvbmFsUHJvcGVydGllcyBtYXAgZm9yIHRoZSBBTFAgdGFibGUgdXNlLWNhc2UuXG5cdFx0XHRyZWxhdGVkUHJvcGVydGllcy5hZGRpdGlvbmFsUHJvcGVydGllc1toaWRkZW5Bbm5vdGF0aW9uUHJvcGVydHlQYXRoXSA9IGhpZGRlbkFubm90YXRpb24uJHRhcmdldDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlbGF0ZWRQcm9wZXJ0aWVzO1xufVxuXG4vKipcbiAqIENvbGxlY3QgcmVsYXRlZCBwcm9wZXJ0aWVzIGZyb20gYSBwcm9wZXJ0eSdzIGFubm90YXRpb25zLlxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBwcm9wZXJ0eSBwYXRoXG4gKiBAcGFyYW0gcHJvcGVydHkgVGhlIHByb3BlcnR5IHRvIGJlIGNvbnNpZGVyZWRcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIGlnbm9yZVNlbGYgV2hldGhlciB0byBleGNsdWRlIHRoZSBzYW1lIHByb3BlcnR5IGZyb20gcmVsYXRlZCBwcm9wZXJ0aWVzLlxuICogQHBhcmFtIHRhYmxlVHlwZSBUaGUgdGFibGUgdHlwZS5cbiAqIEBwYXJhbSByZWxhdGVkUHJvcGVydGllcyBUaGUgcmVsYXRlZCBwcm9wZXJ0aWVzIGlkZW50aWZpZWQgc28gZmFyLlxuICogQHBhcmFtIGFkZFVuaXRJblRlbXBsYXRlIFRydWUgaWYgdGhlIHVuaXQvY3VycmVuY3kgcHJvcGVydHkgbmVlZHMgdG8gYmUgYWRkZWQgaW4gdGhlIGV4cG9ydCB0ZW1wbGF0ZVxuICogQHJldHVybnMgVGhlIHJlbGF0ZWQgcHJvcGVydGllcyBpZGVudGlmaWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sbGVjdFJlbGF0ZWRQcm9wZXJ0aWVzKFxuXHRwYXRoOiBzdHJpbmcsXG5cdHByb3BlcnR5OiBQcmltaXRpdmVUeXBlLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRpZ25vcmVTZWxmOiBib29sZWFuLFxuXHR0YWJsZVR5cGU6IFRhYmxlVHlwZSxcblx0cmVsYXRlZFByb3BlcnRpZXM6IENvbXBsZXhQcm9wZXJ0eUluZm8gPSB7IHByb3BlcnRpZXM6IHt9LCBhZGRpdGlvbmFsUHJvcGVydGllczoge30gfSxcblx0YWRkVW5pdEluVGVtcGxhdGU6IGJvb2xlYW4gPSBmYWxzZVxuKTogQ29tcGxleFByb3BlcnR5SW5mbyB7XG5cdC8qKlxuXHQgKiBIZWxwZXIgdG8gcHVzaCB1bmlxdWUgcmVsYXRlZCBwcm9wZXJ0aWVzLlxuXHQgKlxuXHQgKiBAcGFyYW0ga2V5IFRoZSBwcm9wZXJ0eSBwYXRoXG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgcHJvcGVydGllcyBvYmplY3QgY29udGFpbmluZyB2YWx1ZSBwcm9wZXJ0eSwgZGVzY3JpcHRpb24gcHJvcGVydHkuLi5cblx0ICogQHJldHVybnMgSW5kZXggYXQgd2hpY2ggdGhlIHByb3BlcnR5IGlzIGF2YWlsYWJsZVxuXHQgKi9cblx0ZnVuY3Rpb24gX3B1c2hVbmlxdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBQcm9wZXJ0eSk6IG51bWJlciB7XG5cdFx0aWYgKCFyZWxhdGVkUHJvcGVydGllcy5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcblx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzLnByb3BlcnRpZXNba2V5XSA9IHZhbHVlO1xuXHRcdH1cblx0XHRyZXR1cm4gT2JqZWN0LmtleXMocmVsYXRlZFByb3BlcnRpZXMucHJvcGVydGllcykuaW5kZXhPZihrZXkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhlbHBlciB0byBhcHBlbmQgdGhlIGV4cG9ydCBzZXR0aW5ncyB0ZW1wbGF0ZSB3aXRoIGEgZm9ybWF0dGVkIHRleHQuXG5cdCAqXG5cdCAqIEBwYXJhbSB2YWx1ZSBGb3JtYXR0ZWQgdGV4dFxuXHQgKi9cblx0ZnVuY3Rpb24gX2FwcGVuZFRlbXBsYXRlKHZhbHVlOiBzdHJpbmcpIHtcblx0XHRyZWxhdGVkUHJvcGVydGllcy5leHBvcnRTZXR0aW5nc1RlbXBsYXRlID0gcmVsYXRlZFByb3BlcnRpZXMuZXhwb3J0U2V0dGluZ3NUZW1wbGF0ZVxuXHRcdFx0PyBgJHtyZWxhdGVkUHJvcGVydGllcy5leHBvcnRTZXR0aW5nc1RlbXBsYXRlfSR7dmFsdWV9YFxuXHRcdFx0OiBgJHt2YWx1ZX1gO1xuXHR9XG5cblx0aWYgKHBhdGggJiYgcHJvcGVydHkpIHtcblx0XHRjb25zdCBuYXZpZ2F0aW9uUGF0aFByZWZpeCA9IF9nZXROYXZpZ2F0aW9uUGF0aFByZWZpeChwYXRoKTtcblxuXHRcdC8vIENoZWNrIGZvciBUZXh0IGFubm90YXRpb24uXG5cdFx0Y29uc3QgdGV4dEFubm90YXRpb24gPSBwcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0O1xuXHRcdGxldCB2YWx1ZUluZGV4OiBudW1iZXI7XG5cdFx0bGV0IHRhcmdldFZhbHVlOiBzdHJpbmc7XG5cdFx0bGV0IGN1cnJlbmN5T3JVb01JbmRleDogbnVtYmVyO1xuXHRcdGxldCB0aW1lem9uZU9yVW9NSW5kZXg6IG51bWJlcjtcblxuXHRcdGlmIChyZWxhdGVkUHJvcGVydGllcy5leHBvcnRTZXR0aW5nc1RlbXBsYXRlKSB7XG5cdFx0XHQvLyBGaWVsZEdyb3VwIHVzZS1jYXNlLiBOZWVkIHRvIGFkZCBlYWNoIEZpZWxkIGluIG5ldyBsaW5lLlxuXHRcdFx0X2FwcGVuZFRlbXBsYXRlKFwiXFxuXCIpO1xuXHRcdFx0cmVsYXRlZFByb3BlcnRpZXMuZXhwb3J0U2V0dGluZ3NXcmFwcGluZyA9IHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKHRleHRBbm5vdGF0aW9uPy5wYXRoICYmIHRleHRBbm5vdGF0aW9uPy4kdGFyZ2V0KSB7XG5cdFx0XHQvLyBDaGVjayBmb3IgVGV4dCBBcnJhbmdlbWVudC5cblx0XHRcdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKTtcblx0XHRcdGNvbnN0IHRleHRBbm5vdGF0aW9uUHJvcGVydHlQYXRoID0gbmF2aWdhdGlvblBhdGhQcmVmaXggKyB0ZXh0QW5ub3RhdGlvbi5wYXRoO1xuXHRcdFx0Y29uc3QgZGlzcGxheU1vZGUgPSBnZXREaXNwbGF5TW9kZShwcm9wZXJ0eSwgZGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdFx0XHRsZXQgZGVzY3JpcHRpb25JbmRleDogbnVtYmVyO1xuXHRcdFx0c3dpdGNoIChkaXNwbGF5TW9kZSkge1xuXHRcdFx0XHRjYXNlIFwiVmFsdWVcIjpcblx0XHRcdFx0XHR2YWx1ZUluZGV4ID0gX3B1c2hVbmlxdWUocGF0aCwgcHJvcGVydHkpO1xuXHRcdFx0XHRcdF9hcHBlbmRUZW1wbGF0ZShgeyR7dmFsdWVJbmRleH19YCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdFx0Ly8gS2VlcCB2YWx1ZSB3aGVuIGV4cG9ydGluZyAoc3BsaXQgbW9kZSkgb24gdGV4dCBBcnJhbmdlbWVudCBkZWZpbmVkIGFzICNUZXh0T25seSAoT25seSB2YWx1ZXMgYXJlIGV4cGVjdGVkIG9uIHBhc3RlIGZyb20gRXhjZWwgZnVuY3Rpb25hbGl0eSlcblx0XHRcdFx0XHRfcHVzaFVuaXF1ZShwYXRoLCBwcm9wZXJ0eSk7XG5cdFx0XHRcdFx0ZGVzY3JpcHRpb25JbmRleCA9IF9wdXNoVW5pcXVlKHRleHRBbm5vdGF0aW9uUHJvcGVydHlQYXRoLCB0ZXh0QW5ub3RhdGlvbi4kdGFyZ2V0KTtcblx0XHRcdFx0XHRfYXBwZW5kVGVtcGxhdGUoYHske2Rlc2NyaXB0aW9uSW5kZXh9fWApO1xuXHRcdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzLnZpc3VhbFNldHRpbmdzVG9CZUV4Y2x1ZGVkID0gcGF0aDtcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlIFwiVmFsdWVEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRcdHZhbHVlSW5kZXggPSBfcHVzaFVuaXF1ZShwYXRoLCBwcm9wZXJ0eSk7XG5cdFx0XHRcdFx0ZGVzY3JpcHRpb25JbmRleCA9IF9wdXNoVW5pcXVlKHRleHRBbm5vdGF0aW9uUHJvcGVydHlQYXRoLCB0ZXh0QW5ub3RhdGlvbi4kdGFyZ2V0KTtcblx0XHRcdFx0XHRfYXBwZW5kVGVtcGxhdGUoYHske3ZhbHVlSW5kZXh9fSAoeyR7ZGVzY3JpcHRpb25JbmRleH19KWApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblZhbHVlXCI6XG5cdFx0XHRcdFx0dmFsdWVJbmRleCA9IF9wdXNoVW5pcXVlKHBhdGgsIHByb3BlcnR5KTtcblx0XHRcdFx0XHRkZXNjcmlwdGlvbkluZGV4ID0gX3B1c2hVbmlxdWUodGV4dEFubm90YXRpb25Qcm9wZXJ0eVBhdGgsIHRleHRBbm5vdGF0aW9uLiR0YXJnZXQpO1xuXHRcdFx0XHRcdF9hcHBlbmRUZW1wbGF0ZShgeyR7ZGVzY3JpcHRpb25JbmRleH19ICh7JHt2YWx1ZUluZGV4fX0pYCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdC8vIG5vIGRlZmF1bHRcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gQ2hlY2sgZm9yIGZpZWxkIGNvbnRhaW5pbmcgQ3VycmVuY3kgT3IgVW5pdCBQcm9wZXJ0aWVzIG9yIFRpbWV6b25lXG5cdFx0XHRjb25zdCBjdXJyZW5jeU9yVW9NUHJvcGVydHkgPSBnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eShwcm9wZXJ0eSkgfHwgZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eShwcm9wZXJ0eSk7XG5cdFx0XHRjb25zdCBjdXJyZW5jeU9yVW5pdEFubm90YXRpb24gPSBwcm9wZXJ0eT8uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5JU09DdXJyZW5jeSB8fCBwcm9wZXJ0eT8uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5Vbml0O1xuXHRcdFx0Y29uc3QgdGltZXpvbmVQcm9wZXJ0eSA9IGdldEFzc29jaWF0ZWRUaW1lem9uZVByb3BlcnR5KHByb3BlcnR5KTtcblx0XHRcdGNvbnN0IHRpbWV6b25lQW5ub3RhdGlvbiA9IHByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UaW1lem9uZTtcblxuXHRcdFx0aWYgKGN1cnJlbmN5T3JVb01Qcm9wZXJ0eSAmJiBjdXJyZW5jeU9yVW5pdEFubm90YXRpb24/LiR0YXJnZXQpIHtcblx0XHRcdFx0dmFsdWVJbmRleCA9IF9wdXNoVW5pcXVlKHBhdGgsIHByb3BlcnR5KTtcblx0XHRcdFx0Y3VycmVuY3lPclVvTUluZGV4ID0gX3B1c2hVbmlxdWUoY3VycmVuY3lPclVvTVByb3BlcnR5Lm5hbWUsIGN1cnJlbmN5T3JVbml0QW5ub3RhdGlvbi4kdGFyZ2V0KTtcblx0XHRcdFx0aWYgKGFkZFVuaXRJblRlbXBsYXRlKSB7XG5cdFx0XHRcdFx0X2FwcGVuZFRlbXBsYXRlKGB7JHt2YWx1ZUluZGV4fX0gIHske2N1cnJlbmN5T3JVb01JbmRleH19YCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmVsYXRlZFByb3BlcnRpZXMuZXhwb3J0VW5pdE5hbWUgPSBjdXJyZW5jeU9yVW9NUHJvcGVydHkubmFtZTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmICh0aW1lem9uZVByb3BlcnR5ICYmIHRpbWV6b25lQW5ub3RhdGlvbj8uJHRhcmdldCkge1xuXHRcdFx0XHR2YWx1ZUluZGV4ID0gX3B1c2hVbmlxdWUocGF0aCwgcHJvcGVydHkpO1xuXHRcdFx0XHR0aW1lem9uZU9yVW9NSW5kZXggPSBfcHVzaFVuaXF1ZSh0aW1lem9uZVByb3BlcnR5Lm5hbWUsIHRpbWV6b25lQW5ub3RhdGlvbi4kdGFyZ2V0KTtcblx0XHRcdFx0aWYgKGFkZFVuaXRJblRlbXBsYXRlKSB7XG5cdFx0XHRcdFx0X2FwcGVuZFRlbXBsYXRlKGB7JHt2YWx1ZUluZGV4fX0gIHske3RpbWV6b25lT3JVb01JbmRleH19YCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmVsYXRlZFByb3BlcnRpZXMuZXhwb3J0VGltZXpvbmVOYW1lID0gdGltZXpvbmVQcm9wZXJ0eS5uYW1lO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKHByb3BlcnR5LlRhcmdldD8uJHRhcmdldD8uVmlzdWFsaXphdGlvbikge1xuXHRcdFx0XHRjb25zdCBkYXRhUG9pbnRQcm9wZXJ0eTogUHJpbWl0aXZlVHlwZSA9IHByb3BlcnR5LlRhcmdldC4kdGFyZ2V0LlZhbHVlLiR0YXJnZXQ7XG5cdFx0XHRcdHZhbHVlSW5kZXggPSBfcHVzaFVuaXF1ZShwYXRoLCBkYXRhUG9pbnRQcm9wZXJ0eSk7XG5cdFx0XHRcdC8vIE5ldyBmYWtlIHByb3BlcnR5IGNyZWF0ZWQgZm9yIHRoZSBSYXRpbmcvUHJvZ3Jlc3MgVGFyZ2V0IFZhbHVlLiBJdCdsbCBiZSB1c2VkIGZvciB0aGUgZXhwb3J0IG9uIHNwbGl0IG1vZGUuXG5cdFx0XHRcdF9wdXNoVW5pcXVlKHByb3BlcnR5LlRhcmdldC52YWx1ZSwgcHJvcGVydHkuVGFyZ2V0LiR0YXJnZXQpO1xuXHRcdFx0XHR0YXJnZXRWYWx1ZSA9IChwcm9wZXJ0eS5UYXJnZXQuJHRhcmdldC5UYXJnZXRWYWx1ZSB8fCBwcm9wZXJ0eS5UYXJnZXQuJHRhcmdldC5NYXhpbXVtVmFsdWUpLnRvU3RyaW5nKCk7XG5cdFx0XHRcdF9hcHBlbmRUZW1wbGF0ZShgeyR7dmFsdWVJbmRleH19LyR7dGFyZ2V0VmFsdWV9YCk7XG5cdFx0XHR9IGVsc2UgaWYgKHByb3BlcnR5LmFubm90YXRpb25zPy5VST8uRGF0YUZpZWxkRGVmYXVsdD8uVGFyZ2V0Py4kdGFyZ2V0Py4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YVBvaW50VHlwZSkge1xuXHRcdFx0XHQvLyBEYXRhUG9pbnQgdXNlLWNhc2UgdXNpbmcgRGF0YUZpZWxkRGVmYXVsdC5cblx0XHRcdFx0Y29uc3QgZGF0YVBvaW50RGVmYXVsdFByb3BlcnR5OiBQcmltaXRpdmVUeXBlID0gcHJvcGVydHkuYW5ub3RhdGlvbnMuVUkuRGF0YUZpZWxkRGVmYXVsdDtcblx0XHRcdFx0dmFsdWVJbmRleCA9IF9wdXNoVW5pcXVlKHBhdGgsIHByb3BlcnR5KTtcblx0XHRcdFx0Ly8gTmV3IGZha2UgcHJvcGVydHkgY3JlYXRlZCBmb3IgdGhlIFJhdGluZy9Qcm9ncmVzcyBUYXJnZXQgVmFsdWUuIEl0J2xsIGJlIHVzZWQgZm9yIHRoZSBleHBvcnQgb24gc3BsaXQgbW9kZS5cblx0XHRcdFx0X3B1c2hVbmlxdWUoZGF0YVBvaW50RGVmYXVsdFByb3BlcnR5LlRhcmdldC52YWx1ZSwgcHJvcGVydHkpO1xuXHRcdFx0XHR0YXJnZXRWYWx1ZSA9IChcblx0XHRcdFx0XHRkYXRhUG9pbnREZWZhdWx0UHJvcGVydHkuVGFyZ2V0LiR0YXJnZXQuVGFyZ2V0VmFsdWUgfHwgZGF0YVBvaW50RGVmYXVsdFByb3BlcnR5LlRhcmdldC4kdGFyZ2V0LlRhcmdldFZhbHVlLk1heGltdW1WYWx1ZVxuXHRcdFx0XHQpLnRvU3RyaW5nKCk7XG5cdFx0XHRcdF9hcHBlbmRUZW1wbGF0ZShgeyR7dmFsdWVJbmRleH19LyR7dGFyZ2V0VmFsdWV9YCk7XG5cdFx0XHR9IGVsc2UgaWYgKHByb3BlcnR5LlRhcmdldD8uJHRhcmdldD8uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5Db250YWN0VHlwZVwiKSB7XG5cdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzLmV4cG9ydFNldHRpbmdzQ29udGFjdFByb3BlcnR5ID1cblx0XHRcdFx0XHRwcm9wZXJ0eS5UYXJnZXQudmFsdWUuc3Vic3RyaW5nKDAsIHByb3BlcnR5LlRhcmdldC52YWx1ZS5pbmRleE9mKFwiL1wiKSArIDEpICsgcHJvcGVydHkuVGFyZ2V0LiR0YXJnZXQuZm4/LnBhdGg7XG5cdFx0XHRcdHZhbHVlSW5kZXggPSBfcHVzaFVuaXF1ZShwYXRoLCBwcm9wZXJ0eS5UYXJnZXQuJHRhcmdldC5mbi4kdGFyZ2V0KTtcblx0XHRcdFx0X2FwcGVuZFRlbXBsYXRlKGB7JHt2YWx1ZUluZGV4fX1gKTtcblx0XHRcdH0gZWxzZSBpZiAoIWlnbm9yZVNlbGYpIHtcblx0XHRcdFx0Ly8gQ29sbGVjdCB1bmRlcmx5aW5nIHByb3BlcnR5XG5cdFx0XHRcdHZhbHVlSW5kZXggPSBfcHVzaFVuaXF1ZShwYXRoLCBwcm9wZXJ0eSk7XG5cdFx0XHRcdF9hcHBlbmRUZW1wbGF0ZShgeyR7dmFsdWVJbmRleH19YCk7XG5cdFx0XHRcdGlmIChjdXJyZW5jeU9yVW5pdEFubm90YXRpb24pIHtcblx0XHRcdFx0XHRyZWxhdGVkUHJvcGVydGllcy5leHBvcnRVbml0U3RyaW5nID0gYCR7Y3VycmVuY3lPclVuaXRBbm5vdGF0aW9ufWA7IC8vIEhhcmQtY29kZWQgY3VycmVuY3kvdW5pdFxuXHRcdFx0XHR9IGVsc2UgaWYgKHRpbWV6b25lQW5ub3RhdGlvbikge1xuXHRcdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzLmV4cG9ydFRpbWV6b25lU3RyaW5nID0gYCR7dGltZXpvbmVBbm5vdGF0aW9ufWA7IC8vIEhhcmQtY29kZWQgdGltZXpvbmVcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJlbGF0ZWRQcm9wZXJ0aWVzID0gX2NvbGxlY3RBZGRpdGlvbmFsUHJvcGVydGllc0ZvckFuYWx5dGljYWxUYWJsZShwcm9wZXJ0eSwgbmF2aWdhdGlvblBhdGhQcmVmaXgsIHRhYmxlVHlwZSwgcmVsYXRlZFByb3BlcnRpZXMpO1xuXHRcdGlmIChPYmplY3Qua2V5cyhyZWxhdGVkUHJvcGVydGllcy5hZGRpdGlvbmFsUHJvcGVydGllcykubGVuZ3RoID4gMCAmJiBPYmplY3Qua2V5cyhyZWxhdGVkUHJvcGVydGllcy5wcm9wZXJ0aWVzKS5sZW5ndGggPT09IDApIHtcblx0XHRcdC8vIENvbGxlY3QgdW5kZXJseWluZyBwcm9wZXJ0eSBpZiBub3QgY29sbGVjdGVkIGFscmVhZHkuXG5cdFx0XHQvLyBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IGFkZGl0aW9uYWxQcm9wZXJ0aWVzIGFyZSBtYWRlIGF2YWlsYWJsZSBvbmx5IHRvIGNvbXBsZXggcHJvcGVydHkgaW5mb3MuXG5cdFx0XHR2YWx1ZUluZGV4ID0gX3B1c2hVbmlxdWUocGF0aCwgcHJvcGVydHkpO1xuXHRcdFx0X2FwcGVuZFRlbXBsYXRlKGB7JHt2YWx1ZUluZGV4fX1gKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmVsYXRlZFByb3BlcnRpZXM7XG59XG5cbi8qKlxuICogQ29sbGVjdCBwcm9wZXJ0aWVzIGNvbnN1bWVkIGJ5IGEgRGF0YUZpZWxkLlxuICogVGhpcyBpcyBmb3IgcG9wdWxhdGluZyB0aGUgQ29tcGxleFByb3BlcnR5SW5mb3Mgb2YgdGhlIHRhYmxlIGRlbGVnYXRlLlxuICpcbiAqIEBwYXJhbSBkYXRhRmllbGQgVGhlIERhdGFGaWVsZCBmb3Igd2hpY2ggdGhlIHByb3BlcnRpZXMgbmVlZCB0byBiZSBpZGVudGlmaWVkLlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0LlxuICogQHBhcmFtIHRhYmxlVHlwZSBUaGUgdGFibGUgdHlwZS5cbiAqIEBwYXJhbSByZWxhdGVkUHJvcGVydGllcyBUaGUgcHJvcGVydGllcyBpZGVudGlmaWVkIHNvIGZhci5cbiAqIEBwYXJhbSBpc0VtYmVkZGVkIFRydWUgaWYgdGhlIERhdGFGaWVsZCBpcyBlbWJlZGRlZCBpbiBhbm90aGVyIGFubm90YXRpb24gKGUuZy4gRmllbGRHcm91cCkuXG4gKiBAcmV0dXJucyBUaGUgcHJvcGVydGllcyByZWxhdGVkIHRvIHRoZSBEYXRhRmllbGQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xsZWN0UmVsYXRlZFByb3BlcnRpZXNSZWN1cnNpdmVseShcblx0ZGF0YUZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHR0YWJsZVR5cGU6IFRhYmxlVHlwZSxcblx0cmVsYXRlZFByb3BlcnRpZXM6IENvbXBsZXhQcm9wZXJ0eUluZm8gPSB7IHByb3BlcnRpZXM6IHt9LCBhZGRpdGlvbmFsUHJvcGVydGllczoge30gfSxcblx0aXNFbWJlZGRlZDogYm9vbGVhbiA9IGZhbHNlXG4pOiBDb21wbGV4UHJvcGVydHlJbmZvIHtcblx0c3dpdGNoIChkYXRhRmllbGQ/LiRUeXBlKSB7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGQ6XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoVXJsOlxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoOlxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvbjpcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhBY3Rpb246XG5cdFx0XHRjb25zdCBwcm9wZXJ0eSA9IGRhdGFGaWVsZC5WYWx1ZTtcblx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzID0gY29sbGVjdFJlbGF0ZWRQcm9wZXJ0aWVzKFxuXHRcdFx0XHRwcm9wZXJ0eS5wYXRoLFxuXHRcdFx0XHRwcm9wZXJ0eS4kdGFyZ2V0LFxuXHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0dGFibGVUeXBlLFxuXHRcdFx0XHRyZWxhdGVkUHJvcGVydGllcyxcblx0XHRcdFx0aXNFbWJlZGRlZFxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IG5hdmlnYXRpb25QYXRoUHJlZml4ID0gX2dldE5hdmlnYXRpb25QYXRoUHJlZml4KHByb3BlcnR5LnBhdGgpO1xuXHRcdFx0cmVsYXRlZFByb3BlcnRpZXMgPSBfY29sbGVjdEFkZGl0aW9uYWxQcm9wZXJ0aWVzRm9yQW5hbHl0aWNhbFRhYmxlKFxuXHRcdFx0XHRkYXRhRmllbGQsXG5cdFx0XHRcdG5hdmlnYXRpb25QYXRoUHJlZml4LFxuXHRcdFx0XHR0YWJsZVR5cGUsXG5cdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzXG5cdFx0XHQpO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFjdGlvbjpcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbjpcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBbm5vdGF0aW9uOlxuXHRcdFx0c3dpdGNoIChkYXRhRmllbGQuVGFyZ2V0Py4kdGFyZ2V0Py4kVHlwZSkge1xuXHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkZpZWxkR3JvdXBUeXBlOlxuXHRcdFx0XHRcdGRhdGFGaWVsZC5UYXJnZXQuJHRhcmdldC5EYXRhPy5mb3JFYWNoKChpbm5lckRhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcykgPT4ge1xuXHRcdFx0XHRcdFx0cmVsYXRlZFByb3BlcnRpZXMgPSBjb2xsZWN0UmVsYXRlZFByb3BlcnRpZXNSZWN1cnNpdmVseShcblx0XHRcdFx0XHRcdFx0aW5uZXJEYXRhRmllbGQsXG5cdFx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHRcdFx0XHRcdHRhYmxlVHlwZSxcblx0XHRcdFx0XHRcdFx0cmVsYXRlZFByb3BlcnRpZXMsXG5cdFx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlOlxuXHRcdFx0XHRcdHJlbGF0ZWRQcm9wZXJ0aWVzID0gY29sbGVjdFJlbGF0ZWRQcm9wZXJ0aWVzKFxuXHRcdFx0XHRcdFx0ZGF0YUZpZWxkLlRhcmdldC4kdGFyZ2V0LlZhbHVlLnBhdGgsXG5cdFx0XHRcdFx0XHRkYXRhRmllbGQsXG5cdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdFx0XHR0YWJsZVR5cGUsXG5cdFx0XHRcdFx0XHRyZWxhdGVkUHJvcGVydGllcyxcblx0XHRcdFx0XHRcdGlzRW1iZWRkZWRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLkNvbnRhY3RUeXBlXCI6XG5cdFx0XHRcdFx0cmVsYXRlZFByb3BlcnRpZXMgPSBjb2xsZWN0UmVsYXRlZFByb3BlcnRpZXMoXG5cdFx0XHRcdFx0XHRkYXRhRmllbGQuVGFyZ2V0LnZhbHVlLFxuXHRcdFx0XHRcdFx0ZGF0YUZpZWxkLFxuXHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdFx0dGFibGVUeXBlLFxuXHRcdFx0XHRcdFx0cmVsYXRlZFByb3BlcnRpZXMsXG5cdFx0XHRcdFx0XHRpc0VtYmVkZGVkXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXG5cdFx0ZGVmYXVsdDpcblx0XHRcdGJyZWFrO1xuXHR9XG5cblx0cmV0dXJuIHJlbGF0ZWRQcm9wZXJ0aWVzO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0RGF0YUZpZWxkRGF0YVR5cGUgPSBmdW5jdGlvbiAob0RhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IFByb3BlcnR5KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0bGV0IHNEYXRhVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gKG9EYXRhRmllbGQgYXMgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcykuJFR5cGU7XG5cdHN3aXRjaCAoc0RhdGFUeXBlKSB7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb246XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0XHRzRGF0YVR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkOlxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoOlxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aFVybDpcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoQWN0aW9uOlxuXHRcdFx0c0RhdGFUeXBlID0gKG9EYXRhRmllbGQgYXMgRGF0YUZpZWxkKT8uVmFsdWU/LiR0YXJnZXQ/LnR5cGU7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQW5ub3RhdGlvbjpcblx0XHRkZWZhdWx0OlxuXHRcdFx0Y29uc3Qgc0RhdGFUeXBlRm9yRGF0YUZpZWxkRm9yQW5ub3RhdGlvbiA9IChvRGF0YUZpZWxkIGFzIERhdGFGaWVsZEZvckFubm90YXRpb24pLlRhcmdldD8uJHRhcmdldC4kVHlwZTtcblx0XHRcdGlmIChzRGF0YVR5cGVGb3JEYXRhRmllbGRGb3JBbm5vdGF0aW9uKSB7XG5cdFx0XHRcdGlmICgob0RhdGFGaWVsZCBhcyBEYXRhRmllbGRGb3JBbm5vdGF0aW9uKS5UYXJnZXQ/LiR0YXJnZXQuJFR5cGUgPT09IENvbW11bmljYXRpb25Bbm5vdGF0aW9uVHlwZXMuQ29udGFjdFR5cGUpIHtcblx0XHRcdFx0XHRzRGF0YVR5cGUgPSAoKChvRGF0YUZpZWxkIGFzIERhdGFGaWVsZEZvckFubm90YXRpb24pLlRhcmdldD8uJHRhcmdldCBhcyBDb250YWN0KT8uZm4gYXMgYW55KS4kdGFyZ2V0Py50eXBlO1xuXHRcdFx0XHR9IGVsc2UgaWYgKChvRGF0YUZpZWxkIGFzIERhdGFGaWVsZEZvckFubm90YXRpb24pLlRhcmdldD8uJHRhcmdldC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YVBvaW50VHlwZSkge1xuXHRcdFx0XHRcdHNEYXRhVHlwZSA9XG5cdFx0XHRcdFx0XHQoKG9EYXRhRmllbGQgYXMgRGF0YUZpZWxkRm9yQW5ub3RhdGlvbikuVGFyZ2V0Py4kdGFyZ2V0IGFzIERhdGFQb2ludCk/LlZhbHVlPy4kUGF0aD8uJFR5cGUgfHxcblx0XHRcdFx0XHRcdCgob0RhdGFGaWVsZCBhcyBEYXRhRmllbGRGb3JBbm5vdGF0aW9uKS5UYXJnZXQ/LiR0YXJnZXQgYXMgRGF0YVBvaW50KT8uVmFsdWU/LiR0YXJnZXQudHlwZTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBlLmcuIEZpZWxkR3JvdXAgb3IgQ2hhcnRcblx0XHRcdFx0XHQvLyBGaWVsZEdyb3VwIFByb3BlcnRpZXMgaGF2ZSBubyB0eXBlLCBzbyB3ZSBkZWZpbmUgaXQgYXMgYSBib29sZWFuIHR5cGUgdG8gcHJldmVudCBleGNlcHRpb25zIGR1cmluZyB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIHdpZHRoXG5cdFx0XHRcdFx0c0RhdGFUeXBlID1cblx0XHRcdFx0XHRcdChvRGF0YUZpZWxkIGFzIERhdGFGaWVsZEZvckFubm90YXRpb24pLlRhcmdldD8uJHRhcmdldC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydERlZmluaXRpb25UeXBlXCJcblx0XHRcdFx0XHRcdFx0PyB1bmRlZmluZWRcblx0XHRcdFx0XHRcdFx0OiBcIkVkbS5Cb29sZWFuXCI7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNEYXRhVHlwZSA9IHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHR9XG5cblx0cmV0dXJuIHNEYXRhVHlwZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7O0VBbUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU0EsNEJBQVQsQ0FBc0NDLFNBQXRDLEVBQXVIO0lBQzdILE9BQVFBLFNBQUQsQ0FBK0NDLGNBQS9DLENBQThELFFBQTlELENBQVA7RUFDQTtFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztFQUNPLFNBQVNDLGdCQUFULENBQTBCRixTQUExQixFQUEwRjtJQUNoRyxPQUFRQSxTQUFELENBQThCQyxjQUE5QixDQUE2QyxPQUE3QyxDQUFQO0VBQ0E7RUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7RUFDTyxTQUFTRSx1QkFBVCxDQUFpQ0gsU0FBakMsRUFBNkU7SUFBQTs7SUFDbkYsT0FDQywwQkFBQUEsU0FBUyxDQUFDSSxXQUFWLDBHQUF1QkMsRUFBdkIsNEdBQTJCQyxNQUEzQixrRkFBbUNDLE9BQW5DLFFBQWlELElBQWpELElBQ0NMLGdCQUFnQixDQUFDRixTQUFELENBQWhCLElBQStCLHFCQUFBQSxTQUFTLENBQUNRLEtBQVYsK0ZBQWlCQyxPQUFqQiwwR0FBMEJMLFdBQTFCLDRHQUF1Q0MsRUFBdkMsa0ZBQTJDQyxNQUEzQyxNQUFzRCxJQUZ2RjtFQUlBOzs7O0VBRU0sU0FBU0kscUJBQVQsQ0FBK0JDLGdCQUEvQixFQUFtRUMsTUFBbkUsRUFBb0c7SUFDMUcsSUFBSSxPQUFPQSxNQUFQLEtBQWtCLFFBQXRCLEVBQWdDO01BQUE7O01BQy9CLElBQUlWLGdCQUFnQixDQUFDVSxNQUFELENBQWhCLHFCQUE0QkEsTUFBTSxDQUFDSixLQUFuQywwQ0FBNEIsY0FBY0MsT0FBOUMsRUFBdUQ7UUFBQTs7UUFDdEQsSUFBTUksUUFBUSxxQkFBR0QsTUFBTSxDQUFDSixLQUFWLG1EQUFHLGVBQWNDLE9BQS9COztRQUNBLElBQUksQ0FBQUksUUFBUSxTQUFSLElBQUFBLFFBQVEsV0FBUixxQ0FBQUEsUUFBUSxDQUFFVCxXQUFWLDBHQUF1QlUsTUFBdkIsa0ZBQStCQyxjQUEvQixNQUFrREMsU0FBdEQsRUFBaUU7VUFDaEUsT0FBT0wsZ0JBQWdCLENBQUNNLCtCQUFqQixDQUFpREosUUFBakQsYUFBaURBLFFBQWpELHVCQUFpREEsUUFBUSxDQUFFSyxrQkFBM0QsQ0FBUDtRQUNBO01BQ0QsQ0FMRCxNQUtPLElBQUlDLFVBQVUsQ0FBQ1AsTUFBRCxDQUFkLEVBQXdCO1FBQUE7O1FBQzlCLElBQUksQ0FBQUEsTUFBTSxTQUFOLElBQUFBLE1BQU0sV0FBTixtQ0FBQUEsTUFBTSxDQUFFUixXQUFSLHFHQUFxQlUsTUFBckIsZ0ZBQTZCQyxjQUE3QixNQUFnREMsU0FBcEQsRUFBK0Q7VUFDOUQsT0FBT0wsZ0JBQWdCLENBQUNNLCtCQUFqQixDQUFpREwsTUFBakQsYUFBaURBLE1BQWpELHVCQUFpREEsTUFBTSxDQUFFTSxrQkFBekQsQ0FBUDtRQUNBO01BQ0Q7SUFDRDs7SUFDRCxPQUFPRixTQUFQO0VBQ0E7RUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0VBQ0EsU0FBU0ksd0JBQVQsQ0FBa0NDLElBQWxDLEVBQXdEO0lBQ3ZELE9BQU9BLElBQUksQ0FBQ0MsT0FBTCxDQUFhLEdBQWIsSUFBb0IsQ0FBQyxDQUFyQixHQUF5QkQsSUFBSSxDQUFDRSxTQUFMLENBQWUsQ0FBZixFQUFrQkYsSUFBSSxDQUFDRyxXQUFMLENBQWlCLEdBQWpCLElBQXdCLENBQTFDLENBQXpCLEdBQXdFLEVBQS9FO0VBQ0E7RUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7RUFDQSxTQUFTQyw4Q0FBVCxDQUNDQyxNQURELEVBRUNDLG9CQUZELEVBR0NDLFNBSEQsRUFJQ0MsaUJBSkQsRUFLdUI7SUFDdEIsSUFBSUQsU0FBUyxLQUFLLGlCQUFsQixFQUFxQztNQUFBOztNQUNwQyxJQUFNRSxnQkFBZ0IsMEJBQUdKLE1BQU0sQ0FBQ3RCLFdBQVYsaUZBQUcsb0JBQW9CQyxFQUF2QiwwREFBRyxzQkFBd0JDLE1BQWpEOztNQUNBLElBQUl3QixnQkFBZ0IsU0FBaEIsSUFBQUEsZ0JBQWdCLFdBQWhCLElBQUFBLGdCQUFnQixDQUFFVCxJQUFsQixJQUEwQiwwQkFBQVMsZ0JBQWdCLENBQUNyQixPQUFqQixnRkFBMEJzQixLQUExQixNQUFvQyxVQUFsRSxFQUE4RTtRQUM3RSxJQUFNQyw0QkFBNEIsR0FBR0wsb0JBQW9CLEdBQUdHLGdCQUFnQixDQUFDVCxJQUE3RSxDQUQ2RSxDQUU3RTs7UUFDQVEsaUJBQWlCLENBQUNJLG9CQUFsQixDQUF1Q0QsNEJBQXZDLElBQXVFRixnQkFBZ0IsQ0FBQ3JCLE9BQXhGO01BQ0E7SUFDRDs7SUFDRCxPQUFPb0IsaUJBQVA7RUFDQTtFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0VBQ08sU0FBU0ssd0JBQVQsQ0FDTmIsSUFETSxFQUVOUixRQUZNLEVBR05GLGdCQUhNLEVBSU53QixVQUpNLEVBS05QLFNBTE0sRUFRZ0I7SUFBQSxJQUZ0QkMsaUJBRXNCLHVFQUZtQjtNQUFFTyxVQUFVLEVBQUUsRUFBZDtNQUFrQkgsb0JBQW9CLEVBQUU7SUFBeEMsQ0FFbkI7SUFBQSxJQUR0QkksaUJBQ3NCLHVFQURPLEtBQ1A7O0lBQ3RCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0MsU0FBU0MsV0FBVCxDQUFxQkMsR0FBckIsRUFBa0NDLEtBQWxDLEVBQTJEO01BQzFELElBQUksQ0FBQ1gsaUJBQWlCLENBQUNPLFVBQWxCLENBQTZCbkMsY0FBN0IsQ0FBNENzQyxHQUE1QyxDQUFMLEVBQXVEO1FBQ3REVixpQkFBaUIsQ0FBQ08sVUFBbEIsQ0FBNkJHLEdBQTdCLElBQW9DQyxLQUFwQztNQUNBOztNQUNELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZYixpQkFBaUIsQ0FBQ08sVUFBOUIsRUFBMENkLE9BQTFDLENBQWtEaUIsR0FBbEQsQ0FBUDtJQUNBO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7O0lBQ0MsU0FBU0ksZUFBVCxDQUF5QkgsS0FBekIsRUFBd0M7TUFDdkNYLGlCQUFpQixDQUFDZSxzQkFBbEIsR0FBMkNmLGlCQUFpQixDQUFDZSxzQkFBbEIsYUFDckNmLGlCQUFpQixDQUFDZSxzQkFEbUIsU0FDTUosS0FETixjQUVyQ0EsS0FGcUMsQ0FBM0M7SUFHQTs7SUFFRCxJQUFJbkIsSUFBSSxJQUFJUixRQUFaLEVBQXNCO01BQUE7O01BQ3JCLElBQU1jLG9CQUFvQixHQUFHUCx3QkFBd0IsQ0FBQ0MsSUFBRCxDQUFyRCxDQURxQixDQUdyQjs7O01BQ0EsSUFBTXdCLGNBQWMsNkJBQUdoQyxRQUFRLENBQUNULFdBQVoscUZBQUcsdUJBQXNCVSxNQUF6QiwyREFBRyx1QkFBOEJnQyxJQUFyRDtNQUNBLElBQUlDLFVBQUo7TUFDQSxJQUFJQyxXQUFKO01BQ0EsSUFBSUMsa0JBQUo7TUFDQSxJQUFJQyxrQkFBSjs7TUFFQSxJQUFJckIsaUJBQWlCLENBQUNlLHNCQUF0QixFQUE4QztRQUM3QztRQUNBRCxlQUFlLENBQUMsSUFBRCxDQUFmOztRQUNBZCxpQkFBaUIsQ0FBQ3NCLHNCQUFsQixHQUEyQyxJQUEzQztNQUNBOztNQUVELElBQUlOLGNBQWMsU0FBZCxJQUFBQSxjQUFjLFdBQWQsSUFBQUEsY0FBYyxDQUFFeEIsSUFBaEIsSUFBd0J3QixjQUF4QixhQUF3QkEsY0FBeEIsZUFBd0JBLGNBQWMsQ0FBRXBDLE9BQTVDLEVBQXFEO1FBQ3BEO1FBQ0EsSUFBTTJDLG1CQUFtQixHQUFHekMsZ0JBQWdCLENBQUMwQyxzQkFBakIsRUFBNUI7UUFDQSxJQUFNQywwQkFBMEIsR0FBRzNCLG9CQUFvQixHQUFHa0IsY0FBYyxDQUFDeEIsSUFBekU7UUFDQSxJQUFNa0MsV0FBVyxHQUFHQyxjQUFjLENBQUMzQyxRQUFELEVBQVd1QyxtQkFBWCxDQUFsQztRQUNBLElBQUlLLGdCQUFKOztRQUNBLFFBQVFGLFdBQVI7VUFDQyxLQUFLLE9BQUw7WUFDQ1IsVUFBVSxHQUFHVCxXQUFXLENBQUNqQixJQUFELEVBQU9SLFFBQVAsQ0FBeEI7O1lBQ0E4QixlQUFlLFlBQUtJLFVBQUwsT0FBZjs7WUFDQTs7VUFFRCxLQUFLLGFBQUw7WUFDQztZQUNBVCxXQUFXLENBQUNqQixJQUFELEVBQU9SLFFBQVAsQ0FBWDs7WUFDQTRDLGdCQUFnQixHQUFHbkIsV0FBVyxDQUFDZ0IsMEJBQUQsRUFBNkJULGNBQWMsQ0FBQ3BDLE9BQTVDLENBQTlCOztZQUNBa0MsZUFBZSxZQUFLYyxnQkFBTCxPQUFmOztZQUNBNUIsaUJBQWlCLENBQUM2QiwwQkFBbEIsR0FBK0NyQyxJQUEvQztZQUNBOztVQUVELEtBQUssa0JBQUw7WUFDQzBCLFVBQVUsR0FBR1QsV0FBVyxDQUFDakIsSUFBRCxFQUFPUixRQUFQLENBQXhCO1lBQ0E0QyxnQkFBZ0IsR0FBR25CLFdBQVcsQ0FBQ2dCLDBCQUFELEVBQTZCVCxjQUFjLENBQUNwQyxPQUE1QyxDQUE5Qjs7WUFDQWtDLGVBQWUsWUFBS0ksVUFBTCxpQkFBc0JVLGdCQUF0QixRQUFmOztZQUNBOztVQUVELEtBQUssa0JBQUw7WUFDQ1YsVUFBVSxHQUFHVCxXQUFXLENBQUNqQixJQUFELEVBQU9SLFFBQVAsQ0FBeEI7WUFDQTRDLGdCQUFnQixHQUFHbkIsV0FBVyxDQUFDZ0IsMEJBQUQsRUFBNkJULGNBQWMsQ0FBQ3BDLE9BQTVDLENBQTlCOztZQUNBa0MsZUFBZSxZQUFLYyxnQkFBTCxpQkFBNEJWLFVBQTVCLFFBQWY7O1lBQ0E7VUFDRDtRQXpCRDtNQTJCQSxDQWpDRCxNQWlDTztRQUFBOztRQUNOO1FBQ0EsSUFBTVkscUJBQXFCLEdBQUdDLDZCQUE2QixDQUFDL0MsUUFBRCxDQUE3QixJQUEyQ2dELHlCQUF5QixDQUFDaEQsUUFBRCxDQUFsRztRQUNBLElBQU1pRCx3QkFBd0IsR0FBRyxDQUFBakQsUUFBUSxTQUFSLElBQUFBLFFBQVEsV0FBUixzQ0FBQUEsUUFBUSxDQUFFVCxXQUFWLDRHQUF1QjJELFFBQXZCLGtGQUFpQ0MsV0FBakMsTUFBZ0RuRCxRQUFoRCxhQUFnREEsUUFBaEQsaURBQWdEQSxRQUFRLENBQUVULFdBQTFELHFGQUFnRCx1QkFBdUIyRCxRQUF2RSwyREFBZ0QsdUJBQWlDRSxJQUFqRixDQUFqQztRQUNBLElBQU1DLGdCQUFnQixHQUFHQyw2QkFBNkIsQ0FBQ3RELFFBQUQsQ0FBdEQ7UUFDQSxJQUFNdUQsa0JBQWtCLEdBQUd2RCxRQUFILGFBQUdBLFFBQUgsaURBQUdBLFFBQVEsQ0FBRVQsV0FBYixzRkFBRyx1QkFBdUJVLE1BQTFCLDREQUFHLHdCQUErQnVELFFBQTFEOztRQUVBLElBQUlWLHFCQUFxQixJQUFJRyx3QkFBSixhQUFJQSx3QkFBSixlQUFJQSx3QkFBd0IsQ0FBRXJELE9BQXZELEVBQWdFO1VBQy9Ec0MsVUFBVSxHQUFHVCxXQUFXLENBQUNqQixJQUFELEVBQU9SLFFBQVAsQ0FBeEI7VUFDQW9DLGtCQUFrQixHQUFHWCxXQUFXLENBQUNxQixxQkFBcUIsQ0FBQ1csSUFBdkIsRUFBNkJSLHdCQUF3QixDQUFDckQsT0FBdEQsQ0FBaEM7O1VBQ0EsSUFBSTRCLGlCQUFKLEVBQXVCO1lBQ3RCTSxlQUFlLFlBQUtJLFVBQUwsaUJBQXNCRSxrQkFBdEIsT0FBZjtVQUNBLENBRkQsTUFFTztZQUNOcEIsaUJBQWlCLENBQUMwQyxjQUFsQixHQUFtQ1oscUJBQXFCLENBQUNXLElBQXpEO1VBQ0E7UUFDRCxDQVJELE1BUU8sSUFBSUosZ0JBQWdCLElBQUlFLGtCQUFKLGFBQUlBLGtCQUFKLGVBQUlBLGtCQUFrQixDQUFFM0QsT0FBNUMsRUFBcUQ7VUFDM0RzQyxVQUFVLEdBQUdULFdBQVcsQ0FBQ2pCLElBQUQsRUFBT1IsUUFBUCxDQUF4QjtVQUNBcUMsa0JBQWtCLEdBQUdaLFdBQVcsQ0FBQzRCLGdCQUFnQixDQUFDSSxJQUFsQixFQUF3QkYsa0JBQWtCLENBQUMzRCxPQUEzQyxDQUFoQzs7VUFDQSxJQUFJNEIsaUJBQUosRUFBdUI7WUFDdEJNLGVBQWUsWUFBS0ksVUFBTCxpQkFBc0JHLGtCQUF0QixPQUFmO1VBQ0EsQ0FGRCxNQUVPO1lBQ05yQixpQkFBaUIsQ0FBQzJDLGtCQUFsQixHQUF1Q04sZ0JBQWdCLENBQUNJLElBQXhEO1VBQ0E7UUFDRCxDQVJNLE1BUUEsd0JBQUl6RCxRQUFRLENBQUM0RCxNQUFiLHNFQUFJLGlCQUFpQmhFLE9BQXJCLGtEQUFJLHNCQUEwQmlFLGFBQTlCLEVBQTZDO1VBQ25ELElBQU1DLGlCQUFnQyxHQUFHOUQsUUFBUSxDQUFDNEQsTUFBVCxDQUFnQmhFLE9BQWhCLENBQXdCRCxLQUF4QixDQUE4QkMsT0FBdkU7VUFDQXNDLFVBQVUsR0FBR1QsV0FBVyxDQUFDakIsSUFBRCxFQUFPc0QsaUJBQVAsQ0FBeEIsQ0FGbUQsQ0FHbkQ7O1VBQ0FyQyxXQUFXLENBQUN6QixRQUFRLENBQUM0RCxNQUFULENBQWdCakMsS0FBakIsRUFBd0IzQixRQUFRLENBQUM0RCxNQUFULENBQWdCaEUsT0FBeEMsQ0FBWDs7VUFDQXVDLFdBQVcsR0FBRyxDQUFDbkMsUUFBUSxDQUFDNEQsTUFBVCxDQUFnQmhFLE9BQWhCLENBQXdCbUUsV0FBeEIsSUFBdUMvRCxRQUFRLENBQUM0RCxNQUFULENBQWdCaEUsT0FBaEIsQ0FBd0JvRSxZQUFoRSxFQUE4RUMsUUFBOUUsRUFBZDs7VUFDQW5DLGVBQWUsWUFBS0ksVUFBTCxlQUFvQkMsV0FBcEIsRUFBZjtRQUNBLENBUE0sTUFPQSxJQUFJLDRCQUFBbkMsUUFBUSxDQUFDVCxXQUFULCtHQUFzQkMsRUFBdEIsK0dBQTBCMEUsZ0JBQTFCLCtHQUE0Q04sTUFBNUMsK0dBQW9EaEUsT0FBcEQsb0ZBQTZEdUUsS0FBN0QsZ0RBQUosRUFBNEc7VUFDbEg7VUFDQSxJQUFNQyx3QkFBdUMsR0FBR3BFLFFBQVEsQ0FBQ1QsV0FBVCxDQUFxQkMsRUFBckIsQ0FBd0IwRSxnQkFBeEU7VUFDQWhDLFVBQVUsR0FBR1QsV0FBVyxDQUFDakIsSUFBRCxFQUFPUixRQUFQLENBQXhCLENBSGtILENBSWxIOztVQUNBeUIsV0FBVyxDQUFDMkMsd0JBQXdCLENBQUNSLE1BQXpCLENBQWdDakMsS0FBakMsRUFBd0MzQixRQUF4QyxDQUFYOztVQUNBbUMsV0FBVyxHQUFHLENBQ2JpQyx3QkFBd0IsQ0FBQ1IsTUFBekIsQ0FBZ0NoRSxPQUFoQyxDQUF3Q21FLFdBQXhDLElBQXVESyx3QkFBd0IsQ0FBQ1IsTUFBekIsQ0FBZ0NoRSxPQUFoQyxDQUF3Q21FLFdBQXhDLENBQW9EQyxZQUQ5RixFQUVaQyxRQUZZLEVBQWQ7O1VBR0FuQyxlQUFlLFlBQUtJLFVBQUwsZUFBb0JDLFdBQXBCLEVBQWY7UUFDQSxDQVZNLE1BVUEsSUFBSSxzQkFBQW5DLFFBQVEsQ0FBQzRELE1BQVQsaUdBQWlCaEUsT0FBakIsZ0ZBQTBCdUUsS0FBMUIsTUFBb0MsbURBQXhDLEVBQTZGO1VBQUE7O1VBQ25HbkQsaUJBQWlCLENBQUNxRCw2QkFBbEIsR0FDQ3JFLFFBQVEsQ0FBQzRELE1BQVQsQ0FBZ0JqQyxLQUFoQixDQUFzQmpCLFNBQXRCLENBQWdDLENBQWhDLEVBQW1DVixRQUFRLENBQUM0RCxNQUFULENBQWdCakMsS0FBaEIsQ0FBc0JsQixPQUF0QixDQUE4QixHQUE5QixJQUFxQyxDQUF4RSwrQkFBNkVULFFBQVEsQ0FBQzRELE1BQVQsQ0FBZ0JoRSxPQUFoQixDQUF3QjBFLEVBQXJHLDJEQUE2RSx1QkFBNEI5RCxJQUF6RyxDQUREO1VBRUEwQixVQUFVLEdBQUdULFdBQVcsQ0FBQ2pCLElBQUQsRUFBT1IsUUFBUSxDQUFDNEQsTUFBVCxDQUFnQmhFLE9BQWhCLENBQXdCMEUsRUFBeEIsQ0FBMkIxRSxPQUFsQyxDQUF4Qjs7VUFDQWtDLGVBQWUsWUFBS0ksVUFBTCxPQUFmO1FBQ0EsQ0FMTSxNQUtBLElBQUksQ0FBQ1osVUFBTCxFQUFpQjtVQUN2QjtVQUNBWSxVQUFVLEdBQUdULFdBQVcsQ0FBQ2pCLElBQUQsRUFBT1IsUUFBUCxDQUF4Qjs7VUFDQThCLGVBQWUsWUFBS0ksVUFBTCxPQUFmOztVQUNBLElBQUllLHdCQUFKLEVBQThCO1lBQzdCakMsaUJBQWlCLENBQUN1RCxnQkFBbEIsYUFBd0N0Qix3QkFBeEMsRUFENkIsQ0FDdUM7VUFDcEUsQ0FGRCxNQUVPLElBQUlNLGtCQUFKLEVBQXdCO1lBQzlCdkMsaUJBQWlCLENBQUN3RCxvQkFBbEIsYUFBNENqQixrQkFBNUMsRUFEOEIsQ0FDb0M7VUFDbEU7UUFDRDtNQUNEOztNQUVEdkMsaUJBQWlCLEdBQUdKLDhDQUE4QyxDQUFDWixRQUFELEVBQVdjLG9CQUFYLEVBQWlDQyxTQUFqQyxFQUE0Q0MsaUJBQTVDLENBQWxFOztNQUNBLElBQUlZLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZYixpQkFBaUIsQ0FBQ0ksb0JBQTlCLEVBQW9EcUQsTUFBcEQsR0FBNkQsQ0FBN0QsSUFBa0U3QyxNQUFNLENBQUNDLElBQVAsQ0FBWWIsaUJBQWlCLENBQUNPLFVBQTlCLEVBQTBDa0QsTUFBMUMsS0FBcUQsQ0FBM0gsRUFBOEg7UUFDN0g7UUFDQTtRQUNBdkMsVUFBVSxHQUFHVCxXQUFXLENBQUNqQixJQUFELEVBQU9SLFFBQVAsQ0FBeEI7O1FBQ0E4QixlQUFlLFlBQUtJLFVBQUwsT0FBZjtNQUNBO0lBQ0Q7O0lBRUQsT0FBT2xCLGlCQUFQO0VBQ0E7RUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztFQUNPLFNBQVMwRCxtQ0FBVCxDQUNOdkYsU0FETSxFQUVOVyxnQkFGTSxFQUdOaUIsU0FITSxFQU1nQjtJQUFBOztJQUFBLElBRnRCQyxpQkFFc0IsdUVBRm1CO01BQUVPLFVBQVUsRUFBRSxFQUFkO01BQWtCSCxvQkFBb0IsRUFBRTtJQUF4QyxDQUVuQjtJQUFBLElBRHRCdUQsVUFDc0IsdUVBREEsS0FDQTs7SUFDdEIsUUFBUXhGLFNBQVIsYUFBUUEsU0FBUix1QkFBUUEsU0FBUyxDQUFFZ0YsS0FBbkI7TUFDQztNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0MsSUFBTW5FLFFBQVEsR0FBR2IsU0FBUyxDQUFDUSxLQUEzQjtRQUNBcUIsaUJBQWlCLEdBQUdLLHdCQUF3QixDQUMzQ3JCLFFBQVEsQ0FBQ1EsSUFEa0MsRUFFM0NSLFFBQVEsQ0FBQ0osT0FGa0MsRUFHM0NFLGdCQUgyQyxFQUkzQyxLQUoyQyxFQUszQ2lCLFNBTDJDLEVBTTNDQyxpQkFOMkMsRUFPM0MyRCxVQVAyQyxDQUE1Qzs7UUFTQSxJQUFNN0Qsb0JBQW9CLEdBQUdQLHdCQUF3QixDQUFDUCxRQUFRLENBQUNRLElBQVYsQ0FBckQ7O1FBQ0FRLGlCQUFpQixHQUFHSiw4Q0FBOEMsQ0FDakV6QixTQURpRSxFQUVqRTJCLG9CQUZpRSxFQUdqRUMsU0FIaUUsRUFJakVDLGlCQUppRSxDQUFsRTtRQU1BOztNQUVEO01BQ0E7UUFDQzs7TUFFRDtRQUNDLDZCQUFRN0IsU0FBUyxDQUFDeUUsTUFBbEIsK0VBQVEsa0JBQWtCaEUsT0FBMUIsMERBQVEsc0JBQTJCdUUsS0FBbkM7VUFDQztZQUNDLDBCQUFBaEYsU0FBUyxDQUFDeUUsTUFBVixDQUFpQmhFLE9BQWpCLENBQXlCZ0YsSUFBekIsa0ZBQStCQyxPQUEvQixDQUF1QyxVQUFDQyxjQUFELEVBQTRDO2NBQ2xGOUQsaUJBQWlCLEdBQUcwRCxtQ0FBbUMsQ0FDdERJLGNBRHNELEVBRXREaEYsZ0JBRnNELEVBR3REaUIsU0FIc0QsRUFJdERDLGlCQUpzRCxFQUt0RCxJQUxzRCxDQUF2RDtZQU9BLENBUkQ7WUFTQTs7VUFFRDtZQUNDQSxpQkFBaUIsR0FBR0ssd0JBQXdCLENBQzNDbEMsU0FBUyxDQUFDeUUsTUFBVixDQUFpQmhFLE9BQWpCLENBQXlCRCxLQUF6QixDQUErQmEsSUFEWSxFQUUzQ3JCLFNBRjJDLEVBRzNDVyxnQkFIMkMsRUFJM0MsS0FKMkMsRUFLM0NpQixTQUwyQyxFQU0zQ0MsaUJBTjJDLEVBTzNDMkQsVUFQMkMsQ0FBNUM7WUFTQTs7VUFFRCxLQUFLLG1EQUFMO1lBQ0MzRCxpQkFBaUIsR0FBR0ssd0JBQXdCLENBQzNDbEMsU0FBUyxDQUFDeUUsTUFBVixDQUFpQmpDLEtBRDBCLEVBRTNDeEMsU0FGMkMsRUFHM0NXLGdCQUgyQyxFQUkzQyxLQUoyQyxFQUszQ2lCLFNBTDJDLEVBTTNDQyxpQkFOMkMsRUFPM0MyRCxVQVAyQyxDQUE1QztZQVNBOztVQUNEO1lBQ0M7UUFyQ0Y7O1FBdUNBOztNQUVEO1FBQ0M7SUF4RUY7O0lBMkVBLE9BQU8zRCxpQkFBUDtFQUNBOzs7O0VBRU0sSUFBTStELG9CQUFvQixHQUFHLFVBQVVDLFVBQVYsRUFBNkU7SUFBQTs7SUFDaEgsSUFBSUMsU0FBNkIsR0FBSUQsVUFBRCxDQUF1Q2IsS0FBM0U7O0lBQ0EsUUFBUWMsU0FBUjtNQUNDO01BQ0E7UUFDQ0EsU0FBUyxHQUFHOUUsU0FBWjtRQUNBOztNQUVEO01BQ0E7TUFDQTtNQUNBO01BQ0E7UUFDQzhFLFNBQVMsR0FBSUQsVUFBSixhQUFJQSxVQUFKLGlDQUFJQSxVQUFELENBQTJCckYsS0FBOUIsNkRBQUcsT0FBa0NDLE9BQXJDLG1EQUFHLGVBQTJDc0YsSUFBdkQ7UUFDQTs7TUFFRDtNQUNBO1FBQ0MsSUFBTUMsa0NBQWtDLGNBQUlILFVBQUQsQ0FBdUNwQixNQUExQyw0Q0FBRyxRQUErQ2hFLE9BQS9DLENBQXVEdUUsS0FBbEc7O1FBQ0EsSUFBSWdCLGtDQUFKLEVBQXdDO1VBQUE7O1VBQ3ZDLElBQUksYUFBQ0gsVUFBRCxDQUF1Q3BCLE1BQXZDLHNEQUErQ2hFLE9BQS9DLENBQXVEdUUsS0FBdkQseURBQUosRUFBK0c7WUFBQTs7WUFDOUdjLFNBQVMsZUFBRyxhQUFHRCxVQUFELENBQXVDcEIsTUFBekMsaUVBQUUsU0FBK0NoRSxPQUFqRCxxREFBQyxpQkFBcUUwRSxFQUF0RSxFQUFpRjFFLE9BQXBGLDZDQUFHLFNBQTBGc0YsSUFBdEc7VUFDQSxDQUZELE1BRU8sSUFBSSxhQUFDRixVQUFELENBQXVDcEIsTUFBdkMsc0RBQStDaEUsT0FBL0MsQ0FBdUR1RSxLQUF2RCxnREFBSixFQUFzRztZQUFBOztZQUM1R2MsU0FBUyxHQUNSLGFBQUVELFVBQUQsQ0FBdUNwQixNQUF4QyxpRUFBQyxTQUErQ2hFLE9BQWhELCtGQUF1RUQsS0FBdkUsMEdBQThFeUYsS0FBOUUsa0ZBQXFGakIsS0FBckYsa0JBQ0VhLFVBQUQsQ0FBdUNwQixNQUR4QyxpRUFDQyxTQUErQ2hFLE9BRGhELDhFQUNBLGlCQUF1RUQsS0FEdkUsMERBQ0Esc0JBQThFQyxPQUE5RSxDQUFzRnNGLElBRHRGLENBREQ7VUFHQSxDQUpNLE1BSUE7WUFBQTs7WUFDTjtZQUNBO1lBQ0FELFNBQVMsR0FDUixhQUFDRCxVQUFELENBQXVDcEIsTUFBdkMsc0RBQStDaEUsT0FBL0MsQ0FBdUR1RSxLQUF2RCxNQUFpRSxnREFBakUsR0FDR2hFLFNBREgsR0FFRyxhQUhKO1VBSUE7UUFDRCxDQWZELE1BZU87VUFDTjhFLFNBQVMsR0FBRzlFLFNBQVo7UUFDQTs7UUFDRDtJQW5DRjs7SUFzQ0EsT0FBTzhFLFNBQVA7RUFDQSxDQXpDTSJ9
|
|
@@ -411,7 +411,11 @@ export const getDataFieldDataType = function (oDataField: DataFieldAbstractTypes
|
|
|
411
411
|
((oDataField as DataFieldForAnnotation).Target?.$target as DataPoint)?.Value?.$target.type;
|
|
412
412
|
} else {
|
|
413
413
|
// e.g. FieldGroup or Chart
|
|
414
|
-
|
|
414
|
+
// FieldGroup Properties have no type, so we define it as a boolean type to prevent exceptions during the calculation of the width
|
|
415
|
+
sDataType =
|
|
416
|
+
(oDataField as DataFieldForAnnotation).Target?.$target.$Type === "com.sap.vocabularies.UI.v1.ChartDefinitionType"
|
|
417
|
+
? undefined
|
|
418
|
+
: "Edm.Boolean";
|
|
415
419
|
}
|
|
416
420
|
} else {
|
|
417
421
|
sDataType = undefined;
|