@sapui5/sap.fe.core 1.141.2 → 1.142.1

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 (207) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +4 -1
  3. package/src/sap/fe/core/ActionRuntime.js +48 -23
  4. package/src/sap/fe/core/ActionRuntime.ts +61 -35
  5. package/src/sap/fe/core/AppComponent.js +76 -6
  6. package/src/sap/fe/core/AppComponent.ts +94 -8
  7. package/src/sap/fe/core/AppStateHandler.js +9 -8
  8. package/src/sap/fe/core/AppStateHandler.ts +13 -9
  9. package/src/sap/fe/core/BaseController.js +8 -5
  10. package/src/sap/fe/core/BaseController.ts +6 -1
  11. package/src/sap/fe/core/CommonUtils.js +4 -123
  12. package/src/sap/fe/core/CommonUtils.ts +3 -172
  13. package/src/sap/fe/core/ExtensionAPI.js +3 -10
  14. package/src/sap/fe/core/ExtensionAPI.ts +2 -14
  15. package/src/sap/fe/core/PageController.js +64 -43
  16. package/src/sap/fe/core/PageController.ts +62 -47
  17. package/src/sap/fe/core/TemplateComponent.js +20 -1
  18. package/src/sap/fe/core/TemplateComponent.ts +24 -2
  19. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +37 -24
  20. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +47 -31
  21. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +1 -1
  22. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +4 -0
  23. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +4 -1
  24. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +3 -0
  25. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +4 -1
  26. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +4 -0
  27. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +7 -5
  28. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +22 -2
  29. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +82 -39
  30. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +91 -54
  31. package/src/sap/fe/core/controllerextensions/EditFlow.js +25 -3
  32. package/src/sap/fe/core/controllerextensions/EditFlow.ts +27 -3
  33. package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +9 -7
  34. package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +17 -5
  35. package/src/sap/fe/core/controllerextensions/InternalRouting.js +37 -18
  36. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +49 -17
  37. package/src/sap/fe/core/controllerextensions/KPIManagement.js +30 -15
  38. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +32 -14
  39. package/src/sap/fe/core/controllerextensions/MessageHandler.js +9 -10
  40. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +8 -9
  41. package/src/sap/fe/core/controllerextensions/Paginator.js +2 -2
  42. package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -1
  43. package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -2
  44. package/src/sap/fe/core/controllerextensions/Placeholder.ts +5 -1
  45. package/src/sap/fe/core/controllerextensions/Recommendations.js +3 -3
  46. package/src/sap/fe/core/controllerextensions/Recommendations.ts +2 -2
  47. package/src/sap/fe/core/controllerextensions/Routing.js +9 -5
  48. package/src/sap/fe/core/controllerextensions/Routing.ts +7 -7
  49. package/src/sap/fe/core/controllerextensions/Share.js +5 -5
  50. package/src/sap/fe/core/controllerextensions/Share.ts +4 -4
  51. package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
  52. package/src/sap/fe/core/controllerextensions/SideEffects.ts +17 -2
  53. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +2 -2
  54. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +1 -1
  55. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +3 -3
  56. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +3 -2
  57. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +33 -11
  58. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +45 -14
  59. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +37 -3
  60. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +41 -8
  61. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +10 -4
  62. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +6 -1
  63. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +7 -7
  64. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +6 -5
  65. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +2 -2
  66. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +1 -1
  67. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +2 -1
  68. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +1 -0
  69. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +10 -6
  70. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +6 -5
  71. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +11 -9
  72. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +22 -9
  73. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +9 -4
  74. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +10 -4
  75. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.js +31 -2
  76. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.tsx +34 -1
  77. package/src/sap/fe/core/converters/ManifestSettings.js +7 -1
  78. package/src/sap/fe/core/converters/ManifestSettings.ts +37 -0
  79. package/src/sap/fe/core/converters/ManifestWrapper.js +29 -9
  80. package/src/sap/fe/core/converters/ManifestWrapper.ts +29 -11
  81. package/src/sap/fe/core/converters/annotations/DataField.js +46 -19
  82. package/src/sap/fe/core/converters/annotations/DataField.ts +93 -19
  83. package/src/sap/fe/core/converters/common/AnnotationConverter.js +88 -35
  84. package/src/sap/fe/core/converters/controls/Common/Action.js +57 -20
  85. package/src/sap/fe/core/converters/controls/Common/Action.ts +71 -21
  86. package/src/sap/fe/core/converters/controls/Common/Chart.js +13 -3
  87. package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -4
  88. package/src/sap/fe/core/converters/controls/Common/Form.js +18 -3
  89. package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -1
  90. package/src/sap/fe/core/converters/controls/Common/Table.js +89 -57
  91. package/src/sap/fe/core/converters/controls/Common/Table.ts +110 -56
  92. package/src/sap/fe/core/converters/controls/Common/filter/FilterRestrictions.js +243 -0
  93. package/src/sap/fe/core/converters/controls/Common/filter/FilterRestrictions.ts +309 -0
  94. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +142 -58
  95. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +172 -78
  96. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +12 -18
  97. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +13 -27
  98. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +7 -16
  99. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +6 -17
  100. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +16 -5
  101. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +16 -5
  102. package/src/sap/fe/core/converters/helpers/Aggregation.js +12 -2
  103. package/src/sap/fe/core/converters/helpers/Aggregation.ts +11 -1
  104. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +27 -3
  105. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +28 -1
  106. package/src/sap/fe/core/converters/helpers/ID.js +3 -1
  107. package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
  108. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +5 -2
  109. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +7 -1
  110. package/src/sap/fe/core/converters/templates/ListReportConverter.js +11 -3
  111. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +12 -4
  112. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +19 -8
  113. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +18 -7
  114. package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +8 -3
  115. package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +7 -2
  116. package/src/sap/fe/core/formatters/FPMFormatter.js +2 -2
  117. package/src/sap/fe/core/formatters/FPMFormatter.ts +1 -1
  118. package/src/sap/fe/core/fpm/Component.js +8 -1
  119. package/src/sap/fe/core/fpm/Component.ts +8 -0
  120. package/src/sap/fe/core/fpm/manifest.json +1 -1
  121. package/src/sap/fe/core/helpers/AppStartupHelper.js +79 -25
  122. package/src/sap/fe/core/helpers/AppStartupHelper.ts +91 -32
  123. package/src/sap/fe/core/helpers/ManifestHelper.js +6 -3
  124. package/src/sap/fe/core/helpers/ManifestHelper.ts +3 -0
  125. package/src/sap/fe/core/helpers/MetaModelFunction.js +12 -3
  126. package/src/sap/fe/core/helpers/MetaModelFunction.ts +11 -3
  127. package/src/sap/fe/core/helpers/ModelHelper.js +48 -9
  128. package/src/sap/fe/core/helpers/ModelHelper.ts +55 -10
  129. package/src/sap/fe/core/helpers/TypeGuards.js +12 -2
  130. package/src/sap/fe/core/helpers/TypeGuards.ts +10 -1
  131. package/src/sap/fe/core/helpers/WebSocket.js +6 -7
  132. package/src/sap/fe/core/helpers/WebSocket.ts +10 -6
  133. package/src/sap/fe/core/library.js +30 -3
  134. package/src/sap/fe/core/library.ts +28 -1
  135. package/src/sap/fe/core/messagebundle.properties +8 -1
  136. package/src/sap/fe/core/messagebundle_ar.properties +7 -0
  137. package/src/sap/fe/core/messagebundle_bg.properties +10 -3
  138. package/src/sap/fe/core/messagebundle_ca.properties +7 -0
  139. package/src/sap/fe/core/messagebundle_cnr.properties +7 -0
  140. package/src/sap/fe/core/messagebundle_cs.properties +7 -0
  141. package/src/sap/fe/core/messagebundle_cy.properties +8 -1
  142. package/src/sap/fe/core/messagebundle_da.properties +7 -0
  143. package/src/sap/fe/core/messagebundle_de.properties +7 -0
  144. package/src/sap/fe/core/messagebundle_el.properties +7 -0
  145. package/src/sap/fe/core/messagebundle_en.properties +8 -1
  146. package/src/sap/fe/core/messagebundle_en_GB.properties +7 -0
  147. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +5 -0
  148. package/src/sap/fe/core/messagebundle_es.properties +8 -1
  149. package/src/sap/fe/core/messagebundle_es_MX.properties +7 -0
  150. package/src/sap/fe/core/messagebundle_et.properties +7 -0
  151. package/src/sap/fe/core/messagebundle_fi.properties +7 -0
  152. package/src/sap/fe/core/messagebundle_fr.properties +16 -9
  153. package/src/sap/fe/core/messagebundle_fr_CA.properties +7 -0
  154. package/src/sap/fe/core/messagebundle_hi.properties +8 -1
  155. package/src/sap/fe/core/messagebundle_hr.properties +7 -0
  156. package/src/sap/fe/core/messagebundle_hu.properties +7 -0
  157. package/src/sap/fe/core/messagebundle_id.properties +7 -0
  158. package/src/sap/fe/core/messagebundle_it.properties +7 -0
  159. package/src/sap/fe/core/messagebundle_iw.properties +7 -0
  160. package/src/sap/fe/core/messagebundle_ja.properties +8 -1
  161. package/src/sap/fe/core/messagebundle_kk.properties +7 -0
  162. package/src/sap/fe/core/messagebundle_ko.properties +7 -0
  163. package/src/sap/fe/core/messagebundle_lt.properties +7 -0
  164. package/src/sap/fe/core/messagebundle_lv.properties +7 -0
  165. package/src/sap/fe/core/messagebundle_mk.properties +7 -0
  166. package/src/sap/fe/core/messagebundle_ms.properties +7 -0
  167. package/src/sap/fe/core/messagebundle_nl.properties +7 -0
  168. package/src/sap/fe/core/messagebundle_no.properties +7 -0
  169. package/src/sap/fe/core/messagebundle_pl.properties +7 -0
  170. package/src/sap/fe/core/messagebundle_pt.properties +7 -0
  171. package/src/sap/fe/core/messagebundle_pt_PT.properties +7 -0
  172. package/src/sap/fe/core/messagebundle_ro.properties +7 -0
  173. package/src/sap/fe/core/messagebundle_ru.properties +7 -0
  174. package/src/sap/fe/core/messagebundle_sh.properties +7 -0
  175. package/src/sap/fe/core/messagebundle_sk.properties +7 -0
  176. package/src/sap/fe/core/messagebundle_sl.properties +7 -0
  177. package/src/sap/fe/core/messagebundle_sr.properties +7 -0
  178. package/src/sap/fe/core/messagebundle_sv.properties +7 -0
  179. package/src/sap/fe/core/messagebundle_th.properties +7 -0
  180. package/src/sap/fe/core/messagebundle_tr.properties +7 -0
  181. package/src/sap/fe/core/messagebundle_uk.properties +7 -0
  182. package/src/sap/fe/core/messagebundle_vi.properties +7 -0
  183. package/src/sap/fe/core/messagebundle_zh_CN.properties +8 -1
  184. package/src/sap/fe/core/messagebundle_zh_TW.properties +7 -0
  185. package/src/sap/fe/core/rootView/Fcl.controller.js +21 -7
  186. package/src/sap/fe/core/rootView/Fcl.controller.ts +28 -6
  187. package/src/sap/fe/core/rootView/RootViewBaseController.js +96 -88
  188. package/src/sap/fe/core/rootView/RootViewBaseController.ts +106 -96
  189. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +14 -10
  190. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -10
  191. package/src/sap/fe/core/services/RoutingServiceFactory.js +16 -7
  192. package/src/sap/fe/core/services/RoutingServiceFactory.ts +23 -10
  193. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +9 -7
  194. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +13 -8
  195. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +62 -6
  196. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +74 -11
  197. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +33 -15
  198. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +31 -11
  199. package/src/sap/fe/core/templating/DisplayModeFormatter.js +4 -5
  200. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +4 -6
  201. package/src/sap/fe/core/templating/UIFormatters.js +17 -2
  202. package/src/sap/fe/core/templating/UIFormatters.ts +25 -1
  203. package/src/sap/fe/core/types/sap.fe.core-auto-ext.d.js +10 -0
  204. package/src/sap/fe/core/types/sap.fe.core-auto-ext.d.ts +369 -0
  205. package/src/sap/fe/core/types/sap.fe.core-manual-ext.d.js +9 -0
  206. package/src/sap/fe/core/types/sap.fe.core-manual-ext.d.ts +49 -0
  207. package/ui5.yaml +2 -0
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/BaseController", "sap/fe/core/ExtensionAPI", "sap/fe/core/controllerextensions/CollaborativeDraft", "sap/fe/core/controllerextensions/EditFlow", "sap/fe/core/controllerextensions/InlineEditFlow", "sap/fe/core/controllerextensions/IntentBasedNavigation", "sap/fe/core/controllerextensions/InternalIntentBasedNavigation", "sap/fe/core/controllerextensions/InternalRouting", "sap/fe/core/controllerextensions/MessageHandler", "sap/fe/core/controllerextensions/PageReady", "sap/fe/core/controllerextensions/Paginator", "sap/fe/core/controllerextensions/Placeholder", "sap/fe/core/controllerextensions/Recommendations", "sap/fe/core/controllerextensions/Routing", "sap/fe/core/controllerextensions/Share", "sap/fe/core/controllerextensions/SideEffects", "sap/fe/core/controllerextensions/Telemetry", "sap/fe/core/controllerextensions/ViewState", "sap/fe/core/formatters/CollaborationFormatter", "sap/fe/core/formatters/CriticalityFormatter", "sap/fe/core/formatters/FPMFormatter", "sap/fe/core/formatters/KPIFormatter", "sap/fe/core/formatters/StandardFormatter", "sap/fe/core/formatters/ValueFormatter", "sap/m/MessageBox", "sap/ui/core/Component", "sap/ui/core/Lib", "./controllerextensions/ContextSharing", "./controllerextensions/cards/CollaborationManager"], function (Log, ClassSupport, BaseController, ExtensionAPI, CollaborativeDraft, EditFlow, InlineEditFlow, IntentBasedNavigation, InternalIntentBasedNavigation, InternalRouting, MessageHandler, PageReady, Paginator, Placeholder, Recommendations, Routing, Share, SideEffects, Telemetry, ViewState, CollaborationFormatter, CriticalityFormatter, FPMFormatter, KPIFormatter, StandardFormatter, ValueFormatter, MessageBox, Component, Library, ContextSharing, CollaborationManager) {
5
+ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/BaseController", "sap/fe/core/ExtensionAPI", "sap/fe/core/controllerextensions/CollaborativeDraft", "sap/fe/core/controllerextensions/EditFlow", "sap/fe/core/controllerextensions/InlineEditFlow", "sap/fe/core/controllerextensions/IntentBasedNavigation", "sap/fe/core/controllerextensions/InternalIntentBasedNavigation", "sap/fe/core/controllerextensions/InternalRouting", "sap/fe/core/controllerextensions/MessageHandler", "sap/fe/core/controllerextensions/PageReady", "sap/fe/core/controllerextensions/Paginator", "sap/fe/core/controllerextensions/Placeholder", "sap/fe/core/controllerextensions/Recommendations", "sap/fe/core/controllerextensions/Routing", "sap/fe/core/controllerextensions/Share", "sap/fe/core/controllerextensions/SideEffects", "sap/fe/core/controllerextensions/Telemetry", "sap/fe/core/controllerextensions/ViewState", "sap/fe/core/formatters/Scope", "sap/m/MessageBox", "sap/ui/core/Component", "sap/ui/core/Lib", "./controllerextensions/ContextSharing", "./controllerextensions/cards/CollaborationManager"], function (Log, ClassSupport, BaseController, ExtensionAPI, CollaborativeDraft, EditFlow, InlineEditFlow, IntentBasedNavigation, InternalIntentBasedNavigation, InternalRouting, MessageHandler, PageReady, Paginator, Placeholder, Recommendations, Routing, Share, SideEffects, Telemetry, ViewState, Scope, MessageBox, Component, Library, ContextSharing, CollaborationManager) {
6
6
  "use strict";
