@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,410 +2,387 @@
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/ui/core/service/Service", "sap/ui/core/service/ServiceFactory", "sap/ui/core/service/ServiceFactoryRegistry", "sap/ui/model/base/ManagedObjectModel", "sap/ui/core/mvc/View", "sap/ui/core/Component", "sap/ui/model/json/JSONModel", "sap/base/Log", "sap/fe/core/TemplateModel", "sap/fe/core/helpers/DynamicAnnotationPathHelper", "sap/ui/core/cache/CacheManager", "sap/ui/VersionInfo", "sap/ui/Device", "sap/base/util/UriParameters"], function (Service, ServiceFactory, ServiceFactoryRegistry, ManagedObjectModel, View, Component, JSONModel, Log, TemplateModel, DynamicAnnotationPathHelper, CacheManager, VersionInfo, Device, UriParameters) {
5
+ sap.ui.define(["sap/ui/core/service/Service", "sap/ui/core/service/ServiceFactory", "sap/ui/core/service/ServiceFactoryRegistry", "sap/ui/model/base/ManagedObjectModel", "sap/ui/core/mvc/View", "sap/ui/core/Component", "sap/ui/model/json/JSONModel", "sap/base/Log", "sap/fe/core/TemplateModel", "sap/ui/core/cache/CacheManager", "sap/ui/VersionInfo", "sap/ui/Device", "sap/base/util/UriParameters", "../helpers/DynamicAnnotationPathHelper"], function (Service, ServiceFactory, ServiceFactoryRegistry, ManagedObjectModel, View, Component, JSONModel, Log, TemplateModel, CacheManager, VersionInfo, Device, UriParameters, DynamicAnnotationPathHelper) {
6
6
  "use strict";
7
7
 
8
- 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; }
9
-
10
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11
-
12
- 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); } }
13
-
14
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
8
+ var resolveDynamicExpression = DynamicAnnotationPathHelper.resolveDynamicExpression;
15
9
 
16
10
  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); }
17
11
 
18
12
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
19
13
 
