@sap/open.fe 1.96.0 → 1.97.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 +57 -42
- package/packages/sap.fe.common/src/sap/fe/common/MessageButton.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 +2 -2
- package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +4 -4
- 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 +4 -4
- 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.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/AnnotationHelper-dbg.js +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +59 -274
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +52 -64
- 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 +2 -2
- 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 +18 -22
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +80 -4
- 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 +42 -23
- 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 +36 -21
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +9 -3
- 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 +20 -50
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +222 -102
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState-dbg.js +33 -6
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +109 -111
- package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d-dbg.js +8 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d.ts +0 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +2 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.ts +4 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +10 -1
- 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 +9 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField-dbg.js +2 -2
- 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 +67 -40
- 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 +6 -3
- 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 -3
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +57 -18
- 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 +51 -13
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +130 -19
- 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 +139 -18
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID-dbg.js +9 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID.ts +4 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +18 -7
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.ts +17 -12
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +2 -1
- 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 +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter-dbg.js +27 -4
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.ts +20 -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/KeepAliveHelper-dbg.js +211 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.ts +202 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes-dbg.js +32 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes.ts +36 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper-dbg.js +51 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +10 -9
- package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +232 -228
- 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.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/manifest.json +10 -10
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +15 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +11 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +11 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +11 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +19 -9
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +11 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/resources.json +200 -121
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +30 -19
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper-dbg.js +80 -7
- package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper.ts +42 -2
- 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.xmlmeta.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/buildingBlockOverview.md +4 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/ChartDefault.view.xml +1 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/viewState/manifest.json +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnAdaptation.fragment.xml +13 -10
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnButton.fragment.xml +7 -4
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/localService/service.cds +1 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/manifest.json +1 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.js +119 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +285 -4
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.js +121 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.ts +79 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.js +147 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.ts +96 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +51 -18
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +109 -17
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/MetaModelConverter.spec.ts.snap +66 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/EntitySetHelper.cds +33 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/EntitySetHelperMainEntitySortableFalse.cds +12 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/TableGetSelectionMode.cds +8 -8
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.js +68 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.ts +38 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelper.spec.js +483 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelper.spec.ts +376 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlRefreshStrategyTests.js +101 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlRefreshStrategyTests.ts +105 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlsForRefreshTests.js +103 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlsForRefreshTests.ts +106 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/RefreshStrategyForIntentTests.js +118 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/RefreshStrategyForIntentTests.ts +118 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/StoreStrategyTests.js +101 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/StoreStrategyTests.ts +102 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.js +118 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/RoutingServiceFactory.spec.js +70 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/EntitySetHelper.spec.js +89 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/EntitySetHelper.spec.ts +73 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/TemplatingExpressions.qunit.js +4 -2
- package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +6 -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/ChartDelegate-dbg.js +15 -5
- 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 +9 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/DelegateUtil-dbg.js +30 -11
- package/packages/sap.fe.macros/src/sap/fe/macros/DelegateUtil.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +3 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.ts +3 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldValueHelpDelegate-dbg.js +17 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldValueHelpDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +1 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +4 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FlexibleColumnLayoutActions.fragment.xml +6 -15
- package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.fragment.xml +14 -12
- package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.fragment.xml +2 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +12 -1
- 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 +15 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +10 -0
- 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/field/FieldHelper-dbg.js +81 -9
- 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 +13 -3
- 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 +5 -5
- 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 +4 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkContactContent.fragment.xml +1 -7
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +5 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkForContact.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/formcontainer/FormContainerRuntime-dbg.js +46 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/formcontainer/FormContainerRuntime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +17 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +26 -16
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/File.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +4 -13
- 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 +10 -10
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate-dbg.js +5 -3
- 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/ValueListHelper-dbg.js +72 -8
- 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 +12 -11
- 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 +93 -91
- 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/manifest.json +9 -9
- package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +3 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +3 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/MicroChartTitle.fragment.xml +21 -11
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/RadialMicroChart.fragment.xml +2 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +149 -110
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +3 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +70 -29
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +53 -36
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils-dbg.js +1 -1
- 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/TableDelegate-dbg.js +3 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +2 -2
- 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.xmlmeta.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.js +844 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.ts +833 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartHelper.spec.js +495 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartHelper.spec.ts +440 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartUtils.spec.js +469 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartUtils.spec.ts +448 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.js +94 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.ts +70 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.js +12 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.ts +11 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DelegateUtil.spec.js +61 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldHelper.spec.js +46 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldHelper.spec.ts +30 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.js +13 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.ts +11 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormElement.spec.js +66 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormElement.spec.ts +35 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.js +48 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.ts +56 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableFieldLabel.spec.js +68 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableFieldLabel.spec.ts +65 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartDelegate.spec.ts.snap +82 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap +23 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldHelper.spec.ts.snap +47 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroDataFieldTypes.spec.ts.snap +52 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FormElement.spec.ts.snap +25 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +0 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/SimpleFieldMacro.spec.ts.snap +69 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/TableFieldLabel.spec.ts.snap +451 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldHelper.xml +68 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Table.cds +13 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/TableFieldLabel.cds +152 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.js +116 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.ts +115 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/FormElement.spec.js +86 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/FormElement.spec.ts +54 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/__snapshots__/FormElement.spec.ts.snap +33 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.js +154 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.ts +128 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.js +7 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.ts +23 -12
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/__snapshots__/TableDelegate.spec.ts.snap +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/FieldHelperTemplate.qunit.js +1 -1
- 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/TableHelper.qunit.js +108 -1
- 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/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 +2 -2
- 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/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.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 +4 -4
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js.map +1 -1
- 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/src/sap/fe/placeholder/resources.json +3 -3
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderALP.fragment.html +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderOVP.fragment.html +1 -1
- 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/manifest.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/ListReport.view.xml +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +91 -60
- 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/ViewState-dbg.js +31 -5
- 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 +5 -5
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +2 -2
- 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 +18 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +114 -85
- 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/controls/StashableHBox-dbg.js +8 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox.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/ViewState-dbg.js +23 -3
- 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 +15 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating-dbg.js +6 -5
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.ts +6 -4
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPointTitle.fragment.xml +26 -16
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +5 -5
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl-dbg.controller.js +63 -9
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer-dbg.controller.js +54 -32
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController-dbg.js +24 -21
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/view/Fcl.view.xml +2 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/view/NavContainer.view.xml +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/Table.fragment.xml +2 -0
- 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 -9
- 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 +23 -30
- 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/resources.json +51 -60
- 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.xmlmeta.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/HeaderFacet.spec.js +95 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/HeaderFacet.spec.ts +66 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.js +134 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.ts +94 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/HeaderFacet.spec.ts.snap +61 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/ObjectPageHeaderForm.spec.ts.snap +53 -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/FCLView-dbg.js +0 -6
- package/packages/sap.fe.test/src/sap/fe/test/FCLView.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/Flexibility-dbg.js +14 -3
- package/packages/sap.fe.test/src/sap/fe/test/Flexibility.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper-dbg.js +85 -8
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.ts +54 -2
- package/packages/sap.fe.test/src/sap/fe/test/ListReport-dbg.js +0 -11
- 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 +0 -38
- package/packages/sap.fe.test/src/sap/fe/test/ObjectPage.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/TemplatePage-dbg.js +0 -12
- package/packages/sap.fe.test/src/sap/fe/test/TemplatePage.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper-dbg.js +22 -1
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.ts +14 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/BaseAPI-dbg.js +21 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI-dbg.js +9 -5
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogActions-dbg.js +18 -5
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogActions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogAssertions-dbg.js +25 -5
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogAssertions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/EditState-dbg.js +9 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/EditState.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarActions-dbg.js +38 -4
- package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarActions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/FormAssertions-dbg.js +33 -4
- package/packages/sap.fe.test/src/sap/fe/test/api/FormAssertions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/TableActions-dbg.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 +3 -3
- package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +23 -16
- package/packages/sap.fe.test/src/sap/fe/test/library-preload.js.map +3 -3
- 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 +36 -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.jsmeta.json +1 -1
- package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/relnotes/changes-1.96.json +0 -49
- package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.96.json +0 -189
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldRuntime.qunit.js +0 -73
- package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.96.json +0 -160
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/relnote/changes-1.96.json +0 -17
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/OverflowToolbarButtonHover-dbg.js +0 -26
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/OverflowToolbarButtonHover.js +0 -6
- package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.96.json +0 -153
|
@@ -376,6 +376,53 @@ sap.ui.define(["sap/fe/test/JestTemplatingHelper", "sap/fe/macros/internal/Field
|
|
|
376
376
|
}
|
|
377
377
|
});
|
|
378
378
|
});
|
|
379
|
+
describe("- check control templating for ListReport / field with nowrapper", function () {
|
|
380
|
+
it("when there is a nowrapper for a field ", {
|
|
381
|
+
"references": [{
|
|
382
|
+
"type": "JIRA",
|
|
383
|
+
"ID": "FIORITECHP1-22012"
|
|
384
|
+
}]
|
|
385
|
+
}, function () {
|
|
386
|
+
try {
|
|
387
|
+
var xmlField = "<internalMacro:Field xmlns:internalMacro=\"sap.fe.macros.internal\"\n\t\t\t\t\t\t\t\t\tentitySet=\"{entitySet>}\"\n\t\t\t\t\t\t\t\t\tdataField=\"propWithText\"\n\t\t\t\t\t\t\t\t\teditMode=\"Display\">\n\t\t\t\t\t\t\t\t\t<internalMacro:formatOptions fieldMode=\"nowrapper\"/>\n </internalMacro:Field>";
|
|
388
|
+
return Promise.resolve(getTemplatedXML(xmlField, sMetadataUrl, mBindingContexts, {})).then(function (templatedXML) {
|
|
389
|
+
expect(templatedXML).toMatchSnapshot();
|
|
390
|
+
});
|
|
391
|
+
} catch (e) {
|
|
392
|
+
return Promise.reject(e);
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
it("when there is not a nowrapper for a field ", {
|
|
396
|
+
"references": [{
|
|
397
|
+
"type": "JIRA",
|
|
398
|
+
"ID": "FIORITECHP1-22012"
|
|
399
|
+
}]
|
|
400
|
+
}, function () {
|
|
401
|
+
try {
|
|
402
|
+
var xmlField = "<internalMacro:Field xmlns:internalMacro=\"sap.fe.macros.internal\"\n\t\t\t\t\t\t\t\t\tentitySet=\"{entitySet>}\"\n\t\t\t\t\t\t\t\t\tdataField=\"propWithText\"\n\t\t\t\t\t\t\t\t\teditMode=\"Display\">\n\t\t\t\t\t\t\t\t\t<internalMacro:formatOptions fieldMode=\"\"/>\n </internalMacro:Field>";
|
|
403
|
+
return Promise.resolve(getTemplatedXML(xmlField, sMetadataUrl, mBindingContexts, {})).then(function (templatedXML) {
|
|
404
|
+
expect(templatedXML).toMatchSnapshot();
|
|
405
|
+
});
|
|
406
|
+
} catch (e) {
|
|
407
|
+
return Promise.reject(e);
|
|
408
|
+
}
|
|
409
|
+
});
|
|
410
|
+
it("when there is a nowrapper for a field and analytics is true ", {
|
|
411
|
+
"references": [{
|
|
412
|
+
"type": "JIRA",
|
|
413
|
+
"ID": "FIORITECHP1-22012"
|
|
414
|
+
}]
|
|
415
|
+
}, function () {
|
|
416
|
+
try {
|
|
417
|
+
var xmlField = "<internalMacro:Field xmlns:internalMacro=\"sap.fe.macros.internal\"\n\t\t\t\t\t\t\t\t\tentitySet=\"{entitySet>}\"\n\t\t\t\t\t\t\t\t\tdataField=\"propWithText\"\n\t\t\t\t\t\t\t\t\teditMode=\"Display\">\n\t\t\t\t\t\t\t\t\t<internalMacro:formatOptions fieldMode=\"nowrapper\" isAnalytics=\"true\"/>\n </internalMacro:Field>";
|
|
418
|
+
return Promise.resolve(getTemplatedXML(xmlField, sMetadataUrl, mBindingContexts, {})).then(function (templatedXML) {
|
|
419
|
+
expect(templatedXML).toMatchSnapshot();
|
|
420
|
+
});
|
|
421
|
+
} catch (e) {
|
|
422
|
+
return Promise.reject(e);
|
|
423
|
+
}
|
|
424
|
+
});
|
|
425
|
+
});
|
|
379
426
|
describe("- dataField annotation- ", function () {
|
|
380
427
|
it("criticality ", function () {
|
|
381
428
|
try {
|
|
@@ -462,4 +509,4 @@ sap.ui.define(["sap/fe/test/JestTemplatingHelper", "sap/fe/macros/internal/Field
|
|
|
462
509
|
});
|
|
463
510
|
});
|
|
464
511
|
}, false);
|
|
465
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNpbXBsZUZpZWxkTWFjcm8uc3BlYy50cyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsImJlZm9yZUFsbCIsInJlZ2lzdGVyTWFjcm8iLCJGaWVsZE1ldGFkYXRhIiwiYWZ0ZXJBbGwiLCJ1bnJlZ2lzdGVyTWFjcm8iLCJzTWV0YWRhdGFVcmwiLCJjb21waWxlQ0RTIiwicGF0aCIsImpvaW4iLCJfX2Rpcm5hbWUiLCJtQmluZGluZ0NvbnRleHRzIiwiaXQiLCJ4bWxGaWVsZCIsImdldFRlbXBsYXRlZFhNTCIsInRlbXBsYXRlZFhNTCIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBRUFBLEVBQUFBLFFBQVEsQ0FBQyxZQUFELEVBQWUsWUFBTTtBQUM1QkMsSUFBQUEsU0FBUyxDQUFDLFlBQU07QUFDZkMsTUFBQUEsYUFBYSxDQUFDQyxhQUFELENBQWI7QUFDQSxLQUZRLENBQVQ7QUFHQUMsSUFBQUEsUUFBUSxDQUFDLFlBQU07QUFDZEMsTUFBQUEsZUFBZSxDQUFDRixhQUFELENBQWY7QUFDQSxLQUZPLENBQVI7QUFHQSxRQUFNRyxZQUFZLEdBQUdDLFVBQVUsQ0FBQ0MsSUFBSSxDQUFDQyxJQUFMLENBQVVDLFNBQVYsRUFBcUIsNkJBQXJCLENBQUQsQ0FBL0I7QUFDQSxRQUFNQyxnQkFBZ0IsR0FBRztBQUN4QixtQkFBYTtBQURXLEtBQXpCO0FBSUFYLElBQUFBLFFBQVEsQ0FBQyx5RUFBRCxFQUE0RSxZQUFNO0FBQ3pGWSxNQUFBQSxFQUFFLENBQUMsaUNBQUQ7QUFBQSxZQUFnRDtBQUNqRCxjQUFNQyxRQUFRLG9OQUFkO0FBRGlELGlDQUt0QkMsZUFBZSxDQUFDRCxRQUFELEVBQVdQLFlBQVgsRUFBeUJLLGdCQUF6QixFQUEyQyxFQUEzQyxDQUxPLGlCQUszQ0ksWUFMMkM7QUFNakRDLFlBQUFBLE1BQU0sQ0FBQ0QsWUFBRCxDQUFOLENBQXFCRSxlQUFyQjtBQU5pRDtBQU9qRCxTQVBD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QUFBLFFBQUY7QUFTQSxLQWxFTyxDQUFSO0FBbUVBLEdBbmJPLENBQVIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBpbGVDRFMsIGdldFRlbXBsYXRlZFhNTCwgcmVnaXN0ZXJNYWNybywgdW5yZWdpc3Rlck1hY3JvIH0gZnJvbSBcInNhcC9mZS90ZXN0L0plc3RUZW1wbGF0aW5nSGVscGVyXCI7XG5pbXBvcnQgRmllbGRNZXRhZGF0YSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9GaWVsZC5tZXRhZGF0YVwiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5kZXNjcmliZShcIk1hY3JvRmllbGRcIiwgKCkgPT4ge1xuXHRiZWZvcmVBbGwoKCkgPT4ge1xuXHRcdHJlZ2lzdGVyTWFjcm8oRmllbGRNZXRhZGF0YSk7XG5cdH0pO1xuXHRhZnRlckFsbCgoKSA9PiB7XG5cdFx0dW5yZWdpc3Rlck1hY3JvKEZpZWxkTWV0YWRhdGEpO1xuXHR9KTtcblx0Y29uc3Qgc01ldGFkYXRhVXJsID0gY29tcGlsZUNEUyhwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4vZGF0YS9zaW1wbGVGaWVsZE1hY3JvLmNkc1wiKSk7XG5cdGNvbnN0IG1CaW5kaW5nQ29udGV4dHMgPSB7XG5cdFx0XCJlbnRpdHlTZXRcIjogXCIvSXRlbXNcIlxuXHR9O1xuXG5cdGRlc2NyaWJlKFwiLSB3aXRoIGFubm90YXRpb25zIG9uIHRoZSBkYXRhRmllbGQncyBWYWx1ZSBwcm9wZXJ0eSAoZXhjZXB0IHNlbWFudGljKSBcIiwgKCkgPT4ge1xuXHRcdGl0KFwiSW1hZ2UgaWRlbnRpZmllZCBieSBJc0ltYWdlVVJMIFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzJcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFwiSW1hZ2UgaWRlbnRpZmllZCBieSBpbWFnZVVSTFN0cmVhbSBcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8zXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0XHRpdChcIkltYWdlIGlkZW50aWZpZWQgYnkgaXNNZWRpYVR5cGUgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vNFwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cblx0XHRpdChcIlN0cmVhbU5vSW1hZ2UgcmVuZGVycyBJY29uLCBMaW5rIGFuZCBGaWxlVXBsb2FkZXIgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMThcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXG5cdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGFuIGVtYWlsIGFkZHJlc3MgcHJvcGVydHlcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xMVwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgcGhvbmUgbnVtYmVyIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMTJcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFxuXHRcdFx0XCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgUXVhbnRpdHkgd2l0aCBjdXJyZW5jeSBwcm9wZXJ0eSBcIixcblx0XHRcdHtcblx0XHRcdFx0XCJyZWZlcmVuY2VzXCI6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcInR5cGVcIjogXCJCQ1BcIixcblx0XHRcdFx0XHRcdFwiSURcIjogXCIwMDIwNzUxMjk1MDAwMDMxNDUyNDIwMjFcIlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XVxuXHRcdFx0fSxcblx0XHRcdGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xNlwiXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJlbnRDb250cm9sPVwiVGFibGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH1cblx0XHQpO1xuXHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIFF1YW50aXR5IHdpdGggY3VycmVuY3kgcHJvcGVydHkgZm9yIEFuYWx5dGljc1wiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzE2XCJcblx0XHRcdFx0XHRcdFx0XHRcdHBhcmVudENvbnRyb2w9XCJUYWJsZVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGludGVybmFsTWFjcm86Zm9ybWF0T3B0aW9ucyBpc0FuYWx5dGljcz1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgUXVhbnRpdHkgd2l0aCB1bml0IG9mIG1lYXN1cmUgKHRleHQpIHByb3BlcnR5IGZvciBhbmFseXRpY3NcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzE0XCJcblx0XHRcdFx0XHRcdFx0XHRwYXJlbnRDb250cm9sPVwiVGFibGVcIj5cblx0XHRcdFx0XHRcdFx0XHQ8aW50ZXJuYWxNYWNybzpmb3JtYXRPcHRpb25zIGlzQW5hbHl0aWNzPVwidHJ1ZVwiIC8+XG5cdFx0XHRcdFx0XHRcdDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFxuXHRcdFx0XCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgTXVsdGkgTGluZSB0ZXh0IHByb3BlcnR5IFwiLFxuXHRcdFx0e1xuXHRcdFx0XHRcInJlZmVyZW5jZXNcIjogW1xuXHRcdFx0XHRcdHsgXCJ0eXBlXCI6IFwiSklSQVwiLCBcIklEXCI6IFwiRklPUklURUNIUDEtMjEwNzhcIiB9LFxuXHRcdFx0XHRcdHsgXCJ0eXBlXCI6IFwiSklSQVwiLCBcIklEXCI6IFwiRklPUklURUNIUDEtMTk0MDlcIiB9XG5cdFx0XHRcdF1cblx0XHRcdH0sXG5cdFx0XHRhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI2Jpcy8wXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cGFyZW50Q29udHJvbD1cIlRhYmxlXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW50ZXJuYWxNYWNybzpmb3JtYXRPcHRpb25zIHRleHRMaW5lc0VkaXQ9XCIzMVwiIHRleHRNYXhMaW5lcz1cIjM5XCIgdGV4dEV4cGFuZEJlaGF2aW9yRGlzcGxheT1cIlBvcG92ZXJcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0TWF4Q2hhcmFjdGVyc0Rpc3BsYXk9XCI1MFwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH1cblx0XHQpO1xuXHRcdGl0KFwiRGF0YUZpZWxkIHdpdGggaGFyZGNvZGUgc3RyaW5nIFZhbHVlIFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI2Jpcy8yXCJcblx0XHRcdFx0XHRcdFx0XHRcdHBhcmVudENvbnRyb2w9XCJUYWJsZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0fSk7XG5cblx0ZGVzY3JpYmUoXCItIHdoZW4gaXQgdXNlcyBkaXJlY3RseSBhIHByb3BlcnR5IC0gXCIsICgpID0+IHtcblx0XHRpdChcIlByb3BlcnR5IHdpdGggdGV4dCBhcnJhbmdlbWVudCBcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cInByb3BXaXRoVGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0XHRpdChcIlByb3BlcnR5IHdpdGggdGV4dCBhcnJhbmdlbWVudCBhbmQgb3ZlcnJpZGUgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJwcm9wV2l0aFRleHRcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgZGlzcGxheU1vZGU9XCJWYWx1ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJCb29sZWFuIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJwcmVmZXJyZWRJdGVtXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0fSk7XG5cblx0ZGVzY3JpYmUoXCItIGNoZWNrIGNvbnRyb2wgdGVtcGxhdGluZyBmb3IgYmFzaWMgdHlwZXMgYW5kIGlucHV0IGFsaWdubWVudC0gXCIsICgpID0+IHtcblx0XHRkZXNjcmliZShcIi0gZm9yIHRhYmxlIC0gXCIsICgpID0+IHtcblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIHN0cmluZyBwcm9wZXJ0eSBcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzFcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBib29sZWFuIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS81XCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgVGltZXN0YW1wIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS82XCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgRGVjaW1hbCBwcm9wZXJ0eVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vN1wiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIFRpbWUgcHJvcGVydHlcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzhcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBEb3VibGUgcHJvcGVydHlcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzlcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBJbnRlZ2VyIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xMFwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIERhdGUgcHJvcGVydHlcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzEzXCJcblx0XHRcdFx0XHRcdFx0XHRcdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgUXVhbnRpdHkgd2l0aCB1bml0IHByb3BlcnR5IHdoZXJlIHVuaXQgaXMgYWxzbyBlZGl0YWJsZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMTRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0cGFyZW50Q29udHJvbD1cIlRhYmxlXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIFF1YW50aXR5IHdpdGggdW5pdCBwcm9wZXJ0eSB3aGVyZSB1bml0IGlzIHJlYWRvbmx5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xNVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJlbnRDb250cm9sPVwiVGFibGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgUXVhbnRpdHkgd2l0aCBjdXJyZW5jeSBwcm9wZXJ0eSBcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzE2XCJcblx0XHRcdFx0XHRcdFx0XHRcdHBhcmVudENvbnRyb2w9XCJUYWJsZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBRdWFudGl0eSB3aXRoIHN0YXRpYyB1bml0IGFubm90YXRpb25cIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzE3XCJcblx0XHRcdFx0XHRcdFx0XHRcdHBhcmVudENvbnRyb2w9XCJUYWJsZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdFx0ZGVzY3JpYmUoXCItIGZvciBmb3JtIC0gXCIsICgpID0+IHtcblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIHN0cmluZyBwcm9wZXJ0eSBcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzFcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgdGV4dEFsaWduTW9kZT1cIkZvcm1cIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aXQoXCJXaGVuIENvbW1vbi5pc0RpZ2l0c2VxdWVuY2UgaXMgYW5ub3RhdGVkIGZvciBhIHN0cmluZ1wiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJpc0RpZ2l0U2VxdWVuY2VcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgdGV4dEFsaWduTW9kZT1cIkZvcm1cIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblxuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBJbnRlZ2VyIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xMFwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGludGVybmFsTWFjcm86Zm9ybWF0T3B0aW9ucyB0ZXh0QWxpZ25Nb2RlPVwiRm9ybVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBEYXRlIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xM1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGludGVybmFsTWFjcm86Zm9ybWF0T3B0aW9ucyB0ZXh0QWxpZ25Nb2RlPVwiRm9ybVwiLz5cblx0XHRcdFx0XHRcdFx0XHQ8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fSk7XG5cblx0ZGVzY3JpYmUoXCItIGNoZWNrIGNvbnRyb2wgdGVtcGxhdGluZyBmb3IgZW1wdHkgcGxhY2VIb2xkZXIgdHJpZ2dlci0gXCIsICgpID0+IHtcblx0XHRpdChcIndoZW4gdGhlcmUgaXMgbm8gZm9ybWF0T3B0aW9ucy9zaG93RW1wdHlJbmRpY2F0b3IgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblxuXHRcdGl0KFwid2hlbiB0aGVyZSBpcyBmb3JtYXRPcHRpb25zL3Nob3dFbXB0eUluZGljYXRvciBmb3IgYSBEYXRhZmllbGQgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGludGVybmFsTWFjcm86Zm9ybWF0T3B0aW9ucyBzaG93RW1wdHlJbmRpY2F0b3I9XCJ0cnVlXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblxuXHRcdGl0KFwid2hlbiB0aGVyZSBpcyBmb3JtYXRPcHRpb25zL3Nob3dFbXB0eUluZGljYXRvciBmb3IgYSBwcm9wZXJ0eSBcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cInByb3BXaXRoVGV4dFwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGludGVybmFsTWFjcm86Zm9ybWF0T3B0aW9ucyBzaG93RW1wdHlJbmRpY2F0b3I9XCJ0cnVlXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0fSk7XG5cblx0ZGVzY3JpYmUoXCItIGRhdGFGaWVsZCBhbm5vdGF0aW9uLSBcIiwgKCkgPT4ge1xuXHRcdGl0KFwiY3JpdGljYWxpdHkgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0jRGF0YUZpZWxkcy8wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblxuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHR9KTtcblxuXHRkZXNjcmliZShcIlRlc3QgdGhlIFJlYWRPbmx5IHByb3BlcnR5IFwiLCAoKSA9PiB7XG5cdFx0aXQoXCJPbiB0aGUgRGF0YUZpZWxkIHByb3BlcnR5IC0gRHluYW1pYyB2YWx1ZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI0ZpZWxkQ29udHJvbFZhbHVlLzBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJPbiB0aGUgRGF0YUZpZWxkIHByb3BlcnR5IC0gU3RhdGljIHZhbHVlXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0jRmllbGRDb250cm9sVmFsdWUvMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblxuXHRcdGl0KFwiT24gYm90aCBwcm9wZXJ0aWVzIC0gRHluYW1pYyBWYWx1ZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI0ZpZWxkQ29udHJvbFZhbHVlLzJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJPbiBib3RoIHByb3BlcnRpZXMgLSBTdGF0aWMgdmFsdWUgUmVhZE9ubHlcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbSNGaWVsZENvbnRyb2xWYWx1ZS8zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblxuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFwiT24gYm90aCBwcm9wZXJ0aWVzIC0gU3RhdGljIHZhbHVlIEVkaXRhYmxlXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0jRmllbGRDb250cm9sVmFsdWUvNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblxuXHRcdGl0KFwiT24gdGhlIGFubm90YXRpb24gcHJvcGVydHkgLSBEeW5hbWljIFZhbHVlXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0jRmllbGRDb250cm9sVmFsdWUvNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0XHRpdChcIk9uIHRoZSBhbm5vdGF0aW9uIHByb3BlcnR5IC0gU3RhdGljIFZhbHVlXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0jRmllbGRDb250cm9sVmFsdWUvNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0fSk7XG59KTtcbiJdfQ==
|
|
512
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNpbXBsZUZpZWxkTWFjcm8uc3BlYy50cyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsImJlZm9yZUFsbCIsInJlZ2lzdGVyTWFjcm8iLCJGaWVsZE1ldGFkYXRhIiwiYWZ0ZXJBbGwiLCJ1bnJlZ2lzdGVyTWFjcm8iLCJzTWV0YWRhdGFVcmwiLCJjb21waWxlQ0RTIiwicGF0aCIsImpvaW4iLCJfX2Rpcm5hbWUiLCJtQmluZGluZ0NvbnRleHRzIiwiaXQiLCJ4bWxGaWVsZCIsImdldFRlbXBsYXRlZFhNTCIsInRlbXBsYXRlZFhNTCIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBRUFBLEVBQUFBLFFBQVEsQ0FBQyxZQUFELEVBQWUsWUFBTTtBQUM1QkMsSUFBQUEsU0FBUyxDQUFDLFlBQU07QUFDZkMsTUFBQUEsYUFBYSxDQUFDQyxhQUFELENBQWI7QUFDQSxLQUZRLENBQVQ7QUFHQUMsSUFBQUEsUUFBUSxDQUFDLFlBQU07QUFDZEMsTUFBQUEsZUFBZSxDQUFDRixhQUFELENBQWY7QUFDQSxLQUZPLENBQVI7QUFHQSxRQUFNRyxZQUFZLEdBQUdDLFVBQVUsQ0FBQ0MsSUFBSSxDQUFDQyxJQUFMLENBQVVDLFNBQVYsRUFBcUIsNkJBQXJCLENBQUQsQ0FBL0I7QUFDQSxRQUFNQyxnQkFBZ0IsR0FBRztBQUN4QixtQkFBYTtBQURXLEtBQXpCO0FBSUFYLElBQUFBLFFBQVEsQ0FBQyx5RUFBRCxFQUE0RSxZQUFNO0FBQ3pGWSxNQUFBQSxFQUFFLENBQUMsaUNBQUQ7QUFBQSxZQUFnRDtBQUNqRCxjQUFNQyxRQUFRLG9OQUFkO0FBRGlELGlDQUt0QkMsZUFBZSxDQUFDRCxRQUFELEVBQVdQLFlBQVgsRUFBeUJLLGdCQUF6QixFQUEyQyxFQUEzQyxDQUxPLGlCQUszQ0ksWUFMMkM7QUFNakRDLFlBQUFBLE1BQU0sQ0FBQ0QsWUFBRCxDQUFOLENBQXFCRSxlQUFyQjtBQU5pRDtBQU9qRCxTQVBD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Q0FBTixDQUFxQkUsZUFBckI7QUFQMkQ7QUFRM0QsU0FSQztBQUFBO0FBQUE7QUFBQSxRQUFGO0FBU0EsS0FsRU8sQ0FBUjtBQW1FQSxHQTNlTyxDQUFSIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21waWxlQ0RTLCBnZXRUZW1wbGF0ZWRYTUwsIHJlZ2lzdGVyTWFjcm8sIHVucmVnaXN0ZXJNYWNybyB9IGZyb20gXCJzYXAvZmUvdGVzdC9KZXN0VGVtcGxhdGluZ0hlbHBlclwiO1xuaW1wb3J0IEZpZWxkTWV0YWRhdGEgZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvRmllbGQubWV0YWRhdGFcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuZGVzY3JpYmUoXCJNYWNyb0ZpZWxkXCIsICgpID0+IHtcblx0YmVmb3JlQWxsKCgpID0+IHtcblx0XHRyZWdpc3Rlck1hY3JvKEZpZWxkTWV0YWRhdGEpO1xuXHR9KTtcblx0YWZ0ZXJBbGwoKCkgPT4ge1xuXHRcdHVucmVnaXN0ZXJNYWNybyhGaWVsZE1ldGFkYXRhKTtcblx0fSk7XG5cdGNvbnN0IHNNZXRhZGF0YVVybCA9IGNvbXBpbGVDRFMocGF0aC5qb2luKF9fZGlybmFtZSwgXCIuL2RhdGEvc2ltcGxlRmllbGRNYWNyby5jZHNcIikpO1xuXHRjb25zdCBtQmluZGluZ0NvbnRleHRzID0ge1xuXHRcdFwiZW50aXR5U2V0XCI6IFwiL0l0ZW1zXCJcblx0fTtcblxuXHRkZXNjcmliZShcIi0gd2l0aCBhbm5vdGF0aW9ucyBvbiB0aGUgZGF0YUZpZWxkJ3MgVmFsdWUgcHJvcGVydHkgKGV4Y2VwdCBzZW1hbnRpYykgXCIsICgpID0+IHtcblx0XHRpdChcIkltYWdlIGlkZW50aWZpZWQgYnkgSXNJbWFnZVVSTCBcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8yXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0XHRpdChcIkltYWdlIGlkZW50aWZpZWQgYnkgaW1hZ2VVUkxTdHJlYW0gXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vM1wiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJJbWFnZSBpZGVudGlmaWVkIGJ5IGlzTWVkaWFUeXBlIFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXG5cdFx0aXQoXCJTdHJlYW1Ob0ltYWdlIHJlbmRlcnMgSWNvbiwgTGluayBhbmQgRmlsZVVwbG9hZGVyIFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzE4XCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblxuXHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhbiBlbWFpbCBhZGRyZXNzIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMTFcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIHBob25lIG51bWJlciBwcm9wZXJ0eVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzEyXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0XHRpdChcblx0XHRcdFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIFF1YW50aXR5IHdpdGggY3VycmVuY3kgcHJvcGVydHkgXCIsXG5cdFx0XHR7XG5cdFx0XHRcdFwicmVmZXJlbmNlc1wiOiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XCJ0eXBlXCI6IFwiQkNQXCIsXG5cdFx0XHRcdFx0XHRcIklEXCI6IFwiMDAyMDc1MTI5NTAwMDAzMTQ1MjQyMDIxXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdF1cblx0XHRcdH0sXG5cdFx0XHRhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMTZcIlxuXHRcdFx0XHRcdFx0XHRcdFx0cGFyZW50Q29udHJvbD1cIlRhYmxlXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9XG5cdFx0KTtcblx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBRdWFudGl0eSB3aXRoIGN1cnJlbmN5IHByb3BlcnR5IGZvciBBbmFseXRpY3NcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xNlwiXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJlbnRDb250cm9sPVwiVGFibGVcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgaXNBbmFseXRpY3M9XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIFF1YW50aXR5IHdpdGggdW5pdCBvZiBtZWFzdXJlICh0ZXh0KSBwcm9wZXJ0eSBmb3IgYW5hbHl0aWNzXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xNFwiXG5cdFx0XHRcdFx0XHRcdFx0cGFyZW50Q29udHJvbD1cIlRhYmxlXCI+XG5cdFx0XHRcdFx0XHRcdFx0PGludGVybmFsTWFjcm86Zm9ybWF0T3B0aW9ucyBpc0FuYWx5dGljcz1cInRydWVcIiAvPlxuXHRcdFx0XHRcdFx0XHQ8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0XHRpdChcblx0XHRcdFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIE11bHRpIExpbmUgdGV4dCBwcm9wZXJ0eSBcIixcblx0XHRcdHtcblx0XHRcdFx0XCJyZWZlcmVuY2VzXCI6IFtcblx0XHRcdFx0XHR7IFwidHlwZVwiOiBcIkpJUkFcIiwgXCJJRFwiOiBcIkZJT1JJVEVDSFAxLTIxMDc4XCIgfSxcblx0XHRcdFx0XHR7IFwidHlwZVwiOiBcIkpJUkFcIiwgXCJJRFwiOiBcIkZJT1JJVEVDSFAxLTE5NDA5XCIgfVxuXHRcdFx0XHRdXG5cdFx0XHR9LFxuXHRcdFx0YXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbSNiaXMvMFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcmVudENvbnRyb2w9XCJUYWJsZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PGludGVybmFsTWFjcm86Zm9ybWF0T3B0aW9ucyB0ZXh0TGluZXNFZGl0PVwiMzFcIiB0ZXh0TWF4TGluZXM9XCIzOVwiIHRleHRFeHBhbmRCZWhhdmlvckRpc3BsYXk9XCJQb3BvdmVyXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dE1heENoYXJhY3RlcnNEaXNwbGF5PVwiNTBcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHQ8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9XG5cdFx0KTtcblx0XHRpdChcIkRhdGFGaWVsZCB3aXRoIGhhcmRjb2RlIHN0cmluZyBWYWx1ZSBcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbSNiaXMvMlwiXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJlbnRDb250cm9sPVwiVGFibGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdH0pO1xuXG5cdGRlc2NyaWJlKFwiLSB3aGVuIGl0IHVzZXMgZGlyZWN0bHkgYSBwcm9wZXJ0eSAtIFwiLCAoKSA9PiB7XG5cdFx0aXQoXCJQcm9wZXJ0eSB3aXRoIHRleHQgYXJyYW5nZW1lbnQgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJwcm9wV2l0aFRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJQcm9wZXJ0eSB3aXRoIHRleHQgYXJyYW5nZW1lbnQgYW5kIG92ZXJyaWRlIFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwicHJvcFdpdGhUZXh0XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW50ZXJuYWxNYWNybzpmb3JtYXRPcHRpb25zIGRpc3BsYXlNb2RlPVwiVmFsdWVcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblxuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFwiQm9vbGVhbiBwcm9wZXJ0eVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwicHJlZmVycmVkSXRlbVwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdH0pO1xuXG5cdGRlc2NyaWJlKFwiLSBjaGVjayBjb250cm9sIHRlbXBsYXRpbmcgZm9yIGJhc2ljIHR5cGVzIGFuZCBpbnB1dCBhbGlnbm1lbnQtIFwiLCAoKSA9PiB7XG5cdFx0ZGVzY3JpYmUoXCItIGZvciB0YWJsZSAtIFwiLCAoKSA9PiB7XG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBzdHJpbmcgcHJvcGVydHkgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgYm9vbGVhbiBwcm9wZXJ0eVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vNVwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIFRpbWVzdGFtcCBwcm9wZXJ0eVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vNlwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIERlY2ltYWwgcHJvcGVydHlcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzdcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBUaW1lIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS84XCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgRG91YmxlIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS85XCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgSW50ZWdlciBwcm9wZXJ0eVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMTBcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBEYXRlIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xM1wiXG5cdFx0XHRcdFx0XHRcdFx0XHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIFF1YW50aXR5IHdpdGggdW5pdCBwcm9wZXJ0eSB3aGVyZSB1bml0IGlzIGFsc28gZWRpdGFibGVcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzE0XCJcblx0XHRcdFx0XHRcdFx0XHRcdHBhcmVudENvbnRyb2w9XCJUYWJsZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBRdWFudGl0eSB3aXRoIHVuaXQgcHJvcGVydHkgd2hlcmUgdW5pdCBpcyByZWFkb25seVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMTVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0cGFyZW50Q29udHJvbD1cIlRhYmxlXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIFF1YW50aXR5IHdpdGggY3VycmVuY3kgcHJvcGVydHkgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xNlwiXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJlbnRDb250cm9sPVwiVGFibGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgUXVhbnRpdHkgd2l0aCBzdGF0aWMgdW5pdCBhbm5vdGF0aW9uXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xN1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJlbnRDb250cm9sPVwiVGFibGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdGRlc2NyaWJlKFwiLSBmb3IgZm9ybSAtIFwiLCAoKSA9PiB7XG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBzdHJpbmcgcHJvcGVydHkgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW50ZXJuYWxNYWNybzpmb3JtYXRPcHRpb25zIHRleHRBbGlnbk1vZGU9XCJGb3JtXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cblx0XHRcdGl0KFwiV2hlbiBDb21tb24uaXNEaWdpdHNlcXVlbmNlIGlzIGFubm90YXRlZCBmb3IgYSBzdHJpbmdcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiaXNEaWdpdFNlcXVlbmNlXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW50ZXJuYWxNYWNybzpmb3JtYXRPcHRpb25zIHRleHRBbGlnbk1vZGU9XCJGb3JtXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgSW50ZWdlciBwcm9wZXJ0eVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMTBcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgdGV4dEFsaWduTW9kZT1cIkZvcm1cIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgRGF0ZSBwcm9wZXJ0eVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMTNcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgdGV4dEFsaWduTW9kZT1cIkZvcm1cIi8+XG5cdFx0XHRcdFx0XHRcdFx0PC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH0pO1xuXG5cdGRlc2NyaWJlKFwiLSBjaGVjayBjb250cm9sIHRlbXBsYXRpbmcgZm9yIGVtcHR5IHBsYWNlSG9sZGVyIHRyaWdnZXItIFwiLCAoKSA9PiB7XG5cdFx0aXQoXCJ3aGVuIHRoZXJlIGlzIG5vIGZvcm1hdE9wdGlvbnMvc2hvd0VtcHR5SW5kaWNhdG9yIFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cblx0XHRpdChcIndoZW4gdGhlcmUgaXMgZm9ybWF0T3B0aW9ucy9zaG93RW1wdHlJbmRpY2F0b3IgZm9yIGEgRGF0YWZpZWxkIFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzFcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgc2hvd0VtcHR5SW5kaWNhdG9yPVwidHJ1ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cblx0XHRpdChcIndoZW4gdGhlcmUgaXMgZm9ybWF0T3B0aW9ucy9zaG93RW1wdHlJbmRpY2F0b3IgZm9yIGEgcHJvcGVydHkgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJwcm9wV2l0aFRleHRcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgc2hvd0VtcHR5SW5kaWNhdG9yPVwidHJ1ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdH0pO1xuXG5cdGRlc2NyaWJlKFwiLSBjaGVjayBjb250cm9sIHRlbXBsYXRpbmcgZm9yIExpc3RSZXBvcnQgLyBmaWVsZCB3aXRoIG5vd3JhcHBlclwiLCAoKSA9PiB7XG5cdFx0aXQoXG5cdFx0XHRcIndoZW4gdGhlcmUgaXMgYSBub3dyYXBwZXIgZm9yIGEgZmllbGQgXCIsXG5cdFx0XHR7XG5cdFx0XHRcdFwicmVmZXJlbmNlc1wiOiBbeyBcInR5cGVcIjogXCJKSVJBXCIsIFwiSURcIjogXCJGSU9SSVRFQ0hQMS0yMjAxMlwiIH1dXG5cdFx0XHR9LFxuXHRcdFx0YXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwicHJvcFdpdGhUZXh0XCJcblx0XHRcdFx0XHRcdFx0XHRcdGVkaXRNb2RlPVwiRGlzcGxheVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGludGVybmFsTWFjcm86Zm9ybWF0T3B0aW9ucyBmaWVsZE1vZGU9XCJub3dyYXBwZXJcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblxuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH1cblx0XHQpO1xuXG5cdFx0aXQoXG5cdFx0XHRcIndoZW4gdGhlcmUgaXMgbm90IGEgbm93cmFwcGVyIGZvciBhIGZpZWxkIFwiLFxuXHRcdFx0e1xuXHRcdFx0XHRcInJlZmVyZW5jZXNcIjogW3sgXCJ0eXBlXCI6IFwiSklSQVwiLCBcIklEXCI6IFwiRklPUklURUNIUDEtMjIwMTJcIiB9XVxuXHRcdFx0fSxcblx0XHRcdGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cInByb3BXaXRoVGV4dFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlZGl0TW9kZT1cIkRpc3BsYXlcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgZmllbGRNb2RlPVwiXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9XG5cdFx0KTtcblxuXHRcdGl0KFxuXHRcdFx0XCJ3aGVuIHRoZXJlIGlzIGEgbm93cmFwcGVyIGZvciBhIGZpZWxkIGFuZCBhbmFseXRpY3MgaXMgdHJ1ZSBcIixcblx0XHRcdHtcblx0XHRcdFx0XCJyZWZlcmVuY2VzXCI6IFt7IFwidHlwZVwiOiBcIkpJUkFcIiwgXCJJRFwiOiBcIkZJT1JJVEVDSFAxLTIyMDEyXCIgfV1cblx0XHRcdH0sXG5cdFx0XHRhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJwcm9wV2l0aFRleHRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZWRpdE1vZGU9XCJEaXNwbGF5XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW50ZXJuYWxNYWNybzpmb3JtYXRPcHRpb25zIGZpZWxkTW9kZT1cIm5vd3JhcHBlclwiIGlzQW5hbHl0aWNzPVwidHJ1ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fVxuXHRcdCk7XG5cdH0pO1xuXG5cdGRlc2NyaWJlKFwiLSBkYXRhRmllbGQgYW5ub3RhdGlvbi0gXCIsICgpID0+IHtcblx0XHRpdChcImNyaXRpY2FsaXR5IFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI0RhdGFGaWVsZHMvMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0fSk7XG5cblx0ZGVzY3JpYmUoXCJUZXN0IHRoZSBSZWFkT25seSBwcm9wZXJ0eSBcIiwgKCkgPT4ge1xuXHRcdGl0KFwiT24gdGhlIERhdGFGaWVsZCBwcm9wZXJ0eSAtIER5bmFtaWMgdmFsdWVcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbSNGaWVsZENvbnRyb2xWYWx1ZS8wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblxuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFwiT24gdGhlIERhdGFGaWVsZCBwcm9wZXJ0eSAtIFN0YXRpYyB2YWx1ZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI0ZpZWxkQ29udHJvbFZhbHVlLzFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cblx0XHRpdChcIk9uIGJvdGggcHJvcGVydGllcyAtIER5bmFtaWMgVmFsdWVcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbSNGaWVsZENvbnRyb2xWYWx1ZS8yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblxuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFwiT24gYm90aCBwcm9wZXJ0aWVzIC0gU3RhdGljIHZhbHVlIFJlYWRPbmx5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0jRmllbGRDb250cm9sVmFsdWUvM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0XHRpdChcIk9uIGJvdGggcHJvcGVydGllcyAtIFN0YXRpYyB2YWx1ZSBFZGl0YWJsZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI0ZpZWxkQ29udHJvbFZhbHVlLzRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cblx0XHRpdChcIk9uIHRoZSBhbm5vdGF0aW9uIHByb3BlcnR5IC0gRHluYW1pYyBWYWx1ZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI0ZpZWxkQ29udHJvbFZhbHVlLzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJPbiB0aGUgYW5ub3RhdGlvbiBwcm9wZXJ0eSAtIFN0YXRpYyBWYWx1ZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI0ZpZWxkQ29udHJvbFZhbHVlLzZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdH0pO1xufSk7XG4iXX0=
|
|
@@ -358,6 +358,62 @@ describe("MacroField", () => {
|
|
|
358
358
|
});
|
|
359
359
|
});
|
|
360
360
|
|
|
361
|
+
describe("- check control templating for ListReport / field with nowrapper", () => {
|
|
362
|
+
it(
|
|
363
|
+
"when there is a nowrapper for a field ",
|
|
364
|
+
{
|
|
365
|
+
"references": [{ "type": "JIRA", "ID": "FIORITECHP1-22012" }]
|
|
366
|
+
},
|
|
367
|
+
async () => {
|
|
368
|
+
const xmlField = `<internalMacro:Field xmlns:internalMacro="sap.fe.macros.internal"
|
|
369
|
+
entitySet="{entitySet>}"
|
|
370
|
+
dataField="propWithText"
|
|
371
|
+
editMode="Display">
|
|
372
|
+
<internalMacro:formatOptions fieldMode="nowrapper"/>
|
|
373
|
+
</internalMacro:Field>`;
|
|
374
|
+
|
|
375
|
+
const templatedXML = await getTemplatedXML(xmlField, sMetadataUrl, mBindingContexts, {});
|
|
376
|
+
expect(templatedXML).toMatchSnapshot();
|
|
377
|
+
}
|
|
378
|
+
);
|
|
379
|
+
|
|
380
|
+
it(
|
|
381
|
+
"when there is not a nowrapper for a field ",
|
|
382
|
+
{
|
|
383
|
+
"references": [{ "type": "JIRA", "ID": "FIORITECHP1-22012" }]
|
|
384
|
+
},
|
|
385
|
+
async () => {
|
|
386
|
+
const xmlField = `<internalMacro:Field xmlns:internalMacro="sap.fe.macros.internal"
|
|
387
|
+
entitySet="{entitySet>}"
|
|
388
|
+
dataField="propWithText"
|
|
389
|
+
editMode="Display">
|
|
390
|
+
<internalMacro:formatOptions fieldMode=""/>
|
|
391
|
+
</internalMacro:Field>`;
|
|
392
|
+
|
|
393
|
+
const templatedXML = await getTemplatedXML(xmlField, sMetadataUrl, mBindingContexts, {});
|
|
394
|
+
expect(templatedXML).toMatchSnapshot();
|
|
395
|
+
}
|
|
396
|
+
);
|
|
397
|
+
|
|
398
|
+
it(
|
|
399
|
+
"when there is a nowrapper for a field and analytics is true ",
|
|
400
|
+
{
|
|
401
|
+
"references": [{ "type": "JIRA", "ID": "FIORITECHP1-22012" }]
|
|
402
|
+
},
|
|
403
|
+
async () => {
|
|
404
|
+
const xmlField = `<internalMacro:Field xmlns:internalMacro="sap.fe.macros.internal"
|
|
405
|
+
entitySet="{entitySet>}"
|
|
406
|
+
dataField="propWithText"
|
|
407
|
+
editMode="Display">
|
|
408
|
+
<internalMacro:formatOptions fieldMode="nowrapper" isAnalytics="true"/>
|
|
409
|
+
</internalMacro:Field>`;
|
|
410
|
+
|
|
411
|
+
const templatedXML = await getTemplatedXML(xmlField, sMetadataUrl, mBindingContexts, {});
|
|
412
|
+
expect(templatedXML).toMatchSnapshot();
|
|
413
|
+
}
|
|
414
|
+
);
|
|
415
|
+
});
|
|
416
|
+
|
|
361
417
|
describe("- dataField annotation- ", () => {
|
|
362
418
|
it("criticality ", async () => {
|
|
363
419
|
const xmlField = `<internalMacro:Field xmlns:internalMacro="sap.fe.macros.internal"
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define(["sap/fe/test/JestTemplatingHelper", "sap/fe/macros/Table.metadata", "path", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/converters/controls/Common/Table", "sap/fe/core/converters/ManifestSettings"], function (JestTemplatingHelper, TableAPI, path, MetaModelConverter, Table, ManifestSettings) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var TemplateType = ManifestSettings.TemplateType;
|
|
9
|
+
var createTableVisualization = Table.createTableVisualization;
|
|
10
|
+
var convertTypes = MetaModelConverter.convertTypes;
|
|
11
|
+
var getMetaModel = JestTemplatingHelper.getMetaModel;
|
|
12
|
+
var getConverterContextForTest = JestTemplatingHelper.getConverterContextForTest;
|
|
13
|
+
var unregisterMacro = JestTemplatingHelper.unregisterMacro;
|
|
14
|
+
var registerMacro = JestTemplatingHelper.registerMacro;
|
|
15
|
+
var getTemplatedXML = JestTemplatingHelper.getTemplatedXML;
|
|
16
|
+
var compileCDS = JestTemplatingHelper.compileCDS;
|
|
17
|
+
|
|
18
|
+
describe("TableFieldLabel", function () {
|
|
19
|
+
beforeAll(function () {
|
|
20
|
+
registerMacro(TableAPI);
|
|
21
|
+
});
|
|
22
|
+
afterAll(function () {
|
|
23
|
+
unregisterMacro(TableAPI);
|
|
24
|
+
});
|
|
25
|
+
var sMetadataUrl = compileCDS(path.join(__dirname, "./data/TableFieldLabel.cds"));
|
|
26
|
+
var mBindingContexts = {
|
|
27
|
+
"entitySet": "/SalesOrderItem",
|
|
28
|
+
"tableDef": "/"
|
|
29
|
+
};
|
|
30
|
+
it("FieldGroup DataFields Label within a LineItem", function () {
|
|
31
|
+
try {
|
|
32
|
+
return Promise.resolve(getMetaModel(sMetadataUrl)).then(function (metaModel) {
|
|
33
|
+
var convertedTypes = convertTypes(metaModel);
|
|
34
|
+
var manifestSettings = {
|
|
35
|
+
entitySet: "SalesOrderItem",
|
|
36
|
+
converterType: TemplateType.ListReport,
|
|
37
|
+
controlConfiguration: {
|
|
38
|
+
"@com.sap.vocabularies.UI.v1.LineItem": {
|
|
39
|
+
columns: {
|
|
40
|
+
"DataFieldForAnnotation::FieldGroup::myFieldGroup": {
|
|
41
|
+
showDataFieldsLabel: true
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
var converterContext = getConverterContextForTest(convertedTypes, manifestSettings);
|
|
48
|
+
var resolvedTarget = converterContext.getEntityTypeAnnotation("@com.sap.vocabularies.UI.v1.LineItem");
|
|
49
|
+
var lineItem = resolvedTarget.annotation;
|
|
50
|
+
var tableVisualization = createTableVisualization(lineItem, "@com.sap.vocabularies.UI.v1.LineItem", converterContext);
|
|
51
|
+
var mInternalModels = {
|
|
52
|
+
"tableDef": {
|
|
53
|
+
data: tableVisualization,
|
|
54
|
+
isTemplateModel: true
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
var xml = "<internalMacro:Table xmlns:internalMacro=\"sap.fe.macros.internal\"\n\t\t\t\t\t\tid=\"abc\"\n\t\t\t\t\t\tmetaPath=\"@com.sap.vocabularies.UI.v1.LineItem\"\n\t\t\t\t\t\tcontextPath=\"/SalesOrderItem\"\n\t\t\t\t\t\ttableDefinition=\"{tableDef>}\"\n\t\t/>";
|
|
58
|
+
return Promise.resolve(getTemplatedXML(xml, sMetadataUrl, mBindingContexts, mInternalModels)).then(function (templatedXML) {
|
|
59
|
+
expect(templatedXML).toMatchSnapshot();
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
} catch (e) {
|
|
63
|
+
return Promise.reject(e);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}, false);
|
|
68
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRhYmxlRmllbGRMYWJlbC5zcGVjLnRzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiYmVmb3JlQWxsIiwicmVnaXN0ZXJNYWNybyIsIlRhYmxlQVBJIiwiYWZ0ZXJBbGwiLCJ1bnJlZ2lzdGVyTWFjcm8iLCJzTWV0YWRhdGFVcmwiLCJjb21waWxlQ0RTIiwicGF0aCIsImpvaW4iLCJfX2Rpcm5hbWUiLCJtQmluZGluZ0NvbnRleHRzIiwiaXQiLCJnZXRNZXRhTW9kZWwiLCJtZXRhTW9kZWwiLCJjb252ZXJ0ZWRUeXBlcyIsImNvbnZlcnRUeXBlcyIsIm1hbmlmZXN0U2V0dGluZ3MiLCJlbnRpdHlTZXQiLCJjb252ZXJ0ZXJUeXBlIiwiVGVtcGxhdGVUeXBlIiwiTGlzdFJlcG9ydCIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwiY29sdW1ucyIsInNob3dEYXRhRmllbGRzTGFiZWwiLCJjb252ZXJ0ZXJDb250ZXh0IiwiZ2V0Q29udmVydGVyQ29udGV4dEZvclRlc3QiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwibGluZUl0ZW0iLCJhbm5vdGF0aW9uIiwidGFibGVWaXN1YWxpemF0aW9uIiwiY3JlYXRlVGFibGVWaXN1YWxpemF0aW9uIiwibUludGVybmFsTW9kZWxzIiwiZGF0YSIsImlzVGVtcGxhdGVNb2RlbCIsInhtbCIsImdldFRlbXBsYXRlZFhNTCIsInRlbXBsYXRlZFhNTCIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFhQUEsRUFBQUEsUUFBUSxDQUFDLGlCQUFELEVBQW9CLFlBQU07QUFDakNDLElBQUFBLFNBQVMsQ0FBQyxZQUFNO0FBQ2ZDLE1BQUFBLGFBQWEsQ0FBQ0MsUUFBRCxDQUFiO0FBQ0EsS0FGUSxDQUFUO0FBR0FDLElBQUFBLFFBQVEsQ0FBQyxZQUFNO0FBQ2RDLE1BQUFBLGVBQWUsQ0FBQ0YsUUFBRCxDQUFmO0FBQ0EsS0FGTyxDQUFSO0FBR0EsUUFBTUcsWUFBWSxHQUFHQyxVQUFVLENBQUNDLElBQUksQ0FBQ0MsSUFBTCxDQUFVQyxTQUFWLEVBQXFCLDRCQUFyQixDQUFELENBQS9CO0FBQ0EsUUFBTUMsZ0JBQWdCLEdBQUc7QUFDeEIsbUJBQWEsaUJBRFc7QUFFeEIsa0JBQVk7QUFGWSxLQUF6QjtBQUtBQyxJQUFBQSxFQUFFLENBQUMsK0NBQUQ7QUFBQSxVQUE4RDtBQUFBLCtCQUN2Q0MsWUFBWSxDQUFDUCxZQUFELENBRDJCLGlCQUN6RFEsU0FEeUQ7QUFFL0QsY0FBTUMsY0FBYyxHQUFHQyxZQUFZLENBQUNGLFNBQUQsQ0FBbkM7QUFDQSxjQUFNRyxnQkFBZ0IsR0FBRztBQUN4QkMsWUFBQUEsU0FBUyxFQUFFLGdCQURhO0FBRXhCQyxZQUFBQSxhQUFhLEVBQUVDLFlBQVksQ0FBQ0MsVUFGSjtBQUd4QkMsWUFBQUEsb0JBQW9CLEVBQUU7QUFDckIsc0RBQXdDO0FBQ3ZDQyxnQkFBQUEsT0FBTyxFQUFFO0FBQ1Isc0VBQW9EO0FBQ25EQyxvQkFBQUEsbUJBQW1CLEVBQUU7QUFEOEI7QUFENUM7QUFEOEI7QUFEbkI7QUFIRSxXQUF6QjtBQWFBLGNBQU1DLGdCQUFnQixHQUFHQywwQkFBMEIsQ0FBQ1gsY0FBRCxFQUFpQkUsZ0JBQWpCLENBQW5EO0FBQ0EsY0FBTVUsY0FBYyxHQUFHRixnQkFBZ0IsQ0FBQ0csdUJBQWpCLENBQXlDLHNDQUF6QyxDQUF2QjtBQUNBLGNBQU1DLFFBQVEsR0FBR0YsY0FBYyxDQUFDRyxVQUFoQztBQUNBLGNBQU1DLGtCQUFrQixHQUFHQyx3QkFBd0IsQ0FBQ0gsUUFBRCxFQUFXLHNDQUFYLEVBQW1ESixnQkFBbkQsQ0FBbkQ7QUFDQSxjQUFNUSxlQUFlLEdBQUc7QUFDdkIsd0JBQVk7QUFDWEMsY0FBQUEsSUFBSSxFQUFFSCxrQkFESztBQUVYSSxjQUFBQSxlQUFlLEVBQUU7QUFGTjtBQURXLFdBQXhCO0FBT0EsY0FBTUMsR0FBRyxpUUFBVDtBQTNCK0QsaUNBaUNwQ0MsZUFBZSxDQUFDRCxHQUFELEVBQU05QixZQUFOLEVBQW9CSyxnQkFBcEIsRUFBc0NzQixlQUF0QyxDQWpDcUIsaUJBaUN6REssWUFqQ3lEO0FBa0MvREMsWUFBQUEsTUFBTSxDQUFDRCxZQUFELENBQU4sQ0FBcUJFLGVBQXJCO0FBbEMrRDtBQUFBO0FBbUMvRCxPQW5DQztBQUFBO0FBQUE7QUFBQSxNQUFGO0FBb0NBLEdBakRPLENBQVIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGNvbXBpbGVDRFMsXG5cdGdldFRlbXBsYXRlZFhNTCxcblx0cmVnaXN0ZXJNYWNybyxcblx0dW5yZWdpc3Rlck1hY3JvLFxuXHRnZXRDb252ZXJ0ZXJDb250ZXh0Rm9yVGVzdCxcblx0Z2V0TWV0YU1vZGVsXG59IGZyb20gXCJzYXAvZmUvdGVzdC9KZXN0VGVtcGxhdGluZ0hlbHBlclwiO1xuaW1wb3J0IFRhYmxlQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL1RhYmxlLm1ldGFkYXRhXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBjb252ZXJ0VHlwZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGNyZWF0ZVRhYmxlVmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9UYWJsZVwiO1xuaW1wb3J0IHsgVGVtcGxhdGVUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgTGluZUl0ZW0gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcblxuZGVzY3JpYmUoXCJUYWJsZUZpZWxkTGFiZWxcIiwgKCkgPT4ge1xuXHRiZWZvcmVBbGwoKCkgPT4ge1xuXHRcdHJlZ2lzdGVyTWFjcm8oVGFibGVBUEkpO1xuXHR9KTtcblx0YWZ0ZXJBbGwoKCkgPT4ge1xuXHRcdHVucmVnaXN0ZXJNYWNybyhUYWJsZUFQSSk7XG5cdH0pO1xuXHRjb25zdCBzTWV0YWRhdGFVcmwgPSBjb21waWxlQ0RTKHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi9kYXRhL1RhYmxlRmllbGRMYWJlbC5jZHNcIikpO1xuXHRjb25zdCBtQmluZGluZ0NvbnRleHRzID0ge1xuXHRcdFwiZW50aXR5U2V0XCI6IFwiL1NhbGVzT3JkZXJJdGVtXCIsXG5cdFx0XCJ0YWJsZURlZlwiOiBcIi9cIlxuXHR9O1xuXG5cdGl0KFwiRmllbGRHcm91cCBEYXRhRmllbGRzIExhYmVsIHdpdGhpbiBhIExpbmVJdGVtXCIsIGFzeW5jICgpID0+IHtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBhd2FpdCBnZXRNZXRhTW9kZWwoc01ldGFkYXRhVXJsKTtcblx0XHRjb25zdCBjb252ZXJ0ZWRUeXBlcyA9IGNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpO1xuXHRcdGNvbnN0IG1hbmlmZXN0U2V0dGluZ3MgPSB7XG5cdFx0XHRlbnRpdHlTZXQ6IFwiU2FsZXNPcmRlckl0ZW1cIixcblx0XHRcdGNvbnZlcnRlclR5cGU6IFRlbXBsYXRlVHlwZS5MaXN0UmVwb3J0LFxuXHRcdFx0Y29udHJvbENvbmZpZ3VyYXRpb246IHtcblx0XHRcdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIjoge1xuXHRcdFx0XHRcdGNvbHVtbnM6IHtcblx0XHRcdFx0XHRcdFwiRGF0YUZpZWxkRm9yQW5ub3RhdGlvbjo6RmllbGRHcm91cDo6bXlGaWVsZEdyb3VwXCI6IHtcblx0XHRcdFx0XHRcdFx0c2hvd0RhdGFGaWVsZHNMYWJlbDogdHJ1ZVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdFx0Y29uc3QgY29udmVydGVyQ29udGV4dCA9IGdldENvbnZlcnRlckNvbnRleHRGb3JUZXN0KGNvbnZlcnRlZFR5cGVzLCBtYW5pZmVzdFNldHRpbmdzKTtcblx0XHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24oXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIik7XG5cdFx0Y29uc3QgbGluZUl0ZW0gPSByZXNvbHZlZFRhcmdldC5hbm5vdGF0aW9uIGFzIExpbmVJdGVtO1xuXHRcdGNvbnN0IHRhYmxlVmlzdWFsaXphdGlvbiA9IGNyZWF0ZVRhYmxlVmlzdWFsaXphdGlvbihsaW5lSXRlbSwgXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIiwgY29udmVydGVyQ29udGV4dCk7XG5cdFx0Y29uc3QgbUludGVybmFsTW9kZWxzID0ge1xuXHRcdFx0XCJ0YWJsZURlZlwiOiB7XG5cdFx0XHRcdGRhdGE6IHRhYmxlVmlzdWFsaXphdGlvbixcblx0XHRcdFx0aXNUZW1wbGF0ZU1vZGVsOiB0cnVlXG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdGNvbnN0IHhtbCA9IGA8aW50ZXJuYWxNYWNybzpUYWJsZSB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRpZD1cImFiY1wiXG5cdFx0XHRcdFx0XHRtZXRhUGF0aD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiXG5cdFx0XHRcdFx0XHRjb250ZXh0UGF0aD1cIi9TYWxlc09yZGVySXRlbVwiXG5cdFx0XHRcdFx0XHR0YWJsZURlZmluaXRpb249XCJ7dGFibGVEZWY+fVwiXG5cdFx0Lz5gO1xuXHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWwsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywgbUludGVybmFsTW9kZWxzKTtcblx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0fSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import {
|
|
2
|
+
compileCDS,
|
|
3
|
+
getTemplatedXML,
|
|
4
|
+
registerMacro,
|
|
5
|
+
unregisterMacro,
|
|
6
|
+
getConverterContextForTest,
|
|
7
|
+
getMetaModel
|
|
8
|
+
} from "sap/fe/test/JestTemplatingHelper";
|
|
9
|
+
import TableAPI from "sap/fe/macros/Table.metadata";
|
|
10
|
+
import * as path from "path";
|
|
11
|
+
import { convertTypes } from "sap/fe/core/converters/MetaModelConverter";
|
|
12
|
+
import { createTableVisualization } from "sap/fe/core/converters/controls/Common/Table";
|
|
13
|
+
import { TemplateType } from "sap/fe/core/converters/ManifestSettings";
|
|
14
|
+
import { LineItem } from "@sap-ux/vocabularies-types";
|
|
15
|
+
|
|
16
|
+
describe("TableFieldLabel", () => {
|
|
17
|
+
beforeAll(() => {
|
|
18
|
+
registerMacro(TableAPI);
|
|
19
|
+
});
|
|
20
|
+
afterAll(() => {
|
|
21
|
+
unregisterMacro(TableAPI);
|
|
22
|
+
});
|
|
23
|
+
const sMetadataUrl = compileCDS(path.join(__dirname, "./data/TableFieldLabel.cds"));
|
|
24
|
+
const mBindingContexts = {
|
|
25
|
+
"entitySet": "/SalesOrderItem",
|
|
26
|
+
"tableDef": "/"
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
it("FieldGroup DataFields Label within a LineItem", async () => {
|
|
30
|
+
const metaModel = await getMetaModel(sMetadataUrl);
|
|
31
|
+
const convertedTypes = convertTypes(metaModel);
|
|
32
|
+
const manifestSettings = {
|
|
33
|
+
entitySet: "SalesOrderItem",
|
|
34
|
+
converterType: TemplateType.ListReport,
|
|
35
|
+
controlConfiguration: {
|
|
36
|
+
"@com.sap.vocabularies.UI.v1.LineItem": {
|
|
37
|
+
columns: {
|
|
38
|
+
"DataFieldForAnnotation::FieldGroup::myFieldGroup": {
|
|
39
|
+
showDataFieldsLabel: true
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const converterContext = getConverterContextForTest(convertedTypes, manifestSettings);
|
|
46
|
+
const resolvedTarget = converterContext.getEntityTypeAnnotation("@com.sap.vocabularies.UI.v1.LineItem");
|
|
47
|
+
const lineItem = resolvedTarget.annotation as LineItem;
|
|
48
|
+
const tableVisualization = createTableVisualization(lineItem, "@com.sap.vocabularies.UI.v1.LineItem", converterContext);
|
|
49
|
+
const mInternalModels = {
|
|
50
|
+
"tableDef": {
|
|
51
|
+
data: tableVisualization,
|
|
52
|
+
isTemplateModel: true
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const xml = `<internalMacro:Table xmlns:internalMacro="sap.fe.macros.internal"
|
|
57
|
+
id="abc"
|
|
58
|
+
metaPath="@com.sap.vocabularies.UI.v1.LineItem"
|
|
59
|
+
contextPath="/SalesOrderItem"
|
|
60
|
+
tableDefinition="{tableDef>}"
|
|
61
|
+
/>`;
|
|
62
|
+
const templatedXML = await getTemplatedXML(xml, sMetadataUrl, mBindingContexts, mInternalModels);
|
|
63
|
+
expect(templatedXML).toMatchSnapshot();
|
|
64
|
+
});
|
|
65
|
+
});
|
package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartDelegate.spec.ts.snap
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`ChartDelegate _createPropertyInfosForAggregatable check _createPropertyInfosForAggregatable for custom aggregates 1`] = `
|
|
4
|
+
Array [
|
|
5
|
+
Object {
|
|
6
|
+
"aggregatable": true,
|
|
7
|
+
"availableRoles": undefined,
|
|
8
|
+
"contextDefiningProperty": Array [],
|
|
9
|
+
"datapoint": null,
|
|
10
|
+
"groupable": false,
|
|
11
|
+
"kind": "Aggregatable",
|
|
12
|
+
"label": "Custom Aggregate (SalesAmount)",
|
|
13
|
+
"name": "SalesAmount",
|
|
14
|
+
"role": "axis1",
|
|
15
|
+
"sortOrder": "both",
|
|
16
|
+
"sortable": true,
|
|
17
|
+
},
|
|
18
|
+
]
|
|
19
|
+
`;
|
|
20
|
+
|
|
21
|
+
exports[`ChartDelegate _createPropertyInfosForAggregatable check _createPropertyInfosForAggregatable for transformational aggregates 1`] = `
|
|
22
|
+
Array [
|
|
23
|
+
Object {
|
|
24
|
+
"aggregatable": true,
|
|
25
|
+
"aggregationMethod": "min",
|
|
26
|
+
"availableRoles": undefined,
|
|
27
|
+
"datapoint": null,
|
|
28
|
+
"filterable": true,
|
|
29
|
+
"groupable": false,
|
|
30
|
+
"kind": "Aggregatable",
|
|
31
|
+
"label": "Minimal Net Amount",
|
|
32
|
+
"maxConditions": -1,
|
|
33
|
+
"name": "minPricing",
|
|
34
|
+
"propertyPath": "NetPricing",
|
|
35
|
+
"role": "axis1",
|
|
36
|
+
"sortable": true,
|
|
37
|
+
},
|
|
38
|
+
Object {
|
|
39
|
+
"aggregatable": true,
|
|
40
|
+
"aggregationMethod": "max",
|
|
41
|
+
"availableRoles": undefined,
|
|
42
|
+
"datapoint": null,
|
|
43
|
+
"filterable": true,
|
|
44
|
+
"groupable": false,
|
|
45
|
+
"kind": "Aggregatable",
|
|
46
|
+
"label": "Maximal Net Amount",
|
|
47
|
+
"maxConditions": -1,
|
|
48
|
+
"name": "maxPricing",
|
|
49
|
+
"propertyPath": "NetPricing",
|
|
50
|
+
"role": "axis1",
|
|
51
|
+
"sortable": true,
|
|
52
|
+
},
|
|
53
|
+
]
|
|
54
|
+
`;
|
|
55
|
+
|
|
56
|
+
exports[`ChartDelegate _getBindingInfo check binding info of the chart when collection path is entityset 1`] = `
|
|
57
|
+
Object {
|
|
58
|
+
"parameters": Object {
|
|
59
|
+
"$$groupId": "$auto.workers",
|
|
60
|
+
"entitySet": "SalesOrderManage",
|
|
61
|
+
"noPaging": true,
|
|
62
|
+
"provideGrandTotals": true,
|
|
63
|
+
"provideTotalResultSize": true,
|
|
64
|
+
"useBatchRequests": true,
|
|
65
|
+
},
|
|
66
|
+
"path": "//SalesOrderManage",
|
|
67
|
+
}
|
|
68
|
+
`;
|
|
69
|
+
|
|
70
|
+
exports[`ChartDelegate _getBindingInfo check binding info of the chart when collection path is not entityset 1`] = `
|
|
71
|
+
Object {
|
|
72
|
+
"parameters": Object {
|
|
73
|
+
"$$groupId": "$auto.workers",
|
|
74
|
+
"entitySet": "SalesOrderItem",
|
|
75
|
+
"noPaging": true,
|
|
76
|
+
"provideGrandTotals": true,
|
|
77
|
+
"provideTotalResultSize": true,
|
|
78
|
+
"useBatchRequests": true,
|
|
79
|
+
},
|
|
80
|
+
"path": "_Item",
|
|
81
|
+
}
|
|
82
|
+
`;
|
package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap
CHANGED
|
@@ -25,7 +25,7 @@ exports[`DataPoint macro tests DataPoint from a Header Facet reached via a navig
|
|
|
25
25
|
xmlns:ns2=\\"sap.ui.core\\"
|
|
26
26
|
ns2:require=\\"{FieldRuntime: 'sap/fe/macros/field/FieldRuntime'}\\"
|
|
27
27
|
state=\\"{= (%{_SubItems/Criticality} === 'UI.CriticalityType/Negative' || %{_SubItems/Criticality} === 1 || %{_SubItems/Criticality} === '1') ? 'Error' : ((%{_SubItems/Criticality} === 'UI.CriticalityType/Critical' || %{_SubItems/Criticality} === 2 || %{_SubItems/Criticality} === '2') ? 'Warning' : ((%{_SubItems/Criticality} === 'UI.CriticalityType/Positive' || %{_SubItems/Criticality} === 3 || %{_SubItems/Criticality} === '3') ? 'Success' : ((%{_SubItems/Criticality} === 'UI.CriticalityType/Information' || %{_SubItems/Criticality} === 5 || %{_SubItems/Criticality} === '5') ? 'Indication05' : 'None')))}\\"
|
|
28
|
-
number=\\"{path:'_SubItems/ObjectNumber', type: 'sap.ui.model.odata.type.String', formatOptions: {parseKeepsEmptyString: true}}\\"
|
|
28
|
+
number=\\"{path:'_SubItems/ObjectNumber', type: 'sap.ui.model.odata.type.String', constraints: {maxLength: 60}, formatOptions: {parseKeepsEmptyString: true}}\\"
|
|
29
29
|
visible=\\"true\\"
|
|
30
30
|
emphasized=\\"false\\"
|
|
31
31
|
class=\\"sapMObjectNumberLarge\\"
|
|
@@ -76,7 +76,7 @@ exports[`DataPoint macro tests DataPoint macro with Number, defaultDataPointStyl
|
|
|
76
76
|
ns2:require=\\"{ FieldRuntime: 'sap/fe/macros/field/FieldRuntime' }\\"
|
|
77
77
|
icon=\\"\\"
|
|
78
78
|
state=\\"None\\"
|
|
79
|
-
text=\\"{path:'decimal', type: 'sap.ui.model.odata.type.Decimal', constraints: {
|
|
79
|
+
text=\\"{path:'decimal', type: 'sap.ui.model.odata.type.Decimal', constraints: {scale: 2, precision: 4}}\\"
|
|
80
80
|
/>
|
|
81
81
|
</root>
|
|
82
82
|
"
|
|
@@ -301,7 +301,7 @@ exports[`DataPoint macro tests DataPoint with Nav Prop in its target 1`] = `
|
|
|
301
301
|
xmlns:ns2=\\"sap.ui.core\\"
|
|
302
302
|
ns2:require=\\"{FieldRuntime: 'sap/fe/macros/field/FieldRuntime'}\\"
|
|
303
303
|
state=\\"None\\"
|
|
304
|
-
number=\\"{path:'_SubItems/Text', type: 'sap.ui.model.odata.type.String', formatOptions: {parseKeepsEmptyString: true}}\\"
|
|
304
|
+
number=\\"{path:'_SubItems/Text', type: 'sap.ui.model.odata.type.String', constraints: {maxLength: 10}, formatOptions: {parseKeepsEmptyString: true}}\\"
|
|
305
305
|
visible=\\"true\\"
|
|
306
306
|
emphasized=\\"false\\"
|
|
307
307
|
class=\\"sapMObjectNumberLarge\\"
|
|
@@ -320,7 +320,7 @@ exports[`DataPoint macro tests Datapoint with value format, defaultDataPointStyl
|
|
|
320
320
|
ns2:require=\\"{ FieldRuntime: 'sap/fe/macros/field/FieldRuntime' }\\"
|
|
321
321
|
icon=\\"\\"
|
|
322
322
|
state=\\"None\\"
|
|
323
|
-
text=\\"{path:'decimal', type: 'sap.ui.model.odata.type.Decimal', constraints: {
|
|
323
|
+
text=\\"{path:'decimal', type: 'sap.ui.model.odata.type.Decimal', constraints: {scale: 1, precision: 4}}\\"
|
|
324
324
|
/>
|
|
325
325
|
</root>
|
|
326
326
|
"
|
|
@@ -383,6 +383,24 @@ exports[`DataPoint macro tests Header: DataPoint macro with ObjectNumber ( measu
|
|
|
383
383
|
"
|
|
384
384
|
`;
|
|
385
385
|
|
|
386
|
+
exports[`DataPoint macro tests Header: DataPoint macro with ObjectNumber ( type DateTimeOffset ) 1`] = `
|
|
387
|
+
"<root>
|
|
388
|
+
<ObjectNumber
|
|
389
|
+
xmlns=\\"sap.m\\"
|
|
390
|
+
xmlns:ns1=\\"http://schemas.sap.com/sapui5/preprocessorextension/sap.fe.unittesting/1\\"
|
|
391
|
+
ns1:id=\\"ObjectNumberTest\\"
|
|
392
|
+
xmlns:ns2=\\"sap.ui.core\\"
|
|
393
|
+
ns2:require=\\"{FieldRuntime: 'sap/fe/macros/field/FieldRuntime'}\\"
|
|
394
|
+
state=\\"None\\"
|
|
395
|
+
number=\\"{path:'creationDate', type: 'sap.ui.model.odata.type.DateTimeOffset', constraints: {precision: 7}}\\"
|
|
396
|
+
visible=\\"true\\"
|
|
397
|
+
emphasized=\\"false\\"
|
|
398
|
+
class=\\"sapMObjectNumberLarge\\"
|
|
399
|
+
/>
|
|
400
|
+
</root>
|
|
401
|
+
"
|
|
402
|
+
`;
|
|
403
|
+
|
|
386
404
|
exports[`DataPoint macro tests Header: DataPoint macro with ProgressIndicator 1`] = `
|
|
387
405
|
"<root>
|
|
388
406
|
<label
|
|
@@ -446,7 +464,7 @@ exports[`DataPoint macro tests Header: DataPoint macro with SalesOrderTypeBis 1`
|
|
|
446
464
|
xmlns:ns2=\\"sap.ui.core\\"
|
|
447
465
|
ns2:require=\\"{FieldRuntime: 'sap/fe/macros/field/FieldRuntime'}\\"
|
|
448
466
|
state=\\"None\\"
|
|
449
|
-
number=\\"{path:'decimal', type: 'sap.ui.model.odata.type.Decimal', constraints: {
|
|
467
|
+
number=\\"{path:'decimal', type: 'sap.ui.model.odata.type.Decimal', constraints: {scale: 2, precision: 4}}\\"
|
|
450
468
|
visible=\\"true\\"
|
|
451
469
|
emphasized=\\"false\\"
|
|
452
470
|
class=\\"sapMObjectNumberLarge\\"
|