7
7
 
8
8
  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18;
@@ -18,7 +18,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/BaseCont
18
18
  /**
19
19
  * Base controller class for your custom page used inside an SAP Fiori elements application.
20
20
  *
21
- * This controller provides preconfigured extensions that will ensure you have the basic functionalities required to use the building blocks.
21
+ * This controller provides preconfigured extensions that ensure you have the basic functionalities required to use the building blocks.
22
22
  * @hideconstructor
23
23
  * @public
24
24
  * @since 1.88.0
@@ -51,14 +51,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/BaseCont
51
51
  _initializerDefineProperty(_this, "contextSharing", _descriptor16, _this);
52
52
  _initializerDefineProperty(_this, "collaborationManager", _descriptor17, _this);
53
53
  _initializerDefineProperty(_this, "inlineEditFlow", _descriptor18, _this);
54
- _this._formatters = {
55
- ValueFormatter: ValueFormatter,
56
- StandardFormatter: StandardFormatter,
57
- CriticalityFormatter: CriticalityFormatter,
58
- FPMFormatter: FPMFormatter,
59
- KPIFormatter: KPIFormatter,
60
- CollaborationFormatter: CollaborationFormatter
61
- };
54
+ _this._formatters = Scope._formatters;
62
55
  _this.initialisationForPageControllerDoneProperly = false;
63
56
  const ownProps = Object.getOwnPropertyNames(_this.constructor.prototype);
64
57
  if (ownProps.includes("_isExtension")) {
@@ -98,36 +91,14 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/BaseCont
98
91
  _inheritsLoose(PageController, _BaseController);
99
92
  var _proto = PageController.prototype;
100
93
  _proto.onInit = function onInit() {
101
- const oUIModel = this.getAppComponent().getModel("ui"),
102
- oInternalModel = this.getAppComponent().getModel("internal"),
103
- sPath = `/pages/${this.getView().getId()}`;
104
- oUIModel.setProperty(sPath, {
105
- controls: {}
106
- });
107
- oInternalModel.setProperty(sPath, {
108
- controls: {},
109
- collaboration: {}
110
- });
111
- this.getView().bindElement({
112
- path: "/",
113
- model: "ui"
114
- });
115
- this.getView().bindElement({
116
- path: sPath,
117
- model: "internal"
118
- });
119
-
120
- // for the time being provide it also pageInternal as some macros access it - to be removed
121
- this.getView().bindElement({
122
- path: sPath,
123
- model: "pageInternal"
124
- });
125
- this.getView().setModel(oInternalModel, "pageInternal");
126
-
127
- // as the model propagation happens after init but we actually want to access the binding context in the
128
- // init phase already setting the model here
129
- this.getView().setModel(oUIModel, "ui");
130
- this.getView().setModel(oInternalModel, "internal");
94
+ const ownerComponent = this.getOwnerComponent();
95
+ const fnModel = this.getView().getModel;
96
+ this.getView().getModel = modelName => {
97
+ if (modelName === "$cmd") {
98
+ return fnModel.apply(this.getView(), [modelName]);
99
+ }
100
+ return fnModel.apply(this.getView(), [modelName]) ?? ownerComponent.getModel(modelName);
101
+ };
131
102
  this.initialisationForPageControllerDoneProperly = true;
132
103
  };
133
104
  _proto.onBeforeRendering = function onBeforeRendering() {
@@ -162,6 +133,55 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/BaseCont
162
133
  };
163
134
  _proto._getPageTitleInformation = async function _getPageTitleInformation() {
164
135
  return Promise.resolve({});
136
+ }
137
+
138
+ /**
139
+ * Get the browser title of the object page.
140
+ * @param pageTitleInformation Present page title information
141
+ * @returns Title information to be used by shell services for browser title
142
+ */;
143
+ _proto._getBrowserTitle = async function _getBrowserTitle(pageTitleInformation) {
144
+ const {
145
+ subtitle,
146
+ title,
147
+ description
148
+ } = pageTitleInformation;
149
+ let titleAggregator;
150
+ const titleExists = title !== undefined && title !== null && title !== "";
151
+ const subtitleExists = subtitle !== undefined && subtitle !== null && subtitle !== "";
152
+ const descriptionExists = description !== undefined && description !== null && description !== "";
153
+
154
+ // Apply title formatting rules based on available components
155
+ if (titleExists && subtitleExists && descriptionExists) {
156
+ // Rule 1: '<subTitle> (<description>) - <title>'
157
+ titleAggregator = `${subtitle} (${description}) - ${title}`;
158
+ } else if (titleExists && subtitleExists) {
159
+ // Rule 2: '<subTitle> - <title>'
160
+ titleAggregator = `${subtitle} - ${title}`;
161
+ } else if (subtitleExists && descriptionExists) {
162
+ // Rule 3: '<subTitle> (<description>)'
163
+ titleAggregator = `${subtitle} (${description})`;
164
+ } else if (titleExists && descriptionExists) {
165
+ // Rule 4: '<description> - <title>'
166
+ titleAggregator = `${description} - ${title}`;
167
+ } else if (titleExists) {
168
+ // Rule 5: '<title>'
169
+ titleAggregator = title;
170
+ } else if (subtitleExists) {
171
+ // Rule 6: '<subTitle>'
172
+ titleAggregator = subtitle;
173
+ } else if (descriptionExists) {
174
+ // Rule 7: '<description>'
175
+ titleAggregator = description;
176
+ } else {
177
+ // Rule 8: None exists, log warning and return undefined
178
+ const view = this.getView();
179
+ Log.warning(`No title, subtitle, or description available for browser title of page: ${view.getId()}`);
180
+ return Promise.resolve(undefined);
181
+ }
182
+ return Promise.resolve({
183
+ headerText: titleAggregator
184
+ });
165
185
  };
166
186
  _proto._getPageModel = function _getPageModel() {
167
187
  const pageComponent = Component.getOwnerComponentFor(this.getView());
@@ -188,7 +208,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/BaseCont
188
208
  };
189
209
  _proto._onInternalAfterBinding = function _onInternalAfterBinding() {
190
210
  const view = this.getView();
191
- this.pageReady.waitFor(this.getAppComponent().getAppStateHandler().applyAppState(view.getId(), view));
211
+ this.pageReady.waitFor(this.getAppComponent().getAppStateHandler().applyAppState(view));
192
212
  }
193
213
 
