@sap/open.fe 1.99.0 → 1.100.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 (969) hide show
  1. package/package.json +1 -1
  2. package/packages/sap.fe.common/src/sap/fe/common/.library +1 -1
  3. package/packages/sap.fe.common/src/sap/fe/common/.theming +1 -1
  4. package/packages/sap.fe.common/src/sap/fe/common/MessageButton-dbg.js +1748 -1813
  5. package/packages/sap.fe.common/src/sap/fe/common/MessageButton.js +2 -3
  6. package/packages/sap.fe.common/src/sap/fe/common/MessageButton.ts +1801 -0
  7. package/packages/sap.fe.common/src/sap/fe/common/MessageFilter-dbg.js +77 -32
  8. package/packages/sap.fe.common/src/sap/fe/common/MessageFilter.js +2 -3
  9. package/packages/sap.fe.common/src/sap/fe/common/MessageFilter.ts +26 -0
  10. package/packages/sap.fe.common/src/sap/fe/common/MessagePopover-dbg.js +43 -53
  11. package/packages/sap.fe.common/src/sap/fe/common/MessagePopover.js +2 -3
  12. package/packages/sap.fe.common/src/sap/fe/common/MessagePopover.ts +39 -0
  13. package/packages/sap.fe.common/src/sap/fe/common/library-dbg.js +31 -38
  14. package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js +8 -9
  15. package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js.map +3 -3
  16. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +23 -71
  17. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js.map +4 -4
  18. package/packages/sap.fe.common/src/sap/fe/common/library.js +4 -5
  19. package/packages/sap.fe.common/src/sap/fe/common/library.ts +35 -0
  20. package/packages/sap.fe.common/src/sap/fe/common/manifest.json +3 -3
  21. package/packages/sap.fe.common/src/sap/fe/common/resources.json +54 -32
  22. package/packages/sap.fe.common/test/sap/fe/common/designtime/api.json +1 -1
  23. package/packages/sap.fe.common/test/sap/fe/common/designtime/apiref/api.json +1 -1
  24. package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.jsmeta.json +1 -1
  25. package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.xmlmeta.json +1 -1
  26. package/packages/sap.fe.core/src/sap/fe/core/.library +1 -1
  27. package/packages/sap.fe.core/src/sap/fe/core/.theming +1 -1
  28. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper-dbg.js +1 -69
  29. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.js +1 -1
  30. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.ts +0 -70
  31. package/packages/sap.fe.core/src/sap/fe/core/AppComponent-dbg.js +388 -399
  32. package/packages/sap.fe.core/src/sap/fe/core/AppComponent.js +2 -3
  33. package/packages/sap.fe.core/src/sap/fe/core/AppComponent.ts +403 -0
  34. package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler-dbg.js +127 -158
  35. package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler.js +1 -1
  36. package/packages/sap.fe.core/src/sap/fe/core/BaseController-dbg.js +82 -58
  37. package/packages/sap.fe.core/src/sap/fe/core/BaseController.js +2 -3
  38. package/packages/sap.fe.core/src/sap/fe/core/BaseController.ts +68 -0
  39. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +111 -20
  40. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +1 -1
  41. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.ts +131 -32
  42. package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI-dbg.js +278 -274
  43. package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI.js +2 -3
  44. package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI.ts +250 -0
  45. package/packages/sap.fe.core/src/sap/fe/core/PageController-dbg.js +157 -29
  46. package/packages/sap.fe.core/src/sap/fe/core/PageController.js +1 -1
  47. package/packages/sap.fe.core/src/sap/fe/core/PageController.ts +60 -32
  48. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +694 -756
  49. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.js +1 -1
  50. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.ts +11 -9
  51. package/packages/sap.fe.core/src/sap/fe/core/Synchronization-dbg.js +21 -31
  52. package/packages/sap.fe.core/src/sap/fe/core/Synchronization.js +1 -1
  53. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent-dbg.js +1 -1
  54. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.ts +10 -3
  55. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel-dbg.js +20 -38
  56. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.js +1 -1
  57. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.ts +1 -1
  58. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper-dbg.js +1354 -1370
  59. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +1 -1
  60. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.ts +33 -22
  61. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync-dbg.js +392 -0
  62. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync.js +5 -0
  63. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync.ts +355 -0
  64. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon-dbg.js +136 -0
  65. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +5 -0
  66. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +119 -0
  67. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage-dbg.js +262 -0
  68. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage.js +5 -0
  69. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage.ts +244 -0
  70. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +103 -0
  71. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
  72. package/packages/sap.fe.core/src/sap/fe/core/actions/draft-dbg.js +30 -68
  73. package/packages/sap.fe.core/src/sap/fe/core/actions/draft.js +1 -1
  74. package/packages/sap.fe.core/src/sap/fe/core/actions/draft.ts +44 -71
  75. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +55 -36
  76. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.js +1 -1
  77. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.ts +66 -46
  78. package/packages/sap.fe.core/src/sap/fe/core/actions/operations-dbg.js +34 -15
  79. package/packages/sap.fe.core/src/sap/fe/core/actions/operations.js +1 -1
  80. package/packages/sap.fe.core/src/sap/fe/core/actions/operations.ts +48 -18
  81. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky-dbg.js +17 -4
  82. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.js +1 -1
  83. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.ts +21 -4
  84. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata-dbg.js +69 -66
  85. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +2 -3
  86. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +65 -0
  87. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +1593 -1669
  88. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +2 -3
  89. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.ts +1672 -0
  90. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation-dbg.js +79 -54
  91. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +2 -3
  92. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +61 -0
  93. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +718 -779
  94. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.js +2 -3
  95. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +783 -0
  96. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +796 -816
  97. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +2 -3
  98. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +803 -0
  99. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +1004 -1005
  100. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +2 -3
  101. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.ts +978 -0
  102. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +487 -521
  103. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.js +1 -1
  104. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -2
  105. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +141 -169
  106. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit.js +2 -3
  107. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit.ts +156 -0
  108. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +233 -244
  109. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -3
  110. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.ts +225 -0
  111. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady-dbg.js +301 -336
  112. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
  113. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.ts +12 -10
  114. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator-dbg.js +188 -175
  115. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator.js +2 -3
  116. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator.ts +163 -0
  117. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +157 -149
  118. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder.js +2 -3
  119. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder.ts +151 -0
  120. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing-dbg.js +144 -125
  121. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.js +2 -3
  122. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.ts +132 -0
  123. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener-dbg.js +7 -6
  124. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener.js +2 -3
  125. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
  126. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share-dbg.js +230 -268
  127. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share.js +2 -3
  128. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share.ts +231 -0
  129. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +592 -633
  130. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
  131. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.ts +8 -7
  132. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState-dbg.js +788 -806
  133. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.js +2 -3
  134. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.ts +805 -0
  135. package/packages/sap.fe.core/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -2
  136. package/packages/sap.fe.core/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
  137. package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution-dbg.js +67 -66
  138. package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution.js +2 -3
  139. package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution.ts +72 -0
  140. package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +90 -75
  141. package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper.js +2 -3
  142. package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper.ts +83 -0
  143. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +130 -125
  144. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -3
  145. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.ts +126 -0
  146. package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +103 -112
  147. package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +2 -3
  148. package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +101 -0
  149. package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper-dbg.js +122 -135
  150. package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.js +2 -3
  151. package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.ts +115 -0
  152. package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar-dbg.js +162 -159
  153. package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar.js +2 -3
  154. package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar.ts +143 -0
  155. package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper-dbg.js +45 -39
  156. package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper.js +2 -3
  157. package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper.ts +40 -0
  158. package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate-dbg.js +37 -42
  159. package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -2
  160. package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
  161. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +126 -116
  162. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer.js +2 -3
  163. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer.ts +98 -0
  164. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +241 -255
  165. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter.js +2 -3
  166. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter.ts +245 -0
  167. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +150 -141
  168. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +2 -3
  169. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
  170. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +335 -322
  171. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -3
  172. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
  173. package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +74 -74
  174. package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +2 -3
  175. package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +70 -0
  176. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext-dbg.js +348 -379
  177. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.js +1 -1
  178. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.ts +19 -16
  179. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +12 -1
  180. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  181. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.ts +12 -1
  182. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper-dbg.js +354 -378
  183. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
  184. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.ts +10 -0
  185. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +6 -4
  186. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
  187. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.ts +5 -2
  188. package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter-dbg.js +1 -1
  189. package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
  190. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField-dbg.js +26 -12
  191. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.js +1 -1
  192. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.ts +37 -13
  193. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +2 -2
  194. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
  195. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.ts +4 -2
  196. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +1 -1
  197. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI.ts +3 -2
  198. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +130 -23
  199. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
  200. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.ts +134 -29
  201. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +118 -53
  202. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
  203. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +156 -93
  204. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +161 -207
  205. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
  206. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +148 -206
  207. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +115 -133
  208. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
  209. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper-dbg.js +20 -6
  210. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper.js +1 -1
  211. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
  212. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +12 -1
  213. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
  214. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key-dbg.js +42 -57
  215. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key.js +1 -1
  216. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key.ts +1 -1
  217. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +25 -4
  218. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
  219. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +20 -3
  220. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +10 -4
  221. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
  222. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.ts +15 -4
  223. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +7 -5
  224. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
  225. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +5 -1
  226. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +92 -98
  227. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.js +2 -3
  228. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
  229. package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js +2 -3
  230. package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js.map +3 -3
  231. package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter-dbg.js +104 -0
  232. package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter.js +5 -0
  233. package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
  234. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter-dbg.js +53 -2
  235. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.js +1 -1
  236. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.ts +51 -0
  237. package/packages/sap.fe.core/src/sap/fe/core/fpm/Component-dbg.js +50 -54
  238. package/packages/sap.fe.core/src/sap/fe/core/fpm/Component.js +2 -3
  239. package/packages/sap.fe.core/src/sap/fe/core/fpm/Component.ts +48 -0
  240. package/packages/sap.fe.core/src/sap/fe/core/fpm/manifest.json +2 -2
  241. package/packages/sap.fe.core/src/sap/fe/core/fpm/resources.json +7 -3
  242. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +323 -309
  243. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.js +1 -1
  244. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.ts +363 -337
  245. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression-dbg.js +7 -7
  246. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.js +1 -1
  247. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.ts +7 -7
  248. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport-dbg.js +186 -62
  249. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.js +1 -1
  250. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.ts +168 -52
  251. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper-dbg.js +5 -4
  252. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
  253. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -5
  254. package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper-dbg.js +1 -1
  255. package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
  256. package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper-dbg.js +601 -684
  257. package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper.js +2 -3
  258. package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper.ts +699 -0
  259. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper-dbg.js +25 -1
  260. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.js +1 -1
  261. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.ts +23 -0
  262. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +5 -1
  263. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  264. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.ts +4 -0
  265. package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +426 -451
  266. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +36 -32
  267. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +3 -3
  268. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +644 -738
  269. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js.map +4 -4
  270. package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js +24 -35
  271. package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js.map +2 -2
  272. package/packages/sap.fe.core/src/sap/fe/core/library.js +2 -3
  273. package/packages/sap.fe.core/src/sap/fe/core/library.support.js +22 -33
  274. package/packages/sap.fe.core/src/sap/fe/core/library.support.ts +23 -0
  275. package/packages/sap.fe.core/src/sap/fe/core/library.ts +420 -0
  276. package/packages/sap.fe.core/src/sap/fe/core/manifest.json +10 -10
  277. package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +5 -3
  278. package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
  279. package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +4 -1
  280. package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +22 -5
  281. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +27 -7
  282. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +27 -7
  283. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +27 -7
  284. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +27 -7
  285. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +27 -7
  286. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +27 -7
  287. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +27 -7
  288. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +27 -7
  289. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +27 -7
  290. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +27 -7
  291. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +27 -7
  292. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +27 -7
  293. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +27 -7
  294. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +27 -7
  295. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +27 -7
  296. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +27 -7
  297. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +28 -8
  298. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +28 -8
  299. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +29 -9
  300. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +27 -7
  301. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +27 -7
  302. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +27 -7
  303. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +27 -7
  304. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +27 -7
  305. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +27 -7
  306. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +26 -6
  307. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +27 -7
  308. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +27 -7
  309. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +27 -7
  310. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +28 -8
  311. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +27 -7
  312. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +27 -7
  313. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +27 -7
  314. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +27 -7
  315. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +28 -8
  316. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +27 -7
  317. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +27 -7
  318. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +27 -7
  319. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +27 -7
  320. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +27 -7
  321. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +27 -7
  322. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +27 -7
  323. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +26 -6
  324. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +30 -10
  325. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +27 -7
  326. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +27 -7
  327. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +27 -7
  328. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +27 -7
  329. package/packages/sap.fe.core/src/sap/fe/core/resources.json +745 -384
  330. package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +45 -71
  331. package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -1
  332. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +154 -192
  333. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
  334. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +4 -4
  335. package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +66 -92
  336. package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
  337. package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.ts +1 -1
  338. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +284 -339
  339. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
  340. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -13
  341. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +67 -102
  342. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
  343. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.ts +5 -2
  344. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +754 -814
  345. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
  346. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.ts +13 -13
  347. package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory-dbg.js +649 -736
  348. package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.js +1 -1
  349. package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.ts +7 -4
  350. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +567 -592
  351. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
  352. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.ts +22 -3
  353. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +354 -386
  354. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
  355. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +21 -14
  356. package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage-dbg.controller.js +1 -1
  357. package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
  358. package/packages/sap.fe.core/src/sap/fe/core/support/CommonHelper-dbg.js +1 -1
  359. package/packages/sap.fe.core/src/sap/fe/core/support/CommonHelper.ts +1 -1
  360. package/packages/sap.fe.core/src/sap/fe/core/support/Diagnostics-dbg.js +36 -48
  361. package/packages/sap.fe.core/src/sap/fe/core/support/Diagnostics.js +1 -1
  362. package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +93 -85
  363. package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
  364. package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.ts +104 -95
  365. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper-dbg.js +25 -32
  366. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.js +1 -1
  367. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.ts +36 -35
  368. package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper-dbg.js +2 -2
  369. package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper.js +1 -1
  370. package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
  371. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters-dbg.js +32 -26
  372. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.js +1 -1
  373. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.ts +37 -24
  374. package/packages/sap.fe.core/test/sap/fe/core/designtime/api.json +1664 -1
  375. package/packages/sap.fe.core/test/sap/fe/core/designtime/apiref/api.json +1 -1
  376. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jsmeta.json +1 -1
  377. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jstemplates.json +1 -1
  378. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.xmlmeta.json +1 -1
  379. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/MacroNavigationModel.js +59 -0
  380. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldDisplay/localService/RootEntity.json +1 -1
  381. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/Component.js +33 -0
  382. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/FieldMessages.controller.js +34 -0
  383. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/FieldMessages.view.xml +18 -0
  384. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/localService/Entities.json +6 -0
  385. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/localService/service.cds +6 -0
  386. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/manifest.json +68 -0
  387. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/fieldMessages.html +37 -0
  388. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/FilterBarSVandAnnotationDefaults.controller.js +1 -0
  389. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.controller.js +7 -2
  390. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.view.xml +9 -3
  391. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/RootEntity.js +23 -0
  392. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/RootEntity.ts +11 -0
  393. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/service.cds +11 -23
  394. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/Component.js +40 -0
  395. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/TableMessages.controller.js +35 -0
  396. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/TableMessages.view.xml +21 -0
  397. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/localService/RootEntity.json +82 -0
  398. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/localService/service.cds +82 -0
  399. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/manifest.json +78 -0
  400. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/tableMessages.html +37 -0
  401. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/localService/ChildEntity.json +5 -4
  402. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/manifest.json +3 -0
  403. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/view/App.view.xml +1 -1
  404. package/packages/sap.fe.core/test/sap/fe/core/jest/AnnotationHelper.spec.js +1 -169
  405. package/packages/sap.fe.core/test/sap/fe/core/jest/AnnotationHelper.spec.ts +0 -212
  406. package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.js +2305 -119
  407. package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.ts +2206 -67
  408. package/packages/sap.fe.core/test/sap/fe/core/jest/FilterUtils.spec.js +40 -0
  409. package/packages/sap.fe.core/test/sap/fe/core/jest/FilterUtils.spec.ts +34 -0
  410. package/packages/sap.fe.core/test/sap/fe/core/jest/FlexibleColumnLayout.spec.js +114 -0
  411. package/packages/sap.fe.core/test/sap/fe/core/jest/FlexibleColumnLayout.spec.ts +114 -0
  412. package/packages/sap.fe.core/test/sap/fe/core/jest/Paginators.spec.js +113 -0
  413. package/packages/sap.fe.core/test/sap/fe/core/jest/Paginators.spec.ts +78 -0
  414. package/packages/sap.fe.core/test/sap/fe/core/jest/RouterProxy.spec.js +599 -1
  415. package/packages/sap.fe.core/test/sap/fe/core/jest/RouterProxy.spec.ts +614 -0
  416. package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.js +23 -5
  417. package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.ts +26 -14
  418. package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.js +87 -1
  419. package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.ts +82 -1
  420. package/packages/sap.fe.core/test/sap/fe/core/jest/VisualFilterUtils.spec.js +124 -0
  421. package/packages/sap.fe.core/test/sap/fe/core/jest/VisualFilterUtils.spec.ts +141 -0
  422. package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +34768 -67
  423. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/ActivitySync.spec.js +170 -0
  424. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/ActivitySync.spec.ts +155 -0
  425. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/CollaborationCommon.spec.js +101 -0
  426. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/CollaborationCommon.spec.ts +94 -0
  427. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/Manage.spec.js +82 -0
  428. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/Manage.spec.ts +77 -0
  429. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/draft.spec.js +2 -2
  430. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/draft.spec.ts +1 -1
  431. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/messageHandling.spec.js +7 -2
  432. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/messageHandling.spec.ts +7 -0
  433. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/operations.spec.js +104 -2
  434. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/operations.spec.ts +96 -1
  435. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/sticky.spec.js +83 -0
  436. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/sticky.spec.ts +79 -0
  437. package/packages/sap.fe.core/test/sap/fe/core/jest/appcomponent.spec.js +72 -0
  438. package/packages/sap.fe.core/test/sap/fe/core/jest/appcomponent.spec.ts +64 -0
  439. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.js +619 -3
  440. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.ts +668 -5
  441. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalEditFlow.spec.js +297 -1
  442. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalEditFlow.spec.ts +276 -6
  443. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalIntentBasedNavigation.spec.js +149 -0
  444. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalIntentBasedNavigation.spec.ts +142 -0
  445. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalRouting.spec.js +776 -182
  446. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalRouting.spec.ts +181 -3
  447. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/KPIManagement.spec.js +19 -43
  448. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MassEdit.spec.js +2 -18
  449. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MassEdit.spec.ts +8 -6
  450. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.js +5 -27
  451. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.ts +1 -1
  452. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Routing.spec.js +1 -1
  453. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Routing.spec.ts +1 -1
  454. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Share.spec.js +86 -0
  455. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Share.spec.ts +80 -0
  456. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.js +1 -1
  457. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.ts +1 -1
  458. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.js +2 -18
  459. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.ts +1 -1
  460. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/DataLossOrDraftDiscardHandler.spec.js +45 -0
  461. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/DataLossOrDraftDiscardHandler.spec.ts +29 -0
  462. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/FilterBar.spec.js +51 -1
  463. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/FilterBar.spec.ts +47 -1
  464. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/__snapshots__/FilterBar.spec.ts.snap +3 -0
  465. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.js +2 -2
  466. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.ts +1 -1
  467. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Filter.spec.js +25 -36
  468. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Filter.spec.ts +26 -36
  469. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.js +3 -3
  470. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.ts +2 -2
  471. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.js +1 -1
  472. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.ts +6 -5
  473. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +133 -9
  474. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +171 -8
  475. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.js +174 -210
  476. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.ts +294 -230
  477. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/Filter.spec.ts.snap +3 -1
  478. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Chart.spec.js +237 -0
  479. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Chart.spec.ts +246 -0
  480. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/DataVisualization.spec.js +9993 -0
  481. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/DataVisualization.spec.ts +11352 -0
  482. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Table.spec.js +460 -0
  483. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Table.spec.ts +543 -0
  484. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/TableAnalytics.spec.js +616 -0
  485. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/TableAnalytics.spec.ts +711 -0
  486. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/manifest.json +887 -0
  487. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/objectPage/HeaderAndFooterAction.spec.js +393 -0
  488. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/objectPage/HeaderAndFooterAction.spec.ts +434 -0
  489. package/packages/sap.fe.core/test/sap/fe/core/jest/data/DataConverter.js +31 -0
  490. package/packages/sap.fe.core/test/sap/fe/core/jest/data/DataConverter.ts +12 -0
  491. package/packages/sap.fe.core/test/sap/fe/core/jest/data/Filter.cds +27 -0
  492. package/packages/sap.fe.core/test/sap/fe/core/jest/data/MassEditHelper.cds +12 -0
  493. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/manifest.json +150 -0
  494. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata.xml +365 -0
  495. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_groupable_options.xml +96 -0
  496. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_textArrangement.xml +102 -0
  497. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_withPV.xml +359 -0
  498. package/packages/sap.fe.core/test/sap/fe/core/jest/data/Table.cds +89 -27
  499. package/packages/sap.fe.core/test/sap/fe/core/jest/data/TemplatingTestData.js +421 -0
  500. package/packages/sap.fe.core/test/sap/fe/core/jest/data/TemplatingTestData.ts +413 -0
  501. package/packages/sap.fe.core/test/sap/fe/core/jest/data/aggregatedSD/metadata.xml +3767 -0
  502. package/packages/sap.fe.core/test/sap/fe/core/jest/data/dsr/manifest.json +185 -0
  503. package/packages/sap.fe.core/test/sap/fe/core/jest/data/dsr/metadata.xml +1534 -0
  504. package/packages/sap.fe.core/test/sap/fe/core/jest/data/manifest.json +887 -0
  505. package/packages/sap.fe.core/test/sap/fe/core/jest/data/salesOrderMetadata_qunit.xml +4995 -0
  506. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/CollaborationFormatters.spec.js +48 -0
  507. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/CollaborationFormatters.spec.ts +48 -0
  508. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.js +131 -51
  509. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.ts +81 -31
  510. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.js +13 -7
  511. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.ts +12 -6
  512. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/MassEditHelper.spec.js +17 -3
  513. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/MassEditHelper.spec.ts +24 -7
  514. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.js +61 -1
  515. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.ts +59 -0
  516. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/PasteHelper.spec.js +3 -3
  517. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/PasteHelper.spec.ts +1 -2
  518. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/SemanticDateOperators.spec.js +4 -4
  519. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/SemanticDateOperators.spec.ts +6 -3
  520. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/StableIdHelper.spec.js +1 -1
  521. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/StableIdHelper.spec.ts +1 -1
  522. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/__snapshots__/AppStartupHelper.spec.ts.snap +19 -0
  523. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/__snapshots__/MassEditHelper.spec.ts.snap +0 -73
  524. package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/ChangePageConfiguration.spec.js +11 -1
  525. package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/ChangePageConfiguration.spec.ts +15 -0
  526. package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/__snapshots__/ChangePageConfiguration.spec.ts.snap +30 -0
  527. package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.js +49 -5
  528. package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.ts +60 -5
  529. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/DataModelPathHelper.spec.js +384 -0
  530. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/DataModelPathHelper.spec.ts +427 -0
  531. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.js +132 -2
  532. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.ts +156 -2
  533. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/UIFormatters.spec.js +273 -0
  534. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/UIFormatters.spec.ts +402 -0
  535. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/ValueHelpTemplating.spec.js +45 -0
  536. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/ValueHelpTemplating.spec.ts +40 -0
  537. package/packages/sap.fe.core/test/sap/fe/core/qunit/TemplatingExpressions.qunit.js +2 -1
  538. package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +0 -102
  539. package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.100.json +326 -0
  540. package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.99.json +0 -22
  541. package/packages/sap.fe.macros/src/sap/fe/macros/.library +1 -1
  542. package/packages/sap.fe.macros/src/sap/fe/macros/.theming +1 -1
  543. package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata-dbg.js +2 -2
  544. package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata.js +1 -1
  545. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI-dbg.js +22 -43
  546. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.js +1 -1
  547. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.ts +3 -3
  548. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate-dbg.js +14 -24
  549. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate.js +1 -1
  550. package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper-dbg.js +1 -1
  551. package/packages/sap.fe.macros/src/sap/fe/macros/DraftIndicator.fragment.xml +3 -2
  552. package/packages/sap.fe.macros/src/sap/fe/macros/Field.fragment.xml +16 -18
  553. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +162 -100
  554. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.js +1 -1
  555. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.ts +93 -16
  556. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.fragment.xml +2 -1
  557. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata-dbg.js +16 -8
  558. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata.js +1 -1
  559. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +58 -83
  560. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.js +1 -1
  561. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +16 -2
  562. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +112 -192
  563. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +1 -1
  564. package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata-dbg.js +1 -1
  565. package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata.js +1 -1
  566. package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI-dbg.js +4 -20
  567. package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI.js +1 -1
  568. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.fragment.xml +1 -1
  569. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI-dbg.js +10 -31
  570. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI.js +1 -1
  571. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI-dbg.js +147 -162
  572. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.js +1 -1
  573. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.ts +32 -8
  574. package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata-dbg.js +5 -0
  575. package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata.js +1 -1
  576. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +56 -74
  577. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil.js +1 -1
  578. package/packages/sap.fe.macros/src/sap/fe/macros/Table.fragment.xml +1 -1
  579. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +90 -39
  580. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata.js +1 -1
  581. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI-dbg.js +284 -251
  582. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +1 -1
  583. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +126 -14
  584. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper-dbg.js +38 -101
  585. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper.js +1 -1
  586. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime-dbg.js +68 -6
  587. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime.js +1 -1
  588. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating-dbg.js +72 -12
  589. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.js +1 -1
  590. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.ts +67 -10
  591. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +5 -12
  592. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +1 -1
  593. package/packages/sap.fe.macros/src/sap/fe/macros/filter/DraftEditState.fragment.xml +1 -1
  594. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper-dbg.js +1 -3
  595. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper.js +1 -1
  596. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils-dbg.js +62 -39
  597. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils.js +1 -1
  598. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue-dbg.js +104 -50
  599. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue.js +2 -3
  600. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue.ts +68 -0
  601. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range-dbg.js +83 -35
  602. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range.js +2 -3
  603. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range.ts +66 -0
  604. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value-dbg.js +327 -216
  605. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value.js +2 -3
  606. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value.ts +303 -0
  607. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollaborationAvatar.fragment.xml +15 -0
  608. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata-dbg.js +14 -2
  609. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.js +1 -1
  610. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.ts +18 -2
  611. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.fragment.xml +12 -29
  612. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata-dbg.js +9 -0
  613. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata.js +1 -1
  614. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +1 -0
  615. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata-dbg.js +529 -533
  616. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.js +2 -3
  617. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.ts +568 -0
  618. package/packages/sap.fe.macros/src/sap/fe/macros/internal/FilterField.fragment.xml +0 -1
  619. package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator-dbg.js +3 -3
  620. package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.js +1 -1
  621. package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.ts +3 -2
  622. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldContent.fragment.xml +3 -1
  623. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +13 -3
  624. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/DataPoint.fragment.xml +4 -1
  625. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ExpandableText.fragment.xml +1 -0
  626. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LabelSemanticKey.fragment.xml +1 -0
  627. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Link.fragment.xml +38 -4
  628. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWithQuickViewForm.fragment.xml +2 -2
  629. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWrapper.fragment.xml +3 -3
  630. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/MdcFieldWithValueHelp.fragment.xml +1 -2
  631. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ObjectIdentifier.fragment.xml +55 -11
  632. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/SemanticKeyWithDraftIndicator.fragment.xml +1 -1
  633. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Text.fragment.xml +3 -3
  634. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DatePicker.fragment.xml +9 -2
  635. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DateTimePicker.fragment.xml +9 -2
  636. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/Input.fragment.xml +12 -3
  637. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithUnit.fragment.xml +26 -5
  638. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithValueHelp.fragment.xml +10 -2
  639. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/RatingIndicator.fragment.xml +9 -2
  640. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/TimePicker.fragment.xml +9 -2
  641. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/fragments/ObjectIdentifierContent.fragment.xml +4 -0
  642. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +31 -2
  643. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +1 -1
  644. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +20 -0
  645. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime-dbg.js +2 -2
  646. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.js +1 -1
  647. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.ts +7 -9
  648. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper-dbg.js +90 -118
  649. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +1 -1
  650. package/packages/sap.fe.macros/src/sap/fe/macros/library-dbg.js +1 -1
  651. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js +13 -12
  652. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js.map +2 -2
  653. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js +185 -214
  654. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js.map +4 -4
  655. package/packages/sap.fe.macros/src/sap/fe/macros/library.js +1 -1
  656. package/packages/sap.fe.macros/src/sap/fe/macros/manifest.json +9 -9
  657. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +4 -1
  658. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +3 -1
  659. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +3 -1
  660. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +3 -1
  661. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +3 -1
  662. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +3 -1
  663. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +3 -1
  664. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +4 -2
  665. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +3 -1
  666. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +3 -1
  667. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +3 -1
  668. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +3 -1
  669. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +3 -1
  670. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saptrc.properties +3 -1
  671. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +3 -1
  672. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +3 -1
  673. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +3 -1
  674. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +3 -1
  675. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +3 -1
  676. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +3 -1
  677. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +3 -1
  678. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +3 -1
  679. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +4 -2
  680. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +4 -2
  681. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +3 -1
  682. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +3 -1
  683. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +3 -1
  684. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +3 -1
  685. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +3 -1
  686. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +3 -1
  687. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +3 -1
  688. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +3 -1
  689. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +3 -1
  690. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +3 -1
  691. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +3 -1
  692. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +3 -1
  693. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +3 -1
  694. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +3 -1
  695. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +3 -1
  696. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +3 -1
  697. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +3 -1
  698. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +3 -1
  699. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +3 -1
  700. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +3 -1
  701. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +3 -1
  702. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +3 -1
  703. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +3 -1
  704. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +3 -1
  705. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +3 -1
  706. package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +273 -199
  707. package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +1 -1
  708. package/packages/sap.fe.macros/src/sap/fe/macros/table/Column.fragment.xml +1 -1
  709. package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +2 -0
  710. package/packages/sap.fe.macros/src/sap/fe/macros/table/CreationRow.fragment.xml +13 -20
  711. package/packages/sap.fe.macros/src/sap/fe/macros/table/CustomColumn.fragment.xml +1 -0
  712. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +5 -110
  713. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +1 -1
  714. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate-dbg.js +98 -78
  715. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -1
  716. package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.metadata-dbg.js +1 -1
  717. package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.metadata.js +1 -1
  718. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +211 -10
  719. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/apiref/api.json +1 -1
  720. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.jsmeta.json +1 -1
  721. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.xmlmeta.json +1 -1
  722. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.js +1 -45
  723. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.ts +0 -60
  724. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldAPI.spec.js +78 -0
  725. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldAPI.spec.ts +71 -0
  726. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.js +35 -1
  727. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.ts +44 -0
  728. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarDelegate.spec.js +0 -76
  729. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarMacro.spec.js +27 -1
  730. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarMacro.spec.ts +28 -0
  731. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterFieldHelper.spec.js +10 -12
  732. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterFieldHelper.spec.ts +10 -10
  733. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterUtils.spec.js +129 -15
  734. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroAPI.spec.js +13 -39
  735. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroAPI.spec.ts +2 -2
  736. package/packages/sap.fe.macros/test/sap/fe/macros/jest/RetrieveTextFromValueList.spec.js +119 -0
  737. package/packages/sap.fe.macros/test/sap/fe/macros/jest/RetrieveTextFromValueList.spec.ts +113 -0
  738. package/packages/sap.fe.macros/test/sap/fe/macros/jest/Table.spec.js +166 -2
  739. package/packages/sap.fe.macros/test/sap/fe/macros/jest/Table.spec.ts +190 -3
  740. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.js +457 -389
  741. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.ts +504 -425
  742. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.js +104 -2
  743. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.ts +158 -1
  744. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartDelegate.spec.ts.snap +0 -6
  745. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap +5 -5
  746. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroDataFieldTypes.spec.ts.snap +114 -25
  747. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroWithSemanticKey.spec.ts.snap +40 -40
  748. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroWithValueHelp.spec.ts.snap +4 -8
  749. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterBarMacro.spec.ts.snap +19 -19
  750. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterField.spec.ts.snap +3 -5
  751. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +12 -0
  752. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/SimpleFieldMacro.spec.ts.snap +89 -90
  753. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/Table.spec.ts.snap +1314 -58
  754. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/TableMacro.spec.ts.snap +459 -0
  755. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldMacroDataFieldTypes.cds +18 -2
  756. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/QuickViewForm.cds +6 -1
  757. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Table.cds +107 -106
  758. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/TableAPI.cds +197 -0
  759. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.js +33 -4
  760. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.ts +30 -4
  761. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.js +72 -29
  762. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.ts +86 -18
  763. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/__snapshots__/columnWidth.spec.ts.snap +51 -27
  764. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.js +55 -9
  765. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.ts +46 -6
  766. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/data/columnWidth.cds +28 -1
  767. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.js +170 -43
  768. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.ts +131 -15
  769. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/__snapshots__/TableDelegate.spec.ts.snap +90 -53
  770. package/packages/sap.fe.macros/test/sap/fe/macros/jest/tsx/TestTSX.spec.tsx +2 -1
  771. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/index.json +0 -5
  772. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelper.qunit.js +1 -99
  773. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormElementTemplating.qunit.js +1 -1
  774. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/MacroMetadata.qunit.js +4 -4
  775. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableHelper.qunit.js +4 -4
  776. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueHelpTemplating.qunit.js +15 -0
  777. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueListHelper.qunit.js +265 -106
  778. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/metadata/simpleMetadata.js +38 -0
  779. package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.100.json +372 -0
  780. package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.99.json +0 -11
  781. package/packages/sap.fe.navigation/src/sap/fe/navigation/.library +1 -1
  782. package/packages/sap.fe.navigation/src/sap/fe/navigation/.theming +1 -1
  783. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-dbg.js +1 -1
  784. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js +2 -2
  785. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js.map +2 -2
  786. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js +2 -2
  787. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js.map +2 -2
  788. package/packages/sap.fe.navigation/src/sap/fe/navigation/library.js +1 -1
  789. package/packages/sap.fe.navigation/src/sap/fe/navigation/manifest.json +3 -3
  790. package/packages/sap.fe.navigation/src/sap/fe/navigation/resources.json +8 -8
  791. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/api.json +1 -1
  792. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/apiref/api.json +1 -1
  793. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.xmlmeta.json +1 -1
  794. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.library +1 -1
  795. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.theming +1 -1
  796. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-dbg.js +1 -1
  797. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js +2 -2
  798. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js.map +2 -2
  799. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js +2 -2
  800. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js.map +2 -2
  801. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library.js +1 -1
  802. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/manifest.json +3 -3
  803. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/resources.json +27 -27
  804. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/css_variables.source.less +316 -15
  805. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/resources.json +1 -1
  806. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/css_variables.less +315 -14
  807. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/css_variables.source.less +315 -14
  808. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/resources.json +2 -2
  809. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/css_variables.less +316 -15
  810. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/css_variables.source.less +316 -15
  811. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/resources.json +2 -2
  812. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/css_variables.less +316 -15
  813. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/css_variables.source.less +316 -15
  814. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/resources.json +2 -2
  815. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/css_variables.less +315 -14
  816. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/css_variables.source.less +315 -14
  817. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/resources.json +2 -2
  818. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/css_variables.less +317 -16
  819. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/css_variables.source.less +317 -16
  820. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/resources.json +2 -2
  821. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/css_variables.less +317 -16
  822. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/css_variables.source.less +317 -16
  823. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/resources.json +2 -2
  824. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/css_variables.less +316 -15
  825. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/css_variables.source.less +316 -15
  826. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/resources.json +2 -2
  827. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/css_variables.less +316 -15
  828. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/css_variables.source.less +316 -15
  829. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/resources.json +2 -2
  830. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/css_variables.less +400 -99
  831. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/css_variables.source.less +400 -99
  832. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/resources.json +2 -2
  833. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/api.json +1 -1
  834. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/apiref/api.json +1 -1
  835. package/packages/sap.fe.templates/src/sap/fe/templates/.library +1 -1
  836. package/packages/sap.fe.templates/src/sap/fe/templates/.theming +1 -1
  837. package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/manifest.json +2 -2
  838. package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/resources.json +1 -1
  839. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent-dbg.js +1 -1
  840. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent.js +1 -1
  841. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component-dbg.js +7 -1
  842. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component.js +1 -1
  843. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReport.view.xml +22 -21
  844. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +13 -18
  845. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController.controller.js +1 -1
  846. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/manifest.json +2 -2
  847. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/resources.json +7 -7
  848. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.xml +3 -3
  849. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +50 -9
  850. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +1 -1
  851. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component-dbg.js +1 -12
  852. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +1 -1
  853. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +5 -1
  854. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +50 -17
  855. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1 -1
  856. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox-dbg.js +7 -1
  857. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +1 -1
  858. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/FlexBox-dbg.designtime.js +3 -0
  859. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +1 -1
  860. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/manifest.json +2 -2
  861. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/resources.json +19 -15
  862. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/CollaborationDraft.fragment.xml +36 -0
  863. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +1 -1
  864. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +1 -0
  865. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacetCustomContainer.fragment.xml +1 -0
  866. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl-dbg.controller.js +3 -1
  867. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +1 -1
  868. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer-dbg.controller.js +3 -1
  869. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +1 -1
  870. package/packages/sap.fe.templates/src/sap/fe/templates/designtime/library-preload.designtime.js +1 -1
  871. package/packages/sap.fe.templates/src/sap/fe/templates/designtime/library-preload.designtime.js.map +2 -2
  872. package/packages/sap.fe.templates/src/sap/fe/templates/library-dbg.js +1 -1
  873. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js +4 -3
  874. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js.map +2 -2
  875. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js +22 -21
  876. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js.map +4 -4
  877. package/packages/sap.fe.templates/src/sap/fe/templates/library.js +1 -1
  878. package/packages/sap.fe.templates/src/sap/fe/templates/manifest.json +14 -14
  879. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ar.properties +0 -15
  880. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_bg.properties +0 -15
  881. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ca.properties +0 -15
  882. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cs.properties +0 -15
  883. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cy.properties +0 -15
  884. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_da.properties +0 -15
  885. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_de.properties +0 -15
  886. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_el.properties +0 -15
  887. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en.properties +0 -15
  888. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_GB.properties +0 -15
  889. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +0 -15
  890. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +0 -15
  891. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +0 -15
  892. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es.properties +0 -15
  893. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es_MX.properties +0 -15
  894. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_et.properties +0 -15
  895. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fi.properties +0 -15
  896. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr.properties +0 -15
  897. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr_CA.properties +0 -15
  898. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hi.properties +0 -15
  899. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hr.properties +0 -15
  900. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hu.properties +0 -15
  901. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_id.properties +0 -15
  902. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_it.properties +0 -15
  903. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_iw.properties +0 -15
  904. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ja.properties +0 -15
  905. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_kk.properties +0 -15
  906. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ko.properties +0 -15
  907. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lt.properties +0 -15
  908. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lv.properties +0 -15
  909. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ms.properties +0 -15
  910. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_nl.properties +0 -15
  911. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_no.properties +0 -15
  912. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pl.properties +0 -15
  913. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt.properties +0 -15
  914. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt_PT.properties +0 -15
  915. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ro.properties +0 -15
  916. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ru.properties +0 -15
  917. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sh.properties +0 -15
  918. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sk.properties +0 -15
  919. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sl.properties +0 -15
  920. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sv.properties +0 -15
  921. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_th.properties +0 -15
  922. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_tr.properties +0 -15
  923. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_uk.properties +0 -15
  924. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_vi.properties +0 -15
  925. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_CN.properties +0 -15
  926. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_TW.properties +0 -15
  927. package/packages/sap.fe.templates/src/sap/fe/templates/resources.json +115 -89
  928. package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/manifest.json +1 -1
  929. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/api.json +353 -1
  930. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/apiref/api.json +1 -1
  931. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.jsmeta.json +1 -1
  932. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.xmlmeta.json +1 -1
  933. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/IntentBasedNavigation.spec.js +1 -1
  934. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/IntentBasedNavigation.spec.ts +3 -3
  935. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/Share.spec.js +1 -1
  936. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/Share.spec.ts +4 -4
  937. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.js +1 -1
  938. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.ts +2 -2
  939. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.js +2 -1
  940. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.ts +2 -1
  941. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/HeaderFacet.spec.ts.snap +7 -7
  942. package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.js +30 -61
  943. package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.ts +1 -1
  944. package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.100.json +192 -0
  945. package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.99.json +0 -11
  946. package/packages/sap.fe.test/src/sap/fe/test/.library +1 -1
  947. package/packages/sap.fe.test/src/sap/fe/test/.theming +1 -1
  948. package/packages/sap.fe.test/src/sap/fe/test/FeMocks-dbg.js +1 -1
  949. package/packages/sap.fe.test/src/sap/fe/test/FeMocks.ts +8 -8
  950. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper-dbg.js +6 -4
  951. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.js +1 -1
  952. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.ts +10 -6
  953. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper-dbg.js +126 -203
  954. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.js +1 -1
  955. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.ts +17 -2
  956. package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarAPI-dbg.js +9 -1
  957. package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarAPI.js +1 -1
  958. package/packages/sap.fe.test/src/sap/fe/test/library-dbg.js +1 -1
  959. package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js +2 -2
  960. package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js.map +2 -2
  961. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +9 -18
  962. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js.map +3 -3
  963. package/packages/sap.fe.test/src/sap/fe/test/library.js +1 -1
  964. package/packages/sap.fe.test/src/sap/fe/test/manifest.json +3 -3
  965. package/packages/sap.fe.test/src/sap/fe/test/resources.json +18 -18
  966. package/packages/sap.fe.test/test/sap/fe/test/designtime/api.json +1 -1
  967. package/packages/sap.fe.test/test/sap/fe/test/designtime/apiref/api.json +1 -1
  968. package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -1
  969. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormTemplatingTs.qunit.js +0 -271
