@sapui5/sap.fe.core 1.134.0 → 1.136.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.
Files changed (395) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +6 -62
  4. package/src/sap/fe/core/ActionRuntime.ts +14 -65
  5. package/src/sap/fe/core/AppComponent.js +10 -2
  6. package/src/sap/fe/core/AppComponent.ts +6 -0
  7. package/src/sap/fe/core/AppStateHandler.js +9 -7
  8. package/src/sap/fe/core/AppStateHandler.ts +7 -5
  9. package/src/sap/fe/core/BaseController.js +1 -1
  10. package/src/sap/fe/core/CommonUtils.js +8 -4
  11. package/src/sap/fe/core/CommonUtils.ts +19 -4
  12. package/src/sap/fe/core/ExtensionAPI.js +7 -5
  13. package/src/sap/fe/core/ExtensionAPI.ts +5 -3
  14. package/src/sap/fe/core/IRowBindingInterface.js +1 -1
  15. package/src/sap/fe/core/InsightsFormattersExtension.js +1 -1
  16. package/src/sap/fe/core/PageController.js +36 -6
  17. package/src/sap/fe/core/PageController.ts +30 -0
  18. package/src/sap/fe/core/ResourceModel.js +1 -1
  19. package/src/sap/fe/core/ReuseComponent.js +1 -1
  20. package/src/sap/fe/core/TemplateComponent.js +1 -1
  21. package/src/sap/fe/core/TemplateModel.js +1 -1
  22. package/src/sap/fe/core/UIProvider.js +2 -2
  23. package/src/sap/fe/core/UIProvider.ts +3 -32
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +34 -16
  25. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +39 -18
  26. package/src/sap/fe/core/buildingBlocks/IBuildingBlockOwnerComponent.js +1 -1
  27. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +1 -1
  28. package/src/sap/fe/core/buildingBlocks/templating/AttributeModel.js +1 -1
  29. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockFormatter.js +1 -1
  30. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +2 -2
  31. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +1 -0
  32. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +7 -7
  33. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +9 -9
  34. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +1 -1
  35. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +5 -3
  36. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +3 -1
  37. package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
  38. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +15 -15
  39. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +19 -19
  40. package/src/sap/fe/core/controllerextensions/ContextSharing.js +1 -1
  41. package/src/sap/fe/core/controllerextensions/EditFlow.js +74 -93
  42. package/src/sap/fe/core/controllerextensions/EditFlow.ts +89 -108
  43. package/src/sap/fe/core/controllerextensions/Feedback.js +1 -1
  44. package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +355 -0
  45. package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +387 -0
  46. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +1 -1
  47. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
  48. package/src/sap/fe/core/controllerextensions/InternalRouting.js +36 -11
  49. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +36 -10
  50. package/src/sap/fe/core/controllerextensions/KPIManagement.js +1 -1
  51. package/src/sap/fe/core/controllerextensions/MessageHandler.js +36 -6
  52. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +41 -1
  53. package/src/sap/fe/core/controllerextensions/PageReady.js +5 -2
  54. package/src/sap/fe/core/controllerextensions/PageReady.ts +3 -0
  55. package/src/sap/fe/core/controllerextensions/Paginator.js +1 -1
  56. package/src/sap/fe/core/controllerextensions/Placeholder.js +1 -1
  57. package/src/sap/fe/core/controllerextensions/Recommendations.js +1 -1
  58. package/src/sap/fe/core/controllerextensions/Routing.js +9 -9
  59. package/src/sap/fe/core/controllerextensions/Routing.ts +4 -4
  60. package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
  61. package/src/sap/fe/core/controllerextensions/Share.js +1 -1
  62. package/src/sap/fe/core/controllerextensions/SideEffects.js +13 -6
  63. package/src/sap/fe/core/controllerextensions/SideEffects.ts +13 -6
  64. package/src/sap/fe/core/controllerextensions/Telemetry.js +1 -1
  65. package/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
  66. package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.js +14 -11
  67. package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.ts +20 -14
  68. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +4 -12
  69. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +2 -10
  70. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +12 -2
  71. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +12 -0
  72. package/src/sap/fe/core/controllerextensions/dialog/ODataStrictDialog.js +1 -1
  73. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +1 -1
  74. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +111 -89
  75. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +140 -105
  76. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +137 -79
  77. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +133 -120
  78. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +3 -3
  79. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +4 -1
  80. package/src/sap/fe/core/controllerextensions/editFlow/editFlowConstants.js +1 -1
  81. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +26 -17
  82. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +32 -23
  83. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +3 -3
  84. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +1 -1
  85. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +103 -23
  86. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +144 -53
  87. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.js +29 -11
  88. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.ts +39 -15
  89. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +24 -22
  90. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +28 -26
  91. package/src/sap/fe/core/controllerextensions/editFlow/operations/actionHelper.js +1 -1
  92. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +6 -572
  93. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +25 -873
  94. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1 -1
  95. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +98 -56
  96. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +102 -80
  97. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +5 -3
  98. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +7 -4
  99. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +1 -1
  100. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.js +1 -1
  101. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.js +1 -1
  102. package/src/sap/fe/core/controllerextensions/routing/NavigationReason.js +1 -1
  103. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +1 -1
  104. package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.js +1 -1
  105. package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributorMixin.js +1 -1
  106. package/src/sap/fe/core/controls/Any.js +1 -1
  107. package/src/sap/fe/core/controls/AnyElement.js +1 -1
  108. package/src/sap/fe/core/controls/CommandExecution.js +1 -1
  109. package/src/sap/fe/core/controls/ComponentLoader.js +1 -1
  110. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +3 -3
  111. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +8 -1
  112. package/src/sap/fe/core/controls/DataWatcher.js +4 -3
  113. package/src/sap/fe/core/controls/DataWatcher.tsx +4 -1
  114. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
  115. package/src/sap/fe/core/controls/HideFormGroupAutomatically.js +10 -4
  116. package/src/sap/fe/core/controls/HideFormGroupAutomatically.ts +13 -2
  117. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -1
  118. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.js +1 -1
  119. package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.js +68 -0
  120. package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.tsx +52 -0
  121. package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.js +144 -0
  122. package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.tsx +128 -0
  123. package/src/sap/fe/core/controls/inlineEditFlow/DraftExistsDialog.js +53 -0
  124. package/src/sap/fe/core/controls/inlineEditFlow/DraftExistsDialog.tsx +39 -0
  125. package/src/sap/fe/core/converters/ConverterContext.js +1 -1
  126. package/src/sap/fe/core/converters/ManifestSettings.js +3 -2
  127. package/src/sap/fe/core/converters/ManifestSettings.ts +42 -20
  128. package/src/sap/fe/core/converters/ManifestWrapper.js +8 -2
  129. package/src/sap/fe/core/converters/ManifestWrapper.ts +8 -0
  130. package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
  131. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  132. package/src/sap/fe/core/converters/annotations/DataField.js +2 -2
  133. package/src/sap/fe/core/converters/annotations/DataField.ts +2 -1
  134. package/src/sap/fe/core/converters/controls/Common/Action.js +55 -6
  135. package/src/sap/fe/core/converters/controls/Common/Action.ts +59 -3
  136. package/src/sap/fe/core/converters/controls/Common/Chart.js +45 -6
  137. package/src/sap/fe/core/converters/controls/Common/Chart.ts +60 -9
  138. package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -1
  139. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
  140. package/src/sap/fe/core/converters/controls/Common/Form.js +21 -5
  141. package/src/sap/fe/core/converters/controls/Common/Form.ts +25 -5
  142. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  143. package/src/sap/fe/core/converters/controls/Common/Table.js +89 -1686
  144. package/src/sap/fe/core/converters/controls/Common/Table.ts +254 -2513
  145. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +1701 -0
  146. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +2377 -0
  147. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +64 -15
  148. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +76 -14
  149. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +7 -36
  150. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +8 -46
  151. package/src/sap/fe/core/converters/controls/ListReport/FilterField.js +106 -0
  152. package/src/sap/fe/core/converters/controls/ListReport/FilterField.ts +129 -0
  153. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +10 -5
  154. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +8 -3
  155. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
  156. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +5 -3
  157. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +11 -4
  158. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +7 -2
  159. package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
  160. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
  161. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +1 -1
  162. package/src/sap/fe/core/converters/helpers/ID.js +1 -1
  163. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +1 -1
  164. package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
  165. package/src/sap/fe/core/converters/helpers/Key.js +1 -1
  166. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  167. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
  168. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +30 -8
  169. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +40 -16
  170. package/src/sap/fe/core/converters/templates/ListReportConverter.js +5 -3
  171. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +5 -1
  172. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
  173. package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +184 -0
  174. package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +240 -0
  175. package/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
  176. package/src/sap/fe/core/designtime/messagebundle.properties +11 -0
  177. package/src/sap/fe/core/designtime/messagebundle_ar.properties +7 -0
  178. package/src/sap/fe/core/designtime/messagebundle_bg.properties +7 -0
  179. package/src/sap/fe/core/designtime/messagebundle_ca.properties +7 -0
  180. package/src/sap/fe/core/designtime/messagebundle_cnr.properties +7 -0
  181. package/src/sap/fe/core/designtime/messagebundle_cs.properties +7 -0
  182. package/src/sap/fe/core/designtime/messagebundle_cy.properties +7 -0
  183. package/src/sap/fe/core/designtime/messagebundle_da.properties +7 -0
  184. package/src/sap/fe/core/designtime/messagebundle_de.properties +7 -0
  185. package/src/sap/fe/core/designtime/messagebundle_el.properties +7 -0
  186. package/src/sap/fe/core/designtime/messagebundle_en.properties +7 -0
  187. package/src/sap/fe/core/designtime/messagebundle_en_GB.properties +7 -0
  188. package/src/sap/fe/core/designtime/messagebundle_es.properties +7 -0
  189. package/src/sap/fe/core/designtime/messagebundle_es_MX.properties +7 -0
  190. package/src/sap/fe/core/designtime/messagebundle_et.properties +7 -0
  191. package/src/sap/fe/core/designtime/messagebundle_fi.properties +7 -0
  192. package/src/sap/fe/core/designtime/messagebundle_fr.properties +7 -0
  193. package/src/sap/fe/core/designtime/messagebundle_fr_CA.properties +7 -0
  194. package/src/sap/fe/core/designtime/messagebundle_hi.properties +7 -0
  195. package/src/sap/fe/core/designtime/messagebundle_hr.properties +7 -0
  196. package/src/sap/fe/core/designtime/messagebundle_hu.properties +7 -0
  197. package/src/sap/fe/core/designtime/messagebundle_id.properties +7 -0
  198. package/src/sap/fe/core/designtime/messagebundle_it.properties +7 -0
  199. package/src/sap/fe/core/designtime/messagebundle_iw.properties +7 -0
  200. package/src/sap/fe/core/designtime/messagebundle_ja.properties +7 -0
  201. package/src/sap/fe/core/designtime/messagebundle_kk.properties +7 -0
  202. package/src/sap/fe/core/designtime/messagebundle_ko.properties +7 -0
  203. package/src/sap/fe/core/designtime/messagebundle_lt.properties +7 -0
  204. package/src/sap/fe/core/designtime/messagebundle_lv.properties +7 -0
  205. package/src/sap/fe/core/designtime/messagebundle_mk.properties +7 -0
  206. package/src/sap/fe/core/designtime/messagebundle_ms.properties +7 -0
  207. package/src/sap/fe/core/designtime/messagebundle_nl.properties +7 -0
  208. package/src/sap/fe/core/designtime/messagebundle_no.properties +7 -0
  209. package/src/sap/fe/core/designtime/messagebundle_pl.properties +7 -0
  210. package/src/sap/fe/core/designtime/messagebundle_pt.properties +7 -0
  211. package/src/sap/fe/core/designtime/messagebundle_pt_PT.properties +7 -0
  212. package/src/sap/fe/core/designtime/messagebundle_ro.properties +7 -0
  213. package/src/sap/fe/core/designtime/messagebundle_ru.properties +7 -0
  214. package/src/sap/fe/core/designtime/messagebundle_sh.properties +7 -0
  215. package/src/sap/fe/core/designtime/messagebundle_sk.properties +7 -0
  216. package/src/sap/fe/core/designtime/messagebundle_sl.properties +7 -0
  217. package/src/sap/fe/core/designtime/messagebundle_sr.properties +7 -0
  218. package/src/sap/fe/core/designtime/messagebundle_sv.properties +7 -0
  219. package/src/sap/fe/core/designtime/messagebundle_th.properties +7 -0
  220. package/src/sap/fe/core/designtime/messagebundle_tr.properties +7 -0
  221. package/src/sap/fe/core/designtime/messagebundle_uk.properties +7 -0
  222. package/src/sap/fe/core/designtime/messagebundle_vi.properties +7 -0
  223. package/src/sap/fe/core/designtime/messagebundle_zh_CN.properties +7 -0
  224. package/src/sap/fe/core/designtime/messagebundle_zh_TW.properties +7 -0
  225. package/src/sap/fe/core/formatters/CollaborationFormatter.js +1 -1
  226. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  227. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  228. package/src/sap/fe/core/formatters/FiscalFormat.js +1 -1
  229. package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
  230. package/src/sap/fe/core/formatters/StandardFormatter.js +1 -1
  231. package/src/sap/fe/core/formatters/ValueFormatter.js +27 -12
  232. package/src/sap/fe/core/formatters/ValueFormatter.ts +25 -11
  233. package/src/sap/fe/core/fpm/Component.js +1 -1
  234. package/src/sap/fe/core/fpm/manifest.json +1 -1
  235. package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.js +1 -1
  236. package/src/sap/fe/core/helpers/AppStartupHelper.js +25 -4
  237. package/src/sap/fe/core/helpers/AppStartupHelper.ts +28 -2
  238. package/src/sap/fe/core/helpers/BindingHelper.js +4 -3
  239. package/src/sap/fe/core/helpers/BindingHelper.ts +2 -1
  240. package/src/sap/fe/core/helpers/BindingToolkitEvaluator.js +1 -1
  241. package/src/sap/fe/core/helpers/DeleteHelper.js +6 -12
  242. package/src/sap/fe/core/helpers/DeleteHelper.ts +4 -9
  243. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
  244. package/src/sap/fe/core/helpers/EditState.js +1 -1
  245. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -1
  246. package/src/sap/fe/core/helpers/FPMHelper.js +9 -3
  247. package/src/sap/fe/core/helpers/FPMHelper.ts +13 -1
  248. package/src/sap/fe/core/helpers/HTTP503Handler.js +1 -1
  249. package/src/sap/fe/core/helpers/KeepAliveHelper.js +1 -1
  250. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -1
  251. package/src/sap/fe/core/helpers/LoaderUtils.js +1 -1
  252. package/src/sap/fe/core/helpers/ManifestHelper.js +1 -1
  253. package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
  254. package/src/sap/fe/core/helpers/MetaModelFunction.js +1 -1
  255. package/src/sap/fe/core/helpers/MetaPath.js +1 -1
  256. package/src/sap/fe/core/helpers/ModelHelper.js +15 -5
  257. package/src/sap/fe/core/helpers/ModelHelper.ts +15 -4
  258. package/src/sap/fe/core/helpers/PasteHelper.js +39 -40
  259. package/src/sap/fe/core/helpers/PasteHelper.ts +49 -51
  260. package/src/sap/fe/core/helpers/PromiseKeeper.js +1 -1
  261. package/src/sap/fe/core/helpers/RecommendationHelper.js +1 -1
  262. package/src/sap/fe/core/helpers/ResourceModelHelper.js +1 -1
  263. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
  264. package/src/sap/fe/core/helpers/SizeHelper.js +1 -1
  265. package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
  266. package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +1 -1
  267. package/src/sap/fe/core/helpers/Synchronization.js +1 -1
  268. package/src/sap/fe/core/helpers/TitleHelper.js +1 -1
  269. package/src/sap/fe/core/helpers/ToES6Promise.js +1 -1
  270. package/src/sap/fe/core/helpers/TypeGuards.js +1 -1
  271. package/src/sap/fe/core/helpers/WebSocket.js +11 -2
  272. package/src/sap/fe/core/helpers/WebSocket.ts +8 -0
  273. package/src/sap/fe/core/library.js +16 -4
  274. package/src/sap/fe/core/library.support.js +1 -1
  275. package/src/sap/fe/core/library.ts +1 -0
  276. package/src/sap/fe/core/manifestMerger/AddNewPage.js +1 -1
  277. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
  278. package/src/sap/fe/core/messagebundle.properties +41 -2
  279. package/src/sap/fe/core/messagebundle_ar.properties +25 -4
  280. package/src/sap/fe/core/messagebundle_bg.properties +25 -4
  281. package/src/sap/fe/core/messagebundle_ca.properties +24 -3
  282. package/src/sap/fe/core/messagebundle_cnr.properties +25 -4
  283. package/src/sap/fe/core/messagebundle_cs.properties +23 -2
  284. package/src/sap/fe/core/messagebundle_cy.properties +24 -3
  285. package/src/sap/fe/core/messagebundle_da.properties +25 -4
  286. package/src/sap/fe/core/messagebundle_de.properties +28 -7
  287. package/src/sap/fe/core/messagebundle_el.properties +23 -2
  288. package/src/sap/fe/core/messagebundle_en.properties +25 -4
  289. package/src/sap/fe/core/messagebundle_en_GB.properties +25 -4
  290. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +26 -5
  291. package/src/sap/fe/core/messagebundle_es.properties +23 -2
  292. package/src/sap/fe/core/messagebundle_es_MX.properties +23 -2
  293. package/src/sap/fe/core/messagebundle_et.properties +23 -2
  294. package/src/sap/fe/core/messagebundle_fi.properties +23 -2
  295. package/src/sap/fe/core/messagebundle_fr.properties +26 -5
  296. package/src/sap/fe/core/messagebundle_fr_CA.properties +23 -2
  297. package/src/sap/fe/core/messagebundle_hi.properties +24 -3
  298. package/src/sap/fe/core/messagebundle_hr.properties +27 -6
  299. package/src/sap/fe/core/messagebundle_hu.properties +23 -2
  300. package/src/sap/fe/core/messagebundle_id.properties +23 -2
  301. package/src/sap/fe/core/messagebundle_it.properties +25 -4
  302. package/src/sap/fe/core/messagebundle_iw.properties +24 -3
  303. package/src/sap/fe/core/messagebundle_ja.properties +24 -3
  304. package/src/sap/fe/core/messagebundle_kk.properties +23 -2
  305. package/src/sap/fe/core/messagebundle_ko.properties +25 -4
  306. package/src/sap/fe/core/messagebundle_lt.properties +23 -2
  307. package/src/sap/fe/core/messagebundle_lv.properties +25 -4
  308. package/src/sap/fe/core/messagebundle_mk.properties +23 -2
  309. package/src/sap/fe/core/messagebundle_ms.properties +24 -3
  310. package/src/sap/fe/core/messagebundle_nl.properties +23 -2
  311. package/src/sap/fe/core/messagebundle_no.properties +23 -2
  312. package/src/sap/fe/core/messagebundle_pl.properties +25 -4
  313. package/src/sap/fe/core/messagebundle_pt.properties +25 -4
  314. package/src/sap/fe/core/messagebundle_pt_PT.properties +24 -3
  315. package/src/sap/fe/core/messagebundle_ro.properties +25 -4
  316. package/src/sap/fe/core/messagebundle_ru.properties +24 -3
  317. package/src/sap/fe/core/messagebundle_sh.properties +25 -4
  318. package/src/sap/fe/core/messagebundle_sk.properties +24 -3
  319. package/src/sap/fe/core/messagebundle_sl.properties +28 -7
  320. package/src/sap/fe/core/messagebundle_sr.properties +25 -4
  321. package/src/sap/fe/core/messagebundle_sv.properties +23 -2
  322. package/src/sap/fe/core/messagebundle_th.properties +25 -4
  323. package/src/sap/fe/core/messagebundle_tr.properties +23 -2
  324. package/src/sap/fe/core/messagebundle_uk.properties +25 -4
  325. package/src/sap/fe/core/messagebundle_vi.properties +25 -4
  326. package/src/sap/fe/core/messagebundle_zh_CN.properties +26 -5
  327. package/src/sap/fe/core/messagebundle_zh_TW.properties +24 -3
  328. package/src/sap/fe/core/rootView/Fcl.controller.js +11 -7
  329. package/src/sap/fe/core/rootView/Fcl.controller.ts +16 -7
  330. package/src/sap/fe/core/rootView/NavContainer.controller.js +3 -3
  331. package/src/sap/fe/core/rootView/NavContainer.controller.ts +1 -1
  332. package/src/sap/fe/core/rootView/RootViewBaseController.js +87 -35
  333. package/src/sap/fe/core/rootView/RootViewBaseController.ts +113 -57
  334. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -1
  335. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
  336. package/src/sap/fe/core/services/CollaborationManagerServiceFactory.js +29 -13
  337. package/src/sap/fe/core/services/CollaborationManagerServiceFactory.ts +27 -13
  338. package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.js +1 -1
  339. package/src/sap/fe/core/services/ContextSharingServiceFactory.js +1 -1
  340. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +8 -2
  341. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +6 -0
  342. package/src/sap/fe/core/services/InlineEditServiceFactory.js +11 -5
  343. package/src/sap/fe/core/services/InlineEditServiceFactory.ts +9 -3
  344. package/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
  345. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
  346. package/src/sap/fe/core/services/RoutingServiceFactory.js +14 -7
  347. package/src/sap/fe/core/services/RoutingServiceFactory.ts +11 -5
  348. package/src/sap/fe/core/services/ShellServicesFactory.js +5 -4
  349. package/src/sap/fe/core/services/ShellServicesFactory.ts +5 -3
  350. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +28 -4
  351. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +32 -3
  352. package/src/sap/fe/core/services/TelemetryServiceFactory.js +1 -1
  353. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
  354. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +1 -1
  355. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +1 -1
  356. package/src/sap/fe/core/services/valueHelpService/HistoryOptOutProvider.js +1 -1
  357. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
  358. package/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +1 -1
  359. package/src/sap/fe/core/support/AnnotationIssue.support.js +1 -1
  360. package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +1 -1
  361. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +1 -1
  362. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  363. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  364. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
  365. package/src/sap/fe/core/templating/ActionHelper.js +1 -1
  366. package/src/sap/fe/core/templating/CommonFormatters.js +1 -1
  367. package/src/sap/fe/core/templating/CriticalityFormatters.js +1 -1
  368. package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -1
  369. package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
  370. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  371. package/src/sap/fe/core/templating/EntitySetHelper.js +199 -59
  372. package/src/sap/fe/core/templating/EntitySetHelper.ts +221 -61
  373. package/src/sap/fe/core/templating/EntityTypeHelper.js +1 -1
  374. package/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
  375. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  376. package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
  377. package/src/sap/fe/core/templating/PropertyHelper.js +1 -1
  378. package/src/sap/fe/core/templating/SemanticObjectHelper.js +8 -10
  379. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +11 -10
  380. package/src/sap/fe/core/templating/UIFormatters.js +5 -2
  381. package/src/sap/fe/core/templating/UIFormatters.ts +3 -0
  382. package/src/sap/fe/core/type/Date.js +1 -1
  383. package/src/sap/fe/core/type/DateTimeWithTimezone.js +1 -1
  384. package/src/sap/fe/core/type/EDM.js +1 -1
  385. package/src/sap/fe/core/type/Email.js +1 -1
  386. package/src/sap/fe/core/type/FiscalDate.js +1 -1
  387. package/src/sap/fe/core/type/InputMask.js +1 -1
  388. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.js +0 -288
  389. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.tsx +0 -208
  390. package/src/sap/fe/core/controllerextensions/editFlow/ODataOperation.js +0 -404
  391. package/src/sap/fe/core/controllerextensions/editFlow/ODataOperation.ts +0 -502
  392. package/src/sap/fe/core/designtime/TextArrangementChangeAction.js +0 -100
  393. package/src/sap/fe/core/designtime/TextArrangementChangeAction.ts +0 -134
  394. package/src/sap/fe/core/operationsHelper.js +0 -192
  395. package/src/sap/fe/core/operationsHelper.ts +0 -277
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2024 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/base/Object", "sap/ui/model/json/JSONModel"], function (ClassSupport, BaseObject, JSONModel) {
6
6
  "use strict";
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2024 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define([], function () {
6
6
  "use strict";
@@ -20,4 +20,4 @@ sap.ui.define([], function () {
20
20
  _exports.setCoreUIFactory = setCoreUIFactory;
21
21
  return _exports;
22
22
  }, false);
23
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjdXJyZW50RmFjdG9yeSIsImdldENvcmVVSUZhY3RvcnkiLCJ1bmRlZmluZWQiLCJFcnJvciIsIl9leHBvcnRzIiwic2V0Q29yZVVJRmFjdG9yeSIsInByb3ZpZGVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJVSVByb3ZpZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9uLCBQcmltaXRpdmVUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgRGlhbG9nIGZyb20gXCJzYXAvbS9EaWFsb2dcIjtcbmltcG9ydCB0eXBlIEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgQ29udGV4dCwgZGVmYXVsdCBhcyBPRGF0YVY0Q29udGV4dCB9IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcIi4vQmFzZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2VIYW5kbGVyIGZyb20gXCIuL2NvbnRyb2xsZXJleHRlbnNpb25zL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgdHlwZSB7IE9wZXJhdGlvblJlc3VsdCB9IGZyb20gXCIuL2NvbnRyb2xsZXJleHRlbnNpb25zL2VkaXRGbG93L09EYXRhT3BlcmF0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IFNob3dBY3Rpb25EaWFsb2dQYXJhbWV0ZXJzIH0gZnJvbSBcIi4vY29udHJvbGxlcmV4dGVuc2lvbnMvZWRpdEZsb3cvb3BlcmF0aW9ucy9mYWNhZGVcIjtcbmltcG9ydCB0eXBlIHsgU2hvd01lc3NhZ2VQYXJhbWV0ZXJzIH0gZnJvbSBcIi4vY29udHJvbGxlcmV4dGVuc2lvbnMvbWVzc2FnZUhhbmRsZXIvbWVzc2FnZUhhbmRsaW5nXCI7XG5pbXBvcnQgdHlwZSB7IFN0cmljdEhhbmRsaW5nVXRpbGl0aWVzIH0gZnJvbSBcIi4vb3BlcmF0aW9uc0hlbHBlclwiO1xuXG5leHBvcnQgdHlwZSBFeGl0RGlhbG9nRXZlbnQgPSBFdmVudDx7XG5cdGFjY2VwdDogYm9vbGVhbjtcbn0+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkRGlhbG9nIHtcblx0b3BlbkRpYWxvZygpOiB2b2lkO1xuXHRjbG9zZURpYWxvZygpOiB2b2lkO1xuXHRzZXRCdXN5KGJ1c3k6IGJvb2xlYW4pOiB2b2lkO1xuXHRhdHRhY2hFeGl0RGlhbG9nKGRhdGE6IG9iamVjdCwgaGFuZGxlcjogKGU6IEV4aXREaWFsb2dFdmVudCkgPT4gdm9pZCwgbGlzdGVuZXI/OiBvYmplY3QpOiB2b2lkO1xuXHRpc09wZW4oKTogYm9vbGVhbjtcblx0ZGlzcGxheUVycm9yTWVzc2FnZXMobWVzc2FnZXM6IE1lc3NhZ2VbXSk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhbmRhcmRQYXJhbWV0ZXJEaWFsb2cge1xuXHRjcmVhdGVEaWFsb2coKTogUHJvbWlzZTxEaWFsb2c+O1xuXHRvcGVuRGlhbG9nKG93bmVyOiBDb250cm9sKTogUHJvbWlzZTxQcm9taXNlU2V0dGxlZFJlc3VsdDxPcGVyYXRpb25SZXN1bHQ+W10+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkT3BlcmF0aW9uUGFyYW1ldGVyRGlhbG9nIHtcblx0Y3JlYXRlRGlhbG9nKCk6IFByb21pc2U8RGlhbG9nPjtcblx0b3BlbkRpYWxvZygpOiBQcm9taXNlPHZvaWQ+O1xuXHR3YWl0Rm9yUGFyYW1ldGVyc1ZhbHVlcygpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIFByaW1pdGl2ZVR5cGU+Pjtcblx0Z2V0RGlhbG9nKCk6IERpYWxvZyB8IHVuZGVmaW5lZDtcblx0cmVzZXRTdGF0ZSgpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvcmVVSUZhY3Rvcnkge1xuXHRuZXdDcmVhdGVEaWFsb2coXG5cdFx0Y29udGV4dFRvVXBkYXRlOiBPRGF0YVY0Q29udGV4dCxcblx0XHRmaWVsZE5hbWVzOiBzdHJpbmdbXSxcblx0XHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0XHRtb2RlOiBcIlN0YW5kYWxvbmVcIiB8IFwiV2l0aE5hdmlnYXRpb25cIixcblx0XHRwYXJlbnRDb250cm9sPzogQ29udHJvbFxuXHQpOiBTdGFuZGFyZERpYWxvZztcblx0bmV3UGFyYW1ldGVyRGlhbG9nKFxuXHRcdGFjdGlvbjogQWN0aW9uLFxuXHRcdGFjdGlvbkNvbnRleHQ6IENvbnRleHQsXG5cdFx0cGFyYW1ldGVyczogU2hvd0FjdGlvbkRpYWxvZ1BhcmFtZXRlcnMsXG5cdFx0cGFyYW1ldGVyVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdIHwgdW5kZWZpbmVkLFxuXG5cdFx0ZW50aXR5U2V0TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRcdHZpZXc6IEZFVmlldyB8IG51bGwsXG5cdFx0bWVzc2FnZUhhbmRsZXI6IE1lc3NhZ2VIYW5kbGVyLFxuXHRcdHN0cmljdEhhbmRsaW5nVXRpbGl0aWVzOiBTdHJpY3RIYW5kbGluZ1V0aWxpdGllcyxcblx0XHRjYWxsYmFja3M6IHtcblx0XHRcdGJlZm9yZVNob3dpbmdNZXNzYWdlOiAoXG5cdFx0XHRcdG1QYXJhbWV0ZXJzOiBTaG93QWN0aW9uRGlhbG9nUGFyYW1ldGVycyxcblx0XHRcdFx0YUNvbnRleHRzOiBPRGF0YVY0Q29udGV4dFtdLFxuXHRcdFx0XHRvRGlhbG9nOiBEaWFsb2cgfCB1bmRlZmluZWQsXG5cdFx0XHRcdG1lc3NhZ2VzOiBNZXNzYWdlW10sXG5cdFx0XHRcdHNob3dNZXNzYWdlUGFyYW1ldGVyc0luOiBTaG93TWVzc2FnZVBhcmFtZXRlcnMsXG5cdFx0XHRcdHNob3dHZW5lcmljRXJyb3JNZXNzYWdlRm9yQ2hhbmdlU2V0OiBib29sZWFuXG5cdFx0XHQpID0+IFNob3dNZXNzYWdlUGFyYW1ldGVycztcblx0XHR9LFxuXHRcdGlnbm9yZUVUYWc/OiBib29sZWFuXG5cdCk6IFN0YW5kYXJkUGFyYW1ldGVyRGlhbG9nO1xuXHRuZXdPcGVyYXRpb25QYXJhbWV0ZXJEaWFsb2coXG5cdFx0YWN0aW9uOiBBY3Rpb24sXG5cdFx0cGFyYW1ldGVyczoge1xuXHRcdFx0YXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQ7XG5cdFx0XHRjb250ZXh0czogT0RhdGFWNENvbnRleHRbXTtcblx0XHRcdHBhcmFtZXRlcnNWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIFByaW1pdGl2ZVR5cGU+O1xuXHRcdFx0ZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0XHRpc0NyZWF0ZUFjdGlvbj86IGJvb2xlYW47XG5cdFx0XHRsYWJlbD86IHN0cmluZztcblx0XHRcdG1vZGVsOiBPRGF0YU1vZGVsO1xuXHRcdFx0dmlldz86IEZFVmlldztcblx0XHRcdGV2ZW50cz86IHtcblx0XHRcdFx0b25QYXJhbWV0ZXJEaWFsb2dPcGVuZWQ/OiAoKSA9PiB2b2lkO1xuXHRcdFx0XHRvblBhcmFtZXRlckRpYWxvZ0Nsb3NlZD86ICgpID0+IHZvaWQ7XG5cdFx0XHR9O1xuXHRcdH0sXG5cdFx0cGFyYW1ldGVyVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdIHwgdW5kZWZpbmVkLFxuXHRcdGVudGl0eVNldE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0XHRtZXNzYWdlSGFuZGxlcjogTWVzc2FnZUhhbmRsZXJcblx0KTogU3RhbmRhcmRPcGVyYXRpb25QYXJhbWV0ZXJEaWFsb2c7XG59XG5cbmxldCBjdXJyZW50RmFjdG9yeTogQ29yZVVJRmFjdG9yeSB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvcmVVSUZhY3RvcnkoKTogQ29yZVVJRmFjdG9yeSB7XG5cdGlmIChjdXJyZW50RmFjdG9yeSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwic2FwLmZlLmNvcmUgVUkgcHJvdmlkZXIgbm90IGRlZmluZWRcIik7XG5cdH1cblxuXHRyZXR1cm4gY3VycmVudEZhY3Rvcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb3JlVUlGYWN0b3J5KHByb3ZpZGVyPzogQ29yZVVJRmFjdG9yeSk6IHZvaWQge1xuXHRjdXJyZW50RmFjdG9yeSA9IHByb3ZpZGVyO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztFQTZGQSxJQUFJQSxjQUF5QztFQUV0QyxTQUFTQyxnQkFBZ0JBLENBQUEsRUFBa0I7SUFDakQsSUFBSUQsY0FBYyxLQUFLRSxTQUFTLEVBQUU7TUFDakMsTUFBTSxJQUFJQyxLQUFLLENBQUMscUNBQXFDLENBQUM7SUFDdkQ7SUFFQSxPQUFPSCxjQUFjO0VBQ3RCO0VBQUNJLFFBQUEsQ0FBQUgsZ0JBQUEsR0FBQUEsZ0JBQUE7RUFFTSxTQUFTSSxnQkFBZ0JBLENBQUNDLFFBQXdCLEVBQVE7SUFDaEVOLGNBQWMsR0FBR00sUUFBUTtFQUMxQjtFQUFDRixRQUFBLENBQUFDLGdCQUFBLEdBQUFBLGdCQUFBO0VBQUEsT0FBQUQsUUFBQTtBQUFBIiwiaWdub3JlTGlzdCI6W119
23
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjdXJyZW50RmFjdG9yeSIsImdldENvcmVVSUZhY3RvcnkiLCJ1bmRlZmluZWQiLCJFcnJvciIsIl9leHBvcnRzIiwic2V0Q29yZVVJRmFjdG9yeSIsInByb3ZpZGVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJVSVByb3ZpZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9uLCBQcmltaXRpdmVUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgRGlhbG9nIGZyb20gXCJzYXAvbS9EaWFsb2dcIjtcbmltcG9ydCB0eXBlIEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT0RhdGFWNENvbnRleHQgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IEZFVmlldyB9IGZyb20gXCIuL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBNZXNzYWdlSGFuZGxlciBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9NZXNzYWdlSGFuZGxlclwiO1xuXG5leHBvcnQgdHlwZSBFeGl0RGlhbG9nRXZlbnQgPSBFdmVudDx7XG5cdGFjY2VwdDogYm9vbGVhbjtcbn0+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkRGlhbG9nIHtcblx0b3BlbkRpYWxvZygpOiB2b2lkO1xuXHRjbG9zZURpYWxvZygpOiB2b2lkO1xuXHRzZXRCdXN5KGJ1c3k6IGJvb2xlYW4pOiB2b2lkO1xuXHRhdHRhY2hFeGl0RGlhbG9nKGRhdGE6IG9iamVjdCwgaGFuZGxlcjogKGU6IEV4aXREaWFsb2dFdmVudCkgPT4gdm9pZCwgbGlzdGVuZXI/OiBvYmplY3QpOiB2b2lkO1xuXHRpc09wZW4oKTogYm9vbGVhbjtcblx0ZGlzcGxheUVycm9yTWVzc2FnZXMobWVzc2FnZXM6IE1lc3NhZ2VbXSk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhbmRhcmRPcGVyYXRpb25QYXJhbWV0ZXJEaWFsb2cge1xuXHRjcmVhdGVEaWFsb2coKTogUHJvbWlzZTxEaWFsb2c+O1xuXHRvcGVuRGlhbG9nKCk6IFByb21pc2U8dm9pZD47XG5cdGNsb3NlRGlhbG9nKCk6IHZvaWQ7XG5cdHdhaXRGb3JQYXJhbWV0ZXJzVmFsdWVzKCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgUHJpbWl0aXZlVHlwZT4+O1xuXHRnZXREaWFsb2coKTogRGlhbG9nIHwgdW5kZWZpbmVkO1xuXHRpc09wZW4oKTogYm9vbGVhbjtcblx0cmVzZXRTdGF0ZSgpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvcmVVSUZhY3Rvcnkge1xuXHRuZXdDcmVhdGVEaWFsb2coXG5cdFx0Y29udGV4dFRvVXBkYXRlOiBPRGF0YVY0Q29udGV4dCxcblx0XHRmaWVsZE5hbWVzOiBzdHJpbmdbXSxcblx0XHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0XHRtb2RlOiBcIlN0YW5kYWxvbmVcIiB8IFwiV2l0aE5hdmlnYXRpb25cIixcblx0XHRwYXJlbnRDb250cm9sPzogQ29udHJvbFxuXHQpOiBTdGFuZGFyZERpYWxvZztcblx0bmV3T3BlcmF0aW9uUGFyYW1ldGVyRGlhbG9nKFxuXHRcdGFjdGlvbjogQWN0aW9uLFxuXHRcdHBhcmFtZXRlcnM6IHtcblx0XHRcdGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50O1xuXHRcdFx0Y29udGV4dHM6IE9EYXRhVjRDb250ZXh0W107XG5cdFx0XHRwYXJhbWV0ZXJzVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBQcmltaXRpdmVUeXBlPjtcblx0XHRcdGRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdFx0aXNDcmVhdGVBY3Rpb24/OiBib29sZWFuO1xuXHRcdFx0bGFiZWw/OiBzdHJpbmc7XG5cdFx0XHRtb2RlbDogT0RhdGFNb2RlbDtcblx0XHRcdHZpZXc/OiBGRVZpZXc7XG5cdFx0XHRldmVudHM/OiB7XG5cdFx0XHRcdG9uUGFyYW1ldGVyRGlhbG9nT3BlbmVkPzogKCkgPT4gdm9pZDtcblx0XHRcdFx0b25QYXJhbWV0ZXJEaWFsb2dDbG9zZWQ/OiAoKSA9PiB2b2lkO1xuXHRcdFx0fTtcblx0XHR9LFxuXHRcdHBhcmFtZXRlclZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSB8IHVuZGVmaW5lZCxcblx0XHRlbnRpdHlTZXROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdFx0bWVzc2FnZUhhbmRsZXI6IE1lc3NhZ2VIYW5kbGVyXG5cdCk6IFN0YW5kYXJkT3BlcmF0aW9uUGFyYW1ldGVyRGlhbG9nO1xufVxuXG5sZXQgY3VycmVudEZhY3Rvcnk6IENvcmVVSUZhY3RvcnkgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb3JlVUlGYWN0b3J5KCk6IENvcmVVSUZhY3Rvcnkge1xuXHRpZiAoY3VycmVudEZhY3RvcnkgPT09IHVuZGVmaW5lZCkge1xuXHRcdHRocm93IG5ldyBFcnJvcihcInNhcC5mZS5jb3JlIFVJIHByb3ZpZGVyIG5vdCBkZWZpbmVkXCIpO1xuXHR9XG5cblx0cmV0dXJuIGN1cnJlbnRGYWN0b3J5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0Q29yZVVJRmFjdG9yeShwcm92aWRlcj86IENvcmVVSUZhY3RvcnkpOiB2b2lkIHtcblx0Y3VycmVudEZhY3RvcnkgPSBwcm92aWRlcjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7RUFnRUEsSUFBSUEsY0FBeUM7RUFFdEMsU0FBU0MsZ0JBQWdCQSxDQUFBLEVBQWtCO0lBQ2pELElBQUlELGNBQWMsS0FBS0UsU0FBUyxFQUFFO01BQ2pDLE1BQU0sSUFBSUMsS0FBSyxDQUFDLHFDQUFxQyxDQUFDO0lBQ3ZEO0lBRUEsT0FBT0gsY0FBYztFQUN0QjtFQUFDSSxRQUFBLENBQUFILGdCQUFBLEdBQUFBLGdCQUFBO0VBRU0sU0FBU0ksZ0JBQWdCQSxDQUFDQyxRQUF3QixFQUFRO0lBQ2hFTixjQUFjLEdBQUdNLFFBQVE7RUFDMUI7RUFBQ0YsUUFBQSxDQUFBQyxnQkFBQSxHQUFBQSxnQkFBQTtFQUFBLE9BQUFELFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -4,14 +4,10 @@ import type Dialog from "sap/m/Dialog";
4
4
  import type Event from "sap/ui/base/Event";
5
5
  import type Control from "sap/ui/core/Control";
6
6
  import type Message from "sap/ui/core/message/Message";
7
- import type { default as Context, default as ODataV4Context } from "sap/ui/model/odata/v4/Context";
7
+ import type { default as ODataV4Context } from "sap/ui/model/odata/v4/Context";
8
8
  import type ODataModel from "sap/ui/model/odata/v4/ODataModel";
9
9
  import type { FEView } from "./BaseController";
10
10
  import type MessageHandler from "./controllerextensions/MessageHandler";
11
- import type { OperationResult } from "./controllerextensions/editFlow/ODataOperation";
12
- import type { ShowActionDialogParameters } from "./controllerextensions/editFlow/operations/facade";
13
- import type { ShowMessageParameters } from "./controllerextensions/messageHandler/messageHandling";
14
- import type { StrictHandlingUtilities } from "./operationsHelper";
15
11
 
16
12
  export type ExitDialogEvent = Event<{
17
13
  accept: boolean;
@@ -26,16 +22,13 @@ export interface StandardDialog {
26
22
  displayErrorMessages(messages: Message[]): void;
27
23
  }
28
24
 
29
- export interface StandardParameterDialog {
30
- createDialog(): Promise<Dialog>;
31
- openDialog(owner: Control): Promise<PromiseSettledResult<OperationResult>[]>;
32
- }
33
-
34
25
  export interface StandardOperationParameterDialog {
35
26
  createDialog(): Promise<Dialog>;
36
27
  openDialog(): Promise<void>;
28
+ closeDialog(): void;
37
29
  waitForParametersValues(): Promise<Record<string, PrimitiveType>>;
38
30
  getDialog(): Dialog | undefined;
31
+ isOpen(): boolean;
39
32
  resetState(): void;
40
33
  }
41
34
 
@@ -47,28 +40,6 @@ export interface CoreUIFactory {
47
40
  mode: "Standalone" | "WithNavigation",
48
41
  parentControl?: Control
49
42
  ): StandardDialog;
50
- newParameterDialog(
51
- action: Action,
52
- actionContext: Context,
53
- parameters: ShowActionDialogParameters,
54
- parameterValues: Record<string, unknown>[] | undefined,
55
-
56
- entitySetName: string | undefined,
57
- view: FEView | null,
58
- messageHandler: MessageHandler,
59
- strictHandlingUtilities: StrictHandlingUtilities,
60
- callbacks: {
61
- beforeShowingMessage: (
62
- mParameters: ShowActionDialogParameters,
63
- aContexts: ODataV4Context[],
64
- oDialog: Dialog | undefined,
65
- messages: Message[],
66
- showMessageParametersIn: ShowMessageParameters,
67
- showGenericErrorMessageForChangeSet: boolean
68
- ) => ShowMessageParameters;
69
- },
70
- ignoreETag?: boolean
71
- ): StandardParameterDialog;
72
43
  newOperationParameterDialog(
73
44
  action: Action,
74
45
  parameters: {
@@ -1,12 +1,13 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2024 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/helpers/MetaPath", "sap/fe/core/helpers/StableIdHelper", "sap/ui/core/Component", "sap/ui/core/ElementRegistry"], function (Log, BuildingBlockBase, ClassSupport, HookSupport, MetaModelConverter, MetaPath, StableIdHelper, Component, ElementRegistry) {
6
6
  "use strict";
7
7
 
8
8
  var _dec, _dec2, _class, _class2, _descriptor, _BuildingBlock;
9
9
  var generate = StableIdHelper.generate;
10
+ var getMetaModelById = MetaModelConverter.getMetaModelById;
10
11
  var getInvolvedDataModelObjectsForTargetPath = MetaModelConverter.getInvolvedDataModelObjectsForTargetPath;
11
12
  var convertTypes = MetaModelConverter.convertTypes;
12
13
  var removeControllerExtensionHookHandlers = HookSupport.removeControllerExtensionHookHandlers;
@@ -117,23 +118,35 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
117
118
 
118
119
  /*
119
120
  * Get the page controller instance
121
+ * @param logError Whether to log an error if the page controller is not found
120
122
  * @returns The page controller instance
121
123
  */;
122
124
  _proto.getPageController = function getPageController() {
125
+ let logError = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
123
126
  const pageController = this._getOwner()?.getRootController?.();
124
- if (!pageController) {
127
+ if (!pageController && logError) {
125
128
  Log.error("No sap.fe.core.PageController found");
126
129
  }
127
130
  return pageController;
128
131
  };
129
132
  _proto.getMetaModel = function getMetaModel() {
130
- return this._getOwner()?.getMetaModel(this.metaModel);
133
+ const owner = this._getOwner();
134
+ if (owner?.isA("sap.fe.core.buildingBlocks.IBuildingBlockOwnerComponent")) {
135
+ let metaModel = owner?.getMetaModel(this.metaModel);
136
+ // Fallback in case they don't apply the logic for the metamodel converter
137
+ if (!metaModel && this.metaModel?.startsWith("id-")) {
138
+ metaModel = getMetaModelById(this.metaModel);
139
+ }
140
+ return metaModel;
141
+ } else {
142
+ return owner?.getMetaModel(this.metaModel);
143
+ }
131
144
  };
132
145
  _proto.destroy = function destroy(suppressInvalidate) {
133
146
  if (this.isA("sap.fe.core.controllerextensions.viewState.IViewStateContributor")) {
134
- this.getPageController()?.viewState?.deregisterStateContributor(this);
147
+ this.getPageController(false)?.viewState?.deregisterStateContributor(this);
135
148
  }
136
- if (this.getPageController()) {
149
+ if (this.getPageController(false)) {
137
150
  removeControllerExtensionHookHandlers(this, this.getPageController());
138
151
  }
139
152
  this.notifyBBObservers(true);
@@ -178,8 +191,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
178
191
  return owner?.getAppComponent();
179
192
  };
180
193
  _proto.getDataModelObjectPath = function getDataModelObjectPath(targetPath) {
181
- const owner = this._getOwner();
182
- const metaModel = owner.getMetaModel(this.metaModel);
194
+ const metaModel = this.getMetaModel();
183
195
  const targetPathToUse = targetPath ?? this.getOwnerContextPath();
184
196
  return getInvolvedDataModelObjectsForTargetPath(targetPathToUse, metaModel);
185
197
  }
@@ -200,10 +212,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
200
212
  * @returns The data model object path
201
213
  */;
202
214
  _proto.getDataModelObjectForMetaPath = function getDataModelObjectForMetaPath(metapath, contextPath) {
203
- const owner = this._getOwner();
204
- const metaModel = owner.getMetaModel(this.metaModel);
205
- let contextPathToUse = contextPath ?? this.getOwnerContextPath();
206
- contextPathToUse = contextPathToUse?.startsWith("/") ? contextPathToUse : undefined;
215
+ const metaModel = this.getMetaModel();
216
+ const contextPathToUse = this.getComputedContextPath(contextPath);
207
217
  let resolvedContextPath;
208
218
  if (contextPathToUse) {
209
219
  resolvedContextPath = contextPathToUse.endsWith("/") ? contextPathToUse : contextPathToUse + "/";
@@ -215,6 +225,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
215
225
  metaContext = metaContext ? metaContext : undefined;
216
226
  const metaPathContext = metaModel.createBindingContext(metapath, metaContext);
217
227
  return metaPathContext ? MetaModelConverter.getInvolvedDataModelObjects(metaPathContext, metaContext) : undefined;
228
+ };
229
+ _proto.getComputedContextPath = function getComputedContextPath(contextPath) {
230
+ let contextPathToUse = contextPath ?? this.getOwnerContextPath();
231
+ if (contextPathToUse && !contextPathToUse.startsWith("/")) {
232
+ contextPathToUse = this.getOwnerContextPath() + contextPathToUse;
233
+ }
234
+ return contextPathToUse;
218
235
  }
219
236
 
220
237
  /**
@@ -224,10 +241,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
224
241
  * @returns A MetaPath pointing to the target {metaPath, contextPath}
225
242
  */;
226
243
  _proto.getMetaPathObject = function getMetaPathObject(metaPath, contextPath) {
227
- const owner = this._getOwner();
228
- const metaModel = owner.getMetaModel(this.metaModel);
229
- let contextPathToUse = contextPath ?? this.getOwnerContextPath();
230
- contextPathToUse = contextPathToUse?.startsWith("/") ? contextPathToUse : undefined;
244
+ const metaModel = this.getMetaModel();
245
+ const contextPathToUse = this.getComputedContextPath(contextPath);
231
246
  if (!metaModel || !(contextPathToUse || metaPath.charAt(0) === "/")) {
232
247
  Log.warning(`No metamodel or metaPath is not reachable with ${contextPath}:${metaPath}`);
233
248
  return null;
@@ -255,6 +270,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
255
270
  _proto.getManifestWrapper = function getManifestWrapper() {
256
271
  return this._getOwner()?.getManifestWrapper();
257
272
  };
273
+ _proto.getOwnerPageDefinition = function getOwnerPageDefinition() {
274
+ return this._getOwner()?.preprocessorContext?.getDefinitionForPage();
275
+ };
258
276
  return BuildingBlock;
259
277
  }(BuildingBlockBase), _BuildingBlock._bbobserverMap = new Map(), _BuildingBlock), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "metaModel", [_dec2], {
260
278
  configurable: true,
@@ -264,4 +282,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
264
282
  }), _class2)) || _class);
265
283
  return BuildingBlock;
266
284
  }, false);
267
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJfQnVpbGRpbmdCbG9ja0Jhc2UiLCJzZXR0aW5ncyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXBwbHlpbmdTZXR0aW5ncyIsIm5vdGlmeUJCT2JzZXJ2ZXJzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseVNldHRpbmdzIiwibVNldHRpbmdzIiwib1Njb3BlIiwiX2NoZWNrSWZNZXRhZGF0YVJlYWR5IiwiZGVzdHJveSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImJib2JzZXJ2ZXJNYXAiLCJfYmJvYnNlcnZlck1hcCIsImdldCIsImdldElkIiwib2JzZXJ2ZUJCIiwib25EZXN0cm95Iiwib25BdmFpbGFibGUiLCJvYnNlcnZlQnVpbGRpbmdCbG9jayIsImlkIiwicGFyYW1ldGVycyIsImVsZW1lbnQiLCJFbGVtZW50UmVnaXN0cnkiLCJwdXNoIiwic2V0IiwiX2dldE93bmVyIiwiY29udHJvbCIsIm93bmVyIiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJpc0EiLCJnZXRQYXJlbnQiLCJnZXRQYWdlQ29udHJvbGxlciIsInBhZ2VDb250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2xsZXIiLCJMb2ciLCJlcnJvciIsImdldE1ldGFNb2RlbCIsIm1ldGFNb2RlbCIsInN1cHByZXNzSW52YWxpZGF0ZSIsInZpZXdTdGF0ZSIsImRlcmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yIiwicmVtb3ZlQ29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyIsImZyb21BcHBseVNldHRpbmdzIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsInJlZ2lzdGVyU3RhdGVDb250cmlidXRvciIsImluaXRDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzIiwiY29udGVudCIsIndhcm5pbmciLCJhdHRhY2hFdmVudE9uY2UiLCJjbG9uZSIsInNJZFN1ZmZpeCIsImFMb2NhbElkcyIsInJ1bkFzT3duZXIiLCJfb3duZXJDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwidGFyZ2V0UGF0aCIsInRhcmdldFBhdGhUb1VzZSIsImdldE93bmVyQ29udGV4dFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHNGb3JUYXJnZXRQYXRoIiwiZ2V0RnVsbENvbnRleHRQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhcGF0aCIsImNvbnRleHRQYXRoIiwiY29udGV4dFBhdGhUb1VzZSIsInN0YXJ0c1dpdGgiLCJyZXNvbHZlZENvbnRleHRQYXRoIiwiZW5kc1dpdGgiLCJjaGFyQXQiLCJFcnJvciIsIm1ldGFDb250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJtZXRhUGF0aENvbnRleHQiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJnZXRNZXRhUGF0aE9iamVjdCIsIm1ldGFQYXRoIiwiTWV0YVBhdGgiLCJjb252ZXJ0VHlwZXMiLCJlIiwiY3JlYXRlSWQiLCJfbGVuIiwic3RyaW5nUGFydHMiLCJBcnJheSIsIl9rZXkiLCJnZW5lcmF0ZSIsImdldFRyYW5zbGF0ZWRUZXh0IiwidGV4dElEIiwiZ2V0TW9kZWwiLCJnZXRUZXh0IiwiZ2V0TWFuaWZlc3RXcmFwcGVyIiwiQnVpbGRpbmdCbG9ja0Jhc2UiLCJNYXAiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkJ1aWxkaW5nQmxvY2sudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9ja0Jhc2UgZnJvbSBcInNhcC9mZS9iYXNlL0J1aWxkaW5nQmxvY2tCYXNlXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGluaXRDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzLCByZW1vdmVDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0hvb2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IEZFVmlldyB9IGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZU1vZGVsIGZyb20gXCJzYXAvZmUvY29yZS9SZXNvdXJjZU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIElWaWV3U3RhdGVDb250cmlidXRvciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvdmlld1N0YXRlL0lWaWV3U3RhdGVDb250cmlidXRvclwiO1xuaW1wb3J0IHR5cGUgTWFuaWZlc3RXcmFwcGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0V3JhcHBlclwiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgY29udmVydFR5cGVzLCBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHNGb3JUYXJnZXRQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgTWV0YVBhdGggZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWV0YVBhdGhcIjtcbmltcG9ydCB0eXBlIHsgQXV0aG9yaXplZElkQW5ub3RhdGlvbnNUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIHsgJE1hbmFnZWRPYmplY3RTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCBFbGVtZW50UmVnaXN0cnkgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRSZWdpc3RyeVwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCIuLi9BcHBDb21wb25lbnRcIjtcblxuZXhwb3J0IHR5cGUgT2JzZXJ2ZUJ1aWxkaW5nQmxvY2sgPSB7XG5cdG9uQXZhaWxhYmxlPzogKGJiOiBVSTVFbGVtZW50KSA9PiB2b2lkO1xuXHRvbkRlc3Ryb3k/OiAoYmI6IFVJNUVsZW1lbnQpID0+IHZvaWQ7XG59O1xuLyoqXG4gKiBEZWZpbmVzIGEgY29udHJvbCB0aGF0IHdpbGwgbm90IGV4aXN0IGluIHRoZSBET00uXG4gKiBJbnN0ZWFkLCBvbmx5IGl0cyBjaGlsZCB3aWxsIGJlIHRoZXJlIGFuZCB0aGlzIGNvbnRyb2wgd2lsbCBmb3J3YXJkIGFsbCBET00gcmVsYXRlZCBpbnN0cnVjdGlvbiB0byBpdC5cbiAqIEBleHBlcmltZW50YWxcbiAqIEBzaW5jZSAxLjEyMS4wXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLkJ1aWxkaW5nQmxvY2tcIilcbmNsYXNzIEJ1aWxkaW5nQmxvY2s8VCBleHRlbmRzIFVJNUVsZW1lbnQgPSBDb250cm9sLCBLIGV4dGVuZHMgb2JqZWN0ID0ge30+IGV4dGVuZHMgQnVpbGRpbmdCbG9ja0Jhc2U8VCwgSz4ge1xuXHQvKipcblx0ICogVGhlIG1ldGFtb2RlbCBuYW1lIG9yIGlkIHRvIGJlIHVzZWQgZm9yIHRoaXMgYnVpbGRpbmcgYmxvY2tcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0bWV0YU1vZGVsPzogc3RyaW5nO1xuXG5cdHByb3RlY3RlZCBfYXBwbHlpbmdTZXR0aW5ncyA9IGZhbHNlO1xuXG5cdHByaXZhdGUgc3RhdGljIF9iYm9ic2VydmVyTWFwOiBNYXA8c3RyaW5nLCBPYnNlcnZlQnVpbGRpbmdCbG9ja1tdPiA9IG5ldyBNYXAoKTtcblxuXHRjb25zdHJ1Y3RvcihzZXR0aW5ncz86IHN0cmluZyB8IFByb3BlcnRpZXNPZjxCdWlsZGluZ0Jsb2NrQmFzZTxUPj4sIG90aGVycz86IFByb3BlcnRpZXNPZjxCdWlsZGluZ0Jsb2NrQmFzZTxUPj4pIHtcblx0XHRzdXBlcihzZXR0aW5ncywgb3RoZXJzKTtcblx0XHR0aGlzLm5vdGlmeUJCT2JzZXJ2ZXJzKCk7XG5cdH1cblxuXHRvdmVycmlkZSBhcHBseVNldHRpbmdzKG1TZXR0aW5nczogJE1hbmFnZWRPYmplY3RTZXR0aW5ncywgb1Njb3BlPzogb2JqZWN0KTogdGhpcyB7XG5cdFx0dGhpcy5fYXBwbHlpbmdTZXR0aW5ncyA9IHRydWU7XG5cdFx0c3VwZXIuYXBwbHlTZXR0aW5ncyhtU2V0dGluZ3MsIG9TY29wZSk7XG5cdFx0dGhpcy5fYXBwbHlpbmdTZXR0aW5ncyA9IGZhbHNlO1xuXHRcdHRoaXMuX2NoZWNrSWZNZXRhZGF0YVJlYWR5KHRydWUpO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRub3RpZnlCQk9ic2VydmVycyhkZXN0cm95ID0gZmFsc2UpOiB2b2lkIHtcblx0XHRjb25zdCBiYm9ic2VydmVyTWFwID0gQnVpbGRpbmdCbG9jay5fYmJvYnNlcnZlck1hcC5nZXQodGhpcy5nZXRJZCgpKTtcblx0XHRpZiAoYmJvYnNlcnZlck1hcCAmJiBiYm9ic2VydmVyTWFwLmxlbmd0aCA+IDApIHtcblx0XHRcdGZvciAoY29uc3Qgb2JzZXJ2ZUJCIG9mIGJib2JzZXJ2ZXJNYXApIHtcblx0XHRcdFx0aWYgKGRlc3Ryb3kpIHtcblx0XHRcdFx0XHRpZiAob2JzZXJ2ZUJCLm9uRGVzdHJveSkge1xuXHRcdFx0XHRcdFx0b2JzZXJ2ZUJCLm9uRGVzdHJveSh0aGlzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAob2JzZXJ2ZUJCLm9uQXZhaWxhYmxlKSB7XG5cdFx0XHRcdFx0b2JzZXJ2ZUJCLm9uQXZhaWxhYmxlKHRoaXMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFsbG93cyB0byBvYnNlcnZlIGJ1aWxkaW5nIGJsb2NrIG9uY2UgaXQgaXMgY3JlYXRlZC5cblx0ICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgYnVpbGRpbmcgYmxvY2sgd2hpY2ggd2lsbCBiZSBvYnNlcnZlZFxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycyBUaGUgaWQgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIHdoaWNoIGlzIGJlaW5nIHJlcXVzdGVkXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLm9uQXZhaWxhYmxlIENhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aXRoIHRoZSBpbnN0YW5jZSBvZiB0aGUgQkIgd2hlbiBpdCBpcyBhdmFpbGFibGVcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMub25EZXN0cm95IENhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aXRoIHRoZSBpbnN0YW5jZSBvZiB0aGUgQkIgd2hlbiBpdCBpcyBkZXN0cm95ZWRcblx0ICovXG5cdHN0YXRpYyBvYnNlcnZlQnVpbGRpbmdCbG9jayhpZDogc3RyaW5nLCBwYXJhbWV0ZXJzOiBPYnNlcnZlQnVpbGRpbmdCbG9jayk6IHZvaWQge1xuXHRcdC8vaWYgKHBhcmFtZXRlcnMpXG5cdFx0Y29uc3QgZWxlbWVudCA9IEVsZW1lbnRSZWdpc3RyeS5nZXQoaWQpO1xuXHRcdC8vIGlmIHRoZSBlbGVtZW50IGlzIGFscmVhZHkgcmVnaXN0ZXJlZFxuXHRcdGlmIChlbGVtZW50KSB7XG5cdFx0XHRpZiAocGFyYW1ldGVycy5vbkF2YWlsYWJsZSkge1xuXHRcdFx0XHRwYXJhbWV0ZXJzLm9uQXZhaWxhYmxlKGVsZW1lbnQpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBiYm9ic2VydmVyTWFwID0gQnVpbGRpbmdCbG9jay5fYmJvYnNlcnZlck1hcC5nZXQoaWQpO1xuXHRcdFx0aWYgKGJib2JzZXJ2ZXJNYXApIHtcblx0XHRcdFx0YmJvYnNlcnZlck1hcC5wdXNoKHBhcmFtZXRlcnMpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0QnVpbGRpbmdCbG9jay5fYmJvYnNlcnZlck1hcC5zZXQoaWQsIFtwYXJhbWV0ZXJzXSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgaW5zdGFuY2Ugb2YgYSBidWlsZGluZyBibG9jayBiYXNlZCBvbmNlIGl0IGlzIHJlZ2lzdGVyZWQuXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIHdoaWNoIGlzIGJlaW5nIHJlcXVzdGVkXG5cdCAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2ZWQgd2l0aCBhbiBpbnN0YW5jZSBvZiB0aGUgYnVpbGRpbmcgYmxvY2sgb25jZSBpdCBpcyByZWdpc3RlcmVkL2luc3RhbnRpZWQuXG5cdCAqIFx0IFRoZSBwcm9taXNlIGlzIHJlc29sdmVkIHdoZW4gdGhlIGJ1aWxkaW5nIGJsb2NrIGlzIGludGFudGllZCBoZW5jZSBpdCByZWNvbW1lbmRlZCB0byBvbmx5IGF3YWl0IG9uIHRoZSBwcm9taXNlXG5cdCAqIFx0IHdoZW4gaXQgaXMga25vd24gdGhhdCB0aGUgYnVpbGRpbmcgYmxvY2sgd2lsbCBiZSBhdmFpbGFibGUuIEluIGNhc2VzIGhlcmUgdGhlIGJ1aWxkaW5nIGJsb2NrIG1pZ2h0IG5vdCBiZSBhdmFpbGFibGUsXG5cdCAqIFx0IGZvciBleGFtcGxlIGJlY3Vhc2Ugb2YgbGF6eSBsb2FkaW5nLCB0aGVuIGl0IGlzIHJlY29tbWVuZGVkIG5vdCB0byBhd2FpdCBvbiB0aGUgcHJvbWlzZSBhbmQgaW5zdGVhZCB1c2UgUHJvbWlzZS50aGVuKCkuXG5cdCAqL1xuXG5cdF9nZXRPd25lcigpOiBUZW1wbGF0ZUNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG5cdFx0Ly9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0XHRsZXQgY29udHJvbDogQ29udHJvbCB8IHVuZGVmaW5lZCA9IHRoaXM7XG5cdFx0bGV0IG93bmVyID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKGNvbnRyb2wpO1xuXHRcdHdoaWxlICghb3duZXIgJiYgY29udHJvbCAmJiAhY29udHJvbC5pc0E8RkVWaWV3PihcInNhcC51aS5jb3JlLm12Yy5WaWV3XCIpKSB7XG5cdFx0XHRjb250cm9sID0gY29udHJvbC5nZXRQYXJlbnQoKSBhcyBDb250cm9sIHwgdW5kZWZpbmVkO1xuXHRcdFx0aWYgKGNvbnRyb2wpIHtcblx0XHRcdFx0b3duZXIgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IoY29udHJvbCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChvd25lcj8uaXNBPFRlbXBsYXRlQ29tcG9uZW50PihcInNhcC5mZS5jb3JlLlRlbXBsYXRlQ29tcG9uZW50XCIpKSB7XG5cdFx0XHRyZXR1cm4gb3duZXI7XG5cdFx0fVxuXHRcdGlmIChvd25lcj8uaXNBPFRlbXBsYXRlQ29tcG9uZW50PihcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLklCdWlsZGluZ0Jsb2NrT3duZXJDb21wb25lbnRcIikpIHtcblx0XHRcdHJldHVybiBvd25lcjtcblx0XHR9XG5cdH1cblxuXHQvKlxuXHQgKiBHZXQgdGhlIHBhZ2UgY29udHJvbGxlciBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBUaGUgcGFnZSBjb250cm9sbGVyIGluc3RhbmNlXG5cdCAqL1xuXHRnZXRQYWdlQ29udHJvbGxlcigpOiBQYWdlQ29udHJvbGxlciB7XG5cdFx0Y29uc3QgcGFnZUNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcj8uKCk7XG5cdFx0aWYgKCFwYWdlQ29udHJvbGxlcikge1xuXHRcdFx0TG9nLmVycm9yKFwiTm8gc2FwLmZlLmNvcmUuUGFnZUNvbnRyb2xsZXIgZm91bmRcIik7XG5cdFx0fVxuXHRcdHJldHVybiBwYWdlQ29udHJvbGxlciE7XG5cdH1cblxuXHRnZXRNZXRhTW9kZWwoKTogT0RhdGFNZXRhTW9kZWwgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLl9nZXRPd25lcigpPy5nZXRNZXRhTW9kZWwodGhpcy5tZXRhTW9kZWwpO1xuXHR9XG5cblx0b3ZlcnJpZGUgZGVzdHJveShzdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuaXNBPElWaWV3U3RhdGVDb250cmlidXRvcjx1bmtub3duPiAmIE1hbmFnZWRPYmplY3Q+KFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMudmlld1N0YXRlLklWaWV3U3RhdGVDb250cmlidXRvclwiKSkge1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy52aWV3U3RhdGU/LmRlcmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yKHRoaXMpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5nZXRQYWdlQ29udHJvbGxlcigpKSB7XG5cdFx0XHRyZW1vdmVDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzKHRoaXMsIHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSEpO1xuXHRcdH1cblx0XHR0aGlzLm5vdGlmeUJCT2JzZXJ2ZXJzKHRydWUpO1xuXHRcdHN1cGVyLmRlc3Ryb3koc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0fVxuXG5cdF9jaGVja0lmTWV0YWRhdGFSZWFkeShmcm9tQXBwbHlTZXR0aW5ncyA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcikge1xuXHRcdFx0dGhpcy5vbk1ldGFkYXRhQXZhaWxhYmxlKG93bmVyKTtcblx0XHRcdGlmIChcblx0XHRcdFx0dGhpcy5pc0E8SVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPHVua25vd24+ICYgTWFuYWdlZE9iamVjdD4oXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy52aWV3U3RhdGUucmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yKHRoaXMpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSkge1xuXHRcdFx0XHRpbml0Q29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyh0aGlzLCB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkhKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCFmcm9tQXBwbHlTZXR0aW5ncyAmJiAhdGhpcy5jb250ZW50KSB7XG5cdFx0XHRcdC8vIEluIGNhc2UgY291bGRuJ3QgY3JlYXRlIHRoZSBjb250ZW50IGR1cmluZyB0aGUgYXBwbHlTZXR0aW5ncywgdHJ5IGFnYWluXG5cdFx0XHRcdExvZy53YXJuaW5nKFxuXHRcdFx0XHRcdFwiVGhlIGJ1aWxkaW5nIGJsb2NrIHdhcyBub3QgY3JlYXRlZCB3aXRoaW4gYW4gRXh0ZW5zaW9uQVBJLnJ1bldpdGhGUE1Db250ZXh0IGNhbGwsIGZvciBwZXJmb3JtYW5jZSByZWFzb24gaXQncyByZWNvbW1lbmRlZCB0byBkbyBzby5cIixcblx0XHRcdFx0XHR0aGlzIGFzIHVua25vd24gYXMgc3RyaW5nXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuYXR0YWNoRXZlbnRPbmNlKFwibW9kZWxDb250ZXh0Q2hhbmdlXCIsIGZ1bmN0aW9uICh0aGlzOiBCdWlsZGluZ0Jsb2NrKTogdm9pZCB7XG5cdFx0XHRcdHRoaXMuX2NoZWNrSWZNZXRhZGF0YVJlYWR5KCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRjbG9uZShzSWRTdWZmaXg6IHN0cmluZywgYUxvY2FsSWRzOiBzdHJpbmdbXSk6IHRoaXMge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRpZiAob3duZXIpIHtcblx0XHRcdHJldHVybiBvd25lci5ydW5Bc093bmVyKCgpID0+IHtcblx0XHRcdFx0cmV0dXJuIHN1cGVyLmNsb25lKHNJZFN1ZmZpeCwgYUxvY2FsSWRzKTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gc3VwZXIuY2xvbmUoc0lkU3VmZml4LCBhTG9jYWxJZHMpO1xuXHRcdH1cblx0fVxuXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoX293bmVyQ29tcG9uZW50OiBUZW1wbGF0ZUNvbXBvbmVudCk6IHZvaWQge1xuXHRcdC8vIFRvIGJlIG92ZXJyaWRlbiBieSB0aGUgY2hpbGQgY2xhc3Ncblx0fVxuXG5cdGdldEFwcENvbXBvbmVudCgpOiBBcHBDb21wb25lbnQgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRyZXR1cm4gb3duZXI/LmdldEFwcENvbXBvbmVudCgpO1xuXHR9XG5cblx0Z2V0RGF0YU1vZGVsT2JqZWN0UGF0aDxOPih0YXJnZXRQYXRoPzogc3RyaW5nKTogRGF0YU1vZGVsT2JqZWN0UGF0aDxOPiB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpITtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBvd25lci5nZXRNZXRhTW9kZWwodGhpcy5tZXRhTW9kZWwpO1xuXHRcdGNvbnN0IHRhcmdldFBhdGhUb1VzZSA9IHRhcmdldFBhdGggPz8gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCk7XG5cdFx0cmV0dXJuIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgodGFyZ2V0UGF0aFRvVXNlISwgbWV0YU1vZGVsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRleHQgcGF0aCBmcm9tIHRoZSBvd25lciBjb21wb25lbnQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHBhdGhcblx0ICovXG5cdGdldE93bmVyQ29udGV4dFBhdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCkhO1xuXHRcdHJldHVybiBvd25lci5nZXRGdWxsQ29udGV4dFBhdGgodGhpcy5tZXRhTW9kZWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZGF0YSBtb2RlbCBvYmplY3QgZm9yIHRoZSBnaXZlbiBtZXRhcGF0aCBhbmQgb3B0aW9uYWwgY29udGV4dFBhdGguXG5cdCAqIEBwYXJhbSBtZXRhcGF0aFxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICogQHJldHVybnMgVGhlIGRhdGEgbW9kZWwgb2JqZWN0IHBhdGhcblx0ICovXG5cdGdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4oXG5cdFx0bWV0YXBhdGg6IHN0cmluZyxcblx0XHRjb250ZXh0UGF0aD86IHN0cmluZ1xuXHQpOiBEYXRhTW9kZWxPYmplY3RQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKSE7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gb3duZXIuZ2V0TWV0YU1vZGVsKHRoaXMubWV0YU1vZGVsKTtcblx0XHRsZXQgY29udGV4dFBhdGhUb1VzZSA9IGNvbnRleHRQYXRoID8/IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpO1xuXHRcdGNvbnRleHRQYXRoVG9Vc2UgPSBjb250ZXh0UGF0aFRvVXNlPy5zdGFydHNXaXRoKFwiL1wiKSA/IGNvbnRleHRQYXRoVG9Vc2UgOiB1bmRlZmluZWQ7XG5cdFx0bGV0IHJlc29sdmVkQ29udGV4dFBhdGg7XG5cdFx0aWYgKGNvbnRleHRQYXRoVG9Vc2UpIHtcblx0XHRcdHJlc29sdmVkQ29udGV4dFBhdGggPSBjb250ZXh0UGF0aFRvVXNlLmVuZHNXaXRoKFwiL1wiKSA/IGNvbnRleHRQYXRoVG9Vc2UgOiBjb250ZXh0UGF0aFRvVXNlICsgXCIvXCI7XG5cdFx0fVxuXHRcdGlmICghbWV0YU1vZGVsIHx8ICEocmVzb2x2ZWRDb250ZXh0UGF0aCB8fCBtZXRhcGF0aC5jaGFyQXQoMCkgPT09IFwiL1wiKSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiTm8gbWV0YW1vZGVsIG9yIG1ldGFwYXRoIGlzIG5vdCByZWFjaGFibGUgd2l0aCBjb250ZXh0UGF0aFwiKTtcblx0XHR9XG5cdFx0bGV0IG1ldGFDb250ZXh0ID0gcmVzb2x2ZWRDb250ZXh0UGF0aCA/IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChyZXNvbHZlZENvbnRleHRQYXRoKSA6IHVuZGVmaW5lZDtcblx0XHRtZXRhQ29udGV4dCA9IG1ldGFDb250ZXh0ID8gbWV0YUNvbnRleHQgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgbWV0YVBhdGhDb250ZXh0ID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1ldGFwYXRoLCBtZXRhQ29udGV4dCk7XG5cdFx0cmV0dXJuIG1ldGFQYXRoQ29udGV4dFxuXHRcdFx0PyBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4obWV0YVBhdGhDb250ZXh0LCBtZXRhQ29udGV4dClcblx0XHRcdDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgTWV0YVBhdGggb2JqZWN0IGZvciB0aGUgZ2l2ZW4gbWV0YVBhdGggYW5kIG9wdGlvbmFsIGNvbnRleHRQYXRoLlxuXHQgKiBAcGFyYW0gbWV0YVBhdGhcblx0ICogQHBhcmFtIGNvbnRleHRQYXRoXG5cdCAqIEByZXR1cm5zIEEgTWV0YVBhdGggcG9pbnRpbmcgdG8gdGhlIHRhcmdldCB7bWV0YVBhdGgsIGNvbnRleHRQYXRofVxuXHQgKi9cblx0Z2V0TWV0YVBhdGhPYmplY3Q8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPihtZXRhUGF0aDogc3RyaW5nLCBjb250ZXh0UGF0aD86IHN0cmluZyk6IE1ldGFQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4gfCBudWxsIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCkhO1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IG93bmVyLmdldE1ldGFNb2RlbCh0aGlzLm1ldGFNb2RlbCk7XG5cdFx0bGV0IGNvbnRleHRQYXRoVG9Vc2UgPSBjb250ZXh0UGF0aCA/PyB0aGlzLmdldE93bmVyQ29udGV4dFBhdGgoKTtcblx0XHRjb250ZXh0UGF0aFRvVXNlID0gY29udGV4dFBhdGhUb1VzZT8uc3RhcnRzV2l0aChcIi9cIikgPyBjb250ZXh0UGF0aFRvVXNlIDogdW5kZWZpbmVkO1xuXHRcdGlmICghbWV0YU1vZGVsIHx8ICEoY29udGV4dFBhdGhUb1VzZSB8fCBtZXRhUGF0aC5jaGFyQXQoMCkgPT09IFwiL1wiKSkge1xuXHRcdFx0TG9nLndhcm5pbmcoYE5vIG1ldGFtb2RlbCBvciBtZXRhUGF0aCBpcyBub3QgcmVhY2hhYmxlIHdpdGggJHtjb250ZXh0UGF0aH06JHttZXRhUGF0aH1gKTtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIG5ldyBNZXRhUGF0aChjb252ZXJ0VHlwZXMobWV0YU1vZGVsKSwgbWV0YVBhdGgsIGNvbnRleHRQYXRoVG9Vc2UhKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRMb2cud2FybmluZyhgTm8gbWV0YW1vZGVsIG9yIG1ldGFQYXRoIGlzIG5vdCByZWFjaGFibGUgd2l0aCAke2NvbnRleHRQYXRofToke21ldGFQYXRofWApO1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHR9XG5cblx0cHJvdGVjdGVkIGNyZWF0ZUlkKC4uLnN0cmluZ1BhcnRzOiAoc3RyaW5nIHwgdW5kZWZpbmVkIHwgRGF0YU1vZGVsT2JqZWN0UGF0aDxBdXRob3JpemVkSWRBbm5vdGF0aW9uc1R5cGU+KVtdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHQvLyBJZiB0aGUgY2hpbGQgaW5zdGFuY2UgaGFzIGFuIElEIHByb3BlcnR5IHVzZSBpdCBvdGhlcndpc2UgcmV0dXJuIHVuZGVmaW5lZFxuXHRcdGlmICh0aGlzLmdldElkKCkpIHtcblx0XHRcdHJldHVybiBnZW5lcmF0ZShbdGhpcy5nZXRJZCgpLCAuLi5zdHJpbmdQYXJ0c10pO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Z2V0VHJhbnNsYXRlZFRleHQodGV4dElEOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiB1bmtub3duW10sIG1ldGFQYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0KCh0aGlzLmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikgPz8gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKSkgYXMgUmVzb3VyY2VNb2RlbCk/LmdldFRleHQoXG5cdFx0XHRcdHRleHRJRCxcblx0XHRcdFx0cGFyYW1ldGVycyxcblx0XHRcdFx0bWV0YVBhdGhcblx0XHRcdCkgfHwgdGV4dElEXG5cdFx0KTtcblx0fVxuXG5cdGdldE1hbmlmZXN0V3JhcHBlcigpOiBNYW5pZmVzdFdyYXBwZXIgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLl9nZXRPd25lcigpPy5nZXRNYW5pZmVzdFdyYXBwZXIoKTtcblx0fVxufVxuXG5pbnRlcmZhY2UgQnVpbGRpbmdCbG9jazxUIGV4dGVuZHMgVUk1RWxlbWVudD4ge1xuXHRnZXRDb250ZW50KCk6IFQgfCB1bmRlZmluZWQ7XG5cdGdldEFyaWFMYWJlbGxlZEJ5KCk6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBCdWlsZGluZ0Jsb2NrO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQThCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQU5BLElBUU1BLGFBQWEsSUFBQUMsSUFBQSxHQURsQkMsY0FBYyxDQUFDLDBDQUEwQyxDQUFDLEVBQUFDLEtBQUEsR0FLekRDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUosSUFBQSxDQUFBSyxNQUFBLElBQUFDLE9BQUEsSUFBQUMsY0FBQSwwQkFBQUMsa0JBQUE7SUFPN0IsU0FBQVQsY0FBWVUsUUFB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
285
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJfQnVpbGRpbmdCbG9ja0Jhc2UiLCJzZXR0aW5ncyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXBwbHlpbmdTZXR0aW5ncyIsIm5vdGlmeUJCT2JzZXJ2ZXJzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseVNldHRpbmdzIiwibVNldHRpbmdzIiwib1Njb3BlIiwiX2NoZWNrSWZNZXRhZGF0YVJlYWR5IiwiZGVzdHJveSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImJib2JzZXJ2ZXJNYXAiLCJfYmJvYnNlcnZlck1hcCIsImdldCIsImdldElkIiwib2JzZXJ2ZUJCIiwib25EZXN0cm95Iiwib25BdmFpbGFibGUiLCJvYnNlcnZlQnVpbGRpbmdCbG9jayIsImlkIiwicGFyYW1ldGVycyIsImVsZW1lbnQiLCJFbGVtZW50UmVnaXN0cnkiLCJwdXNoIiwic2V0IiwiX2dldE93bmVyIiwiY29udHJvbCIsIm93bmVyIiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJpc0EiLCJnZXRQYXJlbnQiLCJnZXRQYWdlQ29udHJvbGxlciIsImxvZ0Vycm9yIiwicGFnZUNvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbGxlciIsIkxvZyIsImVycm9yIiwiZ2V0TWV0YU1vZGVsIiwibWV0YU1vZGVsIiwic3RhcnRzV2l0aCIsImdldE1ldGFNb2RlbEJ5SWQiLCJzdXBwcmVzc0ludmFsaWRhdGUiLCJ2aWV3U3RhdGUiLCJkZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvciIsInJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMiLCJmcm9tQXBwbHlTZXR0aW5ncyIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJyZWdpc3RlclN0YXRlQ29udHJpYnV0b3IiLCJpbml0Q29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyIsImNvbnRlbnQiLCJ3YXJuaW5nIiwiYXR0YWNoRXZlbnRPbmNlIiwiY2xvbmUiLCJzSWRTdWZmaXgiLCJhTG9jYWxJZHMiLCJydW5Bc093bmVyIiwiX293bmVyQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsInRhcmdldFBhdGgiLCJ0YXJnZXRQYXRoVG9Vc2UiLCJnZXRPd25lckNvbnRleHRQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzRm9yVGFyZ2V0UGF0aCIsImdldEZ1bGxDb250ZXh0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoIiwibWV0YXBhdGgiLCJjb250ZXh0UGF0aCIsImNvbnRleHRQYXRoVG9Vc2UiLCJnZXRDb21wdXRlZENvbnRleHRQYXRoIiwicmVzb2x2ZWRDb250ZXh0UGF0aCIsImVuZHNXaXRoIiwiY2hhckF0IiwiRXJyb3IiLCJtZXRhQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwibWV0YVBhdGhDb250ZXh0IiwiTWV0YU1vZGVsQ29udmVydGVyIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZ2V0TWV0YVBhdGhPYmplY3QiLCJtZXRhUGF0aCIsIk1ldGFQYXRoIiwiY29udmVydFR5cGVzIiwiZSIsImNyZWF0ZUlkIiwiX2xlbiIsInN0cmluZ1BhcnRzIiwiQXJyYXkiLCJfa2V5IiwiZ2VuZXJhdGUiLCJnZXRUcmFuc2xhdGVkVGV4dCIsInRleHRJRCIsImdldE1vZGVsIiwiZ2V0VGV4dCIsImdldE1hbmlmZXN0V3JhcHBlciIsImdldE93bmVyUGFnZURlZmluaXRpb24iLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiZ2V0RGVmaW5pdGlvbkZvclBhZ2UiLCJCdWlsZGluZ0Jsb2NrQmFzZSIsIk1hcCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQnVpbGRpbmdCbG9jay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrQmFzZSBmcm9tIFwic2FwL2ZlL2Jhc2UvQnVpbGRpbmdCbG9ja0Jhc2VcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgaW5pdENvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMsIHJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvSG9va1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy92aWV3U3RhdGUvSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgdHlwZSBNYW5pZmVzdFdyYXBwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RXcmFwcGVyXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0VHlwZXMsIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgsIGdldE1ldGFNb2RlbEJ5SWQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRGVmaW5pdGlvblBhZ2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZGVmaW5pdGlvbi9GRURlZmluaXRpb25cIjtcbmltcG9ydCBNZXRhUGF0aCBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9NZXRhUGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBBdXRob3JpemVkSWRBbm5vdGF0aW9uc1R5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgeyAkTWFuYWdlZE9iamVjdFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEVsZW1lbnRSZWdpc3RyeSBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFJlZ2lzdHJ5XCI7XG5cbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwiLi4vQXBwQ29tcG9uZW50XCI7XG5cbmV4cG9ydCB0eXBlIE9ic2VydmVCdWlsZGluZ0Jsb2NrID0ge1xuXHRvbkF2YWlsYWJsZT86IChiYjogVUk1RWxlbWVudCkgPT4gdm9pZDtcblx0b25EZXN0cm95PzogKGJiOiBVSTVFbGVtZW50KSA9PiB2b2lkO1xufTtcbi8qKlxuICogRGVmaW5lcyBhIGNvbnRyb2wgdGhhdCB3aWxsIG5vdCBleGlzdCBpbiB0aGUgRE9NLlxuICogSW5zdGVhZCwgb25seSBpdHMgY2hpbGQgd2lsbCBiZSB0aGVyZSBhbmQgdGhpcyBjb250cm9sIHdpbGwgZm9yd2FyZCBhbGwgRE9NIHJlbGF0ZWQgaW5zdHJ1Y3Rpb24gdG8gaXQuXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBAc2luY2UgMS4xMjEuMFxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5idWlsZGluZ0Jsb2Nrcy5CdWlsZGluZ0Jsb2NrXCIpXG5jbGFzcyBCdWlsZGluZ0Jsb2NrPFQgZXh0ZW5kcyBVSTVFbGVtZW50ID0gQ29udHJvbCwgSyBleHRlbmRzIG9iamVjdCA9IHt9PiBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlPFQsIEs+IHtcblx0LyoqXG5cdCAqIFRoZSBtZXRhbW9kZWwgbmFtZSBvciBpZCB0byBiZSB1c2VkIGZvciB0aGlzIGJ1aWxkaW5nIGJsb2NrXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdG1ldGFNb2RlbD86IHN0cmluZztcblxuXHRwcm90ZWN0ZWQgX2FwcGx5aW5nU2V0dGluZ3MgPSBmYWxzZTtcblxuXHRwcml2YXRlIHN0YXRpYyBfYmJvYnNlcnZlck1hcDogTWFwPHN0cmluZywgT2JzZXJ2ZUJ1aWxkaW5nQmxvY2tbXT4gPSBuZXcgTWFwKCk7XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiBzdHJpbmcgfCBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+LCBvdGhlcnM/OiBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+KSB7XG5cdFx0c3VwZXIoc2V0dGluZ3MsIG90aGVycyk7XG5cdFx0dGhpcy5ub3RpZnlCQk9ic2VydmVycygpO1xuXHR9XG5cblx0b3ZlcnJpZGUgYXBwbHlTZXR0aW5ncyhtU2V0dGluZ3M6ICRNYW5hZ2VkT2JqZWN0U2V0dGluZ3MsIG9TY29wZT86IG9iamVjdCk6IHRoaXMge1xuXHRcdHRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgPSB0cnVlO1xuXHRcdHN1cGVyLmFwcGx5U2V0dGluZ3MobVNldHRpbmdzLCBvU2NvcGUpO1xuXHRcdHRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgPSBmYWxzZTtcblx0XHR0aGlzLl9jaGVja0lmTWV0YWRhdGFSZWFkeSh0cnVlKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0bm90aWZ5QkJPYnNlcnZlcnMoZGVzdHJveSA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3QgYmJvYnNlcnZlck1hcCA9IEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuZ2V0KHRoaXMuZ2V0SWQoKSk7XG5cdFx0aWYgKGJib2JzZXJ2ZXJNYXAgJiYgYmJvYnNlcnZlck1hcC5sZW5ndGggPiAwKSB7XG5cdFx0XHRmb3IgKGNvbnN0IG9ic2VydmVCQiBvZiBiYm9ic2VydmVyTWFwKSB7XG5cdFx0XHRcdGlmIChkZXN0cm95KSB7XG5cdFx0XHRcdFx0aWYgKG9ic2VydmVCQi5vbkRlc3Ryb3kpIHtcblx0XHRcdFx0XHRcdG9ic2VydmVCQi5vbkRlc3Ryb3kodGhpcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKG9ic2VydmVCQi5vbkF2YWlsYWJsZSkge1xuXHRcdFx0XHRcdG9ic2VydmVCQi5vbkF2YWlsYWJsZSh0aGlzKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBbGxvd3MgdG8gb2JzZXJ2ZSBidWlsZGluZyBibG9jayBvbmNlIGl0IGlzIGNyZWF0ZWQuXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIHdoaWNoIHdpbGwgYmUgb2JzZXJ2ZWRcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgVGhlIGlkIG9mIHRoZSBidWlsZGluZyBibG9jayB3aGljaCBpcyBiZWluZyByZXF1c3RlZFxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5vbkF2YWlsYWJsZSBDYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgaW5zdGFuY2Ugb2YgdGhlIEJCIHdoZW4gaXQgaXMgYXZhaWxhYmxlXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLm9uRGVzdHJveSBDYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgaW5zdGFuY2Ugb2YgdGhlIEJCIHdoZW4gaXQgaXMgZGVzdHJveWVkXG5cdCAqL1xuXHRzdGF0aWMgb2JzZXJ2ZUJ1aWxkaW5nQmxvY2soaWQ6IHN0cmluZywgcGFyYW1ldGVyczogT2JzZXJ2ZUJ1aWxkaW5nQmxvY2spOiB2b2lkIHtcblx0XHQvL2lmIChwYXJhbWV0ZXJzKVxuXHRcdGNvbnN0IGVsZW1lbnQgPSBFbGVtZW50UmVnaXN0cnkuZ2V0KGlkKTtcblx0XHQvLyBpZiB0aGUgZWxlbWVudCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRcblx0XHRpZiAoZWxlbWVudCkge1xuXHRcdFx0aWYgKHBhcmFtZXRlcnMub25BdmFpbGFibGUpIHtcblx0XHRcdFx0cGFyYW1ldGVycy5vbkF2YWlsYWJsZShlbGVtZW50KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYmJvYnNlcnZlck1hcCA9IEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuZ2V0KGlkKTtcblx0XHRcdGlmIChiYm9ic2VydmVyTWFwKSB7XG5cdFx0XHRcdGJib2JzZXJ2ZXJNYXAucHVzaChwYXJhbWV0ZXJzKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuc2V0KGlkLCBbcGFyYW1ldGVyc10pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGluc3RhbmNlIG9mIGEgYnVpbGRpbmcgYmxvY2sgYmFzZWQgb25jZSBpdCBpcyByZWdpc3RlcmVkLlxuXHQgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBidWlsZGluZyBibG9jayB3aGljaCBpcyBiZWluZyByZXF1c3RlZFxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmVkIHdpdGggYW4gaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIG9uY2UgaXQgaXMgcmVnaXN0ZXJlZC9pbnN0YW50aWVkLlxuXHQgKiBcdCBUaGUgcHJvbWlzZSBpcyByZXNvbHZlZCB3aGVuIHRoZSBidWlsZGluZyBibG9jayBpcyBpbnRhbnRpZWQgaGVuY2UgaXQgcmVjb21tZW5kZWQgdG8gb25seSBhd2FpdCBvbiB0aGUgcHJvbWlzZVxuXHQgKiBcdCB3aGVuIGl0IGlzIGtub3duIHRoYXQgdGhlIGJ1aWxkaW5nIGJsb2NrIHdpbGwgYmUgYXZhaWxhYmxlLiBJbiBjYXNlcyBoZXJlIHRoZSBidWlsZGluZyBibG9jayBtaWdodCBub3QgYmUgYXZhaWxhYmxlLFxuXHQgKiBcdCBmb3IgZXhhbXBsZSBiZWN1YXNlIG9mIGxhenkgbG9hZGluZywgdGhlbiBpdCBpcyByZWNvbW1lbmRlZCBub3QgdG8gYXdhaXQgb24gdGhlIHByb21pc2UgYW5kIGluc3RlYWQgdXNlIFByb21pc2UudGhlbigpLlxuXHQgKi9cblxuXHRfZ2V0T3duZXIoKTogVGVtcGxhdGVDb21wb25lbnQgfCB1bmRlZmluZWQge1xuXHRcdC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG5cdFx0bGV0IGNvbnRyb2w6IENvbnRyb2wgfCB1bmRlZmluZWQgPSB0aGlzO1xuXHRcdGxldCBvd25lciA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcihjb250cm9sKTtcblx0XHR3aGlsZSAoIW93bmVyICYmIGNvbnRyb2wgJiYgIWNvbnRyb2wuaXNBPEZFVmlldz4oXCJzYXAudWkuY29yZS5tdmMuVmlld1wiKSkge1xuXHRcdFx0Y29udHJvbCA9IGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgQ29udHJvbCB8IHVuZGVmaW5lZDtcblx0XHRcdGlmIChjb250cm9sKSB7XG5cdFx0XHRcdG93bmVyID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKGNvbnRyb2wpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5UZW1wbGF0ZUNvbXBvbmVudFwiKSkge1xuXHRcdFx0cmV0dXJuIG93bmVyO1xuXHRcdH1cblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5idWlsZGluZ0Jsb2Nrcy5JQnVpbGRpbmdCbG9ja093bmVyQ29tcG9uZW50XCIpKSB7XG5cdFx0XHRyZXR1cm4gb3duZXI7XG5cdFx0fVxuXHR9XG5cblx0Lypcblx0ICogR2V0IHRoZSBwYWdlIGNvbnRyb2xsZXIgaW5zdGFuY2Vcblx0ICogQHBhcmFtIGxvZ0Vycm9yIFdoZXRoZXIgdG8gbG9nIGFuIGVycm9yIGlmIHRoZSBwYWdlIGNvbnRyb2xsZXIgaXMgbm90IGZvdW5kXG5cdCAqIEByZXR1cm5zIFRoZSBwYWdlIGNvbnRyb2xsZXIgaW5zdGFuY2Vcblx0ICovXG5cdGdldFBhZ2VDb250cm9sbGVyKGxvZ0Vycm9yID0gdHJ1ZSk6IFBhZ2VDb250cm9sbGVyIHtcblx0XHRjb25zdCBwYWdlQ29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyPy4oKTtcblx0XHRpZiAoIXBhZ2VDb250cm9sbGVyICYmIGxvZ0Vycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJObyBzYXAuZmUuY29yZS5QYWdlQ29udHJvbGxlciBmb3VuZFwiKTtcblx0XHR9XG5cdFx0cmV0dXJuIHBhZ2VDb250cm9sbGVyITtcblx0fVxuXG5cdGdldE1ldGFNb2RlbCgpOiBPRGF0YU1ldGFNb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcj8uaXNBPFRlbXBsYXRlQ29tcG9uZW50PihcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLklCdWlsZGluZ0Jsb2NrT3duZXJDb21wb25lbnRcIikpIHtcblx0XHRcdGxldCBtZXRhTW9kZWwgPSBvd25lcj8uZ2V0TWV0YU1vZGVsKHRoaXMubWV0YU1vZGVsKTtcblx0XHRcdC8vIEZhbGxiYWNrIGluIGNhc2UgdGhleSBkb24ndCBhcHBseSB0aGUgbG9naWMgZm9yIHRoZSBtZXRhbW9kZWwgY29udmVydGVyXG5cdFx0XHRpZiAoIW1ldGFNb2RlbCAmJiB0aGlzLm1ldGFNb2RlbD8uc3RhcnRzV2l0aChcImlkLVwiKSkge1xuXHRcdFx0XHRtZXRhTW9kZWwgPSBnZXRNZXRhTW9kZWxCeUlkKHRoaXMubWV0YU1vZGVsKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtZXRhTW9kZWw7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBvd25lcj8uZ2V0TWV0YU1vZGVsKHRoaXMubWV0YU1vZGVsKTtcblx0XHR9XG5cdH1cblxuXHRvdmVycmlkZSBkZXN0cm95KHN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5pc0E8SVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPHVua25vd24+ICYgTWFuYWdlZE9iamVjdD4oXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpKSB7XG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKGZhbHNlKT8udmlld1N0YXRlPy5kZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvcih0aGlzKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoZmFsc2UpKSB7XG5cdFx0XHRyZW1vdmVDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzKHRoaXMsIHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSEpO1xuXHRcdH1cblx0XHR0aGlzLm5vdGlmeUJCT2JzZXJ2ZXJzKHRydWUpO1xuXHRcdHN1cGVyLmRlc3Ryb3koc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0fVxuXG5cdF9jaGVja0lmTWV0YWRhdGFSZWFkeShmcm9tQXBwbHlTZXR0aW5ncyA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcikge1xuXHRcdFx0dGhpcy5vbk1ldGFkYXRhQXZhaWxhYmxlKG93bmVyKTtcblx0XHRcdGlmIChcblx0XHRcdFx0dGhpcy5pc0E8SVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPHVua25vd24+ICYgTWFuYWdlZE9iamVjdD4oXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy52aWV3U3RhdGUucmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yKHRoaXMpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSkge1xuXHRcdFx0XHRpbml0Q29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyh0aGlzLCB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkhKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCFmcm9tQXBwbHlTZXR0aW5ncyAmJiAhdGhpcy5jb250ZW50KSB7XG5cdFx0XHRcdC8vIEluIGNhc2UgY291bGRuJ3QgY3JlYXRlIHRoZSBjb250ZW50IGR1cmluZyB0aGUgYXBwbHlTZXR0aW5ncywgdHJ5IGFnYWluXG5cdFx0XHRcdExvZy53YXJuaW5nKFxuXHRcdFx0XHRcdFwiVGhlIGJ1aWxkaW5nIGJsb2NrIHdhcyBub3QgY3JlYXRlZCB3aXRoaW4gYW4gRXh0ZW5zaW9uQVBJLnJ1bldpdGhGUE1Db250ZXh0IGNhbGwsIGZvciBwZXJmb3JtYW5jZSByZWFzb24gaXQncyByZWNvbW1lbmRlZCB0byBkbyBzby5cIixcblx0XHRcdFx0XHR0aGlzIGFzIHVua25vd24gYXMgc3RyaW5nXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuYXR0YWNoRXZlbnRPbmNlKFwibW9kZWxDb250ZXh0Q2hhbmdlXCIsIGZ1bmN0aW9uICh0aGlzOiBCdWlsZGluZ0Jsb2NrKTogdm9pZCB7XG5cdFx0XHRcdHRoaXMuX2NoZWNrSWZNZXRhZGF0YVJlYWR5KCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRjbG9uZShzSWRTdWZmaXg/OiBzdHJpbmcsIGFMb2NhbElkcz86IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcikge1xuXHRcdFx0cmV0dXJuIG93bmVyLnJ1bkFzT3duZXIoKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gc3VwZXIuY2xvbmUoc0lkU3VmZml4LCBhTG9jYWxJZHMpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBzdXBlci5jbG9uZShzSWRTdWZmaXgsIGFMb2NhbElkcyk7XG5cdFx0fVxuXHR9XG5cblx0b25NZXRhZGF0YUF2YWlsYWJsZShfb3duZXJDb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50KTogdm9pZCB7XG5cdFx0Ly8gVG8gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBjaGlsZCBjbGFzc1xuXHR9XG5cblx0Z2V0QXBwQ29tcG9uZW50KCk6IEFwcENvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdHJldHVybiBvd25lcj8uZ2V0QXBwQ29tcG9uZW50KCk7XG5cdH1cblxuXHRnZXREYXRhTW9kZWxPYmplY3RQYXRoPE4+KHRhcmdldFBhdGg/OiBzdHJpbmcpOiBEYXRhTW9kZWxPYmplY3RQYXRoPE4+IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSB0aGlzLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IHRhcmdldFBhdGhUb1VzZSA9IHRhcmdldFBhdGggPz8gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCk7XG5cdFx0cmV0dXJuIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgodGFyZ2V0UGF0aFRvVXNlISwgbWV0YU1vZGVsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRleHQgcGF0aCBmcm9tIHRoZSBvd25lciBjb21wb25lbnQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHBhdGhcblx0ICovXG5cdGdldE93bmVyQ29udGV4dFBhdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCkhO1xuXHRcdHJldHVybiBvd25lci5nZXRGdWxsQ29udGV4dFBhdGgodGhpcy5tZXRhTW9kZWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZGF0YSBtb2RlbCBvYmplY3QgZm9yIHRoZSBnaXZlbiBtZXRhcGF0aCBhbmQgb3B0aW9uYWwgY29udGV4dFBhdGguXG5cdCAqIEBwYXJhbSBtZXRhcGF0aFxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICogQHJldHVybnMgVGhlIGRhdGEgbW9kZWwgb2JqZWN0IHBhdGhcblx0ICovXG5cdGdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4oXG5cdFx0bWV0YXBhdGg6IHN0cmluZyxcblx0XHRjb250ZXh0UGF0aD86IHN0cmluZ1xuXHQpOiBEYXRhTW9kZWxPYmplY3RQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgY29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0Q29tcHV0ZWRDb250ZXh0UGF0aChjb250ZXh0UGF0aCk7XG5cblx0XHRsZXQgcmVzb2x2ZWRDb250ZXh0UGF0aDtcblx0XHRpZiAoY29udGV4dFBhdGhUb1VzZSkge1xuXHRcdFx0cmVzb2x2ZWRDb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoVG9Vc2UuZW5kc1dpdGgoXCIvXCIpID8gY29udGV4dFBhdGhUb1VzZSA6IGNvbnRleHRQYXRoVG9Vc2UgKyBcIi9cIjtcblx0XHR9XG5cdFx0aWYgKCFtZXRhTW9kZWwgfHwgIShyZXNvbHZlZENvbnRleHRQYXRoIHx8IG1ldGFwYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJObyBtZXRhbW9kZWwgb3IgbWV0YXBhdGggaXMgbm90IHJlYWNoYWJsZSB3aXRoIGNvbnRleHRQYXRoXCIpO1xuXHRcdH1cblx0XHRsZXQgbWV0YUNvbnRleHQgPSByZXNvbHZlZENvbnRleHRQYXRoID8gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHJlc29sdmVkQ29udGV4dFBhdGgpIDogdW5kZWZpbmVkO1xuXHRcdG1ldGFDb250ZXh0ID0gbWV0YUNvbnRleHQgPyBtZXRhQ29udGV4dCA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBtZXRhUGF0aENvbnRleHQgPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YXBhdGgsIG1ldGFDb250ZXh0KTtcblx0XHRyZXR1cm4gbWV0YVBhdGhDb250ZXh0XG5cdFx0XHQ/IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPihtZXRhUGF0aENvbnRleHQsIG1ldGFDb250ZXh0KVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdH1cblxuXHRnZXRDb21wdXRlZENvbnRleHRQYXRoKGNvbnRleHRQYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRsZXQgY29udGV4dFBhdGhUb1VzZSA9IGNvbnRleHRQYXRoID8/IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpITtcblx0XHRpZiAoY29udGV4dFBhdGhUb1VzZSAmJiAhY29udGV4dFBhdGhUb1VzZS5zdGFydHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0Y29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpICsgY29udGV4dFBhdGhUb1VzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbnRleHRQYXRoVG9Vc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBNZXRhUGF0aCBvYmplY3QgZm9yIHRoZSBnaXZlbiBtZXRhUGF0aCBhbmQgb3B0aW9uYWwgY29udGV4dFBhdGguXG5cdCAqIEBwYXJhbSBtZXRhUGF0aFxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICogQHJldHVybnMgQSBNZXRhUGF0aCBwb2ludGluZyB0byB0aGUgdGFyZ2V0IHttZXRhUGF0aCwgY29udGV4dFBhdGh9XG5cdCAqL1xuXHRnZXRNZXRhUGF0aE9iamVjdDxFeHBlY3RlZERhdGFNb2RlbFR5cGU+KG1ldGFQYXRoOiBzdHJpbmcsIGNvbnRleHRQYXRoPzogc3RyaW5nKTogTWV0YVBhdGg8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPiB8IG51bGwge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgY29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0Q29tcHV0ZWRDb250ZXh0UGF0aChjb250ZXh0UGF0aCk7XG5cdFx0aWYgKCFtZXRhTW9kZWwgfHwgIShjb250ZXh0UGF0aFRvVXNlIHx8IG1ldGFQYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpKSB7XG5cdFx0XHRMb2cud2FybmluZyhgTm8gbWV0YW1vZGVsIG9yIG1ldGFQYXRoIGlzIG5vdCByZWFjaGFibGUgd2l0aCAke2NvbnRleHRQYXRofToke21ldGFQYXRofWApO1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gbmV3IE1ldGFQYXRoKGNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpLCBtZXRhUGF0aCwgY29udGV4dFBhdGhUb1VzZSk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLndhcm5pbmcoYE5vIG1ldGFtb2RlbCBvciBtZXRhUGF0aCBpcyBub3QgcmVhY2hhYmxlIHdpdGggJHtjb250ZXh0UGF0aH06JHttZXRhUGF0aH1gKTtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBjcmVhdGVJZCguLi5zdHJpbmdQYXJ0czogKHN0cmluZyB8IHVuZGVmaW5lZCB8IERhdGFNb2RlbE9iamVjdFBhdGg8QXV0aG9yaXplZElkQW5ub3RhdGlvbnNUeXBlPilbXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Ly8gSWYgdGhlIGNoaWxkIGluc3RhbmNlIGhhcyBhbiBJRCBwcm9wZXJ0eSB1c2UgaXQgb3RoZXJ3aXNlIHJldHVybiB1bmRlZmluZWRcblx0XHRpZiAodGhpcy5nZXRJZCgpKSB7XG5cdFx0XHRyZXR1cm4gZ2VuZXJhdGUoW3RoaXMuZ2V0SWQoKSwgLi4uc3RyaW5nUGFydHNdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGdldFRyYW5zbGF0ZWRUZXh0KHRleHRJRDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogdW5rbm93bltdLCBtZXRhUGF0aD86IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIChcblx0XHRcdCgodGhpcy5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpID8/IHRoaXMuX2dldE93bmVyKCk/LmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikpIGFzIFJlc291cmNlTW9kZWwpPy5nZXRUZXh0KFxuXHRcdFx0XHR0ZXh0SUQsXG5cdFx0XHRcdHBhcmFtZXRlcnMsXG5cdFx0XHRcdG1ldGFQYXRoXG5cdFx0XHQpIHx8IHRleHRJRFxuXHRcdCk7XG5cdH1cblxuXHRnZXRNYW5pZmVzdFdyYXBwZXIoKTogTWFuaWZlc3RXcmFwcGVyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdH1cblxuXHRnZXRPd25lclBhZ2VEZWZpbml0aW9uKCk6IERlZmluaXRpb25QYWdlIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0T3duZXIoKT8ucHJlcHJvY2Vzc29yQ29udGV4dD8uZ2V0RGVmaW5pdGlvbkZvclBhZ2UoKTtcblx0fVxufVxuXG5pbnRlcmZhY2UgQnVpbGRpbmdCbG9jazxUIGV4dGVuZHMgVUk1RWxlbWVudD4ge1xuXHRnZXRDb250ZW50KCk6IFQgfCB1bmRlZmluZWQ7XG5cdGdldEFyaWFMYWJlbGxlZEJ5KCk6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBCdWlsZGluZ0Jsb2NrO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQSxJQVFNQSxhQUFhLElBQUFDLElBQUEsR0FEbEJDLGNBQWMsQ0FBQywwQ0FBMEMsQ0FBQyxFQUFBQyxLQUFBLEdBS3pEQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFKLElBQUEsQ0FBQUssTUFBQSxJQUFBQyxPQUFBLElBQUFDLGNBQUEsMEJBQUFDLGtCQUFBO0lBTzdCLFNBQUFULGNB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
@@ -10,7 +10,8 @@ import type TemplateComponent from "sap/fe/core/TemplateComponent";
10
10
  import type IViewStateContributor from "sap/fe/core/controllerextensions/viewState/IViewStateContributor";
11
11
  import type ManifestWrapper from "sap/fe/core/converters/ManifestWrapper";
12
12
  import * as MetaModelConverter from "sap/fe/core/converters/MetaModelConverter";
13
- import { convertTypes, getInvolvedDataModelObjectsForTargetPath } from "sap/fe/core/converters/MetaModelConverter";
13
+ import { convertTypes, getInvolvedDataModelObjectsForTargetPath, getMetaModelById } from "sap/fe/core/converters/MetaModelConverter";
14
+ import type { DefinitionPage } from "sap/fe/core/definition/FEDefinition";
14
15
  import MetaPath from "sap/fe/core/helpers/MetaPath";
15
16
  import type { AuthorizedIdAnnotationsType } from "sap/fe/core/helpers/StableIdHelper";
16
17
  import { generate } from "sap/fe/core/helpers/StableIdHelper";
@@ -21,6 +22,7 @@ import Component from "sap/ui/core/Component";
21
22
  import type Control from "sap/ui/core/Control";
22
23
  import type UI5Element from "sap/ui/core/Element";
23
24
  import ElementRegistry from "sap/ui/core/ElementRegistry";
25
+
24
26
  import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
25
27
  import type AppComponent from "../AppComponent";
26
28
 
@@ -130,25 +132,36 @@ class BuildingBlock<T extends UI5Element = Control, K extends object = {}> exten
130
132
 
131
133
  /*
132
134
  * Get the page controller instance
135
+ * @param logError Whether to log an error if the page controller is not found
133
136
  * @returns The page controller instance
134
137
  */
135
- getPageController(): PageController {
138
+ getPageController(logError = true): PageController {
136
139
  const pageController = this._getOwner()?.getRootController?.();
137
- if (!pageController) {
140
+ if (!pageController && logError) {
138
141
  Log.error("No sap.fe.core.PageController found");
139
142
  }
140
143
  return pageController!;
141
144
  }
142
145
 
143
146
  getMetaModel(): ODataMetaModel | undefined {
144
- return this._getOwner()?.getMetaModel(this.metaModel);
147
+ const owner = this._getOwner();
148
+ if (owner?.isA<TemplateComponent>("sap.fe.core.buildingBlocks.IBuildingBlockOwnerComponent")) {
149
+ let metaModel = owner?.getMetaModel(this.metaModel);
150
+ // Fallback in case they don't apply the logic for the metamodel converter
151
+ if (!metaModel && this.metaModel?.startsWith("id-")) {
152
+ metaModel = getMetaModelById(this.metaModel);
153
+ }
154
+ return metaModel;
155
+ } else {
156
+ return owner?.getMetaModel(this.metaModel);
157
+ }
145
158
  }
146
159
 
147
160
  override destroy(suppressInvalidate?: boolean): void {
148
161
  if (this.isA<IViewStateContributor<unknown> & ManagedObject>("sap.fe.core.controllerextensions.viewState.IViewStateContributor")) {
149
- this.getPageController()?.viewState?.deregisterStateContributor(this);
162
+ this.getPageController(false)?.viewState?.deregisterStateContributor(this);
150
163
  }
151
- if (this.getPageController()) {
164
+ if (this.getPageController(false)) {
152
165
  removeControllerExtensionHookHandlers(this, this.getPageController()!);
153
166
  }
154
167
  this.notifyBBObservers(true);
@@ -182,7 +195,7 @@ class BuildingBlock<T extends UI5Element = Control, K extends object = {}> exten
182
195
  }
183
196
  }
184
197
 
185
- clone(sIdSuffix: string, aLocalIds: string[]): this {
198
+ clone(sIdSuffix?: string, aLocalIds?: string[]): this {
186
199
  const owner = this._getOwner();
187
200
  if (owner) {
188
201
  return owner.runAsOwner(() => {
@@ -203,8 +216,7 @@ class BuildingBlock<T extends UI5Element = Control, K extends object = {}> exten
203
216
  }
204
217
 
205
218
  getDataModelObjectPath<N>(targetPath?: string): DataModelObjectPath<N> | undefined {
206
- const owner = this._getOwner()!;
207
- const metaModel = owner.getMetaModel(this.metaModel);
219
+ const metaModel = this.getMetaModel();
208
220
  const targetPathToUse = targetPath ?? this.getOwnerContextPath();
209
221
  return getInvolvedDataModelObjectsForTargetPath(targetPathToUse!, metaModel);
210
222
  }
@@ -228,10 +240,9 @@ class BuildingBlock<T extends UI5Element = Control, K extends object = {}> exten
228
240
  metapath: string,
229
241
  contextPath?: string
230
242
  ): DataModelObjectPath<ExpectedDataModelType> | undefined {
231
- const owner = this._getOwner()!;
232
- const metaModel = owner.getMetaModel(this.metaModel);
233
- let contextPathToUse = contextPath ?? this.getOwnerContextPath();
234
- contextPathToUse = contextPathToUse?.startsWith("/") ? contextPathToUse : undefined;
243
+ const metaModel = this.getMetaModel();
244
+ const contextPathToUse = this.getComputedContextPath(contextPath);
245
+
235
246
  let resolvedContextPath;
236
247
  if (contextPathToUse) {
237
248
  resolvedContextPath = contextPathToUse.endsWith("/") ? contextPathToUse : contextPathToUse + "/";
@@ -247,6 +258,14 @@ class BuildingBlock<T extends UI5Element = Control, K extends object = {}> exten
247
258
  : undefined;
248
259
  }
249
260
 
261
+ getComputedContextPath(contextPath?: string): string {
262
+ let contextPathToUse = contextPath ?? this.getOwnerContextPath()!;
263
+ if (contextPathToUse && !contextPathToUse.startsWith("/")) {
264
+ contextPathToUse = this.getOwnerContextPath() + contextPathToUse;
265
+ }
266
+ return contextPathToUse;
267
+ }
268
+
250
269
  /**
251
270
  * Retrieves the MetaPath object for the given metaPath and optional contextPath.
252
271
  * @param metaPath
@@ -254,16 +273,14 @@ class BuildingBlock<T extends UI5Element = Control, K extends object = {}> exten
254
273
  * @returns A MetaPath pointing to the target {metaPath, contextPath}
255
274
  */
256
275
  getMetaPathObject<ExpectedDataModelType>(metaPath: string, contextPath?: string): MetaPath<ExpectedDataModelType> | null {
257
- const owner = this._getOwner()!;
258
- const metaModel = owner.getMetaModel(this.metaModel);
259
- let contextPathToUse = contextPath ?? this.getOwnerContextPath();
260
- contextPathToUse = contextPathToUse?.startsWith("/") ? contextPathToUse : undefined;
276
+ const metaModel = this.getMetaModel();
277
+ const contextPathToUse = this.getComputedContextPath(contextPath);
261
278
  if (!metaModel || !(contextPathToUse || metaPath.charAt(0) === "/")) {
262
279
  Log.warning(`No metamodel or metaPath is not reachable with ${contextPath}:${metaPath}`);
263
280
  return null;
264
281
  }
265
282
  try {
266
- return new MetaPath(convertTypes(metaModel), metaPath, contextPathToUse!);
283
+ return new MetaPath(convertTypes(metaModel), metaPath, contextPathToUse);
267
284
  } catch (e) {
268
285
  Log.warning(`No metamodel or metaPath is not reachable with ${contextPath}:${metaPath}`);
269
286
  return null;
@@ -291,6 +308,10 @@ class BuildingBlock<T extends UI5Element = Control, K extends object = {}> exten
291
308
  getManifestWrapper(): ManifestWrapper | undefined {
292
309
  return this._getOwner()?.getManifestWrapper();
293
310
  }
311
+
312
+ getOwnerPageDefinition(): DefinitionPage | undefined {
313
+ return this._getOwner()?.preprocessorContext?.getDefinitionForPage();
314
+ }
294
315
  }
295
316
 
296
317
  interface BuildingBlock<T extends UI5Element> {
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2024 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define([], function () {
6
6
  "use strict";
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2024 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/base/Log", "sap/ui/base/ManagedObject", "sap/ui/core/util/XMLPreprocessor"], function (Log, ManagedObject, XMLPreprocessor) {
6
6
  "use strict";
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2024 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/ui/model/json/JSONModel"], function (Log, ObjectPath, JSONModel) {
6
6
  "use strict";
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2024 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define([], function () {
6
6
  "use strict";