20
- 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); }; }
21
-
22
- 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); }
23
-
24
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
25
-
26
- 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; } }
27
-
28
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
29
-
30
14
  var TemplatedViewService = /*#__PURE__*/function (_Service) {
31
15
  _inherits(TemplatedViewService, _Service);
32
16
 
33
- var _super = _createSuper(TemplatedViewService);
34
-
35
17
  function TemplatedViewService() {
36
- _classCallCheck(this, TemplatedViewService);
37
-
38
- return _super.apply(this, arguments);
18
+ return _Service.apply(this, arguments) || this;
39
19
  }
40
20
 
41
- _createClass(TemplatedViewService, [{
42
- key: "init",
43
- value: function init() {
44
- var _this = this;
45
-
46
- var aServiceDependencies = [];
47
- var oContext = this.getContext();
48
- var oComponent = oContext.scopeObject;
49
- var oAppComponent = Component.getOwnerComponentFor(oComponent);
50
- var oMetaModel = oAppComponent.getMetaModel();
51
- var sStableId = oAppComponent.getMetadata().getComponentName() + "::" + oAppComponent.getLocalId(oComponent.getId());
52
- var aEnhanceI18n = oComponent.getEnhanceI18n() || [];
53
- var sAppNamespace;
54
- this.oFactory = oContext.factory;
55
-
56
- if (aEnhanceI18n) {
57
- sAppNamespace = oAppComponent.getMetadata().getComponentName();
58
-
59
- for (var i = 0; i < aEnhanceI18n.length; i++) {
60
- // In order to support text-verticalization applications can also passs a resource model defined in the manifest
61
- // UI5 takes care of text-verticalization for resource models defined in the manifest
62
- // Hence check if the given key is a resource model defined in the manifest
63
- // if so this model should be used to enhance the sap.fe resource model so pass it as it is
64
- var oResourceModel = oAppComponent.getModel(aEnhanceI18n[i]);
65
-
66
- if (oResourceModel && oResourceModel.isA("sap.ui.model.resource.ResourceModel")) {
67
- aEnhanceI18n[i] = oResourceModel;
68
- } else {
69
- aEnhanceI18n[i] = sAppNamespace + "." + aEnhanceI18n[i].replace(".properties", "");
70
- }
21
+ var _proto = TemplatedViewService.prototype;
22
+
23
+ _proto.init = function init() {
24
+ var _this = this;
25
+
26
+ var aServiceDependencies = [];
27
+ var oContext = this.getContext();
28
+ var oComponent = oContext.scopeObject;
29
+ var oAppComponent = Component.getOwnerComponentFor(oComponent);
30
+ var oMetaModel = oAppComponent.getMetaModel();
31
+ var sStableId = oAppComponent.getMetadata().getComponentName() + "::" + oAppComponent.getLocalId(oComponent.getId());
32
+ var aEnhanceI18n = oComponent.getEnhanceI18n() || [];
33
+ var sAppNamespace;
34
+ this.oFactory = oContext.factory;
35
+
36
+ if (aEnhanceI18n) {
37
+ sAppNamespace = oAppComponent.getMetadata().getComponentName();
38
+
39
+ for (var i = 0; i < aEnhanceI18n.length; i++) {
40
+ // In order to support text-verticalization applications can also passs a resource model defined in the manifest
41
+ // UI5 takes care of text-verticalization for resource models defined in the manifest
42
+ // Hence check if the given key is a resource model defined in the manifest
43
+ // if so this model should be used to enhance the sap.fe resource model so pass it as it is
44
+ var oResourceModel = oAppComponent.getModel(aEnhanceI18n[i]);
45
+
46
+ if (oResourceModel && oResourceModel.isA("sap.ui.model.resource.ResourceModel")) {
47
+ aEnhanceI18n[i] = oResourceModel;
48
+ } else {
49
+ aEnhanceI18n[i] = sAppNamespace + "." + aEnhanceI18n[i].replace(".properties", "");
71
50
  }
72
51
  }
52
+ }
73
53
 
74
- var sCacheIdentifier = oAppComponent.getMetadata().getName() + "_" + sStableId + "_" + sap.ui.getCore().getConfiguration().getLanguageTag();
75
- aServiceDependencies.push(ServiceFactoryRegistry.get("sap.fe.core.services.ResourceModelService").createInstance({
76
- scopeType: "component",
77
- scopeObject: oComponent,
78
- settings: {
79
- bundles: ["sap.fe.core.messagebundle", "sap.fe.macros.messagebundle", "sap.fe.templates.messagebundle"],
80
- enhanceI18n: aEnhanceI18n,
81
- modelName: "sap.fe.i18n"
82
- }
83
- }).then(function (oResourceModelService) {
84
- _this.oResourceModelService = oResourceModelService;
85
- return oResourceModelService.getResourceModel();
86
- }));
87
- aServiceDependencies.push(ServiceFactoryRegistry.get("sap.fe.core.services.CacheHandlerService").createInstance({
88
- settings: {
89
- metaModel: oMetaModel,
90
- appComponent: oAppComponent,
91
- component: oComponent
92
- }
93
- }).then(function (oCacheHandlerService) {
94
- _this.oCacheHandlerService = oCacheHandlerService;
95
- return oCacheHandlerService.validateCacheKey(sCacheIdentifier);
96
- }));
97
- aServiceDependencies.push(VersionInfo.load().then(function (oInfo) {
98
- var sTimestamp = "";
99
-
100
- if (!oInfo.libraries) {
101
- sTimestamp = sap.ui.buildinfo.buildtime;
102
- } else {
103
- oInfo.libraries.forEach(function (oLibrary) {
104
- sTimestamp += oLibrary.buildTimestamp;
105
- });
106
- }
54
+ var sCacheIdentifier = oAppComponent.getMetadata().getName() + "_" + sStableId + "_" + sap.ui.getCore().getConfiguration().getLanguageTag();
55
+ aServiceDependencies.push(ServiceFactoryRegistry.get("sap.fe.core.services.ResourceModelService").createInstance({
56
+ scopeType: "component",
57
+ scopeObject: oComponent,
58
+ settings: {
59
+ bundles: ["sap.fe.core.messagebundle", "sap.fe.macros.messagebundle", "sap.fe.templates.messagebundle"],
60
+ enhanceI18n: aEnhanceI18n,
61
+ modelName: "sap.fe.i18n"
62
+ }
63
+ }).then(function (oResourceModelService) {
64
+ _this.oResourceModelService = oResourceModelService;
65
+ return oResourceModelService.getResourceModel();
66
+ }));
67
+ aServiceDependencies.push(ServiceFactoryRegistry.get("sap.fe.core.services.CacheHandlerService").createInstance({
68
+ settings: {
69
+ metaModel: oMetaModel,
70
+ appComponent: oAppComponent,
71
+ component: oComponent
72
+ }
73
+ }).then(function (oCacheHandlerService) {
74
+ _this.oCacheHandlerService = oCacheHandlerService;
75
+ return oCacheHandlerService.validateCacheKey(sCacheIdentifier);
76
+ }));
77
+ aServiceDependencies.push(VersionInfo.load().then(function (oInfo) {
78
+ var sTimestamp = "";
79
+
80
+ if (!oInfo.libraries) {
81
+ sTimestamp = sap.ui.buildinfo.buildtime;
82
+ } else {
83
+ oInfo.libraries.forEach(function (oLibrary) {
84
+ sTimestamp += oLibrary.buildTimestamp;
85
+ });
86
+ }
107
87
 
108
- return sTimestamp;
109
- }).catch(function () {
110
- return "<NOVALUE>";
111
- }));
112
- var sPageModelCacheKey = "";
113
- this.initPromise = Promise.all(aServiceDependencies).then(function (aDependenciesResult) {
114
- var sCacheKey = aDependenciesResult[1];
115
- var sVersionInfo = aDependenciesResult[2];
116
- var oShellServices = oAppComponent.getShellServices();
117
- var oSideEffectsServices = oAppComponent.getSideEffectsService();
118
- oSideEffectsServices.initializeSideEffects(oAppComponent.getEnvironmentCapabilities().getCapabilities());
119
- sPageModelCacheKey = sCacheKey + "-" + sVersionInfo + "-" + sStableId + "-" + oShellServices.instanceType + "-pageModel";
120
- return Promise.all(aDependenciesResult.concat([_this._getCachedModel(sPageModelCacheKey)]));
121
- }).then(function (aDependenciesResult) {
122
- var oResourceModel = aDependenciesResult[0];
123
- var sCacheKey = aDependenciesResult[1];
124
- var oPageModelCache = aDependenciesResult[3];
125
- return new Promise(function (resolve) {
126
- sap.ui.require(["sap/fe/core/converters/TemplateConverter", "sap/fe/core/converters/MetaModelConverter"], function (TemplateConverter, MetaModelConverter) {
127
- resolve(_this.createView(oResourceModel, sStableId, sCacheKey, sPageModelCacheKey, oPageModelCache, TemplateConverter, MetaModelConverter));
128
- });
88
+ return sTimestamp;
89
+ }).catch(function () {
90
+ return "<NOVALUE>";
91
+ }));
92
+ var sPageModelCacheKey;
93
+ this.initPromise = Promise.all(aServiceDependencies).then(function (aDependenciesResult) {
94
+ var sCacheKey = aDependenciesResult[1];
95
+ var sVersionInfo = aDependenciesResult[2];
96
+ var oShellServices = oAppComponent.getShellServices();
97
+ var oSideEffectsServices = oAppComponent.getSideEffectsService();
98
+ oSideEffectsServices.initializeSideEffects(oAppComponent.getEnvironmentCapabilities().getCapabilities()); // In case there is no cache key we ignore the view cache
99
+
100
+ sPageModelCacheKey = sCacheKey ? sCacheKey + "-" + sVersionInfo + "-" + sStableId + "-" + oShellServices.instanceType + "-pageModel" : undefined;
101
+ return Promise.all(aDependenciesResult.concat([_this._getCachedModel(sPageModelCacheKey)]));
102
+ }).then(function (aDependenciesResult) {
103
+ var oResourceModel = aDependenciesResult[0];
104
+ var sCacheKey = aDependenciesResult[1];
105
+ var oPageModelCache = aDependenciesResult[3];
106
+ return new Promise(function (resolve) {
107
+ sap.ui.require(["sap/fe/core/converters/TemplateConverter", "sap/fe/core/converters/MetaModelConverter"], function (TemplateConverter, MetaModelConverter) {
108
+ resolve(_this.createView(oResourceModel, sStableId, sCacheKey, sPageModelCacheKey, oPageModelCache, TemplateConverter, MetaModelConverter));
129
109
  });
130
- }).then(function (sCacheKey) {
131
- var oCacheHandlerService = ServiceFactoryRegistry.get("sap.fe.core.services.CacheHandlerService").getInstance(oMetaModel);
132
- oCacheHandlerService.invalidateIfNeeded(sCacheKey, sCacheIdentifier);
133
110
  });
111
+ }).then(function (sCacheKey) {
112
+ var oCacheHandlerService = ServiceFactoryRegistry.get("sap.fe.core.services.CacheHandlerService").getInstance(oMetaModel);
113
+ oCacheHandlerService.invalidateIfNeeded(sCacheKey, sCacheIdentifier);
114
+ });
115
+ };
116
+
117
+ _proto._getCachedModel = function _getCachedModel(sCacheKey) {
118
+ if (sCacheKey && sap.ui.getCore().getConfiguration().getViewCache()) {
119
+ return CacheManager.get(sCacheKey);
134
120
  }
135
- }, {
136
- key: "_getCachedModel",
137
- value: function _getCachedModel(sCacheKey) {
138
- if (sap.ui.getCore().getConfiguration().getViewCache()) {
139
- return CacheManager.get(sCacheKey);
140
- }
141
121
 
142
- return undefined;
143
- }
144
- }, {
145
- key: "_setCachedModel",
146
- value: function _setCachedModel(sCacheKey, oCacheModel) {
147
- if (sap.ui.getCore().getConfiguration().getViewCache()) {
148
- CacheManager.set(sCacheKey, oCacheModel);
149
- }
122
+ return undefined;
123
+ };
150
124
 
151
- return undefined;
125
+ _proto._setCachedModel = function _setCachedModel(sCacheKey, oCacheModel) {
126
+ if (sCacheKey && sap.ui.getCore().getConfiguration().getViewCache()) {
127
+ CacheManager.set(sCacheKey, oCacheModel);
152
128
  }
153
- /**
154
- * Refresh the current view using the same configuration as before.
155
- * This is useful for our demokit !
156
- *
157
- * @param oComponent
158
- * @returns {Promise<void>}
159
- * @private
160
- */
161
-
162
- }, {
163
- key: "refreshView",
164
- value: function refreshView(oComponent) {
165
- var oRootView = oComponent.getRootControl();
166
-
167
- if (oRootView) {
168
- oRootView.destroy();
169
- } else if (this.oView) {
170
- this.oView.destroy();
171
- }
172
129
 
173
- return this.createView(this.resourceModel, this.stableId, "", "", undefined, this.TemplateConverter, this.MetaModelConverter).then(function () {
174
- oComponent.oContainer.invalidate();
175
- }).catch(function (oError) {
176
- oComponent.oContainer.invalidate();
177
- Log.error(oError);
178
- });
130
+ return undefined;
131
+ }
132
+ /**
133
+ * Refresh the current view using the same configuration as before.
134
+ * This is useful for our demokit !
135
+ *
136
+ * @param oComponent
137
+ * @returns {Promise<void>}
138
+ * @private
139
+ */
140
+ ;
141
+
142
+ _proto.refreshView = function refreshView(oComponent) {
143
+ var oRootView = oComponent.getRootControl();
144
+
145
+ if (oRootView) {
146
+ oRootView.destroy();
147
+ } else if (this.oView) {
148
+ this.oView.destroy();
179
149
  }
180
- }, {
181
- key: "createView",
182
- value: function createView(oResourceModel, sStableId, sCacheKey, sPageModelCacheKey, oPageModelCache, TemplateConverter, MetaModelConverter) {
183
- var _this2 = this;
184
-
185
- this.resourceModel = oResourceModel;
186
- this.stableId = sStableId;
187
- this.TemplateConverter = TemplateConverter;
188
- this.MetaModelConverter = MetaModelConverter;
189
- var oContext = this.getContext();
190
- var mServiceSettings = oContext.settings;
191
- var sConverterType = mServiceSettings.converterType;
192
- var oComponent = oContext.scopeObject;
193
- var oAppComponent = Component.getOwnerComponentFor(oComponent);
194
- var sFullContextPath = oAppComponent.getRoutingService().getTargetInformationFor(oComponent).options.settings.fullContextPath;
195
- var oMetaModel = oAppComponent.getMetaModel();
196
- var oManifestContent = oAppComponent.getManifest();
197
- var oDeviceModel = new JSONModel(sap.ui.Device).setDefaultBindingMode("OneWay");
198
- var oManifestModel = new JSONModel(oManifestContent);
199
- var bError = false;
200
- var oPageModel, oViewDataModel, oViewSettings, mViewData;
201
-
202
- function getViewSettings() {
203
- var aSplitPath = sFullContextPath.split("/");
204
- var sEntitySetPath = aSplitPath.reduce(function (sPathSoFar, sNextPathPart) {
205
- if (sNextPathPart === "") {
206
- return sPathSoFar;
207
- }
208
150
 
209
- if (sPathSoFar === "") {
210
- sPathSoFar = "/" + sNextPathPart;
211
- } else {
212
- var oTarget = oMetaModel.getObject(sPathSoFar + "/$NavigationPropertyBinding/" + sNextPathPart);
151
+ return this.createView(this.resourceModel, this.stableId, "", "", undefined, this.TemplateConverter, this.MetaModelConverter).then(function () {
152
+ oComponent.oContainer.invalidate();
153
+ }).catch(function (oError) {
154
+ oComponent.oContainer.invalidate();
155
+ Log.error(oError);
156
+ });
157
+ };
158
+
159
+ _proto.createView = function createView(oResourceModel, sStableId, sCacheKey, sPageModelCacheKey, oPageModelCache, TemplateConverter, MetaModelConverter) {
160
+ var _this2 = this;
161
+
162
+ this.resourceModel = oResourceModel;
163
+ this.stableId = sStableId;
164
+ this.TemplateConverter = TemplateConverter;
165
+ this.MetaModelConverter = MetaModelConverter;
166
+ var oContext = this.getContext();
167
+ var mServiceSettings = oContext.settings;
168
+ var sConverterType = mServiceSettings.converterType;
169
+ var oComponent = oContext.scopeObject;
170
+ var oAppComponent = Component.getOwnerComponentFor(oComponent);
171
+ var sFullContextPath = oAppComponent.getRoutingService().getTargetInformationFor(oComponent).options.settings.fullContextPath;
172
+ var oMetaModel = oAppComponent.getMetaModel();
173
+ var oManifestContent = oAppComponent.getManifest();
174
+ var oDeviceModel = new JSONModel(sap.ui.Device).setDefaultBindingMode("OneWay");
175
+ var oManifestModel = new JSONModel(oManifestContent);
176
+ var bError = false;
177
+ var oPageModel, oViewDataModel, oViewSettings, mViewData;
178
+
179
+ function getViewSettings() {
180
+ var aSplitPath = sFullContextPath.split("/");
181
+ var sEntitySetPath = aSplitPath.reduce(function (sPathSoFar, sNextPathPart) {
182
+ if (sNextPathPart === "") {
183
+ return sPathSoFar;
184
+ }
213
185
 
214
- if (oTarget && Object.keys(oTarget).length > 0) {
215
- sPathSoFar += "/$NavigationPropertyBinding";
216
- }
186
+ if (sPathSoFar === "") {
187
+ sPathSoFar = "/" + sNextPathPart;
188
+ } else {
189
+ var oTarget = oMetaModel.getObject(sPathSoFar + "/$NavigationPropertyBinding/" + sNextPathPart);
217
190
 
218
- sPathSoFar += "/" + sNextPathPart;
191
+ if (oTarget && Object.keys(oTarget).length > 0) {
192
+ sPathSoFar += "/$NavigationPropertyBinding";
219
193
  }
220
194
 
221
- return sPathSoFar;
222
- }, "");
223
- var oViewSettings = {
224
- type: "XML",
225
- preprocessors: {
226
- xml: {
227
- bindingContexts: {
228
- entitySet: sEntitySetPath ? oMetaModel.createBindingContext(sEntitySetPath) : null,
229
- fullContextPath: sFullContextPath ? oMetaModel.createBindingContext(sFullContextPath) : null,
230
- contextPath: sFullContextPath ? oMetaModel.createBindingContext(sFullContextPath) : null,
231
- converterContext: oPageModel.createBindingContext("/", undefined, {
232
- noResolve: true
233
- }),
234
- viewData: mViewData ? oViewDataModel.createBindingContext("/") : null
235
- },
236
- models: {
237
- entitySet: oMetaModel,
238
- fullContextPath: oMetaModel,
239
- contextPath: oMetaModel,
240
- "sap.fe.i18n": oResourceModel,
241
- metaModel: oMetaModel,
242
- "device": oDeviceModel,
243
- // TODO: discuss names here
244
- manifest: oManifestModel,
245
- converterContext: oPageModel,
246
- viewData: oViewDataModel
247
- },
248
- appComponent: oAppComponent
249
- }
250
- },
251
- id: sStableId,
252
- viewName: mServiceSettings.viewName || oComponent.getViewName(),
253
- viewData: mViewData,
254
- cache: {
255
- keys: [sCacheKey]
256
- },
257
- models: {
258
- "sap.fe.i18n": oResourceModel
259
- },
260
- height: "100%"
261
- };
262
- return oViewSettings;
263
- }
195
+ sPathSoFar += "/" + sNextPathPart;
196
+ }
264
197
 
265
- var createErrorPage = function (reason) {
266
- // just replace the view name and add an additional model containing the reason, but
267
- // keep the other settings
268
- Log.error(reason.message, reason);
269
- oViewSettings.viewName = mServiceSettings.errorViewName || "sap.fe.core.services.view.TemplatingErrorPage";
270
- oViewSettings.preprocessors.xml.models["error"] = new JSONModel(reason);
271
- return oComponent.runAsOwner(function () {
272
- return View.create(oViewSettings).then(function (oView) {
273
- _this2.oView = oView;
198
+ return sPathSoFar;
199
+ }, "");
200
+ var oViewSettings = {
201
+ type: "XML",
202
+ preprocessors: {
203
+ xml: {
204
+ bindingContexts: {
205
+ entitySet: sEntitySetPath ? oMetaModel.createBindingContext(sEntitySetPath) : null,
206
+ fullContextPath: sFullContextPath ? oMetaModel.createBindingContext(sFullContextPath) : null,
207
+ contextPath: sFullContextPath ? oMetaModel.createBindingContext(sFullContextPath) : null,
208
+ converterContext: oPageModel.createBindingContext("/", undefined, {
209
+ noResolve: true
210
+ }),
211
+ viewData: mViewData ? oViewDataModel.createBindingContext("/") : null
212
+ },
213
+ models: {
214
+ entitySet: oMetaModel,
215
+ fullContextPath: oMetaModel,
216
+ contextPath: oMetaModel,
217
+ "sap.fe.i18n": oResourceModel,
218
+ metaModel: oMetaModel,
219
+ "device": oDeviceModel,
220
+ // TODO: discuss names here
221
+ manifest: oManifestModel,
222
+ converterContext: oPageModel,
223
+ viewData: oViewDataModel
224
+ },
225
+ appComponent: oAppComponent
226
+ }
227
+ },
228
+ id: sStableId,
229
+ viewName: mServiceSettings.viewName || oComponent.getViewName(),
230
+ viewData: mViewData,
231
+ cache: {
232
+ keys: [sCacheKey]
233
+ },
234
+ models: {
235
+ "sap.fe.i18n": oResourceModel
236
+ },
237
+ height: "100%"
238
+ };
239
+ return oViewSettings;
240
+ }
274
241
 
275
- _this2.oView.setModel(new ManagedObjectModel(_this2.oView), "$view");
242
+ var createErrorPage = function (reason) {
243
+ // just replace the view name and add an additional model containing the reason, but
244
+ // keep the other settings
245
+ Log.error(reason.message, reason);
246
+ oViewSettings.viewName = mServiceSettings.errorViewName || "sap.fe.core.services.view.TemplatingErrorPage";
247
+ oViewSettings.preprocessors.xml.models["error"] = new JSONModel(reason);
248
+ return oComponent.runAsOwner(function () {
249
+ return View.create(oViewSettings).then(function (oView) {
250
+ _this2.oView = oView;
276
251
 
277
- oComponent.setAggregation("rootControl", _this2.oView);
278
- return sCacheKey;
279
- });
252
+ _this2.oView.setModel(new ManagedObjectModel(_this2.oView), "$view");
253
+
254
+ oComponent.setAggregation("rootControl", _this2.oView);
255
+ return sCacheKey;
280
256
  });
257
+ });
258
+ };
259
+
260
+ return oAppComponent.getService("routingService").then(function (oRoutingService) {
261
+ // Retrieve the viewLevel for the component
262
+ var oTargetInfo = oRoutingService.getTargetInformationFor(oComponent);
263
+ var mOutbounds = oManifestContent["sap.app"] && oManifestContent["sap.app"].crossNavigation && oManifestContent["sap.app"].crossNavigation.outbounds;
264
+ var mNavigation = oComponent.getNavigation() || {};
265
+ Object.keys(mNavigation).forEach(function (navigationObjectKey) {
266
+ var navigationObject = mNavigation[navigationObjectKey];
267
+ var outboundConfig;
268
+
269
+ if (navigationObject.detail && navigationObject.detail.outbound && mOutbounds[navigationObject.detail.outbound]) {
270
+ outboundConfig = mOutbounds[navigationObject.detail.outbound];
271
+ navigationObject.detail.outboundDetail = {
272
+ semanticObject: outboundConfig.semanticObject,
273
+ action: outboundConfig.action,
274
+ parameters: outboundConfig.parameters
275
+ };
276
+ }
277
+
278
+ if (navigationObject.create && navigationObject.create.outbound && mOutbounds[navigationObject.create.outbound]) {
279
+ outboundConfig = mOutbounds[navigationObject.create.outbound];
280
+ navigationObject.create.outboundDetail = {
281
+ semanticObject: outboundConfig.semanticObject,
282
+ action: outboundConfig.action,
283
+ parameters: outboundConfig.parameters
284
+ };
285
+ }
286
+ });
287
+ mViewData = {
288
+ navigation: mNavigation,
289
+ viewLevel: oTargetInfo.viewLevel,
290
+ stableId: sStableId,
291
+ contentDensities: oManifestContent["sap.ui5"].contentDensities,
292
+ resourceBundle: oResourceModel.__bundle,
293
+ fullContextPath: sFullContextPath,
294
+ isDesktop: Device.system.desktop,
295
+ isPhone: Device.system.phone
281
296
  };
282
297
 
283
- return oAppComponent.getService("routingService").then(function (oRoutingService) {
284
- // Retrieve the viewLevel for the component
285
- var oTargetInfo = oRoutingService.getTargetInformationFor(oComponent);
286
- var mOutbounds = oManifestContent["sap.app"] && oManifestContent["sap.app"].crossNavigation && oManifestContent["sap.app"].crossNavigation.outbounds;
287
- var mNavigation = oComponent.getNavigation() || {};
288
- Object.keys(mNavigation).forEach(function (navigationObjectKey) {
289
- var navigationObject = mNavigation[navigationObjectKey];
290
- var outboundConfig;
291
-
292
- if (navigationObject.detail && navigationObject.detail.outbound && mOutbounds[navigationObject.detail.outbound]) {
293
- outboundConfig = mOutbounds[navigationObject.detail.outbound];
294
- navigationObject.detail.outboundDetail = {
295
- semanticObject: outboundConfig.semanticObject,
296
- action: outboundConfig.action,
297
- parameters: outboundConfig.parameters
298
- };
299
- }
298
+ if (oComponent.getViewData) {
299
+ Object.assign(mViewData, oComponent.getViewData());
300
+ }
300
301
 
301
- if (navigationObject.create && navigationObject.create.outbound && mOutbounds[navigationObject.create.outbound]) {
302
- outboundConfig = mOutbounds[navigationObject.create.outbound];
303
- navigationObject.create.outboundDetail = {
304
- semanticObject: outboundConfig.semanticObject,
305
- action: outboundConfig.action,
306
- parameters: outboundConfig.parameters
307
- };
302
+ var oShellServices = oAppComponent.getShellServices();
303
+ mViewData.converterType = sConverterType;
304
+ mViewData.shellContentDensity = oShellServices.getContentDensity();
305
+ mViewData.useNewLazyLoading = UriParameters.fromQuery(window.location.search).get("sap-fe-xx-lazyloadingtest") === "true";
306
+ mViewData.retrieveTextFromValueList = oManifestContent["sap.fe"] && oManifestContent["sap.fe"].form ? oManifestContent["sap.fe"].form.retrieveTextFromValueList : undefined;
307
+ oViewDataModel = new JSONModel(mViewData);
308
+
309
+ if (mViewData && mViewData.controlConfiguration) {
310
+ Object.keys(mViewData.controlConfiguration).forEach(function (sAnnotationPath) {
311
+ if (sAnnotationPath.indexOf("[") !== -1) {
312
+ var sTargetAnnotationPath = resolveDynamicExpression(sAnnotationPath, oMetaModel);
313
+ mViewData.controlConfiguration[sTargetAnnotationPath] = mViewData.controlConfiguration[sAnnotationPath];
308
314
  }
309
315
  });
310
- mViewData = {
311
- navigation: mNavigation,
312
- viewLevel: oTargetInfo.viewLevel,
313
- stableId: sStableId,
314
- contentDensities: oManifestContent["sap.ui5"].contentDensities,
315
- resourceBundle: oResourceModel.__bundle,
316
- fullContextPath: sFullContextPath,
317
- isDesktop: Device.system.desktop,
318
- isPhone: Device.system.phone
319
- };
320
-
321
- if (oComponent.getViewData) {
322
- Object.assign(mViewData, oComponent.getViewData());
323
- }
316
+ }
324
317
 
325
- var oShellServices = oAppComponent.getShellServices();
326
- mViewData.converterType = sConverterType;
327
- mViewData.shellContentDensity = oShellServices.getContentDensity();
328
- mViewData.useNewLazyLoading = UriParameters.fromQuery(window.location.search).get("sap-fe-xx-lazyloadingtest") === "true";
329
- mViewData.retrieveTextFromValueList = oManifestContent["sap.fe"] && oManifestContent["sap.fe"].form ? oManifestContent["sap.fe"].form.retrieveTextFromValueList : undefined;
330
- oViewDataModel = new JSONModel(mViewData);
331
-
332
- if (mViewData && mViewData.controlConfiguration) {
333
- Object.keys(mViewData.controlConfiguration).forEach(function (sAnnotationPath) {
334
- if (sAnnotationPath.indexOf("[") !== -1) {
335
- var sTargetAnnotationPath = DynamicAnnotationPathHelper.resolveDynamicExpression(sAnnotationPath, oMetaModel);
336
- mViewData.controlConfiguration[sTargetAnnotationPath] = mViewData.controlConfiguration[sAnnotationPath];
318
+ MetaModelConverter.convertTypes(oMetaModel, oAppComponent.getEnvironmentCapabilities().getCapabilities());
319
+ oPageModel = new TemplateModel(function () {
320
+ try {
321
+ if (!!oPageModelCache) {
322
+ return oPageModelCache;
323
+ } else {
324
+ var oDiagnostics = oAppComponent.getDiagnostics();
325
+ var iIssueCount = oDiagnostics.getIssues().length;
326
+ var oConverterPageModel = TemplateConverter.convertPage(sConverterType, oMetaModel, mViewData, oDiagnostics, sFullContextPath, oAppComponent.getEnvironmentCapabilities().getCapabilities());
327
+ var aIssues = oDiagnostics.getIssues();
328
+ var aAddedIssues = aIssues.slice(iIssueCount);
329
+
330
+ if (aAddedIssues.length > 0) {
331
+ Log.warning("Some issues have been detected in your project, please check the UI5 support assistant rule for sap.fe.core");
337
332
  }
338
- });
339
- }
340
-
341
- MetaModelConverter.convertTypes(oMetaModel, oAppComponent.getEnvironmentCapabilities().getCapabilities());
342
- oPageModel = new TemplateModel(function () {
343
- try {
344
- if (!!oPageModelCache) {
345
- return oPageModelCache;
346
- } else {
347
- var oDiagnostics = oAppComponent.getDiagnostics();
348
- var iIssueCount = oDiagnostics.getIssues().length;
349
- var oConverterPageModel = TemplateConverter.convertPage(sConverterType, oMetaModel, mViewData, oDiagnostics, sFullContextPath, oAppComponent.getEnvironmentCapabilities().getCapabilities());
350
- var aIssues = oDiagnostics.getIssues();
351
- var aAddedIssues = aIssues.slice(iIssueCount);
352
-
353
- if (aAddedIssues.length > 0) {
354
- Log.warning("Some issues have been detected in your project, please check the UI5 support assistant rule for sap.fe.core");
355
- } // Fire and forget in the cache
356
333
 
334
+ return oConverterPageModel;
335
+ }
336
+ } catch (error) {
337
+ Log.error(error, error);
338
+ return {};
339
+ }
340
+ }, oMetaModel);
357
341
 
358
- _this2._setCachedModel(sPageModelCacheKey, oConverterPageModel);
342
+ if (!bError) {
343
+ oViewSettings = getViewSettings(); // Setting the pageModel on the component for potential reuse
359
344
 
360
- return oConverterPageModel;
361
- }
362
- } catch (error) {
363
- Log.error(error, error);
364
- return {};
365
- }
366
- }, oMetaModel);
345
+ oComponent.setModel(oPageModel, "_pageModel");
346
+ return oComponent.runAsOwner(function () {
347
+ return View.create(oViewSettings).catch(createErrorPage).then(function (oView) {
348
+ _this2.oView = oView;
367
349
 
368
- if (!bError) {
369
- oViewSettings = getViewSettings(); // Setting the pageModel on the component for potential reuse
350
+ _this2.oView.setModel(new ManagedObjectModel(_this2.oView), "$view");
370
351
 
371
- oComponent.setModel(oPageModel, "_pageModel");
372
- return oComponent.runAsOwner(function () {
373
- return View.create(oViewSettings).catch(createErrorPage).then(function (oView) {
374
- _this2.oView = oView;
352
+ _this2.oView.setModel(oViewDataModel, "viewData");
375
353
 
376
- _this2.oView.setModel(new ManagedObjectModel(_this2.oView), "$view");
354
+ oComponent.setAggregation("rootControl", _this2.oView); // Fire and forget in the cache
377
355
 
378
- _this2.oView.setModel(oViewDataModel, "viewData");
356
+ if (!oPageModelCache) {
357
+ _this2._setCachedModel(sPageModelCacheKey, oPageModel.getData());
358
+ }
379
359
 
380
- oComponent.setAggregation("rootControl", _this2.oView);
381
- return sCacheKey;
382
- }).catch(Log.error);
360
+ return sCacheKey;
361
+ }).catch(function (e) {
362
+ return Log.error(e.message, e);
383
363
  });
384
- }
385
- }).catch(function (error) {
386
- Log.error(error.message, error);
387
- throw new Error("Error while creating view : " + error);
388
- });
389
- }
390
- }, {
391
- key: "getView",
392
- value: function getView() {
393
- return this.oView;
394
- }
395
- }, {
396
- key: "getInterface",
397
- value: function getInterface() {
398
- return this;
399
- }
400
- }, {
401
- key: "exit",
402
- value: function exit() {
403
- // Deregister global instance
404
- this.oResourceModelService && this.oResourceModelService.destroy();
405
- this.oCacheHandlerService && this.oCacheHandlerService.destroy();
406
- this.oFactory.removeGlobalInstance();
407
- }
408
- }]);
364
+ });
365
+ }
366
+ }).catch(function (error) {
367
+ Log.error(error.message, error);
368
+ throw new Error("Error while creating view : " + error);
369
+ });
370
+ };
371
+
372
+ _proto.getView = function getView() {
373
+ return this.oView;
374
+ };
375
+
376
+ _proto.getInterface = function getInterface() {
377
+ return this;
378
+ };
379
+
380
+ _proto.exit = function exit() {
381
+ // Deregister global instance
382
+ this.oResourceModelService && this.oResourceModelService.destroy();
383
+ this.oCacheHandlerService && this.oCacheHandlerService.destroy();
384
+ this.oFactory.removeGlobalInstance();
385
+ };
409
386
 
410
387
  return TemplatedViewService;
411
388
  }(Service);
@@ -413,51 +390,42 @@ sap.ui.define(["sap/ui/core/service/Service", "sap/ui/core/service/ServiceFactor
413
390
  var TemplatedViewServiceFactory = /*#__PURE__*/function (_ServiceFactory) {
414
391
  _inherits(TemplatedViewServiceFactory, _ServiceFactory);
415
392
 
416
- var _super2 = _createSuper(TemplatedViewServiceFactory);
417
-
418
393
  function TemplatedViewServiceFactory() {
419
394
  var _this3;
420
395
 
421
- _classCallCheck(this, TemplatedViewServiceFactory);
422
-
423
396
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
424
397
  args[_key] = arguments[_key];
425
398
  }
426
399
 
427
- _this3 = _super2.call.apply(_super2, [this].concat(args));
428
-
429
- _defineProperty(_assertThisInitialized(_this3), "_oInstanceRegistry", {});
430
-
400
+ _this3 = _ServiceFactory.call.apply(_ServiceFactory, [this].concat(args)) || this;
401
+ _this3._oInstanceRegistry = {};
431
402
  return _this3;
432
403
  }
433
404
 
434
- _createClass(TemplatedViewServiceFactory, [{
435
- key: "createInstance",
436
- value: function createInstance(oServiceContext) {
437
- TemplatedViewServiceFactory.iCreatingViews++;
438
- var oTemplatedViewService = new TemplatedViewService(Object.assign({
439
- factory: this
440
- }, oServiceContext));
441
- return oTemplatedViewService.initPromise.then(function () {
442
- TemplatedViewServiceFactory.iCreatingViews--;
443
- return oTemplatedViewService;
444
- });
445
- }
446
- }, {
447
- key: "removeGlobalInstance",
448
- value: function removeGlobalInstance() {
449
- this._oInstanceRegistry = {};
450
- }
451
- }], [{
452
- key: "getNumberOfViewsInCreationState",
453
- value: function getNumberOfViewsInCreationState() {
454
- return TemplatedViewServiceFactory.iCreatingViews;
455
- }
456
- }]);
405
+ var _proto2 = TemplatedViewServiceFactory.prototype;
406
+
407
+ _proto2.createInstance = function createInstance(oServiceContext) {
408
+ TemplatedViewServiceFactory.iCreatingViews++;
409
+ var oTemplatedViewService = new TemplatedViewService(Object.assign({
410
+ factory: this
411
+ }, oServiceContext));
412
+ return oTemplatedViewService.initPromise.then(function () {
413
+ TemplatedViewServiceFactory.iCreatingViews--;
414
+ return oTemplatedViewService;
415
+ });
416
+ };
417
+
418
+ _proto2.removeGlobalInstance = function removeGlobalInstance() {
419
+ this._oInstanceRegistry = {};
420
+ };
421
+
422
+ TemplatedViewServiceFactory.getNumberOfViewsInCreationState = function getNumberOfViewsInCreationState() {
423
+ return TemplatedViewServiceFactory.iCreatingViews;
424
+ };
457
425
 
458
426
  return TemplatedViewServiceFactory;
459
427
  }(ServiceFactory);
460
428
 
461
429
  return TemplatedViewServiceFactory;
462
430
  }, false);
463
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeS50cyJdLCJuYW1lcyI6WyJUZW1wbGF0ZWRWaWV3U2VydmljZSIsImFTZXJ2aWNlRGVwZW5kZW5jaWVzIiwib0NvbnRleHQiLCJnZXRDb250ZXh0Iiwib0NvbXBvbmVudCIsInNjb3BlT2JqZWN0Iiwib0FwcENvbXBvbmVudCIsIkNvbXBvbmVudCIsImdldE93bmVyQ29tcG9uZW50Rm9yIiwib01ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsInNTdGFibGVJZCIsImdldE1ldGFkYXRhIiwiZ2V0Q29tcG9uZW50TmFtZSIsImdldExvY2FsSWQiLCJnZXRJZCIsImFFbmhhbmNlSTE4biIsImdldEVuaGFuY2VJMThuIiwic0FwcE5hbWVzcGFjZSIsIm9GYWN0b3J5IiwiZmFjdG9yeSIsImkiLCJsZW5ndGgiLCJvUmVzb3VyY2VNb2RlbCIsImdldE1vZGVsIiwiaXNBIiwicmVwbGFjZSIsInNDYWNoZUlkZW50aWZpZXIiLCJnZXROYW1lIiwic2FwIiwidWkiLCJnZXRDb3JlIiwiZ2V0Q29uZmlndXJhdGlvbiIsImdldExhbmd1YWdlVGFnIiwicHVzaCIsIlNlcnZpY2VGYWN0b3J5UmVnaXN0cnkiLCJnZXQiLCJjcmVhdGVJbnN0YW5jZSIsInNjb3BlVHlwZSIsInNldHRpbmdzIiwiYnVuZGxlcyIsImVuaGFuY2VJMThuIiwibW9kZWxOYW1lIiwidGhlbiIsIm9SZXNvdXJjZU1vZGVsU2VydmljZSIsImdldFJlc291cmNlTW9kZWwiLCJtZXRhTW9kZWwiLCJhcHBDb21wb25lbnQiLCJjb21wb25lbnQiLCJvQ2FjaGVIYW5kbGVyU2VydmljZSIsInZhbGlkYXRlQ2FjaGVLZXkiLCJWZXJzaW9uSW5mbyIsImxvYWQiLCJvSW5mbyIsInNUaW1lc3RhbXAiLCJsaWJyYXJpZXMiLCJidWlsZGluZm8iLCJidWlsZHRpbWUiLCJmb3JFYWNoIiwib0xpYnJhcnkiLCJidWlsZFRpbWVzdGFtcCIsImNhdGNoIiwic1BhZ2VNb2RlbENhY2hlS2V5IiwiaW5pdFByb21pc2UiLCJQcm9taXNlIiwiYWxsIiwiYURlcGVuZGVuY2llc1Jlc3VsdCIsInNDYWNoZUtleSIsInNWZXJzaW9uSW5mbyIsIm9TaGVsbFNlcnZpY2VzIiwiZ2V0U2hlbGxTZXJ2aWNlcyIsIm9TaWRlRWZmZWN0c1NlcnZpY2VzIiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwiaW5pdGlhbGl6ZVNpZGVFZmZlY3RzIiwiZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJnZXRDYXBhYmlsaXRpZXMiLCJpbnN0YW5jZVR5cGUiLCJjb25jYXQiLCJfZ2V0Q2FjaGVkTW9kZWwiLCJvUGFnZU1vZGVsQ2FjaGUiLCJyZXNvbHZlIiwicmVxdWlyZSIsIlRlbXBsYXRlQ29udmVydGVyIiwiTWV0YU1vZGVsQ29udmVydGVyIiwiY3JlYXRlVmlldyIsImdldEluc3RhbmNlIiwiaW52YWxpZGF0ZUlmTmVlZGVkIiwiZ2V0Vmlld0NhY2hlIiwiQ2FjaGVNYW5hZ2VyIiwidW5kZWZpbmVkIiwib0NhY2hlTW9kZWwiLCJzZXQiLCJvUm9vdFZpZXciLCJnZXRSb290Q29udHJvbCIsImRlc3Ryb3kiLCJvVmlldyIsInJlc291cmNlTW9kZWwiLCJzdGFibGVJZCIsIm9Db250YWluZXIiLCJpbnZhbGlkYXRlIiwib0Vycm9yIiwiTG9nIiwiZXJyb3IiLCJtU2VydmljZVNldHRpbmdzIiwic0NvbnZlcnRlclR5cGUiLCJjb252ZXJ0ZXJUeXBlIiwic0Z1bGxDb250ZXh0UGF0aCIsImdldFJvdXRpbmdTZXJ2aWNlIiwiZ2V0VGFyZ2V0SW5mb3JtYXRpb25Gb3IiLCJvcHRpb25zIiwiZnVsbENvbnRleHRQYXRoIiwib01hbmlmZXN0Q29udGVudCIsImdldE1hbmlmZXN0Iiwib0RldmljZU1vZGVsIiwiSlNPTk1vZGVsIiwiRGV2aWNlIiwic2V0RGVmYXVsdEJpbmRpbmdNb2RlIiwib01hbmlmZXN0TW9kZWwiLCJiRXJyb3IiLCJvUGFnZU1vZGVsIiwib1ZpZXdEYXRhTW9kZWwiLCJvVmlld1NldHRpbmdzIiwibVZpZXdEYXRhIiwiZ2V0Vmlld1NldHRpbmdzIiwiYVNwbGl0UGF0aCIsInNwbGl0Iiwic0VudGl0eVNldFBhdGgiLCJyZWR1Y2UiLCJzUGF0aFNvRmFyIiwic05leHRQYXRoUGFydCIsIm9UYXJnZXQiLCJnZXRPYmplY3QiLCJPYmplY3QiLCJrZXlzIiwidHlwZSIsInByZXByb2Nlc3NvcnMiLCJ4bWwiLCJiaW5kaW5nQ29udGV4dHMiLCJlbnRpdHlTZXQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImNvbnRleHRQYXRoIiwiY29udmVydGVyQ29udGV4dCIsIm5vUmVzb2x2ZSIsInZpZXdEYXRhIiwibW9kZWxzIiwibWFuaWZlc3QiLCJpZCIsInZpZXdOYW1lIiwiZ2V0Vmlld05hbWUiLCJjYWNoZSIsImhlaWdodCIsImNyZWF0ZUVycm9yUGFnZSIsInJlYXNvbiIsIm1lc3NhZ2UiLCJlcnJvclZpZXdOYW1lIiwicnVuQXNPd25lciIsIlZpZXciLCJjcmVhdGUiLCJzZXRNb2RlbCIsIk1hbmFnZWRPYmplY3RNb2RlbCIsInNldEFnZ3JlZ2F0aW9uIiwiZ2V0U2VydmljZSIsIm9Sb3V0aW5nU2VydmljZSIsIm9UYXJnZXRJbmZvIiwibU91dGJvdW5kcyIsImNyb3NzTmF2aWdhdGlvbiIsIm91dGJvdW5kcyIsIm1OYXZpZ2F0aW9uIiwiZ2V0TmF2aWdhdGlvbiIsIm5hdmlnYXRpb25PYmplY3RLZXkiLCJuYXZpZ2F0aW9uT2JqZWN0Iiwib3V0Ym91bmRDb25maWciLCJkZXRhaWwiLCJvdXRib3VuZCIsIm91dGJvdW5kRGV0YWlsIiwic2VtYW50aWNPYmplY3QiLCJhY3Rpb24iLCJwYXJhbWV0ZXJzIiwibmF2aWdhdGlvbiIsInZpZXdMZXZlbCIsImNvbnRlbnREZW5zaXRpZXMiLCJyZXNvdXJjZUJ1bmRsZSIsIl9fYnVuZGxlIiwiaXNEZXNrdG9wIiwic3lzdGVtIiwiZGVza3RvcCIsImlzUGhvbmUiLCJwaG9uZSIsImdldFZpZXdEYXRhIiwiYXNzaWduIiwic2hlbGxDb250ZW50RGVuc2l0eSIsImdldENvbnRlbnREZW5zaXR5IiwidXNlTmV3TGF6eUxvYWRpbmciLCJVcmlQYXJhbWV0ZXJzIiwiZnJvbVF1ZXJ5Iiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJyZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0IiwiZm9ybSIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwic0Fubm90YXRpb25QYXRoIiwiaW5kZXhPZiIsInNUYXJnZXRBbm5vdGF0aW9uUGF0aCIsIkR5bmFtaWNBbm5vdGF0aW9uUGF0aEhlbHBlciIsInJlc29sdmVEeW5hbWljRXhwcmVzc2lvbiIsImNvbnZlcnRUeXBlcyIsIlRlbXBsYXRlTW9kZWwiLCJvRGlhZ25vc3RpY3MiLCJnZXREaWFnbm9zdGljcyIsImlJc3N1ZUNvdW50IiwiZ2V0SXNzdWVzIiwib0NvbnZlcnRlclBhZ2VNb2RlbCIsImNvbnZlcnRQYWdlIiwiYUlzc3VlcyIsImFBZGRlZElzc3VlcyIsInNsaWNlIiwid2FybmluZyIsIl9zZXRDYWNoZWRNb2RlbCIsIkVycm9yIiwicmVtb3ZlR2xvYmFsSW5zdGFuY2UiLCJTZXJ2aWNlIiwiVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5Iiwib1NlcnZpY2VDb250ZXh0IiwiaUNyZWF0aW5nVmlld3MiLCJvVGVtcGxhdGVkVmlld1NlcnZpY2UiLCJfb0luc3RhbmNlUmVnaXN0cnkiLCJTZXJ2aWNlRmFjdG9yeSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFxQk1BLG9COzs7Ozs7Ozs7Ozs7O2FBVUwsZ0JBQU87QUFBQTs7QUFDTixZQUFNQyxvQkFBb0IsR0FBRyxFQUE3QjtBQUNBLFlBQU1DLFFBQVEsR0FBRyxLQUFLQyxVQUFMLEVBQWpCO0FBQ0EsWUFBTUMsVUFBVSxHQUFHRixRQUFRLENBQUNHLFdBQTVCO0FBQ0EsWUFBTUMsYUFBYSxHQUFHQyxTQUFTLENBQUNDLG9CQUFWLENBQStCSixVQUEvQixDQUF0QjtBQUNBLFlBQU1LLFVBQVUsR0FB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c0QsRTs7Ozs7OzthQUUzRCx3QkFBZUMsZUFBZixFQUE4RTtBQUM3RUQsUUFBQUEsMkJBQTJCLENBQUNFLGNBQTVCO0FBRUEsWUFBTUMscUJBQXFCLEdBQUcsSUFBSWpPLG9CQUFKLENBQXlCb0ksTUFBTSxDQUFDeUQsTUFBUCxDQUFjO0FBQUV6SyxVQUFBQSxPQUFPLEVBQUU7QUFBWCxTQUFkLEVBQWlDMk0sZUFBakMsQ0FBekIsQ0FBOUI7QUFDQSxlQUFPRSxxQkFBcUIsQ0FBQ2xLLFdBQXRCLENBQWtDcEIsSUFBbEMsQ0FBdUMsWUFBVztBQUN4RG1MLFVBQUFBLDJCQUEyQixDQUFDRSxjQUE1QjtBQUNBLGlCQUFPQyxxQkFBUDtBQUNBLFNBSE0sQ0FBUDtBQUlBOzs7YUFDRCxnQ0FBdUI7QUFDdEIsYUFBS0Msa0JBQUwsR0FBMEIsRUFBMUI7QUFDQTs7O2FBQ0QsMkNBQXlDO0FBQ3hDLGVBQU9KLDJCQUEyQixDQUFDRSxjQUFuQztBQUNBOzs7O0lBakJ3Q0csYzs7U0FvQjNCTCwyQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNlcnZpY2UgZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2UvU2VydmljZVwiO1xuaW1wb3J0IFNlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgU2VydmljZUZhY3RvcnlSZWdpc3RyeSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZS9TZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5XCI7XG5pbXBvcnQgTWFuYWdlZE9iamVjdE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvYmFzZS9NYW5hZ2VkT2JqZWN0TW9kZWxcIjtcbmltcG9ydCBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IFRlbXBsYXRlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlTW9kZWxcIjtcbmltcG9ydCBEeW5hbWljQW5ub3RhdGlvblBhdGhIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvRHluYW1pY0Fubm90YXRpb25QYXRoSGVscGVyXCI7XG5pbXBvcnQgQ2FjaGVNYW5hZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9jYWNoZS9DYWNoZU1hbmFnZXJcIjtcbmltcG9ydCBWZXJzaW9uSW5mbyBmcm9tIFwic2FwL3VpL1ZlcnNpb25JbmZvXCI7XG5pbXBvcnQgRGV2aWNlIGZyb20gXCJzYXAvdWkvRGV2aWNlXCI7XG5pbXBvcnQgVXJpUGFyYW1ldGVycyBmcm9tIFwic2FwL2Jhc2UvdXRpbC9VcmlQYXJhbWV0ZXJzXCI7XG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlXCI7XG5pbXBvcnQgeyBSZXNvdXJjZU1vZGVsU2VydmljZSB9IGZyb20gXCIuL1Jlc291cmNlTW9kZWxTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHsgQXBwQ29tcG9uZW50IH0gZnJvbSBcInNhcC9mZS9jb3JlXCI7XG5pbXBvcnQgeyBDYWNoZUhhbmRsZXJTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0NhY2hlSGFuZGxlclNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgeyBSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9tYWNyb3NcIjtcbmltcG9ydCBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5cbnR5cGUgVGVtcGxhdGVkVmlld1NlcnZpY2VTZXR0aW5ncyA9IHt9O1xuXG5jbGFzcyBUZW1wbGF0ZWRWaWV3U2VydmljZSBleHRlbmRzIFNlcnZpY2U8VGVtcGxhdGVkVmlld1NlcnZpY2VTZXR0aW5ncz4ge1xuXHRpbml0UHJvbWlzZSE6IFByb21pc2U8YW55Pjtcblx0b1ZpZXchOiBWaWV3O1xuXHRvUmVzb3VyY2VNb2RlbFNlcnZpY2UhOiBSZXNvdXJjZU1vZGVsU2VydmljZTtcblx0b0NhY2hlSGFuZGxlclNlcnZpY2UhOiBDYWNoZUhhbmRsZXJTZXJ2aWNlO1xuXHRvRmFjdG9yeSE6IFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeTtcblx0cmVzb3VyY2VNb2RlbCE6IFJlc291cmNlTW9kZWw7XG5cdHN0YWJsZUlkITogc3RyaW5nO1xuXHRUZW1wbGF0ZUNvbnZlcnRlcjogYW55O1xuXHRNZXRhTW9kZWxDb252ZXJ0ZXI6IGFueTtcblx0aW5pdCgpIHtcblx0XHRjb25zdCBhU2VydmljZURlcGVuZGVuY2llcyA9IFtdO1xuXHRcdGNvbnN0IG9Db250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudCA9IG9Db250ZXh0LnNjb3BlT2JqZWN0O1xuXHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3Iob0NvbXBvbmVudCkgYXMgQXBwQ29tcG9uZW50O1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvQXBwQ29tcG9uZW50LmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IHNTdGFibGVJZCA9IG9BcHBDb21wb25lbnQuZ2V0TWV0YWRhdGEoKS5nZXRDb21wb25lbnROYW1lKCkgKyBcIjo6XCIgKyBvQXBwQ29tcG9uZW50LmdldExvY2FsSWQob0NvbXBvbmVudC5nZXRJZCgpKTtcblx0XHRjb25zdCBhRW5oYW5jZUkxOG4gPSBvQ29tcG9uZW50LmdldEVuaGFuY2VJMThuKCkgfHwgW107XG5cdFx0bGV0IHNBcHBOYW1lc3BhY2U7XG5cdFx0dGhpcy5vRmFjdG9yeSA9IG9Db250ZXh0LmZhY3Rvcnk7XG5cdFx0aWYgKGFFbmhhbmNlSTE4bikge1xuXHRcdFx0c0FwcE5hbWVzcGFjZSA9IG9BcHBDb21wb25lbnQuZ2V0TWV0YWRhdGEoKS5nZXRDb21wb25lbnROYW1lKCk7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFFbmhhbmNlSTE4bi5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHQvLyBJbiBvcmRlciB0byBzdXBwb3J0IHRleHQtdmVydGljYWxpemF0aW9uIGFwcGxpY2F0aW9ucyBjYW4gYWxzbyBwYXNzcyBhIHJlc291cmNlIG1vZGVsIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0XG5cdFx0XHRcdC8vIFVJNSB0YWtlcyBjYXJlIG9mIHRleHQtdmVydGljYWxpemF0aW9uIGZvciByZXNvdXJjZSBtb2RlbHMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Rcblx0XHRcdFx0Ly8gSGVuY2UgY2hlY2sgaWYgdGhlIGdpdmVuIGtleSBpcyBhIHJlc291cmNlIG1vZGVsIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0XG5cdFx0XHRcdC8vIGlmIHNvIHRoaXMgbW9kZWwgc2hvdWxkIGJlIHVzZWQgdG8gZW5oYW5jZSB0aGUgc2FwLmZlIHJlc291cmNlIG1vZGVsIHNvIHBhc3MgaXQgYXMgaXQgaXNcblx0XHRcdFx0Y29uc3Qgb1Jlc291cmNlTW9kZWwgPSBvQXBwQ29tcG9uZW50LmdldE1vZGVsKGFFbmhhbmNlSTE4bltpXSk7XG5cdFx0XHRcdGlmIChvUmVzb3VyY2VNb2RlbCAmJiBvUmVzb3VyY2VNb2RlbC5pc0EoXCJzYXAudWkubW9kZWwucmVzb3VyY2UuUmVzb3VyY2VNb2RlbFwiKSkge1xuXHRcdFx0XHRcdGFFbmhhbmNlSTE4bltpXSA9IG9SZXNvdXJjZU1vZGVsO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGFFbmhhbmNlSTE4bltpXSA9IHNBcHBOYW1lc3BhY2UgKyBcIi5cIiArIGFFbmhhbmNlSTE4bltpXS5yZXBsYWNlKFwiLnByb3BlcnRpZXNcIiwgXCJcIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRjb25zdCBzQ2FjaGVJZGVudGlmaWVyID1cblx0XHRcdG9BcHBDb21wb25lbnQuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCkgK1xuXHRcdFx0XCJfXCIgK1xuXHRcdFx0c1N0YWJsZUlkICtcblx0XHRcdFwiX1wiICtcblx0XHRcdHNhcC51aVxuXHRcdFx0XHQuZ2V0Q29yZSgpXG5cdFx0XHRcdC5nZXRDb25maWd1cmF0aW9uKClcblx0XHRcdFx0LmdldExhbmd1YWdlVGFnKCk7XG5cdFx0YVNlcnZpY2VEZXBlbmRlbmNpZXMucHVzaChcblx0XHRcdFNlcnZpY2VGYWN0b3J5UmVnaXN0cnkuZ2V0KFwic2FwLmZlLmNvcmUuc2VydmljZXMuUmVzb3VyY2VNb2RlbFNlcnZpY2VcIilcblx0XHRcdFx0LmNyZWF0ZUluc3RhbmNlKHtcblx0XHRcdFx0XHRzY29wZVR5cGU6IFwiY29tcG9uZW50XCIsXG5cdFx0XHRcdFx0c2NvcGVPYmplY3Q6IG9Db21wb25lbnQsXG5cdFx0XHRcdFx0c2V0dGluZ3M6IHtcblx0XHRcdFx0XHRcdGJ1bmRsZXM6IFtcInNhcC5mZS5jb3JlLm1lc3NhZ2VidW5kbGVcIiwgXCJzYXAuZmUubWFjcm9zLm1lc3NhZ2VidW5kbGVcIiwgXCJzYXAuZmUudGVtcGxhdGVzLm1lc3NhZ2VidW5kbGVcIl0sXG5cdFx0XHRcdFx0XHRlbmhhbmNlSTE4bjogYUVuaGFuY2VJMThuLFxuXHRcdFx0XHRcdFx0bW9kZWxOYW1lOiBcInNhcC5mZS5pMThuXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKChvUmVzb3VyY2VNb2RlbFNlcnZpY2U6IFJlc291cmNlTW9kZWxTZXJ2aWNlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5vUmVzb3VyY2VNb2RlbFNlcnZpY2UgPSBvUmVzb3VyY2VNb2RlbFNlcnZpY2U7XG5cdFx0XHRcdFx0cmV0dXJuIG9SZXNvdXJjZU1vZGVsU2VydmljZS5nZXRSZXNvdXJjZU1vZGVsKCk7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdGFTZXJ2aWNlRGVwZW5kZW5jaWVzLnB1c2goXG5cdFx0XHRTZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5LmdldChcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNhY2hlSGFuZGxlclNlcnZpY2VcIilcblx0XHRcdFx0LmNyZWF0ZUluc3RhbmNlKHtcblx0XHRcdFx0XHRzZXR0aW5nczoge1xuXHRcdFx0XHRcdFx0bWV0YU1vZGVsOiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0YXBwQ29tcG9uZW50OiBvQXBwQ29tcG9uZW50LFxuXHRcdFx0XHRcdFx0Y29tcG9uZW50OiBvQ29tcG9uZW50XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQudGhlbigob0NhY2hlSGFuZGxlclNlcnZpY2U6IGFueSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMub0NhY2hlSGFuZGxlclNlcnZpY2UgPSBvQ2FjaGVIYW5kbGVyU2VydmljZTtcblx0XHRcdFx0XHRyZXR1cm4gb0NhY2hlSGFuZGxlclNlcnZpY2UudmFsaWRhdGVDYWNoZUtleShzQ2FjaGVJZGVudGlmaWVyKTtcblx0XHRcdFx0fSlcblx0XHQpO1xuXHRcdGFTZXJ2aWNlRGVwZW5kZW5jaWVzLnB1c2goXG5cdFx0XHQoVmVyc2lvbkluZm8gYXMgYW55KVxuXHRcdFx0XHQubG9hZCgpXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uKG9JbmZvOiBhbnkpIHtcblx0XHRcdFx0XHRsZXQgc1RpbWVzdGFtcCA9IFwiXCI7XG5cdFx0XHRcdFx0aWYgKCFvSW5mby5saWJyYXJpZXMpIHtcblx0XHRcdFx0XHRcdHNUaW1lc3RhbXAgPSAoc2FwLnVpIGFzIGFueSkuYnVpbGRpbmZvLmJ1aWxkdGltZTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0b0luZm8ubGlicmFyaWVzLmZvckVhY2goZnVuY3Rpb24ob0xpYnJhcnk6IGFueSkge1xuXHRcdFx0XHRcdFx0XHRzVGltZXN0YW1wICs9IG9MaWJyYXJ5LmJ1aWxkVGltZXN0YW1wO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBzVGltZXN0YW1wO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFwiPE5PVkFMVUU+XCI7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdGxldCBzUGFnZU1vZGVsQ2FjaGVLZXkgPSBcIlwiO1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSBQcm9taXNlLmFsbChhU2VydmljZURlcGVuZGVuY2llcylcblx0XHRcdC50aGVuKChhRGVwZW5kZW5jaWVzUmVzdWx0OiBhbnlbXSkgPT4ge1xuXHRcdFx0XHRjb25zdCBzQ2FjaGVLZXkgPSBhRGVwZW5kZW5jaWVzUmVzdWx0WzFdO1xuXHRcdFx0XHRjb25zdCBzVmVyc2lvbkluZm8gPSBhRGVwZW5kZW5jaWVzUmVzdWx0WzJdO1xuXHRcdFx0XHRjb25zdCBvU2hlbGxTZXJ2aWNlcyA9IG9BcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpO1xuXHRcdFx0XHRjb25zdCBvU2lkZUVmZmVjdHNTZXJ2aWNlcyA9IG9BcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cblx0XHRcdFx0b1NpZGVFZmZlY3RzU2VydmljZXMuaW5pdGlhbGl6ZVNpZGVFZmZlY3RzKG9BcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKSk7XG5cblx0XHRcdFx0c1BhZ2VNb2RlbENhY2hlS2V5ID0gc0NhY2hlS2V5ICsgXCItXCIgKyBzVmVyc2lvbkluZm8gKyBcIi1cIiArIHNTdGFibGVJZCArIFwiLVwiICsgb1NoZWxsU2VydmljZXMuaW5zdGFuY2VUeXBlICsgXCItcGFnZU1vZGVsXCI7XG5cdFx0XHRcdHJldHVybiBQcm9taXNlLmFsbChhRGVwZW5kZW5jaWVzUmVzdWx0LmNvbmNhdChbdGhpcy5fZ2V0Q2FjaGVkTW9kZWwoc1BhZ2VNb2RlbENhY2hlS2V5KV0pKTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbigoYURlcGVuZGVuY2llc1Jlc3VsdDogYW55W10pID0+IHtcblx0XHRcdFx0Y29uc3Qgb1Jlc291cmNlTW9kZWwgPSBhRGVwZW5kZW5jaWVzUmVzdWx0WzBdO1xuXHRcdFx0XHRjb25zdCBzQ2FjaGVLZXkgPSBhRGVwZW5kZW5jaWVzUmVzdWx0WzFdO1xuXHRcdFx0XHRjb25zdCBvUGFnZU1vZGVsQ2FjaGUgPSBhRGVwZW5kZW5jaWVzUmVzdWx0WzNdO1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG5cdFx0XHRcdFx0c2FwLnVpLnJlcXVpcmUoXG5cdFx0XHRcdFx0XHRbXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCIsIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIl0sXG5cdFx0XHRcdFx0XHQoVGVtcGxhdGVDb252ZXJ0ZXI6IGFueSwgTWV0YU1vZGVsQ29udmVydGVyOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmNyZWF0ZVZpZXcoXG5cdFx0XHRcdFx0XHRcdFx0XHRvUmVzb3VyY2VNb2RlbCxcblx0XHRcdFx0XHRcdFx0XHRcdHNTdGFibGVJZCxcblx0XHRcdFx0XHRcdFx0XHRcdHNDYWNoZUtleSxcblx0XHRcdFx0XHRcdFx0XHRcdHNQYWdlTW9kZWxDYWNoZUtleSxcblx0XHRcdFx0XHRcdFx0XHRcdG9QYWdlTW9kZWxDYWNoZSxcblx0XHRcdFx0XHRcdFx0XHRcdFRlbXBsYXRlQ29udmVydGVyLFxuXHRcdFx0XHRcdFx0XHRcdFx0TWV0YU1vZGVsQ29udmVydGVyXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uKHNDYWNoZUtleTogYW55KSB7XG5cdFx0XHRcdGNvbnN0IG9DYWNoZUhhbmRsZXJTZXJ2aWNlID0gU2VydmljZUZhY3RvcnlSZWdpc3RyeS5nZXQoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5DYWNoZUhhbmRsZXJTZXJ2aWNlXCIpLmdldEluc3RhbmNlKG9NZXRhTW9kZWwpO1xuXHRcdFx0XHRvQ2FjaGVIYW5kbGVyU2VydmljZS5pbnZhbGlkYXRlSWZOZWVkZWQoc0NhY2hlS2V5LCBzQ2FjaGVJZGVudGlmaWVyKTtcblx0XHRcdH0pO1xuXHR9XG5cdF9nZXRDYWNoZWRNb2RlbChzQ2FjaGVLZXk6IGFueSkge1xuXHRcdGlmIChcblx0XHRcdHNhcC51aVxuXHRcdFx0XHQuZ2V0Q29yZSgpXG5cdFx0XHRcdC5nZXRDb25maWd1cmF0aW9uKClcblx0XHRcdFx0LmdldFZpZXdDYWNoZSgpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gQ2FjaGVNYW5hZ2VyLmdldChzQ2FjaGVLZXkpO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdF9zZXRDYWNoZWRNb2RlbChzQ2FjaGVLZXk6IHN0cmluZywgb0NhY2hlTW9kZWw6IGFueSkge1xuXHRcdGlmIChcblx0XHRcdHNhcC51aVxuXHRcdFx0XHQuZ2V0Q29yZSgpXG5cdFx0XHRcdC5nZXRDb25maWd1cmF0aW9uKClcblx0XHRcdFx0LmdldFZpZXdDYWNoZSgpXG5cdFx0KSB7XG5cdFx0XHRDYWNoZU1hbmFnZXIuc2V0KHNDYWNoZUtleSwgb0NhY2hlTW9kZWwpO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdC8qKlxuXHQgKiBSZWZyZXNoIHRoZSBjdXJyZW50IHZpZXcgdXNpbmcgdGhlIHNhbWUgY29uZmlndXJhdGlvbiBhcyBiZWZvcmUuXG5cdCAqIFRoaXMgaXMgdXNlZnVsIGZvciBvdXIgZGVtb2tpdCAhXG5cdCAqXG5cdCAqIEBwYXJhbSBvQ29tcG9uZW50XG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cmVmcmVzaFZpZXcob0NvbXBvbmVudDogYW55KSB7XG5cdFx0Y29uc3Qgb1Jvb3RWaWV3ID0gb0NvbXBvbmVudC5nZXRSb290Q29udHJvbCgpO1xuXHRcdGlmIChvUm9vdFZpZXcpIHtcblx0XHRcdG9Sb290Vmlldy5kZXN0cm95KCk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLm9WaWV3KSB7XG5cdFx0XHR0aGlzLm9WaWV3LmRlc3Ryb3koKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuY3JlYXRlVmlldyh0aGlzLnJlc291cmNlTW9kZWwsIHRoaXMuc3RhYmxlSWQsIFwiXCIsIFwiXCIsIHVuZGVmaW5lZCwgdGhpcy5UZW1wbGF0ZUNvbnZlcnRlciwgdGhpcy5NZXRhTW9kZWxDb252ZXJ0ZXIpXG5cdFx0XHQudGhlbihmdW5jdGlvbigpIHtcblx0XHRcdFx0b0NvbXBvbmVudC5vQ29udGFpbmVyLmludmFsaWRhdGUoKTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24ob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0b0NvbXBvbmVudC5vQ29udGFpbmVyLmludmFsaWRhdGUoKTtcblx0XHRcdFx0TG9nLmVycm9yKG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fVxuXHRjcmVhdGVWaWV3KFxuXHRcdG9SZXNvdXJjZU1vZGVsOiBhbnksXG5cdFx0c1N0YWJsZUlkOiBhbnksXG5cdFx0c0NhY2hlS2V5OiBhbnksXG5cdFx0c1BhZ2VNb2RlbENhY2hlS2V5OiBhbnksXG5cdFx0b1BhZ2VNb2RlbENhY2hlOiBhbnksXG5cdFx0VGVtcGxhdGVDb252ZXJ0ZXI6IGFueSxcblx0XHRNZXRhTW9kZWxDb252ZXJ0ZXI6IGFueVxuXHQpIHtcblx0XHR0aGlzLnJlc291cmNlTW9kZWwgPSBvUmVzb3VyY2VNb2RlbDtcblx0XHR0aGlzLnN0YWJsZUlkID0gc1N0YWJsZUlkO1xuXHRcdHRoaXMuVGVtcGxhdGVDb252ZXJ0ZXIgPSBUZW1wbGF0ZUNvbnZlcnRlcjtcblx0XHR0aGlzLk1ldGFNb2RlbENvbnZlcnRlciA9IE1ldGFNb2RlbENvbnZlcnRlcjtcblx0XHRjb25zdCBvQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXHRcdGNvbnN0IG1TZXJ2aWNlU2V0dGluZ3MgPSBvQ29udGV4dC5zZXR0aW5ncztcblx0XHRjb25zdCBzQ29udmVydGVyVHlwZSA9IG1TZXJ2aWNlU2V0dGluZ3MuY29udmVydGVyVHlwZTtcblx0XHRjb25zdCBvQ29tcG9uZW50ID0gb0NvbnRleHQuc2NvcGVPYmplY3Q7XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudDogQXBwQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKG9Db21wb25lbnQpO1xuXHRcdGNvbnN0IHNGdWxsQ29udGV4dFBhdGggPSBvQXBwQ29tcG9uZW50LmdldFJvdXRpbmdTZXJ2aWNlKCkuZ2V0VGFyZ2V0SW5mb3JtYXRpb25Gb3Iob0NvbXBvbmVudCkub3B0aW9ucy5zZXR0aW5ncy5mdWxsQ29udGV4dFBhdGg7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9BcHBDb21wb25lbnQuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3Qgb01hbmlmZXN0Q29udGVudDogYW55ID0gb0FwcENvbXBvbmVudC5nZXRNYW5pZmVzdCgpO1xuXHRcdGNvbnN0IG9EZXZpY2VNb2RlbCA9IG5ldyBKU09OTW9kZWwoc2FwLnVpLkRldmljZSkuc2V0RGVmYXVsdEJpbmRpbmdNb2RlKFwiT25lV2F5XCIpO1xuXHRcdGNvbnN0IG9NYW5pZmVzdE1vZGVsID0gbmV3IEpTT05Nb2RlbChvTWFuaWZlc3RDb250ZW50KTtcblx0XHRjb25zdCBiRXJyb3IgPSBmYWxzZTtcblx0XHRsZXQgb1BhZ2VNb2RlbDogVGVtcGxhdGVNb2RlbCwgb1ZpZXdEYXRhTW9kZWw6IE1vZGVsLCBvVmlld1NldHRpbmdzOiBhbnksIG1WaWV3RGF0YTogYW55O1xuXG5cdFx0ZnVuY3Rpb24gZ2V0Vmlld1NldHRpbmdzKCkge1xuXHRcdFx0Y29uc3QgYVNwbGl0UGF0aCA9IHNGdWxsQ29udGV4dFBhdGguc3BsaXQoXCIvXCIpO1xuXHRcdFx0Y29uc3Qgc0VudGl0eVNldFBhdGggPSBhU3BsaXRQYXRoLnJlZHVjZShmdW5jdGlvbihzUGF0aFNvRmFyOiBhbnksIHNOZXh0UGF0aFBhcnQ6IGFueSkge1xuXHRcdFx0XHRpZiAoc05leHRQYXRoUGFydCA9PT0gXCJcIikge1xuXHRcdFx0XHRcdHJldHVybiBzUGF0aFNvRmFyO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChzUGF0aFNvRmFyID09PSBcIlwiKSB7XG5cdFx0XHRcdFx0c1BhdGhTb0ZhciA9IFwiL1wiICsgc05leHRQYXRoUGFydDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zdCBvVGFyZ2V0ID0gb01ldGFNb2RlbC5nZXRPYmplY3Qoc1BhdGhTb0ZhciArIFwiLyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nL1wiICsgc05leHRQYXRoUGFydCk7XG5cdFx0XHRcdFx0aWYgKG9UYXJnZXQgJiYgT2JqZWN0LmtleXMob1RhcmdldCkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0c1BhdGhTb0ZhciArPSBcIi8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1wiO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzUGF0aFNvRmFyICs9IFwiL1wiICsgc05leHRQYXRoUGFydDtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gc1BhdGhTb0Zhcjtcblx0XHRcdH0sIFwiXCIpO1xuXHRcdFx0Y29uc3Qgb1ZpZXdTZXR0aW5ncyA9IHtcblx0XHRcdFx0dHlwZTogXCJYTUxcIixcblx0XHRcdFx0cHJlcHJvY2Vzc29yczoge1xuXHRcdFx0XHRcdHhtbDoge1xuXHRcdFx0XHRcdFx0YmluZGluZ0NvbnRleHRzOiB7XG5cdFx0XHRcdFx0XHRcdGVudGl0eVNldDogc0VudGl0eVNldFBhdGggPyBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNFbnRpdHlTZXRQYXRoKSA6IG51bGwsXG5cdFx0XHRcdFx0XHRcdGZ1bGxDb250ZXh0UGF0aDogc0Z1bGxDb250ZXh0UGF0aCA/IG9NZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoc0Z1bGxDb250ZXh0UGF0aCkgOiBudWxsLFxuXHRcdFx0XHRcdFx0XHRjb250ZXh0UGF0aDogc0Z1bGxDb250ZXh0UGF0aCA/IG9NZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoc0Z1bGxDb250ZXh0UGF0aCkgOiBudWxsLFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBvUGFnZU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiLCB1bmRlZmluZWQsIHsgbm9SZXNvbHZlOiB0cnVlIH0pLFxuXHRcdFx0XHRcdFx0XHR2aWV3RGF0YTogbVZpZXdEYXRhID8gb1ZpZXdEYXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpIDogbnVsbFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG1vZGVsczoge1xuXHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRcdGZ1bGxDb250ZXh0UGF0aDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHRcdFx0Y29udGV4dFBhdGg6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRcdFwic2FwLmZlLmkxOG5cIjogb1Jlc291cmNlTW9kZWwsXG5cdFx0XHRcdFx0XHRcdG1ldGFNb2RlbDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHRcdFx0XCJkZXZpY2VcIjogb0RldmljZU1vZGVsLCAvLyBUT0RPOiBkaXNjdXNzIG5hbWVzIGhlcmVcblx0XHRcdFx0XHRcdFx0bWFuaWZlc3Q6IG9NYW5pZmVzdE1vZGVsLFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBvUGFnZU1vZGVsLFxuXHRcdFx0XHRcdFx0XHR2aWV3RGF0YTogb1ZpZXdEYXRhTW9kZWxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRhcHBDb21wb25lbnQ6IG9BcHBDb21wb25lbnRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGlkOiBzU3RhYmxlSWQsXG5cdFx0XHRcdHZpZXdOYW1lOiBtU2VydmljZVNldHRpbmdzLnZpZXdOYW1lIHx8IG9Db21wb25lbnQuZ2V0Vmlld05hbWUoKSxcblx0XHRcdFx0dmlld0RhdGE6IG1WaWV3RGF0YSxcblx0XHRcdFx0Y2FjaGU6IHsga2V5czogW3NDYWNoZUtleV0gfSxcblx0XHRcdFx0bW9kZWxzOiB7XG5cdFx0XHRcdFx0XCJzYXAuZmUuaTE4blwiOiBvUmVzb3VyY2VNb2RlbFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRoZWlnaHQ6IFwiMTAwJVwiXG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIG9WaWV3U2V0dGluZ3M7XG5cdFx0fVxuXHRcdGNvbnN0IGNyZWF0ZUVycm9yUGFnZSA9IChyZWFzb246IGFueSkgPT4ge1xuXHRcdFx0Ly8ganVzdCByZXBsYWNlIHRoZSB2aWV3IG5hbWUgYW5kIGFkZCBhbiBhZGRpdGlvbmFsIG1vZGVsIGNvbnRhaW5pbmcgdGhlIHJlYXNvbiwgYnV0XG5cdFx0XHQvLyBrZWVwIHRoZSBvdGhlciBzZXR0aW5nc1xuXHRcdFx0TG9nLmVycm9yKHJlYXNvbi5tZXNzYWdlLCByZWFzb24pO1xuXHRcdFx0b1ZpZXdTZXR0aW5ncy52aWV3TmFtZSA9IG1TZXJ2aWNlU2V0dGluZ3MuZXJyb3JWaWV3TmFtZSB8fCBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLnZpZXcuVGVtcGxhdGluZ0Vycm9yUGFnZVwiO1xuXHRcdFx0b1ZpZXdTZXR0aW5ncy5wcmVwcm9jZXNzb3JzLnhtbC5tb2RlbHNbXCJlcnJvclwiXSA9IG5ldyBKU09OTW9kZWwocmVhc29uKTtcblxuXHRcdFx0cmV0dXJuIG9Db21wb25lbnQucnVuQXNPd25lcigoKSA9PiB7XG5cdFx0XHRcdHJldHVybiBWaWV3LmNyZWF0ZShvVmlld1NldHRpbmdzKS50aGVuKChvVmlldzogYW55KSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5vVmlldyA9IG9WaWV3O1xuXHRcdFx0XHRcdHRoaXMub1ZpZXcuc2V0TW9kZWwobmV3IE1hbmFnZWRPYmplY3RNb2RlbCh0aGlzLm9WaWV3KSwgXCIkdmlld1wiKTtcblx0XHRcdFx0XHRvQ29tcG9uZW50LnNldEFnZ3JlZ2F0aW9uKFwicm9vdENvbnRyb2xcIiwgdGhpcy5vVmlldyk7XG5cdFx0XHRcdFx0cmV0dXJuIHNDYWNoZUtleTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9O1xuXHRcdHJldHVybiBvQXBwQ29tcG9uZW50XG5cdFx0XHQuZ2V0U2VydmljZShcInJvdXRpbmdTZXJ2aWNlXCIpXG5cdFx0XHQudGhlbigob1JvdXRpbmdTZXJ2aWNlOiBhbnkpID0+IHtcblx0XHRcdFx0Ly8gUmV0cmlldmUgdGhlIHZpZXdMZXZlbCBmb3IgdGhlIGNvbXBvbmVudFxuXHRcdFx0XHRjb25zdCBvVGFyZ2V0SW5mbyA9IG9Sb3V0aW5nU2VydmljZS5nZXRUYXJnZXRJbmZvcm1hdGlvbkZvcihvQ29tcG9uZW50KTtcblx0XHRcdFx0Y29uc3QgbU91dGJvdW5kcyA9XG5cdFx0XHRcdFx0b01hbmlmZXN0Q29udGVudFtcInNhcC5hcHBcIl0gJiZcblx0XHRcdFx0XHRvTWFuaWZlc3RDb250ZW50W1wic2FwLmFwcFwiXS5jcm9zc05hdmlnYXRpb24gJiZcblx0XHRcdFx0XHRvTWFuaWZlc3RDb250ZW50W1wic2FwLmFwcFwiXS5jcm9zc05hdmlnYXRpb24ub3V0Ym91bmRzO1xuXHRcdFx0XHRjb25zdCBtTmF2aWdhdGlvbiA9IG9Db21wb25lbnQuZ2V0TmF2aWdhdGlvbigpIHx8IHt9O1xuXHRcdFx0XHRPYmplY3Qua2V5cyhtTmF2aWdhdGlvbikuZm9yRWFjaChmdW5jdGlvbihuYXZpZ2F0aW9uT2JqZWN0S2V5OiBzdHJpbmcpIHtcblx0XHRcdFx0XHRjb25zdCBuYXZpZ2F0aW9uT2JqZWN0ID0gbU5hdmlnYXRpb25bbmF2aWdhdGlvbk9iamVjdEtleV07XG5cdFx0XHRcdFx0bGV0IG91dGJvdW5kQ29uZmlnO1xuXHRcdFx0XHRcdGlmIChuYXZpZ2F0aW9uT2JqZWN0LmRldGFpbCAmJiBuYXZpZ2F0aW9uT2JqZWN0LmRldGFpbC5vdXRib3VuZCAmJiBtT3V0Ym91bmRzW25hdmlnYXRpb25PYmplY3QuZGV0YWlsLm91dGJvdW5kXSkge1xuXHRcdFx0XHRcdFx0b3V0Ym91bmRDb25maWcgPSBtT3V0Ym91bmRzW25hdmlnYXRpb25PYmplY3QuZGV0YWlsLm91dGJvdW5kXTtcblx0XHRcdFx0XHRcdG5hdmlnYXRpb25PYmplY3QuZGV0YWlsLm91dGJvdW5kRGV0YWlsID0ge1xuXHRcdFx0XHRcdFx0XHRzZW1hbnRpY09iamVjdDogb3V0Ym91bmRDb25maWcuc2VtYW50aWNPYmplY3QsXG5cdFx0XHRcdFx0XHRcdGFjdGlvbjogb3V0Ym91bmRDb25maWcuYWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzOiBvdXRib3VuZENvbmZpZy5wYXJhbWV0ZXJzXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAobmF2aWdhdGlvbk9iamVjdC5jcmVhdGUgJiYgbmF2aWdhdGlvbk9iamVjdC5jcmVhdGUub3V0Ym91bmQgJiYgbU91dGJvdW5kc1tuYXZpZ2F0aW9uT2JqZWN0LmNyZWF0ZS5vdXRib3VuZF0pIHtcblx0XHRcdFx0XHRcdG91dGJvdW5kQ29uZmlnID0gbU91dGJvdW5kc1tuYXZpZ2F0aW9uT2JqZWN0LmNyZWF0ZS5vdXRib3VuZF07XG5cdFx0XHRcdFx0XHRuYXZpZ2F0aW9uT2JqZWN0LmNyZWF0ZS5vdXRib3VuZERldGFpbCA9IHtcblx0XHRcdFx0XHRcdFx0c2VtYW50aWNPYmplY3Q6IG91dGJvdW5kQ29uZmlnLnNlbWFudGljT2JqZWN0LFxuXHRcdFx0XHRcdFx0XHRhY3Rpb246IG91dGJvdW5kQ29uZmlnLmFjdGlvbixcblx0XHRcdFx0XHRcdFx0cGFyYW1ldGVyczogb3V0Ym91bmRDb25maWcucGFyYW1ldGVyc1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRtVmlld0RhdGEgPSB7XG5cdFx0XHRcdFx0bmF2aWdhdGlvbjogbU5hdmlnYXRpb24sXG5cdFx0XHRcdFx0dmlld0xldmVsOiBvVGFyZ2V0SW5mby52aWV3TGV2ZWwsXG5cdFx0XHRcdFx0c3RhYmxlSWQ6IHNTdGFibGVJZCxcblx0XHRcdFx0XHRjb250ZW50RGVuc2l0aWVzOiBvTWFuaWZlc3RDb250ZW50W1wic2FwLnVpNVwiXS5jb250ZW50RGVuc2l0aWVzLFxuXHRcdFx0XHRcdHJlc291cmNlQnVuZGxlOiBvUmVzb3VyY2VNb2RlbC5fX2J1bmRsZSxcblx0XHRcdFx0XHRmdWxsQ29udGV4dFBhdGg6IHNGdWxsQ29udGV4dFBhdGgsXG5cdFx0XHRcdFx0aXNEZXNrdG9wOiAoRGV2aWNlIGFzIGFueSkuc3lzdGVtLmRlc2t0b3AsXG5cdFx0XHRcdFx0aXNQaG9uZTogKERldmljZSBhcyBhbnkpLnN5c3RlbS5waG9uZVxuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdGlmIChvQ29tcG9uZW50LmdldFZpZXdEYXRhKSB7XG5cdFx0XHRcdFx0T2JqZWN0LmFzc2lnbihtVmlld0RhdGEsIG9Db21wb25lbnQuZ2V0Vmlld0RhdGEoKSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBvU2hlbGxTZXJ2aWNlcyA9IG9BcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpO1xuXHRcdFx0XHRtVmlld0RhdGEuY29udmVydGVyVHlwZSA9IHNDb252ZXJ0ZXJUeXBlO1xuXHRcdFx0XHRtVmlld0RhdGEuc2hlbGxDb250ZW50RGVuc2l0eSA9IG9TaGVsbFNlcnZpY2VzLmdldENvbnRlbnREZW5zaXR5KCk7XG5cdFx0XHRcdG1WaWV3RGF0YS51c2VOZXdMYXp5TG9hZGluZyA9IFVyaVBhcmFtZXRlcnMuZnJvbVF1ZXJ5KHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLmdldChcInNhcC1mZS14eC1sYXp5bG9hZGluZ3Rlc3RcIikgPT09IFwidHJ1ZVwiO1xuXHRcdFx0XHRtVmlld0RhdGEucmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCA9XG5cdFx0XHRcdFx0b01hbmlmZXN0Q29udGVudFtcInNhcC5mZVwiXSAmJiBvTWFuaWZlc3RDb250ZW50W1wic2FwLmZlXCJdLmZvcm1cblx0XHRcdFx0XHRcdD8gb01hbmlmZXN0Q29udGVudFtcInNhcC5mZVwiXS5mb3JtLnJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3Rcblx0XHRcdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdFx0XHRvVmlld0RhdGFNb2RlbCA9IG5ldyBKU09OTW9kZWwobVZpZXdEYXRhKTtcblx0XHRcdFx0aWYgKG1WaWV3RGF0YSAmJiBtVmlld0RhdGEuY29udHJvbENvbmZpZ3VyYXRpb24pIHtcblx0XHRcdFx0XHRPYmplY3Qua2V5cyhtVmlld0RhdGEuY29udHJvbENvbmZpZ3VyYXRpb24pLmZvckVhY2goZnVuY3Rpb24oc0Fubm90YXRpb25QYXRoOiBzdHJpbmcpIHtcblx0XHRcdFx0XHRcdGlmIChzQW5ub3RhdGlvblBhdGguaW5kZXhPZihcIltcIikgIT09IC0xKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHNUYXJnZXRBbm5vdGF0aW9uUGF0aCA9IER5bmFtaWNBbm5vdGF0aW9uUGF0aEhlbHBlci5yZXNvbHZlRHluYW1pY0V4cHJlc3Npb24oc0Fubm90YXRpb25QYXRoLCBvTWV0YU1vZGVsKTtcblx0XHRcdFx0XHRcdFx0bVZpZXdEYXRhLmNvbnRyb2xDb25maWd1cmF0aW9uW3NUYXJnZXRBbm5vdGF0aW9uUGF0aF0gPSBtVmlld0RhdGEuY29udHJvbENvbmZpZ3VyYXRpb25bc0Fubm90YXRpb25QYXRoXTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRNZXRhTW9kZWxDb252ZXJ0ZXIuY29udmVydFR5cGVzKG9NZXRhTW9kZWwsIG9BcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKSk7XG5cdFx0XHRcdG9QYWdlTW9kZWwgPSBuZXcgVGVtcGxhdGVNb2RlbCgoKSA9PiB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdGlmICghIW9QYWdlTW9kZWxDYWNoZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gb1BhZ2VNb2RlbENhY2hlO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgb0RpYWdub3N0aWNzID0gb0FwcENvbXBvbmVudC5nZXREaWFnbm9zdGljcygpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBpSXNzdWVDb3VudCA9IG9EaWFnbm9zdGljcy5nZXRJc3N1ZXMoKS5sZW5ndGg7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG9Db252ZXJ0ZXJQYWdlTW9kZWwgPSBUZW1wbGF0ZUNvbnZlcnRlci5jb252ZXJ0UGFnZShcblx0XHRcdFx0XHRcdFx0XHRzQ29udmVydGVyVHlwZSxcblx0XHRcdFx0XHRcdFx0XHRvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRcdG1WaWV3RGF0YSxcblx0XHRcdFx0XHRcdFx0XHRvRGlhZ25vc3RpY3MsXG5cdFx0XHRcdFx0XHRcdFx0c0Z1bGxDb250ZXh0UGF0aCxcblx0XHRcdFx0XHRcdFx0XHRvQXBwQ29tcG9uZW50LmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKClcblx0XHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0XHRjb25zdCBhSXNzdWVzID0gb0RpYWdub3N0aWNzLmdldElzc3VlcygpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBhQWRkZWRJc3N1ZXMgPSBhSXNzdWVzLnNsaWNlKGlJc3N1ZUNvdW50KTtcblx0XHRcdFx0XHRcdFx0aWYgKGFBZGRlZElzc3Vlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0TG9nLndhcm5pbmcoXG5cdFx0XHRcdFx0XHRcdFx0XHRcIlNvbWUgaXNzdWVzIGhhdmUgYmVlbiBkZXRlY3RlZCBpbiB5b3VyIHByb2plY3QsIHBsZWFzZSBjaGVjayB0aGUgVUk1IHN1cHBvcnQgYXNzaXN0YW50IHJ1bGUgZm9yIHNhcC5mZS5jb3JlXCJcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdC8vIEZpcmUgYW5kIGZvcmdldCBpbiB0aGUgY2FjaGVcblx0XHRcdFx0XHRcdFx0dGhpcy5fc2V0Q2FjaGVkTW9kZWwoc1BhZ2VNb2RlbENhY2hlS2V5LCBvQ29udmVydGVyUGFnZU1vZGVsKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG9Db252ZXJ0ZXJQYWdlTW9kZWw7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0XHRcdExvZy5lcnJvcihlcnJvciwgZXJyb3IpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHt9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSwgb01ldGFNb2RlbCk7XG5cblx0XHRcdFx0aWYgKCFiRXJyb3IpIHtcblx0XHRcdFx0XHRvVmlld1NldHRpbmdzID0gZ2V0Vmlld1NldHRpbmdzKCk7XG5cdFx0XHRcdFx0Ly8gU2V0dGluZyB0aGUgcGFnZU1vZGVsIG9uIHRoZSBjb21wb25lbnQgZm9yIHBvdGVudGlhbCByZXVzZVxuXHRcdFx0XHRcdG9Db21wb25lbnQuc2V0TW9kZWwob1BhZ2VNb2RlbCwgXCJfcGFnZU1vZGVsXCIpO1xuXHRcdFx0XHRcdHJldHVybiBvQ29tcG9uZW50LnJ1bkFzT3duZXIoKCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFZpZXcuY3JlYXRlKG9WaWV3U2V0dGluZ3MpXG5cdFx0XHRcdFx0XHRcdC5jYXRjaChjcmVhdGVFcnJvclBhZ2UpXG5cdFx0XHRcdFx0XHRcdC50aGVuKChvVmlldzogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5vVmlldyA9IG9WaWV3O1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMub1ZpZXcuc2V0TW9kZWwobmV3IE1hbmFnZWRPYmplY3RNb2RlbCh0aGlzLm9WaWV3KSwgXCIkdmlld1wiKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLm9WaWV3LnNldE1vZGVsKG9WaWV3RGF0YU1vZGVsLCBcInZpZXdEYXRhXCIpO1xuXHRcdFx0XHRcdFx0XHRcdG9Db21wb25lbnQuc2V0QWdncmVnYXRpb24oXCJyb290Q29udHJvbFwiLCB0aGlzLm9WaWV3KTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc0NhY2hlS2V5O1xuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHQuY2F0Y2goTG9nLmVycm9yKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbihlcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihlcnJvci5tZXNzYWdlLCBlcnJvcik7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIkVycm9yIHdoaWxlIGNyZWF0aW5nIHZpZXcgOiBcIiArIGVycm9yKTtcblx0XHRcdH0pO1xuXHR9XG5cdGdldFZpZXcoKSB7XG5cdFx0cmV0dXJuIHRoaXMub1ZpZXc7XG5cdH1cblx0Z2V0SW50ZXJmYWNlKCk6IGFueSB7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblx0ZXhpdCgpIHtcblx0XHQvLyBEZXJlZ2lzdGVyIGdsb2JhbCBpbnN0YW5jZVxuXHRcdHRoaXMub1Jlc291cmNlTW9kZWxTZXJ2aWNlICYmIHRoaXMub1Jlc291cmNlTW9kZWxTZXJ2aWNlLmRlc3Ryb3koKTtcblx0XHR0aGlzLm9DYWNoZUhhbmRsZXJTZXJ2aWNlICYmIHRoaXMub0NhY2hlSGFuZGxlclNlcnZpY2UuZGVzdHJveSgpO1xuXHRcdHRoaXMub0ZhY3RvcnkucmVtb3ZlR2xvYmFsSW5zdGFuY2UoKTtcblx0fVxufVxuY2xhc3MgVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5IGV4dGVuZHMgU2VydmljZUZhY3Rvcnk8VGVtcGxhdGVkVmlld1NlcnZpY2VTZXR0aW5ncz4ge1xuXHRfb0luc3RhbmNlUmVnaXN0cnk6IFJlY29yZDxzdHJpbmcsIFRlbXBsYXRlZFZpZXdTZXJ2aWNlPiA9IHt9O1xuXHRzdGF0aWMgaUNyZWF0aW5nVmlld3M6IDA7XG5cdGNyZWF0ZUluc3RhbmNlKG9TZXJ2aWNlQ29udGV4dDogU2VydmljZUNvbnRleHQ8VGVtcGxhdGVkVmlld1NlcnZpY2VTZXR0aW5ncz4pIHtcblx0XHRUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkuaUNyZWF0aW5nVmlld3MrKztcblxuXHRcdGNvbnN0IG9UZW1wbGF0ZWRWaWV3U2VydmljZSA9IG5ldyBUZW1wbGF0ZWRWaWV3U2VydmljZShPYmplY3QuYXNzaWduKHsgZmFjdG9yeTogdGhpcyB9LCBvU2VydmljZUNvbnRleHQpKTtcblx0XHRyZXR1cm4gb1RlbXBsYXRlZFZpZXdTZXJ2aWNlLmluaXRQcm9taXNlLnRoZW4oZnVuY3Rpb24oKSB7XG5cdFx0XHRUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkuaUNyZWF0aW5nVmlld3MtLTtcblx0XHRcdHJldHVybiBvVGVtcGxhdGVkVmlld1NlcnZpY2U7XG5cdFx0fSk7XG5cdH1cblx0cmVtb3ZlR2xvYmFsSW5zdGFuY2UoKSB7XG5cdFx0dGhpcy5fb0luc3RhbmNlUmVnaXN0cnkgPSB7fTtcblx0fVxuXHRzdGF0aWMgZ2V0TnVtYmVyT2ZWaWV3c0luQ3JlYXRpb25TdGF0ZSgpIHtcblx0XHRyZXR1cm4gVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5LmlDcmVhdGluZ1ZpZXdzO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeTtcbiJdfQ==
431
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeS50cyJdLCJuYW1lcyI6WyJUZW1wbGF0ZWRWaWV3U2VydmljZSIsImluaXQiLCJhU2VydmljZURlcGVuZGVuY2llcyIsIm9Db250ZXh0IiwiZ2V0Q29udGV4dCIsIm9Db21wb25lbnQiLCJzY29wZU9iamVjdCIsIm9BcHBDb21wb25lbnQiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsIm9NZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJzU3RhYmxlSWQiLCJnZXRNZXRhZGF0YSIsImdldENvbXBvbmVudE5hbWUiLCJnZXRMb2NhbElkIiwiZ2V0SWQiLCJhRW5oYW5jZUkxOG4iLCJnZXRFbmhhbmNlSTE4biIsInNBcHBOYW1lc3BhY2UiLCJvRmFjdG9yeSIsImZhY3RvcnkiLCJpIiwibGVuZ3RoIiwib1Jlc291cmNlTW9kZWwiLCJnZXRNb2RlbCIsImlzQSIsInJlcGxhY2UiLCJzQ2FjaGVJZGVudGlmaWVyIiwiZ2V0TmFtZSIsInNhcCIsInVpIiwiZ2V0Q29yZSIsImdldENvbmZpZ3VyYXRpb24iLCJnZXRMYW5ndWFnZVRhZyIsInB1c2giLCJTZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5IiwiZ2V0IiwiY3JlYXRlSW5zdGFuY2UiLCJzY29wZVR5cGUiLCJzZXR0aW5ncyIsImJ1bmRsZXMiLCJlbmhhbmNlSTE4biIsIm1vZGVsTmFtZSIsInRoZW4iLCJvUmVzb3VyY2VNb2RlbFNlcnZpY2UiLCJnZXRSZXNvdXJjZU1vZGVsIiwibWV0YU1vZGVsIiwiYXBwQ29tcG9uZW50IiwiY29tcG9uZW50Iiwib0NhY2hlSGFuZGxlclNlcnZpY2UiLCJ2YWxpZGF0ZUNhY2hlS2V5IiwiVmVyc2lvbkluZm8iLCJsb2FkIiwib0luZm8iLCJzVGltZXN0YW1wIiwibGlicmFyaWVzIiwiYnVpbGRpbmZvIiwiYnVpbGR0aW1lIiwiZm9yRWFjaCIsIm9MaWJyYXJ5IiwiYnVpbGRUaW1lc3RhbXAiLCJjYXRjaCIsInNQYWdlTW9kZWxDYWNoZUtleSIsImluaXRQcm9taXNlIiwiUHJvbWlzZSIsImFsbCIsImFEZXBlbmRlbmNpZXNSZXN1bHQiLCJzQ2FjaGVLZXkiLCJzVmVyc2lvbkluZm8iLCJvU2hlbGxTZXJ2aWNlcyIsImdldFNoZWxsU2VydmljZXMiLCJvU2lkZUVmZmVjdHNTZXJ2aWNlcyIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsImluaXRpYWxpemVTaWRlRWZmZWN0cyIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiaW5zdGFuY2VUeXBlIiwidW5kZWZpbmVkIiwiY29uY2F0IiwiX2dldENhY2hlZE1vZGVsIiwib1BhZ2VNb2RlbENhY2hlIiwicmVzb2x2ZSIsInJlcXVpcmUiLCJUZW1wbGF0ZUNvbnZlcnRlciIsIk1ldGFNb2RlbENvbnZlcnRlciIsImNyZWF0ZVZpZXciLCJnZXRJbnN0YW5jZSIsImludmFsaWRhdGVJZk5lZWRlZCIsImdldFZpZXdDYWNoZSIsIkNhY2hlTWFuYWdlciIsIl9zZXRDYWNoZWRNb2RlbCIsIm9DYWNoZU1vZGVsIiwic2V0IiwicmVmcmVzaFZpZXciLCJvUm9vdFZpZXciLCJnZXRSb290Q29udHJvbCIsImRlc3Ryb3kiLCJvVmlldyIsInJlc291cmNlTW9kZWwiLCJzdGFibGVJZCIsIm9Db250YWluZXIiLCJpbnZhbGlkYXRlIiwib0Vycm9yIiwiTG9nIiwiZXJyb3IiLCJtU2VydmljZVNldHRpbmdzIiwic0NvbnZlcnRlclR5cGUiLCJjb252ZXJ0ZXJUeXBlIiwic0Z1bGxDb250ZXh0UGF0aCIsImdldFJvdXRpbmdTZXJ2aWNlIiwiZ2V0VGFyZ2V0SW5mb3JtYXRpb25Gb3IiLCJvcHRpb25zIiwiZnVsbENvbnRleHRQYXRoIiwib01hbmlmZXN0Q29udGVudCIsImdldE1hbmlmZXN0Iiwib0RldmljZU1vZGVsIiwiSlNPTk1vZGVsIiwiRGV2aWNlIiwic2V0RGVmYXVsdEJpbmRpbmdNb2RlIiwib01hbmlmZXN0TW9kZWwiLCJiRXJyb3IiLCJvUGFnZU1vZGVsIiwib1ZpZXdEYXRhTW9kZWwiLCJvVmlld1NldHRpbmdzIiwibVZpZXdEYXRhIiwiZ2V0Vmlld1NldHRpbmdzIiwiYVNwbGl0UGF0aCIsInNwbGl0Iiwic0VudGl0eVNldFBhdGgiLCJyZWR1Y2UiLCJzUGF0aFNvRmFyIiwic05leHRQYXRoUGFydCIsIm9UYXJnZXQiLCJnZXRPYmplY3QiLCJPYmplY3QiLCJrZXlzIiwidHlwZSIsInByZXByb2Nlc3NvcnMiLCJ4bWwiLCJiaW5kaW5nQ29udGV4dHMiLCJlbnRpdHlTZXQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImNvbnRleHRQYXRoIiwiY29udmVydGVyQ29udGV4dCIsIm5vUmVzb2x2ZSIsInZpZXdEYXRhIiwibW9kZWxzIiwibWFuaWZlc3QiLCJpZCIsInZpZXdOYW1lIiwiZ2V0Vmlld05hbWUiLCJjYWNoZSIsImhlaWdodCIsImNyZWF0ZUVycm9yUGFnZSIsInJlYXNvbiIsIm1lc3NhZ2UiLCJlcnJvclZpZXdOYW1lIiwicnVuQXNPd25lciIsIlZpZXciLCJjcmVhdGUiLCJzZXRNb2RlbCIsIk1hbmFnZWRPYmplY3RNb2RlbCIsInNldEFnZ3JlZ2F0aW9uIiwiZ2V0U2VydmljZSIsIm9Sb3V0aW5nU2VydmljZSIsIm9UYXJnZXRJbmZvIiwibU91dGJvdW5kcyIsImNyb3NzTmF2aWdhdGlvbiIsIm91dGJvdW5kcyIsIm1OYXZpZ2F0aW9uIiwiZ2V0TmF2aWdhdGlvbiIsIm5hdmlnYXRpb25PYmplY3RLZXkiLCJuYXZpZ2F0aW9uT2JqZWN0Iiwib3V0Ym91bmRDb25maWciLCJkZXRhaWwiLCJvdXRib3VuZCIsIm91dGJvdW5kRGV0YWlsIiwic2VtYW50aWNPYmplY3QiLCJhY3Rpb24iLCJwYXJhbWV0ZXJzIiwibmF2aWdhdGlvbiIsInZpZXdMZXZlbCIsImNvbnRlbnREZW5zaXRpZXMiLCJyZXNvdXJjZUJ1bmRsZSIsIl9fYnVuZGxlIiwiaXNEZXNrdG9wIiwic3lzdGVtIiwiZGVza3RvcCIsImlzUGhvbmUiLCJwaG9uZSIsImdldFZpZXdEYXRhIiwiYXNzaWduIiwic2hlbGxDb250ZW50RGVuc2l0eSIsImdldENvbnRlbnREZW5zaXR5IiwidXNlTmV3TGF6eUxvYWRpbmciLCJVcmlQYXJhbWV0ZXJzIiwiZnJvbVF1ZXJ5Iiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJyZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0IiwiZm9ybSIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwic0Fubm90YXRpb25QYXRoIiwiaW5kZXhPZiIsInNUYXJnZXRBbm5vdGF0aW9uUGF0aCIsInJlc29sdmVEeW5hbWljRXhwcmVzc2lvbiIsImNvbnZlcnRUeXBlcyIsIlRlbXBsYXRlTW9kZWwiLCJvRGlhZ25vc3RpY3MiLCJnZXREaWFnbm9zdGljcyIsImlJc3N1ZUNvdW50IiwiZ2V0SXNzdWVzIiwib0NvbnZlcnRlclBhZ2VNb2RlbCIsImNvbnZlcnRQYWdlIiwiYUlzc3VlcyIsImFBZGRlZElzc3VlcyIsInNsaWNlIiwid2FybmluZyIsImdldERhdGEiLCJlIiwiRXJyb3IiLCJnZXRWaWV3IiwiZ2V0SW50ZXJmYWNlIiwiZXhpdCIsInJlbW92ZUdsb2JhbEluc3RhbmNlIiwiU2VydmljZSIsIlRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeSIsIl9vSW5zdGFuY2VSZWdpc3RyeSIsIm9TZXJ2aWNlQ29udGV4dCIsImlDcmVhdGluZ1ZpZXdzIiwib1RlbXBsYXRlZFZpZXdTZXJ2aWNlIiwiZ2V0TnVtYmVyT2ZWaWV3c0luQ3JlYXRpb25TdGF0ZSIsIlNlcnZpY2VGYWN0b3J5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O01BcUJNQSxvQjs7Ozs7Ozs7O1dBVUxDLEksR0FBQSxnQkFBTztBQUFBOztBQUNOLFVBQU1DLG9CQUFvQixHQUFHLEVBQTdCO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLEtBQUtDLFVBQUwsRUFBakI7QUFDQSxVQUFNQyxVQUFVLEdBQUdGLFFBQVEsQ0FBQ0csV0FBNUI7QUFDQSxVQUFNQyxhQUFhLEdB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QUFBLHdCQUFvQjtBQUNuQixhQUFPLElBQVA7QUFDQSxLOztXQUNEQyxJLEdBQUEsZ0JBQU87QUFDTjtBQUNBLFdBQUtwTCxxQkFBTCxJQUE4QixLQUFLQSxxQkFBTCxDQUEyQm9ELE9BQTNCLEVBQTlCO0FBQ0EsV0FBSy9DLG9CQUFMLElBQTZCLEtBQUtBLG9CQUFMLENBQTBCK0MsT0FBMUIsRUFBN0I7QUFDQSxXQUFLN0UsUUFBTCxDQUFjOE0sb0JBQWQ7QUFDQSxLOzs7SUE5WmlDQyxPOztNQWdhN0JDLDJCOzs7Ozs7Ozs7OzthQUNMQyxrQixHQUEyRCxFOzs7Ozs7WUFFM0QvTCxjLEdBQUEsd0JBQWVnTSxlQUFmLEVBQThFO0FBQzdFRixNQUFBQSwyQkFBMkIsQ0FBQ0csY0FBNUI7QUFFQSxVQUFNQyxxQkFBcUIsR0FBRyxJQUFJeE8sb0JBQUosQ0FBeUJ1SSxNQUFNLENBQUN5RCxNQUFQLENBQWM7QUFBRTNLLFFBQUFBLE9BQU8sRUFBRTtBQUFYLE9BQWQsRUFBaUNpTixlQUFqQyxDQUF6QixDQUE5QjtBQUNBLGFBQU9FLHFCQUFxQixDQUFDeEssV0FBdEIsQ0FBa0NwQixJQUFsQyxDQUF1QyxZQUFXO0FBQ3hEd0wsUUFBQUEsMkJBQTJCLENBQUNHLGNBQTVCO0FBQ0EsZUFBT0MscUJBQVA7QUFDQSxPQUhNLENBQVA7QUFJQSxLOztZQUNETixvQixHQUFBLGdDQUF1QjtBQUN0QixXQUFLRyxrQkFBTCxHQUEwQixFQUExQjtBQUNBLEs7O2dDQUNNSSwrQixHQUFQLDJDQUF5QztBQUN4QyxhQUFPTCwyQkFBMkIsQ0FBQ0csY0FBbkM7QUFDQSxLOzs7SUFqQndDRyxjOztTQW9CM0JOLDJCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2VydmljZSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZS9TZXJ2aWNlXCI7XG5pbXBvcnQgU2VydmljZUZhY3RvcnkgZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2UvU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBTZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5IGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VGYWN0b3J5UmVnaXN0cnlcIjtcbmltcG9ydCBNYW5hZ2VkT2JqZWN0TW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9iYXNlL01hbmFnZWRPYmplY3RNb2RlbFwiO1xuaW1wb3J0IFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgVGVtcGxhdGVNb2RlbCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVNb2RlbFwiO1xuaW1wb3J0IENhY2hlTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvY2FjaGUvQ2FjaGVNYW5hZ2VyXCI7XG5pbXBvcnQgVmVyc2lvbkluZm8gZnJvbSBcInNhcC91aS9WZXJzaW9uSW5mb1wiO1xuaW1wb3J0IERldmljZSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IFVyaVBhcmFtZXRlcnMgZnJvbSBcInNhcC9iYXNlL3V0aWwvVXJpUGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgU2VydmljZUNvbnRleHQgfSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZVwiO1xuaW1wb3J0IHsgUmVzb3VyY2VNb2RlbFNlcnZpY2UgfSBmcm9tIFwiLi9SZXNvdXJjZU1vZGVsU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ2FjaGVIYW5kbGVyU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9DYWNoZUhhbmRsZXJTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9tYWNyb3MvUmVzb3VyY2VNb2RlbFwiO1xuaW1wb3J0IE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTW9kZWxcIjtcbmltcG9ydCB7IHJlc29sdmVEeW5hbWljRXhwcmVzc2lvbiB9IGZyb20gXCIuLi9oZWxwZXJzL0R5bmFtaWNBbm5vdGF0aW9uUGF0aEhlbHBlclwiO1xuXG50eXBlIFRlbXBsYXRlZFZpZXdTZXJ2aWNlU2V0dGluZ3MgPSB7fTtcblxuY2xhc3MgVGVtcGxhdGVkVmlld1NlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPFRlbXBsYXRlZFZpZXdTZXJ2aWNlU2V0dGluZ3M+IHtcblx0aW5pdFByb21pc2UhOiBQcm9taXNlPGFueT47XG5cdG9WaWV3ITogVmlldztcblx0b1Jlc291cmNlTW9kZWxTZXJ2aWNlITogUmVzb3VyY2VNb2RlbFNlcnZpY2U7XG5cdG9DYWNoZUhhbmRsZXJTZXJ2aWNlITogQ2FjaGVIYW5kbGVyU2VydmljZTtcblx0b0ZhY3RvcnkhOiBUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3Rvcnk7XG5cdHJlc291cmNlTW9kZWwhOiB0eXBlb2YgUmVzb3VyY2VNb2RlbDtcblx0c3RhYmxlSWQhOiBzdHJpbmc7XG5cdFRlbXBsYXRlQ29udmVydGVyOiBhbnk7XG5cdE1ldGFNb2RlbENvbnZlcnRlcjogYW55O1xuXHRpbml0KCkge1xuXHRcdGNvbnN0IGFTZXJ2aWNlRGVwZW5kZW5jaWVzID0gW107XG5cdFx0Y29uc3Qgb0NvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblx0XHRjb25zdCBvQ29tcG9uZW50ID0gb0NvbnRleHQuc2NvcGVPYmplY3Q7XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcihvQ29tcG9uZW50KSBhcyBBcHBDb21wb25lbnQ7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9BcHBDb21wb25lbnQuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3Qgc1N0YWJsZUlkID0gb0FwcENvbXBvbmVudC5nZXRNZXRhZGF0YSgpLmdldENvbXBvbmVudE5hbWUoKSArIFwiOjpcIiArIG9BcHBDb21wb25lbnQuZ2V0TG9jYWxJZChvQ29tcG9uZW50LmdldElkKCkpO1xuXHRcdGNvbnN0IGFFbmhhbmNlSTE4biA9IG9Db21wb25lbnQuZ2V0RW5oYW5jZUkxOG4oKSB8fCBbXTtcblx0XHRsZXQgc0FwcE5hbWVzcGFjZTtcblx0XHR0aGlzLm9GYWN0b3J5ID0gb0NvbnRleHQuZmFjdG9yeTtcblx0XHRpZiAoYUVuaGFuY2VJMThuKSB7XG5cdFx0XHRzQXBwTmFtZXNwYWNlID0gb0FwcENvbXBvbmVudC5nZXRNZXRhZGF0YSgpLmdldENvbXBvbmVudE5hbWUoKTtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYUVuaGFuY2VJMThuLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdC8vIEluIG9yZGVyIHRvIHN1cHBvcnQgdGV4dC12ZXJ0aWNhbGl6YXRpb24gYXBwbGljYXRpb25zIGNhbiBhbHNvIHBhc3NzIGEgcmVzb3VyY2UgbW9kZWwgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Rcblx0XHRcdFx0Ly8gVUk1IHRha2VzIGNhcmUgb2YgdGV4dC12ZXJ0aWNhbGl6YXRpb24gZm9yIHJlc291cmNlIG1vZGVscyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdFxuXHRcdFx0XHQvLyBIZW5jZSBjaGVjayBpZiB0aGUgZ2l2ZW4ga2V5IGlzIGEgcmVzb3VyY2UgbW9kZWwgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Rcblx0XHRcdFx0Ly8gaWYgc28gdGhpcyBtb2RlbCBzaG91bGQgYmUgdXNlZCB0byBlbmhhbmNlIHRoZSBzYXAuZmUgcmVzb3VyY2UgbW9kZWwgc28gcGFzcyBpdCBhcyBpdCBpc1xuXHRcdFx0XHRjb25zdCBvUmVzb3VyY2VNb2RlbCA9IG9BcHBDb21wb25lbnQuZ2V0TW9kZWwoYUVuaGFuY2VJMThuW2ldKTtcblx0XHRcdFx0aWYgKG9SZXNvdXJjZU1vZGVsICYmIG9SZXNvdXJjZU1vZGVsLmlzQShcInNhcC51aS5tb2RlbC5yZXNvdXJjZS5SZXNvdXJjZU1vZGVsXCIpKSB7XG5cdFx0XHRcdFx0YUVuaGFuY2VJMThuW2ldID0gb1Jlc291cmNlTW9kZWw7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YUVuaGFuY2VJMThuW2ldID0gc0FwcE5hbWVzcGFjZSArIFwiLlwiICsgYUVuaGFuY2VJMThuW2ldLnJlcGxhY2UoXCIucHJvcGVydGllc1wiLCBcIlwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IHNDYWNoZUlkZW50aWZpZXIgPVxuXHRcdFx0b0FwcENvbXBvbmVudC5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKSArXG5cdFx0XHRcIl9cIiArXG5cdFx0XHRzU3RhYmxlSWQgK1xuXHRcdFx0XCJfXCIgK1xuXHRcdFx0c2FwLnVpXG5cdFx0XHRcdC5nZXRDb3JlKClcblx0XHRcdFx0LmdldENvbmZpZ3VyYXRpb24oKVxuXHRcdFx0XHQuZ2V0TGFuZ3VhZ2VUYWcoKTtcblx0XHRhU2VydmljZURlcGVuZGVuY2llcy5wdXNoKFxuXHRcdFx0U2VydmljZUZhY3RvcnlSZWdpc3RyeS5nZXQoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5SZXNvdXJjZU1vZGVsU2VydmljZVwiKVxuXHRcdFx0XHQuY3JlYXRlSW5zdGFuY2Uoe1xuXHRcdFx0XHRcdHNjb3BlVHlwZTogXCJjb21wb25lbnRcIixcblx0XHRcdFx0XHRzY29wZU9iamVjdDogb0NvbXBvbmVudCxcblx0XHRcdFx0XHRzZXR0aW5nczoge1xuXHRcdFx0XHRcdFx0YnVuZGxlczogW1wic2FwLmZlLmNvcmUubWVzc2FnZWJ1bmRsZVwiLCBcInNhcC5mZS5tYWNyb3MubWVzc2FnZWJ1bmRsZVwiLCBcInNhcC5mZS50ZW1wbGF0ZXMubWVzc2FnZWJ1bmRsZVwiXSxcblx0XHRcdFx0XHRcdGVuaGFuY2VJMThuOiBhRW5oYW5jZUkxOG4sXG5cdFx0XHRcdFx0XHRtb2RlbE5hbWU6IFwic2FwLmZlLmkxOG5cIlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oKG9SZXNvdXJjZU1vZGVsU2VydmljZTogUmVzb3VyY2VNb2RlbFNlcnZpY2UpID0+IHtcblx0XHRcdFx0XHR0aGlzLm9SZXNvdXJjZU1vZGVsU2VydmljZSA9IG9SZXNvdXJjZU1vZGVsU2VydmljZTtcblx0XHRcdFx0XHRyZXR1cm4gb1Jlc291cmNlTW9kZWxTZXJ2aWNlLmdldFJlc291cmNlTW9kZWwoKTtcblx0XHRcdFx0fSlcblx0XHQpO1xuXG5cdFx0YVNlcnZpY2VEZXBlbmRlbmNpZXMucHVzaChcblx0XHRcdFNlcnZpY2VGYWN0b3J5UmVnaXN0cnkuZ2V0KFwic2FwLmZlLmNvcmUuc2VydmljZXMuQ2FjaGVIYW5kbGVyU2VydmljZVwiKVxuXHRcdFx0XHQuY3JlYXRlSW5zdGFuY2Uoe1xuXHRcdFx0XHRcdHNldHRpbmdzOiB7XG5cdFx0XHRcdFx0XHRtZXRhTW9kZWw6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRhcHBDb21wb25lbnQ6IG9BcHBDb21wb25lbnQsXG5cdFx0XHRcdFx0XHRjb21wb25lbnQ6IG9Db21wb25lbnRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKChvQ2FjaGVIYW5kbGVyU2VydmljZTogYW55KSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5vQ2FjaGVIYW5kbGVyU2VydmljZSA9IG9DYWNoZUhhbmRsZXJTZXJ2aWNlO1xuXHRcdFx0XHRcdHJldHVybiBvQ2FjaGVIYW5kbGVyU2VydmljZS52YWxpZGF0ZUNhY2hlS2V5KHNDYWNoZUlkZW50aWZpZXIpO1xuXHRcdFx0XHR9KVxuXHRcdCk7XG5cdFx0YVNlcnZpY2VEZXBlbmRlbmNpZXMucHVzaChcblx0XHRcdChWZXJzaW9uSW5mbyBhcyBhbnkpXG5cdFx0XHRcdC5sb2FkKClcblx0XHRcdFx0LnRoZW4oZnVuY3Rpb24ob0luZm86IGFueSkge1xuXHRcdFx0XHRcdGxldCBzVGltZXN0YW1wID0gXCJcIjtcblx0XHRcdFx0XHRpZiAoIW9JbmZvLmxpYnJhcmllcykge1xuXHRcdFx0XHRcdFx0c1RpbWVzdGFtcCA9IChzYXAudWkgYXMgYW55KS5idWlsZGluZm8uYnVpbGR0aW1lO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRvSW5mby5saWJyYXJpZXMuZm9yRWFjaChmdW5jdGlvbihvTGlicmFyeTogYW55KSB7XG5cdFx0XHRcdFx0XHRcdHNUaW1lc3RhbXAgKz0gb0xpYnJhcnkuYnVpbGRUaW1lc3RhbXA7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHNUaW1lc3RhbXA7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gXCI8Tk9WQUxVRT5cIjtcblx0XHRcdFx0fSlcblx0XHQpO1xuXG5cdFx0bGV0IHNQYWdlTW9kZWxDYWNoZUtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSBQcm9taXNlLmFsbChhU2VydmljZURlcGVuZGVuY2llcylcblx0XHRcdC50aGVuKChhRGVwZW5kZW5jaWVzUmVzdWx0OiBhbnlbXSkgPT4ge1xuXHRcdFx0XHRjb25zdCBzQ2FjaGVLZXkgPSBhRGVwZW5kZW5jaWVzUmVzdWx0WzFdO1xuXHRcdFx0XHRjb25zdCBzVmVyc2lvbkluZm8gPSBhRGVwZW5kZW5jaWVzUmVzdWx0WzJdO1xuXHRcdFx0XHRjb25zdCBvU2hlbGxTZXJ2aWNlcyA9IG9BcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpO1xuXHRcdFx0XHRjb25zdCBvU2lkZUVmZmVjdHNTZXJ2aWNlcyA9IG9BcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cblx0XHRcdFx0b1NpZGVFZmZlY3RzU2VydmljZXMuaW5pdGlhbGl6ZVNpZGVFZmZlY3RzKG9BcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKSk7XG5cblx0XHRcdFx0Ly8gSW4gY2FzZSB0aGVyZSBpcyBubyBjYWNoZSBrZXkgd2UgaWdub3JlIHRoZSB2aWV3IGNhY2hlXG5cdFx0XHRcdHNQYWdlTW9kZWxDYWNoZUtleSA9IHNDYWNoZUtleVxuXHRcdFx0XHRcdD8gc0NhY2hlS2V5ICsgXCItXCIgKyBzVmVyc2lvbkluZm8gKyBcIi1cIiArIHNTdGFibGVJZCArIFwiLVwiICsgb1NoZWxsU2VydmljZXMuaW5zdGFuY2VUeXBlICsgXCItcGFnZU1vZGVsXCJcblx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0cmV0dXJuIFByb21pc2UuYWxsKGFEZXBlbmRlbmNpZXNSZXN1bHQuY29uY2F0KFt0aGlzLl9nZXRDYWNoZWRNb2RlbChzUGFnZU1vZGVsQ2FjaGVLZXkpXSkpO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKChhRGVwZW5kZW5jaWVzUmVzdWx0OiBhbnlbXSkgPT4ge1xuXHRcdFx0XHRjb25zdCBvUmVzb3VyY2VNb2RlbCA9IGFEZXBlbmRlbmNpZXNSZXN1bHRbMF07XG5cdFx0XHRcdGNvbnN0IHNDYWNoZUtleSA9IGFEZXBlbmRlbmNpZXNSZXN1bHRbMV07XG5cdFx0XHRcdGNvbnN0IG9QYWdlTW9kZWxDYWNoZSA9IGFEZXBlbmRlbmNpZXNSZXN1bHRbM107XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcblx0XHRcdFx0XHRzYXAudWkucmVxdWlyZShcblx0XHRcdFx0XHRcdFtcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIiwgXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiXSxcblx0XHRcdFx0XHRcdChUZW1wbGF0ZUNvbnZlcnRlcjogYW55LCBNZXRhTW9kZWxDb252ZXJ0ZXI6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuY3JlYXRlVmlldyhcblx0XHRcdFx0XHRcdFx0XHRcdG9SZXNvdXJjZU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRcdFx0c1N0YWJsZUlkLFxuXHRcdFx0XHRcdFx0XHRcdFx0c0NhY2hlS2V5LFxuXHRcdFx0XHRcdFx0XHRcdFx0c1BhZ2VNb2RlbENhY2hlS2V5LFxuXHRcdFx0XHRcdFx0XHRcdFx0b1BhZ2VNb2RlbENhY2hlLFxuXHRcdFx0XHRcdFx0XHRcdFx0VGVtcGxhdGVDb252ZXJ0ZXIsXG5cdFx0XHRcdFx0XHRcdFx0XHRNZXRhTW9kZWxDb252ZXJ0ZXJcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24oc0NhY2hlS2V5OiBhbnkpIHtcblx0XHRcdFx0Y29uc3Qgb0NhY2hlSGFuZGxlclNlcnZpY2UgPSBTZXJ2aWNlRmFjdG9yeVJlZ2lzdHJ5LmdldChcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNhY2hlSGFuZGxlclNlcnZpY2VcIikuZ2V0SW5zdGFuY2Uob01ldGFNb2RlbCk7XG5cdFx0XHRcdG9DYWNoZUhhbmRsZXJTZXJ2aWNlLmludmFsaWRhdGVJZk5lZWRlZChzQ2FjaGVLZXksIHNDYWNoZUlkZW50aWZpZXIpO1xuXHRcdFx0fSk7XG5cdH1cblx0X2dldENhY2hlZE1vZGVsKHNDYWNoZUtleTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG5cdFx0aWYgKFxuXHRcdFx0c0NhY2hlS2V5ICYmXG5cdFx0XHRzYXAudWlcblx0XHRcdFx0LmdldENvcmUoKVxuXHRcdFx0XHQuZ2V0Q29uZmlndXJhdGlvbigpXG5cdFx0XHRcdC5nZXRWaWV3Q2FjaGUoKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIENhY2hlTWFuYWdlci5nZXQoc0NhY2hlS2V5KTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXHRfc2V0Q2FjaGVkTW9kZWwoc0NhY2hlS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQsIG9DYWNoZU1vZGVsOiBhbnkpIHtcblx0XHRpZiAoXG5cdFx0XHRzQ2FjaGVLZXkgJiZcblx0XHRcdHNhcC51aVxuXHRcdFx0XHQuZ2V0Q29yZSgpXG5cdFx0XHRcdC5nZXRDb25maWd1cmF0aW9uKClcblx0XHRcdFx0LmdldFZpZXdDYWNoZSgpXG5cdFx0KSB7XG5cdFx0XHRDYWNoZU1hbmFnZXIuc2V0KHNDYWNoZUtleSwgb0NhY2hlTW9kZWwpO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdC8qKlxuXHQgKiBSZWZyZXNoIHRoZSBjdXJyZW50IHZpZXcgdXNpbmcgdGhlIHNhbWUgY29uZmlndXJhdGlvbiBhcyBiZWZvcmUuXG5cdCAqIFRoaXMgaXMgdXNlZnVsIGZvciBvdXIgZGVtb2tpdCAhXG5cdCAqXG5cdCAqIEBwYXJhbSBvQ29tcG9uZW50XG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cmVmcmVzaFZpZXcob0NvbXBvbmVudDogYW55KSB7XG5cdFx0Y29uc3Qgb1Jvb3RWaWV3ID0gb0NvbXBvbmVudC5nZXRSb290Q29udHJvbCgpO1xuXHRcdGlmIChvUm9vdFZpZXcpIHtcblx0XHRcdG9Sb290Vmlldy5kZXN0cm95KCk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLm9WaWV3KSB7XG5cdFx0XHR0aGlzLm9WaWV3LmRlc3Ryb3koKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuY3JlYXRlVmlldyh0aGlzLnJlc291cmNlTW9kZWwsIHRoaXMuc3RhYmxlSWQsIFwiXCIsIFwiXCIsIHVuZGVmaW5lZCwgdGhpcy5UZW1wbGF0ZUNvbnZlcnRlciwgdGhpcy5NZXRhTW9kZWxDb252ZXJ0ZXIpXG5cdFx0XHQudGhlbihmdW5jdGlvbigpIHtcblx0XHRcdFx0b0NvbXBvbmVudC5vQ29udGFpbmVyLmludmFsaWRhdGUoKTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24ob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0b0NvbXBvbmVudC5vQ29udGFpbmVyLmludmFsaWRhdGUoKTtcblx0XHRcdFx0TG9nLmVycm9yKG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fVxuXHRjcmVhdGVWaWV3KFxuXHRcdG9SZXNvdXJjZU1vZGVsOiBhbnksXG5cdFx0c1N0YWJsZUlkOiBhbnksXG5cdFx0c0NhY2hlS2V5OiBhbnksXG5cdFx0c1BhZ2VNb2RlbENhY2hlS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdFx0b1BhZ2VNb2RlbENhY2hlOiBhbnksXG5cdFx0VGVtcGxhdGVDb252ZXJ0ZXI6IGFueSxcblx0XHRNZXRhTW9kZWxDb252ZXJ0ZXI6IGFueVxuXHQpIHtcblx0XHR0aGlzLnJlc291cmNlTW9kZWwgPSBvUmVzb3VyY2VNb2RlbDtcblx0XHR0aGlzLnN0YWJsZUlkID0gc1N0YWJsZUlkO1xuXHRcdHRoaXMuVGVtcGxhdGVDb252ZXJ0ZXIgPSBUZW1wbGF0ZUNvbnZlcnRlcjtcblx0XHR0aGlzLk1ldGFNb2RlbENvbnZlcnRlciA9IE1ldGFNb2RlbENvbnZlcnRlcjtcblx0XHRjb25zdCBvQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXHRcdGNvbnN0IG1TZXJ2aWNlU2V0dGluZ3MgPSBvQ29udGV4dC5zZXR0aW5ncztcblx0XHRjb25zdCBzQ29udmVydGVyVHlwZSA9IG1TZXJ2aWNlU2V0dGluZ3MuY29udmVydGVyVHlwZTtcblx0XHRjb25zdCBvQ29tcG9uZW50ID0gb0NvbnRleHQuc2NvcGVPYmplY3Q7XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudDogQXBwQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKG9Db21wb25lbnQpIGFzIEFwcENvbXBvbmVudDtcblx0XHRjb25zdCBzRnVsbENvbnRleHRQYXRoID0gb0FwcENvbXBvbmVudC5nZXRSb3V0aW5nU2VydmljZSgpLmdldFRhcmdldEluZm9ybWF0aW9uRm9yKG9Db21wb25lbnQpLm9wdGlvbnMuc2V0dGluZ3MuZnVsbENvbnRleHRQYXRoO1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvQXBwQ29tcG9uZW50LmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IG9NYW5pZmVzdENvbnRlbnQ6IGFueSA9IG9BcHBDb21wb25lbnQuZ2V0TWFuaWZlc3QoKTtcblx0XHRjb25zdCBvRGV2aWNlTW9kZWwgPSBuZXcgSlNPTk1vZGVsKHNhcC51aS5EZXZpY2UpLnNldERlZmF1bHRCaW5kaW5nTW9kZShcIk9uZVdheVwiKTtcblx0XHRjb25zdCBvTWFuaWZlc3RNb2RlbCA9IG5ldyBKU09OTW9kZWwob01hbmlmZXN0Q29udGVudCk7XG5cdFx0Y29uc3QgYkVycm9yID0gZmFsc2U7XG5cdFx0bGV0IG9QYWdlTW9kZWw6IFRlbXBsYXRlTW9kZWwsIG9WaWV3RGF0YU1vZGVsOiBNb2RlbCwgb1ZpZXdTZXR0aW5nczogYW55LCBtVmlld0RhdGE6IGFueTtcblxuXHRcdGZ1bmN0aW9uIGdldFZpZXdTZXR0aW5ncygpIHtcblx0XHRcdGNvbnN0IGFTcGxpdFBhdGggPSBzRnVsbENvbnRleHRQYXRoLnNwbGl0KFwiL1wiKTtcblx0XHRcdGNvbnN0IHNFbnRpdHlTZXRQYXRoID0gYVNwbGl0UGF0aC5yZWR1Y2UoZnVuY3Rpb24oc1BhdGhTb0ZhcjogYW55LCBzTmV4dFBhdGhQYXJ0OiBhbnkpIHtcblx0XHRcdFx0aWYgKHNOZXh0UGF0aFBhcnQgPT09IFwiXCIpIHtcblx0XHRcdFx0XHRyZXR1cm4gc1BhdGhTb0Zhcjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoc1BhdGhTb0ZhciA9PT0gXCJcIikge1xuXHRcdFx0XHRcdHNQYXRoU29GYXIgPSBcIi9cIiArIHNOZXh0UGF0aFBhcnQ7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3Qgb1RhcmdldCA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KHNQYXRoU29GYXIgKyBcIi8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZy9cIiArIHNOZXh0UGF0aFBhcnQpO1xuXHRcdFx0XHRcdGlmIChvVGFyZ2V0ICYmIE9iamVjdC5rZXlzKG9UYXJnZXQpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdHNQYXRoU29GYXIgKz0gXCIvJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdcIjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c1BhdGhTb0ZhciArPSBcIi9cIiArIHNOZXh0UGF0aFBhcnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHNQYXRoU29GYXI7XG5cdFx0XHR9LCBcIlwiKTtcblx0XHRcdGNvbnN0IG9WaWV3U2V0dGluZ3MgPSB7XG5cdFx0XHRcdHR5cGU6IFwiWE1MXCIsXG5cdFx0XHRcdHByZXByb2Nlc3NvcnM6IHtcblx0XHRcdFx0XHR4bWw6IHtcblx0XHRcdFx0XHRcdGJpbmRpbmdDb250ZXh0czoge1xuXHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ6IHNFbnRpdHlTZXRQYXRoID8gb01ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChzRW50aXR5U2V0UGF0aCkgOiBudWxsLFxuXHRcdFx0XHRcdFx0XHRmdWxsQ29udGV4dFBhdGg6IHNGdWxsQ29udGV4dFBhdGggPyBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNGdWxsQ29udGV4dFBhdGgpIDogbnVsbCxcblx0XHRcdFx0XHRcdFx0Y29udGV4dFBhdGg6IHNGdWxsQ29udGV4dFBhdGggPyBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNGdWxsQ29udGV4dFBhdGgpIDogbnVsbCxcblx0XHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dDogb1BhZ2VNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIiwgdW5kZWZpbmVkLCB7IG5vUmVzb2x2ZTogdHJ1ZSB9KSxcblx0XHRcdFx0XHRcdFx0dmlld0RhdGE6IG1WaWV3RGF0YSA/IG9WaWV3RGF0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKSA6IG51bGxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRtb2RlbHM6IHtcblx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0OiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRmdWxsQ29udGV4dFBhdGg6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRcdGNvbnRleHRQYXRoOiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRcInNhcC5mZS5pMThuXCI6IG9SZXNvdXJjZU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRtZXRhTW9kZWw6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRcdFwiZGV2aWNlXCI6IG9EZXZpY2VNb2RlbCwgLy8gVE9ETzogZGlzY3VzcyBuYW1lcyBoZXJlXG5cdFx0XHRcdFx0XHRcdG1hbmlmZXN0OiBvTWFuaWZlc3RNb2RlbCxcblx0XHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dDogb1BhZ2VNb2RlbCxcblx0XHRcdFx0XHRcdFx0dmlld0RhdGE6IG9WaWV3RGF0YU1vZGVsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0YXBwQ29tcG9uZW50OiBvQXBwQ29tcG9uZW50XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRpZDogc1N0YWJsZUlkLFxuXHRcdFx0XHR2aWV3TmFtZTogbVNlcnZpY2VTZXR0aW5ncy52aWV3TmFtZSB8fCBvQ29tcG9uZW50LmdldFZpZXdOYW1lKCksXG5cdFx0XHRcdHZpZXdEYXRhOiBtVmlld0RhdGEsXG5cdFx0XHRcdGNhY2hlOiB7IGtleXM6IFtzQ2FjaGVLZXldIH0sXG5cdFx0XHRcdG1vZGVsczoge1xuXHRcdFx0XHRcdFwic2FwLmZlLmkxOG5cIjogb1Jlc291cmNlTW9kZWxcblx0XHRcdFx0fSxcblx0XHRcdFx0aGVpZ2h0OiBcIjEwMCVcIlxuXHRcdFx0fTtcblx0XHRcdHJldHVybiBvVmlld1NldHRpbmdzO1xuXHRcdH1cblx0XHRjb25zdCBjcmVhdGVFcnJvclBhZ2UgPSAocmVhc29uOiBhbnkpID0+IHtcblx0XHRcdC8vIGp1c3QgcmVwbGFjZSB0aGUgdmlldyBuYW1lIGFuZCBhZGQgYW4gYWRkaXRpb25hbCBtb2RlbCBjb250YWluaW5nIHRoZSByZWFzb24sIGJ1dFxuXHRcdFx0Ly8ga2VlcCB0aGUgb3RoZXIgc2V0dGluZ3Ncblx0XHRcdExvZy5lcnJvcihyZWFzb24ubWVzc2FnZSwgcmVhc29uKTtcblx0XHRcdG9WaWV3U2V0dGluZ3Mudmlld05hbWUgPSBtU2VydmljZVNldHRpbmdzLmVycm9yVmlld05hbWUgfHwgXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy52aWV3LlRlbXBsYXRpbmdFcnJvclBhZ2VcIjtcblx0XHRcdG9WaWV3U2V0dGluZ3MucHJlcHJvY2Vzc29ycy54bWwubW9kZWxzW1wiZXJyb3JcIl0gPSBuZXcgSlNPTk1vZGVsKHJlYXNvbik7XG5cblx0XHRcdHJldHVybiBvQ29tcG9uZW50LnJ1bkFzT3duZXIoKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gVmlldy5jcmVhdGUob1ZpZXdTZXR0aW5ncykudGhlbigob1ZpZXc6IGFueSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMub1ZpZXcgPSBvVmlldztcblx0XHRcdFx0XHR0aGlzLm9WaWV3LnNldE1vZGVsKG5ldyBNYW5hZ2VkT2JqZWN0TW9kZWwodGhpcy5vVmlldyksIFwiJHZpZXdcIik7XG5cdFx0XHRcdFx0b0NvbXBvbmVudC5zZXRBZ2dyZWdhdGlvbihcInJvb3RDb250cm9sXCIsIHRoaXMub1ZpZXcpO1xuXHRcdFx0XHRcdHJldHVybiBzQ2FjaGVLZXk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fTtcblx0XHRyZXR1cm4gb0FwcENvbXBvbmVudFxuXHRcdFx0LmdldFNlcnZpY2UoXCJyb3V0aW5nU2VydmljZVwiKVxuXHRcdFx0LnRoZW4oKG9Sb3V0aW5nU2VydmljZTogYW55KSA9PiB7XG5cdFx0XHRcdC8vIFJldHJpZXZlIHRoZSB2aWV3TGV2ZWwgZm9yIHRoZSBjb21wb25lbnRcblx0XHRcdFx0Y29uc3Qgb1RhcmdldEluZm8gPSBvUm91dGluZ1NlcnZpY2UuZ2V0VGFyZ2V0SW5mb3JtYXRpb25Gb3Iob0NvbXBvbmVudCk7XG5cdFx0XHRcdGNvbnN0IG1PdXRib3VuZHMgPVxuXHRcdFx0XHRcdG9NYW5pZmVzdENvbnRlbnRbXCJzYXAuYXBwXCJdICYmXG5cdFx0XHRcdFx0b01hbmlmZXN0Q29udGVudFtcInNhcC5hcHBcIl0uY3Jvc3NOYXZpZ2F0aW9uICYmXG5cdFx0XHRcdFx0b01hbmlmZXN0Q29udGVudFtcInNhcC5hcHBcIl0uY3Jvc3NOYXZpZ2F0aW9uLm91dGJvdW5kcztcblx0XHRcdFx0Y29uc3QgbU5hdmlnYXRpb24gPSBvQ29tcG9uZW50LmdldE5hdmlnYXRpb24oKSB8fCB7fTtcblx0XHRcdFx0T2JqZWN0LmtleXMobU5hdmlnYXRpb24pLmZvckVhY2goZnVuY3Rpb24obmF2aWdhdGlvbk9iamVjdEtleTogc3RyaW5nKSB7XG5cdFx0XHRcdFx0Y29uc3QgbmF2aWdhdGlvbk9iamVjdCA9IG1OYXZpZ2F0aW9uW25hdmlnYXRpb25PYmplY3RLZXldO1xuXHRcdFx0XHRcdGxldCBvdXRib3VuZENvbmZpZztcblx0XHRcdFx0XHRpZiAobmF2aWdhdGlvbk9iamVjdC5kZXRhaWwgJiYgbmF2aWdhdGlvbk9iamVjdC5kZXRhaWwub3V0Ym91bmQgJiYgbU91dGJvdW5kc1tuYXZpZ2F0aW9uT2JqZWN0LmRldGFpbC5vdXRib3VuZF0pIHtcblx0XHRcdFx0XHRcdG91dGJvdW5kQ29uZmlnID0gbU91dGJvdW5kc1tuYXZpZ2F0aW9uT2JqZWN0LmRldGFpbC5vdXRib3VuZF07XG5cdFx0XHRcdFx0XHRuYXZpZ2F0aW9uT2JqZWN0LmRldGFpbC5vdXRib3VuZERldGFpbCA9IHtcblx0XHRcdFx0XHRcdFx0c2VtYW50aWNPYmplY3Q6IG91dGJvdW5kQ29uZmlnLnNlbWFudGljT2JqZWN0LFxuXHRcdFx0XHRcdFx0XHRhY3Rpb246IG91dGJvdW5kQ29uZmlnLmFjdGlvbixcblx0XHRcdFx0XHRcdFx0cGFyYW1ldGVyczogb3V0Ym91bmRDb25maWcucGFyYW1ldGVyc1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKG5hdmlnYXRpb25PYmplY3QuY3JlYXRlICYmIG5hdmlnYXRpb25PYmplY3QuY3JlYXRlLm91dGJvdW5kICYmIG1PdXRib3VuZHNbbmF2aWdhdGlvbk9iamVjdC5jcmVhdGUub3V0Ym91bmRdKSB7XG5cdFx0XHRcdFx0XHRvdXRib3VuZENvbmZpZyA9IG1PdXRib3VuZHNbbmF2aWdhdGlvbk9iamVjdC5jcmVhdGUub3V0Ym91bmRdO1xuXHRcdFx0XHRcdFx0bmF2aWdhdGlvbk9iamVjdC5jcmVhdGUub3V0Ym91bmREZXRhaWwgPSB7XG5cdFx0XHRcdFx0XHRcdHNlbWFudGljT2JqZWN0OiBvdXRib3VuZENvbmZpZy5zZW1hbnRpY09iamVjdCxcblx0XHRcdFx0XHRcdFx0YWN0aW9uOiBvdXRib3VuZENvbmZpZy5hY3Rpb24sXG5cdFx0XHRcdFx0XHRcdHBhcmFtZXRlcnM6IG91dGJvdW5kQ29uZmlnLnBhcmFtZXRlcnNcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0bVZpZXdEYXRhID0ge1xuXHRcdFx0XHRcdG5hdmlnYXRpb246IG1OYXZpZ2F0aW9uLFxuXHRcdFx0XHRcdHZpZXdMZXZlbDogb1RhcmdldEluZm8udmlld0xldmVsLFxuXHRcdFx0XHRcdHN0YWJsZUlkOiBzU3RhYmxlSWQsXG5cdFx0XHRcdFx0Y29udGVudERlbnNpdGllczogb01hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl0uY29udGVudERlbnNpdGllcyxcblx0XHRcdFx0XHRyZXNvdXJjZUJ1bmRsZTogb1Jlc291cmNlTW9kZWwuX19idW5kbGUsXG5cdFx0XHRcdFx0ZnVsbENvbnRleHRQYXRoOiBzRnVsbENvbnRleHRQYXRoLFxuXHRcdFx0XHRcdGlzRGVza3RvcDogKERldmljZSBhcyBhbnkpLnN5c3RlbS5kZXNrdG9wLFxuXHRcdFx0XHRcdGlzUGhvbmU6IChEZXZpY2UgYXMgYW55KS5zeXN0ZW0ucGhvbmVcblx0XHRcdFx0fTtcblxuXHRcdFx0XHRpZiAob0NvbXBvbmVudC5nZXRWaWV3RGF0YSkge1xuXHRcdFx0XHRcdE9iamVjdC5hc3NpZ24obVZpZXdEYXRhLCBvQ29tcG9uZW50LmdldFZpZXdEYXRhKCkpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3Qgb1NoZWxsU2VydmljZXMgPSBvQXBwQ29tcG9uZW50LmdldFNoZWxsU2VydmljZXMoKTtcblx0XHRcdFx0bVZpZXdEYXRhLmNvbnZlcnRlclR5cGUgPSBzQ29udmVydGVyVHlwZTtcblx0XHRcdFx0bVZpZXdEYXRhLnNoZWxsQ29udGVudERlbnNpdHkgPSBvU2hlbGxTZXJ2aWNlcy5nZXRDb250ZW50RGVuc2l0eSgpO1xuXHRcdFx0XHRtVmlld0RhdGEudXNlTmV3TGF6eUxvYWRpbmcgPSBVcmlQYXJhbWV0ZXJzLmZyb21RdWVyeSh3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5nZXQoXCJzYXAtZmUteHgtbGF6eWxvYWRpbmd0ZXN0XCIpID09PSBcInRydWVcIjtcblx0XHRcdFx0bVZpZXdEYXRhLnJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3QgPVxuXHRcdFx0XHRcdG9NYW5pZmVzdENvbnRlbnRbXCJzYXAuZmVcIl0gJiYgb01hbmlmZXN0Q29udGVudFtcInNhcC5mZVwiXS5mb3JtXG5cdFx0XHRcdFx0XHQ/IG9NYW5pZmVzdENvbnRlbnRbXCJzYXAuZmVcIl0uZm9ybS5yZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0XG5cdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0b1ZpZXdEYXRhTW9kZWwgPSBuZXcgSlNPTk1vZGVsKG1WaWV3RGF0YSk7XG5cdFx0XHRcdGlmIChtVmlld0RhdGEgJiYgbVZpZXdEYXRhLmNvbnRyb2xDb25maWd1cmF0aW9uKSB7XG5cdFx0XHRcdFx0T2JqZWN0LmtleXMobVZpZXdEYXRhLmNvbnRyb2xDb25maWd1cmF0aW9uKS5mb3JFYWNoKGZ1bmN0aW9uKHNBbm5vdGF0aW9uUGF0aDogc3RyaW5nKSB7XG5cdFx0XHRcdFx0XHRpZiAoc0Fubm90YXRpb25QYXRoLmluZGV4T2YoXCJbXCIpICE9PSAtMSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzVGFyZ2V0QW5ub3RhdGlvblBhdGggPSByZXNvbHZlRHluYW1pY0V4cHJlc3Npb24oc0Fubm90YXRpb25QYXRoLCBvTWV0YU1vZGVsKTtcblx0XHRcdFx0XHRcdFx0bVZpZXdEYXRhLmNvbnRyb2xDb25maWd1cmF0aW9uW3NUYXJnZXRBbm5vdGF0aW9uUGF0aF0gPSBtVmlld0RhdGEuY29udHJvbENvbmZpZ3VyYXRpb25bc0Fubm90YXRpb25QYXRoXTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRNZXRhTW9kZWxDb252ZXJ0ZXIuY29udmVydFR5cGVzKG9NZXRhTW9kZWwsIG9BcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKSk7XG5cdFx0XHRcdG9QYWdlTW9kZWwgPSBuZXcgVGVtcGxhdGVNb2RlbCgoKSA9PiB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdGlmICghIW9QYWdlTW9kZWxDYWNoZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gb1BhZ2VNb2RlbENhY2hlO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgb0RpYWdub3N0aWNzID0gb0FwcENvbXBvbmVudC5nZXREaWFnbm9zdGljcygpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBpSXNzdWVDb3VudCA9IG9EaWFnbm9zdGljcy5nZXRJc3N1ZXMoKS5sZW5ndGg7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG9Db252ZXJ0ZXJQYWdlTW9kZWwgPSBUZW1wbGF0ZUNvbnZlcnRlci5jb252ZXJ0UGFnZShcblx0XHRcdFx0XHRcdFx0XHRzQ29udmVydGVyVHlwZSxcblx0XHRcdFx0XHRcdFx0XHRvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRcdG1WaWV3RGF0YSxcblx0XHRcdFx0XHRcdFx0XHRvRGlhZ25vc3RpY3MsXG5cdFx0XHRcdFx0XHRcdFx0c0Z1bGxDb250ZXh0UGF0aCxcblx0XHRcdFx0XHRcdFx0XHRvQXBwQ29tcG9uZW50LmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKClcblx0XHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0XHRjb25zdCBhSXNzdWVzID0gb0RpYWdub3N0aWNzLmdldElzc3VlcygpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBhQWRkZWRJc3N1ZXMgPSBhSXNzdWVzLnNsaWNlKGlJc3N1ZUNvdW50KTtcblx0XHRcdFx0XHRcdFx0aWYgKGFBZGRlZElzc3Vlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0TG9nLndhcm5pbmcoXG5cdFx0XHRcdFx0XHRcdFx0XHRcIlNvbWUgaXNzdWVzIGhhdmUgYmVlbiBkZXRlY3RlZCBpbiB5b3VyIHByb2plY3QsIHBsZWFzZSBjaGVjayB0aGUgVUk1IHN1cHBvcnQgYXNzaXN0YW50IHJ1bGUgZm9yIHNhcC5mZS5jb3JlXCJcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvQ29udmVydGVyUGFnZU1vZGVsO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IsIGVycm9yKTtcblx0XHRcdFx0XHRcdHJldHVybiB7fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sIG9NZXRhTW9kZWwpO1xuXG5cdFx0XHRcdGlmICghYkVycm9yKSB7XG5cdFx0XHRcdFx0b1ZpZXdTZXR0aW5ncyA9IGdldFZpZXdTZXR0aW5ncygpO1xuXHRcdFx0XHRcdC8vIFNldHRpbmcgdGhlIHBhZ2VNb2RlbCBvbiB0aGUgY29tcG9uZW50IGZvciBwb3RlbnRpYWwgcmV1c2Vcblx0XHRcdFx0XHRvQ29tcG9uZW50LnNldE1vZGVsKG9QYWdlTW9kZWwsIFwiX3BhZ2VNb2RlbFwiKTtcblx0XHRcdFx0XHRyZXR1cm4gb0NvbXBvbmVudC5ydW5Bc093bmVyKCgpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBWaWV3LmNyZWF0ZShvVmlld1NldHRpbmdzKVxuXHRcdFx0XHRcdFx0XHQuY2F0Y2goY3JlYXRlRXJyb3JQYWdlKVxuXHRcdFx0XHRcdFx0XHQudGhlbigob1ZpZXc6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMub1ZpZXcgPSBvVmlldztcblx0XHRcdFx0XHRcdFx0XHR0aGlzLm9WaWV3LnNldE1vZGVsKG5ldyBNYW5hZ2VkT2JqZWN0TW9kZWwodGhpcy5vVmlldyksIFwiJHZpZXdcIik7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5vVmlldy5zZXRNb2RlbChvVmlld0RhdGFNb2RlbCwgXCJ2aWV3RGF0YVwiKTtcblx0XHRcdFx0XHRcdFx0XHRvQ29tcG9uZW50LnNldEFnZ3JlZ2F0aW9uKFwicm9vdENvbnRyb2xcIiwgdGhpcy5vVmlldyk7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gRmlyZSBhbmQgZm9yZ2V0IGluIHRoZSBjYWNoZVxuXHRcdFx0XHRcdFx0XHRcdGlmICghb1BhZ2VNb2RlbENhY2hlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLl9zZXRDYWNoZWRNb2RlbChzUGFnZU1vZGVsQ2FjaGVLZXksIChvUGFnZU1vZGVsIGFzIGFueSkuZ2V0RGF0YSgpKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNDYWNoZUtleTtcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0LmNhdGNoKGUgPT4gTG9nLmVycm9yKGUubWVzc2FnZSwgZSkpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKGVycm9yLm1lc3NhZ2UsIGVycm9yKTtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgY3JlYXRpbmcgdmlldyA6IFwiICsgZXJyb3IpO1xuXHRcdFx0fSk7XG5cdH1cblx0Z2V0VmlldygpIHtcblx0XHRyZXR1cm4gdGhpcy5vVmlldztcblx0fVxuXHRnZXRJbnRlcmZhY2UoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXHRleGl0KCkge1xuXHRcdC8vIERlcmVnaXN0ZXIgZ2xvYmFsIGluc3RhbmNlXG5cdFx0dGhpcy5vUmVzb3VyY2VNb2RlbFNlcnZpY2UgJiYgdGhpcy5vUmVzb3VyY2VNb2RlbFNlcnZpY2UuZGVzdHJveSgpO1xuXHRcdHRoaXMub0NhY2hlSGFuZGxlclNlcnZpY2UgJiYgdGhpcy5vQ2FjaGVIYW5kbGVyU2VydmljZS5kZXN0cm95KCk7XG5cdFx0dGhpcy5vRmFjdG9yeS5yZW1vdmVHbG9iYWxJbnN0YW5jZSgpO1xuXHR9XG59XG5jbGFzcyBUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkgZXh0ZW5kcyBTZXJ2aWNlRmFjdG9yeTxUZW1wbGF0ZWRWaWV3U2VydmljZVNldHRpbmdzPiB7XG5cdF9vSW5zdGFuY2VSZWdpc3RyeTogUmVjb3JkPHN0cmluZywgVGVtcGxhdGVkVmlld1NlcnZpY2U+ID0ge307XG5cdHN0YXRpYyBpQ3JlYXRpbmdWaWV3czogMDtcblx0Y3JlYXRlSW5zdGFuY2Uob1NlcnZpY2VDb250ZXh0OiBTZXJ2aWNlQ29udGV4dDxUZW1wbGF0ZWRWaWV3U2VydmljZVNldHRpbmdzPikge1xuXHRcdFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeS5pQ3JlYXRpbmdWaWV3cysrO1xuXG5cdFx0Y29uc3Qgb1RlbXBsYXRlZFZpZXdTZXJ2aWNlID0gbmV3IFRlbXBsYXRlZFZpZXdTZXJ2aWNlKE9iamVjdC5hc3NpZ24oeyBmYWN0b3J5OiB0aGlzIH0sIG9TZXJ2aWNlQ29udGV4dCkpO1xuXHRcdHJldHVybiBvVGVtcGxhdGVkVmlld1NlcnZpY2UuaW5pdFByb21pc2UudGhlbihmdW5jdGlvbigpIHtcblx0XHRcdFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeS5pQ3JlYXRpbmdWaWV3cy0tO1xuXHRcdFx0cmV0dXJuIG9UZW1wbGF0ZWRWaWV3U2VydmljZTtcblx0XHR9KTtcblx0fVxuXHRyZW1vdmVHbG9iYWxJbnN0YW5jZSgpIHtcblx0XHR0aGlzLl9vSW5zdGFuY2VSZWdpc3RyeSA9IHt9O1xuXHR9XG5cdHN0YXRpYyBnZXROdW1iZXJPZlZpZXdzSW5DcmVhdGlvblN0YXRlKCkge1xuXHRcdHJldHVybiBUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkuaUNyZWF0aW5nVmlld3M7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5O1xuIl19