@@ -2,10 +2,10 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/PasteHelper", "sap/m/MessageBox", "sap/base/Log", "./MacroAPI", "sap/fe/macros/DelegateUtil"], function (ClassSupport, PasteHelper, MessageBox, Log, MacroAPI, DelegateUtil) {
5
+ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/PasteHelper", "sap/m/MessageBox", "sap/base/Log", "./MacroAPI", "sap/fe/macros/DelegateUtil", "sap/ui/core/message/Message"], function (ClassSupport, PasteHelper, MessageBox, Log, MacroAPI, DelegateUtil, Message) {
6
6
  "use strict";
7
7
 
8
- var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18;
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19;
9
9
 
10
10
  var Event = ClassSupport.Event;
11
11
  var Property = ClassSupport.Property;
@@ -15,28 +15,12 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/PasteHel
15
15
 
16
16
  function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }
17
17
 
18
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
19
-
20
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
21
-
22
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
18
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
23
19
 
24
20
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
25
21
 
26
22
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
27
23
 
28
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
29
-
30
- function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
31
-
32
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
33
-
34
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
35
-
36
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
37
-
38
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
39
-
40
24
  function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
41
25
 
42
26
  function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.'); }
@@ -91,57 +75,57 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/PasteHel
91
75
  defaultValue: true