194
214
  /**
@@ -316,7 +336,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/BaseCont
316
336
  enumerable: true,
317
337
  writable: true,
318
338
  initializer: null
319
- }), _applyDecoratedDescriptor(_class2.prototype, "onInit", [_dec20], Object.getOwnPropertyDescriptor(_class2.prototype, "onInit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeRendering", [_dec21], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeRendering"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getExtensionAPI", [_dec22], Object.getOwnPropertyDescriptor(_class2.prototype, "getExtensionAPI"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPageReady", [_dec23, _dec24], Object.getOwnPropertyDescriptor(_class2.prototype, "onPageReady"), _class2.prototype), _class2)) || _class);
339
+ }), _applyDecoratedDescriptor(_class2.prototype, "onInit", [_dec20], Object.getOwnPropertyDescriptor(_class2.prototype, "onInit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeRendering", [_dec21], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeRendering"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getExtensionAPI", [_dec22], Object.getOwnPropertyDescriptor(_class2.prototype, "getExtensionAPI"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPageReady", [_dec23, _dec24], Object.getOwnPropertyDescriptor(_class2.prototype, "onPageReady"), _class2.prototype), _class2)) || _class); // eslint-disable-next-line @typescript-eslint/ban-ts-comment
340
+ // @ts-ignore
320
341
  return PageController;
321
342
  }, false);
322
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlQ29udHJvbGxlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwidXNpbmdFeHRlbnNpb24iLCJSb3V0aW5nIiwiX2RlYzMiLCJDb2xsYWJvcmF0aXZlRHJhZnQiLCJfZGVjNCIsIkludGVybmFsUm91dGluZyIsIm92ZXJyaWRlIiwib25BZnRlckJpbmRpbmciLCJ2aWV3IiwiZ2V0VmlldyIsImNvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwiX29uSW50ZXJuYWxBZnRlckJpbmRpbmciLCJfZGVjNSIsIkVkaXRGbG93IiwiX2RlYzYiLCJJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJfZGVjNyIsIkludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiX2RlYzgiLCJQYWdlUmVhZHkiLCJfZGVjOSIsIk1lc3NhZ2VIYW5kbGVyIiwiX2RlYzEwIiwiU2hhcmUiLCJfZGVjMTEiLCJQYWdpbmF0b3IiLCJfZGVjMTIiLCJWaWV3U3RhdGUiLCJfZGVjMTMiLCJQbGFjZWhvbGRlciIsIl9kZWMxNCIsIlNpZGVFZmZlY3RzIiwiX2RlYzE1IiwiUmVjb21tZW5kYXRpb25zIiwiX2RlYzE2IiwiVGVsZW1ldHJ5IiwiX2RlYzE3IiwiQ29udGV4dFNoYXJpbmciLCJfZGVjMTgiLCJDb2xsYWJvcmF0aW9uTWFuYWdlciIsIl9kZWMxOSIsIklubGluZUVkaXRGbG93IiwiX2RlYzIwIiwicHVibGljRXh0ZW5zaW9uIiwiX2RlYzIxIiwiX2RlYzIyIiwiX2RlYzIzIiwiX2RlYzI0IiwiZXh0ZW5zaWJsZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQmFzZUNvbnRyb2xsZXIiLCJuYW1lIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9mb3JtYXR0ZXJzIiwiVmFsdWVGb3JtYXR0ZXIiLCJTdGFuZGFyZEZvcm1hdHRlciIsIkNyaXRpY2FsaXR5Rm9ybWF0dGVyIiwiRlBNRm9ybWF0dGVyIiwiS1BJRm9ybWF0dGVyIiwiQ29sbGFib3JhdGlvbkZvcm1hdHRlciIsImluaXRpYWxpc2F0aW9uRm9yUGFnZUNvbnRyb2xsZXJEb25lUHJvcGVybHkiLCJvd25Qcm9wcyIsIk9iamVjdCIsImdldE93blByb3BlcnR5TmFtZXMiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsImluY2x1ZGVzIiwic3BsaWNlIiwiZ2V0UHJvdG90eXBlT2YiLCJvd25Qcm9wIiwiZm5Qcm9wIiwiZ2V0TWV0YWRhdGEiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsIm93bmVyQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJydW5Bc093bmVyIiwiYXBwbHkiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsIl9vVmlldyIsInNldCIsInYiLCJnZXRPd25lckNvbXBvbmVudCIsInNldFJvb3RDb250cm9sbGVyIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJvbkluaXQiLCJvVUlNb2RlbCIsImdldEFwcENvbXBvbmVudCIsImdldE1vZGVsIiwib0ludGVybmFsTW9kZWwiLCJzUGF0aCIsImdldElkIiwic2V0UHJvcGVydHkiLCJjb250cm9scyIsImNvbGxhYm9yYXRpb24iLCJiaW5kRWxlbWVudCIsInBhdGgiLCJtb2RlbCIsInNldE1vZGVsIiwib25CZWZvcmVSZW5kZXJpbmciLCJMb2ciLCJlcnJvciIsInBsYWNlaG9sZGVyIiwiYXR0YWNoSGlkZUNhbGxiYWNrIiwiZ2V0RXh0ZW5zaW9uQVBJIiwiaWQiLCJleHRlbnNpb25BUEkiLCJFeHRlbnNpb25BUEkiLCJvblBhZ2VSZWFkeSIsIl9tUGFyYW1ldGVycyIsIl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbiIsIlByb21pc2UiLCJyZXNvbHZlIiwiX2dldFBhZ2VNb2RlbCIsInBhZ2VDb21wb25lbnQiLCJvbk9wZW5Jbk5ld1RhYk5hdmlnYXRlT3V0Qm91bmQiLCJvdXRib3VuZFRhcmdldCIsImNvbnRleHRzIiwiY3JlYXRlUGF0aCIsIm1heE51bWJlck9mU2VsZWN0ZWRJdGVtcyIsInRoYXQiLCJmb3JFYWNoIiwiY29udGV4dCIsIl9pbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJvbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmQiLCJNZXNzYWdlQm94Iiwid2FybmluZyIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImdldFRleHQiLCJwYWdlUmVhZHkiLCJ3YWl0Rm9yIiwiZ2V0QXBwU3RhdGVIYW5kbGVyIiwiYXBwbHlBcHBTdGF0ZSIsImdldFJvdXRpbmdUYXJnZXROYW1lIiwicm91dGluZ1RhcmdldE5hbWUiLCJnZXRSb3V0aW5nU2VydmljZSIsImdldFRhcmdldE5hbWVGb3JWaWV3Iiwic2V0U2hvd0Zvb3RlciIsInNob3ciLCJ1bmRlZmluZWQiLCJwYWdlIiwiZ2V0Q29udGVudCIsImlzQSIsImdldEZvb3RlciIsIkJhc2VDb250cm9sbGVyIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJQYWdlQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIER5bmFtaWNQYWdlIGZyb20gXCJzYXAvZi9EeW5hbWljUGFnZVwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIHB1YmxpY0V4dGVuc2lvbiwgdXNpbmdFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQmFzZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgRXh0ZW5zaW9uQVBJIGZyb20gXCJzYXAvZmUvY29yZS9FeHRlbnNpb25BUElcIjtcbmltcG9ydCBDb2xsYWJvcmF0aXZlRHJhZnQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0NvbGxhYm9yYXRpdmVEcmFmdFwiO1xuaW1wb3J0IEVkaXRGbG93IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9FZGl0Rmxvd1wiO1xuaW1wb3J0IElubGluZUVkaXRGbG93IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbmxpbmVFZGl0Rmxvd1wiO1xuaW1wb3J0IEludGVudEJhc2VkTmF2aWdhdGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5pbXBvcnQgSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5pbXBvcnQgSW50ZXJuYWxSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbFJvdXRpbmdcIjtcbmltcG9ydCBNZXNzYWdlSGFuZGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvTWVzc2FnZUhhbmRsZXJcIjtcbmltcG9ydCBQYWdlUmVhZHkgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1BhZ2VSZWFkeVwiO1xuaW1wb3J0IFBhZ2luYXRvciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUGFnaW5hdG9yXCI7XG5pbXBvcnQgUGxhY2Vob2xkZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1BsYWNlaG9sZGVyXCI7XG5pbXBvcnQgUmVjb21tZW5kYXRpb25zIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9SZWNvbW1lbmRhdGlvbnNcIjtcbmltcG9ydCBSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Sb3V0aW5nXCI7XG5pbXBvcnQgU2hhcmUgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1NoYXJlXCI7XG5pbXBvcnQgU2lkZUVmZmVjdHMgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1NpZGVFZmZlY3RzXCI7XG5pbXBvcnQgVGVsZW1ldHJ5IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9UZWxlbWV0cnlcIjtcbmltcG9ydCBWaWV3U3RhdGUgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZVwiO1xuaW1wb3J0IENvbGxhYm9yYXRpb25Gb3JtYXR0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvQ29sbGFib3JhdGlvbkZvcm1hdHRlclwiO1xuaW1wb3J0IENyaXRpY2FsaXR5Rm9ybWF0dGVyIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL0NyaXRpY2FsaXR5Rm9ybWF0dGVyXCI7XG5pbXBvcnQgRlBNRm9ybWF0dGVyIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL0ZQTUZvcm1hdHRlclwiO1xuaW1wb3J0IEtQSUZvcm1hdHRlciBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9LUElGb3JtYXR0ZXJcIjtcbmltcG9ydCBTdGFuZGFyZEZvcm1hdHRlciBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9TdGFuZGFyZEZvcm1hdHRlclwiO1xuaW1wb3J0IFZhbHVlRm9ybWF0dGVyIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL1ZhbHVlRm9ybWF0dGVyXCI7XG5pbXBvcnQgdHlwZSB7IFRpdGxlSW5mb3JtYXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvcm9vdFZpZXcvUm9vdFZpZXdCYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9tZGMvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPYmplY3RQYWdlTGF5b3V0IGZyb20gXCJzYXAvdXhhcC9PYmplY3RQYWdlTGF5b3V0XCI7XG5pbXBvcnQgQ29udGV4dFNoYXJpbmcgZnJvbSBcIi4vY29udHJvbGxlcmV4dGVuc2lvbnMvQ29udGV4dFNoYXJpbmdcIjtcbmltcG9ydCBDb2xsYWJvcmF0aW9uTWFuYWdlciBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9jYXJkcy9Db2xsYWJvcmF0aW9uTWFuYWdlclwiO1xuXG4vKipcbiAqIEJhc2UgY29udHJvbGxlciBjbGFzcyBmb3IgeW91ciBjdXN0b20gcGFnZSB1c2VkIGluc2lkZSBhbiBTQVAgRmlvcmkgZWxlbWVudHMgYXBwbGljYXRpb24uXG4gKlxuICogVGhpcyBjb250cm9sbGVyIHByb3ZpZGVzIHByZWNvbmZpZ3VyZWQgZXh0ZW5zaW9ucyB0aGF0IHdpbGwgZW5zdXJlIHlvdSBoYXZlIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXRpZXMgcmVxdWlyZWQgdG8gdXNlIHRoZSBidWlsZGluZyBibG9ja3MuXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS44OC4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLlBhZ2VDb250cm9sbGVyXCIpXG5jbGFzcyBQYWdlQ29udHJvbGxlciBleHRlbmRzIEJhc2VDb250cm9sbGVyIHtcblx0QHVzaW5nRXh0ZW5zaW9uKFJvdXRpbmcpXG5cdHJvdXRpbmchOiBSb3V0aW5nO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihDb2xsYWJvcmF0aXZlRHJhZnQpXG5cdGNvbGxhYm9yYXRpdmVEcmFmdCE6IENvbGxhYm9yYXRpdmVEcmFmdDtcblxuXHRAdXNpbmdFeHRlbnNpb24oXG5cdFx0SW50ZXJuYWxSb3V0aW5nLm92ZXJyaWRlKHtcblx0XHRcdG9uQWZ0ZXJCaW5kaW5nOiBmdW5jdGlvbiAodGhpczogSW50ZXJuYWxSb3V0aW5nKSB7XG5cdFx0XHRcdGNvbnN0IHZpZXcgPSB0aGlzLmdldFZpZXcoKTtcblx0XHRcdFx0Y29uc3QgY29udHJvbGxlciA9IHZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyO1xuXHRcdFx0XHRjb250cm9sbGVyLl9vbkludGVybmFsQWZ0ZXJCaW5kaW5nKCk7XG5cdFx0XHR9XG5cdFx0fSlcblx0KVxuXHRfcm91dGluZyE6IEludGVybmFsUm91dGluZztcblxuXHRAdXNpbmdFeHRlbnNpb24oRWRpdEZsb3cpXG5cdGVkaXRGbG93ITogRWRpdEZsb3c7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKEludGVudEJhc2VkTmF2aWdhdGlvbilcblx0aW50ZW50QmFzZWROYXZpZ2F0aW9uITogSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbilcblx0X2ludGVudEJhc2VkTmF2aWdhdGlvbiE6IEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihQYWdlUmVhZHkpXG5cdHBhZ2VSZWFkeSE6IFBhZ2VSZWFkeTtcblxuXHRAdXNpbmdFeHRlbnNpb24oTWVzc2FnZUhhbmRsZXIpXG5cdG1lc3NhZ2VIYW5kbGVyITogTWVzc2FnZUhhbmRsZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFNoYXJlKVxuXHRzaGFyZSE6IFNoYXJlO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihQYWdpbmF0b3IpXG5cdHBhZ2luYXRvciE6IFBhZ2luYXRvcjtcblxuXHRAdXNpbmdFeHRlbnNpb24oVmlld1N0YXRlKVxuXHR2aWV3U3RhdGUhOiBWaWV3U3RhdGU7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFBsYWNlaG9sZGVyKVxuXHRwbGFjZWhvbGRlciE6IFBsYWNlaG9sZGVyO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihTaWRlRWZmZWN0cylcblx0X3NpZGVFZmZlY3RzITogU2lkZUVmZmVjdHM7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFJlY29tbWVuZGF0aW9ucylcblx0cmVjb21tZW5kYXRpb25zITogUmVjb21tZW5kYXRpb25zO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihUZWxlbWV0cnkpXG5cdHRlbGVtZXRyeSE6IFRlbGVtZXRyeTtcblxuXHRAdXNpbmdFeHRlbnNpb24oQ29udGV4dFNoYXJpbmcpXG5cdGNvbnRleHRTaGFyaW5nITogQ29udGV4dFNoYXJpbmc7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKENvbGxhYm9yYXRpb25NYW5hZ2VyKVxuXHRjb2xsYWJvcmF0aW9uTWFuYWdlciE6IENvbGxhYm9yYXRpb25NYW5hZ2VyO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihJbmxpbmVFZGl0Rmxvdylcblx0aW5saW5lRWRpdEZsb3chOiBJbmxpbmVFZGl0RmxvdztcblxuXHRleHRlbnNpb24hOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuXHRfb1ZpZXc/OiBWaWV3O1xuXG5cdHJvdXRpbmdUYXJnZXROYW1lPzogc3RyaW5nO1xuXG5cdHByb3RlY3RlZCBleHRlbnNpb25BUEk/OiBFeHRlbnNpb25BUEk7XG5cblx0cHJvdGVjdGVkIF9mb3JtYXR0ZXJzID0ge1xuXHRcdFZhbHVlRm9ybWF0dGVyOiBWYWx1ZUZvcm1hdHRlcixcblx0XHRTdGFuZGFyZEZvcm1hdHRlcjogU3RhbmRhcmRGb3JtYXR0ZXIsXG5cdFx0Q3JpdGljYWxpdHlGb3JtYXR0ZXI6IENyaXRpY2FsaXR5Rm9ybWF0dGVyLFxuXHRcdEZQTUZvcm1hdHRlcjogRlBNRm9ybWF0dGVyLFxuXHRcdEtQSUZvcm1hdHRlcjogS1BJRm9ybWF0dGVyLFxuXHRcdENvbGxhYm9yYXRpb25Gb3JtYXR0ZXI6IENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJcblx0fTtcblxuXHRpbml0aWFsaXNhdGlvbkZvclBhZ2VDb250cm9sbGVyRG9uZVByb3Blcmx5ID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cblx0XHRjb25zdCBvd25Qcm9wcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuY29uc3RydWN0b3IucHJvdG90eXBlKTtcblx0XHRpZiAob3duUHJvcHMuaW5jbHVkZXMoXCJfaXNFeHRlbnNpb25cIikpIHtcblx0XHRcdG93blByb3BzLnNwbGljZSgwLCAwLCAuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5jb25zdHJ1Y3Rvci5wcm90b3R5cGUpKSk7IC8vIENhc2Ugd2hlbiB3ZSBoYXZlIGFuIGV4dGVuc2lvbiB0byB0aGUgY29udHJvbGxlciAoaWUuOiBhcmliYSlcblx0XHR9XG5cdFx0Zm9yIChjb25zdCBvd25Qcm9wIG9mIG93blByb3BzKSB7XG5cdFx0XHRpZiAob3duUHJvcCAhPT0gXCJjb25zdHJ1Y3RvclwiICYmIG93blByb3AgIT09IFwiZ2V0TWV0YWRhdGFcIiAmJiBvd25Qcm9wICE9PSBcImV4dGVuc2lvblwiKSB7XG5cdFx0XHRcdGNvbnN0IGZuUHJvcCA9ICh0aGlzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtvd25Qcm9wXTtcblx0XHRcdFx0aWYgKGZuUHJvcCAmJiB0eXBlb2YgZm5Qcm9wID09PSBcImZ1bmN0aW9uXCIgJiYgIShmblByb3AgYXMgeyBnZXRNZXRhZGF0YT86IEZ1bmN0aW9uIH0pLmdldE1ldGFkYXRhKSB7XG5cdFx0XHRcdFx0KHRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW293blByb3BdID0gKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd24gPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3Qgb3duZXJDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5nZXRWaWV3KCkpO1xuXHRcdFx0XHRcdFx0aWYgKG93bmVyQ29tcG9uZW50KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvd25lckNvbXBvbmVudC5ydW5Bc093bmVyKCgpID0+IGZuUHJvcC5hcHBseSh0aGlzLCBhcmdzKSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZm5Qcm9wLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgXCJvVmlld1wiLCB7XG5cdFx0XHRnZXQoKTogVmlldyB8IHVuZGVmaW5lZCB7XG5cdFx0XHRcdHJldHVybiB0aGlzLl9vVmlldztcblx0XHRcdH0sXG5cdFx0XHRzZXQodjogVmlldykge1xuXHRcdFx0XHR0aGlzLl9vVmlldyA9IHY7XG5cdFx0XHRcdC8vIE9uIHRoZSBpbml0aWFsIHZpZXcgaW5zdGFudGlhdGlvbiBmcm9tIFhNTCB0aGUgdGVtcGxhdGluZyBwcm9jZXNzIG1heSBiZSBmaW5pc2hlZCBiZWZvcmUgdGhlIHZpZXcgaXMgY29tcGxldGVseSBjcmVhdGVkXG5cdFx0XHRcdC8vIFdoZW4gdGhhdCBoYXBwZW5zIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHJvb3QgY29udHJvbGxlciBpcyBhdmFpbGFibGUgb24gdGhlIFRlbXBsYXRlQ29tcG9uZW50XG5cdFx0XHRcdHRoaXMuZ2V0T3duZXJDb21wb25lbnQoKT8uc2V0Um9vdENvbnRyb2xsZXI/Lih0aGlzKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRvbkluaXQoKTogdm9pZCB7XG5cdFx0Y29uc3Qgb1VJTW9kZWwgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldE1vZGVsKFwidWlcIiksXG5cdFx0XHRvSW50ZXJuYWxNb2RlbCA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWwsXG5cdFx0XHRzUGF0aCA9IGAvcGFnZXMvJHt0aGlzLmdldFZpZXcoKS5nZXRJZCgpfWA7XG5cblx0XHRvVUlNb2RlbC5zZXRQcm9wZXJ0eShzUGF0aCwge1xuXHRcdFx0Y29udHJvbHM6IHt9XG5cdFx0fSk7XG5cdFx0b0ludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoc1BhdGgsIHtcblx0XHRcdGNvbnRyb2xzOiB7fSxcblx0XHRcdGNvbGxhYm9yYXRpb246IHt9XG5cdFx0fSk7XG5cdFx0dGhpcy5nZXRWaWV3KCkuYmluZEVsZW1lbnQoe1xuXHRcdFx0cGF0aDogXCIvXCIsXG5cdFx0XHRtb2RlbDogXCJ1aVwiXG5cdFx0fSk7XG5cdFx0dGhpcy5nZXRWaWV3KCkuYmluZEVsZW1lbnQoe1xuXHRcdFx0cGF0aDogc1BhdGgsXG5cdFx0XHRtb2RlbDogXCJpbnRlcm5hbFwiXG5cdFx0fSk7XG5cblx0XHQvLyBmb3IgdGhlIHRpbWUgYmVpbmcgcHJvdmlkZSBpdCBhbHNvIHBhZ2VJbnRlcm5hbCBhcyBzb21lIG1hY3JvcyBhY2Nlc3MgaXQgLSB0byBiZSByZW1vdmVkXG5cdFx0dGhpcy5nZXRWaWV3KCkuYmluZEVsZW1lbnQoe1xuXHRcdFx0cGF0aDogc1BhdGgsXG5cdFx0XHRtb2RlbDogXCJwYWdlSW50ZXJuYWxcIlxuXHRcdH0pO1xuXHRcdHRoaXMuZ2V0VmlldygpLnNldE1vZGVsKG9JbnRlcm5hbE1vZGVsLCBcInBhZ2VJbnRlcm5hbFwiKTtcblxuXHRcdC8vIGFzIHRoZSBtb2RlbCBwcm9wYWdhdGlvbiBoYXBwZW5zIGFmdGVyIGluaXQgYnV0IHdlIGFjdHVhbGx5IHdhbnQgdG8gYWNjZXNzIHRoZSBiaW5kaW5nIGNvbnRleHQgaW4gdGhlXG5cdFx0Ly8gaW5pdCBwaGFzZSBhbHJlYWR5IHNldHRpbmcgdGhlIG1vZGVsIGhlcmVcblx0XHR0aGlzLmdldFZpZXcoKS5zZXRNb2RlbChvVUlNb2RlbCwgXCJ1aVwiKTtcblx0XHR0aGlzLmdldFZpZXcoKS5zZXRNb2RlbChvSW50ZXJuYWxNb2RlbCwgXCJpbnRlcm5hbFwiKTtcblx0XHR0aGlzLmluaXRpYWxpc2F0aW9uRm9yUGFnZUNvbnRyb2xsZXJEb25lUHJvcGVybHkgPSB0cnVlO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdG9uQmVmb3JlUmVuZGVyaW5nKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5pbml0aWFsaXNhdGlvbkZvclBhZ2VDb250cm9sbGVyRG9uZVByb3Blcmx5KSB7XG5cdFx0XHRMb2cuZXJyb3IoXG5cdFx0XHRcdFwiUGFnZUNvbnRyb2xsZXIgb25Jbml0IGRpZG4ndCBydW4gcHJvcGVybHkuIFlvdXIgQ29udHJvbGxlci5vbkluaXQoKSBtZXRob2QgbWlnaHQgbm90IGV4dGVuZCB0aGUgc2FwLmZlLmNvcmUuUGFnZUNvbnRyb2xsZXIgb25Jbml0IG1ldGhvZCBwcm9wZXJseS4gXCJcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnBsYWNlaG9sZGVyLmF0dGFjaEhpZGVDYWxsYmFjaykge1xuXHRcdFx0dGhpcy5wbGFjZWhvbGRlci5hdHRhY2hIaWRlQ2FsbGJhY2soKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBleHRlbnNpb24gQVBJIGZvciB0aGUgY3VycmVudCBwYWdlLlxuXHQgKiBAcGFyYW0gaWQgUFJJVkFURVxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIFRoZSBleHRlbnNpb24gQVBJLlxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdGdldEV4dGVuc2lvbkFQSShpZD86IHN0cmluZyk6IEV4dGVuc2lvbkFQSSB7XG5cdFx0aWYgKCF0aGlzLmV4dGVuc2lvbkFQSSkge1xuXHRcdFx0dGhpcy5leHRlbnNpb25BUEkgPSBuZXcgRXh0ZW5zaW9uQVBJKHRoaXMsIGlkKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZXh0ZW5zaW9uQVBJO1xuXHR9XG5cblx0Ly8gV2Ugc3BlY2lmeSB0aGUgZXh0ZW5zaWJpbGl0eSBoZXJlIHRoZSBzYW1lIHdheSBhcyBpdCBpcyBkb25lIGluIHRoZSBvYmplY3QgcGFnZSBjb250cm9sbGVyXG5cdC8vIHNpbmNlIHRoZSBzcGVjaWZpY2F0aW9uIGhlcmUgb3ZlcnJpZGVzIGl0IGFuZCBpZiB3ZSBkbyBub3Qgc3BlY2lmeSBhbnl0aGluZyBoZXJlLCB0aGVcblx0Ly8gYmVoYXZpb3IgZGVmYXVsdHMgdG8gYW4gZXhlY3V0ZSBpbnN0ZWFkIVxuXHQvLyBUT0RPIFRoaXMgbWF5IG5vdCBiZSBpZGVhbCwgc2luY2UgaXQgYWxzbyBpbmZsdWVuY2VzIHRoZSBsaXN0IHJlcG9ydCBjb250cm9sbGVyIGJ1dCBjdXJyZW50bHkgaXQncyB0aGUgYmVzdCBzb2x1dGlvbi5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKFwiQWZ0ZXJcIilcblx0b25QYWdlUmVhZHkoX21QYXJhbWV0ZXJzOiB1bmtub3duKTogdm9pZCB7XG5cdFx0Ly8gQ291bGQgYmUgb3ZlcnJpZGRlbiBieSB0aGUgaW1wbG1lbnRpbmcgY29udHJvbGxlci5cblx0fVxuXG5cdGFzeW5jIF9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpOiBQcm9taXNlPFRpdGxlSW5mb3JtYXRpb24+IHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9IGFzIFRpdGxlSW5mb3JtYXRpb24pO1xuXHR9XG5cblx0X2dldFBhZ2VNb2RlbCgpOiBKU09OTW9kZWwgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHBhZ2VDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5nZXRWaWV3KCkpO1xuXHRcdHJldHVybiBwYWdlQ29tcG9uZW50Py5nZXRNb2RlbChcIl9wYWdlTW9kZWxcIikgYXMgSlNPTk1vZGVsO1xuXHR9XG5cblx0LyoqXG5cdCAqIE9wZW5zIG9uZSBvciBtb3JlIG5ldyB0YWJzIHdpdGggdGhlIGdpdmVuIG91dGJvdW5kIHRhcmdldCBmb3IgdGhlIHNlbGVjdGVkIGNvbnRleHRzLlxuXHQgKiBAcGFyYW0gb3V0Ym91bmRUYXJnZXQgVGhlIG91dGJvdW5kIHRhcmdldFxuXHQgKiBAcGFyYW0gY29udGV4dHMgVGhlIHNlbGVjdGVkIGNvbnRleHRzXG5cdCAqIEBwYXJhbSBjcmVhdGVQYXRoIFRoZSBjcmVhdGUgcGF0aFxuXHQgKiBAcGFyYW0gbWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWxlY3RlZCBpdGVtc1xuXHQgKi9cblx0b25PcGVuSW5OZXdUYWJOYXZpZ2F0ZU91dEJvdW5kKFxuXHRcdG91dGJvdW5kVGFyZ2V0OiBzdHJpbmcsXG5cdFx0Y29udGV4dHM6IENvbnRleHRbXSxcblx0XHRjcmVhdGVQYXRoOiBzdHJpbmcsXG5cdFx0bWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zOiBudW1iZXJcblx0KTogdm9pZCB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG5cdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0aWYgKGNvbnRleHRzLmxlbmd0aCA8PSBtYXhOdW1iZXJPZlNlbGVjdGVkSXRlbXMpIHtcblx0XHRcdGNvbnRleHRzLmZvckVhY2goZnVuY3Rpb24gKGNvbnRleHQ6IENvbnRleHQpIHtcblx0XHRcdFx0dGhhdC5faW50ZW50QmFzZWROYXZpZ2F0aW9uLm9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZCh0aGF0LCBvdXRib3VuZFRhcmdldCwgY29udGV4dCwgY3JlYXRlUGF0aCwgXCJleHBsYWNlXCIpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdE1lc3NhZ2VCb3gud2FybmluZyhcblx0XHRcdFx0TGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5tYWNyb3NcIikhLmdldFRleHQoXCJUX1RBQkxFX05BVklHQVRJT05fVE9PX01BTllfSVRFTVNfU0VMRUNURURcIiwgW1xuXHRcdFx0XHRcdG1heE51bWJlck9mU2VsZWN0ZWRJdGVtc1xuXHRcdFx0XHRdKVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRfb25JbnRlcm5hbEFmdGVyQmluZGluZygpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRWaWV3KCk7XG5cdFx0dGhpcy5wYWdlUmVhZHkud2FpdEZvcih0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldEFwcFN0YXRlSGFuZGxlcigpLmFwcGx5QXBwU3RhdGUodmlldy5nZXRJZCgpLCB2aWV3KSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBuYW1lIG9mIHRoZSBwYWdlIGFzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IHJvdXRpbmcgc2VjdGlvbi5cblx0ICogQHJldHVybnMgVGhlIG5hbWUgb2YgdGhlIHBhZ2Vcblx0ICovXG5cdGdldFJvdXRpbmdUYXJnZXROYW1lKCk6IHN0cmluZyB7XG5cdFx0aWYgKCF0aGlzLnJvdXRpbmdUYXJnZXROYW1lKSB7XG5cdFx0XHR0aGlzLnJvdXRpbmdUYXJnZXROYW1lID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKS5nZXRSb3V0aW5nU2VydmljZSgpLmdldFRhcmdldE5hbWVGb3JWaWV3KHRoaXMuZ2V0VmlldygpKSA/PyBcIlwiO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5yb3V0aW5nVGFyZ2V0TmFtZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gZm9yd2FyZCBzZXRTaG93Rm9vdGVyIG9uIHRoZSBmaXJzdCBjb250ZW50IG9mIHRoZSB2aWV3IGlmIHJlY29nbml6ZWQuXG5cdCAqIEBwYXJhbSBzaG93XG5cdCAqL1xuXHRzZXRTaG93Rm9vdGVyKHNob3cgPSBmYWxzZSk6IHZvaWQge1xuXHRcdGNvbnN0IHBhZ2UgPSB0aGlzLmdldFZpZXcoKS5nZXRDb250ZW50KClbMF07XG5cdFx0aWYgKHBhZ2UuaXNBPER5bmFtaWNQYWdlPihcInNhcC5mLkR5bmFtaWNQYWdlXCIpIHx8IHBhZ2UuaXNBPE9iamVjdFBhZ2VMYXlvdXQ+KFwic2FwLnV4YXAuT2JqZWN0UGFnZUxheW91dFwiKSkge1xuXHRcdFx0cGFnZS5zZXRTaG93Rm9vdGVyKHNob3cpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gZ2V0IHRoZSBmb290ZXIuXG5cdCAqIEByZXR1cm5zIFRoZSBmb290ZXIgb2YgdGhlIHBhZ2UgaWYgaXQgZXhpc3RzXG5cdCAqL1xuXHRnZXRGb290ZXIoKTogQ29udHJvbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgcGFnZSA9IHRoaXMuZ2V0VmlldygpLmdldENvbnRlbnQoKVswXTtcblx0XHRpZiAocGFnZS5pc0E8RHluYW1pY1BhZ2U+KFwic2FwLmYuRHluYW1pY1BhZ2VcIikgfHwgcGFnZS5pc0E8T2JqZWN0UGFnZUxheW91dD4oXCJzYXAudXhhcC5PYmplY3RQYWdlTGF5b3V0XCIpKSB7XG5cdFx0XHRyZXR1cm4gcGFnZS5nZXRGb290ZXIoKSBhcyB1bmtub3duIGFzIENvbnRyb2w7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFnZUNvbnRyb2xsZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFQQSxJQVNNQSxjQUFjLElBQUFDLElBQUEsR0FEbkJDLGNBQWMsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFBQyxLQUFBLEdBRTNDQyxjQUFjLENBQUNDLE9BQU8sQ0FBQyxFQUFBQyxLQUFBLEdBR3ZCRixjQUFjLENBQUNHLGtCQUFrQixDQUFDLEVBQUFDLEtBQUEsR0FHbENKLGNBQWMsQ0FDZEssZUFBZSxDQUFDQyxRQUFRLENBQUM7SUFDeEJDLGNBQWMsRUFBRSxTQUFBQSxDQUFBLEVBQWlDO01BQ2hELE1BQU1DLElBQUksR0FBRyxJQUFJLENBQUNDLE9BQU8sQ0FBQyxDQUFDO01BQzNCLE1BQU1DLFVBQVUsR0FBR0YsSUFBSSxDQUFDRyxhQUFhLENBQUMsQ0FBbUI7TUFDekRELFVBQVUsQ0FBQ0UsdUJBQXVCLENBQUMsQ0FBQztJQUNyQztFQUNELENBQUMsQ0FDRixDQUFDLEVBQUFDLEtBQUEsR0FHQWIsY0FBYyxDQUFDYyxRQUFRLENBQUMsRUFBQUMsS0FBQSxHQUd4QmYsY0FBYyxDQUFDZ0IscUJBQXFCLENBQUMsRUFBQUMsS0FBQSxHQUdyQ2pCLGNBQWMsQ0FBQ2tCLDZCQUE2QixDQUFDLEVBQUFDLEtBQUEsR0FHN0NuQixjQUFjLENBQUNvQixTQUFTLENBQUMsRUFBQUMsS0FBQSxHQUd6QnJCLGNBQWMsQ0FBQ3NCLGNBQWMsQ0FBQyxFQUFBQyxNQUFBLEdBRzlCdkIsY0FBYyxDQUFDd0IsS0FBSyxDQUFDLEVBQUFDLE1BQUEsR0FHckJ6QixjQUFjLENBQUMwQixTQUFTLENBQUMsRUFBQUMsTUFBQSxHQUd6QjNCLGNBQWMsQ0FBQzRCLFNBQVMsQ0FBQyxFQUFBQyxNQUFB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
343
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlQ29udHJvbGxlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwidXNpbmdFeHRlbnNpb24iLCJSb3V0aW5nIiwiX2RlYzMiLCJDb2xsYWJvcmF0aXZlRHJhZnQiLCJfZGVjNCIsIkludGVybmFsUm91dGluZyIsIm92ZXJyaWRlIiwib25BZnRlckJpbmRpbmciLCJ2aWV3IiwiZ2V0VmlldyIsImNvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwiX29uSW50ZXJuYWxBZnRlckJpbmRpbmciLCJfZGVjNSIsIkVkaXRGbG93IiwiX2RlYzYiLCJJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJfZGVjNyIsIkludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiX2RlYzgiLCJQYWdlUmVhZHkiLCJfZGVjOSIsIk1lc3NhZ2VIYW5kbGVyIiwiX2RlYzEwIiwiU2hhcmUiLCJfZGVjMTEiLCJQYWdpbmF0b3IiLCJfZGVjMTIiLCJWaWV3U3RhdGUiLCJfZGVjMTMiLCJQbGFjZWhvbGRlciIsIl9kZWMxNCIsIlNpZGVFZmZlY3RzIiwiX2RlYzE1IiwiUmVjb21tZW5kYXRpb25zIiwiX2RlYzE2IiwiVGVsZW1ldHJ5IiwiX2RlYzE3IiwiQ29udGV4dFNoYXJpbmciLCJfZGVjMTgiLCJDb2xsYWJvcmF0aW9uTWFuYWdlciIsIl9kZWMxOSIsIklubGluZUVkaXRGbG93IiwiX2RlYzIwIiwicHVibGljRXh0ZW5zaW9uIiwiX2RlYzIxIiwiX2RlYzIyIiwiX2RlYzIzIiwiX2RlYzI0IiwiZXh0ZW5zaWJsZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQmFzZUNvbnRyb2xsZXIiLCJuYW1lIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9mb3JtYXR0ZXJzIiwiU2NvcGUiLCJpbml0aWFsaXNhdGlvbkZvclBhZ2VDb250cm9sbGVyRG9uZVByb3Blcmx5Iiwib3duUHJvcHMiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJpbmNsdWRlcyIsInNwbGljZSIsImdldFByb3RvdHlwZU9mIiwib3duUHJvcCIsImZuUHJvcCIsImdldE1ldGFkYXRhIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJvd25lckNvbXBvbmVudCIsIkNvbXBvbmVudCIsImdldE93bmVyQ29tcG9uZW50Rm9yIiwicnVuQXNPd25lciIsImFwcGx5IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJfb1ZpZXciLCJzZXQiLCJ2IiwiZ2V0T3duZXJDb21wb25lbnQiLCJzZXRSb290Q29udHJvbGxlciIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwib25Jbml0IiwiZm5Nb2RlbCIsImdldE1vZGVsIiwibW9kZWxOYW1lIiwib25CZWZvcmVSZW5kZXJpbmciLCJMb2ciLCJlcnJvciIsInBsYWNlaG9sZGVyIiwiYXR0YWNoSGlkZUNhbGxiYWNrIiwiZ2V0RXh0ZW5zaW9uQVBJIiwiaWQiLCJleHRlbnNpb25BUEkiLCJFeHRlbnNpb25BUEkiLCJvblBhZ2VSZWFkeSIsIl9tUGFyYW1ldGVycyIsIl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbiIsIlByb21pc2UiLCJyZXNvbHZlIiwiX2dldEJyb3dzZXJUaXRsZSIsInBhZ2VUaXRsZUluZm9ybWF0aW9uIiwic3VidGl0bGUiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwidGl0bGVBZ2dyZWdhdG9yIiwidGl0bGVFeGlzdHMiLCJ1bmRlZmluZWQiLCJzdWJ0aXRsZUV4aXN0cyIsImRlc2NyaXB0aW9uRXhpc3RzIiwid2FybmluZyIsImdldElkIiwiaGVhZGVyVGV4dCIsIl9nZXRQYWdlTW9kZWwiLCJwYWdlQ29tcG9uZW50Iiwib25PcGVuSW5OZXdUYWJOYXZpZ2F0ZU91dEJvdW5kIiwib3V0Ym91bmRUYXJnZXQiLCJjb250ZXh0cyIsImNyZWF0ZVBhdGgiLCJtYXhOdW1iZXJPZlNlbGVjdGVkSXRlbXMiLCJ0aGF0IiwiZm9yRWFjaCIsImNvbnRleHQiLCJfaW50ZW50QmFzZWROYXZpZ2F0aW9uIiwib25DaGV2cm9uUHJlc3NOYXZpZ2F0ZU91dEJvdW5kIiwiTWVzc2FnZUJveCIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImdldFRleHQiLCJwYWdlUmVhZHkiLCJ3YWl0Rm9yIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0QXBwU3RhdGVIYW5kbGVyIiwiYXBwbHlBcHBTdGF0ZSIsImdldFJvdXRpbmdUYXJnZXROYW1lIiwicm91dGluZ1RhcmdldE5hbWUiLCJnZXRSb3V0aW5nU2VydmljZSIsImdldFRhcmdldE5hbWVGb3JWaWV3Iiwic2V0U2hvd0Zvb3RlciIsInNob3ciLCJwYWdlIiwiZ2V0Q29udGVudCIsImlzQSIsImdldEZvb3RlciIsIkJhc2VDb250cm9sbGVyIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJQYWdlQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIER5bmFtaWNQYWdlIGZyb20gXCJzYXAvZi9EeW5hbWljUGFnZVwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIHB1YmxpY0V4dGVuc2lvbiwgdXNpbmdFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IEZFVmlldyB9IGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IEJhc2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IEV4dGVuc2lvbkFQSSBmcm9tIFwic2FwL2ZlL2NvcmUvRXh0ZW5zaW9uQVBJXCI7XG5pbXBvcnQgQ29sbGFib3JhdGl2ZURyYWZ0IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Db2xsYWJvcmF0aXZlRHJhZnRcIjtcbmltcG9ydCBFZGl0RmxvdyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvRWRpdEZsb3dcIjtcbmltcG9ydCBJbmxpbmVFZGl0RmxvdyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW5saW5lRWRpdEZsb3dcIjtcbmltcG9ydCBJbnRlbnRCYXNlZE5hdmlnYXRpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IEludGVybmFsUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxSb3V0aW5nXCI7XG5pbXBvcnQgTWVzc2FnZUhhbmRsZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgUGFnZVJlYWR5IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9QYWdlUmVhZHlcIjtcbmltcG9ydCBQYWdpbmF0b3IgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1BhZ2luYXRvclwiO1xuaW1wb3J0IFBsYWNlaG9sZGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9QbGFjZWhvbGRlclwiO1xuaW1wb3J0IFJlY29tbWVuZGF0aW9ucyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUmVjb21tZW5kYXRpb25zXCI7XG5pbXBvcnQgUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUm91dGluZ1wiO1xuaW1wb3J0IFNoYXJlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaGFyZVwiO1xuaW1wb3J0IFNpZGVFZmZlY3RzIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaWRlRWZmZWN0c1wiO1xuaW1wb3J0IFRlbGVtZXRyeSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVGVsZW1ldHJ5XCI7XG5pbXBvcnQgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCBTY29wZSBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9TY29wZVwiO1xuaW1wb3J0IHR5cGUgeyBUaXRsZUluZm9ybWF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3Jvb3RWaWV3L1Jvb3RWaWV3QmFzZUNvbnRyb2xsZXJcIjtcblxuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9tZGMvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IFRpdGxlQWRkaXRpb25hbEluZm8gfSBmcm9tIFwic2FwL3VzaGVsbC91aTVzZXJ2aWNlL1NoZWxsVUlTZXJ2aWNlXCI7XG5pbXBvcnQgdHlwZSBPYmplY3RQYWdlTGF5b3V0IGZyb20gXCJzYXAvdXhhcC9PYmplY3RQYWdlTGF5b3V0XCI7XG5pbXBvcnQgQ29udGV4dFNoYXJpbmcgZnJvbSBcIi4vY29udHJvbGxlcmV4dGVuc2lvbnMvQ29udGV4dFNoYXJpbmdcIjtcbmltcG9ydCBDb2xsYWJvcmF0aW9uTWFuYWdlciBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9jYXJkcy9Db2xsYWJvcmF0aW9uTWFuYWdlclwiO1xuLyoqXG4gKiBCYXNlIGNvbnRyb2xsZXIgY2xhc3MgZm9yIHlvdXIgY3VzdG9tIHBhZ2UgdXNlZCBpbnNpZGUgYW4gU0FQIEZpb3JpIGVsZW1lbnRzIGFwcGxpY2F0aW9uLlxuICpcbiAqIFRoaXMgY29udHJvbGxlciBwcm92aWRlcyBwcmVjb25maWd1cmVkIGV4dGVuc2lvbnMgdGhhdCBlbnN1cmUgeW91IGhhdmUgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdGllcyByZXF1aXJlZCB0byB1c2UgdGhlIGJ1aWxkaW5nIGJsb2Nrcy5cbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjg4LjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuUGFnZUNvbnRyb2xsZXJcIilcbmNsYXNzIFBhZ2VDb250cm9sbGVyIGV4dGVuZHMgQmFzZUNvbnRyb2xsZXIge1xuXHRAdXNpbmdFeHRlbnNpb24oUm91dGluZylcblx0cm91dGluZyE6IFJvdXRpbmc7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKENvbGxhYm9yYXRpdmVEcmFmdClcblx0Y29sbGFib3JhdGl2ZURyYWZ0ITogQ29sbGFib3JhdGl2ZURyYWZ0O1xuXG5cdEB1c2luZ0V4dGVuc2lvbihcblx0XHRJbnRlcm5hbFJvdXRpbmcub3ZlcnJpZGUoe1xuXHRcdFx0b25BZnRlckJpbmRpbmc6IGZ1bmN0aW9uICh0aGlzOiBJbnRlcm5hbFJvdXRpbmcpIHtcblx0XHRcdFx0Y29uc3QgdmlldyA9IHRoaXMuZ2V0VmlldygpO1xuXHRcdFx0XHRjb25zdCBjb250cm9sbGVyID0gdmlldy5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXI7XG5cdFx0XHRcdGNvbnRyb2xsZXIuX29uSW50ZXJuYWxBZnRlckJpbmRpbmcoKTtcblx0XHRcdH1cblx0XHR9KVxuXHQpXG5cdF9yb3V0aW5nITogSW50ZXJuYWxSb3V0aW5nO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihFZGl0Rmxvdylcblx0ZWRpdEZsb3chOiBFZGl0RmxvdztcblxuXHRAdXNpbmdFeHRlbnNpb24oSW50ZW50QmFzZWROYXZpZ2F0aW9uKVxuXHRpbnRlbnRCYXNlZE5hdmlnYXRpb24hOiBJbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cblx0QHVzaW5nRXh0ZW5zaW9uKEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uKVxuXHRfaW50ZW50QmFzZWROYXZpZ2F0aW9uITogSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFBhZ2VSZWFkeSlcblx0cGFnZVJlYWR5ITogUGFnZVJlYWR5O1xuXG5cdEB1c2luZ0V4dGVuc2lvbihNZXNzYWdlSGFuZGxlcilcblx0bWVzc2FnZUhhbmRsZXIhOiBNZXNzYWdlSGFuZGxlcjtcblxuXHRAdXNpbmdFeHRlbnNpb24oU2hhcmUpXG5cdHNoYXJlITogU2hhcmU7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFBhZ2luYXRvcilcblx0cGFnaW5hdG9yITogUGFnaW5hdG9yO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihWaWV3U3RhdGUpXG5cdHZpZXdTdGF0ZSE6IFZpZXdTdGF0ZTtcblxuXHRAdXNpbmdFeHRlbnNpb24oUGxhY2Vob2xkZXIpXG5cdHBsYWNlaG9sZGVyITogUGxhY2Vob2xkZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFNpZGVFZmZlY3RzKVxuXHRfc2lkZUVmZmVjdHMhOiBTaWRlRWZmZWN0cztcblxuXHRAdXNpbmdFeHRlbnNpb24oUmVjb21tZW5kYXRpb25zKVxuXHRyZWNvbW1lbmRhdGlvbnMhOiBSZWNvbW1lbmRhdGlvbnM7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFRlbGVtZXRyeSlcblx0dGVsZW1ldHJ5ITogVGVsZW1ldHJ5O1xuXG5cdEB1c2luZ0V4dGVuc2lvbihDb250ZXh0U2hhcmluZylcblx0Y29udGV4dFNoYXJpbmchOiBDb250ZXh0U2hhcmluZztcblxuXHRAdXNpbmdFeHRlbnNpb24oQ29sbGFib3JhdGlvbk1hbmFnZXIpXG5cdGNvbGxhYm9yYXRpb25NYW5hZ2VyITogQ29sbGFib3JhdGlvbk1hbmFnZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKElubGluZUVkaXRGbG93KVxuXHRpbmxpbmVFZGl0RmxvdyE6IElubGluZUVkaXRGbG93O1xuXG5cdGV4dGVuc2lvbiE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5cdF9vVmlldz86IFZpZXc7XG5cblx0cm91dGluZ1RhcmdldE5hbWU/OiBzdHJpbmc7XG5cblx0cHJvdGVjdGVkIGV4dGVuc2lvbkFQST86IEV4dGVuc2lvbkFQSTtcblxuXHRwcm90ZWN0ZWQgX2Zvcm1hdHRlcnMgPSBTY29wZS5fZm9ybWF0dGVycztcblxuXHRpbml0aWFsaXNhdGlvbkZvclBhZ2VDb250cm9sbGVyRG9uZVByb3Blcmx5ID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cblx0XHRjb25zdCBvd25Qcm9wcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuY29uc3RydWN0b3IucHJvdG90eXBlKTtcblx0XHRpZiAob3duUHJvcHMuaW5jbHVkZXMoXCJfaXNFeHRlbnNpb25cIikpIHtcblx0XHRcdG93blByb3BzLnNwbGljZSgwLCAwLCAuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5jb25zdHJ1Y3Rvci5wcm90b3R5cGUpKSk7IC8vIENhc2Ugd2hlbiB3ZSBoYXZlIGFuIGV4dGVuc2lvbiB0byB0aGUgY29udHJvbGxlciAoaWUuOiBhcmliYSlcblx0XHR9XG5cdFx0Zm9yIChjb25zdCBvd25Qcm9wIG9mIG93blByb3BzKSB7XG5cdFx0XHRpZiAob3duUHJvcCAhPT0gXCJjb25zdHJ1Y3RvclwiICYmIG93blByb3AgIT09IFwiZ2V0TWV0YWRhdGFcIiAmJiBvd25Qcm9wICE9PSBcImV4dGVuc2lvblwiKSB7XG5cdFx0XHRcdGNvbnN0IGZuUHJvcCA9ICh0aGlzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtvd25Qcm9wXTtcblx0XHRcdFx0aWYgKGZuUHJvcCAmJiB0eXBlb2YgZm5Qcm9wID09PSBcImZ1bmN0aW9uXCIgJiYgIShmblByb3AgYXMgeyBnZXRNZXRhZGF0YT86IEZ1bmN0aW9uIH0pLmdldE1ldGFkYXRhKSB7XG5cdFx0XHRcdFx0KHRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW293blByb3BdID0gKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd24gPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3Qgb3duZXJDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5nZXRWaWV3KCkpO1xuXHRcdFx0XHRcdFx0aWYgKG93bmVyQ29tcG9uZW50KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvd25lckNvbXBvbmVudC5ydW5Bc093bmVyKCgpID0+IGZuUHJvcC5hcHBseSh0aGlzLCBhcmdzKSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZm5Qcm9wLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgXCJvVmlld1wiLCB7XG5cdFx0XHRnZXQoKTogVmlldyB8IHVuZGVmaW5lZCB7XG5cdFx0XHRcdHJldHVybiB0aGlzLl9vVmlldztcblx0XHRcdH0sXG5cdFx0XHRzZXQodjogVmlldykge1xuXHRcdFx0XHR0aGlzLl9vVmlldyA9IHY7XG5cdFx0XHRcdC8vIE9uIHRoZSBpbml0aWFsIHZpZXcgaW5zdGFudGlhdGlvbiBmcm9tIFhNTCB0aGUgdGVtcGxhdGluZyBwcm9jZXNzIG1heSBiZSBmaW5pc2hlZCBiZWZvcmUgdGhlIHZpZXcgaXMgY29tcGxldGVseSBjcmVhdGVkXG5cdFx0XHRcdC8vIFdoZW4gdGhhdCBoYXBwZW5zIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHJvb3QgY29udHJvbGxlciBpcyBhdmFpbGFibGUgb24gdGhlIFRlbXBsYXRlQ29tcG9uZW50XG5cdFx0XHRcdHRoaXMuZ2V0T3duZXJDb21wb25lbnQoKT8uc2V0Um9vdENvbnRyb2xsZXI/Lih0aGlzKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRvbkluaXQoKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXJDb21wb25lbnQgPSB0aGlzLmdldE93bmVyQ29tcG9uZW50KCk7XG5cdFx0Y29uc3QgZm5Nb2RlbCA9IHRoaXMuZ2V0VmlldygpLmdldE1vZGVsO1xuXHRcdHRoaXMuZ2V0VmlldygpLmdldE1vZGVsID0gKChtb2RlbE5hbWU/OiBzdHJpbmcpOiBNb2RlbCB8IHVuZGVmaW5lZCA9PiB7XG5cdFx0XHRpZiAobW9kZWxOYW1lID09PSBcIiRjbWRcIikge1xuXHRcdFx0XHRyZXR1cm4gZm5Nb2RlbC5hcHBseSh0aGlzLmdldFZpZXcoKSwgW21vZGVsTmFtZV0pO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZuTW9kZWwuYXBwbHkodGhpcy5nZXRWaWV3KCksIFttb2RlbE5hbWVdKSA/PyBvd25lckNvbXBvbmVudC5nZXRNb2RlbChtb2RlbE5hbWUpO1xuXHRcdH0pIGFzIHVua25vd24gYXMgRkVWaWV3W1wiZ2V0TW9kZWxcIl07XG5cblx0XHR0aGlzLmluaXRpYWxpc2F0aW9uRm9yUGFnZUNvbnRyb2xsZXJEb25lUHJvcGVybHkgPSB0cnVlO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdG9uQmVmb3JlUmVuZGVyaW5nKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5pbml0aWFsaXNhdGlvbkZvclBhZ2VDb250cm9sbGVyRG9uZVByb3Blcmx5KSB7XG5cdFx0XHRMb2cuZXJyb3IoXG5cdFx0XHRcdFwiUGFnZUNvbnRyb2xsZXIgb25Jbml0IGRpZG4ndCBydW4gcHJvcGVybHkuIFlvdXIgQ29udHJvbGxlci5vbkluaXQoKSBtZXRob2QgbWlnaHQgbm90IGV4dGVuZCB0aGUgc2FwLmZlLmNvcmUuUGFnZUNvbnRyb2xsZXIgb25Jbml0IG1ldGhvZCBwcm9wZXJseS4gXCJcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnBsYWNlaG9sZGVyLmF0dGFjaEhpZGVDYWxsYmFjaykge1xuXHRcdFx0dGhpcy5wbGFjZWhvbGRlci5hdHRhY2hIaWRlQ2FsbGJhY2soKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBleHRlbnNpb24gQVBJIGZvciB0aGUgY3VycmVudCBwYWdlLlxuXHQgKiBAcGFyYW0gaWQgUFJJVkFURVxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIFRoZSBleHRlbnNpb24gQVBJLlxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdGdldEV4dGVuc2lvbkFQSShpZD86IHN0cmluZyk6IEV4dGVuc2lvbkFQSSB7XG5cdFx0aWYgKCF0aGlzLmV4dGVuc2lvbkFQSSkge1xuXHRcdFx0dGhpcy5leHRlbnNpb25BUEkgPSBuZXcgRXh0ZW5zaW9uQVBJKHRoaXMsIGlkKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZXh0ZW5zaW9uQVBJO1xuXHR9XG5cblx0Ly8gV2Ugc3BlY2lmeSB0aGUgZXh0ZW5zaWJpbGl0eSBoZXJlIHRoZSBzYW1lIHdheSBhcyBpdCBpcyBkb25lIGluIHRoZSBvYmplY3QgcGFnZSBjb250cm9sbGVyXG5cdC8vIHNpbmNlIHRoZSBzcGVjaWZpY2F0aW9uIGhlcmUgb3ZlcnJpZGVzIGl0IGFuZCBpZiB3ZSBkbyBub3Qgc3BlY2lmeSBhbnl0aGluZyBoZXJlLCB0aGVcblx0Ly8gYmVoYXZpb3IgZGVmYXVsdHMgdG8gYW4gZXhlY3V0ZSBpbnN0ZWFkIVxuXHQvLyBUT0RPIFRoaXMgbWF5IG5vdCBiZSBpZGVhbCwgc2luY2UgaXQgYWxzbyBpbmZsdWVuY2VzIHRoZSBsaXN0IHJlcG9ydCBjb250cm9sbGVyIGJ1dCBjdXJyZW50bHkgaXQncyB0aGUgYmVzdCBzb2x1dGlvbi5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKFwiQWZ0ZXJcIilcblx0b25QYWdlUmVhZHkoX21QYXJhbWV0ZXJzOiB1bmtub3duKTogdm9pZCB7XG5cdFx0Ly8gQ291bGQgYmUgb3ZlcnJpZGRlbiBieSB0aGUgaW1wbG1lbnRpbmcgY29udHJvbGxlci5cblx0fVxuXG5cdGFzeW5jIF9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpOiBQcm9taXNlPFRpdGxlSW5mb3JtYXRpb24+IHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9IGFzIFRpdGxlSW5mb3JtYXRpb24pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgYnJvd3NlciB0aXRsZSBvZiB0aGUgb2JqZWN0IHBhZ2UuXG5cdCAqIEBwYXJhbSBwYWdlVGl0bGVJbmZvcm1hdGlvbiBQcmVzZW50IHBhZ2UgdGl0bGUgaW5mb3JtYXRpb25cblx0ICogQHJldHVybnMgVGl0bGUgaW5mb3JtYXRpb24gdG8gYmUgdXNlZCBieSBzaGVsbCBzZXJ2aWNlcyBmb3IgYnJvd3NlciB0aXRsZVxuXHQgKi9cblx0YXN5bmMgX2dldEJyb3dzZXJUaXRsZShwYWdlVGl0bGVJbmZvcm1hdGlvbjogVGl0bGVJbmZvcm1hdGlvbik6IFByb21pc2U8VGl0bGVBZGRpdGlvbmFsSW5mbyB8IHVuZGVmaW5lZD4ge1xuXHRcdGNvbnN0IHsgc3VidGl0bGUsIHRpdGxlLCBkZXNjcmlwdGlvbiB9ID0gcGFnZVRpdGxlSW5mb3JtYXRpb247XG5cdFx0bGV0IHRpdGxlQWdncmVnYXRvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdGNvbnN0IHRpdGxlRXhpc3RzID0gdGl0bGUgIT09IHVuZGVmaW5lZCAmJiB0aXRsZSAhPT0gbnVsbCAmJiB0aXRsZSAhPT0gXCJcIjtcblx0XHRjb25zdCBzdWJ0aXRsZUV4aXN0cyA9IHN1YnRpdGxlICE9PSB1bmRlZmluZWQgJiYgc3VidGl0bGUgIT09IG51bGwgJiYgc3VidGl0bGUgIT09IFwiXCI7XG5cdFx0Y29uc3QgZGVzY3JpcHRpb25FeGlzdHMgPSBkZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkICYmIGRlc2NyaXB0aW9uICE9PSBudWxsICYmIGRlc2NyaXB0aW9uICE9PSBcIlwiO1xuXG5cdFx0Ly8gQXBwbHkgdGl0bGUgZm9ybWF0dGluZyBydWxlcyBiYXNlZCBvbiBhdmFpbGFibGUgY29tcG9uZW50c1xuXHRcdGlmICh0aXRsZUV4aXN0cyAmJiBzdWJ0aXRsZUV4aXN0cyAmJiBkZXNjcmlwdGlvbkV4aXN0cykge1xuXHRcdFx0Ly8gUnVsZSAxOiAnPHN1YlRpdGxlPiAoPGRlc2NyaXB0aW9uPikgLSA8dGl0bGU+J1xuXHRcdFx0dGl0bGVBZ2dyZWdhdG9yID0gYCR7c3VidGl0bGV9ICgke2Rlc2NyaXB0aW9ufSkgLSAke3RpdGxlfWA7XG5cdFx0fSBlbHNlIGlmICh0aXRsZUV4aXN0cyAmJiBzdWJ0aXRsZUV4aXN0cykge1xuXHRcdFx0Ly8gUnVsZSAyOiAnPHN1YlRpdGxlPiAtIDx0aXRsZT4nXG5cdFx0XHR0aXRsZUFnZ3JlZ2F0b3IgPSBgJHtzdWJ0aXRsZX0gLSAke3RpdGxlfWA7XG5cdFx0fSBlbHNlIGlmIChzdWJ0aXRsZUV4aXN0cyAmJiBkZXNjcmlwdGlvbkV4aXN0cykge1xuXHRcdFx0Ly8gUnVsZSAzOiAnPHN1YlRpdGxlPiAoPGRlc2NyaXB0aW9uPiknXG5cdFx0XHR0aXRsZUFnZ3JlZ2F0b3IgPSBgJHtzdWJ0aXRsZX0gKCR7ZGVzY3JpcHRpb259KWA7XG5cdFx0fSBlbHNlIGlmICh0aXRsZUV4aXN0cyAmJiBkZXNjcmlwdGlvbkV4aXN0cykge1xuXHRcdFx0Ly8gUnVsZSA0OiAnPGRlc2NyaXB0aW9uPiAtIDx0aXRsZT4nXG5cdFx0XHR0aXRsZUFnZ3JlZ2F0b3IgPSBgJHtkZXNjcmlwdGlvbn0gLSAke3RpdGxlfWA7XG5cdFx0fSBlbHNlIGlmICh0aXRsZUV4aXN0cykge1xuXHRcdFx0Ly8gUnVsZSA1OiAnPHRpdGxlPidcblx0XHRcdHRpdGxlQWdncmVnYXRvciA9IHRpdGxlO1xuXHRcdH0gZWxzZSBpZiAoc3VidGl0bGVFeGlzdHMpIHtcblx0XHRcdC8vIFJ1bGUgNjogJzxzdWJUaXRsZT4nXG5cdFx0XHR0aXRsZUFnZ3JlZ2F0b3IgPSBzdWJ0aXRsZTtcblx0XHR9IGVsc2UgaWYgKGRlc2NyaXB0aW9uRXhpc3RzKSB7XG5cdFx0XHQvLyBSdWxlIDc6ICc8ZGVzY3JpcHRpb24+J1xuXHRcdFx0dGl0bGVBZ2dyZWdhdG9yID0gZGVzY3JpcHRpb247XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFJ1bGUgODogTm9uZSBleGlzdHMsIGxvZyB3YXJuaW5nIGFuZCByZXR1cm4gdW5kZWZpbmVkXG5cdFx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRWaWV3KCk7XG5cdFx0XHRMb2cud2FybmluZyhgTm8gdGl0bGUsIHN1YnRpdGxlLCBvciBkZXNjcmlwdGlvbiBhdmFpbGFibGUgZm9yIGJyb3dzZXIgdGl0bGUgb2YgcGFnZTogJHt2aWV3LmdldElkKCl9YCk7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IGhlYWRlclRleHQ6IHRpdGxlQWdncmVnYXRvciB9KTtcblx0fVxuXG5cdF9nZXRQYWdlTW9kZWwoKTogSlNPTk1vZGVsIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBwYWdlQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKHRoaXMuZ2V0VmlldygpKTtcblx0XHRyZXR1cm4gcGFnZUNvbXBvbmVudD8uZ2V0TW9kZWwoXCJfcGFnZU1vZGVsXCIpIGFzIEpTT05Nb2RlbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBPcGVucyBvbmUgb3IgbW9yZSBuZXcgdGFicyB3aXRoIHRoZSBnaXZlbiBvdXRib3VuZCB0YXJnZXQgZm9yIHRoZSBzZWxlY3RlZCBjb250ZXh0cy5cblx0ICogQHBhcmFtIG91dGJvdW5kVGFyZ2V0IFRoZSBvdXRib3VuZCB0YXJnZXRcblx0ICogQHBhcmFtIGNvbnRleHRzIFRoZSBzZWxlY3RlZCBjb250ZXh0c1xuXHQgKiBAcGFyYW0gY3JlYXRlUGF0aCBUaGUgY3JlYXRlIHBhdGhcblx0ICogQHBhcmFtIG1heE51bWJlck9mU2VsZWN0ZWRJdGVtcyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2VsZWN0ZWQgaXRlbXNcblx0ICovXG5cdG9uT3BlbkluTmV3VGFiTmF2aWdhdGVPdXRCb3VuZChcblx0XHRvdXRib3VuZFRhcmdldDogc3RyaW5nLFxuXHRcdGNvbnRleHRzOiBDb250ZXh0W10sXG5cdFx0Y3JlYXRlUGF0aDogc3RyaW5nLFxuXHRcdG1heE51bWJlck9mU2VsZWN0ZWRJdGVtczogbnVtYmVyXG5cdCk6IHZvaWQge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuXHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdGlmIChjb250ZXh0cy5sZW5ndGggPD0gbWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zKSB7XG5cdFx0XHRjb250ZXh0cy5mb3JFYWNoKGZ1bmN0aW9uIChjb250ZXh0OiBDb250ZXh0KSB7XG5cdFx0XHRcdHRoYXQuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5vbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmQodGhhdCwgb3V0Ym91bmRUYXJnZXQsIGNvbnRleHQsIGNyZWF0ZVBhdGgsIFwiZXhwbGFjZVwiKTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRNZXNzYWdlQm94Lndhcm5pbmcoXG5cdFx0XHRcdExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFwiVF9UQUJMRV9OQVZJR0FUSU9OX1RPT19NQU5ZX0lURU1TX1NFTEVDVEVEXCIsIFtcblx0XHRcdFx0XHRtYXhOdW1iZXJPZlNlbGVjdGVkSXRlbXNcblx0XHRcdFx0XSlcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0X29uSW50ZXJuYWxBZnRlckJpbmRpbmcoKTogdm9pZCB7XG5cdFx0Y29uc3QgdmlldyA9IHRoaXMuZ2V0VmlldygpO1xuXHRcdHRoaXMucGFnZVJlYWR5LndhaXRGb3IodGhpcy5nZXRBcHBDb21wb25lbnQoKS5nZXRBcHBTdGF0ZUhhbmRsZXIoKS5hcHBseUFwcFN0YXRlKHZpZXcpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIG5hbWUgb2YgdGhlIHBhZ2UgYXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Qgcm91dGluZyBzZWN0aW9uLlxuXHQgKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgcGFnZVxuXHQgKi9cblx0Z2V0Um91dGluZ1RhcmdldE5hbWUoKTogc3RyaW5nIHtcblx0XHRpZiAoIXRoaXMucm91dGluZ1RhcmdldE5hbWUpIHtcblx0XHRcdHRoaXMucm91dGluZ1RhcmdldE5hbWUgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldFJvdXRpbmdTZXJ2aWNlKCkuZ2V0VGFyZ2V0TmFtZUZvclZpZXcodGhpcy5nZXRWaWV3KCkpID8/IFwiXCI7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnJvdXRpbmdUYXJnZXROYW1lO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBmb3J3YXJkIHNldFNob3dGb290ZXIgb24gdGhlIGZpcnN0IGNvbnRlbnQgb2YgdGhlIHZpZXcgaWYgcmVjb2duaXplZC5cblx0ICogQHBhcmFtIHNob3dcblx0ICovXG5cdHNldFNob3dGb290ZXIoc2hvdyA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3QgcGFnZSA9IHRoaXMuZ2V0VmlldygpLmdldENvbnRlbnQoKVswXTtcblx0XHRpZiAocGFnZS5pc0E8RHluYW1pY1BhZ2U+KFwic2FwLmYuRHluYW1pY1BhZ2VcIikgfHwgcGFnZS5pc0E8T2JqZWN0UGFnZUxheW91dD4oXCJzYXAudXhhcC5PYmplY3RQYWdlTGF5b3V0XCIpKSB7XG5cdFx0XHRwYWdlLnNldFNob3dGb290ZXIoc2hvdyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBnZXQgdGhlIGZvb3Rlci5cblx0ICogQHJldHVybnMgVGhlIGZvb3RlciBvZiB0aGUgcGFnZSBpZiBpdCBleGlzdHNcblx0ICovXG5cdGdldEZvb3RlcigpOiBDb250cm9sIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBwYWdlID0gdGhpcy5nZXRWaWV3KCkuZ2V0Q29udGVudCgpWzBdO1xuXHRcdGlmIChwYWdlLmlzQTxEeW5hbWljUGFnZT4oXCJzYXAuZi5EeW5hbWljUGFnZVwiKSB8fCBwYWdlLmlzQTxPYmplY3RQYWdlTGF5b3V0PihcInNhcC51eGFwLk9iamVjdFBhZ2VMYXlvdXRcIikpIHtcblx0XHRcdHJldHVybiBwYWdlLmdldEZvb3RlcigpIGFzIHVua25vd24gYXMgQ29udHJvbDtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlXG5leHBvcnQgZGVmYXVsdCBQYWdlQ29udHJvbGxlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFxQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVBBLElBU01BLGNBQWMsSUFBQUMsSUFBQSxHQURuQkMsY0FBYyxDQUFDLDRCQUE0QixDQUFDLEVBQUFDLEtBQUEsR0FFM0NDLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDLEVBQUFDLEtBQUEsR0FHdkJGLGNBQWMsQ0FBQ0csa0JBQWtCLENBQUMsRUFBQUMsS0FBQSxHQUdsQ0osY0FBYyxDQUNkSyxlQUFlLENBQUNDLFFBQVEsQ0FBQztJQUN4QkMsY0FBYyxFQUFFLFNBQUFBLENBQUEsRUFBaUM7TUFDaEQsTUFBTUMsSUFBSSxHQUFHLElBQUksQ0FBQ0MsT0FBTyxDQUFDLENBQUM7TUFDM0IsTUFBTUMsVUFBVSxHQUFHRixJQUFJLENBQUNHLGFBQWEsQ0FBQyxDQUFtQjtNQUN6REQsVUFBVSxDQUFDRSx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3JDO0VBQ0QsQ0FBQyxDQUNGLENBQUMsRUFBQUMsS0FBQSxHQUdBYixjQUFjLENBQUNjLFFBQVEsQ0FBQyxFQUFBQyxLQUFBLEdBR3hCZixjQUFjLENBQUNnQixxQkFBcUIsQ0FBQyxFQUFBQyxLQUFBLEdBR3JDakIsY0FBYyxDQUFDa0IsNkJBQTZCLENBQUMsRUFBQUMsS0FBQSxHQUc3Q25CLGNBQWMsQ0FBQ29CLFNBQVMsQ0FBQyxFQUFBQyxLQUFBLEdBR3pCckIsY0FBYyxDQUFDc0IsY0FBYyxDQUFDLEVBQUFDLE1BQUEsR0FHOUJ2QixjQUFjLENBQUN3QixL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QTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF6RyxhQUFBLEdBQUFxRyx5QkFBQSxDQUFBekgsT0FBQSxDQUFBK0IsU0FBQSxnQkFBQS9DLE1BQUE7SUFBQTBJLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBeEcsYUFBQSxHQUFBb0cseUJBQUEsQ0FBQXpILE9BQUEsQ0FBQStCLFNBQUEscUJBQUE3QyxNQUFBO0lBQUF3SSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXZHLGFBQUEsR0FBQW1HLHlCQUFBLENBQUF6SCxPQUFBLENBQUErQixTQUFBLDJCQUFBM0MsTUFBQTtJQUFBc0ksWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF0RyxhQUFBLEdBQUFrRyx5QkFBQSxDQUFBekgsT0FBQSxDQUFBK0IsU0FBQSxxQkFBQXpDLE1BQUE7SUFBQW9JLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBSix5QkFBQSxDQUFBekgsT0FBQSxDQUFBK0IsU0FBQSxhQUFBdkMsTUFBQSxHQUFBb0MsTUFBQSxDQUFBa0csd0JBQUEsQ0FBQTlILE9BQUEsQ0FBQStCLFNBQUEsYUFBQS9CLE9BQUEsQ0FBQStCLFNBQUEsR0FBQTBGLHlCQUFBLENBQUF6SCxPQUFBLENBQUErQixTQUFBLHdCQUFBckMsTUFBQSxHQUFBa0MsTUFBQSxDQUFBa0csd0JBQUEsQ0FBQTlILE9BQUEsQ0FBQStCLFNBQUEsd0JBQUEvQixPQUFBLENBQUErQixTQUFBLEdBQUEwRix5QkFBQSxDQUFBekgsT0FBQSxDQUFBK0IsU0FBQSxzQkFBQXBDLE1BQUEsR0FBQWlDLE1BQUEsQ0FBQWtHLHdCQUFBLENBQUE5SCxPQUFBLENBQUErQixTQUFBLHNCQUFBL0IsT0FBQSxDQUFBK0IsU0FBQSxHQUFBMEYseUJBQUEsQ0FBQXpILE9BQUEsQ0FBQStCLFNBQUEsa0JBQUFuQyxNQUFBLEVBQUFDLE1BQUEsR0FBQStCLE1BQUEsQ0FBQWtHLHdCQUFBLENBQUE5SCxPQUFBLENBQUErQixTQUFBLGtCQUFBL0IsT0FBQSxDQUFBK0IsU0FBQSxHQUFBL0IsT0FBQSxNQUFBRCxNQUFBLEdBMFIzQztFQUNBO0VBQUEsT0FDZXRELGNBQWM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,6 +1,7 @@
1
1
  import Log from "sap/base/Log";
2
2
  import type DynamicPage from "sap/f/DynamicPage";
3
3
  import { defineUI5Class, extensible, publicExtension, usingExtension } from "sap/fe/base/ClassSupport";
4
+ import type { FEView } from "sap/fe/core/BaseController";
4
5
  import BaseController from "sap/fe/core/BaseController";
5
6
  import ExtensionAPI from "sap/fe/core/ExtensionAPI";
6
7
  import CollaborativeDraft from "sap/fe/core/controllerextensions/CollaborativeDraft";
@@ -19,28 +20,25 @@ import Share from "sap/fe/core/controllerextensions/Share";
19
20
  import SideEffects from "sap/fe/core/controllerextensions/SideEffects";
20
21
  import Telemetry from "sap/fe/core/controllerextensions/Telemetry";
21
22
  import ViewState from "sap/fe/core/controllerextensions/ViewState";
22
- import CollaborationFormatter from "sap/fe/core/formatters/CollaborationFormatter";
23
- import CriticalityFormatter from "sap/fe/core/formatters/CriticalityFormatter";
24
- import FPMFormatter from "sap/fe/core/formatters/FPMFormatter";
25
- import KPIFormatter from "sap/fe/core/formatters/KPIFormatter";
26
- import StandardFormatter from "sap/fe/core/formatters/StandardFormatter";
27
- import ValueFormatter from "sap/fe/core/formatters/ValueFormatter";
23
+ import Scope from "sap/fe/core/formatters/Scope";
28
24
  import type { TitleInformation } from "sap/fe/core/rootView/RootViewBaseController";
25
+
29
26
  import MessageBox from "sap/m/MessageBox";
30
27
  import Component from "sap/ui/core/Component";
31
28
  import Library from "sap/ui/core/Lib";
32
29
  import type View from "sap/ui/core/mvc/View";
33
30
  import type Control from "sap/ui/mdc/Control";
31
+ import type Model from "sap/ui/model/Model";
34
32
  import type JSONModel from "sap/ui/model/json/JSONModel";
35
33
  import type Context from "sap/ui/model/odata/v4/Context";
34
+ import type { TitleAdditionalInfo } from "sap/ushell/ui5service/ShellUIService";
36
35
  import type ObjectPageLayout from "sap/uxap/ObjectPageLayout";
37
36
  import ContextSharing from "./controllerextensions/ContextSharing";
38
37
  import CollaborationManager from "./controllerextensions/cards/CollaborationManager";
39
-
40
38
  /**
41
39
  * Base controller class for your custom page used inside an SAP Fiori elements application.
42
40
  *
43
- * This controller provides preconfigured extensions that will ensure you have the basic functionalities required to use the building blocks.
41
+ * This controller provides preconfigured extensions that ensure you have the basic functionalities required to use the building blocks.
44
42
  * @hideconstructor
45
43
  * @public
46
44
  * @since 1.88.0
@@ -117,14 +115,7 @@ class PageController extends BaseController {
117
115
 
118
116
  protected extensionAPI?: ExtensionAPI;
119
117
 
120
- protected _formatters = {
121
- ValueFormatter: ValueFormatter,
122
- StandardFormatter: StandardFormatter,
123
- CriticalityFormatter: CriticalityFormatter,
124
- FPMFormatter: FPMFormatter,
125
- KPIFormatter: KPIFormatter,
126
- CollaborationFormatter: CollaborationFormatter
127
- };
118
+ protected _formatters = Scope._formatters;
128
119
 
129
120
  initialisationForPageControllerDoneProperly = false;
130
121
 
@@ -166,37 +157,15 @@ class PageController extends BaseController {
166
157
 
167
158
  @publicExtension()
168
159
  onInit(): void {
169
- const oUIModel = this.getAppComponent().getModel("ui"),
170
- oInternalModel = this.getAppComponent().getModel("internal") as JSONModel,
171
- sPath = `/pages/${this.getView().getId()}`;
172
-
173
- oUIModel.setProperty(sPath, {
174
- controls: {}
175
- });
176
- oInternalModel.setProperty(sPath, {
177
- controls: {},
178
- collaboration: {}
179
- });
180
- this.getView().bindElement({
181
- path: "/",
182
- model: "ui"
183
- });
184
- this.getView().bindElement({
185
- path: sPath,
186
- model: "internal"
187
- });
188
-
189
- // for the time being provide it also pageInternal as some macros access it - to be removed
190
- this.getView().bindElement({
191
- path: sPath,
192
- model: "pageInternal"
193
- });
194
- this.getView().setModel(oInternalModel, "pageInternal");
160
+ const ownerComponent = this.getOwnerComponent();
161
+ const fnModel = this.getView().getModel;
162
+ this.getView().getModel = ((modelName?: string): Model | undefined => {
163
+ if (modelName === "$cmd") {
164
+ return fnModel.apply(this.getView(), [modelName]);
165
+ }
166
+ return fnModel.apply(this.getView(), [modelName]) ?? ownerComponent.getModel(modelName);
167
+ }) as unknown as FEView["getModel"];
195
168
 
196
- // as the model propagation happens after init but we actually want to access the binding context in the
197
- // init phase already setting the model here
198
- this.getView().setModel(oUIModel, "ui");
199
- this.getView().setModel(oInternalModel, "internal");
200
169
  this.initialisationForPageControllerDoneProperly = true;
201
170
  }
202
171
 
@@ -240,6 +209,50 @@ class PageController extends BaseController {
240
209
  return Promise.resolve({} as TitleInformation);
241
210
  }
242
211
 
212
+ /**
213
+ * Get the browser title of the object page.
214
+ * @param pageTitleInformation Present page title information
215
+ * @returns Title information to be used by shell services for browser title
216
+ */
217
+ async _getBrowserTitle(pageTitleInformation: TitleInformation): Promise<TitleAdditionalInfo | undefined> {
218
+ const { subtitle, title, description } = pageTitleInformation;
219
+ let titleAggregator: string | undefined;
220
+ const titleExists = title !== undefined && title !== null && title !== "";
221
+ const subtitleExists = subtitle !== undefined && subtitle !== null && subtitle !== "";
222
+ const descriptionExists = description !== undefined && description !== null && description !== "";
223
+
224
+ // Apply title formatting rules based on available components
225
+ if (titleExists && subtitleExists && descriptionExists) {
226
+ // Rule 1: '<subTitle> (<description>) - <title>'
227
+ titleAggregator = `${subtitle} (${description}) - ${title}`;
228
+ } else if (titleExists && subtitleExists) {
229
+ // Rule 2: '<subTitle> - <title>'
230
+ titleAggregator = `${subtitle} - ${title}`;
231
+ } else if (subtitleExists && descriptionExists) {
232
+ // Rule 3: '<subTitle> (<description>)'
233
+ titleAggregator = `${subtitle} (${description})`;
234
+ } else if (titleExists && descriptionExists) {
235
+ // Rule 4: '<description> - <title>'
236
+ titleAggregator = `${description} - ${title}`;
237
+ } else if (titleExists) {
238
+ // Rule 5: '<title>'
239
+ titleAggregator = title;
240
+ } else if (subtitleExists) {
241
+ // Rule 6: '<subTitle>'
242
+ titleAggregator = subtitle;
243
+ } else if (descriptionExists) {
244
+ // Rule 7: '<description>'
245
+ titleAggregator = description;
246
+ } else {
247
+ // Rule 8: None exists, log warning and return undefined
248
+ const view = this.getView();
249
+ Log.warning(`No title, subtitle, or description available for browser title of page: ${view.getId()}`);
250
+ return Promise.resolve(undefined);
251
+ }
252
+
253
+ return Promise.resolve({ headerText: titleAggregator });
254
+ }
255
+
243
256
  _getPageModel(): JSONModel | undefined {
244
257
  const pageComponent = Component.getOwnerComponentFor(this.getView());
245
258
  return pageComponent?.getModel("_pageModel") as JSONModel;
@@ -275,7 +288,7 @@ class PageController extends BaseController {
275
288
 
276
289
  _onInternalAfterBinding(): void {
277
290
  const view = this.getView();
278
- this.pageReady.waitFor(this.getAppComponent().getAppStateHandler().applyAppState(view.getId(), view));
291
+ this.pageReady.waitFor(this.getAppComponent().getAppStateHandler().applyAppState(view));
279
292
  }
280
293
 
281
294
  /**
@@ -313,4 +326,6 @@ class PageController extends BaseController {
313
326
  }
314
327
  }
315
328
 
329
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
330
+ // @ts-ignore
316
331
  export default PageController;