@sap/open.fe 1.97.0 → 1.98.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/.library +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/.theming +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/MessageButton-dbg.js +275 -62
- package/packages/sap.fe.common/src/sap/fe/common/MessageButton.js +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/MessagePopover-dbg.js +1 -0
- package/packages/sap.fe.common/src/sap/fe/common/MessagePopover.js +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/library-dbg.js +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js +3 -3
- package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +51 -46
- package/packages/sap.fe.common/src/sap/fe/common/library-preload.js.map +3 -3
- package/packages/sap.fe.common/src/sap/fe/common/library.js +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/manifest.json +3 -3
- package/packages/sap.fe.common/src/sap/fe/common/resources.json +16 -8
- package/packages/sap.fe.common/test/sap/fe/common/designtime/api.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/relnotes/changes-1.98.json +18 -0
- package/packages/sap.fe.core/src/sap/fe/core/.library +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/.theming +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/AppComponent-dbg.js +3 -1
- package/packages/sap.fe.core/src/sap/fe/core/AppComponent.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +35 -15
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI-dbg.js +13 -5
- package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/PageController-dbg.js +8 -2
- package/packages/sap.fe.core/src/sap/fe/core/PageController.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +26 -10
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent-dbg.js +13 -4
- package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper-dbg.js +124 -39
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/draft-dbg.js +49 -22
- package/packages/sap.fe.core/src/sap/fe/core/actions/draft.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +11 -8
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/operations-dbg.js +12 -8
- package/packages/sap.fe.core/src/sap/fe/core/actions/operations.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +196 -70
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +9 -2
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +19 -17
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +39 -8
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +114 -25
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.ts +112 -24
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +80 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +5 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator-dbg.js +34 -7
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +5 -2
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing-dbg.js +16 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share-dbg.js +19 -6
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +7 -7
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.ts +6 -5
- package/packages/sap.fe.core/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -1
- package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +6 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper-dbg.js +9 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper-dbg.js +0 -5
- package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +1 -1
- package/packages/{sap.fe.macros/src/sap/fe/macros/massedit → sap.fe.core/src/sap/fe/core/controls/massEdit}/MassEditDialog.fragment.xml +6 -6
- package/packages/{sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime-dbg.js → sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js} +2 -2
- package/packages/{sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime.js → sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers.js} +0 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext-dbg.js +13 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.ts +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.ts +3 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper-dbg.js +18 -7
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.ts +15 -6
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +62 -4
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.ts +60 -4
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField-dbg.js +3 -3
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +18 -10
- package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action-dbg.js +10 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.ts +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +17 -9
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.ts +9 -3
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +69 -4
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI.ts +72 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +172 -284
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.ts +228 -348
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +468 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +609 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +30 -13
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +31 -12
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +14 -6
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +26 -5
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +8 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation.ts +9 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +4 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/IssueManager.ts +3 -0
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +8 -0
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js.map +3 -3
- package/packages/sap.fe.core/src/sap/fe/core/formatters/ValueFormatter-dbg.js +30 -5
- package/packages/sap.fe.core/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/formatters/ValueFormatter.ts +25 -3
- package/packages/sap.fe.core/src/sap/fe/core/fpm/manifest.json +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +359 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.ts +388 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression-dbg.js +199 -111
- package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.ts +193 -102
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper-dbg.js +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper-dbg.js +679 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper.js +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +27 -1
- package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +23 -14
- package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +477 -411
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.js.map +4 -4
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js +47 -3
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js.map +3 -3
- package/packages/sap.fe.core/src/sap/fe/core/library.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/library.support.js +9 -3
- package/packages/sap.fe.core/src/sap/fe/core/manifest.json +10 -10
- package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +62 -0
- package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +68 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +40 -5
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +25 -3
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +23 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +23 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +27 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +25 -3
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +25 -3
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +25 -3
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +26 -4
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +25 -3
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +25 -3
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +24 -2
- package/packages/sap.fe.core/src/sap/fe/core/resources.json +483 -235
- package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +4 -3
- package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -0
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +93 -346
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory-dbg.js +31 -2
- package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.ts +30 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +8 -5
- package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.ts +11 -6
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +12 -3
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +38 -0
- package/packages/sap.fe.core/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +18 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +10 -48
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.ts +14 -46
- package/packages/sap.fe.core/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +114 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/DisplayModeFormatter.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/DisplayModeFormatter.ts +86 -0
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper-dbg.js +10 -7
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.ts +8 -6
- package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper-dbg.js +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters-dbg.js +15 -110
- package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.ts +6 -73
- package/packages/sap.fe.core/test/sap/fe/core/designtime/api.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jsmeta.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jstemplates.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/ControllerExtensionNavigationModel.js +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/CustomElementNavigationModel.js +105 -7
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/MacroNavigationModel.js +176 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/FCL/FclNavigationButtons/myViewTest.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/ChartDefault.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/ChartDefault.view.xml +0 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartQualifier/ChartQualifier.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartSelectionMode/ChartSelectionMode.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEdit/FieldEdit.controller.js +3 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldEvents/FieldEvents.controller.js +3 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/FieldFormatOptions.controller.js +3 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldNavProp/FieldNavProp.controller.js +3 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarAnnotationDefaults/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarAnnotationDefaults/FilterBarAnnotationDefaults.controller.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarAnnotationDefaults/FilterBarAnnotationDefaults.view.xml +58 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarAnnotationDefaults/localService/RootEntity.json +102 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarAnnotationDefaults/localService/ValueHelpEntity.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarAnnotationDefaults/localService/service.cds +97 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarAnnotationDefaults/manifest.json +72 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/CustomFilter.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/CustomRatingFilter.fragment.xml +8 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/CustomRatingFilterOperator.fragment.xml +17 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/CustomRatingRangeFilter.fragment.xml +8 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/FilterBarCustoms.controller.js +42 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/FilterBarCustoms.view.xml +70 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/localService/RootEntity.json +107 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/localService/ValueHelpEntity.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/localService/service.cds +152 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarCustoms/manifest.json +72 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/FilterBarDefault.controller.js +13 -6
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/FilterBarDefault.view.xml +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/ChildEntity.json +15 -674
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/MultiChildEntity.json +92 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/RootEntity.json +10 -5
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/service.cds +72 -19
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/Component.js +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/FilterBarSVandAnnotationDefaults.controller.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/FilterBarSVandAnnotationDefaults.view.xml +58 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/localService/RootEntity.json +102 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/localService/ValueHelpEntity.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/localService/service.cds +115 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/manifest.json +72 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBarAnnotationDefaults.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBarCustoms.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBarSVandAnnotationDefaults.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/DetailPage.controller.js +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/DetailPage.view.xml +15 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/EntryPage.controller.js +43 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/EntryPage.view.xml +79 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/localService/ChildEntity.json +23 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/localService/RootEntity.json +41 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/localService/ValueHelpCurrencyEntity.json +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/localService/ValueHelpEntity.js +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/localService/service.cds +144 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/manifest.json +96 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/template/Component.js +9 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/template/EntryPage.controller.js +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/template/EntryPage.view.xml +14 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidanceFreestyle.html +69 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/i18n/i18n.properties +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDefault/MicroChartDefault.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartDynamicSize/MicroChartDynamicSize.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartHideOnNoData/MicroChartHideOnNoData.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/microchart/microChartShowOnlyChart/MicroChartShowOnlyChart.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.controller.js +4 -3
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.view.xml +36 -30
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableDefault/TableDefault.controller.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableEdit/TableEdit.controller.js +3 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableEdit/TableEdit.view.xml +30 -24
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/Component.js +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/OPExtend.controller.js +17 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/localService/ChildEntity.json +9 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/localService/service.cds +46 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/manifest.json +24 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility.html +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnAdaptation.fragment.xml +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnBuildingBlockField.fragment.xml +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnButton.fragment.xml +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/localService/service.cds +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/manifest.json +7 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customElementsOverview.md +4 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFormElement/customFormElementContent/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFormElement/customFormElementContent/CustomFormElement1.fragment.xml +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFormElement/customFormElementContent/CustomFormElement2.fragment.xml +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFormElement/customFormElementContent/localService/RootEntity.json +9 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFormElement/customFormElementContent/localService/service.cds +136 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFormElement/customFormElementContent/manifest.json +90 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customFormElementContent.html +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/{CustomHeaderFacetFormElement.fragment.xml → CustomHeaderFacetBuildingBlockFormElement.fragment.xml} +0 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/{CustomHeaderFacetFormElementEdit.fragment.xml → CustomHeaderFacetBuildingBlockFormElementEdit.fragment.xml} +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/CustomHeaderFacetBuildingBlockMicroChart.fragment.xml +10 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/CustomHeaderFacetBuildingBlockMicroChartEdit.fragment.xml +5 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/CustomHeaderFacetDataPointEdit.fragment.xml +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/CustomHeaderFacetMicroChartEdit.fragment.xml +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/localService/RootEntity.json +6 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/localService/service.cds +30 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customHeaderFacet/customHeaderFacetContent/manifest.json +13 -3
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customPage/customPageContent/CustomPage.view.xml +1 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/CustomSection.fragment.xml +1 -7
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/CustomSectionFormElementAndTable.fragment.xml +0 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSection/customSectionContent/CustomSectionNavigation.fragment.xml +1 -7
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSectionContent.html +60 -27
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSection/customSubSectionContent/Component.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSection/customSubSectionContent/CustomSubSection1.fragment.xml +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSection/customSubSectionContent/CustomSubSection2.fragment.xml +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSection/customSubSectionContent/CustomSubSection3.fragment.xml +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSection/customSubSectionContent/localService/ChildEntity.json +42 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSection/customSubSectionContent/localService/RootEntity.json +9 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSection/customSubSectionContent/localService/service.cds +139 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSection/customSubSectionContent/manifest.json +104 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customSubSectionContent.html +36 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/i18n/i18n.properties +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression-AnnotationExpression.spec.js +20 -6
- package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression-AnnotationExpression.spec.ts +22 -6
- package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression.spec.js +71 -23
- package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression.spec.ts +97 -24
- package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.js +624 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +449 -140
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.js +435 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.ts +385 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/KPIManagement.spec.js +229 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/KPIManagement.spec.ts +227 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.js +235 -63
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.ts +162 -40
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandling.spec.js +115 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandling.spec.ts +95 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.js +1 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.ts +0 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.ts +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.js +11 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.ts +9 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/HeaderFacet.spec.js +18 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/HeaderFacet.spec.ts +25 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/KPI.spec.js +64 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/KPI.spec.ts +66 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.js +261 -20
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.ts +329 -19
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.js +79 -8
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.ts +128 -8
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ObjectPageConverter.spec.js +7 -7
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ObjectPageConverter.spec.ts +6 -6
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/SubSection.spec.js +22 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/SubSection.spec.ts +26 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +136 -244
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +156 -376
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.js +1267 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.ts +2150 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/KPI.spec.ts.snap +306 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/MetaModelConverter.spec.ts.snap +57 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/Table.spec.ts.snap +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/AnalyticalService.cds +137 -5
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/BindingExpression-AnnotationExpression.xml +13 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/HeaderFacets.cds +28 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/KPI.cds +191 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/MetaModelConverterContext.cds +20 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/ObjectPageConverter.cds +69 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/RoutingServiceFactory.cds +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/SideEffects.cds +26 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/Table.cds +98 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/TableNewActionOperationAvailableSticky.cds +22 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/TableTooltips.cds +43 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/ValueFormatters.spec.js +10 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/ValueFormatters.spec.ts +20 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.js +912 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.ts +981 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/__snapshots__/AppStartupHelper.spec.ts.snap +358 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/ChangePageConfiguration.spec.js +242 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/ChangePageConfiguration.spec.ts +297 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/__snapshots__/ChangePageConfiguration.spec.ts.snap +289 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/RoutingServiceFactory.spec.js +292 -366
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/RoutingServiceFactory.spec.ts +247 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.js +14 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.ts +19 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +0 -12
- package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.98.json +363 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/.library +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/.theming +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Chart.fragment.xml +5 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata-dbg.js +0 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate-dbg.js +4 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper-dbg.js +26 -24
- package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldBaseDelegate-dbg.js +90 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldBaseDelegate.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.fragment.xml +7 -6
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata-dbg.js +63 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +42 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +76 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +49 -6
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterField-dbg.designtime.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Form.fragment.xml +21 -17
- package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata-dbg.js +8 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI-dbg.js +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata-dbg.js +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +8 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/QuickViewForm.metadata-dbg.js +2 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/QuickViewForm.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Share.metadata-dbg.js +11 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/Share.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/SizeHelper-dbg.js +168 -35
- package/packages/sap.fe.macros/src/sap/fe/macros/SizeHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.fragment.xml +107 -109
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +51 -65
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI-dbg.js +9 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +5 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartHelper-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartUtils-dbg.js +2 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartUtils.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper-dbg.js +101 -16
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime-dbg.js +273 -71
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating-dbg.js +128 -32
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.ts +110 -16
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkContactContent.fragment.xml +11 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +65 -84
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/CustomFilter.fragment.xml +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils-dbg.js +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/form/DataFieldCollection.fragment.xml +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/fpm/CustomFormElement.fragment.xml +5 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata-dbg.js +72 -12
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.ts +43 -14
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.fragment.xml +13 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata-dbg.js +55 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +1 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata-dbg.js +38 -65
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/{FilterField.fragment.xml → internal/FilterField.fragment.xml} +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/{FilterField.metadata-dbg.js → internal/FilterField.metadata-dbg.js} +5 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/FilterField.metadata.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator-dbg.js +96 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.ts +116 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/collectionField/MultiValueFieldDelegate-dbg.js +7 -15
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/collectionField/MultiValueFieldDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +4 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/AmountWithCurrency.fragment.xml +5 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/DataPoint.fragment.xml +5 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ExpandableText.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/File.fragment.xml +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LabelSemanticKey.fragment.xml +5 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Link.fragment.xml +11 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWithQuickViewForm.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWrapper.fragment.xml +5 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/MdcFieldWithValueHelp.fragment.xml +48 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ObjectIdentifier.fragment.xml +140 -18
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ObjectStatus.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/SemanticKeyWithDraftIndicator.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Text.fragment.xml +6 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/CheckBox.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DatePicker.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DateTimePicker.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/File.fragment.xml +14 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/Input.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithUnit.fragment.xml +3 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithValueHelp.fragment.xml +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/TextArea.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/TimePicker.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +25 -9
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +30 -16
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Formatter-dbg.js +154 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Formatter.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Formatter.ts +146 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime-dbg.js +204 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.ts +215 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate-dbg.js +29 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelp-dbg.designtime.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelpContent.fragment.xml +0 -10
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper-dbg.js +151 -131
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/library-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js +24 -23
- package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js.map +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js +209 -188
- package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js.map +4 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/library.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/macroLibrary-dbg.js +7 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/macroLibrary.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/manifest.json +9 -9
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +36 -10
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +13 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saptrc.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +14 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +13 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +13 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +13 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +496 -354
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +53 -57
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Column.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +38 -32
- package/packages/sap.fe.macros/src/sap/fe/macros/table/QuickFilterContainer-dbg.js +12 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/table/QuickFilterContainer.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +17 -91
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableRuntime-dbg.js +4 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableRuntime.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils-dbg.js +9 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/ALPTableDelegateBaseMixin-dbg.js +3 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/ALPTableDelegateBaseMixin.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate-dbg.js +198 -71
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.fragment.xml +4 -4
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +58 -15
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.jsmeta.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.ts +1 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartHelper.spec.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartHelper.spec.ts +0 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartMacro.spec.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartMacro.spec.ts +0 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartUtils.spec.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartUtils.spec.ts +0 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/CollectionField.spec.js +21 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/CollectionField.spec.ts +20 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.ts +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.js +19 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.ts +12 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DelegateUtil.spec.js +2 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldBaseDelegate.spec.js +111 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroWithSemanticKey.spec.js +67 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroWithSemanticKey.spec.ts +81 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarDelegate.spec.js +4 -6
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarMacro.spec.js +52 -6
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarMacro.spec.ts +64 -7
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterField.spec.js +34 -4
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterField.spec.ts +46 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/PhantomUtil.spec.js +43 -4
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/PhantomUtil.spec.ts +62 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/QuickViewForm.spec.js +31 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/QuickViewForm.spec.ts +25 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.js +11 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.ts +9 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.js +40 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.ts +35 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartMacro.spec.ts.snap +42 -42
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/CollectionField.spec.ts.snap +49 -7
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap +27 -11
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroDataFieldTypes.spec.ts.snap +50 -44
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroWithSemanticKey.spec.ts.snap +146 -56
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroWithValueHelp.spec.ts.snap +16 -16
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterBarMacro.spec.ts.snap +774 -11
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterField.spec.ts.snap +70 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/MicroChart.spec.ts.snap +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/PhantomUtil.spec.ts.snap +70 -165
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +39 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/SimpleFieldMacro.spec.ts.snap +287 -170
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/TableFieldLabel.spec.ts.snap +369 -213
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/CollectionField.cds +11 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldMacroDataFieldTypes.cds +5 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldMacroWithSemanticKey.cds +17 -12
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FilterBarMacro.cds +18 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FilterBarMacroWithDefaultAnnotation.cds +155 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FilterBarMacroWithSVandAnnotation.cds +155 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FilterFieldMacro.cds +13 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/QuickViewForm.cds +36 -11
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/TableFieldLabel.cds +22 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/simpleFieldMacro.cds +8 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.js +252 -61
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.ts +277 -67
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.cds +93 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.js +118 -16
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.ts +143 -16
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/__snapshots__/FieldTemplating.spec.ts.snap +31 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/fragments/MyTestFragment.xml +3 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/fragments/MyTestSubFragment.xml +10 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.js +14 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.ts +13 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/__snapshots__/columnWidth.spec.ts.snap +131 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.js +264 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.ts +244 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/data/columnWidth.cds +238 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.js +33 -6
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.ts +40 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/ValueHelpTableDelegate.spec.js +61 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/ValueHelpTableDelegate.spec.ts +64 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/__snapshots__/TableDelegate.spec.ts.snap +1287 -32
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/data/tabledelegate.cds +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/index.json +0 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/CommonHelper.qunit.js +284 -159
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelper.qunit.js +9 -9
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelperTemplate.qunit.js +2 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormContainerTemplating.qunit.js +1 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormElementTemplating.qunit.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormTemplating.qunit.js +10 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormTemplatingTs.qunit.js +2 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/MacroMetadata.qunit.js +5 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/MicroChartContainer.qunit.js +29 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableHelper.qunit.js +6 -26
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableHelperTemplate.qunit.js +3 -8
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueListHelper.qunit.js +402 -18
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/fragments/FilterFieldMacro.fragment.xml +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/fragments/FilterFieldMacroMissingID.fragment.xml +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/fragments/TableMacro.fragment.xml +0 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.98.json +210 -0
- package/packages/sap.fe.navigation/src/sap/fe/navigation/.library +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/.theming +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/NavigationHandler-dbg.js +70 -29
- package/packages/sap.fe.navigation/src/sap/fe/navigation/NavigationHandler.js +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-dbg.js +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js +2 -2
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js +6 -5
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js.map +3 -3
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library.js +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/manifest.json +3 -3
- package/packages/sap.fe.navigation/src/sap/fe/navigation/resources.json +5 -5
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/api.json +1 -1
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.navigation/test/sap/fe/navigation/qunit/navigation/NavigationHandlerTest.qunit.js +4 -12
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.library +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.theming +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-dbg.js +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library.js +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/manifest.json +3 -3
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/api.json +1 -1
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/.library +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/.theming +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate-dbg.js +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/manifest.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/resources.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent-dbg.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ExtensionAPI-dbg.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ExtensionAPI.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReport.view.xml +2 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +85 -85
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/manifest.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation-dbg.js +6 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/MassEdit-dbg.js +96 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/MassEdit.js +6 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/Share-dbg.js +36 -21
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/Share.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState-dbg.js +53 -31
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/resources.json +20 -11
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +20 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component-dbg.js +16 -14
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ExtensionAPI-dbg.js +15 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +103 -88
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +99 -72
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/manifest.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/Paginator-dbg.js +12 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/Share-dbg.js +47 -43
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/Share.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/ViewState-dbg.js +0 -20
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/resources.json +24 -24
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +24 -5
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionContent.fragment.xml +1 -4
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionContentLazyLoader.fragment.xml +181 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionFormContent.fragment.xml +1 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionMoreFormContent.fragment.xml +1 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController-dbg.js +133 -123
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/Table.fragment.xml +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/library-dbg.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js +8 -7
- package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js.map +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js +34 -32
- package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js.map +4 -4
- package/packages/sap.fe.templates/src/sap/fe/templates/library.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/manifest.json +13 -13
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle.properties +24 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es.properties +8 -8
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr.properties +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ja.properties +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_tr.properties +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/resources.json +126 -66
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/manifest.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/api.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.jsmeta.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.js +262 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/HeaderFacet.spec.js +2 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/HeaderFacet.spec.ts +1 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/Sections.spec.js +132 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/Sections.spec.ts +131 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/HeaderFacet.spec.ts.snap +1 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/Sections.spec.ts.snap +52 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.js +229 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.ts +157 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/__snapshots__/RootContainerBaseController.spec.ts.snap +218 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/data/RootContainerBaseController.cds +64 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.98.json +201 -0
- package/packages/sap.fe.test/src/sap/fe/test/.library +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/.theming +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/JourneyRunner-dbg.js +8 -3
- package/packages/sap.fe.test/src/sap/fe/test/JourneyRunner.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/ListReport-dbg.js +8 -3
- package/packages/sap.fe.test/src/sap/fe/test/ListReport.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/ObjectPage-dbg.js +19 -11
- package/packages/sap.fe.test/src/sap/fe/test/ObjectPage.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/TemplatingTestUtils-dbg.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/TemplatingTestUtils.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper-dbg.js +211 -45
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.ts +103 -8
- package/packages/sap.fe.test/src/sap/fe/test/Utils-dbg.js +0 -12
- package/packages/sap.fe.test/src/sap/fe/test/Utils.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/BaseAPI-dbg.js +1 -7
- package/packages/sap.fe.test/src/sap/fe/test/api/BaseAPI.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/ChartAssertions-dbg.js +4 -4
- package/packages/sap.fe.test/src/sap/fe/test/api/ChartAssertions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/KPICardActions-dbg.js +43 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/KPICardActions.js +6 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/KPICardAssertions-dbg.js +19 -15
- package/packages/sap.fe.test/src/sap/fe/test/api/KPICardAssertions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/TableAssertions-dbg.js +11 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/TableAssertions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/builder/KPIBuilder-dbg.js +11 -2
- package/packages/sap.fe.test/src/sap/fe/test/builder/KPIBuilder.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/builder/MdcTableBuilder-dbg.js +22 -0
- package/packages/sap.fe.test/src/sap/fe/test/builder/MdcTableBuilder.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/library-dbg.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js +5 -4
- package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js.map +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +37 -23
- package/packages/sap.fe.test/src/sap/fe/test/library-preload.js.map +4 -4
- package/packages/sap.fe.test/src/sap/fe/test/library.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/manifest.json +3 -3
- package/packages/sap.fe.test/src/sap/fe/test/resources.json +59 -34
- package/packages/sap.fe.test/test/sap/fe/test/designtime/api.json +1 -1
- package/packages/sap.fe.test/test/sap/fe/test/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.test/test/sap/fe/test/mockserver/MockServer.js +98965 -71474
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d-dbg.js +0 -8
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d.js +0 -5
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d.ts +0 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/CreditLimitDetails.json +0 -154
- package/packages/sap.fe.core/test/sap/fe/core/qunit/TransactionHelper.qunit.js +0 -77
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarHelper-dbg.js +0 -48
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarHelper.js +0 -6
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterField.metadata.js +0 -6
- package/packages/sap.fe.macros/src/sap/fe/macros/FormWrapper.fragment.xml +0 -26
- package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditHandler-dbg.js +0 -718
- package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditHandler.js +0 -6
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FilterBarHelper.qunit.js +0 -223
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderImage.fragment.xml +0 -24
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpression) {
|
|
5
|
+
sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/ui/base/BindingParser"], function (BindingExpression, BindingParser) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var isTruthy = BindingExpression.isTruthy;
|
|
@@ -10,6 +10,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpres
|
|
|
10
10
|
var resolveBindingString = BindingExpression.resolveBindingString;
|
|
11
11
|
var transformRecursively = BindingExpression.transformRecursively;
|
|
12
12
|
var isEmpty = BindingExpression.isEmpty;
|
|
13
|
+
var length = BindingExpression.length;
|
|
13
14
|
var concat = BindingExpression.concat;
|
|
14
15
|
var ref = BindingExpression.ref;
|
|
15
16
|
var or = BindingExpression.or;
|
|
@@ -38,6 +39,29 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpres
|
|
|
38
39
|
expect(compileBinding(true)).toEqual("true");
|
|
39
40
|
expect(compileBinding(unresolveableExpression)).toEqual(undefined);
|
|
40
41
|
});
|
|
42
|
+
it("Binding Expressions", function () {
|
|
43
|
+
expect(compileBinding(bindingExpression("myPath"))).toEqual("{myPath}");
|
|
44
|
+
expect(compileBinding(bindingExpression("myPath"), true)).toEqual("%{myPath}");
|
|
45
|
+
expect(compileBinding(bindingExpression("myPath"), true, true)).toEqual("${myPath}");
|
|
46
|
+
expect(compileBinding(bindingExpression("myPath", "myModel"))).toEqual("{myModel>myPath}");
|
|
47
|
+
expect(compileBinding(bindingExpression("myPath", "myModel"), true)).toEqual("%{myModel>myPath}");
|
|
48
|
+
expect(compileBinding(bindingExpression("myPath", "myModel"), true, true)).toEqual("${myModel>myPath}"); // Not so great usage that we use in some place
|
|
49
|
+
|
|
50
|
+
var myBindingExpression = bindingExpression("myPath", "myModel");
|
|
51
|
+
myBindingExpression.targetType = "boolean";
|
|
52
|
+
expect(compileBinding(myBindingExpression)).toEqual("{path: 'myModel>myPath', targetType: 'boolean'}");
|
|
53
|
+
delete myBindingExpression.targetType;
|
|
54
|
+
myBindingExpression.formatOptions = {
|
|
55
|
+
parseKeepsEmptyString: true
|
|
56
|
+
};
|
|
57
|
+
expect(compileBinding(myBindingExpression)).toEqual("{path: 'myModel>myPath', formatOptions: {parseKeepsEmptyString: true}}");
|
|
58
|
+
delete myBindingExpression.formatOptions;
|
|
59
|
+
myBindingExpression.constraints = {};
|
|
60
|
+
expect(compileBinding(myBindingExpression)).toEqual("{path: 'myModel>myPath'}");
|
|
61
|
+
myBindingExpression.constraints.scale = 1;
|
|
62
|
+
myBindingExpression.constraints.precision = 5;
|
|
63
|
+
expect(compileBinding(myBindingExpression)).toEqual("{path: 'myModel>myPath', constraints: {scale: 1, precision: 5}}");
|
|
64
|
+
});
|
|
41
65
|
it("Comparison", function () {
|
|
42
66
|
// "equal(ifElse(x, a, a), a) --> true"
|
|
43
67
|
expect(compileBinding(equal(ifElse(bindingExpression("isEditable"), constant("A"), constant("A")), constant("A")))).toEqual("true"); //"equal(ifElse(x, b, b), a) --> false";
|
|
@@ -46,7 +70,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpres
|
|
|
46
70
|
|
|
47
71
|
expect(compileBinding(equal(ifElse(bindingExpression("isEditable"), constant("A"), constant("B")), constant("A")))).toEqual("{isEditable}"); //"(using binding expressions) equal(ifElse(x, a, b), a) --> x || b === a";
|
|
48
72
|
|
|
49
|
-
expect(compileBinding(equal(ifElse(bindingExpression("isEditable"), bindingExpression("A"), bindingExpression("B")), bindingExpression("A")))).toEqual("{=
|
|
73
|
+
expect(compileBinding(equal(ifElse(bindingExpression("isEditable"), bindingExpression("A"), bindingExpression("B")), bindingExpression("A")))).toEqual("{= %{isEditable} || %{B} === %{A}}"); //"equal(ifElse(x, a, b), c) --> no reduction";
|
|
50
74
|
|
|
51
75
|
expect(compileBinding(equal(ifElse(bindingExpression("isEditable"), bindingExpression("A"), bindingExpression("B")), constant("A")))).toEqual("{= (%{isEditable} ? %{A} : %{B}) === 'A'}");
|
|
52
76
|
var a = ifElse(bindingExpression("isEditable"), bindingExpression("A"), bindingExpression("B"));
|
|
@@ -59,9 +83,9 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpres
|
|
|
59
83
|
expect(compileBinding(equal(ifElse(bindingExpression("foo"), constant("0"), constant("1")), constant("2")))).toEqual("false");
|
|
60
84
|
expect(compileBinding(equal(ifElse(bindingExpression("foo"), bindingExpression("A"), bindingExpression("B")), bindingExpression("C")))).not.toEqual("false");
|
|
61
85
|
expect(compileBinding(equal(ifElse(bindingExpression("foo"), constant("0"), constant("1")), bindingExpression("bar")))).toEqual("{= (%{foo} ? '0' : '1') === %{bar}}");
|
|
62
|
-
expect(compileBinding(equal(ifElse(bindingExpression("foo"), constant("0"), bindingExpression("B")), constant("0")))).toEqual("{=
|
|
63
|
-
expect(compileBinding(equal(ifElse(bindingExpression("foo"), bindingExpression("B"), constant("1")), constant("1")))).toEqual("{=
|
|
64
|
-
expect(compileBinding(equal(ifElse(bindingExpression("foo"), constant("1"), bindingExpression("B")), constant("1")))).toEqual("{=
|
|
86
|
+
expect(compileBinding(equal(ifElse(bindingExpression("foo"), constant("0"), bindingExpression("B")), constant("0")))).toEqual("{= %{foo} || %{B} === '0'}");
|
|
87
|
+
expect(compileBinding(equal(ifElse(bindingExpression("foo"), bindingExpression("B"), constant("1")), constant("1")))).toEqual("{= !%{foo} || %{B} === '1'}");
|
|
88
|
+
expect(compileBinding(equal(ifElse(bindingExpression("foo"), constant("1"), bindingExpression("B")), constant("1")))).toEqual("{= %{foo} || %{B} === '1'}"); // "notEqual(a, a) --> false"
|
|
65
89
|
|
|
66
90
|
expect(compileBinding(notEqual(a, b))).toEqual("false"); // "notEqual(null, null) --> false"
|
|
67
91
|
|
|
@@ -70,6 +94,22 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpres
|
|
|
70
94
|
expect(compileBinding(notEqual(ifElse(bindingExpression("foo"), constant("0"), constant("1")), constant("2")))).toEqual("true");
|
|
71
95
|
expect(compileBinding(notEqual(ifElse(bindingExpression("foo"), bindingExpression("A"), bindingExpression("B")), bindingExpression("C")))).not.toEqual("true");
|
|
72
96
|
expect(compileBinding(notEqual(ifElse(bindingExpression("foo"), constant("0"), constant("1")), bindingExpression("bar")))).toEqual("{= (%{foo} ? '0' : '1') !== %{bar}}");
|
|
97
|
+
var dualEquality = compileBinding(equal(equal(123, bindingExpression("foo")), equal(137, bindingExpression("bar"))));
|
|
98
|
+
var dualNEquality = compileBinding(notEqual(equal(123, bindingExpression("foo")), equal(137, bindingExpression("bar"))));
|
|
99
|
+
expect(dualEquality).toEqual("{= (123 === %{foo}) === (137 === %{bar})}");
|
|
100
|
+
expect(dualNEquality).toEqual("{= (123 === %{foo}) !== (137 === %{bar})}");
|
|
101
|
+
var dualEqualityExpression = BindingParser.complexParser(dualEquality); // (123 === 123) === (137 === 137) -> true === true -> true
|
|
102
|
+
|
|
103
|
+
expect(dualEqualityExpression.formatter(123, 137)).toEqual(true); // (123 === 123) === (137 === 136) -> true === false -> false
|
|
104
|
+
|
|
105
|
+
expect(dualEqualityExpression.formatter(123, 136)).toEqual(false);
|
|
106
|
+
var dualNEqualityExpression = BindingParser.complexParser(dualNEquality); // (123 === 123) !== (137 === 137) -> true !== true -> false
|
|
107
|
+
|
|
108
|
+
expect(dualNEqualityExpression.formatter(123, 137)).toEqual(false); // (123 === 123) !== (137 === 136) -> true !== false -> true
|
|
109
|
+
|
|
110
|
+
expect(dualNEqualityExpression.formatter(123, 136)).toEqual(true); // (123 === 137) !== (137 === 137) -> false !== true -> true
|
|
111
|
+
|
|
112
|
+
expect(dualNEqualityExpression.formatter(137, 137)).toEqual(true);
|
|
73
113
|
});
|
|
74
114
|
it("Data model definition", function () {
|
|
75
115
|
expect(compileBinding(bindingExpression("editMode", "ui"))).toEqual("{ui>editMode}");
|
|
@@ -123,12 +163,12 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpres
|
|
|
123
163
|
expect(compileBinding(and(constant(true), constant(true)))).toEqual("true");
|
|
124
164
|
expect(compileBinding(and(constant(true), bindingExpression("SalesOrder")))).toEqual("{SalesOrder}");
|
|
125
165
|
expect(compileBinding(and(constant(false), bindingExpression("SalesOrder")))).toEqual("false");
|
|
126
|
-
expect(compileBinding(and(bindingExpression("isEditable", "ui"), bindingExpression("SalesOrder")))).toEqual("{=
|
|
166
|
+
expect(compileBinding(and(bindingExpression("isEditable", "ui"), bindingExpression("SalesOrder")))).toEqual("{= %{ui>isEditable} && %{SalesOrder}}");
|
|
127
167
|
var a = and(bindingExpression("a1"), bindingExpression("a2"));
|
|
128
168
|
var b = and(bindingExpression("b1"), bindingExpression("b2"));
|
|
129
|
-
expect(compileBinding(and(a, b))).toEqual("{=
|
|
130
|
-
expect(compileBinding(and(a, a))).toEqual("{=
|
|
131
|
-
expect(compileBinding(and(a, and(a, a)))).toEqual("{=
|
|
169
|
+
expect(compileBinding(and(a, b))).toEqual("{= %{a1} && %{a2} && %{b1} && %{b2}}");
|
|
170
|
+
expect(compileBinding(and(a, a))).toEqual("{= %{a1} && %{a2}}");
|
|
171
|
+
expect(compileBinding(and(a, and(a, a)))).toEqual("{= %{a1} && %{a2}}");
|
|
132
172
|
expect(compileBinding(and(bindingExpression("foo"), not(bindingExpression("foo"))))).toEqual("false");
|
|
133
173
|
expect(compileBinding(and(bindingExpression("foo"), not(bindingExpression("foo")), unresolveableExpression))).toEqual(undefined);
|
|
134
174
|
});
|
|
@@ -138,10 +178,10 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpres
|
|
|
138
178
|
expect(compileBinding(or(constant(true), constant(true)))).toEqual("true");
|
|
139
179
|
expect(compileBinding(or(constant(false), bindingExpression("SalesOrder")))).toEqual("{SalesOrder}");
|
|
140
180
|
expect(compileBinding(or(constant(true), bindingExpression("SalesOrder")))).toEqual("true");
|
|
141
|
-
expect(compileBinding(or(bindingExpression("isEditable", "ui"), bindingExpression("SalesOrder")))).toEqual("{=
|
|
181
|
+
expect(compileBinding(or(bindingExpression("isEditable", "ui"), bindingExpression("SalesOrder")))).toEqual("{= %{ui>isEditable} || %{SalesOrder}}");
|
|
142
182
|
var a = or(bindingExpression("a1"), bindingExpression("a2"));
|
|
143
183
|
var b = or(bindingExpression("b1"), bindingExpression("b2"));
|
|
144
|
-
expect(compileBinding(or(a, b))).toEqual("{=
|
|
184
|
+
expect(compileBinding(or(a, b))).toEqual("{= %{a1} || %{a2} || %{b1} || %{b2}}");
|
|
145
185
|
expect(compileBinding(or(bindingExpression("foo"), not(bindingExpression("foo"))))).toEqual("true");
|
|
146
186
|
expect(compileBinding(or(bindingExpression("foo"), not(bindingExpression("foo")), unresolveableExpression))).toEqual(undefined);
|
|
147
187
|
});
|
|
@@ -152,8 +192,8 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpres
|
|
|
152
192
|
expect(compileBinding(not(and(bindingExpression("isEditable", "ui"), bindingExpression("SalesOrder"))))).toEqual("{= !(%{ui>isEditable} && %{SalesOrder})}");
|
|
153
193
|
});
|
|
154
194
|
it("Not operator can simplify some expressions", function () {
|
|
155
|
-
expect(compileBinding(not(and(equal(1, bindingExpression("SalesOrder")), equal(2, bindingExpression("SalesOrder")))))).toEqual("{=
|
|
156
|
-
expect(compileBinding(not(or(equal(1, bindingExpression("SalesOrder")), equal(2, bindingExpression("SalesOrder")))))).toEqual("{=
|
|
195
|
+
expect(compileBinding(not(and(equal(1, bindingExpression("SalesOrder")), equal(2, bindingExpression("SalesOrder")))))).toEqual("{= 1 !== %{SalesOrder} || 2 !== %{SalesOrder}}");
|
|
196
|
+
expect(compileBinding(not(or(equal(1, bindingExpression("SalesOrder")), equal(2, bindingExpression("SalesOrder")))))).toEqual("{= 1 !== %{SalesOrder} && 2 !== %{SalesOrder}}");
|
|
157
197
|
expect(compileBinding(not(equal(1, bindingExpression("SalesOrder"))))).toEqual("{= 1 !== %{SalesOrder}}");
|
|
158
198
|
expect(compileBinding(not(notEqual(1, bindingExpression("SalesOrder"))))).toEqual("{= 1 === %{SalesOrder}}");
|
|
159
199
|
expect(compileBinding(not(greaterThan(1, bindingExpression("SalesOrder"))))).toEqual("{= 1 <= %{SalesOrder}}");
|
|
@@ -230,10 +270,10 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpres
|
|
|
230
270
|
expect(compileBinding(ifElse(equal(bindingExpression("/editMode", "ui"), constant("Editable")), constant(true), constant(false)))).toEqual("{= %{ui>/editMode} === 'Editable'}");
|
|
231
271
|
expect(compileBinding(ifElse(equal(bindingExpression("/editMode", "ui"), constant("Editable")), constant(false), constant(true)))).toEqual("{= %{ui>/editMode} !== 'Editable'}");
|
|
232
272
|
expect(compileBinding(ifElse(bindingExpression("isEditable"), constant(true), bindingExpression("BoolValue")))).toEqual("{= %{isEditable} ? true : %{BoolValue}}");
|
|
233
|
-
expect(compileBinding(ifElse(bindingExpression("isEditable"), constant(false), bindingExpression("BoolValue")))).toEqual("{=
|
|
273
|
+
expect(compileBinding(ifElse(bindingExpression("isEditable"), constant(false), bindingExpression("BoolValue")))).toEqual("{= !%{isEditable} && %{BoolValue}}");
|
|
234
274
|
expect(compileBinding(ifElse(not(bindingExpression("condition")), constant("a"), constant("b")))).toEqual("{= %{condition} ? 'b' : 'a'}");
|
|
235
275
|
expect(compileBinding(ifElse(bindingExpression("isEditable"), bindingExpression("BoolValue"), constant(true)))).toEqual("{= %{isEditable} ? %{BoolValue} : true}");
|
|
236
|
-
expect(compileBinding(ifElse(bindingExpression("isEditable"), bindingExpression("BoolValue"), constant(false)))).toEqual("{=
|
|
276
|
+
expect(compileBinding(ifElse(bindingExpression("isEditable"), bindingExpression("BoolValue"), constant(false)))).toEqual("{= %{isEditable} && %{BoolValue}}"); // "Optimize nested if-else (condition)"
|
|
237
277
|
|
|
238
278
|
expect(compileBinding(ifElse(ifElse(bindingExpression("condition"), true, false), constant("a"), constant("b")))).toEqual("{= %{condition} ? 'a' : 'b'}"); //"Optimize nested if-else (condition)"
|
|
239
279
|
|
|
@@ -453,13 +493,21 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpres
|
|
|
453
493
|
});
|
|
454
494
|
it("Concat Operator", function () {
|
|
455
495
|
expect(compileBinding(concat("a", "b"))).toEqual("ab");
|
|
456
|
-
expect(compileBinding(concat("a", bindingExpression("BindingPath")))).toEqual("{= 'a' + ${BindingPath}
|
|
496
|
+
expect(compileBinding(concat("a", bindingExpression("BindingPath")))).toEqual("{= 'a' + ${BindingPath}}");
|
|
457
497
|
expect(compileBinding(concat("a", unresolveableExpression, bindingExpression("BindingPath")))).toEqual(undefined);
|
|
458
498
|
});
|
|
499
|
+
it("Length", function () {
|
|
500
|
+
expect(compileBinding(length(bindingExpression("myProperty", "internal")))).toEqual("{= %{internal>myProperty}.length}");
|
|
501
|
+
expect(compileBinding(length(bindingExpression(undefined)))).toEqual(undefined);
|
|
502
|
+
expect(compileBinding(equal(length(bindingExpression("myProperty", "internal")), length(bindingExpression("myProperty", "internal"))))).toEqual("true");
|
|
503
|
+
expect(compileBinding(lessOrEqual(length(bindingExpression("myProperty", "internal")), 2))).toEqual("{= (%{internal>myProperty}.length) <= 2}");
|
|
504
|
+
expect(compileBinding(and(lessOrEqual(length(bindingExpression("myProperty", "internal")), 2), lessOrEqual(length(bindingExpression("myProperty", "internal")), 2)))).toEqual("{= (%{internal>myProperty}.length) <= 2}");
|
|
505
|
+
expect(compileBinding(and(lessOrEqual(length(bindingExpression("myProperty", "internal")), 2), notEqual(length(bindingExpression("myProperty", "internal")), 5)))).toEqual("{= (%{internal>myProperty}.length) <= 2 && (%{internal>myProperty}.length) !== 5}");
|
|
506
|
+
});
|
|
459
507
|
it("Is Empty Shortcut", function () {
|
|
460
|
-
expect(compileBinding(isEmpty(bindingExpression("BindingPath")))).toEqual("{=
|
|
461
|
-
expect(compileBinding(isEmpty(concat("a", bindingExpression("BindingPath"))))).toEqual("{=
|
|
462
|
-
expect(compileBinding(isEmpty(concat(bindingExpression("BindingPath1"), bindingExpression("BindingPath2"))))).toEqual("{=
|
|
508
|
+
expect(compileBinding(isEmpty(bindingExpression("BindingPath")))).toEqual("{= %{BindingPath} === '' || %{BindingPath} === undefined || %{BindingPath} === null}");
|
|
509
|
+
expect(compileBinding(isEmpty(concat("a", bindingExpression("BindingPath"))))).toEqual("{= %{BindingPath} === '' || %{BindingPath} === undefined || %{BindingPath} === null}");
|
|
510
|
+
expect(compileBinding(isEmpty(concat(bindingExpression("BindingPath1"), bindingExpression("BindingPath2"))))).toEqual("{= %{BindingPath1} === '' || %{BindingPath1} === undefined || %{BindingPath1} === null || %{BindingPath2} === '' || %{BindingPath2} === undefined || %{BindingPath2} === null}");
|
|
463
511
|
});
|
|
464
512
|
it("Support recursive transformation", function () {
|
|
465
513
|
var transformBinding = function (binding) {
|
|
@@ -475,9 +523,9 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpres
|
|
|
475
523
|
return constant("A");
|
|
476
524
|
};
|
|
477
525
|
|
|
478
|
-
expect(compileBinding(transformRecursively(isEmpty(bindingExpression("BindingPath")), "Binding", transformBinding))).toEqual("{=
|
|
479
|
-
expect(compileBinding(concat(bindingExpression("BindingPath"), bindingExpression("Bubu")))).toEqual("{= ${BindingPath} + ${Bubu}
|
|
480
|
-
expect(compileBinding(transformRecursively(concat(bindingExpression("BindingPath"), bindingExpression("Bubu")), "Binding", transformBinding))).toEqual("{= ${newModel>BindingPath} + ${newModel>Bubu}
|
|
526
|
+
expect(compileBinding(transformRecursively(isEmpty(bindingExpression("BindingPath")), "Binding", transformBinding))).toEqual("{= %{BindingPath} === '' || %{BindingPath} === undefined || %{BindingPath} === null}");
|
|
527
|
+
expect(compileBinding(concat(bindingExpression("BindingPath"), bindingExpression("Bubu")))).toEqual("{= ${BindingPath} + ${Bubu}}");
|
|
528
|
+
expect(compileBinding(transformRecursively(concat(bindingExpression("BindingPath"), bindingExpression("Bubu")), "Binding", transformBinding))).toEqual("{= ${newModel>BindingPath} + ${newModel>Bubu}}");
|
|
481
529
|
expect(compileBinding(transformRecursively(fn("foo", [ref("$controller"), equal(bindingExpression("bar"), bindingExpression("baz"))]), "Binding", transformBinding))).toEqual("foo($controller, %{bar} === %{baz})");
|
|
482
530
|
expect(compileBinding(transformRecursively(not(bindingExpression("SalesOrder")), "Binding", transformBinding))).toEqual("{= !%{SalesOrder}}");
|
|
483
531
|
expect(compileBinding(transformRecursively(not(bindingExpression("SalesOrder")), "Binding", transformBinding, true))).toEqual("{= !%{newModel>SalesOrder}}");
|
|
@@ -508,4 +556,4 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpres
|
|
|
508
556
|
});
|
|
509
557
|
});
|
|
510
558
|
}, false);
|
|
511
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJpbmRpbmdFeHByZXNzaW9uLnNwZWMudHMiXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJpdCIsImV4cGVjdCIsImNvbXBpbGVCaW5kaW5nIiwiY29uc3RhbnQiLCJ0b0VxdWFsIiwidW5yZXNvbHZlYWJsZUV4cHJlc3Npb24iLCJ1bmRlZmluZWQiLCJlcXVhbCIsImlmRWxzZSIsImJpbmRpbmdFeHByZXNzaW9uIiwiYSIsImIiLCJub3QiLCJub3RFcXVhbCIsIl9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwiLCJpc1RydXRoeSIsImFuZCIsImZha2VGb3JtYXR0ZXIiLCJpc0VkaXRhYmxlIiwiX19mdW5jdGlvbk5hbWUiLCJmb3JtYXRSZXN1bHQiLCJhZGRUeXBlSW5mb3JtYXRpb24iLCJvciIsImdyZWF0ZXJUaGFuIiwiZ3JlYXRlck9yRXF1YWwiLCJsZXNzT3JFcXVhbCIsImxlc3NUaGFuIiwiZmFrZUVudGl0eVR5cGUiLCJrZXlzIiwibmFtZSIsImZha2VGb3JtYXR0ZXIyIiwiYm9vbCIsIm51bWJlciIsImZha2VGb3JtYXR0ZXIzIiwiY29uZGl0aW9uIiwib25UcnVlIiwib25GYWxzZSIsInJlZiIsImZvbyIsImJhciIsIm9iaiIsImNvbnRleHRzIiwiZm4iLCJpbnZvY2F0aW9uR3JvdXBpbmciLCJsYWJlbCIsIm1vZGVsIiwiaXNOYXZpZ2FibGUiLCJteUhhbmRsZXIiLCJjIiwibXlIYW5kbGVyT2JqIiwiY29udGV4dCIsImV4cHJlc3Npb24iLCJjb25jYXQiLCJpc0VtcHR5IiwidHJhbnNmb3JtQmluZGluZyIsImJpbmRpbmciLCJtb2RlbE5hbWUiLCJ0cmFuc2Zvcm1CaW5kaW5nVG9TYW1lVmFsdWUiLCJwYXRoIiwidHJhbnNmb3JtUmVjdXJzaXZlbHkiLCJyZXNvbHZlQmluZGluZ1N0cmluZyJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2QkFBLEVBQUFBLFFBQVEsQ0FBQyw2QkFBRCxF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b0IsQ0FBQyxNQUFELENBQXJCLENBQWYsQ0FBTixDQUFxRHhELE9BQXJELENBQTZELE1BQTdEO0FBQ0FILE1BQUFBLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDMEQsb0JBQW9CLENBQUMsa0JBQUQsRUFBcUIsU0FBckIsQ0FBckIsQ0FBZixDQUFOLENBQTRFeEQsT0FBNUUsQ0FBb0Ysa0JBQXBGO0FBQ0EsS0FSQyxDQUFGO0FBU0EsR0EzdEJPLENBQVIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGFuZCxcblx0YmluZGluZ0V4cHJlc3Npb24sXG5cdGNvbXBpbGVCaW5kaW5nLFxuXHRjb25zdGFudCxcblx0ZXF1YWwsXG5cdEV4cHJlc3Npb24sXG5cdF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwsXG5cdGZuLFxuXHRmb3JtYXRSZXN1bHQsXG5cdGFkZFR5cGVJbmZvcm1hdGlvbixcblx0Z3JlYXRlck9yRXF1YWwsXG5cdGdyZWF0ZXJUaGFuLFxuXHRpZkVsc2UsXG5cdGxlc3NPckVxdWFsLFxuXHRsZXNzVGhhbixcblx0bm90LFxuXHRub3RFcXVhbCxcblx0b3IsXG5cdHJlZixcblx0Y29uY2F0LFxuXHRpc0VtcHR5LFxuXHR0cmFuc2Zvcm1SZWN1cnNpdmVseSxcblx0QmluZGluZ0V4cHJlc3Npb25FeHByZXNzaW9uLFxuXHRyZXNvbHZlQmluZGluZ1N0cmluZyxcblx0dW5yZXNvbHZlYWJsZUV4cHJlc3Npb24sXG5cdGlzVHJ1dGh5XG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdFeHByZXNzaW9uXCI7XG5pbXBvcnQgeyBFbnRpdHlUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NFwiO1xuXG5kZXNjcmliZShcIkJpbmRpbmcgRXhwcmVzc2lvbnMgU3VwcG9ydFwiLCBmdW5jdGlvbigpIHtcblx0aXQoXCJDb25zdGFudHNcIiwgKCkgPT4ge1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhjb25zdGFudChcIjFcIikpKS50b0VxdWFsKFwiMVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoY29uc3RhbnQoMSkpKS50b0VxdWFsKFwiMVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoY29uc3RhbnQodHJ1ZSkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcodHJ1ZSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh1bnJlc29sdmVhYmxlRXhwcmVzc2lvbikpLnRvRXF1YWwodW5kZWZpbmVkKTtcblx0fSk7XG5cblx0aXQoXCJDb21wYXJpc29uXCIsICgpID0+IHtcblx0XHQvLyBcImVxdWFsKGlmRWxzZSh4LCBhLCBhKSwgYSkgLS0+IHRydWVcIlxuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhlcXVhbChpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJpc0VkaXRhYmxlXCIpLCBjb25zdGFudChcIkFcIiksIGNvbnN0YW50KFwiQVwiKSksIGNvbnN0YW50KFwiQVwiKSkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHQvL1wiZXF1YWwoaWZFbHNlKHgsIGIsIGIpLCBhKSAtLT4gZmFsc2VcIjtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiaXNFZGl0YWJsZVwiKSwgY29uc3RhbnQoXCJCXCIpLCBjb25zdGFudChcIkJcIikpLCBjb25zdGFudChcIkFcIikpKSkudG9FcXVhbChcblx0XHRcdFwiZmFsc2VcIlxuXHRcdCk7XG5cdFx0Ly9cIih1c2luZyBjb25zdGFudHMpIGVxdWFsKGlmRWxzZSh4LCBhLCBiKSwgYSkgLS0+IHhcIjtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiaXNFZGl0YWJsZVwiKSwgY29uc3RhbnQoXCJBXCIpLCBjb25zdGFudChcIkJcIikpLCBjb25zdGFudChcIkFcIikpKSkudG9FcXVhbChcblx0XHRcdFwie2lzRWRpdGFibGV9XCJcblx0XHQpO1xuXHRcdC8vXCIodXNpbmcgYmluZGluZyBleHByZXNzaW9ucykgZXF1YWwoaWZFbHNlKHgsIGEsIGIpLCBhKSAtLT4geCB8fCBiID09PSBhXCI7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoXG5cdFx0XHRcdGVxdWFsKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJCXCIpKSwgYmluZGluZ0V4cHJlc3Npb24oXCJBXCIpKVxuXHRcdFx0KVxuXHRcdCkudG9FcXVhbChcIns9ICgle2lzRWRpdGFibGV9IHx8ICV7Qn0gPT09ICV7QX0pfVwiKTtcblxuXHRcdC8vXCJlcXVhbChpZkVsc2UoeCwgYSwgYiksIGMpIC0tPiBubyByZWR1Y3Rpb25cIjtcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhlcXVhbChpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJpc0VkaXRhYmxlXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkFcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQlwiKSksIGNvbnN0YW50KFwiQVwiKSkpXG5cdFx0KS50b0VxdWFsKFwiez0gKCV7aXNFZGl0YWJsZX0gPyAle0F9IDogJXtCfSkgPT09ICdBJ31cIik7XG5cblx0XHRjb25zdCBhID0gaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiaXNFZGl0YWJsZVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJBXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkJcIikpO1xuXHRcdGNvbnN0IGIgPSBpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJpc0VkaXRhYmxlXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkFcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQlwiKSk7XG5cdFx0Ly9cImVxdWFsKGEsIGEpIC0tPiB0cnVlXCJcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoYSwgYikpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHQvLyBcImVxdWFsKG51bGwsIG51bGwpIC0tPiB0cnVlXCJcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoY29uc3RhbnQobnVsbCksIGNvbnN0YW50KG51bGwpKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdC8vIHNpbXBsaWZ5IGlmIGVsc2Ugd2hlbiBvblRydWUgYW5kIG9uRmFsc2UgY2Fubm90IGJlIGVxdWFsIHRvIHJpZ2h0RXhwcmVzc2lvbiBpbiBjYXNlXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGVxdWFsKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSwgY29uc3RhbnQoXCIwXCIpLCBjb25zdGFudChcIjFcIikpLCBjb25zdGFudChcIjJcIikpKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKGVxdWFsKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJBXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkJcIikpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkNcIikpKVxuXHRcdCkubm90LnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpLCBjb25zdGFudChcIjBcIiksIGNvbnN0YW50KFwiMVwiKSksIGJpbmRpbmdFeHByZXNzaW9uKFwiYmFyXCIpKSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICgle2Zvb30gPyAnMCcgOiAnMScpID09PSAle2Jhcn19XCJcblx0XHQpO1xuXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGVxdWFsKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSwgY29uc3RhbnQoXCIwXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkJcIikpLCBjb25zdGFudChcIjBcIikpKSkudG9FcXVhbChcblx0XHRcdFwiez0gKCV7Zm9vfSB8fCAle0J9ID09PSAnMCcpfVwiXG5cdFx0KTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkJcIiksIGNvbnN0YW50KFwiMVwiKSksIGNvbnN0YW50KFwiMVwiKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAoISV7Zm9vfSB8fCAle0J9ID09PSAnMScpfVwiXG5cdFx0KTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpLCBjb25zdGFudChcIjFcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQlwiKSksIGNvbnN0YW50KFwiMVwiKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAoJXtmb299IHx8ICV7Qn0gPT09ICcxJyl9XCJcblx0XHQpO1xuXG5cdFx0Ly8gXCJub3RFcXVhbChhLCBhKSAtLT4gZmFsc2VcIlxuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhub3RFcXVhbChhLCBiKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHQvLyBcIm5vdEVxdWFsKG51bGwsIG51bGwpIC0tPiBmYWxzZVwiXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG5vdEVxdWFsKGNvbnN0YW50KG51bGwpLCBjb25zdGFudChudWxsKSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90RXF1YWwodW5yZXNvbHZlYWJsZUV4cHJlc3Npb24sIGNvbnN0YW50KDMpKSkpLnRvRXF1YWwodW5kZWZpbmVkKTtcblxuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhub3RFcXVhbChpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIiksIGNvbnN0YW50KFwiMFwiKSwgY29uc3RhbnQoXCIxXCIpKSwgY29uc3RhbnQoXCIyXCIpKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRub3RFcXVhbChpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJCXCIpKSwgYmluZGluZ0V4cHJlc3Npb24oXCJDXCIpKVxuXHRcdFx0KVxuXHRcdCkubm90LnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhub3RFcXVhbChpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIiksIGNvbnN0YW50KFwiMFwiKSwgY29uc3RhbnQoXCIxXCIpKSwgYmluZGluZ0V4cHJlc3Npb24oXCJiYXJcIikpKSkudG9FcXVhbChcblx0XHRcdFwiez0gKCV7Zm9vfSA/ICcwJyA6ICcxJykgIT09ICV7YmFyfX1cIlxuXHRcdCk7XG5cdH0pO1xuXG5cdGl0KFwiRGF0YSBtb2RlbCBkZWZpbml0aW9uXCIsICgpID0+IHtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoYmluZGluZ0V4cHJlc3Npb24oXCJlZGl0TW9kZVwiLCBcInVpXCIpKSkudG9FcXVhbChcInt1aT5lZGl0TW9kZX1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSkpLnRvRXF1YWwoXCJ7U2FsZXNPcmRlcn1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGJpbmRpbmdFeHByZXNzaW9uKHVuZGVmaW5lZCkpKS50b0VxdWFsKHVuZGVmaW5lZCk7XG5cdH0pO1xuXG5cdGl0KFwiQ29uc3RhbnQgRXF1YWxpdHlcIiwgKCkgPT4ge1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhlcXVhbChjb25zdGFudChcIjFcIiksIGNvbnN0YW50KFwiMVwiKSkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoY29uc3RhbnQoMSksIGNvbnN0YW50KDEpKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhlcXVhbChjb25zdGFudCgxKSwgY29uc3RhbnQoMTUpKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoY29uc3RhbnQodHJ1ZSksIGNvbnN0YW50KGZhbHNlKSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90RXF1YWwoY29uc3RhbnQoXCIxXCIpLCBjb25zdGFudChcIjFcIikpKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhub3RFcXVhbChjb25zdGFudCgxKSwgY29uc3RhbnQoMSkpKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhub3RFcXVhbChjb25zdGFudCgxKSwgY29uc3RhbnQoMTUpKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhub3RFcXVhbChjb25zdGFudCh0cnVlKSwgY29uc3RhbnQoZmFsc2UpKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhlcXVhbCh1bmRlZmluZWQsIHVuZGVmaW5lZCkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwodW5kZWZpbmVkLCB0cnVlKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwodW5kZWZpbmVkLCBmYWxzZSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGVxdWFsKHVuZGVmaW5lZCwgMSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGVxdWFsKHVuZGVmaW5lZCwgXCJmb29cIikpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGVxdWFsKHVucmVzb2x2ZWFibGVFeHByZXNzaW9uLCBcImZvb1wiKSkpLnRvRXF1YWwodW5kZWZpbmVkKTtcblx0fSk7XG5cblx0aXQoXCJFeHByZXNzaW9uIEVxdWFsaXR5XCIsICgpID0+IHtcblx0XHRleHBlY3QoX2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChjb25zdGFudCh0cnVlKSBhcyBFeHByZXNzaW9uPGFueT4sIGNvbnN0YW50KDQpIGFzIEV4cHJlc3Npb248YW55PikpLnRvRXF1YWwoZmFsc2UpO1xuXHRcdGV4cGVjdChfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKGNvbnN0YW50KFwiMVwiKSwgY29uc3RhbnQoXCIxXCIpKSkudG9FcXVhbCh0cnVlKTtcblx0XHRleHBlY3QoX2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChjb25zdGFudChcIjFcIiksIGNvbnN0YW50KFwiMlwiKSkpLnRvRXF1YWwoZmFsc2UpO1xuXHRcdGV4cGVjdChfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKGNvbnN0YW50KFwiMVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIikpKS50b0VxdWFsKGZhbHNlKTtcblx0XHRleHBlY3QoX2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChub3QoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIikpLCBub3QoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIikpKSkudG9FcXVhbCh0cnVlKTtcblx0XHRleHBlY3QoX2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChpc1RydXRoeShiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSksIGlzVHJ1dGh5KGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpKSkpLnRvRXF1YWwodHJ1ZSk7XG5cdFx0ZXhwZWN0KF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwoaXNUcnV0aHkoY29uc3RhbnQoXCJmb29cIikpLCBjb25zdGFudCh0cnVlKSkpLnRvRXF1YWwodHJ1ZSk7XG5cdFx0ZXhwZWN0KF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpKSkudG9FcXVhbCh0cnVlKTtcblx0XHRleHBlY3QoXG5cdFx0XHRfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKFxuXHRcdFx0XHRhbmQoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiYmFyXCIpKSxcblx0XHRcdFx0YW5kKGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcImJhclwiKSlcblx0XHRcdClcblx0XHQpLnRvRXF1YWwodHJ1ZSk7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0X2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChcblx0XHRcdFx0YW5kKGJpbmRpbmdFeHByZXNzaW9uKFwiYmFyXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSksXG5cdFx0XHRcdGFuZChiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJiYXJcIikpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKHRydWUpO1xuXG5cdFx0Y29uc3QgZmFrZUZvcm1hdHRlciA9IGZ1bmN0aW9uKGlzRWRpdGFibGU6IHN0cmluZykge1xuXHRcdFx0Ly8gRG8gTm90aGluZ1xuXHRcdFx0cmV0dXJuIFwiTm90aGluZ1wiO1xuXHRcdH07XG5cdFx0ZmFrZUZvcm1hdHRlci5fX2Z1bmN0aW9uTmFtZSA9IFwiTXlGb3JtYXR0ZXJOYW1lXCI7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0X2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChcblx0XHRcdFx0Zm9ybWF0UmVzdWx0KFtiaW5kaW5nRXhwcmVzc2lvbihcImVkaXRNb2RlXCIsIFwidWlcIildLCBmYWtlRm9ybWF0dGVyKSxcblx0XHRcdFx0Zm9ybWF0UmVzdWx0KFtiaW5kaW5nRXhwcmVzc2lvbihcImVkaXRNb2RlXCIsIFwidWlcIildLCBmYWtlRm9ybWF0dGVyKVxuXHRcdFx0KVxuXHRcdCkudG9FcXVhbCh0cnVlKTtcblx0XHRleHBlY3QoXG5cdFx0XHRfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKFxuXHRcdFx0XHRmb3JtYXRSZXN1bHQoW2JpbmRpbmdFeHByZXNzaW9uKFwiZWRpdE1vZGVcIiwgXCJYWFwiKV0sIGZha2VGb3JtYXR0ZXIpLFxuXHRcdFx0XHRmb3JtYXRSZXN1bHQoW2JpbmRpbmdFeHByZXNzaW9uKFwiZWRpdE1vZGVcIiwgXCJ1aVwiKV0sIGZha2VGb3JtYXR0ZXIpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKGZhbHNlKTtcblx0XHRleHBlY3QoXG5cdFx0XHRfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKFxuXHRcdFx0XHRmb3JtYXRSZXN1bHQoW2NvbnN0YW50KFwiJXt1aT4vZWRpdE1vZGV9XCIpXSwgZmFrZUZvcm1hdHRlciksXG5cdFx0XHRcdGZvcm1hdFJlc3VsdChbYmluZGluZ0V4cHJlc3Npb24oXCJlZGl0TW9kZVwiLCBcInVpXCIpXSwgZmFrZUZvcm1hdHRlcilcblx0XHRcdClcblx0XHQpLnRvRXF1YWwoZmFsc2UpO1xuXG5cdFx0ZXhwZWN0KFxuXHRcdFx0X2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChcblx0XHRcdFx0YWRkVHlwZUluZm9ybWF0aW9uKFtiaW5kaW5nRXhwcmVzc2lvbihcImVkaXRNb2RlXCIsIFwidWlcIildLCBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlVuaXRcIiksXG5cdFx0XHRcdGFkZFR5cGVJbmZvcm1hdGlvbihbYmluZGluZ0V4cHJlc3Npb24oXCJlZGl0TW9kZVwiLCBcInVpXCIpXSwgXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Vbml0XCIpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKHRydWUpO1xuXHRcdGV4cGVjdChcblx0XHRcdF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwoXG5cdFx0XHRcdGFkZFR5cGVJbmZvcm1hdGlvbihbYmluZGluZ0V4cHJlc3Npb24oXCJlZGl0TW9kZVwiLCBcIlhYXCIpXSwgXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Vbml0XCIpLFxuXHRcdFx0XHRhZGRUeXBlSW5mb3JtYXRpb24oW2JpbmRpbmdFeHByZXNzaW9uKFwiZWRpdE1vZGVcIiwgXCJ1aVwiKV0sIFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVW5pdFwiKVxuXHRcdFx0KVxuXHRcdCkudG9FcXVhbChmYWxzZSk7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0X2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChcblx0XHRcdFx0YWRkVHlwZUluZm9ybWF0aW9uKFtjb25zdGFudChcIiV7dWk+L2VkaXRNb2RlfVwiKV0sIFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVW5pdFwiKSxcblx0XHRcdFx0YWRkVHlwZUluZm9ybWF0aW9uKFtiaW5kaW5nRXhwcmVzc2lvbihcImVkaXRNb2RlXCIsIFwidWlcIildLCBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlVuaXRcIilcblx0XHRcdClcblx0XHQpLnRvRXF1YWwoZmFsc2UpO1xuXHRcdGV4cGVjdChcblx0XHRcdF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwoXG5cdFx0XHRcdGFkZFR5cGVJbmZvcm1hdGlvbihbYmluZGluZ0V4cHJlc3Npb24oXCJlZGl0TW9kZVwiLCBcInVpXCIpXSwgXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Vbml0XCIpLFxuXHRcdFx0XHRhZGRUeXBlSW5mb3JtYXRpb24oW2JpbmRpbmdFeHByZXNzaW9uKFwiZWRpdE1vZGVcIiwgXCJ1aVwiKV0sIFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuQ3VycmVuY3lcIilcblx0XHRcdClcblx0XHQpLnRvRXF1YWwoZmFsc2UpO1xuXHR9KTtcblxuXHRpdChcIkFuZCBvcGVyYXRvclwiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGFuZChjb25zdGFudCh0cnVlKSwgY29uc3RhbnQoZmFsc2UpKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoYW5kKGNvbnN0YW50KHRydWUpLCBjb25zdGFudCh0cnVlKSkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoYW5kKGNvbnN0YW50KHRydWUpLCBiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpKSkudG9FcXVhbChcIntTYWxlc09yZGVyfVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoYW5kKGNvbnN0YW50KGZhbHNlKSwgYmluZGluZ0V4cHJlc3Npb24oXCJTYWxlc09yZGVyXCIpKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoYW5kKGJpbmRpbmdFeHByZXNzaW9uKFwiaXNFZGl0YWJsZVwiLCBcInVpXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpKSkudG9FcXVhbChcblx0XHRcdFwiez0gKCV7dWk+aXNFZGl0YWJsZX0gJiYgJXtTYWxlc09yZGVyfSl9XCJcblx0XHQpO1xuXG5cdFx0Y29uc3QgYSA9IGFuZChiaW5kaW5nRXhwcmVzc2lvbihcImExXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcImEyXCIpKTtcblx0XHRjb25zdCBiID0gYW5kKGJpbmRpbmdFeHByZXNzaW9uKFwiYjFcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiYjJcIikpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhhbmQoYSwgYikpKS50b0VxdWFsKFwiez0gKCV7YTF9ICYmICV7YTJ9ICYmICV7YjF9ICYmICV7YjJ9KX1cIik7XG5cblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoYW5kKGEsIGEpKSkudG9FcXVhbChcIns9ICgle2ExfSAmJiAle2EyfSl9XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhhbmQoYSwgYW5kKGEsIGEpKSkpLnRvRXF1YWwoXCJ7PSAoJXthMX0gJiYgJXthMn0pfVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoYW5kKGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpLCBub3QoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIikpKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoYW5kKGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpLCBub3QoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIikpLCB1bnJlc29sdmVhYmxlRXhwcmVzc2lvbikpKS50b0VxdWFsKHVuZGVmaW5lZCk7XG5cdH0pO1xuXG5cdGl0KFwiT3Igb3BlcmF0b3JcIiwgKCkgPT4ge1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhvcihjb25zdGFudCh0cnVlKSwgY29uc3RhbnQoZmFsc2UpKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhvcihjb25zdGFudChmYWxzZSksIGNvbnN0YW50KGZhbHNlKSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG9yKGNvbnN0YW50KHRydWUpLCBjb25zdGFudCh0cnVlKSkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcob3IoY29uc3RhbnQoZmFsc2UpLCBiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpKSkudG9FcXVhbChcIntTYWxlc09yZGVyfVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcob3IoY29uc3RhbnQodHJ1ZSksIGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcob3IoYmluZGluZ0V4cHJlc3Npb24oXCJpc0VkaXRhYmxlXCIsIFwidWlcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAoJXt1aT5pc0VkaXRhYmxlfSB8fCAle1NhbGVzT3JkZXJ9KX1cIlxuXHRcdCk7XG5cblx0XHRjb25zdCBhID0gb3IoYmluZGluZ0V4cHJlc3Npb24oXCJhMVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJhMlwiKSk7XG5cdFx0Y29uc3QgYiA9IG9yKGJpbmRpbmdFeHByZXNzaW9uKFwiYjFcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiYjJcIikpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhvcihhLCBiKSkpLnRvRXF1YWwoXCJ7PSAoJXthMX0gfHwgJXthMn0gfHwgJXtiMX0gfHwgJXtiMn0pfVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcob3IoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIiksIG5vdChiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSkpKSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG9yKGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpLCBub3QoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIikpLCB1bnJlc29sdmVhYmxlRXhwcmVzc2lvbikpKS50b0VxdWFsKHVuZGVmaW5lZCk7XG5cdH0pO1xuXG5cdGl0KFwiTm90IG9wZXJhdG9yXCIsICgpID0+IHtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90KGNvbnN0YW50KHRydWUpKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90KGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSkpKS50b0VxdWFsKFwiez0gISV7U2FsZXNPcmRlcn19XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhub3QodW5yZXNvbHZlYWJsZUV4cHJlc3Npb24pKSkudG9FcXVhbCh1bmRlZmluZWQpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhub3QoYW5kKGJpbmRpbmdFeHByZXNzaW9uKFwiaXNFZGl0YWJsZVwiLCBcInVpXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpKSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICEoJXt1aT5pc0VkaXRhYmxlfSAmJiAle1NhbGVzT3JkZXJ9KX1cIlxuXHRcdCk7XG5cdH0pO1xuXG5cdGl0KFwiTm90IG9wZXJhdG9yIGNhbiBzaW1wbGlmeSBzb21lIGV4cHJlc3Npb25zXCIsICgpID0+IHtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90KGFuZChlcXVhbCgxLCBiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpLCBlcXVhbCgyLCBiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAoMSAhPT0gJXtTYWxlc09yZGVyfSB8fCAyICE9PSAle1NhbGVzT3JkZXJ9KX1cIlxuXHRcdCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG5vdChvcihlcXVhbCgxLCBiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpLCBlcXVhbCgyLCBiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAoMSAhPT0gJXtTYWxlc09yZGVyfSAmJiAyICE9PSAle1NhbGVzT3JkZXJ9KX1cIlxuXHRcdCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG5vdChlcXVhbCgxLCBiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpKSkpLnRvRXF1YWwoXCJ7PSAxICE9PSAle1NhbGVzT3JkZXJ9fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90KG5vdEVxdWFsKDEsIGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSkpKSkudG9FcXVhbChcIns9IDEgPT09ICV7U2FsZXNPcmRlcn19XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhub3QoZ3JlYXRlclRoYW4oMSwgYmluZGluZ0V4cHJlc3Npb24oXCJTYWxlc09yZGVyXCIpKSkpKS50b0VxdWFsKFwiez0gMSA8PSAle1NhbGVzT3JkZXJ9fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90KGdyZWF0ZXJPckVxdWFsKDEsIGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSkpKSkudG9FcXVhbChcIns9IDEgPCAle1NhbGVzT3JkZXJ9fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90KGxlc3NPckVxdWFsKDEsIGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSkpKSkudG9FcXVhbChcIns9IDEgPiAle1NhbGVzT3JkZXJ9fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90KGxlc3NUaGFuKDEsIGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSkpKSkudG9FcXVhbChcIns9IDEgPj0gJXtTYWxlc09yZGVyfX1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGxlc3NUaGFuKFwiYVwiLCBcImJcIikpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90KG5vdChiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpKSkpLnRvRXF1YWwoXCJ7U2FsZXNPcmRlcn1cIik7XG5cblx0XHQvLyBcIk9wdGltaXplIG5lc3RlZCBpZi1lbHNlIChjb25kaXRpb24pXCJcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhpZkVsc2Uobm90RXF1YWwoaWZFbHNlKGVxdWFsKGJpbmRpbmdFeHByZXNzaW9uKFwiY29uZGl0aW9uXCIpLCA1KSwgMCwgMyksIDEpLCBjb25zdGFudChcImFcIiksIGNvbnN0YW50KFwiYlwiKSkpXG5cdFx0KS50b0VxdWFsKFwiYVwiKTtcblx0fSk7XG5cblx0aXQoXCJpc1RydXRoeSBvcGVyYXRvclwiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGlzVHJ1dGh5KGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpKSkpLnRvRXF1YWwoXCJ7PSAhISV7Zm9vfX1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGlzVHJ1dGh5KGNvbnN0YW50KFwiYVwiKSkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0fSk7XG5cblx0aXQoXCJDb21wbGV4IEVxdWFsaXR5XCIsICgpID0+IHtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCJlZGl0TW9kZVwiLCBcInVpXCIpLCBjb25zdGFudChcIkVkaXRhYmxlXCIpKSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICV7dWk+ZWRpdE1vZGV9ID09PSAnRWRpdGFibGUnfVwiXG5cdFx0KTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoY29uc3RhbnQoMzQpLCBiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpKSkudG9FcXVhbChcIns9IDM0ID09PSAle1NhbGVzT3JkZXJ9fVwiKTtcblx0fSk7XG5cblx0aXQoXCJGb3JtYXR0ZXIgY2FsbFwiLCAoKSA9PiB7XG5cdFx0Y29uc3QgZmFrZUVudGl0eVR5cGUgPSB7XG5cdFx0XHRrZXlzOiBbeyBuYW1lOiBcIklEXCIgfSwgeyBuYW1lOiBcIlRvdG9cIiB9XVxuXHRcdH0gYXMgRW50aXR5VHlwZTtcblx0XHRjb25zdCBmYWtlRm9ybWF0dGVyID0gZnVuY3Rpb24oaXNFZGl0YWJsZTogc3RyaW5nKSB7XG5cdFx0XHQvLyBEbyBOb3RoaW5nXG5cdFx0XHRyZXR1cm4gXCJOb3RoaW5nXCI7XG5cdFx0fTtcblx0XHRmYWtlRm9ybWF0dGVyLl9fZnVuY3Rpb25OYW1lID0gXCJNeUZvcm1hdHRlck5hbWVcIjtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZm9ybWF0UmVzdWx0KFtiaW5kaW5nRXhwcmVzc2lvbihcImVkaXRNb2RlXCIsIFwidWlcIildLCBmYWtlRm9ybWF0dGVyKSkpLnRvRXF1YWwoXG5cdFx0XHRcIntwYXRoOid1aT5lZGl0TW9kZScsIHRhcmdldFR5cGUgOiAnYW55JywgZm9ybWF0dGVyOiAnTXlGb3JtYXR0ZXJOYW1lJ31cIlxuXHRcdCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGZvcm1hdFJlc3VsdChbXCJZZWxsb3dcIl0sIGZha2VGb3JtYXR0ZXIpKSkudG9FcXVhbChcInt2YWx1ZTogJ1llbGxvdycsIGZvcm1hdHRlcjogJ015Rm9ybWF0dGVyTmFtZSd9XCIpO1xuXHRcdC8vPz9cblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZm9ybWF0UmVzdWx0KFtcIlllbGxvd1wiXSwgZmFrZUZvcm1hdHRlciwgZmFrZUVudGl0eVR5cGUpKSkudG9FcXVhbChcblx0XHRcdFwie3BhcnRzOlt7dmFsdWU6ICdZZWxsb3cnfSx7cGF0aDonSUQnLCB0YXJnZXRUeXBlIDogJ2FueSd9LHtwYXRoOidUb3RvJywgdGFyZ2V0VHlwZSA6ICdhbnknfV0sIGZvcm1hdHRlcjogJ015Rm9ybWF0dGVyTmFtZSd9XCJcblx0XHQpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhmb3JtYXRSZXN1bHQoW2JpbmRpbmdFeHByZXNzaW9uKFwiSGVsbG9cIildLCBmYWtlRm9ybWF0dGVyLCBmYWtlRW50aXR5VHlwZSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7cGF0aDonSGVsbG8nLCB0YXJnZXRUeXBlIDogJ2FueScsIGZvcm1hdHRlcjogJ015Rm9ybWF0dGVyTmFtZSd9XCJcblx0XHQpO1xuXG5cdFx0Y29uc3QgZmFrZUZvcm1hdHRlcjIgPSBmdW5jdGlvbihpc0VkaXRhYmxlOiBzdHJpbmcsIGJvb2w6IGJvb2xlYW4sIG51bWJlcjogbnVtYmVyKSB7XG5cdFx0XHQvLyBEbyBOb3RoaW5nXG5cdFx0XHRyZXR1cm4gXCJOb3RoaW5nXCI7XG5cdFx0fTtcblx0XHRmYWtlRm9ybWF0dGVyMi5fX2Z1bmN0aW9uTmFtZSA9IFwiTXlGb3JtYXR0ZXJOYW1lXCI7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGZvcm1hdFJlc3VsdChbXCJZZWxsb3dcIiwgZmFsc2UsIDQyXSwgZmFrZUZvcm1hdHRlcjIpKSkudG9FcXVhbChcblx0XHRcdFwie3BhcnRzOlt7dmFsdWU6ICdZZWxsb3cnfSx7dmFsdWU6ICdmYWxzZSd9LHt2YWx1ZTogNDJ9XSwgZm9ybWF0dGVyOiAnTXlGb3JtYXR0ZXJOYW1lJ31cIlxuXHRcdCk7XG5cblx0XHRjb25zdCBmYWtlRm9ybWF0dGVyMyA9IGZ1bmN0aW9uKGJvb2w6IGJvb2xlYW4sIG51bWJlcjogbnVtYmVyKSB7XG5cdFx0XHQvLyBEbyBOb3RoaW5nXG5cdFx0XHRyZXR1cm4gXCJOb3RoaW5nXCI7XG5cdFx0fTtcblx0XHRmYWtlRm9ybWF0dGVyMy5fX2Z1bmN0aW9uTmFtZSA9IFwiTXlGb3JtYXR0ZXJOYW1lM1wiO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhmb3JtYXRSZXN1bHQoW2JpbmRpbmdFeHByZXNzaW9uKFwic29tZXRoaW5nQm9vbGVhblwiKSwgNDJdLCBmYWtlRm9ybWF0dGVyMywgZmFrZUVudGl0eVR5cGUpKSkudG9FcXVhbChcblx0XHRcdFwie3BhcnRzOlt7cGF0aDonc29tZXRoaW5nQm9vbGVhbicsIHRhcmdldFR5cGUgOiAnYW55J30se3ZhbHVlOiA0Mn1dLCBmb3JtYXR0ZXI6ICdNeUZvcm1hdHRlck5hbWUzJ31cIlxuXHRcdCk7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoZm9ybWF0UmVzdWx0KFtiaW5kaW5nRXhwcmVzc2lvbihcInNvbWV0aGluZ0Jvb2xlYW5cIiksIHVucmVzb2x2ZWFibGVFeHByZXNzaW9uXSwgZmFrZUZvcm1hdHRlcjMsIGZha2VFbnRpdHlUeXBlKSlcblx0XHQpLnRvRXF1YWwodW5kZWZpbmVkKTtcblx0fSk7XG5cblx0aXQoXCJDb21wbGV4IHR5cGUgY2FsbFwiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGFkZFR5cGVJbmZvcm1hdGlvbihbYmluZGluZ0V4cHJlc3Npb24oXCJ2YWx1ZVwiKV0sIFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVW5pdFwiKSkpLnRvRXF1YWwoXG5cdFx0XHRcIntwYXRoOid2YWx1ZScsIHRhcmdldFR5cGUgOiAnYW55JywgdHlwZTogJ3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLlVuaXQnfVwiXG5cdFx0KTtcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhhZGRUeXBlSW5mb3JtYXRpb24oW2JpbmRpbmdFeHByZXNzaW9uKFwidmFsdWVcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwidW5pdFwiKV0sIFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVW5pdFwiKSlcblx0XHQpLnRvRXF1YWwoXG5cdFx0XHRcInttb2RlOidUd29XYXknLCBwYXJ0czpbe3BhdGg6J3ZhbHVlJywgdGFyZ2V0VHlwZSA6ICdhbnknfSx7cGF0aDondW5pdCcsIHRhcmdldFR5cGUgOiAnYW55J30se21vZGU6J09uZVRpbWUnLHBhdGg6Jy8jI0BAcmVxdWVzdFVuaXRzT2ZNZWFzdXJlJyx0YXJnZXRUeXBlOidhbnknfV0sdHlwZTonc2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVW5pdCd9XCJcblx0XHQpO1xuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRhZGRUeXBlSW5mb3JtYXRpb24oW2JpbmRpbmdFeHByZXNzaW9uKFwidmFsdWVcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiY3VycmVuY3lcIildLCBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkN1cnJlbmN5XCIpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKFxuXHRcdFx0XCJ7bW9kZTonVHdvV2F5JywgcGFydHM6W3twYXRoOid2YWx1ZScsIHRhcmdldFR5cGUgOiAnYW55J30se3BhdGg6J2N1cnJlbmN5JywgdGFyZ2V0VHlwZSA6ICdhbnknfSx7bW9kZTonT25lVGltZScscGF0aDonLyMjQEByZXF1ZXN0Q3VycmVuY3lDb2RlcycsdGFyZ2V0VHlwZTonYW55J31dLHR5cGU6J3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLkN1cnJlbmN5J31cIlxuXHRcdCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGFkZFR5cGVJbmZvcm1hdGlvbihbYmluZGluZ0V4cHJlc3Npb24oXCJ2YWx1ZVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJjdXJyZW5jeVwiKV0sIFwiZGVmYXVsdFR5cGVcIikpKS50b0VxdWFsKFxuXHRcdFx0XCJ7bW9kZTonVHdvV2F5JywgcGFydHM6W3twYXRoOid2YWx1ZScsIHRhcmdldFR5cGUgOiAnYW55J30se3BhdGg6J2N1cnJlbmN5JywgdGFyZ2V0VHlwZSA6ICdhbnknfV0sIHR5cGU6ICdkZWZhdWx0VHlwZSd9XCJcblx0XHQpO1xuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRhZGRUeXBlSW5mb3JtYXRpb24oW2JpbmRpbmdFeHByZXNzaW9uKFwidmFsdWVcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiY3VycmVuY3lcIiksIHVucmVzb2x2ZWFibGVFeHByZXNzaW9uXSwgXCJkZWZhdWx0VHlwZVwiKVxuXHRcdFx0KVxuXHRcdCkudG9FcXVhbCh1bmRlZmluZWQpO1xuXHR9KTtcblxuXHRpdChcIklmLUVsc2Ugb3BlcmF0b3JcIiwgKCkgPT4ge1xuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRpZkVsc2UoZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCIvZWRpdE1vZGVcIiwgXCJ1aVwiKSwgY29uc3RhbnQoXCJFZGl0YWJsZVwiKSksIGNvbnN0YW50KFwiU2luZ2xlU2VsZWN0XCIpLCBjb25zdGFudChcIk5vbmVcIikpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKFwiez0gJXt1aT4vZWRpdE1vZGV9ID09PSAnRWRpdGFibGUnID8gJ1NpbmdsZVNlbGVjdCcgOiAnTm9uZSd9XCIpO1xuXHRcdC8vIEJpbmRpbmcgc2ltcGxpZmljYXRpb25cblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhpZkVsc2UoZXF1YWwoY29uc3RhbnQoXCJFZGl0YWJsZVwiKSwgY29uc3RhbnQoXCJFZGl0YWJsZVwiKSksIGNvbnN0YW50KFwiU2luZ2xlU2VsZWN0XCIpLCBjb25zdGFudChcIk5vbmVcIikpKVxuXHRcdCkudG9FcXVhbChcIlNpbmdsZVNlbGVjdFwiKTtcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhpZkVsc2UoZXF1YWwoY29uc3RhbnQoXCJFZGl0YWJsZVwiKSwgdW5yZXNvbHZlYWJsZUV4cHJlc3Npb24pLCBjb25zdGFudChcIlNpbmdsZVNlbGVjdFwiKSwgY29uc3RhbnQoXCJOb25lXCIpKSlcblx0XHQpLnRvRXF1YWwodW5kZWZpbmVkKTtcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhpZkVsc2UoZXF1YWwoY29uc3RhbnQoXCJFZGl0YWJsZVwiKSwgY29uc3RhbnQoXCJFZGl0YWJsZVwiKSksIHVucmVzb2x2ZWFibGVFeHByZXNzaW9uLCBjb25zdGFudChcIk5vbmVcIikpKVxuXHRcdCkudG9FcXVhbCh1bmRlZmluZWQpO1xuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKGlmRWxzZShlcXVhbChjb25zdGFudChcIkVkaXRhYmxlXCIpLCBjb25zdGFudChcIkVkaXRhYmxlXCIpKSwgY29uc3RhbnQoXCJTaW5nbGVTZWxlY3RcIiksIHVucmVzb2x2ZWFibGVFeHByZXNzaW9uKSlcblx0XHQpLnRvRXF1YWwodW5kZWZpbmVkKTtcblx0fSk7XG5cblx0aXQoXCJJZi1FbHNlIG9wZXJhdG9yIGNhbiBzaW1wbGlmeSBzb21lIGNhbGxzXCIsICgpID0+IHtcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhpZkVsc2UoZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCIvZWRpdE1vZGVcIiwgXCJ1aVwiKSwgY29uc3RhbnQoXCJFZGl0YWJsZVwiKSksIGNvbnN0YW50KHRydWUpLCBjb25zdGFudChmYWxzZSkpKVxuXHRcdCkudG9FcXVhbChcIns9ICV7dWk+L2VkaXRNb2RlfSA9PT0gJ0VkaXRhYmxlJ31cIik7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoaWZFbHNlKGVxdWFsKGJpbmRpbmdFeHByZXNzaW9uKFwiL2VkaXRNb2RlXCIsIFwidWlcIiksIGNvbnN0YW50KFwiRWRpdGFibGVcIikpLCBjb25zdGFudChmYWxzZSksIGNvbnN0YW50KHRydWUpKSlcblx0XHQpLnRvRXF1YWwoXCJ7PSAle3VpPi9lZGl0TW9kZX0gIT09ICdFZGl0YWJsZSd9XCIpO1xuXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiksIGNvbnN0YW50KHRydWUpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkJvb2xWYWx1ZVwiKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAle2lzRWRpdGFibGV9ID8gdHJ1ZSA6ICV7Qm9vbFZhbHVlfX1cIlxuXHRcdCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiksIGNvbnN0YW50KGZhbHNlKSwgYmluZGluZ0V4cHJlc3Npb24oXCJCb29sVmFsdWVcIikpKSkudG9FcXVhbChcblx0XHRcdFwiez0gKCEle2lzRWRpdGFibGV9ICYmICV7Qm9vbFZhbHVlfSl9XCJcblx0XHQpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhpZkVsc2Uobm90KGJpbmRpbmdFeHByZXNzaW9uKFwiY29uZGl0aW9uXCIpKSwgY29uc3RhbnQoXCJhXCIpLCBjb25zdGFudChcImJcIikpKSkudG9FcXVhbChcblx0XHRcdFwiez0gJXtjb25kaXRpb259ID8gJ2InIDogJ2EnfVwiXG5cdFx0KTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiaXNFZGl0YWJsZVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJCb29sVmFsdWVcIiksIGNvbnN0YW50KHRydWUpKSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICV7aXNFZGl0YWJsZX0gPyAle0Jvb2xWYWx1ZX0gOiB0cnVlfVwiXG5cdFx0KTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiaXNFZGl0YWJsZVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJCb29sVmFsdWVcIiksIGNvbnN0YW50KGZhbHNlKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAoJXtpc0VkaXRhYmxlfSAmJiAle0Jvb2xWYWx1ZX0pfVwiXG5cdFx0KTtcblx0XHQvLyBcIk9wdGltaXplIG5lc3RlZCBpZi1lbHNlIChjb25kaXRpb24pXCJcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoaWZFbHNlKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImNvbmRpdGlvblwiKSwgdHJ1ZSwgZmFsc2UpLCBjb25zdGFudChcImFcIiksIGNvbnN0YW50KFwiYlwiKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAle2NvbmRpdGlvbn0gPyAnYScgOiAnYid9XCJcblx0XHQpO1xuXHRcdC8vXCJPcHRpbWl6ZSBuZXN0ZWQgaWYtZWxzZSAoY29uZGl0aW9uKVwiXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGlmRWxzZShpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJjb25kaXRpb25cIiksIGZhbHNlLCB0cnVlKSwgY29uc3RhbnQoXCJhXCIpLCBjb25zdGFudChcImJcIikpKSkudG9FcXVhbChcblx0XHRcdFwiez0gJXtjb25kaXRpb259ID8gJ2InIDogJ2EnfVwiXG5cdFx0KTtcblx0XHQvL1wiT3B0aW1pemUgbmVzdGVkIGlmLWVsc2UgKGNvbmRpdGlvbilcIlxuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRpZkVsc2UoaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiY29uZGl0aW9uXCIpLCBmYWxzZSwgYmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj4oXCJhXCIpKSwgY29uc3RhbnQoXCJiXCIpLCBjb25zdGFudChcImNcIikpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKFwiez0gKCEle2NvbmRpdGlvbn0gJiYgJXthfSkgPyAnYicgOiAnYyd9XCIpO1xuXHRcdC8vXCJPcHRpbWl6ZSBuZXN0ZWQgaWYtZWxzZSAob25UcnVlIGJyYW5jaClcIlxuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJjb25kaXRpb25cIiksIGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImNvbmRpdGlvblwiKSwgY29uc3RhbnQoXCJhXCIpLCBjb25zdGFudChcImJcIikpLCBjb25zdGFudChcImNcIikpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKFwiez0gJXtjb25kaXRpb259ID8gJ2EnIDogJ2MnfVwiKTtcblx0XHQvL1wiT3B0aW1pemUgbmVzdGVkIGlmLWVsc2UgKG9uRmFsc2UgYnJhbmNoKVwiXG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoXG5cdFx0XHRcdGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImNvbmRpdGlvblwiKSwgY29uc3RhbnQoXCJhXCIpLCBpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJjb25kaXRpb25cIiksIGNvbnN0YW50KFwiYlwiKSwgY29uc3RhbnQoXCJjXCIpKSlcblx0XHRcdClcblx0XHQpLnRvRXF1YWwoXCJ7PSAle2NvbmRpdGlvbn0gPyAnYScgOiAnYyd9XCIpO1xuXHRcdC8vXCJPcHRpbWl6ZSBuZXN0ZWQgaWYtZWxzZSAob25GYWxzZSBicmFuY2gpXCJcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdG5vdChiaW5kaW5nRXhwcmVzc2lvbihcImNvbmRpdGlvblwiKSksXG5cdFx0XHRcdFx0Y29uc3RhbnQoXCJhXCIpLFxuXHRcdFx0XHRcdGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImNvbmRpdGlvblwiKSwgY29uc3RhbnQoXCJiXCIpLCBjb25zdGFudChcImNcIikpXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpLnRvRXF1YWwoXCJ7PSAle2NvbmRpdGlvbn0gPyAnYicgOiAnYSd9XCIpO1xuXG5cdFx0Ly8gZXZlcnl0aGluZyBuZXN0ZWQgLSBjb25kaXRpb24sIG9uVHJ1ZSwgb25GYWxzZVxuXHRcdGNvbnN0IGNvbmRpdGlvbiA9IGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImNvbmRpdGlvblwiKSwgZmFsc2UsIGJpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+KFwiYVwiKSk7XG5cdFx0Y29uc3Qgb25UcnVlID0gaWZFbHNlKFxuXHRcdFx0YmluZGluZ0V4cHJlc3Npb24oXCJjb25kaXRpb25cIiksXG5cdFx0XHRpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJjb25kaXRpb25cIiksIGNvbnN0YW50KFwiYVwiKSwgY29uc3RhbnQoXCJiXCIpKSxcblx0XHRcdGNvbnN0YW50KFwiY1wiKVxuXHRcdCk7XG5cdFx0Y29uc3Qgb25GYWxzZSA9IGlmRWxzZShcblx0XHRcdGJpbmRpbmdFeHByZXNzaW9uKFwiY29uZGl0aW9uXCIpLFxuXHRcdFx0Y29uc3RhbnQoXCJhXCIpLFxuXHRcdFx0aWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiY29uZGl0aW9uXCIpLCBjb25zdGFudChcImJcIiksIGNvbnN0YW50KFwiY1wiKSlcblx0XHQpO1xuXG5cdFx0Ly9cIk9wdGltaXplIG5lc3RlZCBpZi1lbHNlIChjb25kaXRpb24gYW5kIGJvdGggYnJhbmNoZXMpXCJcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoaWZFbHNlKGNvbmRpdGlvbiwgb25UcnVlLCBvbkZhbHNlKSkpLnRvRXF1YWwoXCJ7PSAle2NvbmRpdGlvbn0gPyAnYScgOiAnYyd9XCIpO1xuXHR9KTtcblxuXHRpdChcImRlYWxzIHdpdGggcHJvcGVyIGVzY2FwaW5nIG9mIHRoZSBhcG9zdHJvcGhlXCIsICgpID0+IHtcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhpZkVsc2UoZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCIvZWRpdE1vZGVcIiwgXCJ1aVwiKSwgY29uc3RhbnQoXCJFZCdpdGFibGVcIikpLCBjb25zdGFudCh0cnVlKSwgY29uc3RhbnQoZmFsc2UpKSlcblx0XHQpLnRvRXF1YWwoXCJ7PSAle3VpPi9lZGl0TW9kZX0gPT09ICdFZFxcXFwnaXRhYmxlJ31cIik7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoaWZFbHNlKGVxdWFsKGJpbmRpbmdFeHByZXNzaW9uKFwiL2VkaXRNb2RlXCIsIFwidWlcIiksIGNvbnN0YW50KCdFZGlcInRhYmxlJykpLCBjb25zdGFudCh0cnVlKSwgY29uc3RhbnQoZmFsc2UpKSlcblx0XHQpLnRvRXF1YWwoXCJ7PSAle3VpPi9lZGl0TW9kZX0gPT09ICdFZGlcXFwidGFibGUnfVwiKTtcblx0XHQvLyBJbiBjYXNlIHRoZSBzdHJpbmcgaXMgdXNlZCBkaXJlY3RseSAtPiBubyBwcm9ibGVtXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGNvbnN0YW50KFwiO2E7YSc7ZGxhc2R3cW8+PCooXCIpKSkudG9FcXVhbChcIjthO2EnO2RsYXNkd3FvPjwqKFwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoY29uc3RhbnQoJ0FuZCB3aGF0IGlmIGkgdXNlIFwiZG91YmxlIHF1b3Rlc1wiJykpKS50b0VxdWFsKCdBbmQgd2hhdCBpZiBpIHVzZSBcImRvdWJsZSBxdW90ZXNcIicpO1xuXHR9KTtcblxuXHRpdChcIlJlZmVyZW5jZVwiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHJlZihcImZvb1wiKSkpLnRvRXF1YWwoXCJmb29cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHJlZihudWxsKSkpLnRvRXF1YWwoXCJudWxsXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhyZWYoXCJudWxsXCIpKSkudG9FcXVhbChcIm51bGxcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHJlZihcIlwiKSkpLnRvRXF1YWwoXCJudWxsXCIpO1xuXHR9KTtcblxuXHRpdChcIk9iamVjdFwiLCAoKSA9PiB7XG5cdFx0Ly8gY29tcGFyaXNvbnM6IEFycmF5XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGxlc3NUaGFuKFtdLCBbXSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGxlc3NPckVxdWFsKFtdLCBbXSkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoW10sIFtdKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZ3JlYXRlck9yRXF1YWwoW10sIFtdKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhncmVhdGVyVGhhbihbXSwgW10pKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhsZXNzVGhhbihbMF0sIFswXSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGxlc3NPckVxdWFsKFswXSwgWzBdKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhlcXVhbChbMF0sIFswXSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGdyZWF0ZXJPckVxdWFsKFswXSwgWzBdKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhncmVhdGVyVGhhbihbMF0sIFswXSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGxlc3NUaGFuKFswXSwgWzAsIDFdKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhsZXNzT3JFcXVhbChbMF0sIFswLCAxXSkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoWzBdLCBbMCwgMV0pKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhncmVhdGVyT3JFcXVhbChbMF0sIFswLCAxXSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGdyZWF0ZXJUaGFuKFswXSwgWzAsIDFdKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobGVzc1RoYW4oWzAsIDFdLCBbMF0pKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhsZXNzT3JFcXVhbChbMCwgMV0sIFswXSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGVxdWFsKFswLCAxXSwgWzBdKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZ3JlYXRlck9yRXF1YWwoWzAsIDFdLCBbMF0pKSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGdyZWF0ZXJUaGFuKFswLCAxXSwgWzBdKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGxlc3NUaGFuKHt9LCB7fSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGxlc3NPckVxdWFsKHt9LCB7fSkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoe30sIHt9KSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZ3JlYXRlck9yRXF1YWwoe30sIHt9KSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhncmVhdGVyVGhhbih7fSwge30pKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXG5cdFx0Ly8gaW1wbGljaXQgY29uc3RhbnQoKVxuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh7fSkpLnRvRXF1YWwoXCJ7fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IFwiYmFyXCIgfSkpLnRvRXF1YWwoXCJ7Zm9vOiAnYmFyJ31cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgZm9vOiAxIH0pKS50b0VxdWFsKFwie2ZvbzogMX1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgZm9vOiB0cnVlIH0pKS50b0VxdWFsKFwie2ZvbzogdHJ1ZX1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgZm9vOiBudWxsIH0pKS50b0VxdWFsKFwie2ZvbzogbnVsbH1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgZm9vOiB1bmRlZmluZWQgfSkpLnRvRXF1YWwoXCJ7fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IHsgYmFyOiBcImJhelwiIH0gfSkpLnRvRXF1YWwoXCJ7Zm9vOiB7YmFyOiAnYmF6J319XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh7IDE6IFwiYmFyXCIgfSkpLnRvRXF1YWwoXCJ7MTogJ2Jhcid9XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhbXSkpLnRvRXF1YWwoXCJbXVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoW3VuZGVmaW5lZCwgbnVsbF0pKS50b0VxdWFsKFwiW3VuZGVmaW5lZCwgbnVsbF1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKFsxLCAyLCAzXSkpLnRvRXF1YWwoXCJbMSwgMiwgM11cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgZm9vOiBbMSwgMiwgM10gfSkpLnRvRXF1YWwoXCJ7Zm9vOiBbMSwgMiwgM119XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh7fSwgdHJ1ZSkpLnRvRXF1YWwoXCJ7fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IFwiYmFyXCIgfSwgdHJ1ZSkpLnRvRXF1YWwoXCJ7Zm9vOiAnYmFyJ31cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgZm9vOiAxIH0sIHRydWUpKS50b0VxdWFsKFwie2ZvbzogMX1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgZm9vOiB0cnVlIH0sIHRydWUpKS50b0VxdWFsKFwie2ZvbzogdHJ1ZX1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgZm9vOiBudWxsIH0sIHRydWUpKS50b0VxdWFsKFwie2ZvbzogbnVsbH1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgZm9vOiB1bmRlZmluZWQgfSwgdHJ1ZSkpLnRvRXF1YWwoXCJ7fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IHsgYmFyOiBcImJhelwiIH0gfSwgdHJ1ZSkpLnRvRXF1YWwoXCJ7Zm9vOiB7YmFyOiAnYmF6J319XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh7IDE6IFwiYmFyXCIgfSwgdHJ1ZSkpLnRvRXF1YWwoXCJ7MTogJ2Jhcid9XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhbXSwgdHJ1ZSkpLnRvRXF1YWwoXCJbXVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoW3VuZGVmaW5lZCwgbnVsbF0sIHRydWUpKS50b0VxdWFsKFwiW3VuZGVmaW5lZCwgbnVsbF1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKFsxLCAyLCAzXSwgdHJ1ZSkpLnRvRXF1YWwoXCJbMSwgMiwgM11cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgZm9vOiBbMSwgMiwgM10gfSwgdHJ1ZSkpLnRvRXF1YWwoXCJ7Zm9vOiBbMSwgMiwgM119XCIpO1xuXG5cdFx0Ly8gZXhwbGljaXQgY29uc3RhbnQoKVxuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh7IGZvbzogY29uc3RhbnQoXCJiYXJcIikgfSkpLnRvRXF1YWwoXCJ7Zm9vOiAnYmFyJ31cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgZm9vOiBjb25zdGFudCgxKSB9KSkudG9FcXVhbChcIntmb286IDF9XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh7IGZvbzogY29uc3RhbnQodHJ1ZSkgfSkpLnRvRXF1YWwoXCJ7Zm9vOiB0cnVlfVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IGNvbnN0YW50KG51bGwpIH0pKS50b0VxdWFsKFwie2ZvbzogbnVsbH1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgZm9vOiBjb25zdGFudCh1bmRlZmluZWQpIH0pKS50b0VxdWFsKFwie31cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgMTogY29uc3RhbnQoXCJiYXJcIikgfSkpLnRvRXF1YWwoXCJ7MTogJ2Jhcid9XCIpO1xuXG5cdFx0Ly8gb3RoZXIgdHlwZXNcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IGJpbmRpbmdFeHByZXNzaW9uKFwiYmFyXCIpIH0pKS50b0VxdWFsKFwie2ZvbzogJXtiYXJ9fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IGNvbnN0YW50KFwiYmFyXCIpIH0pKS50b0VxdWFsKFwie2ZvbzogJ2Jhcid9XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh7IGZvbzogeyBiYXI6IGNvbnN0YW50KFwiYmF6XCIpIH0gfSkpLnRvRXF1YWwoXCJ7Zm9vOiB7YmFyOiAnYmF6J319XCIpO1xuXG5cdFx0Y29uc3Qgb2JqID0ge1xuXHRcdFx0Y29udGV4dHM6IGZuKFwiZ2V0QmluZGluZ0NvbnRleHRcIiwgW10sIGJpbmRpbmdFeHByZXNzaW9uKFwiLyNmZTo6T2JqZWN0UGFnZS9cIiwgXCIkdmlld1wiKSksXG5cdFx0XHRpbnZvY2F0aW9uR3JvdXBpbmc6IGNvbnN0YW50KFwiQ2hhbmdlU2V0XCIpLFxuXHRcdFx0bGFiZWw6IGNvbnN0YW50KFwiVGVzdFwiKSxcblx0XHRcdG1vZGVsOiBmbihcImdldE1vZGVsXCIsIFtdLCBiaW5kaW5nRXhwcmVzc2lvbihcIi9cIiwgXCIkc291cmNlXCIpKSxcblx0XHRcdGlzTmF2aWdhYmxlOiB0cnVlXG5cdFx0fTtcblxuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhvYmopKS50b0VxdWFsKFxuXHRcdFx0XCJ7Y29udGV4dHM6ICV7JHZpZXc+LyNmZTo6T2JqZWN0UGFnZS99LmdldEJpbmRpbmdDb250ZXh0KCksIGludm9jYXRpb25Hcm91cGluZzogJ0NoYW5nZVNldCcsIGxhYmVsOiAnVGVzdCcsIG1vZGVsOiAleyRzb3VyY2U+L30uZ2V0TW9kZWwoKSwgaXNOYXZpZ2FibGU6IHRydWV9XCJcblx0XHQpO1xuXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGVxdWFsKHsgZm9vOiBcImJhclwiIH0sIG51bGwpKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhlcXVhbCh7IGZvbzogXCJiYXJcIiB9LCB7IGZvbzogXCJiYXJcIiB9KSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0fSk7XG5cblx0aXQoXCJGdW5jdGlvblwiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGZuKFwiZm9vXCIsIFtdKSkpLnRvRXF1YWwoXCJmb28oKVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZm4oXCJmb29cIiwgWzFdKSkpLnRvRXF1YWwoXCJmb28oMSlcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGZuKFwiZm9vXCIsIFtcImJhclwiXSkpKS50b0VxdWFsKFwiZm9vKCdiYXInKVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZm4oXCJmb29cIiwgW2NvbnN0YW50KFwiYmFyXCIpXSkpKS50b0VxdWFsKFwiZm9vKCdiYXInKVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZm4oXCJmb29cIiwgW3JlZihcImJhclwiKV0pKSkudG9FcXVhbChcImZvbyhiYXIpXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhmbihcImZvb1wiLCBbeyBiYXI6IFwiYmF6XCIgfV0pKSkudG9FcXVhbChcImZvbyh7YmFyOiAnYmF6J30pXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhmbihcImZvb1wiLCBbbnVsbF0pKSkudG9FcXVhbChcImZvbyhudWxsKVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZm4oXCJmb29cIiwgW3VuZGVmaW5lZF0pKSkudG9FcXVhbChcImZvbyh1bmRlZmluZWQpXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhmbihcImZvb1wiLCBbMSwgMiwgMywgNF0pKSkudG9FcXVhbChcImZvbygxLCAyLCAzLCA0KVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZm4oXCJmb29cIiwgWzEsIDIsIHVuZGVmaW5lZCwgNCwgdW5kZWZpbmVkXSkpKS50b0VxdWFsKFwiZm9vKDEsIDIsIHVuZGVmaW5lZCwgNCwgdW5kZWZpbmVkKVwiKTtcblxuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhmbihcImZvb1wiLCBbcmVmKFwiJGNvbnRyb2xsZXJcIiksIGVxdWFsKGJpbmRpbmdFeHByZXNzaW9uKFwiYmFyXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcImJhelwiKSldKSkpLnRvRXF1YWwoXG5cdFx0XHRcImZvbygkY29udHJvbGxlciwgJXtiYXJ9ID09PSAle2Jhen0pXCJcblx0XHQpO1xuXG5cdFx0Y29uc3Qgb2JqID0gZm4oXCJNeUZ1bmN0aW9uXCIsIFtcblx0XHRcdHtcblx0XHRcdFx0Y29udGV4dHM6IGZuKFwiZ2V0QmluZGluZ0NvbnRleHRcIiwgW10sIGJpbmRpbmdFeHByZXNzaW9uKFwiLyNmZTo6T2JqZWN0UGFnZS9cIiwgXCIkdmlld1wiKSksXG5cdFx0XHRcdGludm9jYXRpb25Hcm91cGluZzogXCJDaGFuZ2VTZXRcIixcblx0XHRcdFx0bGFiZWw6IFwiVGVzdFwiLFxuXHRcdFx0XHRtb2RlbDogZm4oXCJnZXRNb2RlbFwiLCBbXSwgYmluZGluZ0V4cHJlc3Npb24oXCIvXCIsIFwiJHNvdXJjZVwiKSksXG5cdFx0XHRcdGlzTmF2aWdhYmxlOiB0cnVlXG5cdFx0XHR9LFxuXHRcdFx0MVxuXHRcdF0pO1xuXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG9iaikpLnRvRXF1YWwoXG5cdFx0XHRcIk15RnVuY3Rpb24oe2NvbnRleHRzOiAleyR2aWV3Pi8jZmU6Ok9iamVjdFBhZ2UvfS5nZXRCaW5kaW5nQ29udGV4dCgpLCBpbnZvY2F0aW9uR3JvdXBpbmc6ICdDaGFuZ2VTZXQnLCBsYWJlbDogJ1Rlc3QnLCBtb2RlbDogJXskc291cmNlPi99LmdldE1vZGVsKCksIGlzTmF2aWdhYmxlOiB0cnVlfSwgMSlcIlxuXHRcdCk7XG5cblx0XHQvLyBmbGF0IHBhcmFtZXRlciBsaXN0XG5cdFx0ZnVuY3Rpb24gbXlIYW5kbGVyKGE6IG51bWJlciwgYjogc3RyaW5nLCBjOiBib29sZWFuKTogc3RyaW5nIHtcblx0XHRcdHJldHVybiBcIkhpIVwiO1xuXHRcdH1cblxuXHRcdG15SGFuZGxlci5fX2Z1bmN0aW9uTmFtZSA9IFwiY2FsbE15SGFuZGxlclwiO1xuXG5cdFx0Ly9cIlR5cGVkIGZ1bmN0aW9uLCBmbGF0IHNpZ25hdHVyZVwiXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGZuKG15SGFuZGxlciwgWzEsIGJpbmRpbmdFeHByZXNzaW9uKFwibmFtZVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJpc1ZhbGlkXCIpXSkpKS50b0VxdWFsKFxuXHRcdFx0XCJjYWxsTXlIYW5kbGVyKDEsICV7bmFtZX0sICV7aXNWYWxpZH0pXCJcblx0XHQpO1xuXG5cdFx0Ly8gT2JqZWN0IGFzIHBhcmFtZXRlclxuXHRcdGZ1bmN0aW9uIG15SGFuZGxlck9iaihjOiB7IGNvbnRleHQ6IENvbnRleHQgfSk6IHN0cmluZyB7XG5cdFx0XHRyZXR1cm4gXCJIaSFcIjtcblx0XHR9XG5cblx0XHRteUhhbmRsZXJPYmouX19mdW5jdGlvbk5hbWUgPSBcImNhbGxNeUhhbmRsZXJcIjtcblxuXHRcdC8vIFwiVHlwZWQgZnVuY3Rpb24sIG9iamVjdC10eXBlZCBzaWduYXR1cmVcIlxuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKGZuKG15SGFuZGxlck9iaiwgW3sgY29udGV4dDogZm4oXCJnZXRCaW5kaW5nQ29udGV4dFwiLCBbXSwgYmluZGluZ0V4cHJlc3Npb24oXCIvI2ZlOjpPYmplY3RQYWdlL1wiLCBcIiR2aWV3XCIpKSB9XSkpXG5cdFx0KS50b0VxdWFsKFwiY2FsbE15SGFuZGxlcih7Y29udGV4dDogJXskdmlldz4vI2ZlOjpPYmplY3RQYWdlL30uZ2V0QmluZGluZ0NvbnRleHQoKX0pXCIpO1xuXHR9KTtcblxuXHRpdChcIkFwcGx5IEZ1bmN0aW9uXCIsICgpID0+IHtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZm4oXCJiYXJcIiwgW10sIHJlZihcImZvb1wiKSkpKS50b0VxdWFsKFwiZm9vLmJhcigpXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhmbihcImJhclwiLCBbXSwgYmluZGluZ0V4cHJlc3Npb24oXCIvI2ZlOjpPYmplY3RQYWdlL1wiLCBcIiR2aWV3XCIpKSkpLnRvRXF1YWwoXCIleyR2aWV3Pi8jZmU6Ok9iamVjdFBhZ2UvfS5iYXIoKVwiKTtcblx0fSk7XG5cblx0aXQoXCJGdW5jdGlvbiBhcyBwYXJ0IG9mIGV4cHJlc3Npb25cIiwgKCkgPT4ge1xuXHRcdGNvbnN0IGV4cHJlc3Npb24gPSBlcXVhbChmbihcImZvb1wiLCBbcmVmKFwiJGNvbnRyb2xsZXJcIiksIGNvbnN0YW50KDUpXSksIGNvbnN0YW50KDYpKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXhwcmVzc2lvbikpLnRvRXF1YWwoXCJ7PSBmb28oJGNvbnRyb2xsZXIsIDUpID09PSA2fVwiKTtcblx0fSk7XG5cblx0aXQoXCJDb25jYXQgT3BlcmF0b3JcIiwgKCkgPT4ge1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhjb25jYXQoXCJhXCIsIFwiYlwiKSkpLnRvRXF1YWwoXCJhYlwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoY29uY2F0KFwiYVwiLCBiaW5kaW5nRXhwcmVzc2lvbihcIkJpbmRpbmdQYXRoXCIpKSkpLnRvRXF1YWwoXCJ7PSAnYScgKyAke0JpbmRpbmdQYXRofSB9XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhjb25jYXQoXCJhXCIsIHVucmVzb2x2ZWFibGVFeHByZXNzaW9uLCBiaW5kaW5nRXhwcmVzc2lvbihcIkJpbmRpbmdQYXRoXCIpKSkpLnRvRXF1YWwodW5kZWZpbmVkKTtcblx0fSk7XG5cblx0aXQoXCJJcyBFbXB0eSBTaG9ydGN1dFwiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGlzRW1wdHkoYmluZGluZ0V4cHJlc3Npb24oXCJCaW5kaW5nUGF0aFwiKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAoJXtCaW5kaW5nUGF0aH0gPT09ICcnIHx8ICV7QmluZGluZ1BhdGh9ID09PSB1bmRlZmluZWQgfHwgJXtCaW5kaW5nUGF0aH0gPT09IG51bGwpfVwiXG5cdFx0KTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoaXNFbXB0eShjb25jYXQoXCJhXCIsIGJpbmRpbmdFeHByZXNzaW9uKFwiQmluZGluZ1BhdGhcIikpKSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICgle0JpbmRpbmdQYXRofSA9PT0gJycgfHwgJXtCaW5kaW5nUGF0aH0gPT09IHVuZGVmaW5lZCB8fCAle0JpbmRpbmdQYXRofSA9PT0gbnVsbCl9XCJcblx0XHQpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhpc0VtcHR5KGNvbmNhdChiaW5kaW5nRXhwcmVzc2lvbihcIkJpbmRpbmdQYXRoMVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJCaW5kaW5nUGF0aDJcIikpKSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICgle0JpbmRpbmdQYXRoMX0gPT09ICcnIHx8ICV7QmluZGluZ1BhdGgxfSA9PT0gdW5kZWZpbmVkIHx8ICV7QmluZGluZ1BhdGgxfSA9PT0gbnVsbCB8fCAle0JpbmRpbmdQYXRoMn0gPT09ICcnIHx8ICV7QmluZGluZ1BhdGgyfSA9PT0gdW5kZWZpbmVkIHx8ICV7QmluZGluZ1BhdGgyfSA9PT0gbnVsbCl9XCJcblx0XHQpO1xuXHR9KTtcblxuXHRpdChcIlN1cHBvcnQgcmVjdXJzaXZlIHRyYW5zZm9ybWF0aW9uXCIsICgpID0+IHtcblx0XHRjb25zdCB0cmFuc2Zvcm1CaW5kaW5nID0gKGJpbmRpbmc6IEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbjxhbnk+KSA9PiB7XG5cdFx0XHRiaW5kaW5nLm1vZGVsTmFtZSA9IFwibmV3TW9kZWxcIjtcblx0XHRcdHJldHVybiBiaW5kaW5nO1xuXHRcdH07XG5cdFx0Y29uc3QgdHJhbnNmb3JtQmluZGluZ1RvU2FtZVZhbHVlID0gKGJpbmRpbmc6IEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbjxhbnk+KSA9PiB7XG5cdFx0XHRpZiAoYmluZGluZy5wYXRoID09PSBcImlzRWRpdGFibGVcIikge1xuXHRcdFx0XHRyZXR1cm4gYmluZGluZztcblx0XHRcdH1cblx0XHRcdHJldHVybiBjb25zdGFudChcIkFcIikgYXMgRXhwcmVzc2lvbjxhbnk+O1xuXHRcdH07XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KGlzRW1wdHkoYmluZGluZ0V4cHJlc3Npb24oXCJCaW5kaW5nUGF0aFwiKSksIFwiQmluZGluZ1wiLCB0cmFuc2Zvcm1CaW5kaW5nKSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICgle0JpbmRpbmdQYXRofSA9PT0gJycgfHwgJXtCaW5kaW5nUGF0aH0gPT09IHVuZGVmaW5lZCB8fCAle0JpbmRpbmdQYXRofSA9PT0gbnVsbCl9XCJcblx0XHQpO1xuXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGNvbmNhdChiaW5kaW5nRXhwcmVzc2lvbihcIkJpbmRpbmdQYXRoXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkJ1YnVcIikpKSkudG9FcXVhbChcblx0XHRcdFwiez0gJHtCaW5kaW5nUGF0aH0gKyAke0J1YnV9IH1cIlxuXHRcdCk7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoXG5cdFx0XHRcdHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KGNvbmNhdChiaW5kaW5nRXhwcmVzc2lvbihcIkJpbmRpbmdQYXRoXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkJ1YnVcIikpLCBcIkJpbmRpbmdcIiwgdHJhbnNmb3JtQmluZGluZylcblx0XHRcdClcblx0XHQpLnRvRXF1YWwoXCJ7PSAke25ld01vZGVsPkJpbmRpbmdQYXRofSArICR7bmV3TW9kZWw+QnVidX0gfVwiKTtcblxuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHR0cmFuc2Zvcm1SZWN1cnNpdmVseShcblx0XHRcdFx0XHRmbihcImZvb1wiLCBbcmVmKFwiJGNvbnRyb2xsZXJcIiksIGVxdWFsKGJpbmRpbmdFeHByZXNzaW9uKFwiYmFyXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcImJhelwiKSldKSxcblx0XHRcdFx0XHRcIkJpbmRpbmdcIixcblx0XHRcdFx0XHR0cmFuc2Zvcm1CaW5kaW5nXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpLnRvRXF1YWwoXCJmb28oJGNvbnRyb2xsZXIsICV7YmFyfSA9PT0gJXtiYXp9KVwiKTtcblxuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh0cmFuc2Zvcm1SZWN1cnNpdmVseShub3QoYmluZGluZ0V4cHJlc3Npb24oXCJTYWxlc09yZGVyXCIpKSwgXCJCaW5kaW5nXCIsIHRyYW5zZm9ybUJpbmRpbmcpKSkudG9FcXVhbChcblx0XHRcdFwiez0gISV7U2FsZXNPcmRlcn19XCJcblx0XHQpO1xuXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KG5vdChiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpLCBcIkJpbmRpbmdcIiwgdHJhbnNmb3JtQmluZGluZywgdHJ1ZSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAhJXtuZXdNb2RlbD5TYWxlc09yZGVyfX1cIlxuXHRcdCk7XG5cblx0XHRjb25zdCBmYWtlRm9ybWF0dGVyID0gZnVuY3Rpb24oaXNFZGl0YWJsZTogc3RyaW5nKSB7XG5cdFx0XHQvLyBEbyBOb3RoaW5nXG5cdFx0XHRyZXR1cm4gXCJOb3RoaW5nXCI7XG5cdFx0fTtcblx0XHRmYWtlRm9ybWF0dGVyLl9fZnVuY3Rpb25OYW1lID0gXCJNeUZvcm1hdHRlck5hbWVcIjtcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhcblx0XHRcdFx0dHJhbnNmb3JtUmVjdXJzaXZlbHkoZm9ybWF0UmVzdWx0KFtiaW5kaW5nRXhwcmVzc2lvbihcImVkaXRNb2RlXCIsIFwidWlcIildLCBmYWtlRm9ybWF0dGVyKSwgXCJCaW5kaW5nXCIsIHRyYW5zZm9ybUJpbmRpbmcpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKFwie3BhdGg6J25ld01vZGVsPmVkaXRNb2RlJywgdGFyZ2V0VHlwZSA6ICdhbnknLCBmb3JtYXR0ZXI6ICdNeUZvcm1hdHRlck5hbWUnfVwiKTtcblxuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHR0cmFuc2Zvcm1SZWN1cnNpdmVseShcblx0XHRcdFx0XHRhZGRUeXBlSW5mb3JtYXRpb24oW2JpbmRpbmdFeHByZXNzaW9uKFwidmFsdWVcIiwgXCJ1aVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJ1bml0XCIsIFwidWlcIildLCBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlVuaXRcIiksXG5cdFx0XHRcdFx0XCJCaW5kaW5nXCIsXG5cdFx0XHRcdFx0dHJhbnNmb3JtQmluZGluZ1xuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKFxuXHRcdFx0XCJ7bW9kZTonVHdvV2F5JywgcGFydHM6W3twYXRoOiduZXdNb2RlbD52YWx1ZScsIHRhcmdldFR5cGUgOiAnYW55J30se3BhdGg6J25ld01vZGVsPnVuaXQnLCB0YXJnZXRUeXBlIDogJ2FueSd9LHttb2RlOidPbmVUaW1lJyxwYXRoOicvIyNAQHJlcXVlc3RVbml0c09mTWVhc3VyZScsdGFyZ2V0VHlwZTonYW55J31dLHR5cGU6J3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLlVuaXQnfVwiXG5cdFx0KTtcblxuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHR0cmFuc2Zvcm1SZWN1cnNpdmVseShcblx0XHRcdFx0XHRlcXVhbChpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJpc0VkaXRhYmxlXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkFcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQlwiKSksIGNvbnN0YW50KFwiQVwiKSksXG5cdFx0XHRcdFx0XCJCaW5kaW5nXCIsXG5cdFx0XHRcdFx0dHJhbnNmb3JtQmluZGluZ1xuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKFwiez0gKCV7aXNFZGl0YWJsZX0gPyAle0F9IDogJXtCfSkgPT09ICdBJ31cIik7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoXG5cdFx0XHRcdHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KFxuXHRcdFx0XHRcdGVxdWFsKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJCXCIpKSwgY29uc3RhbnQoXCJBXCIpKSxcblx0XHRcdFx0XHRcIkJpbmRpbmdcIixcblx0XHRcdFx0XHR0cmFuc2Zvcm1CaW5kaW5nLFxuXHRcdFx0XHRcdHRydWVcblx0XHRcdFx0KVxuXHRcdFx0KVxuXHRcdCkudG9FcXVhbChcIns9ICgle25ld01vZGVsPmlzRWRpdGFibGV9ID8gJXtuZXdNb2RlbD5BfSA6ICV7bmV3TW9kZWw+Qn0pID09PSAnQSd9XCIpO1xuXG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoXG5cdFx0XHRcdHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KFxuXHRcdFx0XHRcdGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJCXCIpKSxcblx0XHRcdFx0XHRcIkJpbmRpbmdcIixcblx0XHRcdFx0XHR0cmFuc2Zvcm1CaW5kaW5nXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpLnRvRXF1YWwoXCJ7PSAle2lzRWRpdGFibGV9ID8gJXtuZXdNb2RlbD5BfSA6ICV7bmV3TW9kZWw+Qn19XCIpO1xuXG5cdFx0Ly8gVHJhbnNmb3JtYXRpb24gYWxzbyBjYW4gdHJpZ2dlciBzaW1wbGlmaWNhdGlvblxuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHR0cmFuc2Zvcm1SZWN1cnNpdmVseShcblx0XHRcdFx0XHRpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJpc0VkaXRhYmxlXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkFcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQlwiKSksXG5cdFx0XHRcdFx0XCJCaW5kaW5nXCIsXG5cdFx0XHRcdFx0dHJhbnNmb3JtQmluZGluZ1RvU2FtZVZhbHVlXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpLnRvRXF1YWwoXCJBXCIpO1xuXG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoXG5cdFx0XHRcdHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KFxuXHRcdFx0XHRcdGVxdWFsKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJCXCIpKSwgY29uc3RhbnQoXCJBXCIpKSxcblx0XHRcdFx0XHRcIkJpbmRpbmdcIixcblx0XHRcdFx0XHR0cmFuc2Zvcm1CaW5kaW5nVG9TYW1lVmFsdWUsXG5cdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0fSk7XG5cblx0aXQoXCJTdXBwb3J0cyBCaW5kaW5nU3RyaW5nIE9wZXJhdG9yXCIsICgpID0+IHtcblx0XHQvLyBCb29sZWFuIGNhc2Vcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcocmVzb2x2ZUJpbmRpbmdTdHJpbmcoXCJ0cnVlXCIsIFwiYm9vbGVhblwiKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhyZXNvbHZlQmluZGluZ1N0cmluZyhcImZhbHNlXCIsIFwiYm9vbGVhblwiKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcocmVzb2x2ZUJpbmRpbmdTdHJpbmcodHJ1ZSwgXCJib29sZWFuXCIpKSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHJlc29sdmVCaW5kaW5nU3RyaW5nKGZhbHNlLCBcImJvb2xlYW5cIikpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHJlc29sdmVCaW5kaW5nU3RyaW5nKFwiWW9sb1wiKSkpLnRvRXF1YWwoXCJZb2xvXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhyZXNvbHZlQmluZGluZ1N0cmluZyhcIntzb21ldGhpbmc+ZWxzZX1cIiwgXCJib29sZWFuXCIpKSkudG9FcXVhbChcIntzb21ldGhpbmc+ZWxzZX1cIik7XG5cdH0pO1xufSk7XG4iXX0=
|
|
559
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJpbmRpbmdFeHByZXNzaW9uLnNwZWMudHMiXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJpdCIsImV4cGVjdCIsImNvbXBpbGVCaW5kaW5nIiwiY29uc3RhbnQiLCJ0b0VxdWFsIiwidW5yZXNvbHZlYWJsZUV4cHJlc3Npb24iLCJ1bmRlZmluZWQiLCJiaW5kaW5nRXhwcmVzc2lvbiIsIm15QmluZGluZ0V4cHJlc3Npb24iLCJ0YXJnZXRUeXBlIiwiZm9ybWF0T3B0aW9ucyIsInBhcnNlS2VlcHNFbXB0eVN0cmluZyIsImNvbnN0cmFpbnRzIiwic2NhbGUiLCJwcmVjaXNpb24iLCJlcXVhbCIsImlmRWxzZSIsImEiLCJiIiwibm90Iiwibm90RXF1YWwiLCJkdWFsRXF1YWxpdHkiLCJkdWFsTkVxdWFsaXR5IiwiZHVhbEVxdWFsaXR5RXhwcmVzc2lvbiIsIkJpbmRpbmdQYXJzZXIiLCJjb21wbGV4UGFyc2VyIiwiZm9ybWF0dGVyIiwiZHVhbE5FcXVhbGl0eUV4cHJlc3Npb24iLCJfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsIiwiaXNUcnV0aHkiLCJhbmQiLCJmYWtlRm9ybWF0dGVyIiwiaXNFZGl0YWJsZSIsIl9fZnVuY3Rpb25OYW1lIiwiZm9ybWF0UmVzdWx0IiwiYWRkVHlwZUluZm9ybWF0aW9uIiwib3IiLCJncmVhdGVyVGhhbiIsImdyZWF0ZXJPckVxdWFsIiwibGVzc09yRXF1YWwiLCJsZXNzVGhhbiIsImZha2VFbnRpdHlUeXBlIiwia2V5cyIsIm5hbWUiLCJmYWtlRm9ybWF0dGVyMiIsImJvb2wiLCJudW1iZXIiLCJmYWtlRm9ybWF0dGVyMyIsImNvbmRpdGlvbiIsIm9uVHJ1ZSIsIm9uRmFsc2UiLCJyZWYiLCJmb28iLCJiYXIiLCJvYmoiLCJjb250ZXh0cyIsImZuIiwiaW52b2NhdGlvbkdyb3VwaW5nIiwibGFiZWwiLCJtb2RlbCIsImlzTmF2aWdhYmxlIiwibXlIYW5kbGVyIiwiYyIsIm15SGFuZGxlck9iaiIsImNvbnRleHQiLCJleHByZXNzaW9uIiwiY29uY2F0IiwibGVuZ3RoIiwiaXNFbXB0eSIsInRyYW5zZm9ybUJpbmRpbmciLCJiaW5kaW5nIiwibW9kZWxOYW1lIiwidHJhbnNmb3JtQmluZGluZ1RvU2FtZVZhbHVlIiwicGF0aCIsInRyYW5zZm9ybVJlY3Vyc2l2ZWx5IiwicmVzb2x2ZUJpbmRpbmdTdHJpbmciXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdDQUEsRUFBQUEsUUFBUSxDQUFDLDZCQUFELEVBQWdDLFlBQVc7QUFDbERDLElBQUFBLEVBQUUsQ0FBQyxXQUFELEVBQWMsWUFBTTtBQUNyQkMsTUFBQUEsTUFBTSxDQUFDQyxjQUFjLENBQUNDLFFBQVEsQ0FBQyxHQUFELENBQVQsQ0FBZixDQUFOLENBQXNDQyxPQUF0QyxDQUE4QyxHQUE5QztBQUNBSCxNQUFBQSxNQUFNLENBQUNDLGNBQWMsQ0FBQ0MsUUFBUSxDQUFDLENBQUQsQ0FBVCxDQUFmLENBQU4sQ0FBb0NDLE9BQXBDLENBQTRDLEdBQTVDO0FBQ0FILE1BQUFBLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDQyxRQUFRLENBQUMsSUFBRCxDQUFULENBQWYsQ0FBTixDQUF1Q0MsT0FBdkMsQ0FBK0MsTUFBL0M7QUFDQUgsTUFBQUEsTUFBTSxDQUFDQyxjQUFjLENBQUMsSUFBRCxDQUFmLENBQU4sQ0FBNkJFLE9BQTdCLENBQXFDLE1BQXJDO0FBQ0FILE1BQUFBLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDRyx1QkFBRCxDQUFmLENBQU4sQ0FBZ0RELE9BQWhELENBQXdERSxTQUF4RDtBQUNBLEtBTkMsQ0FBRjtBQVFBTixJQUFBQSxFQUFFLENBQUMscUJBQUQsRUFBd0IsWUFBTTtBQUMvQkMsTUFBQUEsTUFBTSxDQUFDQyxjQUFjLENBQUNLLGlCQUFpQixDQUFDLFFBQUQsQ0FBbEIsQ0FBZixDQUFOLENBQW9ESCxPQUFwRCxDQUE0RCxVQUE1RDtBQUNBSCxNQUFBQSxNQUFNLENBQUNDLGNBQWMsQ0FBQ0ssaUJBQWlCLENB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QUEsRUFBRSxDQUFDLGlDQUFELEVBQW9DLFlBQU07QUFDM0M7QUFDQUMsTUFBQUEsTUFBTSxDQUFDQyxjQUFjLENBQUN5RSxvQkFBb0IsQ0FBQyxNQUFELEVBQVMsU0FBVCxDQUFyQixDQUFmLENBQU4sQ0FBZ0V2RSxPQUFoRSxDQUF3RSxNQUF4RTtBQUNBSCxNQUFBQSxNQUFNLENBQUNDLGNBQWMsQ0FBQ3lFLG9CQUFvQixDQUFDLE9BQUQsRUFBVSxTQUFWLENBQXJCLENBQWYsQ0FBTixDQUFpRXZFLE9BQWpFLENBQXlFLE9BQXpFO0FBQ0FILE1BQUFBLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDeUUsb0JBQW9CLENBQUMsSUFBRCxFQUFPLFNBQVAsQ0FBckIsQ0FBZixDQUFOLENBQThEdkUsT0FBOUQsQ0FBc0UsTUFBdEU7QUFDQUgsTUFBQUEsTUFBTSxDQUFDQyxjQUFjLENBQUN5RSxvQkFBb0IsQ0FBQyxLQUFELEVBQVEsU0FBUixDQUFyQixDQUFmLENBQU4sQ0FBK0R2RSxPQUEvRCxDQUF1RSxPQUF2RTtBQUNBSCxNQUFBQSxNQUFNLENBQUNDLGNBQWMsQ0FBQ3lFLG9CQUFvQixDQUFDLE1BQUQsQ0FBckIsQ0FBZixDQUFOLENBQXFEdkUsT0FBckQsQ0FBNkQsTUFBN0Q7QUFDQUgsTUFBQUEsTUFBTSxDQUFDQyxjQUFjLENBQUN5RSxvQkFBb0IsQ0FBQyxrQkFBRCxFQUFxQixTQUFyQixDQUFyQixDQUFmLENBQU4sQ0FBNEV2RSxPQUE1RSxDQUFvRixrQkFBcEY7QUFDQSxLQVJDLENBQUY7QUFTQSxHQWp5Qk8sQ0FBUiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0YW5kLFxuXHRiaW5kaW5nRXhwcmVzc2lvbixcblx0Y29tcGlsZUJpbmRpbmcsXG5cdGNvbnN0YW50LFxuXHRlcXVhbCxcblx0RXhwcmVzc2lvbixcblx0X2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbCxcblx0Zm4sXG5cdGZvcm1hdFJlc3VsdCxcblx0YWRkVHlwZUluZm9ybWF0aW9uLFxuXHRncmVhdGVyT3JFcXVhbCxcblx0Z3JlYXRlclRoYW4sXG5cdGlmRWxzZSxcblx0bGVzc09yRXF1YWwsXG5cdGxlc3NUaGFuLFxuXHRub3QsXG5cdG5vdEVxdWFsLFxuXHRvcixcblx0cmVmLFxuXHRjb25jYXQsXG5cdGxlbmd0aCxcblx0aXNFbXB0eSxcblx0dHJhbnNmb3JtUmVjdXJzaXZlbHksXG5cdEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbixcblx0cmVzb2x2ZUJpbmRpbmdTdHJpbmcsXG5cdHVucmVzb2x2ZWFibGVFeHByZXNzaW9uLFxuXHRpc1RydXRoeSxcblx0YW5ub3RhdGlvbkV4cHJlc3Npb25cbn0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcbmltcG9ydCB7IEVudGl0eVR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0XCI7XG5pbXBvcnQgeyBCaW5kaW5nUGFyc2VyIH0gZnJvbSBcInNhcC91aS9iYXNlXCI7XG5cbmRlc2NyaWJlKFwiQmluZGluZyBFeHByZXNzaW9ucyBTdXBwb3J0XCIsIGZ1bmN0aW9uKCkge1xuXHRpdChcIkNvbnN0YW50c1wiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGNvbnN0YW50KFwiMVwiKSkpLnRvRXF1YWwoXCIxXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhjb25zdGFudCgxKSkpLnRvRXF1YWwoXCIxXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhjb25zdGFudCh0cnVlKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh0cnVlKSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHVucmVzb2x2ZWFibGVFeHByZXNzaW9uKSkudG9FcXVhbCh1bmRlZmluZWQpO1xuXHR9KTtcblxuXHRpdChcIkJpbmRpbmcgRXhwcmVzc2lvbnNcIiwgKCkgPT4ge1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhiaW5kaW5nRXhwcmVzc2lvbihcIm15UGF0aFwiKSkpLnRvRXF1YWwoXCJ7bXlQYXRofVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoYmluZGluZ0V4cHJlc3Npb24oXCJteVBhdGhcIiksIHRydWUpKS50b0VxdWFsKFwiJXtteVBhdGh9XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhiaW5kaW5nRXhwcmVzc2lvbihcIm15UGF0aFwiKSwgdHJ1ZSwgdHJ1ZSkpLnRvRXF1YWwoXCIke215UGF0aH1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGJpbmRpbmdFeHByZXNzaW9uKFwibXlQYXRoXCIsIFwibXlNb2RlbFwiKSkpLnRvRXF1YWwoXCJ7bXlNb2RlbD5teVBhdGh9XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhiaW5kaW5nRXhwcmVzc2lvbihcIm15UGF0aFwiLCBcIm15TW9kZWxcIiksIHRydWUpKS50b0VxdWFsKFwiJXtteU1vZGVsPm15UGF0aH1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGJpbmRpbmdFeHByZXNzaW9uKFwibXlQYXRoXCIsIFwibXlNb2RlbFwiKSwgdHJ1ZSwgdHJ1ZSkpLnRvRXF1YWwoXCIke215TW9kZWw+bXlQYXRofVwiKTtcblx0XHQvLyBOb3Qgc28gZ3JlYXQgdXNhZ2UgdGhhdCB3ZSB1c2UgaW4gc29tZSBwbGFjZVxuXHRcdGNvbnN0IG15QmluZGluZ0V4cHJlc3Npb246IEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbjxhbnk+ID0gYmluZGluZ0V4cHJlc3Npb24oXCJteVBhdGhcIiwgXCJteU1vZGVsXCIpIGFzIEJpbmRpbmdFeHByZXNzaW9uRXhwcmVzc2lvbjxcblx0XHRcdGFueVxuXHRcdD47XG5cdFx0bXlCaW5kaW5nRXhwcmVzc2lvbi50YXJnZXRUeXBlID0gXCJib29sZWFuXCI7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG15QmluZGluZ0V4cHJlc3Npb24pKS50b0VxdWFsKFwie3BhdGg6ICdteU1vZGVsPm15UGF0aCcsIHRhcmdldFR5cGU6ICdib29sZWFuJ31cIik7XG5cdFx0ZGVsZXRlIG15QmluZGluZ0V4cHJlc3Npb24udGFyZ2V0VHlwZTtcblx0XHRteUJpbmRpbmdFeHByZXNzaW9uLmZvcm1hdE9wdGlvbnMgPSB7XG5cdFx0XHRwYXJzZUtlZXBzRW1wdHlTdHJpbmc6IHRydWVcblx0XHR9O1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhteUJpbmRpbmdFeHByZXNzaW9uKSkudG9FcXVhbChcIntwYXRoOiAnbXlNb2RlbD5teVBhdGgnLCBmb3JtYXRPcHRpb25zOiB7cGFyc2VLZWVwc0VtcHR5U3RyaW5nOiB0cnVlfX1cIik7XG5cdFx0ZGVsZXRlIG15QmluZGluZ0V4cHJlc3Npb24uZm9ybWF0T3B0aW9ucztcblx0XHRteUJpbmRpbmdFeHByZXNzaW9uLmNvbnN0cmFpbnRzID0ge307XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG15QmluZGluZ0V4cHJlc3Npb24pKS50b0VxdWFsKFwie3BhdGg6ICdteU1vZGVsPm15UGF0aCd9XCIpO1xuXHRcdG15QmluZGluZ0V4cHJlc3Npb24uY29uc3RyYWludHMuc2NhbGUgPSAxO1xuXHRcdG15QmluZGluZ0V4cHJlc3Npb24uY29uc3RyYWludHMucHJlY2lzaW9uID0gNTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobXlCaW5kaW5nRXhwcmVzc2lvbikpLnRvRXF1YWwoXCJ7cGF0aDogJ215TW9kZWw+bXlQYXRoJywgY29uc3RyYWludHM6IHtzY2FsZTogMSwgcHJlY2lzaW9uOiA1fX1cIik7XG5cdH0pO1xuXG5cdGl0KFwiQ29tcGFyaXNvblwiLCAoKSA9PiB7XG5cdFx0Ly8gXCJlcXVhbChpZkVsc2UoeCwgYSwgYSksIGEpIC0tPiB0cnVlXCJcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiaXNFZGl0YWJsZVwiKSwgY29uc3RhbnQoXCJBXCIpLCBjb25zdGFudChcIkFcIikpLCBjb25zdGFudChcIkFcIikpKSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0Ly9cImVxdWFsKGlmRWxzZSh4LCBiLCBiKSwgYSkgLS0+IGZhbHNlXCI7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGVxdWFsKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiksIGNvbnN0YW50KFwiQlwiKSwgY29uc3RhbnQoXCJCXCIpKSwgY29uc3RhbnQoXCJBXCIpKSkpLnRvRXF1YWwoXG5cdFx0XHRcImZhbHNlXCJcblx0XHQpO1xuXHRcdC8vXCIodXNpbmcgY29uc3RhbnRzKSBlcXVhbChpZkVsc2UoeCwgYSwgYiksIGEpIC0tPiB4XCI7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGVxdWFsKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiksIGNvbnN0YW50KFwiQVwiKSwgY29uc3RhbnQoXCJCXCIpKSwgY29uc3RhbnQoXCJBXCIpKSkpLnRvRXF1YWwoXG5cdFx0XHRcIntpc0VkaXRhYmxlfVwiXG5cdFx0KTtcblx0XHQvL1wiKHVzaW5nIGJpbmRpbmcgZXhwcmVzc2lvbnMpIGVxdWFsKGlmRWxzZSh4LCBhLCBiKSwgYSkgLS0+IHggfHwgYiA9PT0gYVwiO1xuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRlcXVhbChpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJpc0VkaXRhYmxlXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkFcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQlwiKSksIGJpbmRpbmdFeHByZXNzaW9uKFwiQVwiKSlcblx0XHRcdClcblx0XHQpLnRvRXF1YWwoXCJ7PSAle2lzRWRpdGFibGV9IHx8ICV7Qn0gPT09ICV7QX19XCIpO1xuXG5cdFx0Ly9cImVxdWFsKGlmRWxzZSh4LCBhLCBiKSwgYykgLS0+IG5vIHJlZHVjdGlvblwiO1xuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKGVxdWFsKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJCXCIpKSwgY29uc3RhbnQoXCJBXCIpKSlcblx0XHQpLnRvRXF1YWwoXCJ7PSAoJXtpc0VkaXRhYmxlfSA/ICV7QX0gOiAle0J9KSA9PT0gJ0EnfVwiKTtcblxuXHRcdGNvbnN0IGEgPSBpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJpc0VkaXRhYmxlXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkFcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQlwiKSk7XG5cdFx0Y29uc3QgYiA9IGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJCXCIpKTtcblx0XHQvL1wiZXF1YWwoYSwgYSkgLS0+IHRydWVcIlxuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhlcXVhbChhLCBiKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdC8vIFwiZXF1YWwobnVsbCwgbnVsbCkgLS0+IHRydWVcIlxuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhlcXVhbChjb25zdGFudChudWxsKSwgY29uc3RhbnQobnVsbCkpKSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0Ly8gc2ltcGxpZnkgaWYgZWxzZSB3aGVuIG9uVHJ1ZSBhbmQgb25GYWxzZSBjYW5ub3QgYmUgZXF1YWwgdG8gcmlnaHRFeHByZXNzaW9uIGluIGNhc2Vcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpLCBjb25zdGFudChcIjBcIiksIGNvbnN0YW50KFwiMVwiKSksIGNvbnN0YW50KFwiMlwiKSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoZXF1YWwoaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkFcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQlwiKSksIGJpbmRpbmdFeHByZXNzaW9uKFwiQ1wiKSkpXG5cdFx0KS5ub3QudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhlcXVhbChpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIiksIGNvbnN0YW50KFwiMFwiKSwgY29uc3RhbnQoXCIxXCIpKSwgYmluZGluZ0V4cHJlc3Npb24oXCJiYXJcIikpKSkudG9FcXVhbChcblx0XHRcdFwiez0gKCV7Zm9vfSA/ICcwJyA6ICcxJykgPT09ICV7YmFyfX1cIlxuXHRcdCk7XG5cblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpLCBjb25zdGFudChcIjBcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQlwiKSksIGNvbnN0YW50KFwiMFwiKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAle2Zvb30gfHwgJXtCfSA9PT0gJzAnfVwiXG5cdFx0KTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkJcIiksIGNvbnN0YW50KFwiMVwiKSksIGNvbnN0YW50KFwiMVwiKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAhJXtmb299IHx8ICV7Qn0gPT09ICcxJ31cIlxuXHRcdCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGVxdWFsKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSwgY29uc3RhbnQoXCIxXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkJcIikpLCBjb25zdGFudChcIjFcIikpKSkudG9FcXVhbChcblx0XHRcdFwiez0gJXtmb299IHx8ICV7Qn0gPT09ICcxJ31cIlxuXHRcdCk7XG5cblx0XHQvLyBcIm5vdEVxdWFsKGEsIGEpIC0tPiBmYWxzZVwiXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG5vdEVxdWFsKGEsIGIpKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdC8vIFwibm90RXF1YWwobnVsbCwgbnVsbCkgLS0+IGZhbHNlXCJcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90RXF1YWwoY29uc3RhbnQobnVsbCksIGNvbnN0YW50KG51bGwpKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblxuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhub3RFcXVhbCh1bnJlc29sdmVhYmxlRXhwcmVzc2lvbiwgY29uc3RhbnQoMykpKSkudG9FcXVhbCh1bmRlZmluZWQpO1xuXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG5vdEVxdWFsKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSwgY29uc3RhbnQoXCIwXCIpLCBjb25zdGFudChcIjFcIikpLCBjb25zdGFudChcIjJcIikpKSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoXG5cdFx0XHRcdG5vdEVxdWFsKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJBXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkJcIikpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkNcIikpXG5cdFx0XHQpXG5cdFx0KS5ub3QudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG5vdEVxdWFsKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSwgY29uc3RhbnQoXCIwXCIpLCBjb25zdGFudChcIjFcIikpLCBiaW5kaW5nRXhwcmVzc2lvbihcImJhclwiKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAoJXtmb299ID8gJzAnIDogJzEnKSAhPT0gJXtiYXJ9fVwiXG5cdFx0KTtcblxuXHRcdGNvbnN0IGR1YWxFcXVhbGl0eSA9IGNvbXBpbGVCaW5kaW5nKGVxdWFsKGVxdWFsKDEyMywgYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIikpLCBlcXVhbCgxMzcsIGJpbmRpbmdFeHByZXNzaW9uKFwiYmFyXCIpKSkpO1xuXHRcdGNvbnN0IGR1YWxORXF1YWxpdHkgPSBjb21waWxlQmluZGluZyhub3RFcXVhbChlcXVhbCgxMjMsIGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpKSwgZXF1YWwoMTM3LCBiaW5kaW5nRXhwcmVzc2lvbihcImJhclwiKSkpKTtcblx0XHRleHBlY3QoZHVhbEVxdWFsaXR5KS50b0VxdWFsKFwiez0gKDEyMyA9PT0gJXtmb299KSA9PT0gKDEzNyA9PT0gJXtiYXJ9KX1cIik7XG5cdFx0ZXhwZWN0KGR1YWxORXF1YWxpdHkpLnRvRXF1YWwoXCJ7PSAoMTIzID09PSAle2Zvb30pICE9PSAoMTM3ID09PSAle2Jhcn0pfVwiKTtcblxuXHRcdGNvbnN0IGR1YWxFcXVhbGl0eUV4cHJlc3Npb24gPSBCaW5kaW5nUGFyc2VyLmNvbXBsZXhQYXJzZXIoZHVhbEVxdWFsaXR5KTtcblx0XHQvLyAoMTIzID09PSAxMjMpID09PSAoMTM3ID09PSAxMzcpIC0+IHRydWUgPT09IHRydWUgLT4gdHJ1ZVxuXHRcdGV4cGVjdChkdWFsRXF1YWxpdHlFeHByZXNzaW9uLmZvcm1hdHRlcigxMjMsIDEzNykpLnRvRXF1YWwodHJ1ZSk7XG5cdFx0Ly8gKDEyMyA9PT0gMTIzKSA9PT0gKDEzNyA9PT0gMTM2KSAtPiB0cnVlID09PSBmYWxzZSAtPiBmYWxzZVxuXHRcdGV4cGVjdChkdWFsRXF1YWxpdHlFeHByZXNzaW9uLmZvcm1hdHRlcigxMjMsIDEzNikpLnRvRXF1YWwoZmFsc2UpO1xuXG5cdFx0Y29uc3QgZHVhbE5FcXVhbGl0eUV4cHJlc3Npb24gPSBCaW5kaW5nUGFyc2VyLmNvbXBsZXhQYXJzZXIoZHVhbE5FcXVhbGl0eSk7XG5cdFx0Ly8gKDEyMyA9PT0gMTIzKSAhPT0gKDEzNyA9PT0gMTM3KSAtPiB0cnVlICE9PSB0cnVlIC0+IGZhbHNlXG5cdFx0ZXhwZWN0KGR1YWxORXF1YWxpdHlFeHByZXNzaW9uLmZvcm1hdHRlcigxMjMsIDEzNykpLnRvRXF1YWwoZmFsc2UpO1xuXHRcdC8vICgxMjMgPT09IDEyMykgIT09ICgxMzcgPT09IDEzNikgLT4gdHJ1ZSAhPT0gZmFsc2UgLT4gdHJ1ZVxuXHRcdGV4cGVjdChkdWFsTkVxdWFsaXR5RXhwcmVzc2lvbi5mb3JtYXR0ZXIoMTIzLCAxMzYpKS50b0VxdWFsKHRydWUpO1xuXHRcdC8vICgxMjMgPT09IDEzNykgIT09ICgxMzcgPT09IDEzNykgLT4gZmFsc2UgIT09IHRydWUgLT4gdHJ1ZVxuXHRcdGV4cGVjdChkdWFsTkVxdWFsaXR5RXhwcmVzc2lvbi5mb3JtYXR0ZXIoMTM3LCAxMzcpKS50b0VxdWFsKHRydWUpO1xuXHR9KTtcblxuXHRpdChcIkRhdGEgbW9kZWwgZGVmaW5pdGlvblwiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGJpbmRpbmdFeHByZXNzaW9uKFwiZWRpdE1vZGVcIiwgXCJ1aVwiKSkpLnRvRXF1YWwoXCJ7dWk+ZWRpdE1vZGV9XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpKS50b0VxdWFsKFwie1NhbGVzT3JkZXJ9XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhiaW5kaW5nRXhwcmVzc2lvbih1bmRlZmluZWQpKSkudG9FcXVhbCh1bmRlZmluZWQpO1xuXHR9KTtcblxuXHRpdChcIkNvbnN0YW50IEVxdWFsaXR5XCIsICgpID0+IHtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoY29uc3RhbnQoXCIxXCIpLCBjb25zdGFudChcIjFcIikpKSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGVxdWFsKGNvbnN0YW50KDEpLCBjb25zdGFudCgxKSkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoY29uc3RhbnQoMSksIGNvbnN0YW50KDE1KSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGVxdWFsKGNvbnN0YW50KHRydWUpLCBjb25zdGFudChmYWxzZSkpKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG5vdEVxdWFsKGNvbnN0YW50KFwiMVwiKSwgY29uc3RhbnQoXCIxXCIpKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90RXF1YWwoY29uc3RhbnQoMSksIGNvbnN0YW50KDEpKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90RXF1YWwoY29uc3RhbnQoMSksIGNvbnN0YW50KDE1KSkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90RXF1YWwoY29uc3RhbnQodHJ1ZSksIGNvbnN0YW50KGZhbHNlKSkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwodW5kZWZpbmVkLCB1bmRlZmluZWQpKSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGVxdWFsKHVuZGVmaW5lZCwgdHJ1ZSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGVxdWFsKHVuZGVmaW5lZCwgZmFsc2UpKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhlcXVhbCh1bmRlZmluZWQsIDEpKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhlcXVhbCh1bmRlZmluZWQsIFwiZm9vXCIpKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhlcXVhbCh1bnJlc29sdmVhYmxlRXhwcmVzc2lvbiwgXCJmb29cIikpKS50b0VxdWFsKHVuZGVmaW5lZCk7XG5cdH0pO1xuXG5cdGl0KFwiRXhwcmVzc2lvbiBFcXVhbGl0eVwiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwoY29uc3RhbnQodHJ1ZSkgYXMgRXhwcmVzc2lvbjxhbnk+LCBjb25zdGFudCg0KSBhcyBFeHByZXNzaW9uPGFueT4pKS50b0VxdWFsKGZhbHNlKTtcblx0XHRleHBlY3QoX2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChjb25zdGFudChcIjFcIiksIGNvbnN0YW50KFwiMVwiKSkpLnRvRXF1YWwodHJ1ZSk7XG5cdFx0ZXhwZWN0KF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwoY29uc3RhbnQoXCIxXCIpLCBjb25zdGFudChcIjJcIikpKS50b0VxdWFsKGZhbHNlKTtcblx0XHRleHBlY3QoX2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChjb25zdGFudChcIjFcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpKSkudG9FcXVhbChmYWxzZSk7XG5cdFx0ZXhwZWN0KF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwobm90KGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpKSwgbm90KGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpKSkpLnRvRXF1YWwodHJ1ZSk7XG5cdFx0ZXhwZWN0KF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwoaXNUcnV0aHkoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIikpLCBpc1RydXRoeShiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSkpKS50b0VxdWFsKHRydWUpO1xuXHRcdGV4cGVjdChfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKGlzVHJ1dGh5KGNvbnN0YW50KFwiZm9vXCIpKSwgY29uc3RhbnQodHJ1ZSkpKS50b0VxdWFsKHRydWUpO1xuXHRcdGV4cGVjdChfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSkpLnRvRXF1YWwodHJ1ZSk7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0X2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChcblx0XHRcdFx0YW5kKGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcImJhclwiKSksXG5cdFx0XHRcdGFuZChiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJiYXJcIikpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKHRydWUpO1xuXHRcdGV4cGVjdChcblx0XHRcdF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwoXG5cdFx0XHRcdGFuZChiaW5kaW5nRXhwcmVzc2lvbihcImJhclwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIikpLFxuXHRcdFx0XHRhbmQoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiYmFyXCIpKVxuXHRcdFx0KVxuXHRcdCkudG9FcXVhbCh0cnVlKTtcblxuXHRcdGNvbnN0IGZha2VGb3JtYXR0ZXIgPSBmdW5jdGlvbihpc0VkaXRhYmxlOiBzdHJpbmcpIHtcblx0XHRcdC8vIERvIE5vdGhpbmdcblx0XHRcdHJldHVybiBcIk5vdGhpbmdcIjtcblx0XHR9O1xuXHRcdGZha2VGb3JtYXR0ZXIuX19mdW5jdGlvbk5hbWUgPSBcIk15Rm9ybWF0dGVyTmFtZVwiO1xuXHRcdGV4cGVjdChcblx0XHRcdF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwoXG5cdFx0XHRcdGZvcm1hdFJlc3VsdChbYmluZGluZ0V4cHJlc3Npb24oXCJlZGl0TW9kZVwiLCBcInVpXCIpXSwgZmFrZUZvcm1hdHRlciksXG5cdFx0XHRcdGZvcm1hdFJlc3VsdChbYmluZGluZ0V4cHJlc3Npb24oXCJlZGl0TW9kZVwiLCBcInVpXCIpXSwgZmFrZUZvcm1hdHRlcilcblx0XHRcdClcblx0XHQpLnRvRXF1YWwodHJ1ZSk7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0X2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChcblx0XHRcdFx0Zm9ybWF0UmVzdWx0KFtiaW5kaW5nRXhwcmVzc2lvbihcImVkaXRNb2RlXCIsIFwiWFhcIildLCBmYWtlRm9ybWF0dGVyKSxcblx0XHRcdFx0Zm9ybWF0UmVzdWx0KFtiaW5kaW5nRXhwcmVzc2lvbihcImVkaXRNb2RlXCIsIFwidWlcIildLCBmYWtlRm9ybWF0dGVyKVxuXHRcdFx0KVxuXHRcdCkudG9FcXVhbChmYWxzZSk7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0X2NoZWNrRXhwcmVzc2lvbnNBcmVFcXVhbChcblx0XHRcdFx0Zm9ybWF0UmVzdWx0KFtjb25zdGFudChcIiV7dWk+L2VkaXRNb2RlfVwiKV0sIGZha2VGb3JtYXR0ZXIpLFxuXHRcdFx0XHRmb3JtYXRSZXN1bHQoW2JpbmRpbmdFeHByZXNzaW9uKFwiZWRpdE1vZGVcIiwgXCJ1aVwiKV0sIGZha2VGb3JtYXR0ZXIpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKGZhbHNlKTtcblxuXHRcdGV4cGVjdChcblx0XHRcdF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwoXG5cdFx0XHRcdGFkZFR5cGVJbmZvcm1hdGlvbihbYmluZGluZ0V4cHJlc3Npb24oXCJlZGl0TW9kZVwiLCBcInVpXCIpXSwgXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Vbml0XCIpLFxuXHRcdFx0XHRhZGRUeXBlSW5mb3JtYXRpb24oW2JpbmRpbmdFeHByZXNzaW9uKFwiZWRpdE1vZGVcIiwgXCJ1aVwiKV0sIFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVW5pdFwiKVxuXHRcdFx0KVxuXHRcdCkudG9FcXVhbCh0cnVlKTtcblx0XHRleHBlY3QoXG5cdFx0XHRfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKFxuXHRcdFx0XHRhZGRUeXBlSW5mb3JtYXRpb24oW2JpbmRpbmdFeHByZXNzaW9uKFwiZWRpdE1vZGVcIiwgXCJYWFwiKV0sIFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVW5pdFwiKSxcblx0XHRcdFx0YWRkVHlwZUluZm9ybWF0aW9uKFtiaW5kaW5nRXhwcmVzc2lvbihcImVkaXRNb2RlXCIsIFwidWlcIildLCBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlVuaXRcIilcblx0XHRcdClcblx0XHQpLnRvRXF1YWwoZmFsc2UpO1xuXHRcdGV4cGVjdChcblx0XHRcdF9jaGVja0V4cHJlc3Npb25zQXJlRXF1YWwoXG5cdFx0XHRcdGFkZFR5cGVJbmZvcm1hdGlvbihbY29uc3RhbnQoXCIle3VpPi9lZGl0TW9kZX1cIildLCBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlVuaXRcIiksXG5cdFx0XHRcdGFkZFR5cGVJbmZvcm1hdGlvbihbYmluZGluZ0V4cHJlc3Npb24oXCJlZGl0TW9kZVwiLCBcInVpXCIpXSwgXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Vbml0XCIpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKGZhbHNlKTtcblx0XHRleHBlY3QoXG5cdFx0XHRfY2hlY2tFeHByZXNzaW9uc0FyZUVxdWFsKFxuXHRcdFx0XHRhZGRUeXBlSW5mb3JtYXRpb24oW2JpbmRpbmdFeHByZXNzaW9uKFwiZWRpdE1vZGVcIiwgXCJ1aVwiKV0sIFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVW5pdFwiKSxcblx0XHRcdFx0YWRkVHlwZUluZm9ybWF0aW9uKFtiaW5kaW5nRXhwcmVzc2lvbihcImVkaXRNb2RlXCIsIFwidWlcIildLCBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkN1cnJlbmN5XCIpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKGZhbHNlKTtcblx0fSk7XG5cblx0aXQoXCJBbmQgb3BlcmF0b3JcIiwgKCkgPT4ge1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhhbmQoY29uc3RhbnQodHJ1ZSksIGNvbnN0YW50KGZhbHNlKSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGFuZChjb25zdGFudCh0cnVlKSwgY29uc3RhbnQodHJ1ZSkpKSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGFuZChjb25zdGFudCh0cnVlKSwgYmluZGluZ0V4cHJlc3Npb24oXCJTYWxlc09yZGVyXCIpKSkpLnRvRXF1YWwoXCJ7U2FsZXNPcmRlcn1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGFuZChjb25zdGFudChmYWxzZSksIGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGFuZChiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiwgXCJ1aVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJTYWxlc09yZGVyXCIpKSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICV7dWk+aXNFZGl0YWJsZX0gJiYgJXtTYWxlc09yZGVyfX1cIlxuXHRcdCk7XG5cblx0XHRjb25zdCBhID0gYW5kKGJpbmRpbmdFeHByZXNzaW9uKFwiYTFcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiYTJcIikpO1xuXHRcdGNvbnN0IGIgPSBhbmQoYmluZGluZ0V4cHJlc3Npb24oXCJiMVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJiMlwiKSk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGFuZChhLCBiKSkpLnRvRXF1YWwoXCJ7PSAle2ExfSAmJiAle2EyfSAmJiAle2IxfSAmJiAle2IyfX1cIik7XG5cblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoYW5kKGEsIGEpKSkudG9FcXVhbChcIns9ICV7YTF9ICYmICV7YTJ9fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoYW5kKGEsIGFuZChhLCBhKSkpKS50b0VxdWFsKFwiez0gJXthMX0gJiYgJXthMn19XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhhbmQoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIiksIG5vdChiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSkpKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhhbmQoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIiksIG5vdChiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSksIHVucmVzb2x2ZWFibGVFeHByZXNzaW9uKSkpLnRvRXF1YWwodW5kZWZpbmVkKTtcblx0fSk7XG5cblx0aXQoXCJPciBvcGVyYXRvclwiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG9yKGNvbnN0YW50KHRydWUpLCBjb25zdGFudChmYWxzZSkpKSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG9yKGNvbnN0YW50KGZhbHNlKSwgY29uc3RhbnQoZmFsc2UpKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcob3IoY29uc3RhbnQodHJ1ZSksIGNvbnN0YW50KHRydWUpKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhvcihjb25zdGFudChmYWxzZSksIGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSkpKS50b0VxdWFsKFwie1NhbGVzT3JkZXJ9XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhvcihjb25zdGFudCh0cnVlKSwgYmluZGluZ0V4cHJlc3Npb24oXCJTYWxlc09yZGVyXCIpKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhvcihiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiwgXCJ1aVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJTYWxlc09yZGVyXCIpKSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICV7dWk+aXNFZGl0YWJsZX0gfHwgJXtTYWxlc09yZGVyfX1cIlxuXHRcdCk7XG5cblx0XHRjb25zdCBhID0gb3IoYmluZGluZ0V4cHJlc3Npb24oXCJhMVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJhMlwiKSk7XG5cdFx0Y29uc3QgYiA9IG9yKGJpbmRpbmdFeHByZXNzaW9uKFwiYjFcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiYjJcIikpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhvcihhLCBiKSkpLnRvRXF1YWwoXCJ7PSAle2ExfSB8fCAle2EyfSB8fCAle2IxfSB8fCAle2IyfX1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG9yKGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpLCBub3QoYmluZGluZ0V4cHJlc3Npb24oXCJmb29cIikpKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhvcihiaW5kaW5nRXhwcmVzc2lvbihcImZvb1wiKSwgbm90KGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpKSwgdW5yZXNvbHZlYWJsZUV4cHJlc3Npb24pKSkudG9FcXVhbCh1bmRlZmluZWQpO1xuXHR9KTtcblxuXHRpdChcIk5vdCBvcGVyYXRvclwiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG5vdChjb25zdGFudCh0cnVlKSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG5vdChiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpKSkudG9FcXVhbChcIns9ICEle1NhbGVzT3JkZXJ9fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90KHVucmVzb2x2ZWFibGVFeHByZXNzaW9uKSkpLnRvRXF1YWwodW5kZWZpbmVkKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90KGFuZChiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiwgXCJ1aVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJTYWxlc09yZGVyXCIpKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAhKCV7dWk+aXNFZGl0YWJsZX0gJiYgJXtTYWxlc09yZGVyfSl9XCJcblx0XHQpO1xuXHR9KTtcblxuXHRpdChcIk5vdCBvcGVyYXRvciBjYW4gc2ltcGxpZnkgc29tZSBleHByZXNzaW9uc1wiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG5vdChhbmQoZXF1YWwoMSwgYmluZGluZ0V4cHJlc3Npb24oXCJTYWxlc09yZGVyXCIpKSwgZXF1YWwoMiwgYmluZGluZ0V4cHJlc3Npb24oXCJTYWxlc09yZGVyXCIpKSkpKSkudG9FcXVhbChcblx0XHRcdFwiez0gMSAhPT0gJXtTYWxlc09yZGVyfSB8fCAyICE9PSAle1NhbGVzT3JkZXJ9fVwiXG5cdFx0KTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90KG9yKGVxdWFsKDEsIGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSksIGVxdWFsKDIsIGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSkpKSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9IDEgIT09ICV7U2FsZXNPcmRlcn0gJiYgMiAhPT0gJXtTYWxlc09yZGVyfX1cIlxuXHRcdCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG5vdChlcXVhbCgxLCBiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpKSkpLnRvRXF1YWwoXCJ7PSAxICE9PSAle1NhbGVzT3JkZXJ9fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90KG5vdEVxdWFsKDEsIGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSkpKSkudG9FcXVhbChcIns9IDEgPT09ICV7U2FsZXNPcmRlcn19XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhub3QoZ3JlYXRlclRoYW4oMSwgYmluZGluZ0V4cHJlc3Npb24oXCJTYWxlc09yZGVyXCIpKSkpKS50b0VxdWFsKFwiez0gMSA8PSAle1NhbGVzT3JkZXJ9fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90KGdyZWF0ZXJPckVxdWFsKDEsIGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSkpKSkudG9FcXVhbChcIns9IDEgPCAle1NhbGVzT3JkZXJ9fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90KGxlc3NPckVxdWFsKDEsIGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSkpKSkudG9FcXVhbChcIns9IDEgPiAle1NhbGVzT3JkZXJ9fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90KGxlc3NUaGFuKDEsIGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSkpKSkudG9FcXVhbChcIns9IDEgPj0gJXtTYWxlc09yZGVyfX1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGxlc3NUaGFuKFwiYVwiLCBcImJcIikpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobm90KG5vdChiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpKSkpLnRvRXF1YWwoXCJ7U2FsZXNPcmRlcn1cIik7XG5cblx0XHQvLyBcIk9wdGltaXplIG5lc3RlZCBpZi1lbHNlIChjb25kaXRpb24pXCJcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhpZkVsc2Uobm90RXF1YWwoaWZFbHNlKGVxdWFsKGJpbmRpbmdFeHByZXNzaW9uKFwiY29uZGl0aW9uXCIpLCA1KSwgMCwgMyksIDEpLCBjb25zdGFudChcImFcIiksIGNvbnN0YW50KFwiYlwiKSkpXG5cdFx0KS50b0VxdWFsKFwiYVwiKTtcblx0fSk7XG5cblx0aXQoXCJpc1RydXRoeSBvcGVyYXRvclwiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGlzVHJ1dGh5KGJpbmRpbmdFeHByZXNzaW9uKFwiZm9vXCIpKSkpLnRvRXF1YWwoXCJ7PSAhISV7Zm9vfX1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGlzVHJ1dGh5KGNvbnN0YW50KFwiYVwiKSkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0fSk7XG5cblx0aXQoXCJDb21wbGV4IEVxdWFsaXR5XCIsICgpID0+IHtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCJlZGl0TW9kZVwiLCBcInVpXCIpLCBjb25zdGFudChcIkVkaXRhYmxlXCIpKSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICV7dWk+ZWRpdE1vZGV9ID09PSAnRWRpdGFibGUnfVwiXG5cdFx0KTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoY29uc3RhbnQoMzQpLCBiaW5kaW5nRXhwcmVzc2lvbihcIlNhbGVzT3JkZXJcIikpKSkudG9FcXVhbChcIns9IDM0ID09PSAle1NhbGVzT3JkZXJ9fVwiKTtcblx0fSk7XG5cblx0aXQoXCJGb3JtYXR0ZXIgY2FsbFwiLCAoKSA9PiB7XG5cdFx0Y29uc3QgZmFrZUVudGl0eVR5cGUgPSB7XG5cdFx0XHRrZXlzOiBbeyBuYW1lOiBcIklEXCIgfSwgeyBuYW1lOiBcIlRvdG9cIiB9XVxuXHRcdH0gYXMgRW50aXR5VHlwZTtcblx0XHRjb25zdCBmYWtlRm9ybWF0dGVyID0gZnVuY3Rpb24oaXNFZGl0YWJsZTogc3RyaW5nKSB7XG5cdFx0XHQvLyBEbyBOb3RoaW5nXG5cdFx0XHRyZXR1cm4gXCJOb3RoaW5nXCI7XG5cdFx0fTtcblx0XHRmYWtlRm9ybWF0dGVyLl9fZnVuY3Rpb25OYW1lID0gXCJNeUZvcm1hdHRlck5hbWVcIjtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZm9ybWF0UmVzdWx0KFtiaW5kaW5nRXhwcmVzc2lvbihcImVkaXRNb2RlXCIsIFwidWlcIildLCBmYWtlRm9ybWF0dGVyKSkpLnRvRXF1YWwoXG5cdFx0XHRcIntwYXRoOid1aT5lZGl0TW9kZScsIHRhcmdldFR5cGUgOiAnYW55JywgZm9ybWF0dGVyOiAnTXlGb3JtYXR0ZXJOYW1lJ31cIlxuXHRcdCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGZvcm1hdFJlc3VsdChbXCJZZWxsb3dcIl0sIGZha2VGb3JtYXR0ZXIpKSkudG9FcXVhbChcInt2YWx1ZTogJ1llbGxvdycsIGZvcm1hdHRlcjogJ015Rm9ybWF0dGVyTmFtZSd9XCIpO1xuXHRcdC8vPz9cblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZm9ybWF0UmVzdWx0KFtcIlllbGxvd1wiXSwgZmFrZUZvcm1hdHRlciwgZmFrZUVudGl0eVR5cGUpKSkudG9FcXVhbChcblx0XHRcdFwie3BhcnRzOlt7dmFsdWU6ICdZZWxsb3cnfSx7cGF0aDonSUQnLCB0YXJnZXRUeXBlIDogJ2FueSd9LHtwYXRoOidUb3RvJywgdGFyZ2V0VHlwZSA6ICdhbnknfV0sIGZvcm1hdHRlcjogJ015Rm9ybWF0dGVyTmFtZSd9XCJcblx0XHQpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhmb3JtYXRSZXN1bHQoW2JpbmRpbmdFeHByZXNzaW9uKFwiSGVsbG9cIildLCBmYWtlRm9ybWF0dGVyLCBmYWtlRW50aXR5VHlwZSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7cGF0aDonSGVsbG8nLCB0YXJnZXRUeXBlIDogJ2FueScsIGZvcm1hdHRlcjogJ015Rm9ybWF0dGVyTmFtZSd9XCJcblx0XHQpO1xuXG5cdFx0Y29uc3QgZmFrZUZvcm1hdHRlcjIgPSBmdW5jdGlvbihpc0VkaXRhYmxlOiBzdHJpbmcsIGJvb2w6IGJvb2xlYW4sIG51bWJlcjogbnVtYmVyKSB7XG5cdFx0XHQvLyBEbyBOb3RoaW5nXG5cdFx0XHRyZXR1cm4gXCJOb3RoaW5nXCI7XG5cdFx0fTtcblx0XHRmYWtlRm9ybWF0dGVyMi5fX2Z1bmN0aW9uTmFtZSA9IFwiTXlGb3JtYXR0ZXJOYW1lXCI7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGZvcm1hdFJlc3VsdChbXCJZZWxsb3dcIiwgZmFsc2UsIDQyXSwgZmFrZUZvcm1hdHRlcjIpKSkudG9FcXVhbChcblx0XHRcdFwie3BhcnRzOlt7dmFsdWU6ICdZZWxsb3cnfSx7dmFsdWU6ICdmYWxzZSd9LHt2YWx1ZTogNDJ9XSwgZm9ybWF0dGVyOiAnTXlGb3JtYXR0ZXJOYW1lJ31cIlxuXHRcdCk7XG5cblx0XHRjb25zdCBmYWtlRm9ybWF0dGVyMyA9IGZ1bmN0aW9uKGJvb2w6IGJvb2xlYW4sIG51bWJlcjogbnVtYmVyKSB7XG5cdFx0XHQvLyBEbyBOb3RoaW5nXG5cdFx0XHRyZXR1cm4gXCJOb3RoaW5nXCI7XG5cdFx0fTtcblx0XHRmYWtlRm9ybWF0dGVyMy5fX2Z1bmN0aW9uTmFtZSA9IFwiTXlGb3JtYXR0ZXJOYW1lM1wiO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhmb3JtYXRSZXN1bHQoW2JpbmRpbmdFeHByZXNzaW9uKFwic29tZXRoaW5nQm9vbGVhblwiKSwgNDJdLCBmYWtlRm9ybWF0dGVyMywgZmFrZUVudGl0eVR5cGUpKSkudG9FcXVhbChcblx0XHRcdFwie3BhcnRzOlt7cGF0aDonc29tZXRoaW5nQm9vbGVhbicsIHRhcmdldFR5cGUgOiAnYW55J30se3ZhbHVlOiA0Mn1dLCBmb3JtYXR0ZXI6ICdNeUZvcm1hdHRlck5hbWUzJ31cIlxuXHRcdCk7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoZm9ybWF0UmVzdWx0KFtiaW5kaW5nRXhwcmVzc2lvbihcInNvbWV0aGluZ0Jvb2xlYW5cIiksIHVucmVzb2x2ZWFibGVFeHByZXNzaW9uXSwgZmFrZUZvcm1hdHRlcjMsIGZha2VFbnRpdHlUeXBlKSlcblx0XHQpLnRvRXF1YWwodW5kZWZpbmVkKTtcblx0fSk7XG5cblx0aXQoXCJDb21wbGV4IHR5cGUgY2FsbFwiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGFkZFR5cGVJbmZvcm1hdGlvbihbYmluZGluZ0V4cHJlc3Npb24oXCJ2YWx1ZVwiKV0sIFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVW5pdFwiKSkpLnRvRXF1YWwoXG5cdFx0XHRcIntwYXRoOid2YWx1ZScsIHRhcmdldFR5cGUgOiAnYW55JywgdHlwZTogJ3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLlVuaXQnfVwiXG5cdFx0KTtcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhhZGRUeXBlSW5mb3JtYXRpb24oW2JpbmRpbmdFeHByZXNzaW9uKFwidmFsdWVcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwidW5pdFwiKV0sIFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVW5pdFwiKSlcblx0XHQpLnRvRXF1YWwoXG5cdFx0XHRcInttb2RlOidUd29XYXknLCBwYXJ0czpbe3BhdGg6J3ZhbHVlJywgdGFyZ2V0VHlwZSA6ICdhbnknfSx7cGF0aDondW5pdCcsIHRhcmdldFR5cGUgOiAnYW55J30se21vZGU6J09uZVRpbWUnLHBhdGg6Jy8jI0BAcmVxdWVzdFVuaXRzT2ZNZWFzdXJlJyx0YXJnZXRUeXBlOidhbnknfV0sdHlwZTonc2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVW5pdCd9XCJcblx0XHQpO1xuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRhZGRUeXBlSW5mb3JtYXRpb24oW2JpbmRpbmdFeHByZXNzaW9uKFwidmFsdWVcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiY3VycmVuY3lcIildLCBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkN1cnJlbmN5XCIpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKFxuXHRcdFx0XCJ7bW9kZTonVHdvV2F5JywgcGFydHM6W3twYXRoOid2YWx1ZScsIHRhcmdldFR5cGUgOiAnYW55J30se3BhdGg6J2N1cnJlbmN5JywgdGFyZ2V0VHlwZSA6ICdhbnknfSx7bW9kZTonT25lVGltZScscGF0aDonLyMjQEByZXF1ZXN0Q3VycmVuY3lDb2RlcycsdGFyZ2V0VHlwZTonYW55J31dLHR5cGU6J3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLkN1cnJlbmN5J31cIlxuXHRcdCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGFkZFR5cGVJbmZvcm1hdGlvbihbYmluZGluZ0V4cHJlc3Npb24oXCJ2YWx1ZVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJjdXJyZW5jeVwiKV0sIFwiZGVmYXVsdFR5cGVcIikpKS50b0VxdWFsKFxuXHRcdFx0XCJ7bW9kZTonVHdvV2F5JywgcGFydHM6W3twYXRoOid2YWx1ZScsIHRhcmdldFR5cGUgOiAnYW55J30se3BhdGg6J2N1cnJlbmN5JywgdGFyZ2V0VHlwZSA6ICdhbnknfV0sIHR5cGU6ICdkZWZhdWx0VHlwZSd9XCJcblx0XHQpO1xuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRhZGRUeXBlSW5mb3JtYXRpb24oW2JpbmRpbmdFeHByZXNzaW9uKFwidmFsdWVcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiY3VycmVuY3lcIiksIHVucmVzb2x2ZWFibGVFeHByZXNzaW9uXSwgXCJkZWZhdWx0VHlwZVwiKVxuXHRcdFx0KVxuXHRcdCkudG9FcXVhbCh1bmRlZmluZWQpO1xuXHR9KTtcblxuXHRpdChcIklmLUVsc2Ugb3BlcmF0b3JcIiwgKCkgPT4ge1xuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRpZkVsc2UoZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCIvZWRpdE1vZGVcIiwgXCJ1aVwiKSwgY29uc3RhbnQoXCJFZGl0YWJsZVwiKSksIGNvbnN0YW50KFwiU2luZ2xlU2VsZWN0XCIpLCBjb25zdGFudChcIk5vbmVcIikpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKFwiez0gJXt1aT4vZWRpdE1vZGV9ID09PSAnRWRpdGFibGUnID8gJ1NpbmdsZVNlbGVjdCcgOiAnTm9uZSd9XCIpO1xuXHRcdC8vIEJpbmRpbmcgc2ltcGxpZmljYXRpb25cblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhpZkVsc2UoZXF1YWwoY29uc3RhbnQoXCJFZGl0YWJsZVwiKSwgY29uc3RhbnQoXCJFZGl0YWJsZVwiKSksIGNvbnN0YW50KFwiU2luZ2xlU2VsZWN0XCIpLCBjb25zdGFudChcIk5vbmVcIikpKVxuXHRcdCkudG9FcXVhbChcIlNpbmdsZVNlbGVjdFwiKTtcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhpZkVsc2UoZXF1YWwoY29uc3RhbnQoXCJFZGl0YWJsZVwiKSwgdW5yZXNvbHZlYWJsZUV4cHJlc3Npb24pLCBjb25zdGFudChcIlNpbmdsZVNlbGVjdFwiKSwgY29uc3RhbnQoXCJOb25lXCIpKSlcblx0XHQpLnRvRXF1YWwodW5kZWZpbmVkKTtcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhpZkVsc2UoZXF1YWwoY29uc3RhbnQoXCJFZGl0YWJsZVwiKSwgY29uc3RhbnQoXCJFZGl0YWJsZVwiKSksIHVucmVzb2x2ZWFibGVFeHByZXNzaW9uLCBjb25zdGFudChcIk5vbmVcIikpKVxuXHRcdCkudG9FcXVhbCh1bmRlZmluZWQpO1xuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKGlmRWxzZShlcXVhbChjb25zdGFudChcIkVkaXRhYmxlXCIpLCBjb25zdGFudChcIkVkaXRhYmxlXCIpKSwgY29uc3RhbnQoXCJTaW5nbGVTZWxlY3RcIiksIHVucmVzb2x2ZWFibGVFeHByZXNzaW9uKSlcblx0XHQpLnRvRXF1YWwodW5kZWZpbmVkKTtcblx0fSk7XG5cblx0aXQoXCJJZi1FbHNlIG9wZXJhdG9yIGNhbiBzaW1wbGlmeSBzb21lIGNhbGxzXCIsICgpID0+IHtcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhpZkVsc2UoZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCIvZWRpdE1vZGVcIiwgXCJ1aVwiKSwgY29uc3RhbnQoXCJFZGl0YWJsZVwiKSksIGNvbnN0YW50KHRydWUpLCBjb25zdGFudChmYWxzZSkpKVxuXHRcdCkudG9FcXVhbChcIns9ICV7dWk+L2VkaXRNb2RlfSA9PT0gJ0VkaXRhYmxlJ31cIik7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoaWZFbHNlKGVxdWFsKGJpbmRpbmdFeHByZXNzaW9uKFwiL2VkaXRNb2RlXCIsIFwidWlcIiksIGNvbnN0YW50KFwiRWRpdGFibGVcIikpLCBjb25zdGFudChmYWxzZSksIGNvbnN0YW50KHRydWUpKSlcblx0XHQpLnRvRXF1YWwoXCJ7PSAle3VpPi9lZGl0TW9kZX0gIT09ICdFZGl0YWJsZSd9XCIpO1xuXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiksIGNvbnN0YW50KHRydWUpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkJvb2xWYWx1ZVwiKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAle2lzRWRpdGFibGV9ID8gdHJ1ZSA6ICV7Qm9vbFZhbHVlfX1cIlxuXHRcdCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiksIGNvbnN0YW50KGZhbHNlKSwgYmluZGluZ0V4cHJlc3Npb24oXCJCb29sVmFsdWVcIikpKSkudG9FcXVhbChcblx0XHRcdFwiez0gISV7aXNFZGl0YWJsZX0gJiYgJXtCb29sVmFsdWV9fVwiXG5cdFx0KTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoaWZFbHNlKG5vdChiaW5kaW5nRXhwcmVzc2lvbihcImNvbmRpdGlvblwiKSksIGNvbnN0YW50KFwiYVwiKSwgY29uc3RhbnQoXCJiXCIpKSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICV7Y29uZGl0aW9ufSA/ICdiJyA6ICdhJ31cIlxuXHRcdCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQm9vbFZhbHVlXCIpLCBjb25zdGFudCh0cnVlKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAle2lzRWRpdGFibGV9ID8gJXtCb29sVmFsdWV9IDogdHJ1ZX1cIlxuXHRcdCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImlzRWRpdGFibGVcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQm9vbFZhbHVlXCIpLCBjb25zdGFudChmYWxzZSkpKSkudG9FcXVhbChcblx0XHRcdFwiez0gJXtpc0VkaXRhYmxlfSAmJiAle0Jvb2xWYWx1ZX19XCJcblx0XHQpO1xuXHRcdC8vIFwiT3B0aW1pemUgbmVzdGVkIGlmLWVsc2UgKGNvbmRpdGlvbilcIlxuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhpZkVsc2UoaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiY29uZGl0aW9uXCIpLCB0cnVlLCBmYWxzZSksIGNvbnN0YW50KFwiYVwiKSwgY29uc3RhbnQoXCJiXCIpKSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICV7Y29uZGl0aW9ufSA/ICdhJyA6ICdiJ31cIlxuXHRcdCk7XG5cdFx0Ly9cIk9wdGltaXplIG5lc3RlZCBpZi1lbHNlIChjb25kaXRpb24pXCJcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoaWZFbHNlKGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImNvbmRpdGlvblwiKSwgZmFsc2UsIHRydWUpLCBjb25zdGFudChcImFcIiksIGNvbnN0YW50KFwiYlwiKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAle2NvbmRpdGlvbn0gPyAnYicgOiAnYSd9XCJcblx0XHQpO1xuXHRcdC8vXCJPcHRpbWl6ZSBuZXN0ZWQgaWYtZWxzZSAoY29uZGl0aW9uKVwiXG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoXG5cdFx0XHRcdGlmRWxzZShpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJjb25kaXRpb25cIiksIGZhbHNlLCBiaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPihcImFcIikpLCBjb25zdGFudChcImJcIiksIGNvbnN0YW50KFwiY1wiKSlcblx0XHRcdClcblx0XHQpLnRvRXF1YWwoXCJ7PSAoISV7Y29uZGl0aW9ufSAmJiAle2F9KSA/ICdiJyA6ICdjJ31cIik7XG5cdFx0Ly9cIk9wdGltaXplIG5lc3RlZCBpZi1lbHNlIChvblRydWUgYnJhbmNoKVwiXG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoXG5cdFx0XHRcdGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImNvbmRpdGlvblwiKSwgaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiY29uZGl0aW9uXCIpLCBjb25zdGFudChcImFcIiksIGNvbnN0YW50KFwiYlwiKSksIGNvbnN0YW50KFwiY1wiKSlcblx0XHRcdClcblx0XHQpLnRvRXF1YWwoXCJ7PSAle2NvbmRpdGlvbn0gPyAnYScgOiAnYyd9XCIpO1xuXHRcdC8vXCJPcHRpbWl6ZSBuZXN0ZWQgaWYtZWxzZSAob25GYWxzZSBicmFuY2gpXCJcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhcblx0XHRcdFx0aWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiY29uZGl0aW9uXCIpLCBjb25zdGFudChcImFcIiksIGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImNvbmRpdGlvblwiKSwgY29uc3RhbnQoXCJiXCIpLCBjb25zdGFudChcImNcIikpKVxuXHRcdFx0KVxuXHRcdCkudG9FcXVhbChcIns9ICV7Y29uZGl0aW9ufSA/ICdhJyA6ICdjJ31cIik7XG5cdFx0Ly9cIk9wdGltaXplIG5lc3RlZCBpZi1lbHNlIChvbkZhbHNlIGJyYW5jaClcIlxuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0bm90KGJpbmRpbmdFeHByZXNzaW9uKFwiY29uZGl0aW9uXCIpKSxcblx0XHRcdFx0XHRjb25zdGFudChcImFcIiksXG5cdFx0XHRcdFx0aWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiY29uZGl0aW9uXCIpLCBjb25zdGFudChcImJcIiksIGNvbnN0YW50KFwiY1wiKSlcblx0XHRcdFx0KVxuXHRcdFx0KVxuXHRcdCkudG9FcXVhbChcIns9ICV7Y29uZGl0aW9ufSA/ICdiJyA6ICdhJ31cIik7XG5cblx0XHQvLyBldmVyeXRoaW5nIG5lc3RlZCAtIGNvbmRpdGlvbiwgb25UcnVlLCBvbkZhbHNlXG5cdFx0Y29uc3QgY29uZGl0aW9uID0gaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiY29uZGl0aW9uXCIpLCBmYWxzZSwgYmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj4oXCJhXCIpKTtcblx0XHRjb25zdCBvblRydWUgPSBpZkVsc2UoXG5cdFx0XHRiaW5kaW5nRXhwcmVzc2lvbihcImNvbmRpdGlvblwiKSxcblx0XHRcdGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcImNvbmRpdGlvblwiKSwgY29uc3RhbnQoXCJhXCIpLCBjb25zdGFudChcImJcIikpLFxuXHRcdFx0Y29uc3RhbnQoXCJjXCIpXG5cdFx0KTtcblx0XHRjb25zdCBvbkZhbHNlID0gaWZFbHNlKFxuXHRcdFx0YmluZGluZ0V4cHJlc3Npb24oXCJjb25kaXRpb25cIiksXG5cdFx0XHRjb25zdGFudChcImFcIiksXG5cdFx0XHRpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJjb25kaXRpb25cIiksIGNvbnN0YW50KFwiYlwiKSwgY29uc3RhbnQoXCJjXCIpKVxuXHRcdCk7XG5cblx0XHQvL1wiT3B0aW1pemUgbmVzdGVkIGlmLWVsc2UgKGNvbmRpdGlvbiBhbmQgYm90aCBicmFuY2hlcylcIlxuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhpZkVsc2UoY29uZGl0aW9uLCBvblRydWUsIG9uRmFsc2UpKSkudG9FcXVhbChcIns9ICV7Y29uZGl0aW9ufSA/ICdhJyA6ICdjJ31cIik7XG5cdH0pO1xuXG5cdGl0KFwiZGVhbHMgd2l0aCBwcm9wZXIgZXNjYXBpbmcgb2YgdGhlIGFwb3N0cm9waGVcIiwgKCkgPT4ge1xuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKGlmRWxzZShlcXVhbChiaW5kaW5nRXhwcmVzc2lvbihcIi9lZGl0TW9kZVwiLCBcInVpXCIpLCBjb25zdGFudChcIkVkJ2l0YWJsZVwiKSksIGNvbnN0YW50KHRydWUpLCBjb25zdGFudChmYWxzZSkpKVxuXHRcdCkudG9FcXVhbChcIns9ICV7dWk+L2VkaXRNb2RlfSA9PT0gJ0VkXFxcXCdpdGFibGUnfVwiKTtcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhpZkVsc2UoZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCIvZWRpdE1vZGVcIiwgXCJ1aVwiKSwgY29uc3RhbnQoJ0VkaVwidGFibGUnKSksIGNvbnN0YW50KHRydWUpLCBjb25zdGFudChmYWxzZSkpKVxuXHRcdCkudG9FcXVhbChcIns9ICV7dWk+L2VkaXRNb2RlfSA9PT0gJ0VkaVxcXCJ0YWJsZSd9XCIpO1xuXHRcdC8vIEluIGNhc2UgdGhlIHN0cmluZyBpcyB1c2VkIGRpcmVjdGx5IC0+IG5vIHByb2JsZW1cblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoY29uc3RhbnQoXCI7YTthJztkbGFzZHdxbz48KihcIikpKS50b0VxdWFsKFwiO2E7YSc7ZGxhc2R3cW8+PCooXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhjb25zdGFudCgnQW5kIHdoYXQgaWYgaSB1c2UgXCJkb3VibGUgcXVvdGVzXCInKSkpLnRvRXF1YWwoJ0FuZCB3aGF0IGlmIGkgdXNlIFwiZG91YmxlIHF1b3Rlc1wiJyk7XG5cdH0pO1xuXG5cdGl0KFwiUmVmZXJlbmNlXCIsICgpID0+IHtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcocmVmKFwiZm9vXCIpKSkudG9FcXVhbChcImZvb1wiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcocmVmKG51bGwpKSkudG9FcXVhbChcIm51bGxcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHJlZihcIm51bGxcIikpKS50b0VxdWFsKFwibnVsbFwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcocmVmKFwiXCIpKSkudG9FcXVhbChcIm51bGxcIik7XG5cdH0pO1xuXG5cdGl0KFwiT2JqZWN0XCIsICgpID0+IHtcblx0XHQvLyBjb21wYXJpc29uczogQXJyYXlcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobGVzc1RoYW4oW10sIFtdKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobGVzc09yRXF1YWwoW10sIFtdKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhlcXVhbChbXSwgW10pKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhncmVhdGVyT3JFcXVhbChbXSwgW10pKSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGdyZWF0ZXJUaGFuKFtdLCBbXSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGxlc3NUaGFuKFswXSwgWzBdKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobGVzc09yRXF1YWwoWzBdLCBbMF0pKSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGVxdWFsKFswXSwgWzBdKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZ3JlYXRlck9yRXF1YWwoWzBdLCBbMF0pKSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGdyZWF0ZXJUaGFuKFswXSwgWzBdKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobGVzc1RoYW4oWzBdLCBbMCwgMV0pKSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGxlc3NPckVxdWFsKFswXSwgWzAsIDFdKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhlcXVhbChbMF0sIFswLCAxXSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGdyZWF0ZXJPckVxdWFsKFswXSwgWzAsIDFdKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZ3JlYXRlclRoYW4oWzBdLCBbMCwgMV0pKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhsZXNzVGhhbihbMCwgMV0sIFswXSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGxlc3NPckVxdWFsKFswLCAxXSwgWzBdKSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoWzAsIDFdLCBbMF0pKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhncmVhdGVyT3JFcXVhbChbMCwgMV0sIFswXSkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZ3JlYXRlclRoYW4oWzAsIDFdLCBbMF0pKSkudG9FcXVhbChcInRydWVcIik7XG5cblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobGVzc1RoYW4oe30sIHt9KSkpLnRvRXF1YWwoXCJmYWxzZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobGVzc09yRXF1YWwoe30sIHt9KSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhlcXVhbCh7fSwge30pKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhncmVhdGVyT3JFcXVhbCh7fSwge30pKSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGdyZWF0ZXJUaGFuKHt9LCB7fSkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cblx0XHQvLyBpbXBsaWNpdCBjb25zdGFudCgpXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHt9KSkudG9FcXVhbChcInt9XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh7IGZvbzogXCJiYXJcIiB9KSkudG9FcXVhbChcIntmb286ICdiYXInfVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IDEgfSkpLnRvRXF1YWwoXCJ7Zm9vOiAxfVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IHRydWUgfSkpLnRvRXF1YWwoXCJ7Zm9vOiB0cnVlfVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IG51bGwgfSkpLnRvRXF1YWwoXCJ7Zm9vOiBudWxsfVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IHVuZGVmaW5lZCB9KSkudG9FcXVhbChcInt9XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh7IGZvbzogeyBiYXI6IFwiYmF6XCIgfSB9KSkudG9FcXVhbChcIntmb286IHtiYXI6ICdiYXonfX1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgMTogXCJiYXJcIiB9KSkudG9FcXVhbChcInsxOiAnYmFyJ31cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKFtdKSkudG9FcXVhbChcIltdXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhbdW5kZWZpbmVkLCBudWxsXSkpLnRvRXF1YWwoXCJbdW5kZWZpbmVkLCBudWxsXVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoWzEsIDIsIDNdKSkudG9FcXVhbChcIlsxLCAyLCAzXVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IFsxLCAyLCAzXSB9KSkudG9FcXVhbChcIntmb286IFsxLCAyLCAzXX1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHt9LCB0cnVlKSkudG9FcXVhbChcInt9XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh7IGZvbzogXCJiYXJcIiB9LCB0cnVlKSkudG9FcXVhbChcIntmb286ICdiYXInfVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IDEgfSwgdHJ1ZSkpLnRvRXF1YWwoXCJ7Zm9vOiAxfVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IHRydWUgfSwgdHJ1ZSkpLnRvRXF1YWwoXCJ7Zm9vOiB0cnVlfVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IG51bGwgfSwgdHJ1ZSkpLnRvRXF1YWwoXCJ7Zm9vOiBudWxsfVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IHVuZGVmaW5lZCB9LCB0cnVlKSkudG9FcXVhbChcInt9XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh7IGZvbzogeyBiYXI6IFwiYmF6XCIgfSB9LCB0cnVlKSkudG9FcXVhbChcIntmb286IHtiYXI6ICdiYXonfX1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgMTogXCJiYXJcIiB9LCB0cnVlKSkudG9FcXVhbChcInsxOiAnYmFyJ31cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKFtdLCB0cnVlKSkudG9FcXVhbChcIltdXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhbdW5kZWZpbmVkLCBudWxsXSwgdHJ1ZSkpLnRvRXF1YWwoXCJbdW5kZWZpbmVkLCBudWxsXVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoWzEsIDIsIDNdLCB0cnVlKSkudG9FcXVhbChcIlsxLCAyLCAzXVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IFsxLCAyLCAzXSB9LCB0cnVlKSkudG9FcXVhbChcIntmb286IFsxLCAyLCAzXX1cIik7XG5cblx0XHQvLyBleHBsaWNpdCBjb25zdGFudCgpXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgZm9vOiBjb25zdGFudChcImJhclwiKSB9KSkudG9FcXVhbChcIntmb286ICdiYXInfVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IGNvbnN0YW50KDEpIH0pKS50b0VxdWFsKFwie2ZvbzogMX1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgZm9vOiBjb25zdGFudCh0cnVlKSB9KSkudG9FcXVhbChcIntmb286IHRydWV9XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh7IGZvbzogY29uc3RhbnQobnVsbCkgfSkpLnRvRXF1YWwoXCJ7Zm9vOiBudWxsfVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyBmb286IGNvbnN0YW50KHVuZGVmaW5lZCkgfSkpLnRvRXF1YWwoXCJ7fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoeyAxOiBjb25zdGFudChcImJhclwiKSB9KSkudG9FcXVhbChcInsxOiAnYmFyJ31cIik7XG5cblx0XHQvLyBvdGhlciB0eXBlc1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh7IGZvbzogYmluZGluZ0V4cHJlc3Npb24oXCJiYXJcIikgfSkpLnRvRXF1YWwoXCJ7Zm9vOiAle2Jhcn19XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh7IGZvbzogY29uc3RhbnQoXCJiYXJcIikgfSkpLnRvRXF1YWwoXCJ7Zm9vOiAnYmFyJ31cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHsgZm9vOiB7IGJhcjogY29uc3RhbnQoXCJiYXpcIikgfSB9KSkudG9FcXVhbChcIntmb286IHtiYXI6ICdiYXonfX1cIik7XG5cblx0XHRjb25zdCBvYmogPSB7XG5cdFx0XHRjb250ZXh0czogZm4oXCJnZXRCaW5kaW5nQ29udGV4dFwiLCBbXSwgYmluZGluZ0V4cHJlc3Npb24oXCIvI2ZlOjpPYmplY3RQYWdlL1wiLCBcIiR2aWV3XCIpKSxcblx0XHRcdGludm9jYXRpb25Hcm91cGluZzogY29uc3RhbnQoXCJDaGFuZ2VTZXRcIiksXG5cdFx0XHRsYWJlbDogY29uc3RhbnQoXCJUZXN0XCIpLFxuXHRcdFx0bW9kZWw6IGZuKFwiZ2V0TW9kZWxcIiwgW10sIGJpbmRpbmdFeHByZXNzaW9uKFwiL1wiLCBcIiRzb3VyY2VcIikpLFxuXHRcdFx0aXNOYXZpZ2FibGU6IHRydWVcblx0XHR9O1xuXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG9iaikpLnRvRXF1YWwoXG5cdFx0XHRcIntjb250ZXh0czogJXskdmlldz4vI2ZlOjpPYmplY3RQYWdlL30uZ2V0QmluZGluZ0NvbnRleHQoKSwgaW52b2NhdGlvbkdyb3VwaW5nOiAnQ2hhbmdlU2V0JywgbGFiZWw6ICdUZXN0JywgbW9kZWw6ICV7JHNvdXJjZT4vfS5nZXRNb2RlbCgpLCBpc05hdmlnYWJsZTogdHJ1ZX1cIlxuXHRcdCk7XG5cblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZXF1YWwoeyBmb286IFwiYmFyXCIgfSwgbnVsbCkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGVxdWFsKHsgZm9vOiBcImJhclwiIH0sIHsgZm9vOiBcImJhclwiIH0pKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHR9KTtcblxuXHRpdChcIkZ1bmN0aW9uXCIsICgpID0+IHtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZm4oXCJmb29cIiwgW10pKSkudG9FcXVhbChcImZvbygpXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhmbihcImZvb1wiLCBbMV0pKSkudG9FcXVhbChcImZvbygxKVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZm4oXCJmb29cIiwgW1wiYmFyXCJdKSkpLnRvRXF1YWwoXCJmb28oJ2JhcicpXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhmbihcImZvb1wiLCBbY29uc3RhbnQoXCJiYXJcIildKSkpLnRvRXF1YWwoXCJmb28oJ2JhcicpXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhmbihcImZvb1wiLCBbcmVmKFwiYmFyXCIpXSkpKS50b0VxdWFsKFwiZm9vKGJhcilcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGZuKFwiZm9vXCIsIFt7IGJhcjogXCJiYXpcIiB9XSkpKS50b0VxdWFsKFwiZm9vKHtiYXI6ICdiYXonfSlcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGZuKFwiZm9vXCIsIFtudWxsXSkpKS50b0VxdWFsKFwiZm9vKG51bGwpXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhmbihcImZvb1wiLCBbdW5kZWZpbmVkXSkpKS50b0VxdWFsKFwiZm9vKHVuZGVmaW5lZClcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGZuKFwiZm9vXCIsIFsxLCAyLCAzLCA0XSkpKS50b0VxdWFsKFwiZm9vKDEsIDIsIDMsIDQpXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhmbihcImZvb1wiLCBbMSwgMiwgdW5kZWZpbmVkLCA0LCB1bmRlZmluZWRdKSkpLnRvRXF1YWwoXCJmb28oMSwgMiwgdW5kZWZpbmVkLCA0LCB1bmRlZmluZWQpXCIpO1xuXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGZuKFwiZm9vXCIsIFtyZWYoXCIkY29udHJvbGxlclwiKSwgZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCJiYXJcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiYmF6XCIpKV0pKSkudG9FcXVhbChcblx0XHRcdFwiZm9vKCRjb250cm9sbGVyLCAle2Jhcn0gPT09ICV7YmF6fSlcIlxuXHRcdCk7XG5cblx0XHRjb25zdCBvYmogPSBmbihcIk15RnVuY3Rpb25cIiwgW1xuXHRcdFx0e1xuXHRcdFx0XHRjb250ZXh0czogZm4oXCJnZXRCaW5kaW5nQ29udGV4dFwiLCBbXSwgYmluZGluZ0V4cHJlc3Npb24oXCIvI2ZlOjpPYmplY3RQYWdlL1wiLCBcIiR2aWV3XCIpKSxcblx0XHRcdFx0aW52b2NhdGlvbkdyb3VwaW5nOiBcIkNoYW5nZVNldFwiLFxuXHRcdFx0XHRsYWJlbDogXCJUZXN0XCIsXG5cdFx0XHRcdG1vZGVsOiBmbihcImdldE1vZGVsXCIsIFtdLCBiaW5kaW5nRXhwcmVzc2lvbihcIi9cIiwgXCIkc291cmNlXCIpKSxcblx0XHRcdFx0aXNOYXZpZ2FibGU6IHRydWVcblx0XHRcdH0sXG5cdFx0XHQxXG5cdFx0XSk7XG5cblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcob2JqKSkudG9FcXVhbChcblx0XHRcdFwiTXlGdW5jdGlvbih7Y29udGV4dHM6ICV7JHZpZXc+LyNmZTo6T2JqZWN0UGFnZS99LmdldEJpbmRpbmdDb250ZXh0KCksIGludm9jYXRpb25Hcm91cGluZzogJ0NoYW5nZVNldCcsIGxhYmVsOiAnVGVzdCcsIG1vZGVsOiAleyRzb3VyY2U+L30uZ2V0TW9kZWwoKSwgaXNOYXZpZ2FibGU6IHRydWV9LCAxKVwiXG5cdFx0KTtcblxuXHRcdC8vIGZsYXQgcGFyYW1ldGVyIGxpc3Rcblx0XHRmdW5jdGlvbiBteUhhbmRsZXIoYTogbnVtYmVyLCBiOiBzdHJpbmcsIGM6IGJvb2xlYW4pOiBzdHJpbmcge1xuXHRcdFx0cmV0dXJuIFwiSGkhXCI7XG5cdFx0fVxuXG5cdFx0bXlIYW5kbGVyLl9fZnVuY3Rpb25OYW1lID0gXCJjYWxsTXlIYW5kbGVyXCI7XG5cblx0XHQvL1wiVHlwZWQgZnVuY3Rpb24sIGZsYXQgc2lnbmF0dXJlXCJcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoZm4obXlIYW5kbGVyLCBbMSwgYmluZGluZ0V4cHJlc3Npb24oXCJuYW1lXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcImlzVmFsaWRcIildKSkpLnRvRXF1YWwoXG5cdFx0XHRcImNhbGxNeUhhbmRsZXIoMSwgJXtuYW1lfSwgJXtpc1ZhbGlkfSlcIlxuXHRcdCk7XG5cblx0XHQvLyBPYmplY3QgYXMgcGFyYW1ldGVyXG5cdFx0ZnVuY3Rpb24gbXlIYW5kbGVyT2JqKGM6IHsgY29udGV4dDogQ29udGV4dCB9KTogc3RyaW5nIHtcblx0XHRcdHJldHVybiBcIkhpIVwiO1xuXHRcdH1cblxuXHRcdG15SGFuZGxlck9iai5fX2Z1bmN0aW9uTmFtZSA9IFwiY2FsbE15SGFuZGxlclwiO1xuXG5cdFx0Ly8gXCJUeXBlZCBmdW5jdGlvbiwgb2JqZWN0LXR5cGVkIHNpZ25hdHVyZVwiXG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoZm4obXlIYW5kbGVyT2JqLCBbeyBjb250ZXh0OiBmbihcImdldEJpbmRpbmdDb250ZXh0XCIsIFtdLCBiaW5kaW5nRXhwcmVzc2lvbihcIi8jZmU6Ok9iamVjdFBhZ2UvXCIsIFwiJHZpZXdcIikpIH1dKSlcblx0XHQpLnRvRXF1YWwoXCJjYWxsTXlIYW5kbGVyKHtjb250ZXh0OiAleyR2aWV3Pi8jZmU6Ok9iamVjdFBhZ2UvfS5nZXRCaW5kaW5nQ29udGV4dCgpfSlcIik7XG5cdH0pO1xuXG5cdGl0KFwiQXBwbHkgRnVuY3Rpb25cIiwgKCkgPT4ge1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhmbihcImJhclwiLCBbXSwgcmVmKFwiZm9vXCIpKSkpLnRvRXF1YWwoXCJmb28uYmFyKClcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGZuKFwiYmFyXCIsIFtdLCBiaW5kaW5nRXhwcmVzc2lvbihcIi8jZmU6Ok9iamVjdFBhZ2UvXCIsIFwiJHZpZXdcIikpKSkudG9FcXVhbChcIiV7JHZpZXc+LyNmZTo6T2JqZWN0UGFnZS99LmJhcigpXCIpO1xuXHR9KTtcblxuXHRpdChcIkZ1bmN0aW9uIGFzIHBhcnQgb2YgZXhwcmVzc2lvblwiLCAoKSA9PiB7XG5cdFx0Y29uc3QgZXhwcmVzc2lvbiA9IGVxdWFsKGZuKFwiZm9vXCIsIFtyZWYoXCIkY29udHJvbGxlclwiKSwgY29uc3RhbnQoNSldKSwgY29uc3RhbnQoNikpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhleHByZXNzaW9uKSkudG9FcXVhbChcIns9IGZvbygkY29udHJvbGxlciwgNSkgPT09IDZ9XCIpO1xuXHR9KTtcblxuXHRpdChcIkNvbmNhdCBPcGVyYXRvclwiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGNvbmNhdChcImFcIiwgXCJiXCIpKSkudG9FcXVhbChcImFiXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhjb25jYXQoXCJhXCIsIGJpbmRpbmdFeHByZXNzaW9uKFwiQmluZGluZ1BhdGhcIikpKSkudG9FcXVhbChcIns9ICdhJyArICR7QmluZGluZ1BhdGh9fVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoY29uY2F0KFwiYVwiLCB1bnJlc29sdmVhYmxlRXhwcmVzc2lvbiwgYmluZGluZ0V4cHJlc3Npb24oXCJCaW5kaW5nUGF0aFwiKSkpKS50b0VxdWFsKHVuZGVmaW5lZCk7XG5cdH0pO1xuXG5cdGl0KFwiTGVuZ3RoXCIsICgpID0+IHtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcobGVuZ3RoKGJpbmRpbmdFeHByZXNzaW9uKFwibXlQcm9wZXJ0eVwiLCBcImludGVybmFsXCIpKSkpLnRvRXF1YWwoXCJ7PSAle2ludGVybmFsPm15UHJvcGVydHl9Lmxlbmd0aH1cIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGxlbmd0aChiaW5kaW5nRXhwcmVzc2lvbih1bmRlZmluZWQpKSkpLnRvRXF1YWwodW5kZWZpbmVkKTtcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhlcXVhbChsZW5ndGgoYmluZGluZ0V4cHJlc3Npb24oXCJteVByb3BlcnR5XCIsIFwiaW50ZXJuYWxcIikpLCBsZW5ndGgoYmluZGluZ0V4cHJlc3Npb24oXCJteVByb3BlcnR5XCIsIFwiaW50ZXJuYWxcIikpKSlcblx0XHQpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhsZXNzT3JFcXVhbChsZW5ndGgoYmluZGluZ0V4cHJlc3Npb24oXCJteVByb3BlcnR5XCIsIFwiaW50ZXJuYWxcIikpLCAyKSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICgle2ludGVybmFsPm15UHJvcGVydHl9Lmxlbmd0aCkgPD0gMn1cIlxuXHRcdCk7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoXG5cdFx0XHRcdGFuZChcblx0XHRcdFx0XHRsZXNzT3JFcXVhbChsZW5ndGgoYmluZGluZ0V4cHJlc3Npb24oXCJteVByb3BlcnR5XCIsIFwiaW50ZXJuYWxcIikpLCAyKSxcblx0XHRcdFx0XHRsZXNzT3JFcXVhbChsZW5ndGgoYmluZGluZ0V4cHJlc3Npb24oXCJteVByb3BlcnR5XCIsIFwiaW50ZXJuYWxcIikpLCAyKVxuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKFwiez0gKCV7aW50ZXJuYWw+bXlQcm9wZXJ0eX0ubGVuZ3RoKSA8PSAyfVwiKTtcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhcblx0XHRcdFx0YW5kKFxuXHRcdFx0XHRcdGxlc3NPckVxdWFsKGxlbmd0aChiaW5kaW5nRXhwcmVzc2lvbihcIm15UHJvcGVydHlcIiwgXCJpbnRlcm5hbFwiKSksIDIpLFxuXHRcdFx0XHRcdG5vdEVxdWFsKGxlbmd0aChiaW5kaW5nRXhwcmVzc2lvbihcIm15UHJvcGVydHlcIiwgXCJpbnRlcm5hbFwiKSksIDUpXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpLnRvRXF1YWwoXCJ7PSAoJXtpbnRlcm5hbD5teVByb3BlcnR5fS5sZW5ndGgpIDw9IDIgJiYgKCV7aW50ZXJuYWw+bXlQcm9wZXJ0eX0ubGVuZ3RoKSAhPT0gNX1cIik7XG5cdH0pO1xuXG5cdGl0KFwiSXMgRW1wdHkgU2hvcnRjdXRcIiwgKCkgPT4ge1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhpc0VtcHR5KGJpbmRpbmdFeHByZXNzaW9uKFwiQmluZGluZ1BhdGhcIikpKSkudG9FcXVhbChcblx0XHRcdFwiez0gJXtCaW5kaW5nUGF0aH0gPT09ICcnIHx8ICV7QmluZGluZ1BhdGh9ID09PSB1bmRlZmluZWQgfHwgJXtCaW5kaW5nUGF0aH0gPT09IG51bGx9XCJcblx0XHQpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhpc0VtcHR5KGNvbmNhdChcImFcIiwgYmluZGluZ0V4cHJlc3Npb24oXCJCaW5kaW5nUGF0aFwiKSkpKSkudG9FcXVhbChcblx0XHRcdFwiez0gJXtCaW5kaW5nUGF0aH0gPT09ICcnIHx8ICV7QmluZGluZ1BhdGh9ID09PSB1bmRlZmluZWQgfHwgJXtCaW5kaW5nUGF0aH0gPT09IG51bGx9XCJcblx0XHQpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhpc0VtcHR5KGNvbmNhdChiaW5kaW5nRXhwcmVzc2lvbihcIkJpbmRpbmdQYXRoMVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJCaW5kaW5nUGF0aDJcIikpKSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICV7QmluZGluZ1BhdGgxfSA9PT0gJycgfHwgJXtCaW5kaW5nUGF0aDF9ID09PSB1bmRlZmluZWQgfHwgJXtCaW5kaW5nUGF0aDF9ID09PSBudWxsIHx8ICV7QmluZGluZ1BhdGgyfSA9PT0gJycgfHwgJXtCaW5kaW5nUGF0aDJ9ID09PSB1bmRlZmluZWQgfHwgJXtCaW5kaW5nUGF0aDJ9ID09PSBudWxsfVwiXG5cdFx0KTtcblx0fSk7XG5cblx0aXQoXCJTdXBwb3J0IHJlY3Vyc2l2ZSB0cmFuc2Zvcm1hdGlvblwiLCAoKSA9PiB7XG5cdFx0Y29uc3QgdHJhbnNmb3JtQmluZGluZyA9IChiaW5kaW5nOiBCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb248YW55PikgPT4ge1xuXHRcdFx0YmluZGluZy5tb2RlbE5hbWUgPSBcIm5ld01vZGVsXCI7XG5cdFx0XHRyZXR1cm4gYmluZGluZztcblx0XHR9O1xuXHRcdGNvbnN0IHRyYW5zZm9ybUJpbmRpbmdUb1NhbWVWYWx1ZSA9IChiaW5kaW5nOiBCaW5kaW5nRXhwcmVzc2lvbkV4cHJlc3Npb248YW55PikgPT4ge1xuXHRcdFx0aWYgKGJpbmRpbmcucGF0aCA9PT0gXCJpc0VkaXRhYmxlXCIpIHtcblx0XHRcdFx0cmV0dXJuIGJpbmRpbmc7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY29uc3RhbnQoXCJBXCIpIGFzIEV4cHJlc3Npb248YW55Pjtcblx0XHR9O1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh0cmFuc2Zvcm1SZWN1cnNpdmVseShpc0VtcHR5KGJpbmRpbmdFeHByZXNzaW9uKFwiQmluZGluZ1BhdGhcIikpLCBcIkJpbmRpbmdcIiwgdHJhbnNmb3JtQmluZGluZykpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAle0JpbmRpbmdQYXRofSA9PT0gJycgfHwgJXtCaW5kaW5nUGF0aH0gPT09IHVuZGVmaW5lZCB8fCAle0JpbmRpbmdQYXRofSA9PT0gbnVsbH1cIlxuXHRcdCk7XG5cblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoY29uY2F0KGJpbmRpbmdFeHByZXNzaW9uKFwiQmluZGluZ1BhdGhcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQnVidVwiKSkpKS50b0VxdWFsKFwiez0gJHtCaW5kaW5nUGF0aH0gKyAke0J1YnV9fVwiKTtcblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhcblx0XHRcdFx0dHJhbnNmb3JtUmVjdXJzaXZlbHkoY29uY2F0KGJpbmRpbmdFeHByZXNzaW9uKFwiQmluZGluZ1BhdGhcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQnVidVwiKSksIFwiQmluZGluZ1wiLCB0cmFuc2Zvcm1CaW5kaW5nKVxuXHRcdFx0KVxuXHRcdCkudG9FcXVhbChcIns9ICR7bmV3TW9kZWw+QmluZGluZ1BhdGh9ICsgJHtuZXdNb2RlbD5CdWJ1fX1cIik7XG5cblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhcblx0XHRcdFx0dHJhbnNmb3JtUmVjdXJzaXZlbHkoXG5cdFx0XHRcdFx0Zm4oXCJmb29cIiwgW3JlZihcIiRjb250cm9sbGVyXCIpLCBlcXVhbChiaW5kaW5nRXhwcmVzc2lvbihcImJhclwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJiYXpcIikpXSksXG5cdFx0XHRcdFx0XCJCaW5kaW5nXCIsXG5cdFx0XHRcdFx0dHJhbnNmb3JtQmluZGluZ1xuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKFwiZm9vKCRjb250cm9sbGVyLCAle2Jhcn0gPT09ICV7YmF6fSlcIik7XG5cblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcodHJhbnNmb3JtUmVjdXJzaXZlbHkobm90KGJpbmRpbmdFeHByZXNzaW9uKFwiU2FsZXNPcmRlclwiKSksIFwiQmluZGluZ1wiLCB0cmFuc2Zvcm1CaW5kaW5nKSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICEle1NhbGVzT3JkZXJ9fVwiXG5cdFx0KTtcblxuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh0cmFuc2Zvcm1SZWN1cnNpdmVseShub3QoYmluZGluZ0V4cHJlc3Npb24oXCJTYWxlc09yZGVyXCIpKSwgXCJCaW5kaW5nXCIsIHRyYW5zZm9ybUJpbmRpbmcsIHRydWUpKSkudG9FcXVhbChcblx0XHRcdFwiez0gISV7bmV3TW9kZWw+U2FsZXNPcmRlcn19XCJcblx0XHQpO1xuXG5cdFx0Y29uc3QgZmFrZUZvcm1hdHRlciA9IGZ1bmN0aW9uKGlzRWRpdGFibGU6IHN0cmluZykge1xuXHRcdFx0Ly8gRG8gTm90aGluZ1xuXHRcdFx0cmV0dXJuIFwiTm90aGluZ1wiO1xuXHRcdH07XG5cdFx0ZmFrZUZvcm1hdHRlci5fX2Z1bmN0aW9uTmFtZSA9IFwiTXlGb3JtYXR0ZXJOYW1lXCI7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0Y29tcGlsZUJpbmRpbmcoXG5cdFx0XHRcdHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KGZvcm1hdFJlc3VsdChbYmluZGluZ0V4cHJlc3Npb24oXCJlZGl0TW9kZVwiLCBcInVpXCIpXSwgZmFrZUZvcm1hdHRlciksIFwiQmluZGluZ1wiLCB0cmFuc2Zvcm1CaW5kaW5nKVxuXHRcdFx0KVxuXHRcdCkudG9FcXVhbChcIntwYXRoOiduZXdNb2RlbD5lZGl0TW9kZScsIHRhcmdldFR5cGUgOiAnYW55JywgZm9ybWF0dGVyOiAnTXlGb3JtYXR0ZXJOYW1lJ31cIik7XG5cblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhcblx0XHRcdFx0dHJhbnNmb3JtUmVjdXJzaXZlbHkoXG5cdFx0XHRcdFx0YWRkVHlwZUluZm9ybWF0aW9uKFtiaW5kaW5nRXhwcmVzc2lvbihcInZhbHVlXCIsIFwidWlcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwidW5pdFwiLCBcInVpXCIpXSwgXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Vbml0XCIpLFxuXHRcdFx0XHRcdFwiQmluZGluZ1wiLFxuXHRcdFx0XHRcdHRyYW5zZm9ybUJpbmRpbmdcblx0XHRcdFx0KVxuXHRcdFx0KVxuXHRcdCkudG9FcXVhbChcblx0XHRcdFwie21vZGU6J1R3b1dheScsIHBhcnRzOlt7cGF0aDonbmV3TW9kZWw+dmFsdWUnLCB0YXJnZXRUeXBlIDogJ2FueSd9LHtwYXRoOiduZXdNb2RlbD51bml0JywgdGFyZ2V0VHlwZSA6ICdhbnknfSx7bW9kZTonT25lVGltZScscGF0aDonLyMjQEByZXF1ZXN0VW5pdHNPZk1lYXN1cmUnLHRhcmdldFR5cGU6J2FueSd9XSx0eXBlOidzYXAudWkubW9kZWwub2RhdGEudHlwZS5Vbml0J31cIlxuXHRcdCk7XG5cblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhcblx0XHRcdFx0dHJhbnNmb3JtUmVjdXJzaXZlbHkoXG5cdFx0XHRcdFx0ZXF1YWwoaWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiaXNFZGl0YWJsZVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJBXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkJcIikpLCBjb25zdGFudChcIkFcIikpLFxuXHRcdFx0XHRcdFwiQmluZGluZ1wiLFxuXHRcdFx0XHRcdHRyYW5zZm9ybUJpbmRpbmdcblx0XHRcdFx0KVxuXHRcdFx0KVxuXHRcdCkudG9FcXVhbChcIns9ICgle2lzRWRpdGFibGV9ID8gJXtBfSA6ICV7Qn0pID09PSAnQSd9XCIpO1xuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHR0cmFuc2Zvcm1SZWN1cnNpdmVseShcblx0XHRcdFx0XHRlcXVhbChpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJpc0VkaXRhYmxlXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkFcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQlwiKSksIGNvbnN0YW50KFwiQVwiKSksXG5cdFx0XHRcdFx0XCJCaW5kaW5nXCIsXG5cdFx0XHRcdFx0dHJhbnNmb3JtQmluZGluZyxcblx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpLnRvRXF1YWwoXCJ7PSAoJXtuZXdNb2RlbD5pc0VkaXRhYmxlfSA/ICV7bmV3TW9kZWw+QX0gOiAle25ld01vZGVsPkJ9KSA9PT0gJ0EnfVwiKTtcblxuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHR0cmFuc2Zvcm1SZWN1cnNpdmVseShcblx0XHRcdFx0XHRpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJpc0VkaXRhYmxlXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkFcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQlwiKSksXG5cdFx0XHRcdFx0XCJCaW5kaW5nXCIsXG5cdFx0XHRcdFx0dHJhbnNmb3JtQmluZGluZ1xuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKFwiez0gJXtpc0VkaXRhYmxlfSA/ICV7bmV3TW9kZWw+QX0gOiAle25ld01vZGVsPkJ9fVwiKTtcblxuXHRcdC8vIFRyYW5zZm9ybWF0aW9uIGFsc28gY2FuIHRyaWdnZXIgc2ltcGxpZmljYXRpb25cblx0XHRleHBlY3QoXG5cdFx0XHRjb21waWxlQmluZGluZyhcblx0XHRcdFx0dHJhbnNmb3JtUmVjdXJzaXZlbHkoXG5cdFx0XHRcdFx0aWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwiaXNFZGl0YWJsZVwiKSwgYmluZGluZ0V4cHJlc3Npb24oXCJBXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkJcIikpLFxuXHRcdFx0XHRcdFwiQmluZGluZ1wiLFxuXHRcdFx0XHRcdHRyYW5zZm9ybUJpbmRpbmdUb1NhbWVWYWx1ZVxuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KS50b0VxdWFsKFwiQVwiKTtcblxuXHRcdGV4cGVjdChcblx0XHRcdGNvbXBpbGVCaW5kaW5nKFxuXHRcdFx0XHR0cmFuc2Zvcm1SZWN1cnNpdmVseShcblx0XHRcdFx0XHRlcXVhbChpZkVsc2UoYmluZGluZ0V4cHJlc3Npb24oXCJpc0VkaXRhYmxlXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIkFcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwiQlwiKSksIGNvbnN0YW50KFwiQVwiKSksXG5cdFx0XHRcdFx0XCJCaW5kaW5nXCIsXG5cdFx0XHRcdFx0dHJhbnNmb3JtQmluZGluZ1RvU2FtZVZhbHVlLFxuXHRcdFx0XHRcdHRydWVcblx0XHRcdFx0KVxuXHRcdFx0KVxuXHRcdCkudG9FcXVhbChcInRydWVcIik7XG5cdH0pO1xuXG5cdGl0KFwiU3VwcG9ydHMgQmluZGluZ1N0cmluZyBPcGVyYXRvclwiLCAoKSA9PiB7XG5cdFx0Ly8gQm9vbGVhbiBjYXNlXG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHJlc29sdmVCaW5kaW5nU3RyaW5nKFwidHJ1ZVwiLCBcImJvb2xlYW5cIikpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcocmVzb2x2ZUJpbmRpbmdTdHJpbmcoXCJmYWxzZVwiLCBcImJvb2xlYW5cIikpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHJlc29sdmVCaW5kaW5nU3RyaW5nKHRydWUsIFwiYm9vbGVhblwiKSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhyZXNvbHZlQmluZGluZ1N0cmluZyhmYWxzZSwgXCJib29sZWFuXCIpKSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhyZXNvbHZlQmluZGluZ1N0cmluZyhcIllvbG9cIikpKS50b0VxdWFsKFwiWW9sb1wiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcocmVzb2x2ZUJpbmRpbmdTdHJpbmcoXCJ7c29tZXRoaW5nPmVsc2V9XCIsIFwiYm9vbGVhblwiKSkpLnRvRXF1YWwoXCJ7c29tZXRoaW5nPmVsc2V9XCIpO1xuXHR9KTtcbn0pO1xuIl19
|