92
76
  }), _dec16 = Property({
93
77
  type: "string"
78
+ }), _dec17 = Property({
79
+ type: "string"
94
80
  }), _dec(_class = (_class2 = /*#__PURE__*/function (_MacroAPI) {
95
81
  _inherits(TableAPI, _MacroAPI);
96
82
 
97
- var _super = _createSuper(TableAPI);
98
-
99
83
  function TableAPI(mSettings) {
100
84
  var _this;
101
85
 
102
- _classCallCheck(this, TableAPI);
103
-
104
86
  for (var _len = arguments.length, others = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
105
87
  others[_key - 1] = arguments[_key];
106
88
  }
107
89
 
108
- _this = _super.call.apply(_super, [this, mSettings].concat(others));
90
+ _this = _MacroAPI.call.apply(_MacroAPI, [this, mSettings].concat(others)) || this;
109
91
 
110
- _initializerDefineProperty(_assertThisInitialized(_this), "tableDefinition", _descriptor, _assertThisInitialized(_this));
92
+ _initializerDefineProperty(_this, "tableDefinition", _descriptor, _assertThisInitialized(_this));
111
93
 
112
- _initializerDefineProperty(_assertThisInitialized(_this), "readOnly", _descriptor2, _assertThisInitialized(_this));
94
+ _initializerDefineProperty(_this, "readOnly", _descriptor2, _assertThisInitialized(_this));
113
95
 
114
- _initializerDefineProperty(_assertThisInitialized(_this), "id", _descriptor3, _assertThisInitialized(_this));
96
+ _initializerDefineProperty(_this, "id", _descriptor3, _assertThisInitialized(_this));
115
97
 
116
- _initializerDefineProperty(_assertThisInitialized(_this), "busy", _descriptor4, _assertThisInitialized(_this));
98
+ _initializerDefineProperty(_this, "busy", _descriptor4, _assertThisInitialized(_this));
117
99
 
118
- _initializerDefineProperty(_assertThisInitialized(_this), "type", _descriptor5, _assertThisInitialized(_this));
100
+ _initializerDefineProperty(_this, "type", _descriptor5, _assertThisInitialized(_this));
119
101
 
120
- _initializerDefineProperty(_assertThisInitialized(_this), "enableExport", _descriptor6, _assertThisInitialized(_this));
102
+ _initializerDefineProperty(_this, "enableExport", _descriptor6, _assertThisInitialized(_this));
121
103
 
122
- _initializerDefineProperty(_assertThisInitialized(_this), "enablePaste", _descriptor7, _assertThisInitialized(_this));
104
+ _initializerDefineProperty(_this, "enablePaste", _descriptor7, _assertThisInitialized(_this));
123
105
 
124
- _initializerDefineProperty(_assertThisInitialized(_this), "enableFullScreen", _descriptor8, _assertThisInitialized(_this));
106
+ _initializerDefineProperty(_this, "enableFullScreen", _descriptor8, _assertThisInitialized(_this));
125
107
 
126
- _initializerDefineProperty(_assertThisInitialized(_this), "filterBar", _descriptor9, _assertThisInitialized(_this));
108
+ _initializerDefineProperty(_this, "filterBar", _descriptor9, _assertThisInitialized(_this));
127
109
 
128
- _initializerDefineProperty(_assertThisInitialized(_this), "selectionMode", _descriptor10, _assertThisInitialized(_this));
110
+ _initializerDefineProperty(_this, "selectionMode", _descriptor10, _assertThisInitialized(_this));
129
111
 
130
- _initializerDefineProperty(_assertThisInitialized(_this), "header", _descriptor11, _assertThisInitialized(_this));
112
+ _initializerDefineProperty(_this, "header", _descriptor11, _assertThisInitialized(_this));
131
113
 
132
- _initializerDefineProperty(_assertThisInitialized(_this), "enableAutoColumnWidth", _descriptor12, _assertThisInitialized(_this));
114
+ _initializerDefineProperty(_this, "enableAutoColumnWidth", _descriptor12, _assertThisInitialized(_this));
133
115
 
134
- _initializerDefineProperty(_assertThisInitialized(_this), "headerVisible", _descriptor13, _assertThisInitialized(_this));
116
+ _initializerDefineProperty(_this, "headerVisible", _descriptor13, _assertThisInitialized(_this));
135
117
 
136
- _initializerDefineProperty(_assertThisInitialized(_this), "rowPress", _descriptor14, _assertThisInitialized(_this));
118
+ _initializerDefineProperty(_this, "rowPress", _descriptor14, _assertThisInitialized(_this));
137
119
 
138
- _initializerDefineProperty(_assertThisInitialized(_this), "stateChanged", _descriptor15, _assertThisInitialized(_this));
120
+ _initializerDefineProperty(_this, "stateChanged", _descriptor15, _assertThisInitialized(_this));
139
121
 
140
- _initializerDefineProperty(_assertThisInitialized(_this), "personalization", _descriptor16, _assertThisInitialized(_this));
122
+ _initializerDefineProperty(_this, "personalization", _descriptor16, _assertThisInitialized(_this));
141
123
 
142
- _initializerDefineProperty(_assertThisInitialized(_this), "variantManagement", _descriptor17, _assertThisInitialized(_this));
124
+ _initializerDefineProperty(_this, "variantManagement", _descriptor17, _assertThisInitialized(_this));
143
125
 
144
- _initializerDefineProperty(_assertThisInitialized(_this), "selectionChange", _descriptor18, _assertThisInitialized(_this));
126
+ _initializerDefineProperty(_this, "menu", _descriptor18, _assertThisInitialized(_this));
127
+
128
+ _initializerDefineProperty(_this, "selectionChange", _descriptor19, _assertThisInitialized(_this));
145
129
 
146
130
  if (_this.content) {
147
131
  _this.content.attachEvent("selectionChange", {}, _this.onTableSelectionChange, _assertThisInitialized(_this));
@@ -150,232 +134,276 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/PasteHel
150
134
  return _this;
151
135
  }
152
136
 
153
- _createClass(TableAPI, [{
154
- key: "getSelectedContexts",
155
- value:
156
- /**
157
- * Gets contexts from the table that have been selected by the user.
158
- *
159
- * @returns Contexts of the rows selected by the user
160
- *
161
- * @public
162
- */
163
- function getSelectedContexts() {
164
- return this.content.getSelectedContexts();
165
- }
166
- /**
167
- * An event triggered when the selection in the table changes.
168
- *
169
- * @public
170
- */
171
-
172
- }, {
173
- key: "onTableRowPress",
174
- value: function onTableRowPress(oEvent, oController, oContext, mParameters) {
175
- // In the case of an analytical table, if we're trying to navigate to a context corresponding to a visual group or grand total
176
- // --> Cancel navigation
177
- if (oContext && oContext.isA("sap.ui.model.odata.v4.Context") && typeof oContext.getProperty("@$ui5.node.isExpanded") === "boolean") {
178
- return false;
179
- } else {
180
- oController._routing.navigateForwardToContext(oContext, mParameters);
181
- }
182
- }
183
- }, {
184
- key: "onInternalDataReceived",
185
- value: function onInternalDataReceived(oEvent) {
186
- if (oEvent.getParameter("error")) {
187
- this.getController().messageHandler.showMessageDialog();
188
- }
137
+ var _proto = TableAPI.prototype;
138
+
139
+ /**
140
+ * Gets contexts from the table that have been selected by the user.
141
+ *
142
+ * @returns Contexts of the rows selected by the user
143
+ *
144
+ * @public
145
+ */
146
+ _proto.getSelectedContexts = function getSelectedContexts() {
147
+ return this.content.getSelectedContexts();
148
+ }
149
+ /**
150
+ * Adds a message to the table.
151
+ *
152
+ * The message applies to the whole table and not to an individual table row.
153
+ *
154
+ * @param {object} [parameters] The parameters to create the message
155
+ * @param {sap.ui.core.MessageType} parameters.type Message type
156
+ * @param {string} parameters.message Message text
157
+ * @param {string} parameters.description Message description
158
+ * @param {boolean} parameters.persistent True if the message is persistent
159
+ * @returns {string} The ID of the message
160
+ *
161
+ * @public
162
+ */
163
+ ;
164
+
165
+ _proto.addMessage = function addMessage(parameters) {
166
+ var msgManager = this._getMessageManager();
167
+
168
+ var oTable = this.content;
169
+ var oMessage = new Message({
170
+ target: oTable.getRowBinding().getResolvedPath(),
171
+ type: parameters.type,
172
+ message: parameters.message,
173
+ processor: oTable.getModel(),
174
+ description: parameters.description,
175
+ persistent: parameters.persistent
176
+ });
177
+ msgManager.addMessages(oMessage);
178
+ return oMessage.getId();
179
+ }
180
+ /**
181
+ * Removes a message from the table.
182
+ *
183
+ * @param {string} id The id of the message
184
+ *
185
+ * @public
186
+ */
187
+ ;
188
+
189
+ _proto.removeMessage = function removeMessage(id) {
190
+ var msgManager = this._getMessageManager();
191
+
192
+ var messages = msgManager.getMessageModel().getData();
193
+ var result = messages.find(function (e) {
194
+ return e.id === id;
195
+ });
196
+
197
+ if (result) {
198
+ msgManager.removeMessages(result);
189
199
  }
190
- }, {
191
- key: "onPaste",
192
- value: function onPaste(oEvent, oController) {
193
- // If paste is disable or if we're not in edit mode, we can't paste anything
194
- if (!this.tableDefinition.control.enablePaste || !this.getModel("ui").getProperty("/isEditable")) {
195
- return;
196
- }
200
+ };
197
201
 
198
- var aRawPastedData = oEvent.getParameter("data"),
199
- oTable = oEvent.getSource();
200
- var oResourceModel;
201
-
202
- if (oTable.getEnablePaste() === true) {
203
- PasteHelper.pasteData(aRawPastedData, oTable, oController);
204
- } else {
205
- oResourceModel = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");
206
- MessageBox.error(oResourceModel.getText("T_OP_CONTROLLER_SAPFE_PASTE_DISABLED_MESSAGE"), {
207
- title: oResourceModel.getText("C_COMMON_SAPFE_ERROR")
208
- });
209
- }
210
- } // This event will allow us to intercept the export before is triggered to cover specific cases
211
- // that couldn't be addressed on the propertyInfos for each column.
212
- // e.g. Fixed Target Value for the datapoints
213
-
214
- }, {
215
- key: "onBeforeExport",
216
- value: function onBeforeExport(oEvent) {
217
- var _oEvent$getParameters;
218
-
219
- var isSplitMode = oEvent.getParameters().userExportSettings.splitCells,
220
- isRLTLanguage = sap.ui.getCore().getConfiguration().getRTL(),
221
- oTableController = oEvent.getSource(),
222
- oExportColumns = (_oEvent$getParameters = oEvent.getParameters().exportSettings.workbook) === null || _oEvent$getParameters === void 0 ? void 0 : _oEvent$getParameters.columns,
223
- oTableColumns = this.tableDefinition.columns;
224
- TableAPI.updateExportSettings(oExportColumns, oTableColumns, oTableController, isSplitMode, isRLTLanguage);
202
+ _proto._getMessageManager = function _getMessageManager() {
203
+ return sap.ui.getCore().getMessageManager();
204
+ }
205
+ /**
206
+ * An event triggered when the selection in the table changes.
207
+ *
208
+ * @public
209
+ */
210
+ ;
211
+
212
+ _proto.onTableRowPress = function onTableRowPress(oEvent, oController, oContext, mParameters) {
213
+ // In the case of an analytical table, if we're trying to navigate to a context corresponding to a visual group or grand total
214
+ // --> Cancel navigation
215
+ if (oContext && oContext.isA("sap.ui.model.odata.v4.Context") && typeof oContext.getProperty("@$ui5.node.isExpanded") === "boolean") {
216
+ return false;
217
+ } else {
218
+ oController._routing.navigateForwardToContext(oContext, mParameters);
225
219
  }
226
- /**
227
- * Handles the MDC DataStateIndicator plugin to display messageStrip on a table.
228
- * @param oMessage
229
- * @param oTable
230
- * @name dataStateFilter
231
- * @returns {boolean} Whether to render visible the messageStrip
232
- */
233
-
234
- }, {
235
- key: "onDataStateChange",
236
- value:
237
- /**
238
- * This event handles the DataState of the DataStateIndicator plugin from MDC on a table.
239
- * It's fired when new error messages are sent from the backend to update row highlighting.
240
- *
241
- * @name onDataStateChange
242
- * @param {object} oEvent Event object
243
- */
244
- function onDataStateChange(oEvent) {
245
- var oDataStateIndicator = oEvent.getSource();
246
- var aFilteredMessages = oEvent.getParameter("filteredMessages");
247
-
248
- if (aFilteredMessages) {
249
- var oInternalModel = oDataStateIndicator.getModel("internal");
250
- oInternalModel.setProperty("filteredMessages", aFilteredMessages, oDataStateIndicator.getBindingContext("internal"));
251
- }
220
+ };
221
+
222
+ _proto.onInternalDataReceived = function onInternalDataReceived(oEvent) {
223
+ if (oEvent.getParameter("error")) {
224
+ this.getController().messageHandler.showMessageDialog();
252
225
  }
253
- }, {
254
- key: "onMassEditButtonPressed",
255
- value: function onMassEditButtonPressed(oEvent, pageController) {
256
- var oTable = this.content;
257
-
258
- if (pageController && pageController.massEdit) {
259
- pageController.massEdit.openMassEditDialog(oTable);
260
- } else {
261
- Log.warning("The Controller is not enhanced with Mass Edit functionality");
262
- }
226
+ };
227
+
228
+ _proto.onPaste = function onPaste(oEvent, oController) {
229
+ // If paste is disable or if we're not in edit mode, we can't paste anything
230
+ if (!this.tableDefinition.control.enablePaste || !this.getModel("ui").getProperty("/isEditable")) {
231
+ return;
263
232
  }
264
- }, {
265
- key: "onTableSelectionChange",
266
- value: function onTableSelectionChange(oEvent) {
267
- this.fireEvent("selectionChange", oEvent.getParameters());
233
+
234
+ var aRawPastedData = oEvent.getParameter("data"),
235
+ oTable = oEvent.getSource();
236
+ var oResourceModel;
237
+
238
+ if (oTable.getEnablePaste() === true) {
239
+ PasteHelper.pasteData(aRawPastedData, oTable, oController);
240
+ } else {
241
+ oResourceModel = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");
242
+ MessageBox.error(oResourceModel.getText("T_OP_CONTROLLER_SAPFE_PASTE_DISABLED_MESSAGE"), {
243
+ title: oResourceModel.getText("C_COMMON_SAPFE_ERROR")
244
+ });
268
245
  }
269
- }], [{
270
- key: "dataStateIndicatorFilter",
271
- value: function dataStateIndicatorFilter(oMessage, oTable) {
272
- var _oTable$getBindingCon;
273
-
274
- var sTableContextBindingPath = (_oTable$getBindingCon = oTable.getBindingContext()) === null || _oTable$getBindingCon === void 0 ? void 0 : _oTable$getBindingCon.getPath();
275
- var sTableRowBinding = (sTableContextBindingPath ? sTableContextBindingPath + "/" : "") + oTable.getRowBinding().getPath();
276
- return sTableRowBinding === oMessage.getTarget() ? true : false;
246
+ } // This event will allow us to intercept the export before is triggered to cover specific cases
247
+ // that couldn't be addressed on the propertyInfos for each column.
248
+ // e.g. Fixed Target Value for the datapoints
249
+ ;
250
+
251
+ _proto.onBeforeExport = function onBeforeExport(oEvent) {
252
+ var _exportSettings$workb;
253
+
254
+ var isSplitMode = oEvent.getParameters().userExportSettings.splitCells,
255
+ isRLTLanguage = sap.ui.getCore().getConfiguration().getRTL(),
256
+ oTableController = oEvent.getSource(),
257
+ oExportColumns = (_exportSettings$workb = oEvent.getParameters().exportSettings.workbook) === null || _exportSettings$workb === void 0 ? void 0 : _exportSettings$workb.columns,
258
+ oTableColumns = this.tableDefinition.columns;
259
+ TableAPI.updateExportSettings(oExportColumns, oTableColumns, oTableController, isSplitMode, isRLTLanguage);
260
+ }
261
+ /**
262
+ * Handles the MDC DataStateIndicator plugin to display messageStrip on a table.
263
+ * @param oMessage
264
+ * @param oTable
265
+ * @name dataStateFilter
266
+ * @returns {boolean} Whether to render visible the messageStrip
267
+ */
268
+ ;
269
+
270
+ TableAPI.dataStateIndicatorFilter = function dataStateIndicatorFilter(oMessage, oTable) {
271
+ var _oTable$getBindingCon;
272
+
273
+ var sTableContextBindingPath = (_oTable$getBindingCon = oTable.getBindingContext()) === null || _oTable$getBindingCon === void 0 ? void 0 : _oTable$getBindingCon.getPath();
274
+ var sTableRowBinding = (sTableContextBindingPath ? sTableContextBindingPath + "/" : "") + oTable.getRowBinding().getPath();
275
+ return sTableRowBinding === oMessage.getTarget() ? true : false;
276
+ }
277
+ /**
278
+ * This event handles the DataState of the DataStateIndicator plugin from MDC on a table.
279
+ * It's fired when new error messages are sent from the backend to update row highlighting.
280
+ *
281
+ * @name onDataStateChange
282
+ * @param {object} oEvent Event object
283
+ */
284
+ ;
285
+
286
+ _proto.onDataStateChange = function onDataStateChange(oEvent) {
287
+ var oDataStateIndicator = oEvent.getSource();
288
+ var aFilteredMessages = oEvent.getParameter("filteredMessages");
289
+
290
+ if (aFilteredMessages) {
291
+ var oInternalModel = oDataStateIndicator.getModel("internal");
292
+ oInternalModel.setProperty("filteredMessages", aFilteredMessages, oDataStateIndicator.getBindingContext("internal"));
277
293
  }
278
- }, {
279
- key: "updateExportSettings",
280
- value: function updateExportSettings(oExportColumns, oColumns, oTableController, isSplitMode, isRLTLanguage) {
281
- oExportColumns.forEach(function (oColumnExport) {
282
- var aExportLabels = [];
283
- oColumns === null || oColumns === void 0 ? void 0 : oColumns.forEach(function (column) {
284
- var oColumn = column;
285
-
286
- if (isSplitMode) {
287
- // aExportLabels will contain labels from a FieldGroup, a text annotation and a DataPoint
288
- // These labels will be used for child properties (simple properties) from complexProperty
289
- // Unit/currency properties will be dismiss as it could be used in several datafields.
290
- var isUnit = oColumns.some(function (column) {
291
- return column.unit === oColumnExport.property;
292
- }); // Create Exporting labels array
293
-
294
- var FieldGroupLabel = TableAPI._getFieldGroupExportLabel(oColumnExport, oColumn, oTableController);
295
-
296
- if (FieldGroupLabel) {
297
- aExportLabels.unshift(FieldGroupLabel);
298
- } // For a text annotation, export label template used is <value> - <description> and for a DataPoint <datapointValue> - <TargetValue>.
299
- // In both cases internationalization is needed
300
-
301
-
302
- var dataFieldDescriptionLabel = TableAPI._getDataFieldDescriptionLabel(oColumnExport, oColumn, oTableController, isUnit);
303
-
304
- if (dataFieldDescriptionLabel) {
305
- aExportLabels.unshift(dataFieldDescriptionLabel);
306
- } //Add TargetValue on dummy created property when exporting on split mode
307
-
308
-
309
- if (oColumn.isDataPointFakeTargetProperty && oColumn.relativePath === oColumnExport.property) {
310
- oColumnExport.property = [oColumnExport.property];
311
- }
312
- } //Modify exported value when using Communication.Contact dataFieldForAnnotation
313
- //contact>fn property should be exported
314
-
315
-
316
- if (oColumn.exportContactProperty && column.propertyInfos) {
317
- var _column$propertyInfos, _column$propertyInfos2, _column$propertyInfos3, _oColumn$propertyInfo;
318
-
319
- if (((_column$propertyInfos = column.propertyInfos) === null || _column$propertyInfos === void 0 ? void 0 : _column$propertyInfos.length) === 1 && ((_column$propertyInfos2 = column.propertyInfos) === null || _column$propertyInfos2 === void 0 ? void 0 : _column$propertyInfos2.toString()) === oColumnExport.property.toString()) {
320
- oColumnExport.property = oColumn.exportContactProperty;
321
- oColumnExport.label = oColumn.label;
322
- } else if (((_column$propertyInfos3 = column.propertyInfos) === null || _column$propertyInfos3 === void 0 ? void 0 : _column$propertyInfos3.length) > 1 && (_oColumn$propertyInfo = oColumn.propertyInfos) !== null && _oColumn$propertyInfo !== void 0 && _oColumn$propertyInfo.some(function (prop) {
323
- return oColumnExport.property.includes(prop);
324
- }) && Array.isArray(oColumnExport.property)) {
325
- var _oColumnExport$proper;
326
-
327
- oColumnExport.property = (_oColumnExport$proper = oColumnExport.property) === null || _oColumnExport$proper === void 0 ? void 0 : _oColumnExport$proper.map(function (property) {
328
- var _oColumn$propertyInfo2;
329
-
330
- return (_oColumn$propertyInfo2 = oColumn.propertyInfos) !== null && _oColumn$propertyInfo2 !== void 0 && _oColumn$propertyInfo2.some(function (prop) {
331
- return prop === property;
332
- }) ? oColumn.exportContactProperty : property;
333
- });
334
- }
294
+ };
295
+
296
+ TableAPI.updateExportSettings = function updateExportSettings(oExportColumns, oColumns, oTableController, isSplitMode, isRLTLanguage) {
297
+ oExportColumns.forEach(function (oColumnExport) {
298
+ // aExportLabels will contain labels from a FieldGroup, a text annotation and a DataPoint
299
+ // These labels will be used for child properties (simple properties) from complexProperty
300
+ // Unit/currency properties will be dismiss as it could be used in several datafields.
301
+ var aExportLabels = [];
302
+ var isUnit = oColumns.some(function (column) {
303
+ var sUnit = column.unit;
304
+ return sUnit === oColumnExport.property || sUnit === "Property::" + oColumnExport.property;
305
+ });
306
+ oColumns === null || oColumns === void 0 ? void 0 : oColumns.forEach(function (column) {
307
+ var oColumn = column;
308
+
309
+ if (isSplitMode) {
310
+ // Create Exporting labels array
311
+ var FieldGroupLabel = TableAPI._getFieldGroupExportLabel(oColumnExport, oColumn, oTableController);
312
+
313
+ if (FieldGroupLabel) {
314
+ aExportLabels.unshift(FieldGroupLabel);
315
+ } // For a text annotation, export label template used is <value> - <description> and for a DataPoint <datapointValue> - <TargetValue>.
316
+ // In both cases internationalization is needed
317
+
318
+
319
+ var dataFieldDescriptionLabel = TableAPI._getDataFieldDescriptionLabel(oColumnExport, oColumn, oTableController, isUnit);
320
+
321
+ if (dataFieldDescriptionLabel) {
322
+ aExportLabels.unshift(dataFieldDescriptionLabel);
323
+ } //Add TargetValue on dummy created property when exporting on split mode
324
+
325
+
326
+ if (oColumn.isDataPointFakeTargetProperty && oColumn.relativePath === oColumnExport.property) {
327
+ oColumnExport.property = [oColumnExport.property];
335
328
  }
336
- });
337
- aExportLabels.push(DelegateUtil.getLocalizedText(oColumnExport.label, oTableController));
329
+ } //Modify exported value when using Communication.Contact dataFieldForAnnotation
330
+ //contact>fn property should be exported
338
331
 
339
- if (aExportLabels.length > 1) {
340
- // Remove duplicate labels (e.g. FieldGroup label is the same as the label of one of the properties)
341
- aExportLabels = aExportLabels.filter(function (label, index) {
342
- if (aExportLabels.indexOf(label) == index) {
343
- return label;
344
- }
345
- });
346
- } // Check if a RTL language if used and if so we need to reverse labels
347
332
 
333
+ if (oColumn.exportContactProperty && column.propertyInfos) {
334
+ var _column$propertyInfos, _column$propertyInfos2, _column$propertyInfos3, _oColumn$propertyInfo;
348
335
 
349
- if (isRLTLanguage) {
350
- aExportLabels.reverse();
351
- }
336
+ if (((_column$propertyInfos = column.propertyInfos) === null || _column$propertyInfos === void 0 ? void 0 : _column$propertyInfos.length) === 1 && ((_column$propertyInfos2 = column.propertyInfos) === null || _column$propertyInfos2 === void 0 ? void 0 : _column$propertyInfos2.toString()) === oColumnExport.property.toString()) {
337
+ oColumnExport.property = oColumn.exportContactProperty;
338
+ oColumnExport.label = oColumn.label;
339
+ } else if (((_column$propertyInfos3 = column.propertyInfos) === null || _column$propertyInfos3 === void 0 ? void 0 : _column$propertyInfos3.length) > 1 && (_oColumn$propertyInfo = oColumn.propertyInfos) !== null && _oColumn$propertyInfo !== void 0 && _oColumn$propertyInfo.some(function (prop) {
340
+ return oColumnExport.property.includes(prop);
341
+ }) && Array.isArray(oColumnExport.property)) {
342
+ var _oColumnExport$proper;
343
+
344
+ oColumnExport.property = (_oColumnExport$proper = oColumnExport.property) === null || _oColumnExport$proper === void 0 ? void 0 : _oColumnExport$proper.map(function (property) {
345
+ var _oColumn$propertyInfo2;
352
346
 
353
- oColumnExport.label = aExportLabels.join(" - ");
347
+ return (_oColumn$propertyInfo2 = oColumn.propertyInfos) !== null && _oColumn$propertyInfo2 !== void 0 && _oColumn$propertyInfo2.some(function (prop) {
348
+ return prop === property;
349
+ }) ? oColumn.exportContactProperty : property;
350
+ });
351
+ }
352
+ }
354
353
  });
355
- return oExportColumns;
356
- }
357
- }, {
358
- key: "_getFieldGroupExportLabel",
359
- value: function _getFieldGroupExportLabel(oColumnExport, oColumn, oTableController) {
360
- var _oColumn$exportSettin, _oColumn$propertyInfo3, _oColumn$propertyInfo4;
354
+ aExportLabels.push(DelegateUtil.getLocalizedText(oColumnExport.label, oTableController));
355
+
356
+ if (aExportLabels.length > 1) {
357
+ // Remove duplicate labels (e.g. FieldGroup label is the same as the label of one of the properties)
358
+ aExportLabels = aExportLabels.filter(function (label, index) {
359
+ if (aExportLabels.indexOf(label) == index) {
360
+ return label;
361
+ }
362
+ });
363
+ } // Check if a RTL language if used and if so we need to reverse labels
361
364
 
362
- if ((oColumnExport.columnId.indexOf("::FieldGroup::") !== -1 || (_oColumn$exportSettin = oColumn.exportSettings) !== null && _oColumn$exportSettin !== void 0 && _oColumn$exportSettin.fieldLabel && oColumnExport.columnId.indexOf("__column") !== -1) && ((_oColumn$propertyInfo3 = oColumn.propertyInfos) !== null && _oColumn$propertyInfo3 !== void 0 && _oColumn$propertyInfo3.includes(oColumnExport.property) || (_oColumn$propertyInfo4 = oColumn.propertyInfos) !== null && _oColumn$propertyInfo4 !== void 0 && _oColumn$propertyInfo4.includes("Property::" + oColumnExport.property))) {
363
- var _oColumn$exportSettin2;
364
365
 
365
- var label = ((_oColumn$exportSettin2 = oColumn.exportSettings) === null || _oColumn$exportSettin2 === void 0 ? void 0 : _oColumn$exportSettin2.fieldLabel) || oColumn.label;
366
- return DelegateUtil.getLocalizedText(label, oTableController);
366
+ if (isRLTLanguage) {
367
+ aExportLabels.reverse();
367
368
  }
369
+
370
+ oColumnExport.label = aExportLabels.join(" - ");
371
+ });
372
+ return oExportColumns;
373
+ };
374
+
375
+ TableAPI._getFieldGroupExportLabel = function _getFieldGroupExportLabel(oColumnExport, oColumn, oTableController) {
376
+ var _oColumn$exportSettin, _oColumn$propertyInfo3, _oColumn$propertyInfo4;
377
+
378
+ if ((oColumnExport.columnId.indexOf("::FieldGroup::") !== -1 || (_oColumn$exportSettin = oColumn.exportSettings) !== null && _oColumn$exportSettin !== void 0 && _oColumn$exportSettin.fieldLabel && oColumnExport.columnId.indexOf("__column") !== -1) && ((_oColumn$propertyInfo3 = oColumn.propertyInfos) !== null && _oColumn$propertyInfo3 !== void 0 && _oColumn$propertyInfo3.includes(oColumnExport.property) || (_oColumn$propertyInfo4 = oColumn.propertyInfos) !== null && _oColumn$propertyInfo4 !== void 0 && _oColumn$propertyInfo4.includes("Property::" + oColumnExport.property))) {
379
+ var _oColumn$exportSettin2;
380
+
381
+ var label = ((_oColumn$exportSettin2 = oColumn.exportSettings) === null || _oColumn$exportSettin2 === void 0 ? void 0 : _oColumn$exportSettin2.fieldLabel) || oColumn.label;
382
+ return DelegateUtil.getLocalizedText(label, oTableController);
368
383
  }
369
- }, {
370
- key: "_getDataFieldDescriptionLabel",
371
- value: function _getDataFieldDescriptionLabel(oColumnExport, oColumn, oTableController, isUnit) {
372
- var _oColumn$propertyInfo5, _oColumn$propertyInfo6, _oColumn$propertyInfo7, _oColumn$relativePath;
384
+ };
373
385
 
374
- if (oColumn.propertyInfos && ((_oColumn$propertyInfo5 = oColumn.propertyInfos) === null || _oColumn$propertyInfo5 === void 0 ? void 0 : _oColumn$propertyInfo5.length) > 1 && !isUnit && ((_oColumn$propertyInfo6 = oColumn.propertyInfos) !== null && _oColumn$propertyInfo6 !== void 0 && _oColumn$propertyInfo6.includes(oColumnExport.property) || (_oColumn$propertyInfo7 = oColumn.propertyInfos) !== null && _oColumn$propertyInfo7 !== void 0 && _oColumn$propertyInfo7.includes("Property::" + oColumnExport.property)) && ((_oColumn$relativePath = oColumn.relativePath) === null || _oColumn$relativePath === void 0 ? void 0 : _oColumn$relativePath.indexOf("@com.sap.vocabularies.UI.v1.FieldGroup")) === -1) {
375
- return DelegateUtil.getLocalizedText(oColumn.label, oTableController);
376
- }
386
+ TableAPI._getDataFieldDescriptionLabel = function _getDataFieldDescriptionLabel(oColumnExport, oColumn, oTableController, isUnit) {
387
+ var _oColumn$propertyInfo5, _oColumn$propertyInfo6, _oColumn$propertyInfo7, _oColumn$relativePath;
388
+
389
+ if (oColumn.propertyInfos && ((_oColumn$propertyInfo5 = oColumn.propertyInfos) === null || _oColumn$propertyInfo5 === void 0 ? void 0 : _oColumn$propertyInfo5.length) > 1 && !isUnit && ((_oColumn$propertyInfo6 = oColumn.propertyInfos) !== null && _oColumn$propertyInfo6 !== void 0 && _oColumn$propertyInfo6.includes(oColumnExport.property) || (_oColumn$propertyInfo7 = oColumn.propertyInfos) !== null && _oColumn$propertyInfo7 !== void 0 && _oColumn$propertyInfo7.includes("Property::" + oColumnExport.property)) && ((_oColumn$relativePath = oColumn.relativePath) === null || _oColumn$relativePath === void 0 ? void 0 : _oColumn$relativePath.indexOf("@com.sap.vocabularies.UI.v1.FieldGroup")) === -1) {
390
+ return DelegateUtil.getLocalizedText(oColumn.label, oTableController);
377
391
  }
378
- }]);
392
+ };
393
+
394
+ _proto.onMassEditButtonPressed = function onMassEditButtonPressed(oEvent, pageController) {
395
+ var oTable = this.content;
396
+
397
+ if (pageController && pageController.massEdit) {
398
+ pageController.massEdit.openMassEditDialog(oTable);
399
+ } else {
400
+ Log.warning("The Controller is not enhanced with Mass Edit functionality");
401
+ }
402
+ };
403
+
404
+ _proto.onTableSelectionChange = function onTableSelectionChange(oEvent) {
405
+ this.fireEvent("selectionChange", oEvent.getParameters());
406
+ };
379
407
 
380
408
  return TableAPI;
381
409
  }(MacroAPI), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "tableDefinition", [_dec2], {
@@ -463,7 +491,12 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/PasteHel
463
491
  enumerable: true,
464
492
  writable: true,
465
493
  initializer: null
466
- }), _descriptor18 = _applyDecoratedDescriptor(_class2.prototype, "selectionChange", [Event], {
494
+ }), _descriptor18 = _applyDecoratedDescriptor(_class2.prototype, "menu", [_dec17], {
495
+ configurable: true,
496
+ enumerable: true,
497
+ writable: true,
498
+ initializer: null
499
+ }), _descriptor19 = _applyDecoratedDescriptor(_class2.prototype, "selectionChange", [Event], {
467
500
  configurable: true,
468
501
  enumerable: true,
469
502
  writable: true,
@@ -471,4 +504,4 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/PasteHel
471
504
  }), _applyDecoratedDescriptor(_class2.prototype, "onTableRowPress", [EventHandler], Object.getOwnPropertyDescriptor(_class2.prototype, "onTableRowPress"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onInternalDataReceived", [EventHandler], Object.getOwnPropertyDescriptor(_class2.prototype, "onInternalDataReceived"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPaste", [EventHandler], Object.getOwnPropertyDescriptor(_class2.prototype, "onPaste"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeExport", [EventHandler], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeExport"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onDataStateChange", [EventHandler], Object.getOwnPropertyDescriptor(_class2.prototype, "onDataStateChange"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onMassEditButtonPressed", [EventHandler], Object.getOwnPropertyDescriptor(_class2.prototype, "onMassEditButtonPressed"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onTableSelectionChange", [EventHandler], Object.getOwnPropertyDescriptor(_class2.prototype, "onTableSelectionChange"), _class2.prototype)), _class2)) || _class);
472
505
  return TableAPI;
473
506
  }, false);
474
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRhYmxlQVBJLnRzIl0sIm5hbWVzIjpbIlRhYmxlQVBJIiwiQVBJQ2xhc3MiLCJNYWNyb0NvbnRleHQiLCJQcm9wZXJ0eSIsInR5cGUiLCJkZWZhdWx0VmFsdWUiLCJtU2V0dGluZ3MiLCJvdGhlcnMiLCJjb250ZW50IiwiYXR0YWNoRXZlbnQiLCJvblRhYmxlU2VsZWN0aW9uQ2hhbmdlIiwiZ2V0U2VsZWN0ZWRDb250ZXh0cyIsIm9FdmVudCIsIm9Db250cm9sbGVyIiwib0NvbnRleHQiLCJtUGFyYW1ldGVycyIsImlzQSIsImdldFByb3BlcnR5IiwiX3JvdXRpbmciLCJuYXZpZ2F0ZUZvcndhcmRUb0NvbnRleHQiLCJnZXRQYXJhbWV0ZXIiLCJnZXRDb250cm9sbGVyIiwibWVzc2FnZUhhbmRsZXIiLCJzaG93TWVzc2FnZURpYWxvZyIsInRhYmxlRGVmaW5pdGlvbiIsImNvbnRyb2wiLCJlbmFibGVQYXN0ZSIsImdldE1vZGVsIiwiYVJhd1Bhc3RlZERhdGEiLCJvVGFibGUiLCJnZXRTb3VyY2UiLCJvUmVzb3VyY2VNb2RlbCIsImdldEVuYWJsZVBhc3RlIiwiUGFzdGVIZWxwZXIiLCJwYXN0ZURhdGEiLCJzYXAiLCJ1aSIsImdldENvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJNZXNzYWdlQm94IiwiZXJyb3IiLCJnZXRUZXh0IiwidGl0bGUiLCJpc1NwbGl0TW9kZSIsImdldFBhcmFtZXRlcnMiLCJ1c2VyRXhwb3J0U2V0dGluZ3MiLCJzcGxpdENlbGxzIiwiaXNSTFRMYW5ndWFnZSIsImdldENvbmZpZ3VyYXRpb24iLCJnZXRSVEwiLCJvVGFibGVDb250cm9sbGVyIiwib0V4cG9ydENvbHVtbnMiLCJleHBvcnRTZXR0aW5ncyIsIndvcmtib29rIiwiY29sdW1ucyIsIm9UYWJsZUNvbHVtbnMiLCJ1cGRhdGVFeHBvcnRTZXR0aW5ncyIsIm9EYXRhU3RhdGVJbmRpY2F0b3IiLCJhRmlsdGVyZWRNZXNzYWdlcyIsIm9JbnRlcm5hbE1vZGVsIiwic2V0UHJvcGVydHkiLCJnZXRCaW5kaW5nQ29udGV4dCIsInBhZ2VDb250cm9sbGVyIiwibWFzc0VkaXQiLCJvcGVuTWFzc0VkaXREaWFsb2ciLCJMb2ciLCJ3YXJuaW5nIiwiZmlyZUV2ZW50Iiwib01lc3NhZ2UiLCJzVGFibGVDb250ZXh0QmluZGluZ1BhdGgiLCJnZXRQYXRoIiwic1RhYmxlUm93QmluZGluZyIsImdldFJvd0JpbmRpbmciLCJnZXRUYXJnZXQiLCJvQ29sdW1ucyIsImZvckVhY2giLCJvQ29sdW1uRXhwb3J0IiwiYUV4cG9ydExhYmVscyIsImNvbHVtbiIsIm9Db2x1bW4iLCJpc1VuaXQiLCJzb21lIiwidW5pdCIsInByb3BlcnR5IiwiRmllbGRHcm91cExhYmVsIiwiX2dldEZpZWxkR3JvdXBFeHBvcnRMYWJlbCIsInVuc2hpZnQiLCJkYXRhRmllbGREZXNjcmlwdGlvbkxhYmVsIiwiX2dldERhdGFGaWVsZERlc2NyaXB0aW9uTGFiZWwiLCJpc0RhdGFQb2ludEZha2VUYXJnZXRQcm9wZXJ0eSIsInJlbGF0aXZlUGF0aCIsImV4cG9ydENvbnRhY3RQcm9wZXJ0eSIsInByb3BlcnR5SW5mb3MiLCJsZW5ndGgiLCJ0b1N0cmluZyIsImxhYmVsIiwicHJvcCIsImluY2x1ZGVzIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwicHVzaCIsIkRlbGVnYXRlVXRpbCIsImdldExvY2FsaXplZFRleHQiLCJmaWx0ZXIiLCJpbmRleCIsImluZGV4T2YiLCJyZXZlcnNlIiwiam9pbiIsImNvbHVtbklkIiwiZmllbGRMYWJlbCIsIk1hY3JvQVBJIiwiRXZlbnQiLCJFdmVudEhhbmRsZXIiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEwRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUVNQSxRLFdBRExDLFFBQVEsQ0FBQyx3QkFBRCxD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QywwQkFBQUQsT0FBTyxDQUFDYSxhQUFSLDBFQUF1QkssUUFBdkIsQ0FBZ0NyQixhQUFhLENBQUNPLFFBQTlDLCtCQUNBSixPQUFPLENBQUNhLGFBRFIsbURBQ0EsdUJBQXVCSyxRQUF2QixDQUFnQyxlQUFlckIsYUFBYSxDQUFDTyxRQUE3RCxDQUpELEtBS0EsMEJBQUFKLE9BQU8sQ0FBQ1csWUFBUixnRkFBc0JnQixPQUF0QixDQUE4Qix3Q0FBOUIsT0FBNEUsQ0FBQyxDQU45RSxFQU9FO0FBQ0QsaUJBQU9KLFlBQVksQ0FBQ0MsZ0JBQWIsQ0FBOEJ4QixPQUFPLENBQUNnQixLQUF0QyxFQUF1RDdDLGdCQUF2RCxDQUFQO0FBQ0E7QUFDRDs7OztJQXBYcUI2RCxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnRkF5SHJCQyxLOzs7OztvRkFVQUEsSzs7Ozs7Ozs7Ozs7Ozs7O3VGQWdEQUEsSzs7Ozs7dUVBR0FDLFksc0tBZUFBLFksOEpBTUFBLFksc0pBd0JBQSxZLGdLQWtDQUEsWSx5S0FnSEFBLFksOEtBU0FBLFk7U0FNYWpILFEiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQSUNsYXNzLCBFdmVudEhhbmRsZXIsIE1hY3JvQ29udGV4dCwgUHJvcGVydHksIEV2ZW50LCBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBQYXN0ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9QYXN0ZUhlbHBlclwiO1xuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgQW5ub3RhdGlvblRhYmxlQ29sdW1uLCBUYWJsZUNvbHVtbiwgVGFibGVWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL1RhYmxlXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcIi4vTWFjcm9BUElcIjtcbmltcG9ydCB7IERlbGVnYXRlVXRpbCB9IGZyb20gXCJzYXAvZmUvbWFjcm9zXCI7XG5pbXBvcnQgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5cbi8qKlxuICogRGVmaW5pdGlvbiBvZiBhIGN1c3RvbSBhY3Rpb24gdG8gYmUgdXNlZCBpbnNpZGUgdGhlIHRhYmxlIHRvb2xiYXJcbiAqXG4gKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgQWN0aW9uID0ge1xuXHQvKipcblx0ICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGFjdGlvblxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRrZXk6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSB0ZXh0IHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgZm9yIHRoaXMgYWN0aW9uXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHRleHQ6IHN0cmluZztcblx0LyoqXG5cdCAqIFJlZmVyZW5jZSB0byB0aGUga2V5IG9mIGFub3RoZXIgYWN0aW9uIGFscmVhZHkgZGlzcGxheWVkIGluIHRoZSB0b29sYmFyIHRvIHByb3Blcmx5IHBsYWNlIHRoaXMgb25lXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFuY2hvcj86IHN0cmluZztcblx0LyoqXG5cdCAqIERlZmluZXMgd2hlcmUgdGhpcyBhY3Rpb24gc2hvdWxkIGJlIHBsYWNlZCByZWxhdGl2ZSB0byB0aGUgZGVmaW5lZCBhbmNob3Jcblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBCZWZvcmVgIGFuZCBgQWZ0ZXJgXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHBsYWNlbWVudD86IHN0cmluZztcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdXNlciBjaG9vc2VzIHRoZSBhY3Rpb25cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cHJlc3M6IHN0cmluZztcbn07XG5cbi8qKlxuICogRGVmaW5pdGlvbiBvZiBhIGN1c3RvbSBjb2x1bW4gdG8gYmUgdXNlZCBpbnNpZGUgdGhlIHRhYmxlLlxuICpcbiAqIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGNvbHVtbiBoYXMgdG8gYmUgcHJvdmlkZWQgYXMgdGhlIGRlZmF1bHQgYWdncmVnYXRpb25cbiAqXG4gKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5cbiAqIEBwdWJsaWNcbiAqIEBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IHR5cGUgQ29sdW1uID0ge1xuXHQvKipcblx0ICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGNvbHVtblxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRrZXk6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSB0ZXh0IHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgZm9yIHRoaXMgY29sdW1uIGhlYWRlclxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRoZWFkZXI6IHN0cmluZztcblx0LyoqXG5cdCAqIFJlZmVyZW5jZSB0byB0aGUga2V5IG9mIGFub3RoZXIgY29sdW1uIGFscmVhZHkgZGlzcGxheWVkIGluIHRoZSB0YWJsZSB0byBwcm9wZXJseSBwbGFjZSB0aGlzIG9uZVxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhbmNob3I/OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBEZWZpbmVzIHdoZXJlIHRoaXMgY29sdW1uIHNob3VsZCBiZSBwbGFjZWQgcmVsYXRpdmUgdG8gdGhlIGRlZmluZWQgYW5jaG9yXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgQmVmb3JlYCBhbmQgYEFmdGVyYFxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRwbGFjZW1lbnQ/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gY3JlYXRlIGEgdGFibGUgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogVXN1YWxseSwgYSBMaW5lSXRlbSBvciBQcmVzZW50YXRpb25WYXJpYW50IGFubm90YXRpb24gaXMgZXhwZWN0ZWQsIGJ1dCB0aGUgVGFibGUgYnVpbGRpbmcgYmxvY2sgY2FuIGFsc28gYmUgdXNlZCB0byBkaXNwbGF5IGFuIEVudGl0eVNldC5cbiAqXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm86VGFibGUgaWQ9XCJNeVRhYmxlXCIgbWV0YVBhdGg9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIiAvJmd0O1xuICogPC9wcmU+XG4gKlxuICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuVGFibGVcbiAqIEBwdWJsaWNcbiAqL1xuQEFQSUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5UYWJsZUFQSVwiKVxuY2xhc3MgVGFibGVBUEkgZXh0ZW5kcyBNYWNyb0FQSSB7XG5cdGNvbnN0cnVjdG9yKG1TZXR0aW5ncz86IFByb3BlcnRpZXNPZjxUYWJsZUFQST4sIC4uLm90aGVyczogYW55W10pIHtcblx0XHRzdXBlcihtU2V0dGluZ3MgYXMgYW55LCAuLi5vdGhlcnMpO1xuXG5cdFx0aWYgKHRoaXMuY29udGVudCkge1xuXHRcdFx0dGhpcy5jb250ZW50LmF0dGFjaEV2ZW50KFwic2VsZWN0aW9uQ2hhbmdlXCIsIHt9LCB0aGlzLm9uVGFibGVTZWxlY3Rpb25DaGFuZ2UsIHRoaXMpO1xuXHRcdH1cblx0fVxuXG5cdEBNYWNyb0NvbnRleHQoKVxuXHR0YWJsZURlZmluaXRpb24hOiBUYWJsZVZpc3VhbGl6YXRpb247XG5cblx0LyoqXG5cdCAqIEFuIGV4cHJlc3Npb24gdGhhdCBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlICdyZWFkLW9ubHknIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICpcblx0ICogSWYgeW91IGRvIG5vdCBzZXQgYW55IGV4cHJlc3Npb24sIFNBUCBGaW9yaSBlbGVtZW50cyBob29rcyBpbnRvIHRoZSBzdGFuZGFyZCBsaWZlY3ljbGUgdG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHN0YXRlLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAUHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRyZWFkT25seSE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSB0YWJsZSBjb250cm9sLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAUHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGlkITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBbiBleHByZXNzaW9uIHRoYXQgYWxsb3dzIHlvdSB0byBjb250cm9sIHRoZSAnYnVzeScgc3RhdGUgb2YgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAUHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRidXN5ITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgdHlwZSBvZiB0YWJsZSB0aGF0IHdpbGwgYmUgdXNlZCBieSB0aGUgbWFjcm8gdG8gcmVuZGVyIHRoZSBkYXRhLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYEdyaWRUYWJsZWAgYW5kIGBSZXNwb25zaXZlVGFibGVgXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBQcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogXCJSZXNwb25zaXZlVGFibGVcIiB9KVxuXHR0eXBlITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgZXhwb3J0IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlIGlzIGVuYWJsZWQgb3Igbm90LlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAUHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0pXG5cdGVuYWJsZUV4cG9ydCE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBwYXN0ZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0YWJsZSBpcyBlbmFibGVkIG9yIG5vdC5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QFByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0ZW5hYmxlUGFzdGUhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB3aGV0aGVyIHRoZSB0YWJsZSBjYW4gYmUgb3BlbmVkIGluIGZ1bGxzY3JlZW4gbW9kZSBvciBub3QuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBQcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGVuYWJsZUZ1bGxTY3JlZW4hOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBJZCBvZiB0aGUgRmlsdGVyQmFyIGJ1aWxkaW5nIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBQcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZmlsdGVyQmFyITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBzZWxlY3Rpb24gbW9kZSB0byBiZSB1c2VkIGJ5IHRoZSB0YWJsZS5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBOb25lYCwgYFNpbmdsZWAsIGBNdWx0aWAgb3IgYEF1dG9gXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBQcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0c2VsZWN0aW9uTW9kZSE6IHN0cmluZztcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIHRoZSBoZWFkZXIgdGV4dCB0aGF0IGlzIHNob3duIGluIHRoZSB0YWJsZS5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QFByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRoZWFkZXIhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgaGVhZGVyIHRleHQgdGhhdCBpcyBzaG93biBpbiB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBQcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGVuYWJsZUF1dG9Db2x1bW5XaWR0aCE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBoZWFkZXIgdGV4dCBzaG91bGQgYmUgc2hvd24gb3Igbm90LlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAUHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0pXG5cdGhlYWRlclZpc2libGUhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBjaG9vc2VzIGEgcm93OyB0aGUgZXZlbnQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2ggcm93IHdhcyBjaG9zZW4uXG5cdCAqXG5cdCAqIFlvdSBjYW4gc2V0IHRoaXMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBuYXZpZ2F0aW9uIG1hbnVhbGx5LlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRARXZlbnRcblx0cm93UHJlc3MhOiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIFRhYmxlIFN0YXRlIGNoYW5nZXMuXG5cdCAqXG5cdCAqIFlvdSBjYW4gc2V0IHRoaXMgaW4gb3JkZXIgdG8gc3RvcmUgdGhlIHRhYmxlIHN0YXRlIGluIHRoZSBhcHBzdGF0ZS5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBFdmVudFxuXHRzdGF0ZUNoYW5nZWQhOiBGdW5jdGlvbjtcblxuXHQvKipcblx0ICogQ29udHJvbHMgd2hpY2ggb3B0aW9ucyBzaG91bGQgYmUgZW5hYmxlZCBmb3IgdGhlIHRhYmxlIHBlcnNvbmFsaXphdGlvbiBkaWFsb2cuXG5cdCAqXG5cdCAqIElmIGl0IGlzIHNldCB0byBgdHJ1ZWAsIGFsbCBwb3NzaWJsZSBvcHRpb25zIGZvciB0aGlzIGtpbmQgb2YgdGFibGUgYXJlIGVuYWJsZWQuPGJyLz5cblx0ICogSWYgaXQgaXMgc2V0IHRvIGBmYWxzZWAsIHBlcnNvbmFsaXphdGlvbiBpcyBkaXNhYmxlZC48YnIvPlxuXHQgKjxici8+XG5cdCAqIFlvdSBjYW4gYWxzbyBwcm92aWRlIGEgbW9yZSBncmFudWxhciBjb250cm9sIGZvciB0aGUgcGVyc29uYWxpemF0aW9uIGJ5IHByb3ZpZGluZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGggdGhlIG9wdGlvbnMgeW91IHdhbnQgdG8gYmUgYXZhaWxhYmxlLjxici8+XG5cdCAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTo8YnIvPlxuXHQgKiAgLSBTb3J0PGJyLz5cblx0ICogIC0gQ29sdW1uPGJyLz5cblx0ICogIC0gRmlsdGVyPGJyLz5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QFByb3BlcnR5KHsgdHlwZTogXCJib29sZWFufHN0cmluZ1wiLCBkZWZhdWx0VmFsdWU6IHRydWUgfSlcblx0cGVyc29uYWxpemF0aW9uITogYm9vbGVhbiB8IHN0cmluZztcblxuXHQvKipcblx0ICogQ29udHJvbHMgdGhlIGtpbmQgb2YgdmFyaWFudCBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSB0YWJsZS5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBQYWdlYCwgYENvbnRyb2xgIGFuZCBgTm9uZWAuPGJyLz5cblx0ICogSWYgdGhlIHRhYmxlIGlzIHVzZWQgd2l0aGluIGEgU0FQIEZpb3JpIGVsZW1lbnRzIHRlbXBsYXRlLCB0aGUgZGVmYXVsdCB2YWx1ZSB3aWxsIGJlIHRha2VuIGZyb20gdGhlIGN1cnJlbnQgcGFnZSB2YXJpYW50IG1hbmFnZW1lbnQuPGJyLz5cblx0ICogT3RoZXJ3aXNlIGl0J3MgYE5vbmVgLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAUHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHZhcmlhbnRNYW5hZ2VtZW50ITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBHZXRzIGNvbnRleHRzIGZyb20gdGhlIHRhYmxlIHRoYXQgaGF2ZSBiZWVuIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBDb250ZXh0cyBvZiB0aGUgcm93cyBzZWxlY3RlZCBieSB0aGUgdXNlclxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRTZWxlY3RlZENvbnRleHRzKCk6IENvbnRleHRbXSB7XG5cdFx0cmV0dXJuICgodGhpcy5jb250ZW50IGFzIGFueSkgYXMgVGFibGUpLmdldFNlbGVjdGVkQ29udGV4dHMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGluIHRoZSB0YWJsZSBjaGFuZ2VzLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRARXZlbnRcblx0c2VsZWN0aW9uQ2hhbmdlITogRnVuY3Rpb247XG5cblx0QEV2ZW50SGFuZGxlclxuXHRvblRhYmxlUm93UHJlc3Mob0V2ZW50OiBVSTVFdmVudCwgb0NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBvQ29udGV4dDogQ29udGV4dCwgbVBhcmFtZXRlcnM6IGFueSkge1xuXHRcdC8vIEluIHRoZSBjYXNlIG9mIGFuIGFuYWx5dGljYWwgdGFibGUsIGlmIHdlJ3JlIHRyeWluZyB0byBuYXZpZ2F0ZSB0byBhIGNvbnRleHQgY29ycmVzcG9uZGluZyB0byBhIHZpc3VhbCBncm91cCBvciBncmFuZCB0b3RhbFxuXHRcdC8vIC0tPiBDYW5jZWwgbmF2aWdhdGlvblxuXHRcdGlmIChcblx0XHRcdG9Db250ZXh0ICYmXG5cdFx0XHRvQ29udGV4dC5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuQ29udGV4dFwiKSAmJlxuXHRcdFx0dHlwZW9mIG9Db250ZXh0LmdldFByb3BlcnR5KFwiQCR1aTUubm9kZS5pc0V4cGFuZGVkXCIpID09PSBcImJvb2xlYW5cIlxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQob0NvbnRyb2xsZXIgYXMgYW55KS5fcm91dGluZy5uYXZpZ2F0ZUZvcndhcmRUb0NvbnRleHQob0NvbnRleHQsIG1QYXJhbWV0ZXJzKTtcblx0XHR9XG5cdH1cblxuXHRARXZlbnRIYW5kbGVyXG5cdG9uSW50ZXJuYWxEYXRhUmVjZWl2ZWQob0V2ZW50OiBVSTVFdmVudCkge1xuXHRcdGlmIChvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiZXJyb3JcIikpIHtcblx0XHRcdHRoaXMuZ2V0Q29udHJvbGxlcigpLm1lc3NhZ2VIYW5kbGVyLnNob3dNZXNzYWdlRGlhbG9nKCk7XG5cdFx0fVxuXHR9XG5cdEBFdmVudEhhbmRsZXJcblx0b25QYXN0ZShvRXZlbnQ6IFVJNUV2ZW50LCBvQ29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpIHtcblx0XHQvLyBJZiBwYXN0ZSBpcyBkaXNhYmxlIG9yIGlmIHdlJ3JlIG5vdCBpbiBlZGl0IG1vZGUsIHdlIGNhbid0IHBhc3RlIGFueXRoaW5nXG5cdFx0aWYgKCF0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmVuYWJsZVBhc3RlIHx8ICF0aGlzLmdldE1vZGVsKFwidWlcIikuZ2V0UHJvcGVydHkoXCIvaXNFZGl0YWJsZVwiKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFSYXdQYXN0ZWREYXRhID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImRhdGFcIiksXG5cdFx0XHRvVGFibGUgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0bGV0IG9SZXNvdXJjZU1vZGVsO1xuXG5cdFx0aWYgKG9UYWJsZS5nZXRFbmFibGVQYXN0ZSgpID09PSB0cnVlKSB7XG5cdFx0XHRQYXN0ZUhlbHBlci5wYXN0ZURhdGEoYVJhd1Bhc3RlZERhdGEsIG9UYWJsZSwgb0NvbnRyb2xsZXIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvUmVzb3VyY2VNb2RlbCA9IHNhcC51aS5nZXRDb3JlKCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIikgYXMgUmVzb3VyY2VCdW5kbGU7XG5cdFx0XHRNZXNzYWdlQm94LmVycm9yKG9SZXNvdXJjZU1vZGVsLmdldFRleHQoXCJUX09QX0NPTlRST0xMRVJfU0FQRkVfUEFTVEVfRElTQUJMRURfTUVTU0FHRVwiKSwge1xuXHRcdFx0XHR0aXRsZTogb1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0VSUk9SXCIpXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvLyBUaGlzIGV2ZW50IHdpbGwgYWxsb3cgdXMgdG8gaW50ZXJjZXB0IHRoZSBleHBvcnQgYmVmb3JlIGlzIHRyaWdnZXJlZCB0byBjb3ZlciBzcGVjaWZpYyBjYXNlc1xuXHQvLyB0aGF0IGNvdWxkbid0IGJlIGFkZHJlc3NlZCBvbiB0aGUgcHJvcGVydHlJbmZvcyBmb3IgZWFjaCBjb2x1bW4uXG5cdC8vIGUuZy4gRml4ZWQgVGFyZ2V0IFZhbHVlIGZvciB0aGUgZGF0YXBvaW50c1xuXHRARXZlbnRIYW5kbGVyXG5cdG9uQmVmb3JlRXhwb3J0KG9FdmVudDogVUk1RXZlbnQpIHtcblx0XHRjb25zdCBpc1NwbGl0TW9kZSA9IG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkudXNlckV4cG9ydFNldHRpbmdzLnNwbGl0Q2VsbHMsXG5cdFx0XHRpc1JMVExhbmd1YWdlID0gc2FwLnVpXG5cdFx0XHRcdC5nZXRDb3JlKClcblx0XHRcdFx0LmdldENvbmZpZ3VyYXRpb24oKVxuXHRcdFx0XHQuZ2V0UlRMKCksXG5cdFx0XHRvVGFibGVDb250cm9sbGVyID0gb0V2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0b0V4cG9ydENvbHVtbnMgPSBvRXZlbnQuZ2V0UGFyYW1ldGVycygpLmV4cG9ydFNldHRpbmdzLndvcmtib29rPy5jb2x1bW5zLFxuXHRcdFx0b1RhYmxlQ29sdW1ucyA9IHRoaXMudGFibGVEZWZpbml0aW9uLmNvbHVtbnM7XG5cblx0XHRUYWJsZUFQSS51cGRhdGVFeHBvcnRTZXR0aW5ncyhvRXhwb3J0Q29sdW1ucywgb1RhYmxlQ29sdW1ucywgb1RhYmxlQ29udHJvbGxlciwgaXNTcGxpdE1vZGUsIGlzUkxUTGFuZ3VhZ2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIE1EQyBEYXRhU3RhdGVJbmRpY2F0b3IgcGx1Z2luIHRvIGRpc3BsYXkgbWVzc2FnZVN0cmlwIG9uIGEgdGFibGUuXG5cdCAqIEBwYXJhbSBvTWVzc2FnZVxuXHQgKiBAcGFyYW0gb1RhYmxlXG5cdCAqIEBuYW1lIGRhdGFTdGF0ZUZpbHRlclxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0byByZW5kZXIgdmlzaWJsZSB0aGUgbWVzc2FnZVN0cmlwXG5cdCAqL1xuXHRzdGF0aWMgZGF0YVN0YXRlSW5kaWNhdG9yRmlsdGVyKG9NZXNzYWdlOiBhbnksIG9UYWJsZTogYW55KTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgc1RhYmxlQ29udGV4dEJpbmRpbmdQYXRoID0gb1RhYmxlLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKTtcblx0XHRjb25zdCBzVGFibGVSb3dCaW5kaW5nID0gKHNUYWJsZUNvbnRleHRCaW5kaW5nUGF0aCA/IHNUYWJsZUNvbnRleHRCaW5kaW5nUGF0aCArIFwiL1wiIDogXCJcIikgKyBvVGFibGUuZ2V0Um93QmluZGluZygpLmdldFBhdGgoKTtcblx0XHRyZXR1cm4gc1RhYmxlUm93QmluZGluZyA9PT0gb01lc3NhZ2UuZ2V0VGFyZ2V0KCkgPyB0cnVlIDogZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBldmVudCBoYW5kbGVzIHRoZSBEYXRhU3RhdGUgb2YgdGhlIERhdGFTdGF0ZUluZGljYXRvciBwbHVnaW4gZnJvbSBNREMgb24gYSB0YWJsZS5cblx0ICogSXQncyBmaXJlZCB3aGVuIG5ldyBlcnJvciBtZXNzYWdlcyBhcmUgc2VudCBmcm9tIHRoZSBiYWNrZW5kIHRvIHVwZGF0ZSByb3cgaGlnaGxpZ2h0aW5nLlxuXHQgKlxuXHQgKiBAbmFtZSBvbkRhdGFTdGF0ZUNoYW5nZVxuXHQgKiBAcGFyYW0ge29iamVjdH0gb0V2ZW50IEV2ZW50IG9iamVjdFxuXHQgKi9cblx0QEV2ZW50SGFuZGxlclxuXHRvbkRhdGFTdGF0ZUNoYW5nZShvRXZlbnQ6IFVJNUV2ZW50KSB7XG5cdFx0Y29uc3Qgb0RhdGFTdGF0ZUluZGljYXRvciA9IG9FdmVudC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBhRmlsdGVyZWRNZXNzYWdlcyA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJmaWx0ZXJlZE1lc3NhZ2VzXCIpO1xuXHRcdGlmIChhRmlsdGVyZWRNZXNzYWdlcykge1xuXHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWwgPSBvRGF0YVN0YXRlSW5kaWNhdG9yLmdldE1vZGVsKFwiaW50ZXJuYWxcIik7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShcImZpbHRlcmVkTWVzc2FnZXNcIiwgYUZpbHRlcmVkTWVzc2FnZXMsIG9EYXRhU3RhdGVJbmRpY2F0b3IuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSk7XG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIHVwZGF0ZUV4cG9ydFNldHRpbmdzKFxuXHRcdG9FeHBvcnRDb2x1bW5zOiBhbnksXG5cdFx0b0NvbHVtbnM6IFRhYmxlQ29sdW1uW10sXG5cdFx0b1RhYmxlQ29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsXG5cdFx0aXNTcGxpdE1vZGU6IGJvb2xlYW4sXG5cdFx0aXNSTFRMYW5ndWFnZTogYm9vbGVhblxuXHQpOiBhbnkge1xuXHRcdG9FeHBvcnRDb2x1bW5zLmZvckVhY2goKG9Db2x1bW5FeHBvcnQ6IGFueSkgPT4ge1xuXHRcdFx0bGV0IGFFeHBvcnRMYWJlbHM6IHN0cmluZ1tdID0gW107XG5cdFx0XHRvQ29sdW1ucz8uZm9yRWFjaChjb2x1bW4gPT4ge1xuXHRcdFx0XHRjb25zdCBvQ29sdW1uID0gY29sdW1uIGFzIEFubm90YXRpb25UYWJsZUNvbHVtbjtcblx0XHRcdFx0aWYgKGlzU3BsaXRNb2RlKSB7XG5cdFx0XHRcdFx0Ly8gYUV4cG9ydExhYmVscyB3aWxsIGNvbnRhaW4gbGFiZWxzIGZyb20gYSBGaWVsZEdyb3VwLCBhIHRleHQgYW5ub3RhdGlvbiBhbmQgYSBEYXRhUG9pbnRcblx0XHRcdFx0XHQvLyBUaGVzZSBsYWJlbHMgd2lsbCBiZSB1c2VkIGZvciBjaGlsZCBwcm9wZXJ0aWVzIChzaW1wbGUgcHJvcGVydGllcykgZnJvbSBjb21wbGV4UHJvcGVydHlcblx0XHRcdFx0XHQvLyBVbml0L2N1cnJlbmN5IHByb3BlcnRpZXMgd2lsbCBiZSBkaXNtaXNzIGFzIGl0IGNvdWxkIGJlIHVzZWQgaW4gc2V2ZXJhbCBkYXRhZmllbGRzLlxuXHRcdFx0XHRcdGNvbnN0IGlzVW5pdCA9IG9Db2x1bW5zLnNvbWUoY29sdW1uID0+IChjb2x1bW4gYXMgQW5ub3RhdGlvblRhYmxlQ29sdW1uKS51bml0ID09PSBvQ29sdW1uRXhwb3J0LnByb3BlcnR5KTtcblx0XHRcdFx0XHQvLyBDcmVhdGUgRXhwb3J0aW5nIGxhYmVscyBhcnJheVxuXHRcdFx0XHRcdGNvbnN0IEZpZWxkR3JvdXBMYWJlbCA9IFRhYmxlQVBJLl9nZXRGaWVsZEdyb3VwRXhwb3J0TGFiZWwob0NvbHVtbkV4cG9ydCwgb0NvbHVtbiwgb1RhYmxlQ29udHJvbGxlcik7XG5cdFx0XHRcdFx0aWYgKEZpZWxkR3JvdXBMYWJlbCkge1xuXHRcdFx0XHRcdFx0YUV4cG9ydExhYmVscy51bnNoaWZ0KEZpZWxkR3JvdXBMYWJlbCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIEZvciBhIHRleHQgYW5ub3RhdGlvbiwgZXhwb3J0IGxhYmVsIHRlbXBsYXRlIHVzZWQgaXMgPHZhbHVlPiAtIDxkZXNjcmlwdGlvbj4gYW5kIGZvciBhIERhdGFQb2ludCA8ZGF0YXBvaW50VmFsdWU+IC0gPFRhcmdldFZhbHVlPi5cblx0XHRcdFx0XHQvLyBJbiBib3RoIGNhc2VzIGludGVybmF0aW9uYWxpemF0aW9uIGlzIG5lZWRlZFxuXHRcdFx0XHRcdGNvbnN0IGRhdGFGaWVsZERlc2NyaXB0aW9uTGFiZWwgPSBUYWJsZUFQSS5fZ2V0RGF0YUZpZWxkRGVzY3JpcHRpb25MYWJlbChcblx0XHRcdFx0XHRcdG9Db2x1bW5FeHBvcnQsXG5cdFx0XHRcdFx0XHRvQ29sdW1uLFxuXHRcdFx0XHRcdFx0b1RhYmxlQ29udHJvbGxlcixcblx0XHRcdFx0XHRcdGlzVW5pdFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKGRhdGFGaWVsZERlc2NyaXB0aW9uTGFiZWwpIHtcblx0XHRcdFx0XHRcdGFFeHBvcnRMYWJlbHMudW5zaGlmdChkYXRhRmllbGREZXNjcmlwdGlvbkxhYmVsKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvL0FkZCBUYXJnZXRWYWx1ZSBvbiBkdW1teSBjcmVhdGVkIHByb3BlcnR5IHdoZW4gIGV4cG9ydGluZyBvbiBzcGxpdCBtb2RlXG5cdFx0XHRcdFx0aWYgKG9Db2x1bW4uaXNEYXRhUG9pbnRGYWtlVGFyZ2V0UHJvcGVydHkgJiYgb0NvbHVtbi5yZWxhdGl2ZVBhdGggPT09IG9Db2x1bW5FeHBvcnQucHJvcGVydHkpIHtcblx0XHRcdFx0XHRcdG9Db2x1bW5FeHBvcnQucHJvcGVydHkgPSBbb0NvbHVtbkV4cG9ydC5wcm9wZXJ0eV07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdC8vTW9kaWZ5IGV4cG9ydGVkIHZhbHVlIHdoZW4gdXNpbmcgQ29tbXVuaWNhdGlvbi5Db250YWN0IGRhdGFGaWVsZEZvckFubm90YXRpb25cblx0XHRcdFx0Ly9jb250YWN0PmZuIHByb3BlcnR5IHNob3VsZCBiZSBleHBvcnRlZFxuXHRcdFx0XHRpZiAob0NvbHVtbi5leHBvcnRDb250YWN0UHJvcGVydHkgJiYgY29sdW1uLnByb3BlcnR5SW5mb3MpIHtcblx0XHRcdFx0XHRpZiAoY29sdW1uLnByb3BlcnR5SW5mb3M/Lmxlbmd0aCA9PT0gMSAmJiBjb2x1bW4ucHJvcGVydHlJbmZvcz8udG9TdHJpbmcoKSA9PT0gb0NvbHVtbkV4cG9ydC5wcm9wZXJ0eS50b1N0cmluZygpKSB7XG5cdFx0XHRcdFx0XHRvQ29sdW1uRXhwb3J0LnByb3BlcnR5ID0gb0NvbHVtbi5leHBvcnRDb250YWN0UHJvcGVydHk7XG5cdFx0XHRcdFx0XHRvQ29sdW1uRXhwb3J0LmxhYmVsID0gb0NvbHVtbi5sYWJlbDtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRcdFx0Y29sdW1uLnByb3BlcnR5SW5mb3M/Lmxlbmd0aCA+IDEgJiZcblx0XHRcdFx0XHRcdG9Db2x1bW4ucHJvcGVydHlJbmZvcz8uc29tZShwcm9wID0+IG9Db2x1bW5FeHBvcnQucHJvcGVydHkuaW5jbHVkZXMocHJvcCkpICYmXG5cdFx0XHRcdFx0XHRBcnJheS5pc0FycmF5KG9Db2x1bW5FeHBvcnQucHJvcGVydHkpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRvQ29sdW1uRXhwb3J0LnByb3BlcnR5ID0gb0NvbHVtbkV4cG9ydC5wcm9wZXJ0eT8ubWFwKChwcm9wZXJ0eTogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvQ29sdW1uLnByb3BlcnR5SW5mb3M/LnNvbWUocHJvcCA9PiBwcm9wID09PSBwcm9wZXJ0eSkgPyBvQ29sdW1uLmV4cG9ydENvbnRhY3RQcm9wZXJ0eSA6IHByb3BlcnR5O1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdGFFeHBvcnRMYWJlbHMucHVzaChEZWxlZ2F0ZVV0aWwuZ2V0TG9jYWxpemVkVGV4dChvQ29sdW1uRXhwb3J0LmxhYmVsLCBvVGFibGVDb250cm9sbGVyKSk7XG5cdFx0XHRpZiAoYUV4cG9ydExhYmVscy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdC8vIFJlbW92ZSBkdXBsaWNhdGUgbGFiZWxzIChlLmcuIEZpZWxkR3JvdXAgbGFiZWwgaXMgdGhlIHNhbWUgYXMgdGhlIGxhYmVsIG9mIG9uZSBvZiB0aGUgcHJvcGVydGllcylcblx0XHRcdFx0YUV4cG9ydExhYmVscyA9IGFFeHBvcnRMYWJlbHMuZmlsdGVyKGZ1bmN0aW9uKGxhYmVsLCBpbmRleCkge1xuXHRcdFx0XHRcdGlmIChhRXhwb3J0TGFiZWxzLmluZGV4T2YobGFiZWwpID09IGluZGV4KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbGFiZWw7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdC8vIENoZWNrIGlmIGEgUlRMIGxhbmd1YWdlIGlmIHVzZWQgYW5kIGlmIHNvIHdlIG5lZWQgdG8gcmV2ZXJzZSBsYWJlbHNcblx0XHRcdGlmIChpc1JMVExhbmd1YWdlKSB7XG5cdFx0XHRcdGFFeHBvcnRMYWJlbHMucmV2ZXJzZSgpO1xuXHRcdFx0fVxuXHRcdFx0b0NvbHVtbkV4cG9ydC5sYWJlbCA9IGFFeHBvcnRMYWJlbHMuam9pbihcIiAtIFwiKTtcblx0XHR9KTtcblx0XHRyZXR1cm4gb0V4cG9ydENvbHVtbnM7XG5cdH1cblxuXHRzdGF0aWMgX2dldEZpZWxkR3JvdXBFeHBvcnRMYWJlbChvQ29sdW1uRXhwb3J0OiBhbnksIG9Db2x1bW46IEFubm90YXRpb25UYWJsZUNvbHVtbiwgb1RhYmxlQ29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpIHtcblx0XHRpZiAoXG5cdFx0XHQob0NvbHVtbkV4cG9ydC5jb2x1bW5JZC5pbmRleE9mKFwiOjpGaWVsZEdyb3VwOjpcIikgIT09IC0xIHx8XG5cdFx0XHRcdChvQ29sdW1uLmV4cG9ydFNldHRpbmdzPy5maWVsZExhYmVsICYmIG9Db2x1bW5FeHBvcnQuY29sdW1uSWQuaW5kZXhPZihcIl9fY29sdW1uXCIpICE9PSAtMSkpICYmXG5cdFx0XHQob0NvbHVtbi5wcm9wZXJ0eUluZm9zPy5pbmNsdWRlcyhvQ29sdW1uRXhwb3J0LnByb3BlcnR5KSB8fFxuXHRcdFx0XHRvQ29sdW1uLnByb3BlcnR5SW5mb3M/LmluY2x1ZGVzKFwiUHJvcGVydHk6OlwiICsgb0NvbHVtbkV4cG9ydC5wcm9wZXJ0eSkpXG5cdFx0KSB7XG5cdFx0XHRjb25zdCBsYWJlbCA9IG9Db2x1bW4uZXhwb3J0U2V0dGluZ3M/LmZpZWxkTGFiZWwgfHwgb0NvbHVtbi5sYWJlbDtcblx0XHRcdHJldHVybiBEZWxlZ2F0ZVV0aWwuZ2V0TG9jYWxpemVkVGV4dChsYWJlbCBhcyBzdHJpbmcsIG9UYWJsZUNvbnRyb2xsZXIpO1xuXHRcdH1cblx0fVxuXG5cdHN0YXRpYyBfZ2V0RGF0YUZpZWxkRGVzY3JpcHRpb25MYWJlbChcblx0XHRvQ29sdW1uRXhwb3J0OiBhbnksXG5cdFx0b0NvbHVtbjogQW5ub3RhdGlvblRhYmxlQ29sdW1uLFxuXHRcdG9UYWJsZUNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLFxuXHRcdGlzVW5pdDogYm9vbGVhblxuXHQpIHtcblx0XHRpZiAoXG5cdFx0XHRvQ29sdW1uLnByb3BlcnR5SW5mb3MgJiZcblx0XHRcdG9Db2x1bW4ucHJvcGVydHlJbmZvcz8ubGVuZ3RoID4gMSAmJlxuXHRcdFx0IWlzVW5pdCAmJlxuXHRcdFx0KG9Db2x1bW4ucHJvcGVydHlJbmZvcz8uaW5jbHVkZXMob0NvbHVtbkV4cG9ydC5wcm9wZXJ0eSkgfHxcblx0XHRcdFx0b0NvbHVtbi5wcm9wZXJ0eUluZm9zPy5pbmNsdWRlcyhcIlByb3BlcnR5OjpcIiArIG9Db2x1bW5FeHBvcnQucHJvcGVydHkpKSAmJlxuXHRcdFx0b0NvbHVtbi5yZWxhdGl2ZVBhdGg/LmluZGV4T2YoXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmllbGRHcm91cFwiKSA9PT0gLTFcblx0XHQpIHtcblx0XHRcdHJldHVybiBEZWxlZ2F0ZVV0aWwuZ2V0TG9jYWxpemVkVGV4dChvQ29sdW1uLmxhYmVsIGFzIHN0cmluZywgb1RhYmxlQ29udHJvbGxlcik7XG5cdFx0fVxuXHR9XG5cdEBFdmVudEhhbmRsZXJcblx0b25NYXNzRWRpdEJ1dHRvblByZXNzZWQob0V2ZW50OiBVSTVFdmVudCwgcGFnZUNvbnRyb2xsZXI6IGFueSkge1xuXHRcdGNvbnN0IG9UYWJsZSA9IHRoaXMuY29udGVudDtcblx0XHRpZiAocGFnZUNvbnRyb2xsZXIgJiYgcGFnZUNvbnRyb2xsZXIubWFzc0VkaXQpIHtcblx0XHRcdHBhZ2VDb250cm9sbGVyLm1hc3NFZGl0Lm9wZW5NYXNzRWRpdERpYWxvZyhvVGFibGUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRMb2cud2FybmluZyhcIlRoZSBDb250cm9sbGVyIGlzIG5vdCBlbmhhbmNlZCB3aXRoIE1hc3MgRWRpdCBmdW5jdGlvbmFsaXR5XCIpO1xuXHRcdH1cblx0fVxuXHRARXZlbnRIYW5kbGVyXG5cdG9uVGFibGVTZWxlY3Rpb25DaGFuZ2Uob0V2ZW50OiBVSTVFdmVudCkge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwic2VsZWN0aW9uQ2hhbmdlXCIsIG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRhYmxlQVBJO1xuIl19
507
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRhYmxlQVBJLnRzIl0sIm5hbWVzIjpbIlRhYmxlQVBJIiwiQVBJQ2xhc3MiLCJNYWNyb0NvbnRleHQiLCJQcm9wZXJ0eSIsInR5cGUiLCJkZWZhdWx0VmFsdWUiLCJtU2V0dGluZ3MiLCJvdGhlcnMiLCJjb250ZW50IiwiYXR0YWNoRXZlbnQiLCJvblRhYmxlU2VsZWN0aW9uQ2hhbmdlIiwiZ2V0U2VsZWN0ZWRDb250ZXh0cyIsImFkZE1lc3NhZ2UiLCJwYXJhbWV0ZXJzIiwibXNnTWFuYWdlciIsIl9nZXRNZXNzYWdlTWFuYWdlciIsIm9UYWJsZSIsIm9NZXNzYWdlIiwiTWVzc2FnZSIsInRhcmdldCIsImdldFJvd0JpbmRpbmciLCJnZXRSZXNvbHZlZFBhdGgiLCJtZXNzYWdlIiwicHJvY2Vzc29yIiwiZ2V0TW9kZWwiLCJkZXNjcmlwdGlvbiIsInBlcnNpc3RlbnQiLCJhZGRNZXNzYWdlcyIsImdldElkIiwicmVtb3ZlTWVzc2FnZSIsImlkIiwibWVzc2FnZXMiLCJnZXRNZXNzYWdlTW9kZWwiLCJnZXREYXRhIiwicmVzdWx0IiwiZmluZCIsImUiLCJyZW1vdmVNZXNzYWdlcyIsInNhcCIsInVpIiwiZ2V0Q29yZSIsImdldE1lc3NhZ2VNYW5hZ2VyIiwib25UYWJsZVJvd1ByZXNzIiwib0V2ZW50Iiwib0NvbnRyb2xsZXIiLCJvQ29udGV4dCIsIm1QYXJhbWV0ZXJzIiwiaXNBIiwiZ2V0UHJvcGVydHkiLCJfcm91dGluZyIsIm5hdmlnYXRlRm9yd2FyZFRvQ29udGV4dCIsIm9uSW50ZXJuYWxEYXRhUmVjZWl2ZWQiLCJnZXRQYXJhbWV0ZXIiLCJnZXRDb250cm9sbGVyIiwibWVzc2FnZUhhbmRsZXIiLCJzaG93TWVzc2FnZURpYWxvZyIsIm9uUGFzdGUiLCJ0YWJsZURlZmluaXRpb24iLCJjb250cm9sIiwiZW5hYmxlUGFzdGUiLCJhUmF3UGFzdGVkRGF0YSIsImdldFNvdXJjZSIsIm9SZXNvdXJjZU1vZGVsIiwiZ2V0RW5hYmxlUGFzdGUiLCJQYXN0ZUhlbHBlciIsInBhc3RlRGF0YSIsImdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZSIsIk1lc3NhZ2VCb3giLCJlcnJvciIsImdldFRleHQiLCJ0aXRsZSIsIm9uQmVmb3JlRXhwb3J0IiwiaXNTcGxpdE1vZGUiLCJnZXRQYXJhbWV0ZXJzIiwidXNlckV4cG9ydFNldHRpbmdzIiwic3BsaXRDZWxscyIsImlzUkxUTGFuZ3VhZ2UiLCJnZXRDb25maWd1cmF0aW9uIiwiZ2V0UlRMIiwib1RhYmxlQ29udHJvbGxlciIsIm9FeHBvcnRDb2x1bW5zIiwiZXhwb3J0U2V0dGluZ3MiLCJ3b3JrYm9vayIsImNvbHVtbnMiLCJvVGFibGVDb2x1bW5zIiwidXBkYXRlRXhwb3J0U2V0dGluZ3MiLCJkYXRhU3RhdGVJbmRpY2F0b3JGaWx0ZXIiLCJzVGFibGVDb250ZXh0QmluZGluZ1BhdGgiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldFBhdGgiLCJzVGFibGVSb3dCaW5kaW5nIiwiZ2V0VGFyZ2V0Iiwib25EYXRhU3RhdGVDaGFuZ2UiLCJvRGF0YVN0YXRlSW5kaWNhdG9yIiwiYUZpbHRlcmVkTWVzc2FnZXMiLCJvSW50ZXJuYWxNb2RlbCIsInNldFByb3BlcnR5Iiwib0NvbHVtbnMiLCJmb3JFYWNoIiwib0NvbHVtbkV4cG9ydCIsImFFeHBvcnRMYWJlbHMiLCJpc1VuaXQiLCJzb21lIiwiY29sdW1uIiwic1VuaXQiLCJ1bml0IiwicHJvcGVydHkiLCJvQ29sdW1uIiwiRmllbGRHcm91cExhYmVsIiwiX2dldEZpZWxkR3JvdXBFeHBvcnRMYWJlbCIsInVuc2hpZnQiLCJkYXRhRmllbGREZXNjcmlwdGlvbkxhYmVsIiwiX2dldERhdGFGaWVsZERlc2NyaXB0aW9uTGFiZWwiLCJpc0RhdGFQb2ludEZha2VUYXJnZXRQcm9wZXJ0eSIsInJlbGF0aXZlUGF0aCIsImV4cG9ydENvbnRhY3RQcm9wZXJ0eSIsInByb3BlcnR5SW5mb3MiLCJsZW5ndGgiLCJ0b1N0cmluZyIsImxhYmVsIiwicHJvcCIsImluY2x1ZGVzIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwicHVzaCIsIkRlbGVnYXRlVXRpbCIsImdldExvY2FsaXplZFRleHQiLCJmaWx0ZXIiLCJpbmRleCIsImluZGV4T2YiLCJyZXZlcnNlIiwiam9pbiIsImNvbHVtbklkIiwiZmllbGRMYWJlbCIsIm9uTWFzc0VkaXRCdXR0b25QcmVzc2VkIiwicGFnZUNvbnRyb2xsZXIiLCJtYXNzRWRpdCIsIm9wZW5NYXNzRWRpdERpYWxvZyIsIkxvZyIsIndhcm5pbmciLCJmaXJlRXZlbnQiLCJNYWNyb0FQSSIsIkV2ZW50IiwiRXZlbnRIYW5kbGVyIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUVNQSxRLFdBRExDLFFBQVEsQ0FBQyx3QkFBRCxDLFVBVVBDLFlBQVksRSxVQVVaQyxRQUFRLENBQUM7QUFBRUMsSUFBQUEsSUFBSSxFQUFFO0FBQVIsR0FBRCxDLFVBUVJELFFBQVEsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUU7QUFBUixHQUFELEMsVUFRUkQsUUFBUSxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRSxTQUFSO0FBQW1CQyxJQUFBQSxZQUFZLEVBQUU7QUFBakMsR0FBRCxDLFVBVVJGLFFBQVEsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUUsUUFBUjtBQUFrQkMsSUFBQUEsWUFBWSxFQUFFO0FBQWhDLEdBQUQsQyxVQVFSRixRQUFRLENBQUM7QUFBRUMsSUFBQUEsSUFBSSxFQUFFLFNBQVI7QUFBbUJDLElBQUFBLFlBQVksRUFBRTtBQUFqQyxHQUFELEMsVUFRUkYsUUFBUSxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRSxTQUFSO0FBQW1CQyxJQUFBQSxZQUFZLEVBQUU7QUFBakMsR0FBRCxDLFVBUVJGLFFBQVEsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUUsU0FBUjtBQUFtQkMs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QUFDTjJILFFBQUFBLEdBQUcsQ0FBQ0MsT0FBSixDQUFZLDZEQUFaO0FBQ0E7QUFDRCxLOztXQUVEbEksc0IsR0FEQSxnQ0FDdUJpQyxNQUR2QixFQUN5QztBQUN4QyxXQUFLa0csU0FBTCxDQUFlLGlCQUFmLEVBQWtDbEcsTUFBTSxDQUFDOEIsYUFBUCxFQUFsQztBQUNBLEs7OztJQXJjcUJxRSxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnRkF5SHJCQyxLOzs7OztvRkFVQUEsSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dUZBNEdBQSxLOzs7Ozt1RUFHQUMsWSxzS0FlQUEsWSw4SkFNQUEsWSxzSkF3QkFBLFksZ0tBa0NBQSxZLHlLQXdIQUEsWSw4S0FTQUEsWTtTQU1haEosUSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBJQ2xhc3MsIEV2ZW50SGFuZGxlciwgTWFjcm9Db250ZXh0LCBQcm9wZXJ0eSwgRXZlbnQsIFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IFBhc3RlSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Bhc3RlSGVscGVyXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBBbm5vdGF0aW9uVGFibGVDb2x1bW4sIFRhYmxlQ29sdW1uLCBUYWJsZVZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCBNYWNyb0FQSSBmcm9tIFwiLi9NYWNyb0FQSVwiO1xuaW1wb3J0IHsgRGVsZWdhdGVVdGlsIH0gZnJvbSBcInNhcC9mZS9tYWNyb3NcIjtcbmltcG9ydCBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCBNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VcIjtcbmltcG9ydCB7IE1lc3NhZ2VUeXBlIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCBEYXRhU3RhdGVJbmRpY2F0b3IgZnJvbSBcInNhcC9tL3BsdWdpbnMvRGF0YVN0YXRlSW5kaWNhdG9yXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcblxuLyoqXG4gKiBEZWZpbml0aW9uIG9mIGEgY3VzdG9tIGFjdGlvbiB0byBiZSB1c2VkIGluc2lkZSB0aGUgdGFibGUgdG9vbGJhclxuICpcbiAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBBY3Rpb24gPSB7XG5cdC8qKlxuXHQgKiBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgYWN0aW9uXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGtleTogc3RyaW5nO1xuXHQvKipcblx0ICogVGhlIHRleHQgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBmb3IgdGhpcyBhY3Rpb25cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0dGV4dDogc3RyaW5nO1xuXHQvKipcblx0ICogUmVmZXJlbmNlIHRvIHRoZSBrZXkgb2YgYW5vdGhlciBhY3Rpb24gYWxyZWFkeSBkaXNwbGF5ZWQgaW4gdGhlIHRvb2xiYXIgdG8gcHJvcGVybHkgcGxhY2UgdGhpcyBvbmVcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YW5jaG9yPzogc3RyaW5nO1xuXHQvKipcblx0ICogRGVmaW5lcyB3aGVyZSB0aGlzIGFjdGlvbiBzaG91bGQgYmUgcGxhY2VkIHJlbGF0aXZlIHRvIHRoZSBkZWZpbmVkIGFuY2hvclxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYEJlZm9yZWAgYW5kIGBBZnRlcmBcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cGxhY2VtZW50Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNob29zZXMgdGhlIGFjdGlvblxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRwcmVzczogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIGlmIHRoZSBhY3Rpb24gcmVxdWlyZXMgYSBzZWxlY3Rpb24uXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHJlcXVpcmVzU2VsZWN0aW9uPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkdyb3VwID0ge1xuXHQvKipcblx0ICogRGVmaW5lcyBuZXN0ZWQgYWN0aW9uc1xuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhY3Rpb25zOiBBY3Rpb25bXTtcblxuXHQvKipcblx0ICogVGhlIHRleHQgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBmb3IgdGhpcyBhY3Rpb24gZ3JvdXBcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0dGV4dDogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHdoZXJlIHRoaXMgYWN0aW9uIGdyb3VwIHNob3VsZCBiZSBwbGFjZWQgcmVsYXRpdmUgdG8gdGhlIGRlZmluZWQgYW5jaG9yXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgQmVmb3JlYCBhbmQgYEFmdGVyYFxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRwbGFjZW1lbnQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFJlZmVyZW5jZSB0byB0aGUga2V5IG9mIGFub3RoZXIgYWN0aW9uIG9yIGFjdGlvbiBncm91cCBhbHJlYWR5IGRpc3BsYXllZCBpbiB0aGUgdG9vbGJhciB0byBwcm9wZXJseSBwbGFjZSB0aGlzIG9uZVxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhbmNob3I/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIERlZmluaXRpb24gb2YgYSBjdXN0b20gY29sdW1uIHRvIGJlIHVzZWQgaW5zaWRlIHRoZSB0YWJsZS5cbiAqXG4gKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBjb2x1bW4gaGFzIHRvIGJlIHByb3ZpZGVkIGFzIHRoZSBkZWZhdWx0IGFnZ3JlZ2F0aW9uXG4gKlxuICogQGFsaWFzIHNhcC5mZS5tYWNyb3MudGFibGUuQ29sdW1uXG4gKiBAcHVibGljXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCB0eXBlIENvbHVtbiA9IHtcblx0LyoqXG5cdCAqIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBjb2x1bW5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0a2V5OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgdGV4dCB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGZvciB0aGlzIGNvbHVtbiBoZWFkZXJcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0aGVhZGVyOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBSZWZlcmVuY2UgdG8gdGhlIGtleSBvZiBhbm90aGVyIGNvbHVtbiBhbHJlYWR5IGRpc3BsYXllZCBpbiB0aGUgdGFibGUgdG8gcHJvcGVybHkgcGxhY2UgdGhpcyBvbmVcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YW5jaG9yPzogc3RyaW5nO1xuXHQvKipcblx0ICogRGVmaW5lcyB3aGVyZSB0aGlzIGNvbHVtbiBzaG91bGQgYmUgcGxhY2VkIHJlbGF0aXZlIHRvIHRoZSBkZWZpbmVkIGFuY2hvclxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYEJlZm9yZWAgYW5kIGBBZnRlcmBcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cGxhY2VtZW50Pzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBCdWlsZGluZyBibG9jayB1c2VkIHRvIGNyZWF0ZSBhIHRhYmxlIGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqIDxicj5cbiAqIFVzdWFsbHksIGEgTGluZUl0ZW0gb3IgUHJlc2VudGF0aW9uVmFyaWFudCBhbm5vdGF0aW9uIGlzIGV4cGVjdGVkLCBidXQgdGhlIFRhYmxlIGJ1aWxkaW5nIGJsb2NrIGNhbiBhbHNvIGJlIHVzZWQgdG8gZGlzcGxheSBhbiBFbnRpdHlTZXQuXG4gKlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvOlRhYmxlIGlkPVwiTXlUYWJsZVwiIG1ldGFQYXRoPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIgLyZndDtcbiAqIDwvcHJlPlxuICpcbiAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLlRhYmxlXG4gKiBAcHVibGljXG4gKi9cbkBBUElDbGFzcyhcInNhcC5mZS5tYWNyb3MuVGFibGVBUElcIilcbmNsYXNzIFRhYmxlQVBJIGV4dGVuZHMgTWFjcm9BUEkge1xuXHRjb25zdHJ1Y3RvcihtU2V0dGluZ3M/OiBQcm9wZXJ0aWVzT2Y8VGFibGVBUEk+LCAuLi5vdGhlcnM6IGFueVtdKSB7XG5cdFx0c3VwZXIobVNldHRpbmdzIGFzIGFueSwgLi4ub3RoZXJzKTtcblxuXHRcdGlmICh0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuY29udGVudC5hdHRhY2hFdmVudChcInNlbGVjdGlvbkNoYW5nZVwiLCB7fSwgdGhpcy5vblRhYmxlU2VsZWN0aW9uQ2hhbmdlLCB0aGlzKTtcblx0XHR9XG5cdH1cblxuXHRATWFjcm9Db250ZXh0KClcblx0dGFibGVEZWZpbml0aW9uITogVGFibGVWaXN1YWxpemF0aW9uO1xuXG5cdC8qKlxuXHQgKiBBbiBleHByZXNzaW9uIHRoYXQgYWxsb3dzIHlvdSB0byBjb250cm9sIHRoZSAncmVhZC1vbmx5JyBzdGF0ZSBvZiB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIElmIHlvdSBkbyBub3Qgc2V0IGFueSBleHByZXNzaW9uLCBTQVAgRmlvcmkgZWxlbWVudHMgaG9va3MgaW50byB0aGUgc3RhbmRhcmQgbGlmZWN5Y2xlIHRvIGRldGVybWluZSB0aGUgY3VycmVudCBzdGF0ZS5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QFByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0cmVhZE9ubHkhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgdGFibGUgY29udHJvbC5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QFByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRpZCE6IHN0cmluZztcblxuXHQvKipcblx0ICogQW4gZXhwcmVzc2lvbiB0aGF0IGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgJ2J1c3knIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QFByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0YnVzeSE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHR5cGUgb2YgdGFibGUgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdGhlIG1hY3JvIHRvIHJlbmRlciB0aGUgZGF0YS5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBHcmlkVGFibGVgIGFuZCBgUmVzcG9uc2l2ZVRhYmxlYFxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAUHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBkZWZhdWx0VmFsdWU6IFwiUmVzcG9uc2l2ZVRhYmxlXCIgfSlcblx0dHlwZSE6IHN0cmluZztcblxuXHQvKipcblx0ICogQ29udHJvbHMgaWYgdGhlIGV4cG9ydCBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0YWJsZSBpcyBlbmFibGVkIG9yIG5vdC5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QFByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9KVxuXHRlbmFibGVFeHBvcnQhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgcGFzdGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdGFibGUgaXMgZW5hYmxlZCBvciBub3QuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBQcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGVuYWJsZVBhc3RlITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQ29udHJvbHMgd2hldGhlciB0aGUgdGFibGUgY2FuIGJlIG9wZW5lZCBpbiBmdWxsc2NyZWVuIG1vZGUgb3Igbm90LlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAUHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRlbmFibGVGdWxsU2NyZWVuITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogSWQgb2YgdGhlIEZpbHRlckJhciBidWlsZGluZyBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAUHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGZpbHRlckJhciE6IHN0cmluZztcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgc2VsZWN0aW9uIG1vZGUgdG8gYmUgdXNlZCBieSB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgTm9uZWAsIGBTaW5nbGVgLCBgTXVsdGlgIG9yIGBBdXRvYFxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAUHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHNlbGVjdGlvbk1vZGUhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgaGVhZGVyIHRleHQgdGhhdCBpcyBzaG93biBpbiB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBQcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0aGVhZGVyITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIGhlYWRlciB0ZXh0IHRoYXQgaXMgc2hvd24gaW4gdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAUHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRlbmFibGVBdXRvQ29sdW1uV2lkdGghOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgaGVhZGVyIHRleHQgc2hvdWxkIGJlIHNob3duIG9yIG5vdC5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QFByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogdHJ1ZSB9KVxuXHRoZWFkZXJWaXNpYmxlITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgY2hvb3NlcyBhIHJvdzsgdGhlIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIHJvdyB3YXMgY2hvc2VuLlxuXHQgKlxuXHQgKiBZb3UgY2FuIHNldCB0aGlzIGluIG9yZGVyIHRvIGhhbmRsZSB0aGUgbmF2aWdhdGlvbiBtYW51YWxseS5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QEV2ZW50XG5cdHJvd1ByZXNzITogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IHRyaWdnZXJlZCB3aGVuIHRoZSBUYWJsZSBTdGF0ZSBjaGFuZ2VzLlxuXHQgKlxuXHQgKiBZb3UgY2FuIHNldCB0aGlzIGluIG9yZGVyIHRvIHN0b3JlIHRoZSB0YWJsZSBzdGF0ZSBpbiB0aGUgYXBwc3RhdGUuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRARXZlbnRcblx0c3RhdGVDaGFuZ2VkITogRnVuY3Rpb247XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoaWNoIG9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSB0YWJsZSBwZXJzb25hbGl6YXRpb24gZGlhbG9nLlxuXHQgKlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYHRydWVgLCBhbGwgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhpcyBraW5kIG9mIHRhYmxlIGFyZSBlbmFibGVkLjxici8+XG5cdCAqIElmIGl0IGlzIHNldCB0byBgZmFsc2VgLCBwZXJzb25hbGl6YXRpb24gaXMgZGlzYWJsZWQuPGJyLz5cblx0ICo8YnIvPlxuXHQgKiBZb3UgY2FuIGFsc28gcHJvdmlkZSBhIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBmb3IgdGhlIHBlcnNvbmFsaXphdGlvbiBieSBwcm92aWRpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCB3aXRoIHRoZSBvcHRpb25zIHlvdSB3YW50IHRvIGJlIGF2YWlsYWJsZS48YnIvPlxuXHQgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6PGJyLz5cblx0ICogIC0gU29ydDxici8+XG5cdCAqICAtIENvbHVtbjxici8+XG5cdCAqICAtIEZpbHRlcjxici8+XG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBQcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhbnxzdHJpbmdcIiwgZGVmYXVsdFZhbHVlOiB0cnVlIH0pXG5cdHBlcnNvbmFsaXphdGlvbiE6IGJvb2xlYW4gfCBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHRoZSBraW5kIG9mIHZhcmlhbnQgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBlbmFibGVkIGZvciB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgUGFnZWAsIGBDb250cm9sYCBhbmQgYE5vbmVgLjxici8+XG5cdCAqIElmIHRoZSB0YWJsZSBpcyB1c2VkIHdpdGhpbiBhIFNBUCBGaW9yaSBlbGVtZW50cyB0ZW1wbGF0ZSwgdGhlIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBjdXJyZW50IHBhZ2UgdmFyaWFudCBtYW5hZ2VtZW50Ljxici8+XG5cdCAqIE90aGVyd2lzZSBpdCdzIGBOb25lYC5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QFByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHR2YXJpYW50TWFuYWdlbWVudCE6IHN0cmluZztcblxuXHQvKipcblx0ICogR3JvdXBzIG1lbnUgYWN0aW9ucyBieSBrZXkuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBQcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0bWVudT86IHN0cmluZztcblxuXHQvKipcblx0ICogR2V0cyBjb250ZXh0cyBmcm9tIHRoZSB0YWJsZSB0aGF0IGhhdmUgYmVlbiBzZWxlY3RlZCBieSB0aGUgdXNlci5cblx0ICpcblx0ICogQHJldHVybnMgQ29udGV4dHMgb2YgdGhlIHJvd3Mgc2VsZWN0ZWQgYnkgdGhlIHVzZXJcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Z2V0U2VsZWN0ZWRDb250ZXh0cygpOiBDb250ZXh0W10ge1xuXHRcdHJldHVybiAodGhpcy5jb250ZW50IGFzIGFueSkuZ2V0U2VsZWN0ZWRDb250ZXh0cygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBtZXNzYWdlIHRvIHRoZSB0YWJsZS5cblx0ICpcblx0ICogVGhlIG1lc3NhZ2UgYXBwbGllcyB0byB0aGUgd2hvbGUgdGFibGUgYW5kIG5vdCB0byBhbiBpbmRpdmlkdWFsIHRhYmxlIHJvdy5cblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbWV0ZXJzXSBUaGUgcGFyYW1ldGVycyB0byBjcmVhdGUgdGhlIG1lc3NhZ2Vcblx0ICogQHBhcmFtIHtzYXAudWkuY29yZS5NZXNzYWdlVHlwZX0gcGFyYW1ldGVycy50eXBlIE1lc3NhZ2UgdHlwZVxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1ldGVycy5tZXNzYWdlIE1lc3NhZ2UgdGV4dFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1ldGVycy5kZXNjcmlwdGlvbiBNZXNzYWdlIGRlc2NyaXB0aW9uXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gcGFyYW1ldGVycy5wZXJzaXN0ZW50IFRydWUgaWYgdGhlIG1lc3NhZ2UgaXMgcGVyc2lzdGVudFxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2Vcblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YWRkTWVzc2FnZShwYXJhbWV0ZXJzOiB7IHR5cGU/OiBNZXNzYWdlVHlwZTsgbWVzc2FnZT86IHN0cmluZzsgZGVzY3JpcHRpb24/OiBzdHJpbmc7IHBlcnNpc3RlbnQ/OiBib29sZWFuIH0pOiBzdHJpbmcge1xuXHRcdGNvbnN0IG1zZ01hbmFnZXIgPSB0aGlzLl9nZXRNZXNzYWdlTWFuYWdlcigpO1xuXG5cdFx0Y29uc3Qgb1RhYmxlID0gKHRoaXMuY29udGVudCBhcyBhbnkpIGFzIFRhYmxlO1xuXG5cdFx0Y29uc3Qgb01lc3NhZ2UgPSBuZXcgTWVzc2FnZSh7XG5cdFx0XHR0YXJnZXQ6IG9UYWJsZS5nZXRSb3dCaW5kaW5nKCkuZ2V0UmVzb2x2ZWRQYXRoKCksXG5cdFx0XHR0eXBlOiBwYXJhbWV0ZXJzLnR5cGUsXG5cdFx0XHRtZXNzYWdlOiBwYXJhbWV0ZXJzLm1lc3NhZ2UsXG5cdFx0XHRwcm9jZXNzb3I6IG9UYWJsZS5nZXRNb2RlbCgpLFxuXHRcdFx0ZGVzY3JpcHRpb246IHBhcmFtZXRlcnMuZGVzY3JpcHRpb24sXG5cdFx0XHRwZXJzaXN0ZW50OiBwYXJhbWV0ZXJzLnBlcnNpc3RlbnRcblx0XHR9KTtcblxuXHRcdG1zZ01hbmFnZXIuYWRkTWVzc2FnZXMob01lc3NhZ2UpO1xuXHRcdHJldHVybiBvTWVzc2FnZS5nZXRJZCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYSBtZXNzYWdlIGZyb20gdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gaWQgVGhlIGlkIG9mIHRoZSBtZXNzYWdlXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHJlbW92ZU1lc3NhZ2UoaWQ6IHN0cmluZykge1xuXHRcdGNvbnN0IG1zZ01hbmFnZXIgPSB0aGlzLl9nZXRNZXNzYWdlTWFuYWdlcigpO1xuXHRcdGNvbnN0IG1lc3NhZ2VzID0gbXNnTWFuYWdlci5nZXRNZXNzYWdlTW9kZWwoKS5nZXREYXRhKCk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gbWVzc2FnZXMuZmluZCgoZTogYW55KSA9PiBlLmlkID09PSBpZCk7XG5cdFx0aWYgKHJlc3VsdCkge1xuXHRcdFx0bXNnTWFuYWdlci5yZW1vdmVNZXNzYWdlcyhyZXN1bHQpO1xuXHRcdH1cblx0fVxuXG5cdF9nZXRNZXNzYWdlTWFuYWdlcigpIHtcblx0XHRyZXR1cm4gc2FwLnVpLmdldENvcmUoKS5nZXRNZXNzYWdlTWFuYWdlcigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IHRyaWdnZXJlZCB3aGVuIHRoZSBzZWxlY3Rpb24gaW4gdGhlIHRhYmxlIGNoYW5nZXMuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBFdmVudFxuXHRzZWxlY3Rpb25DaGFuZ2UhOiBGdW5jdGlvbjtcblxuXHRARXZlbnRIYW5kbGVyXG5cdG9uVGFibGVSb3dQcmVzcyhvRXZlbnQ6IFVJNUV2ZW50LCBvQ29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIG9Db250ZXh0OiBDb250ZXh0LCBtUGFyYW1ldGVyczogYW55KSB7XG5cdFx0Ly8gSW4gdGhlIGNhc2Ugb2YgYW4gYW5hbHl0aWNhbCB0YWJsZSwgaWYgd2UncmUgdHJ5aW5nIHRvIG5hdmlnYXRlIHRvIGEgY29udGV4dCBjb3JyZXNwb25kaW5nIHRvIGEgdmlzdWFsIGdyb3VwIG9yIGdyYW5kIHRvdGFsXG5cdFx0Ly8gLS0+IENhbmNlbCBuYXZpZ2F0aW9uXG5cdFx0aWYgKFxuXHRcdFx0b0NvbnRleHQgJiZcblx0XHRcdG9Db250ZXh0LmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0XCIpICYmXG5cdFx0XHR0eXBlb2Ygb0NvbnRleHQuZ2V0UHJvcGVydHkoXCJAJHVpNS5ub2RlLmlzRXhwYW5kZWRcIikgPT09IFwiYm9vbGVhblwiXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdChvQ29udHJvbGxlciBhcyBhbnkpLl9yb3V0aW5nLm5hdmlnYXRlRm9yd2FyZFRvQ29udGV4dChvQ29udGV4dCwgbVBhcmFtZXRlcnMpO1xuXHRcdH1cblx0fVxuXG5cdEBFdmVudEhhbmRsZXJcblx0b25JbnRlcm5hbERhdGFSZWNlaXZlZChvRXZlbnQ6IFVJNUV2ZW50KSB7XG5cdFx0aWYgKG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJlcnJvclwiKSkge1xuXHRcdFx0dGhpcy5nZXRDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIuc2hvd01lc3NhZ2VEaWFsb2coKTtcblx0XHR9XG5cdH1cblx0QEV2ZW50SGFuZGxlclxuXHRvblBhc3RlKG9FdmVudDogVUk1RXZlbnQsIG9Db250cm9sbGVyOiBQYWdlQ29udHJvbGxlcikge1xuXHRcdC8vIElmIHBhc3RlIGlzIGRpc2FibGUgb3IgaWYgd2UncmUgbm90IGluIGVkaXQgbW9kZSwgd2UgY2FuJ3QgcGFzdGUgYW55dGhpbmdcblx0XHRpZiAoIXRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wuZW5hYmxlUGFzdGUgfHwgIXRoaXMuZ2V0TW9kZWwoXCJ1aVwiKS5nZXRQcm9wZXJ0eShcIi9pc0VkaXRhYmxlXCIpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgYVJhd1Bhc3RlZERhdGEgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiZGF0YVwiKSxcblx0XHRcdG9UYWJsZSA9IG9FdmVudC5nZXRTb3VyY2UoKSBhcyBUYWJsZTtcblx0XHRsZXQgb1Jlc291cmNlTW9kZWw7XG5cblx0XHRpZiAob1RhYmxlLmdldEVuYWJsZVBhc3RlKCkgPT09IHRydWUpIHtcblx0XHRcdFBhc3RlSGVscGVyLnBhc3RlRGF0YShhUmF3UGFzdGVkRGF0YSwgb1RhYmxlLCBvQ29udHJvbGxlcik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9SZXNvdXJjZU1vZGVsID0gc2FwLnVpLmdldENvcmUoKS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKSBhcyBSZXNvdXJjZUJ1bmRsZTtcblx0XHRcdE1lc3NhZ2VCb3guZXJyb3Iob1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIlRfT1BfQ09OVFJPTExFUl9TQVBGRV9QQVNURV9ESVNBQkxFRF9NRVNTQUdFXCIpLCB7XG5cdFx0XHRcdHRpdGxlOiBvUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19DT01NT05fU0FQRkVfRVJST1JcIilcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8vIFRoaXMgZXZlbnQgd2lsbCBhbGxvdyB1cyB0byBpbnRlcmNlcHQgdGhlIGV4cG9ydCBiZWZvcmUgaXMgdHJpZ2dlcmVkIHRvIGNvdmVyIHNwZWNpZmljIGNhc2VzXG5cdC8vIHRoYXQgY291bGRuJ3QgYmUgYWRkcmVzc2VkIG9uIHRoZSBwcm9wZXJ0eUluZm9zIGZvciBlYWNoIGNvbHVtbi5cblx0Ly8gZS5nLiBGaXhlZCBUYXJnZXQgVmFsdWUgZm9yIHRoZSBkYXRhcG9pbnRzXG5cdEBFdmVudEhhbmRsZXJcblx0b25CZWZvcmVFeHBvcnQob0V2ZW50OiBVSTVFdmVudCkge1xuXHRcdGNvbnN0IGlzU3BsaXRNb2RlID0gKG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkgYXMgYW55KS51c2VyRXhwb3J0U2V0dGluZ3Muc3BsaXRDZWxscyxcblx0XHRcdGlzUkxUTGFuZ3VhZ2UgPSBzYXAudWlcblx0XHRcdFx0LmdldENvcmUoKVxuXHRcdFx0XHQuZ2V0Q29uZmlndXJhdGlvbigpXG5cdFx0XHRcdC5nZXRSVEwoKSxcblx0XHRcdG9UYWJsZUNvbnRyb2xsZXIgPSBvRXZlbnQuZ2V0U291cmNlKCkgYXMgUGFnZUNvbnRyb2xsZXIsXG5cdFx0XHRvRXhwb3J0Q29sdW1ucyA9IChvRXZlbnQuZ2V0UGFyYW1ldGVycygpIGFzIGFueSkuZXhwb3J0U2V0dGluZ3Mud29ya2Jvb2s/LmNvbHVtbnMsXG5cdFx0XHRvVGFibGVDb2x1bW5zID0gdGhpcy50YWJsZURlZmluaXRpb24uY29sdW1ucztcblxuXHRcdFRhYmxlQVBJLnVwZGF0ZUV4cG9ydFNldHRpbmdzKG9FeHBvcnRDb2x1bW5zLCBvVGFibGVDb2x1bW5zLCBvVGFibGVDb250cm9sbGVyLCBpc1NwbGl0TW9kZSwgaXNSTFRMYW5ndWFnZSk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgTURDIERhdGFTdGF0ZUluZGljYXRvciBwbHVnaW4gdG8gZGlzcGxheSBtZXNzYWdlU3RyaXAgb24gYSB0YWJsZS5cblx0ICogQHBhcmFtIG9NZXNzYWdlXG5cdCAqIEBwYXJhbSBvVGFibGVcblx0ICogQG5hbWUgZGF0YVN0YXRlRmlsdGVyXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHRvIHJlbmRlciB2aXNpYmxlIHRoZSBtZXNzYWdlU3RyaXBcblx0ICovXG5cdHN0YXRpYyBkYXRhU3RhdGVJbmRpY2F0b3JGaWx0ZXIob01lc3NhZ2U6IGFueSwgb1RhYmxlOiBhbnkpOiBib29sZWFuIHtcblx0XHRjb25zdCBzVGFibGVDb250ZXh0QmluZGluZ1BhdGggPSBvVGFibGUuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpO1xuXHRcdGNvbnN0IHNUYWJsZVJvd0JpbmRpbmcgPSAoc1RhYmxlQ29udGV4dEJpbmRpbmdQYXRoID8gc1RhYmxlQ29udGV4dEJpbmRpbmdQYXRoICsgXCIvXCIgOiBcIlwiKSArIG9UYWJsZS5nZXRSb3dCaW5kaW5nKCkuZ2V0UGF0aCgpO1xuXHRcdHJldHVybiBzVGFibGVSb3dCaW5kaW5nID09PSBvTWVzc2FnZS5nZXRUYXJnZXQoKSA/IHRydWUgOiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGV2ZW50IGhhbmRsZXMgdGhlIERhdGFTdGF0ZSBvZiB0aGUgRGF0YVN0YXRlSW5kaWNhdG9yIHBsdWdpbiBmcm9tIE1EQyBvbiBhIHRhYmxlLlxuXHQgKiBJdCdzIGZpcmVkIHdoZW4gbmV3IGVycm9yIG1lc3NhZ2VzIGFyZSBzZW50IGZyb20gdGhlIGJhY2tlbmQgdG8gdXBkYXRlIHJvdyBoaWdobGlnaHRpbmcuXG5cdCAqXG5cdCAqIEBuYW1lIG9uRGF0YVN0YXRlQ2hhbmdlXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvRXZlbnQgRXZlbnQgb2JqZWN0XG5cdCAqL1xuXHRARXZlbnRIYW5kbGVyXG5cdG9uRGF0YVN0YXRlQ2hhbmdlKG9FdmVudDogVUk1RXZlbnQpIHtcblx0XHRjb25zdCBvRGF0YVN0YXRlSW5kaWNhdG9yID0gb0V2ZW50LmdldFNvdXJjZSgpIGFzIERhdGFTdGF0ZUluZGljYXRvcjtcblx0XHRjb25zdCBhRmlsdGVyZWRNZXNzYWdlcyA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJmaWx0ZXJlZE1lc3NhZ2VzXCIpO1xuXHRcdGlmIChhRmlsdGVyZWRNZXNzYWdlcykge1xuXHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWwgPSBvRGF0YVN0YXRlSW5kaWNhdG9yLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRcdFx0b0ludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoXCJmaWx0ZXJlZE1lc3NhZ2VzXCIsIGFGaWx0ZXJlZE1lc3NhZ2VzLCBvRGF0YVN0YXRlSW5kaWNhdG9yLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgQ29udGV4dCk7XG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIHVwZGF0ZUV4cG9ydFNldHRpbmdzKFxuXHRcdG9FeHBvcnRDb2x1bW5zOiBhbnksXG5cdFx0b0NvbHVtbnM6IFRhYmxlQ29sdW1uW10sXG5cdFx0b1RhYmxlQ29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsXG5cdFx0aXNTcGxpdE1vZGU6IGJvb2xlYW4sXG5cdFx0aXNSTFRMYW5ndWFnZTogYm9vbGVhblxuXHQpOiBhbnkge1xuXHRcdG9FeHBvcnRDb2x1bW5zLmZvckVhY2goKG9Db2x1bW5FeHBvcnQ6IGFueSkgPT4ge1xuXHRcdFx0Ly8gYUV4cG9ydExhYmVscyB3aWxsIGNvbnRhaW4gbGFiZWxzIGZyb20gYSBGaWVsZEdyb3VwLCBhIHRleHQgYW5ub3RhdGlvbiBhbmQgYSBEYXRhUG9pbnRcblx0XHRcdC8vIFRoZXNlIGxhYmVscyB3aWxsIGJlIHVzZWQgZm9yIGNoaWxkIHByb3BlcnRpZXMgKHNpbXBsZSBwcm9wZXJ0aWVzKSBmcm9tIGNvbXBsZXhQcm9wZXJ0eVxuXHRcdFx0Ly8gVW5pdC9jdXJyZW5jeSBwcm9wZXJ0aWVzIHdpbGwgYmUgZGlzbWlzcyBhcyBpdCBjb3VsZCBiZSB1c2VkIGluIHNldmVyYWwgZGF0YWZpZWxkcy5cblx0XHRcdGxldCBhRXhwb3J0TGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdFx0Y29uc3QgaXNVbml0ID0gb0NvbHVtbnMuc29tZShjb2x1bW4gPT4ge1xuXHRcdFx0XHRjb25zdCBzVW5pdCA9IChjb2x1bW4gYXMgQW5ub3RhdGlvblRhYmxlQ29sdW1uKS51bml0O1xuXHRcdFx0XHRyZXR1cm4gc1VuaXQgPT09IG9Db2x1bW5FeHBvcnQucHJvcGVydHkgfHwgc1VuaXQgPT09IFwiUHJvcGVydHk6OlwiICsgb0NvbHVtbkV4cG9ydC5wcm9wZXJ0eTtcblx0XHRcdH0pO1xuXG5cdFx0XHRvQ29sdW1ucz8uZm9yRWFjaChjb2x1bW4gPT4ge1xuXHRcdFx0XHRjb25zdCBvQ29sdW1uID0gY29sdW1uIGFzIEFubm90YXRpb25UYWJsZUNvbHVtbjtcblx0XHRcdFx0aWYgKGlzU3BsaXRNb2RlKSB7XG5cdFx0XHRcdFx0Ly8gQ3JlYXRlIEV4cG9ydGluZyBsYWJlbHMgYXJyYXlcblx0XHRcdFx0XHRjb25zdCBGaWVsZEdyb3VwTGFiZWwgPSBUYWJsZUFQSS5fZ2V0RmllbGRHcm91cEV4cG9ydExhYmVsKG9Db2x1bW5FeHBvcnQsIG9Db2x1bW4sIG9UYWJsZUNvbnRyb2xsZXIpO1xuXHRcdFx0XHRcdGlmIChGaWVsZEdyb3VwTGFiZWwpIHtcblx0XHRcdFx0XHRcdGFFeHBvcnRMYWJlbHMudW5zaGlmdChGaWVsZEdyb3VwTGFiZWwpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBGb3IgYSB0ZXh0IGFubm90YXRpb24sIGV4cG9ydCBsYWJlbCB0ZW1wbGF0ZSB1c2VkIGlzIDx2YWx1ZT4gLSA8ZGVzY3JpcHRpb24+IGFuZCBmb3IgYSBEYXRhUG9pbnQgPGRhdGFwb2ludFZhbHVlPiAtIDxUYXJnZXRWYWx1ZT4uXG5cdFx0XHRcdFx0Ly8gSW4gYm90aCBjYXNlcyBpbnRlcm5hdGlvbmFsaXphdGlvbiBpcyBuZWVkZWRcblx0XHRcdFx0XHRjb25zdCBkYXRhRmllbGREZXNjcmlwdGlvbkxhYmVsID0gVGFibGVBUEkuX2dldERhdGFGaWVsZERlc2NyaXB0aW9uTGFiZWwoXG5cdFx0XHRcdFx0XHRvQ29sdW1uRXhwb3J0LFxuXHRcdFx0XHRcdFx0b0NvbHVtbixcblx0XHRcdFx0XHRcdG9UYWJsZUNvbnRyb2xsZXIsXG5cdFx0XHRcdFx0XHRpc1VuaXRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGlmIChkYXRhRmllbGREZXNjcmlwdGlvbkxhYmVsKSB7XG5cdFx0XHRcdFx0XHRhRXhwb3J0TGFiZWxzLnVuc2hpZnQoZGF0YUZpZWxkRGVzY3JpcHRpb25MYWJlbCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly9BZGQgVGFyZ2V0VmFsdWUgb24gZHVtbXkgY3JlYXRlZCBwcm9wZXJ0eSB3aGVuICBleHBvcnRpbmcgb24gc3BsaXQgbW9kZVxuXHRcdFx0XHRcdGlmIChvQ29sdW1uLmlzRGF0YVBvaW50RmFrZVRhcmdldFByb3BlcnR5ICYmIG9Db2x1bW4ucmVsYXRpdmVQYXRoID09PSBvQ29sdW1uRXhwb3J0LnByb3BlcnR5KSB7XG5cdFx0XHRcdFx0XHRvQ29sdW1uRXhwb3J0LnByb3BlcnR5ID0gW29Db2x1bW5FeHBvcnQucHJvcGVydHldO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHQvL01vZGlmeSBleHBvcnRlZCB2YWx1ZSB3aGVuIHVzaW5nIENvbW11bmljYXRpb24uQ29udGFjdCBkYXRhRmllbGRGb3JBbm5vdGF0aW9uXG5cdFx0XHRcdC8vY29udGFjdD5mbiBwcm9wZXJ0eSBzaG91bGQgYmUgZXhwb3J0ZWRcblx0XHRcdFx0aWYgKG9Db2x1bW4uZXhwb3J0Q29udGFjdFByb3BlcnR5ICYmIGNvbHVtbi5wcm9wZXJ0eUluZm9zKSB7XG5cdFx0XHRcdFx0aWYgKGNvbHVtbi5wcm9wZXJ0eUluZm9zPy5sZW5ndGggPT09IDEgJiYgY29sdW1uLnByb3BlcnR5SW5mb3M/LnRvU3RyaW5nKCkgPT09IG9Db2x1bW5FeHBvcnQucHJvcGVydHkudG9TdHJpbmcoKSkge1xuXHRcdFx0XHRcdFx0b0NvbHVtbkV4cG9ydC5wcm9wZXJ0eSA9IG9Db2x1bW4uZXhwb3J0Q29udGFjdFByb3BlcnR5O1xuXHRcdFx0XHRcdFx0b0NvbHVtbkV4cG9ydC5sYWJlbCA9IG9Db2x1bW4ubGFiZWw7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHRcdGNvbHVtbi5wcm9wZXJ0eUluZm9zPy5sZW5ndGggPiAxICYmXG5cdFx0XHRcdFx0XHRvQ29sdW1uLnByb3BlcnR5SW5mb3M/LnNvbWUocHJvcCA9PiBvQ29sdW1uRXhwb3J0LnByb3BlcnR5LmluY2x1ZGVzKHByb3ApKSAmJlxuXHRcdFx0XHRcdFx0QXJyYXkuaXNBcnJheShvQ29sdW1uRXhwb3J0LnByb3BlcnR5KVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0b0NvbHVtbkV4cG9ydC5wcm9wZXJ0eSA9IG9Db2x1bW5FeHBvcnQucHJvcGVydHk/Lm1hcCgocHJvcGVydHk6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gb0NvbHVtbi5wcm9wZXJ0eUluZm9zPy5zb21lKHByb3AgPT4gcHJvcCA9PT0gcHJvcGVydHkpID8gb0NvbHVtbi5leHBvcnRDb250YWN0UHJvcGVydHkgOiBwcm9wZXJ0eTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRhRXhwb3J0TGFiZWxzLnB1c2goRGVsZWdhdGVVdGlsLmdldExvY2FsaXplZFRleHQob0NvbHVtbkV4cG9ydC5sYWJlbCwgb1RhYmxlQ29udHJvbGxlcikpO1xuXHRcdFx0aWYgKGFFeHBvcnRMYWJlbHMubGVuZ3RoID4gMSkge1xuXHRcdFx0XHQvLyBSZW1vdmUgZHVwbGljYXRlIGxhYmVscyAoZS5nLiBGaWVsZEdyb3VwIGxhYmVsIGlzIHRoZSBzYW1lIGFzIHRoZSBsYWJlbCBvZiBvbmUgb2YgdGhlIHByb3BlcnRpZXMpXG5cdFx0XHRcdGFFeHBvcnRMYWJlbHMgPSBhRXhwb3J0TGFiZWxzLmZpbHRlcihmdW5jdGlvbihsYWJlbCwgaW5kZXgpIHtcblx0XHRcdFx0XHRpZiAoYUV4cG9ydExhYmVscy5pbmRleE9mKGxhYmVsKSA9PSBpbmRleCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGxhYmVsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHQvLyBDaGVjayBpZiBhIFJUTCBsYW5ndWFnZSBpZiB1c2VkIGFuZCBpZiBzbyB3ZSBuZWVkIHRvIHJldmVyc2UgbGFiZWxzXG5cdFx0XHRpZiAoaXNSTFRMYW5ndWFnZSkge1xuXHRcdFx0XHRhRXhwb3J0TGFiZWxzLnJldmVyc2UoKTtcblx0XHRcdH1cblx0XHRcdG9Db2x1bW5FeHBvcnQubGFiZWwgPSBhRXhwb3J0TGFiZWxzLmpvaW4oXCIgLSBcIik7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG9FeHBvcnRDb2x1bW5zO1xuXHR9XG5cblx0c3RhdGljIF9nZXRGaWVsZEdyb3VwRXhwb3J0TGFiZWwoXG5cdFx0b0NvbHVtbkV4cG9ydDogYW55LFxuXHRcdG9Db2x1bW46IEFubm90YXRpb25UYWJsZUNvbHVtbixcblx0XHRvVGFibGVDb250cm9sbGVyOiBQYWdlQ29udHJvbGxlclxuXHQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGlmIChcblx0XHRcdChvQ29sdW1uRXhwb3J0LmNvbHVtbklkLmluZGV4T2YoXCI6OkZpZWxkR3JvdXA6OlwiKSAhPT0gLTEgfHxcblx0XHRcdFx0KG9Db2x1bW4uZXhwb3J0U2V0dGluZ3M/LmZpZWxkTGFiZWwgJiYgb0NvbHVtbkV4cG9ydC5jb2x1bW5JZC5pbmRleE9mKFwiX19jb2x1bW5cIikgIT09IC0xKSkgJiZcblx0XHRcdChvQ29sdW1uLnByb3BlcnR5SW5mb3M/LmluY2x1ZGVzKG9Db2x1bW5FeHBvcnQucHJvcGVydHkpIHx8XG5cdFx0XHRcdG9Db2x1bW4ucHJvcGVydHlJbmZvcz8uaW5jbHVkZXMoXCJQcm9wZXJ0eTo6XCIgKyBvQ29sdW1uRXhwb3J0LnByb3BlcnR5KSlcblx0XHQpIHtcblx0XHRcdGNvbnN0IGxhYmVsID0gb0NvbHVtbi5leHBvcnRTZXR0aW5ncz8uZmllbGRMYWJlbCB8fCBvQ29sdW1uLmxhYmVsO1xuXHRcdFx0cmV0dXJuIERlbGVnYXRlVXRpbC5nZXRMb2NhbGl6ZWRUZXh0KGxhYmVsIGFzIHN0cmluZywgb1RhYmxlQ29udHJvbGxlcik7XG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIF9nZXREYXRhRmllbGREZXNjcmlwdGlvbkxhYmVsKFxuXHRcdG9Db2x1bW5FeHBvcnQ6IGFueSxcblx0XHRvQ29sdW1uOiBBbm5vdGF0aW9uVGFibGVDb2x1bW4sXG5cdFx0b1RhYmxlQ29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsXG5cdFx0aXNVbml0OiBib29sZWFuXG5cdCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKFxuXHRcdFx0b0NvbHVtbi5wcm9wZXJ0eUluZm9zICYmXG5cdFx0XHRvQ29sdW1uLnByb3BlcnR5SW5mb3M/Lmxlbmd0aCA+IDEgJiZcblx0XHRcdCFpc1VuaXQgJiZcblx0XHRcdChvQ29sdW1uLnByb3BlcnR5SW5mb3M/LmluY2x1ZGVzKG9Db2x1bW5FeHBvcnQucHJvcGVydHkpIHx8XG5cdFx0XHRcdG9Db2x1bW4ucHJvcGVydHlJbmZvcz8uaW5jbHVkZXMoXCJQcm9wZXJ0eTo6XCIgKyBvQ29sdW1uRXhwb3J0LnByb3BlcnR5KSkgJiZcblx0XHRcdG9Db2x1bW4ucmVsYXRpdmVQYXRoPy5pbmRleE9mKFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZpZWxkR3JvdXBcIikgPT09IC0xXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gRGVsZWdhdGVVdGlsLmdldExvY2FsaXplZFRleHQob0NvbHVtbi5sYWJlbCBhcyBzdHJpbmcsIG9UYWJsZUNvbnRyb2xsZXIpO1xuXHRcdH1cblx0fVxuXHRARXZlbnRIYW5kbGVyXG5cdG9uTWFzc0VkaXRCdXR0b25QcmVzc2VkKG9FdmVudDogVUk1RXZlbnQsIHBhZ2VDb250cm9sbGVyOiBhbnkpIHtcblx0XHRjb25zdCBvVGFibGUgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0aWYgKHBhZ2VDb250cm9sbGVyICYmIHBhZ2VDb250cm9sbGVyLm1hc3NFZGl0KSB7XG5cdFx0XHRwYWdlQ29udHJvbGxlci5tYXNzRWRpdC5vcGVuTWFzc0VkaXREaWFsb2cob1RhYmxlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLndhcm5pbmcoXCJUaGUgQ29udHJvbGxlciBpcyBub3QgZW5oYW5jZWQgd2l0aCBNYXNzIEVkaXQgZnVuY3Rpb25hbGl0eVwiKTtcblx0XHR9XG5cdH1cblx0QEV2ZW50SGFuZGxlclxuXHRvblRhYmxlU2VsZWN0aW9uQ2hhbmdlKG9FdmVudDogVUk1RXZlbnQpIHtcblx0XHR0aGlzLmZpcmVFdmVudChcInNlbGVjdGlvbkNoYW5nZVwiLCBvRXZlbnQuZ2V0UGFyYW1ldGVycygpKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBUYWJsZUFQSTtcbiJdfQ==