@sapui5/sap.fe.core 1.97.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 (306) hide show
  1. package/package.json +7 -4
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AnnotationHelper.js +309 -405
  4. package/src/sap/fe/core/AnnotationHelper.ts +315 -0
  5. package/src/sap/fe/core/AppComponent.js +389 -397
  6. package/src/sap/fe/core/AppComponent.ts +403 -0
  7. package/src/sap/fe/core/AppStateHandler.js +198 -181
  8. package/src/sap/fe/core/AppStateHandler.ts +171 -0
  9. package/src/sap/fe/core/BaseController.js +83 -58
  10. package/src/sap/fe/core/BaseController.ts +68 -0
  11. package/src/sap/fe/core/BusyLocker.js +105 -121
  12. package/src/sap/fe/core/BusyLocker.ts +98 -0
  13. package/src/sap/fe/core/CommonUtils.js +2164 -2379
  14. package/src/sap/fe/core/CommonUtils.ts +2177 -0
  15. package/src/sap/fe/core/ExtensionAPI.js +279 -266
  16. package/src/sap/fe/core/ExtensionAPI.ts +250 -0
  17. package/src/sap/fe/core/PageController.js +218 -125
  18. package/src/sap/fe/core/PageController.ts +129 -0
  19. package/src/sap/fe/core/RouterProxy.js +924 -807
  20. package/src/sap/fe/core/RouterProxy.ts +840 -0
  21. package/src/sap/fe/core/Synchronization.js +41 -35
  22. package/src/sap/fe/core/Synchronization.ts +29 -0
  23. package/src/sap/fe/core/TemplateComponent.js +173 -155
  24. package/src/sap/fe/core/TemplateComponent.ts +173 -0
  25. package/src/sap/fe/core/TemplateModel.js +79 -54
  26. package/src/sap/fe/core/TemplateModel.ts +63 -0
  27. package/src/sap/fe/core/TransactionHelper.js +1560 -1579
  28. package/src/sap/fe/core/TransactionHelper.ts +1717 -0
  29. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +392 -0
  30. package/src/sap/fe/core/actions/collaboration/ActivitySync.ts +355 -0
  31. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +136 -0
  32. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +119 -0
  33. package/src/sap/fe/core/actions/collaboration/Manage.js +262 -0
  34. package/src/sap/fe/core/actions/collaboration/Manage.ts +244 -0
  35. package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +103 -0
  36. package/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
  37. package/src/sap/fe/core/actions/draft.js +521 -581
  38. package/src/sap/fe/core/actions/draft.ts +566 -0
  39. package/src/sap/fe/core/actions/messageHandling.js +564 -511
  40. package/src/sap/fe/core/actions/messageHandling.ts +552 -0
  41. package/src/sap/fe/core/actions/nonDraft.js +17 -19
  42. package/src/sap/fe/core/actions/nonDraft.ts +12 -0
  43. package/src/sap/fe/core/actions/operations.js +1093 -1211
  44. package/src/sap/fe/core/actions/operations.ts +1192 -0
  45. package/src/sap/fe/core/actions/sticky.js +114 -104
  46. package/src/sap/fe/core/actions/sticky.ts +119 -0
  47. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +70 -66
  48. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +65 -0
  49. package/src/sap/fe/core/controllerextensions/EditFlow.js +1594 -1701
  50. package/src/sap/fe/core/controllerextensions/EditFlow.ts +1672 -0
  51. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +80 -54
  52. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +61 -0
  53. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +719 -505
  54. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +783 -0
  55. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +797 -813
  56. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +803 -0
  57. package/src/sap/fe/core/controllerextensions/InternalRouting.js +1005 -973
  58. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +978 -0
  59. package/src/sap/fe/core/controllerextensions/KPIManagement.js +530 -476
  60. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +137 -46
  61. package/src/sap/fe/core/controllerextensions/MassEdit.js +144 -0
  62. package/src/sap/fe/core/controllerextensions/MassEdit.ts +156 -0
  63. package/src/sap/fe/core/controllerextensions/MessageHandler.js +234 -232
  64. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +225 -0
  65. package/src/sap/fe/core/controllerextensions/PageReady.js +302 -337
  66. package/src/sap/fe/core/controllerextensions/PageReady.ts +23 -17
  67. package/src/sap/fe/core/controllerextensions/Paginator.js +189 -148
  68. package/src/sap/fe/core/controllerextensions/Paginator.ts +163 -0
  69. package/src/sap/fe/core/controllerextensions/Placeholder.js +158 -146
  70. package/src/sap/fe/core/controllerextensions/Placeholder.ts +151 -0
  71. package/src/sap/fe/core/controllerextensions/Routing.js +145 -106
  72. package/src/sap/fe/core/controllerextensions/Routing.ts +132 -0
  73. package/src/sap/fe/core/controllerextensions/RoutingListener.js +8 -6
  74. package/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
  75. package/src/sap/fe/core/controllerextensions/Share.js +220 -244
  76. package/src/sap/fe/core/controllerextensions/Share.ts +231 -0
  77. package/src/sap/fe/core/controllerextensions/SideEffects.js +593 -634
  78. package/src/sap/fe/core/controllerextensions/SideEffects.ts +29 -27
  79. package/src/sap/fe/core/controllerextensions/ViewState.js +789 -806
  80. package/src/sap/fe/core/controllerextensions/ViewState.ts +805 -0
  81. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +4 -3
  82. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
  83. package/src/sap/fe/core/controls/CommandExecution.js +68 -66
  84. package/src/sap/fe/core/controls/CommandExecution.ts +72 -0
  85. package/src/sap/fe/core/controls/ConditionalWrapper.js +91 -75
  86. package/src/sap/fe/core/controls/ConditionalWrapper.ts +83 -0
  87. package/src/sap/fe/core/controls/CustomQuickViewPage.js +131 -125
  88. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +126 -0
  89. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +105 -110
  90. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +101 -0
  91. package/src/sap/fe/core/controls/FieldWrapper.js +122 -140
  92. package/src/sap/fe/core/controls/FieldWrapper.ts +115 -0
  93. package/src/sap/fe/core/controls/FilterBar.js +163 -159
  94. package/src/sap/fe/core/controls/FilterBar.ts +143 -0
  95. package/src/sap/fe/core/controls/FormElementWrapper.js +46 -44
  96. package/src/sap/fe/core/controls/FormElementWrapper.ts +40 -0
  97. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +38 -42
  98. package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
  99. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +2 -1
  100. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +127 -116
  101. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +98 -0
  102. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +242 -255
  103. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +245 -0
  104. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +151 -141
  105. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
  106. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +336 -322
  107. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
  108. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +106 -0
  109. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +79 -0
  110. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +70 -0
  111. package/src/sap/fe/core/converters/ConverterContext.js +348 -367
  112. package/src/sap/fe/core/converters/ConverterContext.ts +33 -19
  113. package/src/sap/fe/core/converters/ManifestSettings.js +12 -1
  114. package/src/sap/fe/core/converters/ManifestSettings.ts +16 -1
  115. package/src/sap/fe/core/converters/ManifestWrapper.js +354 -354
  116. package/src/sap/fe/core/converters/ManifestWrapper.ts +34 -6
  117. package/src/sap/fe/core/converters/MetaModelConverter.js +72 -9
  118. package/src/sap/fe/core/converters/MetaModelConverter.ts +75 -16
  119. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  120. package/src/sap/fe/core/converters/TemplateConverter.ts +4 -3
  121. package/src/sap/fe/core/converters/annotations/DataField.js +28 -14
  122. package/src/sap/fe/core/converters/annotations/DataField.ts +38 -14
  123. package/src/sap/fe/core/converters/common/AnnotationConverter.js +33 -21
  124. package/src/sap/fe/core/converters/controls/Common/Action.js +11 -2
  125. package/src/sap/fe/core/converters/controls/Common/Action.ts +8 -2
  126. package/src/sap/fe/core/converters/controls/Common/Chart.js +5 -3
  127. package/src/sap/fe/core/converters/controls/Common/Chart.ts +11 -3
  128. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +3 -3
  129. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +2 -2
  130. package/src/sap/fe/core/converters/controls/Common/Form.js +21 -11
  131. package/src/sap/fe/core/converters/controls/Common/Form.ts +28 -6
  132. package/src/sap/fe/core/converters/controls/Common/KPI.js +69 -4
  133. package/src/sap/fe/core/converters/controls/Common/KPI.ts +75 -2
  134. package/src/sap/fe/core/converters/controls/Common/Table.js +507 -408
  135. package/src/sap/fe/core/converters/controls/Common/Table.ts +618 -500
  136. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +592 -0
  137. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +718 -0
  138. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +465 -59
  139. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +462 -72
  140. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +2 -2
  141. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +1 -1
  142. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +17 -9
  143. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +24 -9
  144. package/src/sap/fe/core/converters/helpers/Aggregation.js +118 -121
  145. package/src/sap/fe/core/converters/helpers/Aggregation.ts +28 -5
  146. package/src/sap/fe/core/converters/helpers/BindingHelper.js +20 -6
  147. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
  148. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +12 -1
  149. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
  150. package/src/sap/fe/core/converters/helpers/IssueManager.js +7 -1
  151. package/src/sap/fe/core/converters/helpers/IssueManager.ts +6 -0
  152. package/src/sap/fe/core/converters/helpers/Key.js +42 -57
  153. package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
  154. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +28 -7
  155. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +23 -6
  156. package/src/sap/fe/core/converters/templates/ListReportConverter.js +20 -7
  157. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +36 -14
  158. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +7 -5
  159. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +5 -1
  160. package/src/sap/fe/core/designtime/AppComponent.designtime.js +93 -90
  161. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
  162. package/src/sap/fe/core/formatters/CollaborationFormatter.js +104 -0
  163. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
  164. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  165. package/src/sap/fe/core/formatters/CriticalityFormatter.ts +1 -1
  166. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  167. package/src/sap/fe/core/formatters/FPMFormatter.ts +4 -10
  168. package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
  169. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -1
  170. package/src/sap/fe/core/formatters/TableFormatter.js +91 -29
  171. package/src/sap/fe/core/formatters/TableFormatter.ts +94 -28
  172. package/src/sap/fe/core/formatters/ValueFormatter.js +30 -5
  173. package/src/sap/fe/core/formatters/ValueFormatter.ts +30 -7
  174. package/src/sap/fe/core/fpm/Component.js +51 -54
  175. package/src/sap/fe/core/fpm/Component.ts +48 -0
  176. package/src/sap/fe/core/helpers/AppStartupHelper.js +373 -0
  177. package/src/sap/fe/core/helpers/AppStartupHelper.ts +417 -0
  178. package/src/sap/fe/core/helpers/BindingExpression.js +489 -442
  179. package/src/sap/fe/core/helpers/BindingExpression.ts +486 -469
  180. package/src/sap/fe/core/helpers/ClassSupport.js +212 -76
  181. package/src/sap/fe/core/helpers/ClassSupport.ts +198 -71
  182. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +64 -59
  183. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +52 -0
  184. package/src/sap/fe/core/helpers/EditState.js +81 -84
  185. package/src/sap/fe/core/helpers/EditState.ts +81 -0
  186. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +62 -48
  187. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +49 -0
  188. package/src/sap/fe/core/helpers/FPMHelper.js +52 -56
  189. package/src/sap/fe/core/helpers/FPMHelper.ts +62 -0
  190. package/src/sap/fe/core/helpers/KeepAliveHelper.js +4 -5
  191. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +10 -10
  192. package/src/sap/fe/core/helpers/MassEditHelper.js +604 -0
  193. package/src/sap/fe/core/helpers/MassEditHelper.ts +699 -0
  194. package/src/sap/fe/core/helpers/ModelHelper.js +253 -225
  195. package/src/sap/fe/core/helpers/ModelHelper.ts +250 -0
  196. package/src/sap/fe/core/helpers/PasteHelper.js +210 -132
  197. package/src/sap/fe/core/helpers/PasteHelper.ts +196 -0
  198. package/src/sap/fe/core/helpers/SemanticDateOperators.js +336 -313
  199. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +334 -0
  200. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +66 -67
  201. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +73 -0
  202. package/src/sap/fe/core/helpers/StableIdHelper.js +4 -7
  203. package/src/sap/fe/core/helpers/StableIdHelper.ts +2 -6
  204. package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
  205. package/src/sap/fe/core/jsx-runtime/jsx.ts +1 -1
  206. package/src/sap/fe/core/library.js +427 -425
  207. package/src/sap/fe/core/library.support.js +23 -27
  208. package/src/sap/fe/core/library.support.ts +23 -0
  209. package/src/sap/fe/core/library.ts +420 -0
  210. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +64 -0
  211. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +69 -0
  212. package/src/sap/fe/core/messagebundle.properties +78 -13
  213. package/src/sap/fe/core/messagebundle_ar.properties +58 -7
  214. package/src/sap/fe/core/messagebundle_bg.properties +58 -7
  215. package/src/sap/fe/core/messagebundle_ca.properties +58 -7
  216. package/src/sap/fe/core/messagebundle_cs.properties +59 -8
  217. package/src/sap/fe/core/messagebundle_cy.properties +58 -7
  218. package/src/sap/fe/core/messagebundle_da.properties +58 -7
  219. package/src/sap/fe/core/messagebundle_de.properties +58 -7
  220. package/src/sap/fe/core/messagebundle_el.properties +58 -7
  221. package/src/sap/fe/core/messagebundle_en.properties +57 -6
  222. package/src/sap/fe/core/messagebundle_en_GB.properties +57 -6
  223. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +61 -6
  224. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +58 -7
  225. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +58 -7
  226. package/src/sap/fe/core/messagebundle_es.properties +58 -7
  227. package/src/sap/fe/core/messagebundle_es_MX.properties +58 -7
  228. package/src/sap/fe/core/messagebundle_et.properties +58 -7
  229. package/src/sap/fe/core/messagebundle_fi.properties +60 -9
  230. package/src/sap/fe/core/messagebundle_fr.properties +64 -13
  231. package/src/sap/fe/core/messagebundle_fr_CA.properties +59 -8
  232. package/src/sap/fe/core/messagebundle_hi.properties +58 -7
  233. package/src/sap/fe/core/messagebundle_hr.properties +58 -7
  234. package/src/sap/fe/core/messagebundle_hu.properties +59 -8
  235. package/src/sap/fe/core/messagebundle_id.properties +61 -10
  236. package/src/sap/fe/core/messagebundle_it.properties +58 -7
  237. package/src/sap/fe/core/messagebundle_iw.properties +58 -7
  238. package/src/sap/fe/core/messagebundle_ja.properties +58 -7
  239. package/src/sap/fe/core/messagebundle_kk.properties +58 -7
  240. package/src/sap/fe/core/messagebundle_ko.properties +58 -7
  241. package/src/sap/fe/core/messagebundle_lt.properties +58 -7
  242. package/src/sap/fe/core/messagebundle_lv.properties +59 -8
  243. package/src/sap/fe/core/messagebundle_ms.properties +58 -7
  244. package/src/sap/fe/core/messagebundle_nl.properties +58 -7
  245. package/src/sap/fe/core/messagebundle_no.properties +58 -7
  246. package/src/sap/fe/core/messagebundle_pl.properties +58 -7
  247. package/src/sap/fe/core/messagebundle_pt.properties +59 -8
  248. package/src/sap/fe/core/messagebundle_pt_PT.properties +58 -7
  249. package/src/sap/fe/core/messagebundle_ro.properties +58 -7
  250. package/src/sap/fe/core/messagebundle_ru.properties +58 -7
  251. package/src/sap/fe/core/messagebundle_sh.properties +58 -7
  252. package/src/sap/fe/core/messagebundle_sk.properties +58 -7
  253. package/src/sap/fe/core/messagebundle_sl.properties +58 -7
  254. package/src/sap/fe/core/messagebundle_sv.properties +59 -8
  255. package/src/sap/fe/core/messagebundle_th.properties +58 -7
  256. package/src/sap/fe/core/messagebundle_tr.properties +60 -9
  257. package/src/sap/fe/core/messagebundle_uk.properties +58 -7
  258. package/src/sap/fe/core/messagebundle_vi.properties +58 -7
  259. package/src/sap/fe/core/messagebundle_zh_CN.properties +58 -7
  260. package/src/sap/fe/core/messagebundle_zh_TW.properties +58 -7
  261. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +45 -71
  262. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
  263. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +231 -202
  264. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +212 -0
  265. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +67 -92
  266. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +10 -6
  267. package/src/sap/fe/core/services/NavigationServiceFactory.js +351 -300
  268. package/src/sap/fe/core/services/NavigationServiceFactory.ts +313 -0
  269. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +114 -81
  270. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +83 -0
  271. package/src/sap/fe/core/services/RoutingServiceFactory.js +927 -1152
  272. package/src/sap/fe/core/services/RoutingServiceFactory.ts +898 -0
  273. package/src/sap/fe/core/services/ShellServicesFactory.js +649 -707
  274. package/src/sap/fe/core/services/ShellServicesFactory.ts +52 -15
  275. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +569 -637
  276. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +78 -102
  277. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +429 -478
  278. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +460 -0
  279. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +10 -8
  280. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +8 -0
  281. package/src/sap/fe/core/support/AnnotationIssue.support.js +15 -3
  282. package/src/sap/fe/core/support/AnnotationIssue.support.ts +16 -2
  283. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -2
  284. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +1 -1
  285. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  286. package/src/sap/fe/core/support/CommonHelper.ts +1 -1
  287. package/src/sap/fe/core/support/Diagnostics.js +36 -48
  288. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +38 -0
  289. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +18 -0
  290. package/src/sap/fe/core/templating/DataModelPathHelper.js +97 -127
  291. package/src/sap/fe/core/templating/DataModelPathHelper.ts +112 -135
  292. package/src/sap/fe/core/templating/DisplayModeFormatter.js +114 -0
  293. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +86 -0
  294. package/src/sap/fe/core/templating/FieldControlHelper.js +8 -8
  295. package/src/sap/fe/core/templating/FieldControlHelper.ts +25 -7
  296. package/src/sap/fe/core/templating/FilterHelper.js +140 -78
  297. package/src/sap/fe/core/templating/FilterHelper.ts +149 -78
  298. package/src/sap/fe/core/templating/PropertyHelper.js +3 -3
  299. package/src/sap/fe/core/templating/PropertyHelper.ts +2 -2
  300. package/src/sap/fe/core/templating/UIFormatters.js +76 -135
  301. package/src/sap/fe/core/templating/UIFormatters.ts +76 -99
  302. package/src/sap/fe/core/type/Email.js +1 -1
  303. package/src/sap/fe/core/type/Email.ts +4 -6
  304. package/ui5.yaml +0 -3
  305. package/src/sap/fe/core/controls/filterbar.d.js +0 -8
  306. package/src/sap/fe/core/controls/filterbar.d.ts +0 -0
@@ -1,302 +1,353 @@
1
1
  /*!
2
- * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(
6
- ["sap/ui/core/service/Service", "sap/ui/core/service/ServiceFactory", "sap/base/Log", "sap/fe/navigation/NavigationHandler"],
7
- function(Service, ServiceFactory, Log, NavigationHandler) {
8
- "use strict";
9
-
10
- var NavigationService = Service.extend("sap.fe.core.services.NavigationService", {
11
- initPromise: null,
12
- init: function() {
13
- var oContext = this.getContext(),
14
- oComponent = oContext && oContext.scopeObject;
15
-
16
- this.oNavHandler = new NavigationHandler(oComponent);
17
- this.oNavHandler.setModel(oComponent.getModel());
18
- this.initPromise = Promise.resolve(this);
19
- },
20
- exit: function() {
21
- this.oNavHandler.destroy();
22
- delete this.oNavHandler;
23
- },
24
-
25
- /**
26
- * Triggers a cross-app navigation after saving the inner and the cross-app states.
27
- * @private
28
- * @ui5-restricted
29
- * @param {string} sSemanticObject Semantic object of the target app
30
- * @param {string} sActionName Action of the target app
31
- * @param {object | string } [vNavigationParameters] Navigation parameters as an object with key/value pairs or as a string representation of
32
- * such an object. If passed as an object, the properties are not checked against the <code>IsPotentialSensitive</code> or
33
- * <code>Measure</code> type.
34
- * @param {object} [oInnerAppData] Object for storing current state of the app
35
- * @param {Function} [fnOnError] Callback that is called if an error occurs during navigation <br>
36
- * @param {object} oExternalAppData Object for storing the state which will be forwarded to the target component.
37
- * @param {string} [sNavMode] Argument is used to overwrite the FLP-configured target for opening a URL. If used, only the
38
- * <code>explace</code> or <code>inplace</code> values are allowed. Any other value will lead to an exception
39
- * <code>NavigationHandler.INVALID_NAV_MODE</code>.
40
- **/
41
- navigate: function(sSemanticObject, sActionName, vNavigationParameters, oInnerAppData, fnOnError, oExternalAppData, sNavMode) {
42
- // TODO: Navigation Handler does not handle navigation without a context
43
- // but in v4 DataFieldForIBN with requiresContext false can trigger a navigation without any context
44
- // This should be handled
45
- this.oNavHandler.navigate(
46
- sSemanticObject,
47
- sActionName,
48
- vNavigationParameters,
49
- oInnerAppData,
50
- fnOnError,
51
- oExternalAppData,
52
- sNavMode
53
- );
54
- },
55
- /**
56
- * Parses the incoming URL and returns a Promise.
57
- * @returns {object} A Promise object which returns the
58
- * extracted app state, the startup parameters, and the type of navigation when execution is successful,
59
- * @private
60
- * @ui5-restricted
61
- **/
62
- parseNavigation: function() {
63
- return this.oNavHandler.parseNavigation();
64
- },
65
- /**
66
- * Processes navigation-related tasks related to beforePopoverOpens event handling for the SmartLink control and returns a Promise object.
67
- *
68
- * @param {object} oTableEventParameters The parameters made available by the SmartTable control when the SmartLink control has been clicked,
69
- * an instance of a PopOver object
70
- * @param {string} sSelectionVariant Stringified JSON object as returned, for example, from getDataSuiteFormat() of the SmartFilterBar control
71
- * @param {object} [mInnerAppData] Object containing the current state of the app. If provided, opening the Popover is deferred until the
72
- * inner app data is saved in a consistent way.
73
- * @returns {Promise} A Promise object to monitor when all actions of the function have been executed; if the execution is successful, the
74
- * modified oTableEventParameters is returned; if an error occurs, an error object of type
75
- * {@link sap.fe.navigation.NavError} is returned
76
- * @private
77
- */
78
- _processBeforeSmartLinkPopoverOpens: function(oTableEventParameters, sSelectionVariant, mInnerAppData) {
79
- return this.oNavHandler.processBeforeSmartLinkPopoverOpens(oTableEventParameters, sSelectionVariant, mInnerAppData);
80
- },
81
-
82
- /**
83
- * Processes selectionVariant string and returns a Promise object (semanticAttributes and AppStateKey).
84
- * @param {string} sSelectionVariant Stringified JSON object
85
- * @returns {object} A Promise object to monitor when all actions of the function have been executed; if the execution is successful, the
86
- * semanticAttributes as well as the appStateKey are returned; if an error occurs, an error object of type
87
- * {@link sap.fe.navigation.NavError} is returned
88
- * <br>
89
- * @example <code>
90
- *
91
- * var oSelectionVariant = new sap.fe.navigation.SelectionVariant();
92
- * oSelectionVariant.addSelectOption("CompanyCode", "I", "EQ", "0001");
93
- * oSelectionVariant.addSelectOption("Customer", "I", "EQ", "C0001");
94
- * var sSelectionVariant= oSelectionVariant.toJSONString();
95
- *
96
- * var oNavigationHandler = new sap.fe.navigation.NavigationHandler(oController);
97
- * var oPromiseObject = oNavigationHandler._getAppStateKeyAndUrlParameters(sSelectionVariant);
98
- *
99
- * oPromiseObject.done(function(oSemanticAttributes, sAppStateKey){
100
- * // here you can add coding that should run after all app state and the semantic attributes have been returned.
101
- * });
102
- *
103
- * oPromiseObject.fail(function(oError){
104
- * //some error handling
105
- * });
106
- *
107
- * </code>
108
- * @private
109
- * @ui5-restricted
110
- */
111
- getAppStateKeyAndUrlParameters: function(sSelectionVariant) {
112
- return this.oNavHandler._getAppStateKeyAndUrlParameters(sSelectionVariant);
113
- },
114
-
115
- /**
116
- * Gets the application specific technical parameters.
117
- * @returns {Array} Containing the technical parameters.
118
- * @private
119
- * @ui5-restricted
120
- */
121
- getTechnicalParameters: function() {
122
- return this.oNavHandler.getTechnicalParameters();
123
- },
124
- /**
125
- * Sets the application specific technical parameters. Technical parameters will not be added to the selection variant passed to the
126
- * application.
127
- * As a default sap-system, sap-ushell-defaultedParameterNames and hcpApplicationId are considered as technical parameters.
128
- * @param {Array} aTechnicalParameters List of parameter names to be considered as technical parameters. <code>null</code> or
129
- * <code>undefined</code> may be used to reset the complete list.
130
- * @private
131
- * @ui5-restricted
132
- */
133
- setTechnicalParameters: function(aTechnicalParameters) {
134
- this.oNavHandler.setTechnicalParameters(aTechnicalParameters);
135
- },
136
- /**
137
- * Sets the model that is used for verification of sensitive information. If the model is not set, the unnamed component model is used for the
138
- * verification of sensitive information.
139
- * @private
140
- * @ui5-restricted
141
- * @param {sap.ui.model.odata.v2.ODataModel} oModel Model For checking sensitive information
142
- */
143
- setModel: function(oModel) {
144
- this.oNavHandler.setModel(oModel);
145
- },
146
- /**
147
- * Changes the URL according to the current app state and stores the app state for later retrieval.
148
- * @private
149
- * @ui5-restricted
150
- * @param {object} mInnerAppData Object containing the current state of the app
151
- * @param {boolean} [bImmediateHashReplace=false] If set to false, the inner app hash will not be replaced until storing is successful; do not
152
- * @returns {object} A Promise object to monitor when all the actions of the function have been executed; if the execution is successful, the
153
- * app state key is returned; if an error occurs, an object of type {@link sap.fe.navigation.NavError} is
154
- * returned
155
- **/
156
- storeInnerAppState: function(mInnerAppData, bImmediateHashReplace) {
157
- return this.oNavHandler.storeInnerAppState(mInnerAppData);
158
- },
159
- /**
160
- * Changes the URL according to the current app state and stores the app state for later retrieval.
161
- * @private
162
- * @ui5-restricted
163
- * @param {object} mInnerAppData Object containing the current state of the app
164
- * @param {boolean} [bImmediateHashReplace=false] If set to false, the inner app hash will not be replaced until storing is successful; do not
165
- * @param bNotLegacy
166
-
167
- * @returns {object} An object containing the appStateId and a promise object to monitor when all the actions of the function have been
168
- * executed; Please note that the appStateKey may be undefined or empty.
169
- */
170
- storeInnerAppStateWithImmediateReturn: function(mInnerAppData, bImmediateHashReplace, bNotLegacy) {
171
- return this.oNavHandler.storeInnerAppStateWithImmediateReturn(mInnerAppData, bImmediateHashReplace, bNotLegacy);
172
- },
173
- /**
174
- * Changes the URL according to the current sAppStateKey. As an reaction route change event will be triggered.
175
- * @private
176
- * @ui5-restricted
177
- * @param {string} sAppStateKey The new app state key.
178
- */
179
- replaceHash: function(sAppStateKey) {
180
- this.oNavHandler.replaceHash(sAppStateKey);
181
- },
182
- replaceInnerAppStateKey: function(sAppHash, sAppStateKey) {
183
- return this.oNavHandler._replaceInnerAppStateKey(sAppHash, sAppStateKey);
184
- },
185
- /**
186
- * Get single values from SelectionVariant for url parameters.
187
- *
188
- * @private
189
- * @ui5-restricted
190
- * @param {object | string } [vSelectionVariant]
191
- * @param {object} [vSelectionVariant.oUrlParamaters]
192
- * @returns {pbject}
193
- */
194
- getUrlParametersFromSelectionVariant: function(vSelectionVariant) {
195
- return this.oNavHandler._getURLParametersFromSelectionVariant(vSelectionVariant);
196
- },
197
-
198
- /**
199
- * Save app state and return immediately without waiting for response.
200
- *
201
- * @private
202
- * @ui5-restricted
203
- * @param {object} oSelectionVariant Instance of sap.fe.navigation.SelectionVariant
204
- * @returns {string} AppState key
205
- */
206
- saveAppStateWithImmediateReturn: function(oSelectionVariant) {
207
- if (oSelectionVariant) {
208
- var sSelectionVariant = oSelectionVariant.toJSONString(), // create an SV for app state in string format
209
- oSelectionVariant = JSON.parse(sSelectionVariant), // convert string into JSON to store in AppState
210
- oXAppStateObject = {
211
- selectionVariant: oSelectionVariant
212
- },
213
- oReturn = this.oNavHandler._saveAppStateWithImmediateReturn(oXAppStateObject);
214
- return oReturn.appStateKey ? oReturn.appStateKey : "";
215
- }
216
- },
217
-
218
- /**
219
- * Mix Attributes and selectionVariant.
220
- *
221
- * @param {object|Array} vSemanticAttributes Object/(Array of Objects) containing key/value pairs
222
- * @param {string} sSelectionVariant The selection variant in string format as provided by the SmartFilterBar control
223
- * @param {int} [iSuppressionBehavior=sap.fe.navigation.SuppressionBehavior.standard] Indicates whether semantic
224
- * attributes with special values (see {@link sap.fe.navigation.SuppressionBehavior suppression behavior}) must be
225
- * suppressed before they are combined with the selection variant; several
226
- * {@link sap.fe.navigation.SuppressionBehavior suppression behaviors} can be combined with the bitwise OR operator
227
- * (|)
228
- * @returns {object} Instance of {@link sap.fe.navigation.SelectionVariant}
229
- */
230
- mixAttributesAndSelectionVariant: function(vSemanticAttributes, sSelectionVariant, iSuppressionBehavior) {
231
- return this.oNavHandler.mixAttributesAndSelectionVariant(vSemanticAttributes, sSelectionVariant, iSuppressionBehavior);
232
- },
233
-
234
- /**
235
- * The method creates a context url based on provided data. This context url can either be used as.
236
- *
237
- * @param {string} sEntitySetName Used for url determination
238
- * @param [oModel] The ODataModel used for url determination. If omitted, the NavigationHandler model is used.
239
- * @returns {string} The context url for the given entities
240
- */
241
- constructContextUrl: function(sEntitySetName, oModel) {
242
- return this.oNavHandler.constructContextUrl(sEntitySetName, oModel);
243
- }
244
- });
245
-
246
- function NavigationServicesMock() {
247
- this.initPromise = Promise.resolve(this);
248
- this.getInterface = function() {
249
- return this;
250
- };
251
-
252
- function fnGetEmptyObject() {
253
- return {};
254
- }
255
-
256
- function fnGetPromise() {
257
- return Promise.resolve({});
258
- }
259
-
260
- function fnGetJQueryPromise() {
261
- var oMyDeffered = jQuery.Deferred();
262
- oMyDeffered.resolve({}, {}, "initial");
263
- return oMyDeffered.promise();
264
- }
265
-
266
- function fnGetEmptyString() {
267
- return "";
268
- }
269
-
270
- // return empty object
271
- this.createEmptyAppState = fnGetEmptyObject;
272
- this.storeInnerAppStateWithImmediateReturn = fnGetEmptyObject;
273
- this.mixAttributesAndSelectionVariant = fnGetEmptyObject;
274
-
275
- // return promise
276
- this.getAppState = fnGetPromise;
277
- this.getStartupAppState = fnGetPromise;
278
- this.parseNavigation = fnGetJQueryPromise;
279
-
280
- // return empty string
281
- this.constructContextUrl = fnGetEmptyString;
282
-
283
- this.replaceInnerAppStateKey = function(sAppHash) {
284
- return sAppHash ? sAppHash : "";
285
- };
286
-
287
- this.navigate = function() {};
288
- }
289
-
290
- return ServiceFactory.extend("sap.fe.core.services.NavigationServiceFactory", {
291
- createInstance: function(oServiceContext) {
292
- var oNavigationService =
293
- sap.ushell && sap.ushell.Container ? new NavigationService(oServiceContext) : new NavigationServicesMock();
294
- // Wait For init
295
- return oNavigationService.initPromise.then(function(oService) {
296
- return oService;
297
- });
298
- }
299
- });
300
- },
301
- true
302
- );
5
+ sap.ui.define(["sap/ui/core/service/Service", "sap/ui/core/service/ServiceFactory", "sap/fe/navigation/NavigationHandler"], function (Service, ServiceFactory, NavigationHandler) {
6
+ "use strict";
7
+
8
+ var _exports = {};
9
+
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); }
11
+
12
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
13
+
14
+ var NavigationService = /*#__PURE__*/function (_Service) {
15
+ _inherits(NavigationService, _Service);
16
+
17
+ function NavigationService() {
18
+ return _Service.apply(this, arguments) || this;
19
+ }
20
+
21
+ _exports.NavigationService = NavigationService;
22
+ var _proto = NavigationService.prototype;
23
+
24
+ _proto.init = function init() {
25
+ var oContext = this.getContext(),
26
+ oComponent = oContext && oContext.scopeObject;
27
+ this.oNavHandler = new NavigationHandler(oComponent);
28
+ this.oNavHandler.setModel(oComponent.getModel());
29
+ this.initPromise = Promise.resolve(this);
30
+ };
31
+
32
+ _proto.exit = function exit() {
33
+ this.oNavHandler.destroy();
34
+ }
35
+ /**
36
+ * Triggers a cross-app navigation after saving the inner and the cross-app states.
37
+ * @private
38
+ * @ui5-restricted
39
+ * @param {string} sSemanticObject Semantic object of the target app
40
+ * @param {string} sActionName Action of the target app
41
+ * @param {object | string } [vNavigationParameters] Navigation parameters as an object with key/value pairs or as a string representation of
42
+ * such an object. If passed as an object, the properties are not checked against the <code>IsPotentialSensitive</code> or
43
+ * <code>Measure</code> type.
44
+ * @param {object} [oInnerAppData] Object for storing current state of the app
45
+ * @param {Function} [fnOnError] Callback that is called if an error occurs during navigation <br>
46
+ * @param {object} [oExternalAppData] Object for storing the state which will be forwarded to the target component.
47
+ * @param {string} [sNavMode] Argument is used to overwrite the FLP-configured target for opening a URL. If used, only the
48
+ * <code>explace</code> or <code>inplace</code> values are allowed. Any other value will lead to an exception
49
+ * <code>NavigationHandler.INVALID_NAV_MODE</code>.
50
+ **/
51
+ ;
52
+
53
+ _proto.navigate = function navigate(sSemanticObject, sActionName, vNavigationParameters, oInnerAppData, fnOnError, oExternalAppData, sNavMode) {
54
+ // TODO: Navigation Handler does not handle navigation without a context
55
+ // but in v4 DataFieldForIBN with requiresContext false can trigger a navigation without any context
56
+ // This should be handled
57
+ this.oNavHandler.navigate(sSemanticObject, sActionName, vNavigationParameters, oInnerAppData, fnOnError, oExternalAppData, sNavMode);
58
+ }
59
+ /**
60
+ * Parses the incoming URL and returns a Promise.
61
+ * @returns {object} A Promise object which returns the
62
+ * extracted app state, the startup parameters, and the type of navigation when execution is successful,
63
+ * @private
64
+ * @ui5-restricted
65
+ **/
66
+ ;
67
+
68
+ _proto.parseNavigation = function parseNavigation() {
69
+ return this.oNavHandler.parseNavigation();
70
+ }
71
+ /**
72
+ * Processes navigation-related tasks related to beforePopoverOpens event handling for the SmartLink control and returns a Promise object.
73
+ *
74
+ * @param {object} oTableEventParameters The parameters made available by the SmartTable control when the SmartLink control has been clicked,
75
+ * an instance of a PopOver object
76
+ * @param {string} sSelectionVariant Stringified JSON object as returned, for example, from getDataSuiteFormat() of the SmartFilterBar control
77
+ * @param {object} [mInnerAppData] Object containing the current state of the app. If provided, opening the Popover is deferred until the
78
+ * inner app data is saved in a consistent way.
79
+ * @returns {Promise} A Promise object to monitor when all actions of the function have been executed; if the execution is successful, the
80
+ * modified oTableEventParameters is returned; if an error occurs, an error object of type
81
+ * {@link sap.fe.navigation.NavError} is returned
82
+ * @private
83
+ */
84
+ ;
85
+
86
+ _proto._processBeforeSmartLinkPopoverOpens = function _processBeforeSmartLinkPopoverOpens(oTableEventParameters, sSelectionVariant, mInnerAppData) {
87
+ return this.oNavHandler.processBeforeSmartLinkPopoverOpens(oTableEventParameters, sSelectionVariant, mInnerAppData);
88
+ }
89
+ /**
90
+ * Processes selectionVariant string and returns a Promise object (semanticAttributes and AppStateKey).
91
+ * @param {string} sSelectionVariant Stringified JSON object
92
+ * @returns {object} A Promise object to monitor when all actions of the function have been executed; if the execution is successful, the
93
+ * semanticAttributes as well as the appStateKey are returned; if an error occurs, an error object of type
94
+ * {@link sap.fe.navigation.NavError} is returned
95
+ * <br>
96
+ * @example <code>
97
+ *
98
+ * var oSelectionVariant = new sap.fe.navigation.SelectionVariant();
99
+ * oSelectionVariant.addSelectOption("CompanyCode", "I", "EQ", "0001");
100
+ * oSelectionVariant.addSelectOption("Customer", "I", "EQ", "C0001");
101
+ * var sSelectionVariant= oSelectionVariant.toJSONString();
102
+ *
103
+ * var oNavigationHandler = new sap.fe.navigation.NavigationHandler(oController);
104
+ * var oPromiseObject = oNavigationHandler._getAppStateKeyAndUrlParameters(sSelectionVariant);
105
+ *
106
+ * oPromiseObject.done(function(oSemanticAttributes, sAppStateKey){
107
+ * // here you can add coding that should run after all app state and the semantic attributes have been returned.
108
+ * });
109
+ *
110
+ * oPromiseObject.fail(function(oError){
111
+ * //some error handling
112
+ * });
113
+ *
114
+ * </code>
115
+ * @private
116
+ * @ui5-restricted
117
+ */
118
+ ;
119
+
120
+ _proto.getAppStateKeyAndUrlParameters = function getAppStateKeyAndUrlParameters(sSelectionVariant) {
121
+ return this.oNavHandler._getAppStateKeyAndUrlParameters(sSelectionVariant);
122
+ }
123
+ /**
124
+ * Gets the application specific technical parameters.
125
+ * @returns {Array} Containing the technical parameters.
126
+ * @private
127
+ * @ui5-restricted
128
+ */
129
+ ;
130
+
131
+ _proto.getTechnicalParameters = function getTechnicalParameters() {
132
+ return this.oNavHandler.getTechnicalParameters();
133
+ }
134
+ /**
135
+ * Sets the application specific technical parameters. Technical parameters will not be added to the selection variant passed to the
136
+ * application.
137
+ * As a default sap-system, sap-ushell-defaultedParameterNames and hcpApplicationId are considered as technical parameters.
138
+ * @param {Array} aTechnicalParameters List of parameter names to be considered as technical parameters. <code>null</code> or
139
+ * <code>undefined</code> may be used to reset the complete list.
140
+ * @private
141
+ * @ui5-restricted
142
+ */
143
+ ;
144
+
145
+ _proto.setTechnicalParameters = function setTechnicalParameters(aTechnicalParameters) {
146
+ this.oNavHandler.setTechnicalParameters(aTechnicalParameters);
147
+ }
148
+ /**
149
+ * Sets the model that is used for verification of sensitive information. If the model is not set, the unnamed component model is used for the
150
+ * verification of sensitive information.
151
+ * @private
152
+ * @ui5-restricted
153
+ * @param {sap.ui.model.odata.v2.ODataModel} oModel Model For checking sensitive information
154
+ */
155
+ ;
156
+
157
+ _proto.setModel = function setModel(oModel) {
158
+ this.oNavHandler.setModel(oModel);
159
+ }
160
+ /**
161
+ * Changes the URL according to the current app state and stores the app state for later retrieval.
162
+ * @private
163
+ * @ui5-restricted
164
+ * @param {object} mInnerAppData Object containing the current state of the app
165
+ * @returns {object} A Promise object to monitor when all the actions of the function have been executed; if the execution is successful, the
166
+ * app state key is returned; if an error occurs, an object of type {@link sap.fe.navigation.NavError} is
167
+ * returned
168
+ **/
169
+ ;
170
+
171
+ _proto.storeInnerAppState = function storeInnerAppState(mInnerAppData) {
172
+ return this.oNavHandler.storeInnerAppState(mInnerAppData);
173
+ }
174
+ /**
175
+ * Changes the URL according to the current app state and stores the app state for later retrieval.
176
+ * @private
177
+ * @ui5-restricted
178
+ * @param {object} mInnerAppData Object containing the current state of the app
179
+ * @param {boolean} [bImmediateHashReplace=false] If set to false, the inner app hash will not be replaced until storing is successful; do not
180
+ * @param bNotLegacy
181
+ * @returns {object} An object containing the appStateId and a promise object to monitor when all the actions of the function have been
182
+ * executed; Please note that the appStateKey may be undefined or empty.
183
+ */
184
+ ;
185
+
186
+ _proto.storeInnerAppStateWithImmediateReturn = function storeInnerAppStateWithImmediateReturn(mInnerAppData, bImmediateHashReplace, bNotLegacy) {
187
+ return this.oNavHandler.storeInnerAppStateWithImmediateReturn(mInnerAppData, bImmediateHashReplace, bNotLegacy);
188
+ }
189
+ /**
190
+ * Changes the URL according to the current sAppStateKey. As an reaction route change event will be triggered.
191
+ * @private
192
+ * @ui5-restricted
193
+ * @param {string} sAppStateKey The new app state key.
194
+ */
195
+ ;
196
+
197
+ _proto.replaceHash = function replaceHash(sAppStateKey) {
198
+ this.oNavHandler.replaceHash(sAppStateKey);
199
+ };
200
+
201
+ _proto.replaceInnerAppStateKey = function replaceInnerAppStateKey(sAppHash, sAppStateKey) {
202
+ return this.oNavHandler._replaceInnerAppStateKey(sAppHash, sAppStateKey);
203
+ }
204
+ /**
205
+ * Get single values from SelectionVariant for url parameters.
206
+ *
207
+ * @private
208
+ * @ui5-restricted
209
+ * @param {object | string } [vSelectionVariant]
210
+ * @param {object} [vSelectionVariant.oUrlParamaters]
211
+ * @returns {pbject}
212
+ */
213
+ ;
214
+
215
+ _proto.getUrlParametersFromSelectionVariant = function getUrlParametersFromSelectionVariant(vSelectionVariant) {
216
+ return this.oNavHandler._getURLParametersFromSelectionVariant(vSelectionVariant);
217
+ }
218
+ /**
219
+ * Save app state and return immediately without waiting for response.
220
+ *
221
+ * @private
222
+ * @ui5-restricted
223
+ * @param {object} oInSelectionVariant Instance of sap.fe.navigation.SelectionVariant
224
+ * @returns {string} AppState key
225
+ */
226
+ ;
227
+
228
+ _proto.saveAppStateWithImmediateReturn = function saveAppStateWithImmediateReturn(oInSelectionVariant) {
229
+ if (oInSelectionVariant) {
230
+ var sSelectionVariant = oInSelectionVariant.toJSONString(),
231
+ // create an SV for app state in string format
232
+ oSelectionVariant = JSON.parse(sSelectionVariant),
233
+ // convert string into JSON to store in AppState
234
+ oXAppStateObject = {
235
+ selectionVariant: oSelectionVariant
236
+ },
237
+ oReturn = this.oNavHandler._saveAppStateWithImmediateReturn(oXAppStateObject);
238
+
239
+ return oReturn.appStateKey ? oReturn.appStateKey : "";
240
+ }
241
+ }
242
+ /**
243
+ * Mix Attributes and selectionVariant.
244
+ *
245
+ * @param {object|Array} vSemanticAttributes Object/(Array of Objects) containing key/value pairs
246
+ * @param {string} sSelectionVariant The selection variant in string format as provided by the SmartFilterBar control
247
+ * @param {int} [iSuppressionBehavior=sap.fe.navigation.SuppressionBehavior.standard] Indicates whether semantic
248
+ * attributes with special values (see {@link sap.fe.navigation.SuppressionBehavior suppression behavior}) must be
249
+ * suppressed before they are combined with the selection variant; several
250
+ * {@link sap.fe.navigation.SuppressionBehavior suppression behaviors} can be combined with the bitwise OR operator
251
+ * (|)
252
+ * @returns {object} Instance of {@link sap.fe.navigation.SelectionVariant}
253
+ */
254
+ ;
255
+
256
+ _proto.mixAttributesAndSelectionVariant = function mixAttributesAndSelectionVariant(vSemanticAttributes, sSelectionVariant, iSuppressionBehavior) {
257
+ return this.oNavHandler.mixAttributesAndSelectionVariant(vSemanticAttributes, sSelectionVariant, iSuppressionBehavior);
258
+ }
259
+ /**
260
+ * The method creates a context url based on provided data. This context url can either be used as.
261
+ *
262
+ * @param {string} sEntitySetName Used for url determination
263
+ * @param [oModel] The ODataModel used for url determination. If omitted, the NavigationHandler model is used.
264
+ * @returns {string} The context url for the given entities
265
+ */
266
+ ;
267
+
268
+ _proto.constructContextUrl = function constructContextUrl(sEntitySetName, oModel) {
269
+ return this.oNavHandler.constructContextUrl(sEntitySetName, oModel);
270
+ };
271
+
272
+ _proto.getInterface = function getInterface() {
273
+ return this;
274
+ };
275
+
276
+ return NavigationService;
277
+ }(Service);
278
+
279
+ _exports.NavigationService = NavigationService;
280
+
281
+ function fnGetEmptyObject() {
282
+ return {};
283
+ }
284
+
285
+ function fnGetPromise() {
286
+ return Promise.resolve({});
287
+ }
288
+
289
+ function fnGetJQueryPromise() {
290
+ var oMyDeffered = jQuery.Deferred();
291
+ oMyDeffered.resolve({}, {}, "initial");
292
+ return oMyDeffered.promise();
293
+ }
294
+
295
+ function fnGetEmptyString() {
296
+ return "";
297
+ }
298
+
299
+ var NavigationServicesMock = /*#__PURE__*/function () {
300
+ function NavigationServicesMock() {
301
+ this.createEmptyAppState = fnGetEmptyObject;
302
+ this.storeInnerAppStateWithImmediateReturn = fnGetEmptyObject;
303
+ this.mixAttributesAndSelectionVariant = fnGetEmptyObject;
304
+ this.getAppState = fnGetPromise;
305
+ this.getStartupAppState = fnGetPromise;
306
+ this.parseNavigation = fnGetJQueryPromise;
307
+ this.constructContextUrl = fnGetEmptyString;
308
+ this.initPromise = Promise.resolve(this);
309
+ }
310
+
311
+ _exports.NavigationServicesMock = NavigationServicesMock;
312
+ var _proto2 = NavigationServicesMock.prototype;
313
+
314
+ _proto2.getInterface = function getInterface() {
315
+ return this;
316
+ } // return empty object
317
+ ;
318
+
319
+ _proto2.replaceInnerAppStateKey = function replaceInnerAppStateKey(sAppHash) {
320
+ return sAppHash ? sAppHash : "";
321
+ };
322
+
323
+ _proto2.navigate = function navigate() {// Don't do anything
324
+ };
325
+
326
+ return NavigationServicesMock;
327
+ }();
328
+
329
+ _exports.NavigationServicesMock = NavigationServicesMock;
330
+
331
+ var NavigationServiceFactory = /*#__PURE__*/function (_ServiceFactory) {
332
+ _inherits(NavigationServiceFactory, _ServiceFactory);
333
+
334
+ function NavigationServiceFactory() {
335
+ return _ServiceFactory.apply(this, arguments) || this;
336
+ }
337
+
338
+ var _proto3 = NavigationServiceFactory.prototype;
339
+
340
+ _proto3.createInstance = function createInstance(oServiceContext) {
341
+ var oNavigationService = sap.ushell && sap.ushell.Container ? new NavigationService(oServiceContext) : new NavigationServicesMock(); // Wait For init
342
+
343
+ return oNavigationService.initPromise.then(function (oService) {
344
+ return oService;
345
+ });
346
+ };
347
+
348
+ return NavigationServiceFactory;
349
+ }(ServiceFactory);
350
+
351
+ return NavigationServiceFactory;
352
+ }, false);
353
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeS50cyJdLCJuYW1lcyI6WyJOYXZpZ2F0aW9uU2VydmljZSIsImluaXQiLCJvQ29udGV4dCIsImdldENvbnRleHQiLCJvQ29tcG9uZW50Iiwic2NvcGVPYmplY3QiLCJvTmF2SGFuZGxlciIsIk5hdmlnYXRpb25IYW5kbGVyIiwic2V0TW9kZWwiLCJnZXRNb2RlbCIsImluaXRQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJleGl0IiwiZGVzdHJveSIsIm5hdmlnYXRlIiwic1NlbWFudGljT2JqZWN0Iiwic0FjdGlvbk5hbWUiLCJ2TmF2aWdhdGlvblBhcmFtZXRlcnMiLCJvSW5uZXJBcHBEYXRhIiwiZm5PbkVycm9yIiwib0V4dGVybmFsQXBwRGF0YSIsInNOYXZNb2RlIiwicGFyc2VOYXZpZ2F0aW9uIiwiX3Byb2Nlc3NCZWZvcmVTbWFydExpbmtQb3BvdmVyT3BlbnMiLCJvVGFibGVFdmVudFBhcmFtZXRlcnMiLCJzU2VsZWN0aW9uVmFyaWFudCIsIm1Jbm5lckFwcERhdGEiLCJwcm9jZXNzQmVmb3JlU21hcnRMaW5rUG9wb3Zlck9wZW5zIiwiZ2V0QXBwU3RhdGVLZXlBbmRVcmxQYXJhbWV0ZXJzIiwiX2dldEFwcFN0YXRlS2V5QW5kVXJsUGFyYW1ldGVycyIsImdldFRlY2huaWNhbFBhcmFtZXRlcnMiLCJzZXRUZWNobmljYWxQYXJhbWV0ZXJzIiwiYVRlY2huaWNhbFBhcmFtZXRlcnMiLCJvTW9kZWwiLCJzdG9yZUlubmVyQXBwU3RhdGUiLCJzdG9yZUlubmVyQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuIiwiYkltbWVkaWF0ZUhhc2hSZXBsYWNlIiwiYk5vdExlZ2FjeSIsInJlcGxhY2VIYXNoIiwic0FwcFN0YXRlS2V5IiwicmVwbGFjZUlubmVyQXBwU3RhdGVLZXkiLCJzQXBwSGFzaCIsIl9yZXBsYWNlSW5uZXJBcHBTdGF0ZUtleSIsImdldFVybFBhcmFtZXRlcnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsInZTZWxlY3Rpb25WYXJpYW50IiwiX2dldFVSTFBhcmFtZXRlcnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsInNhdmVBcHBTdGF0ZVdpdGhJbW1lZGlhdGVSZXR1cm4iLCJvSW5TZWxlY3Rpb25WYXJpYW50IiwidG9KU09OU3RyaW5nIiwib1NlbGVjdGlvblZhcmlhbnQiLCJKU09OIiwicGFyc2UiLCJvWEFwcFN0YXRlT2JqZWN0Iiwic2VsZWN0aW9uVmFyaWFudCIsIm9SZXR1cm4iLCJfc2F2ZUFwcFN0YXRlV2l0aEltbWVkaWF0ZVJldHVybiIsImFwcFN0YXRlS2V5IiwibWl4QXR0cmlidXRlc0FuZFNlbGVjdGlvblZhcmlhbnQiLCJ2U2VtYW50aWNBdHRyaWJ1dGVzIiwiaVN1cHByZXNzaW9uQmVoYXZpb3IiLCJjb25zdHJ1Y3RDb250ZXh0VXJsIiwic0VudGl0eVNldE5hbWUiLCJnZXRJbnRlcmZhY2UiLCJTZXJ2aWNlIiwiZm5HZXRFbXB0eU9iamVjdCIsImZuR2V0UHJvbWlzZSIsImZuR2V0SlF1ZXJ5UHJvbWlzZSIsIm9NeURlZmZlcmVkIiwialF1ZXJ5IiwiRGVmZXJyZWQiLCJwcm9taXNlIiwiZm5HZXRFbXB0eVN0cmluZyIsIk5hdmlnYXRpb25TZXJ2aWNlc01vY2siLCJjcmVhdGVFbXB0eUFwcFN0YXRlIiwiZ2V0QXBwU3RhdGUiLCJnZXRTdGFydHVwQXBwU3RhdGUiLCJOYXZpZ2F0aW9uU2VydmljZUZhY3RvcnkiLCJjcmVhdGVJbnN0YW5jZSIsIm9TZXJ2aWNlQ29udGV4dCIsIm9OYXZpZ2F0aW9uU2VydmljZSIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsInRoZW4iLCJvU2VydmljZSIsIlNlcnZpY2VGYWN0b3J5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O01BS2FBLGlCOzs7Ozs7Ozs7O1dBR1pDLEksR0FBQSxnQkFBTztBQUNOLFVBQU1DLFFBQVEsR0FBRyxLQUFLQyxVQUFMLEVBQWpCO0FBQUEsVUFDQ0MsVUFBVSxHQUFHRixRQUFRLElB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M0MsZUFoQmMsR0FnQkk0QyxrQkFoQko7QUFBQSxXQW1CZE4sbUJBbkJjLEdBbUJRVyxnQkFuQlI7QUFDYixXQUFLOUQsV0FBTCxHQUFtQkMsT0FBTyxDQUFDQyxPQUFSLENBQWdCLElBQWhCLENBQW5CO0FBQ0E7Ozs7O1lBRURtRCxZLEdBQUEsd0JBQWU7QUFDZCxhQUFPLElBQVA7QUFDQSxLLENBRUQ7OztZQWFBdEIsdUIsR0FBQSxpQ0FBd0JDLFFBQXhCLEVBQXVDO0FBQ3RDLGFBQU9BLFFBQVEsR0FBR0EsUUFBSCxHQUFjLEVBQTdCO0FBQ0EsSzs7WUFFRDNCLFEsR0FBQSxvQkFBVyxDQUNWO0FBQ0EsSzs7Ozs7OztNQUdJOEQsd0I7Ozs7Ozs7OztZQUNMQyxjLEdBQUEsd0JBQWVDLGVBQWYsRUFBMkU7QUFDMUUsVUFBTUMsa0JBQWtCLEdBQ3ZCQyxHQUFHLENBQUNDLE1BQUosSUFBY0QsR0FBRyxDQUFDQyxNQUFKLENBQVdDLFNBQXpCLEdBQXFDLElBQUluRixpQkFBSixDQUFzQitFLGVBQXRCLENBQXJDLEdBQThFLElBQUlOLHNCQUFKLEVBRC9FLENBRDBFLENBRzFFOztBQUNBLGFBQU9PLGtCQUFrQixDQUFDdEUsV0FBbkIsQ0FBK0IwRSxJQUEvQixDQUFvQyxVQUFTQyxRQUFULEVBQXdCO0FBQ2xFLGVBQU9BLFFBQVA7QUFDQSxPQUZNLENBQVA7QUFHQSxLOzs7SUFScUNDLGM7O1NBV3hCVCx3QiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNlcnZpY2UgZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2UvU2VydmljZVwiO1xuaW1wb3J0IFNlcnZpY2VGYWN0b3J5IGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlXCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uSGFuZGxlciB9IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvblwiO1xuaW1wb3J0IFNlbGVjdGlvblZhcmlhbnQgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcblxudHlwZSBOYXZpZ2F0aW9uU2VydmljZVNldHRpbmdzID0ge307XG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPE5hdmlnYXRpb25TZXJ2aWNlU2V0dGluZ3M+IHtcblx0aW5pdFByb21pc2UhOiBQcm9taXNlPGFueT47XG5cdG9OYXZIYW5kbGVyITogTmF2aWdhdGlvbkhhbmRsZXI7XG5cdGluaXQoKSB7XG5cdFx0Y29uc3Qgb0NvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcblx0XHRcdG9Db21wb25lbnQgPSBvQ29udGV4dCAmJiBvQ29udGV4dC5zY29wZU9iamVjdDtcblxuXHRcdHRoaXMub05hdkhhbmRsZXIgPSBuZXcgTmF2aWdhdGlvbkhhbmRsZXIob0NvbXBvbmVudCk7XG5cdFx0dGhpcy5vTmF2SGFuZGxlci5zZXRNb2RlbChvQ29tcG9uZW50LmdldE1vZGVsKCkpO1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodGhpcyk7XG5cdH1cblx0ZXhpdCgpIHtcblx0XHR0aGlzLm9OYXZIYW5kbGVyLmRlc3Ryb3koKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmlnZ2VycyBhIGNyb3NzLWFwcCBuYXZpZ2F0aW9uIGFmdGVyIHNhdmluZyB0aGUgaW5uZXIgYW5kIHRoZSBjcm9zcy1hcHAgc3RhdGVzLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNTZW1hbnRpY09iamVjdCBTZW1hbnRpYyBvYmplY3Qgb2YgdGhlIHRhcmdldCBhcHBcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNBY3Rpb25OYW1lIEFjdGlvbiBvZiB0aGUgdGFyZ2V0IGFwcFxuXHQgKiBAcGFyYW0ge29iamVjdCB8IHN0cmluZyB9IFt2TmF2aWdhdGlvblBhcmFtZXRlcnNdIE5hdmlnYXRpb24gcGFyYW1ldGVycyBhcyBhbiBvYmplY3Qgd2l0aCBrZXkvdmFsdWUgcGFpcnMgb3IgYXMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Zcblx0ICogICAgICAgIHN1Y2ggYW4gb2JqZWN0LiBJZiBwYXNzZWQgYXMgYW4gb2JqZWN0LCB0aGUgcHJvcGVydGllcyBhcmUgbm90IGNoZWNrZWQgYWdhaW5zdCB0aGUgPGNvZGU+SXNQb3RlbnRpYWxTZW5zaXRpdmU8L2NvZGU+IG9yXG5cdCAqICAgICAgICA8Y29kZT5NZWFzdXJlPC9jb2RlPiB0eXBlLlxuXHQgKiBAcGFyYW0ge29iamVjdH0gW29Jbm5lckFwcERhdGFdIE9iamVjdCBmb3Igc3RvcmluZyBjdXJyZW50IHN0YXRlIG9mIHRoZSBhcHBcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuT25FcnJvcl0gQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBuYXZpZ2F0aW9uIDxicj5cblx0ICogQHBhcmFtIHtvYmplY3R9IFtvRXh0ZXJuYWxBcHBEYXRhXSBPYmplY3QgZm9yIHN0b3JpbmcgdGhlIHN0YXRlIHdoaWNoIHdpbGwgYmUgZm9yd2FyZGVkIHRvIHRoZSB0YXJnZXQgY29tcG9uZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gW3NOYXZNb2RlXSBBcmd1bWVudCBpcyB1c2VkIHRvIG92ZXJ3cml0ZSB0aGUgRkxQLWNvbmZpZ3VyZWQgdGFyZ2V0IGZvciBvcGVuaW5nIGEgVVJMLiBJZiB1c2VkLCBvbmx5IHRoZVxuXHQgKiAgICAgICAgPGNvZGU+ZXhwbGFjZTwvY29kZT4gb3IgPGNvZGU+aW5wbGFjZTwvY29kZT4gdmFsdWVzIGFyZSBhbGxvd2VkLiBBbnkgb3RoZXIgdmFsdWUgd2lsbCBsZWFkIHRvIGFuIGV4Y2VwdGlvblxuXHQgKiAgICAgICAgPGNvZGU+TmF2aWdhdGlvbkhhbmRsZXIuSU5WQUxJRF9OQVZfTU9ERTwvY29kZT4uXG5cdCAqKi9cblx0bmF2aWdhdGUoXG5cdFx0c1NlbWFudGljT2JqZWN0OiBzdHJpbmcsXG5cdFx0c0FjdGlvbk5hbWU6IHN0cmluZyxcblx0XHR2TmF2aWdhdGlvblBhcmFtZXRlcnM/OiBzdHJpbmcgfCBvYmplY3QsXG5cdFx0b0lubmVyQXBwRGF0YT86IG9iamVjdCxcblx0XHRmbk9uRXJyb3I/OiBGdW5jdGlvbixcblx0XHRvRXh0ZXJuYWxBcHBEYXRhPzogb2JqZWN0LFxuXHRcdHNOYXZNb2RlPzogc3RyaW5nXG5cdCkge1xuXHRcdC8vIFRPRE86IE5hdmlnYXRpb24gSGFuZGxlciBkb2VzIG5vdCBoYW5kbGUgbmF2aWdhdGlvbiB3aXRob3V0IGEgY29udGV4dFxuXHRcdC8vIGJ1dCBpbiB2NCBEYXRhRmllbGRGb3JJQk4gd2l0aCByZXF1aXJlc0NvbnRleHQgZmFsc2UgY2FuIHRyaWdnZXIgYSBuYXZpZ2F0aW9uIHdpdGhvdXQgYW55IGNvbnRleHRcblx0XHQvLyBUaGlzIHNob3VsZCBiZSBoYW5kbGVkXG5cdFx0dGhpcy5vTmF2SGFuZGxlci5uYXZpZ2F0ZShcblx0XHRcdHNTZW1hbnRpY09iamVjdCxcblx0XHRcdHNBY3Rpb25OYW1lLFxuXHRcdFx0dk5hdmlnYXRpb25QYXJhbWV0ZXJzLFxuXHRcdFx0b0lubmVyQXBwRGF0YSxcblx0XHRcdGZuT25FcnJvcixcblx0XHRcdG9FeHRlcm5hbEFwcERhdGEsXG5cdFx0XHRzTmF2TW9kZVxuXHRcdCk7XG5cdH1cblx0LyoqXG5cdCAqIFBhcnNlcyB0aGUgaW5jb21pbmcgVVJMIGFuZCByZXR1cm5zIGEgUHJvbWlzZS5cblx0ICogQHJldHVybnMge29iamVjdH0gQSBQcm9taXNlIG9iamVjdCB3aGljaCByZXR1cm5zIHRoZVxuXHQgKiBleHRyYWN0ZWQgYXBwIHN0YXRlLCB0aGUgc3RhcnR1cCBwYXJhbWV0ZXJzLCBhbmQgdGhlIHR5cGUgb2YgbmF2aWdhdGlvbiB3aGVuIGV4ZWN1dGlvbiBpcyBzdWNjZXNzZnVsLFxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICoqL1xuXHRwYXJzZU5hdmlnYXRpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIucGFyc2VOYXZpZ2F0aW9uKCk7XG5cdH1cblx0LyoqXG5cdCAqIFByb2Nlc3NlcyBuYXZpZ2F0aW9uLXJlbGF0ZWQgdGFza3MgcmVsYXRlZCB0byBiZWZvcmVQb3BvdmVyT3BlbnMgZXZlbnQgaGFuZGxpbmcgZm9yIHRoZSBTbWFydExpbmsgY29udHJvbCBhbmQgcmV0dXJucyBhIFByb21pc2Ugb2JqZWN0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gb1RhYmxlRXZlbnRQYXJhbWV0ZXJzIFRoZSBwYXJhbWV0ZXJzIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBTbWFydFRhYmxlIGNvbnRyb2wgd2hlbiB0aGUgU21hcnRMaW5rIGNvbnRyb2wgaGFzIGJlZW4gY2xpY2tlZCxcblx0ICogICAgICAgIGFuIGluc3RhbmNlIG9mIGEgUG9wT3ZlciBvYmplY3Rcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNTZWxlY3Rpb25WYXJpYW50IFN0cmluZ2lmaWVkIEpTT04gb2JqZWN0IGFzIHJldHVybmVkLCBmb3IgZXhhbXBsZSwgZnJvbSBnZXREYXRhU3VpdGVGb3JtYXQoKSBvZiB0aGUgU21hcnRGaWx0ZXJCYXIgY29udHJvbFxuXHQgKiBAcGFyYW0ge29iamVjdH0gW21Jbm5lckFwcERhdGFdIE9iamVjdCBjb250YWluaW5nIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBhcHAuIElmIHByb3ZpZGVkLCBvcGVuaW5nIHRoZSBQb3BvdmVyIGlzIGRlZmVycmVkIHVudGlsIHRoZVxuXHQgKiAgICAgICAgaW5uZXIgYXBwIGRhdGEgaXMgc2F2ZWQgaW4gYSBjb25zaXN0ZW50IHdheS5cblx0ICogQHJldHVybnMge1Byb21pc2V9IEEgUHJvbWlzZSBvYmplY3QgdG8gbW9uaXRvciB3aGVuIGFsbCBhY3Rpb25zIG9mIHRoZSBmdW5jdGlvbiBoYXZlIGJlZW4gZXhlY3V0ZWQ7IGlmIHRoZSBleGVjdXRpb24gaXMgc3VjY2Vzc2Z1bCwgdGhlXG5cdCAqICAgICAgICAgIG1vZGlmaWVkIG9UYWJsZUV2ZW50UGFyYW1ldGVycyBpcyByZXR1cm5lZDsgaWYgYW4gZXJyb3Igb2NjdXJzLCBhbiBlcnJvciBvYmplY3Qgb2YgdHlwZVxuXHQgKiAgICAgICAgICB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uTmF2RXJyb3J9IGlzIHJldHVybmVkXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfcHJvY2Vzc0JlZm9yZVNtYXJ0TGlua1BvcG92ZXJPcGVucyhvVGFibGVFdmVudFBhcmFtZXRlcnM6IG9iamVjdCwgc1NlbGVjdGlvblZhcmlhbnQ6IHN0cmluZywgbUlubmVyQXBwRGF0YTogb2JqZWN0IHwgdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIucHJvY2Vzc0JlZm9yZVNtYXJ0TGlua1BvcG92ZXJPcGVucyhvVGFibGVFdmVudFBhcmFtZXRlcnMsIHNTZWxlY3Rpb25WYXJpYW50LCBtSW5uZXJBcHBEYXRhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcm9jZXNzZXMgc2VsZWN0aW9uVmFyaWFudCBzdHJpbmcgYW5kIHJldHVybnMgYSBQcm9taXNlIG9iamVjdCAoc2VtYW50aWNBdHRyaWJ1dGVzIGFuZCBBcHBTdGF0ZUtleSkuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzU2VsZWN0aW9uVmFyaWFudCBTdHJpbmdpZmllZCBKU09OIG9iamVjdFxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBBIFByb21pc2Ugb2JqZWN0IHRvIG1vbml0b3Igd2hlbiBhbGwgYWN0aW9ucyBvZiB0aGUgZnVuY3Rpb24gaGF2ZSBiZWVuIGV4ZWN1dGVkOyBpZiB0aGUgZXhlY3V0aW9uIGlzIHN1Y2Nlc3NmdWwsIHRoZVxuXHQgKiAgICAgICAgICBzZW1hbnRpY0F0dHJpYnV0ZXMgYXMgd2VsbCBhcyB0aGUgYXBwU3RhdGVLZXkgYXJlIHJldHVybmVkOyBpZiBhbiBlcnJvciBvY2N1cnMsIGFuIGVycm9yIG9iamVjdCBvZiB0eXBlXG5cdCAqICAgICAgICAgIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5OYXZFcnJvcn0gaXMgcmV0dXJuZWRcblx0ICogPGJyPlxuXHQgKiBAZXhhbXBsZSA8Y29kZT5cblx0ICpcblx0ICogXHRcdHZhciBvU2VsZWN0aW9uVmFyaWFudCA9IG5ldyBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50KCk7XG5cdCAqIFx0XHRvU2VsZWN0aW9uVmFyaWFudC5hZGRTZWxlY3RPcHRpb24oXCJDb21wYW55Q29kZVwiLCBcIklcIiwgXCJFUVwiLCBcIjAwMDFcIik7XG5cdCAqIFx0XHRvU2VsZWN0aW9uVmFyaWFudC5hZGRTZWxlY3RPcHRpb24oXCJDdXN0b21lclwiLCBcIklcIiwgXCJFUVwiLCBcIkMwMDAxXCIpO1xuXHQgKiBcdFx0dmFyIHNTZWxlY3Rpb25WYXJpYW50PSBvU2VsZWN0aW9uVmFyaWFudC50b0pTT05TdHJpbmcoKTtcblx0ICpcblx0ICogXHRcdHZhciBvTmF2aWdhdGlvbkhhbmRsZXIgPSBuZXcgc2FwLmZlLm5hdmlnYXRpb24uTmF2aWdhdGlvbkhhbmRsZXIob0NvbnRyb2xsZXIpO1xuXHQgKiBcdFx0dmFyIG9Qcm9taXNlT2JqZWN0ID0gb05hdmlnYXRpb25IYW5kbGVyLl9nZXRBcHBTdGF0ZUtleUFuZFVybFBhcmFtZXRlcnMoc1NlbGVjdGlvblZhcmlhbnQpO1xuXHQgKlxuXHQgKiBcdFx0b1Byb21pc2VPYmplY3QuZG9uZShmdW5jdGlvbihvU2VtYW50aWNBdHRyaWJ1dGVzLCBzQXBwU3RhdGVLZXkpe1xuXHQgKiBcdFx0XHQvLyBoZXJlIHlvdSBjYW4gYWRkIGNvZGluZyB0aGF0IHNob3VsZCBydW4gYWZ0ZXIgYWxsIGFwcCBzdGF0ZSBhbmQgdGhlIHNlbWFudGljIGF0dHJpYnV0ZXMgaGF2ZSBiZWVuIHJldHVybmVkLlxuXHQgKiBcdFx0fSk7XG5cdCAqXG5cdCAqIFx0XHRvUHJvbWlzZU9iamVjdC5mYWlsKGZ1bmN0aW9uKG9FcnJvcil7XG5cdCAqIFx0XHRcdC8vc29tZSBlcnJvciBoYW5kbGluZ1xuXHQgKiBcdFx0fSk7XG5cdCAqXG5cdCAqIDwvY29kZT5cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRnZXRBcHBTdGF0ZUtleUFuZFVybFBhcmFtZXRlcnMoc1NlbGVjdGlvblZhcmlhbnQ6IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLl9nZXRBcHBTdGF0ZUtleUFuZFVybFBhcmFtZXRlcnMoc1NlbGVjdGlvblZhcmlhbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGFwcGxpY2F0aW9uIHNwZWNpZmljIHRlY2huaWNhbCBwYXJhbWV0ZXJzLlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9IENvbnRhaW5pbmcgdGhlIHRlY2huaWNhbCBwYXJhbWV0ZXJzLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICovXG5cdGdldFRlY2huaWNhbFBhcmFtZXRlcnMoKSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIuZ2V0VGVjaG5pY2FsUGFyYW1ldGVycygpO1xuXHR9XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBhcHBsaWNhdGlvbiBzcGVjaWZpYyB0ZWNobmljYWwgcGFyYW1ldGVycy4gVGVjaG5pY2FsIHBhcmFtZXRlcnMgd2lsbCBub3QgYmUgYWRkZWQgdG8gdGhlIHNlbGVjdGlvbiB2YXJpYW50IHBhc3NlZCB0byB0aGVcblx0ICogYXBwbGljYXRpb24uXG5cdCAqIEFzIGEgZGVmYXVsdCBzYXAtc3lzdGVtLCBzYXAtdXNoZWxsLWRlZmF1bHRlZFBhcmFtZXRlck5hbWVzIGFuZCBoY3BBcHBsaWNhdGlvbklkIGFyZSBjb25zaWRlcmVkIGFzIHRlY2huaWNhbCBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0ge0FycmF5fSBhVGVjaG5pY2FsUGFyYW1ldGVycyBMaXN0IG9mIHBhcmFtZXRlciBuYW1lcyB0byBiZSBjb25zaWRlcmVkIGFzIHRlY2huaWNhbCBwYXJhbWV0ZXJzLiA8Y29kZT5udWxsPC9jb2RlPiBvclxuXHQgKiAgICAgICAgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPiBtYXkgYmUgdXNlZCB0byByZXNldCB0aGUgY29tcGxldGUgbGlzdC5cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRzZXRUZWNobmljYWxQYXJhbWV0ZXJzKGFUZWNobmljYWxQYXJhbWV0ZXJzOiBhbnlbXSkge1xuXHRcdHRoaXMub05hdkhhbmRsZXIuc2V0VGVjaG5pY2FsUGFyYW1ldGVycyhhVGVjaG5pY2FsUGFyYW1ldGVycyk7XG5cdH1cblx0LyoqXG5cdCAqIFNldHMgdGhlIG1vZGVsIHRoYXQgaXMgdXNlZCBmb3IgdmVyaWZpY2F0aW9uIG9mIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi4gSWYgdGhlIG1vZGVsIGlzIG5vdCBzZXQsIHRoZSB1bm5hbWVkIGNvbXBvbmVudCBtb2RlbCBpcyB1c2VkIGZvciB0aGVcblx0ICogdmVyaWZpY2F0aW9uIG9mIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi5cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1vZGVsLm9kYXRhLnYyLk9EYXRhTW9kZWx9IG9Nb2RlbCBNb2RlbCBGb3IgY2hlY2tpbmcgc2Vuc2l0aXZlIGluZm9ybWF0aW9uXG5cdCAqL1xuXHRzZXRNb2RlbChvTW9kZWw6IGFueSkge1xuXHRcdHRoaXMub05hdkhhbmRsZXIuc2V0TW9kZWwob01vZGVsKTtcblx0fVxuXHQvKipcblx0ICogQ2hhbmdlcyB0aGUgVVJMIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBhcHAgc3RhdGUgYW5kIHN0b3JlcyB0aGUgYXBwIHN0YXRlIGZvciBsYXRlciByZXRyaWV2YWwuXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge29iamVjdH0gbUlubmVyQXBwRGF0YSBPYmplY3QgY29udGFpbmluZyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXBwXG5cdCAqIEByZXR1cm5zIHtvYmplY3R9IEEgUHJvbWlzZSBvYmplY3QgdG8gbW9uaXRvciB3aGVuIGFsbCB0aGUgYWN0aW9ucyBvZiB0aGUgZnVuY3Rpb24gaGF2ZSBiZWVuIGV4ZWN1dGVkOyBpZiB0aGUgZXhlY3V0aW9uIGlzIHN1Y2Nlc3NmdWwsIHRoZVxuXHQgKiAgICAgICAgICBhcHAgc3RhdGUga2V5IGlzIHJldHVybmVkOyBpZiBhbiBlcnJvciBvY2N1cnMsIGFuIG9iamVjdCBvZiB0eXBlIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5OYXZFcnJvcn0gaXNcblx0ICogICAgICAgICAgcmV0dXJuZWRcblx0ICoqL1xuXHRzdG9yZUlubmVyQXBwU3RhdGUobUlubmVyQXBwRGF0YTogb2JqZWN0KSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIuc3RvcmVJbm5lckFwcFN0YXRlKG1Jbm5lckFwcERhdGEpO1xuXHR9XG5cdC8qKlxuXHRcdFx0XHQqIENoYW5nZXMgdGhlIFVSTCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgYXBwIHN0YXRlIGFuZCBzdG9yZXMgdGhlIGFwcCBzdGF0ZSBmb3IgbGF0ZXIgcmV0cmlldmFsLlxuXHRcdFx0XHQqIEBwcml2YXRlXG5cdFx0XHRcdCogQHVpNS1yZXN0cmljdGVkXG5cdFx0XHRcdCogQHBhcmFtIHtvYmplY3R9IG1Jbm5lckFwcERhdGEgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGFwcFxuXHRcdFx0XHQqIEBwYXJhbSB7Ym9vbGVhbn0gW2JJbW1lZGlhdGVIYXNoUmVwbGFjZT1mYWxzZV0gSWYgc2V0IHRvIGZhbHNlLCB0aGUgaW5uZXIgYXBwIGhhc2ggd2lsbCBub3QgYmUgcmVwbGFjZWQgdW50aWwgc3RvcmluZyBpcyBzdWNjZXNzZnVsOyBkbyBub3Rcblx0XHRcdCAqIEBwYXJhbSBiTm90TGVnYWN5XG5cblx0XHRcdCAqIEByZXR1cm5zIHtvYmplY3R9IEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBhcHBTdGF0ZUlkIGFuZCBhIHByb21pc2Ugb2JqZWN0IHRvIG1vbml0b3Igd2hlbiBhbGwgdGhlIGFjdGlvbnMgb2YgdGhlIGZ1bmN0aW9uIGhhdmUgYmVlblxuXHRcdFx0XHQqIGV4ZWN1dGVkOyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhcHBTdGF0ZUtleSBtYXkgYmUgdW5kZWZpbmVkIG9yIGVtcHR5LlxuXHRcdFx0XHQqL1xuXHRzdG9yZUlubmVyQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuKG1Jbm5lckFwcERhdGE6IG9iamVjdCwgYkltbWVkaWF0ZUhhc2hSZXBsYWNlOiBib29sZWFuIHwgdW5kZWZpbmVkLCBiTm90TGVnYWN5OiBhbnkpIHtcblx0XHRyZXR1cm4gdGhpcy5vTmF2SGFuZGxlci5zdG9yZUlubmVyQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuKG1Jbm5lckFwcERhdGEsIGJJbW1lZGlhdGVIYXNoUmVwbGFjZSwgYk5vdExlZ2FjeSk7XG5cdH1cblx0LyoqXG5cdCAqIENoYW5nZXMgdGhlIFVSTCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgc0FwcFN0YXRlS2V5LiBBcyBhbiByZWFjdGlvbiByb3V0ZSBjaGFuZ2UgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQuXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0FwcFN0YXRlS2V5IFRoZSBuZXcgYXBwIHN0YXRlIGtleS5cblx0ICovXG5cdHJlcGxhY2VIYXNoKHNBcHBTdGF0ZUtleTogc3RyaW5nKSB7XG5cdFx0dGhpcy5vTmF2SGFuZGxlci5yZXBsYWNlSGFzaChzQXBwU3RhdGVLZXkpO1xuXHR9XG5cdHJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHNBcHBIYXNoOiBhbnksIHNBcHBTdGF0ZUtleTogYW55KSB7XG5cdFx0cmV0dXJuIHRoaXMub05hdkhhbmRsZXIuX3JlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHNBcHBIYXNoLCBzQXBwU3RhdGVLZXkpO1xuXHR9XG5cdC8qKlxuXHQgKiBHZXQgc2luZ2xlIHZhbHVlcyBmcm9tIFNlbGVjdGlvblZhcmlhbnQgZm9yIHVybCBwYXJhbWV0ZXJzLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHtvYmplY3QgfCBzdHJpbmcgfSBbdlNlbGVjdGlvblZhcmlhbnRdXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBbdlNlbGVjdGlvblZhcmlhbnQub1VybFBhcmFtYXRlcnNdXG5cdCAqIEByZXR1cm5zIHtwYmplY3R9XG5cdCAqL1xuXHRnZXRVcmxQYXJhbWV0ZXJzRnJvbVNlbGVjdGlvblZhcmlhbnQodlNlbGVjdGlvblZhcmlhbnQ6IHN0cmluZyB8IG9iamVjdCB8IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLl9nZXRVUkxQYXJhbWV0ZXJzRnJvbVNlbGVjdGlvblZhcmlhbnQodlNlbGVjdGlvblZhcmlhbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNhdmUgYXBwIHN0YXRlIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkgd2l0aG91dCB3YWl0aW5nIGZvciByZXNwb25zZS5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvSW5TZWxlY3Rpb25WYXJpYW50IEluc3RhbmNlIG9mIHNhcC5mZS5uYXZpZ2F0aW9uLlNlbGVjdGlvblZhcmlhbnRcblx0ICogQHJldHVybnMge3N0cmluZ30gQXBwU3RhdGUga2V5XG5cdCAqL1xuXHRzYXZlQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuKG9JblNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQpIHtcblx0XHRpZiAob0luU2VsZWN0aW9uVmFyaWFudCkge1xuXHRcdFx0Y29uc3Qgc1NlbGVjdGlvblZhcmlhbnQgPSBvSW5TZWxlY3Rpb25WYXJpYW50LnRvSlNPTlN0cmluZygpLCAvLyBjcmVhdGUgYW4gU1YgZm9yIGFwcCBzdGF0ZSBpbiBzdHJpbmcgZm9ybWF0XG5cdFx0XHRcdG9TZWxlY3Rpb25WYXJpYW50ID0gSlNPTi5wYXJzZShzU2VsZWN0aW9uVmFyaWFudCksIC8vIGNvbnZlcnQgc3RyaW5nIGludG8gSlNPTiB0byBzdG9yZSBpbiBBcHBTdGF0ZVxuXHRcdFx0XHRvWEFwcFN0YXRlT2JqZWN0ID0ge1xuXHRcdFx0XHRcdHNlbGVjdGlvblZhcmlhbnQ6IG9TZWxlY3Rpb25WYXJpYW50XG5cdFx0XHRcdH0sXG5cdFx0XHRcdG9SZXR1cm4gPSB0aGlzLm9OYXZIYW5kbGVyLl9zYXZlQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuKG9YQXBwU3RhdGVPYmplY3QpO1xuXHRcdFx0cmV0dXJuIG9SZXR1cm4uYXBwU3RhdGVLZXkgPyBvUmV0dXJuLmFwcFN0YXRlS2V5IDogXCJcIjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTWl4IEF0dHJpYnV0ZXMgYW5kIHNlbGVjdGlvblZhcmlhbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fEFycmF5fSB2U2VtYW50aWNBdHRyaWJ1dGVzIE9iamVjdC8oQXJyYXkgb2YgT2JqZWN0cykgY29udGFpbmluZyBrZXkvdmFsdWUgcGFpcnNcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNTZWxlY3Rpb25WYXJpYW50IFRoZSBzZWxlY3Rpb24gdmFyaWFudCBpbiBzdHJpbmcgZm9ybWF0IGFzIHByb3ZpZGVkIGJ5IHRoZSBTbWFydEZpbHRlckJhciBjb250cm9sXG5cdCAqIEBwYXJhbSB7aW50fSBbaVN1cHByZXNzaW9uQmVoYXZpb3I9c2FwLmZlLm5hdmlnYXRpb24uU3VwcHJlc3Npb25CZWhhdmlvci5zdGFuZGFyZF0gSW5kaWNhdGVzIHdoZXRoZXIgc2VtYW50aWNcblx0ICogICAgICAgIGF0dHJpYnV0ZXMgd2l0aCBzcGVjaWFsIHZhbHVlcyAoc2VlIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TdXBwcmVzc2lvbkJlaGF2aW9yIHN1cHByZXNzaW9uIGJlaGF2aW9yfSkgbXVzdCBiZVxuXHQgKiAgICAgICAgc3VwcHJlc3NlZCBiZWZvcmUgdGhleSBhcmUgY29tYmluZWQgd2l0aCB0aGUgc2VsZWN0aW9uIHZhcmlhbnQ7IHNldmVyYWxcblx0ICogICAgICAgIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TdXBwcmVzc2lvbkJlaGF2aW9yIHN1cHByZXNzaW9uIGJlaGF2aW9yc30gY2FuIGJlIGNvbWJpbmVkIHdpdGggdGhlIGJpdHdpc2UgT1Igb3BlcmF0b3Jcblx0ICogICAgICAgICh8KVxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBJbnN0YW5jZSBvZiB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH1cblx0ICovXG5cdG1peEF0dHJpYnV0ZXNBbmRTZWxlY3Rpb25WYXJpYW50KHZTZW1hbnRpY0F0dHJpYnV0ZXM6IG9iamVjdCB8IGFueVtdLCBzU2VsZWN0aW9uVmFyaWFudDogc3RyaW5nLCBpU3VwcHJlc3Npb25CZWhhdmlvcj86IG51bWJlcikge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLm1peEF0dHJpYnV0ZXNBbmRTZWxlY3Rpb25WYXJpYW50KHZTZW1hbnRpY0F0dHJpYnV0ZXMsIHNTZWxlY3Rpb25WYXJpYW50LCBpU3VwcHJlc3Npb25CZWhhdmlvcik7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIG1ldGhvZCBjcmVhdGVzIGEgY29udGV4dCB1cmwgYmFzZWQgb24gcHJvdmlkZWQgZGF0YS4gVGhpcyBjb250ZXh0IHVybCBjYW4gZWl0aGVyIGJlIHVzZWQgYXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzRW50aXR5U2V0TmFtZSBVc2VkIGZvciB1cmwgZGV0ZXJtaW5hdGlvblxuXHQgKiBAcGFyYW0gW29Nb2RlbF0gVGhlIE9EYXRhTW9kZWwgdXNlZCBmb3IgdXJsIGRldGVybWluYXRpb24uIElmIG9taXR0ZWQsIHRoZSBOYXZpZ2F0aW9uSGFuZGxlciBtb2RlbCBpcyB1c2VkLlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29udGV4dCB1cmwgZm9yIHRoZSBnaXZlbiBlbnRpdGllc1xuXHQgKi9cblx0Y29uc3RydWN0Q29udGV4dFVybChzRW50aXR5U2V0TmFtZTogc3RyaW5nLCBvTW9kZWw6IGFueSkge1xuXHRcdHJldHVybiB0aGlzLm9OYXZIYW5kbGVyLmNvbnN0cnVjdENvbnRleHRVcmwoc0VudGl0eVNldE5hbWUsIG9Nb2RlbCk7XG5cdH1cblx0Z2V0SW50ZXJmYWNlKCkge1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG5mdW5jdGlvbiBmbkdldEVtcHR5T2JqZWN0KCkge1xuXHRyZXR1cm4ge307XG59XG5cbmZ1bmN0aW9uIGZuR2V0UHJvbWlzZSgpIHtcblx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG59XG5cbmZ1bmN0aW9uIGZuR2V0SlF1ZXJ5UHJvbWlzZSgpIHtcblx0Y29uc3Qgb015RGVmZmVyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKTtcblx0b015RGVmZmVyZWQucmVzb2x2ZSh7fSwge30sIFwiaW5pdGlhbFwiKTtcblx0cmV0dXJuIG9NeURlZmZlcmVkLnByb21pc2UoKTtcbn1cblxuZnVuY3Rpb24gZm5HZXRFbXB0eVN0cmluZygpIHtcblx0cmV0dXJuIFwiXCI7XG59XG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2VzTW9jayB7XG5cdGluaXRQcm9taXNlOiBQcm9taXNlPGFueT47XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodGhpcyk7XG5cdH1cblxuXHRnZXRJbnRlcmZhY2UoKSB7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvLyByZXR1cm4gZW1wdHkgb2JqZWN0XG5cdGNyZWF0ZUVtcHR5QXBwU3RhdGUgPSBmbkdldEVtcHR5T2JqZWN0O1xuXHRzdG9yZUlubmVyQXBwU3RhdGVXaXRoSW1tZWRpYXRlUmV0dXJuID0gZm5HZXRFbXB0eU9iamVjdDtcblx0bWl4QXR0cmlidXRlc0FuZFNlbGVjdGlvblZhcmlhbnQgPSBmbkdldEVtcHR5T2JqZWN0O1xuXG5cdC8vIHJldHVybiBwcm9taXNlXG5cdGdldEFwcFN0YXRlID0gZm5HZXRQcm9taXNlO1xuXHRnZXRTdGFydHVwQXBwU3RhdGUgPSBmbkdldFByb21pc2U7XG5cdHBhcnNlTmF2aWdhdGlvbiA9IGZuR2V0SlF1ZXJ5UHJvbWlzZTtcblxuXHQvLyByZXR1cm4gZW1wdHkgc3RyaW5nXG5cdGNvbnN0cnVjdENvbnRleHRVcmwgPSBmbkdldEVtcHR5U3RyaW5nO1xuXG5cdHJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHNBcHBIYXNoOiBhbnkpIHtcblx0XHRyZXR1cm4gc0FwcEhhc2ggPyBzQXBwSGFzaCA6IFwiXCI7XG5cdH1cblxuXHRuYXZpZ2F0ZSgpIHtcblx0XHQvLyBEb24ndCBkbyBhbnl0aGluZ1xuXHR9XG59XG5cbmNsYXNzIE5hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeSBleHRlbmRzIFNlcnZpY2VGYWN0b3J5PE5hdmlnYXRpb25TZXJ2aWNlU2V0dGluZ3M+IHtcblx0Y3JlYXRlSW5zdGFuY2Uob1NlcnZpY2VDb250ZXh0OiBTZXJ2aWNlQ29udGV4dDxOYXZpZ2F0aW9uU2VydmljZVNldHRpbmdzPikge1xuXHRcdGNvbnN0IG9OYXZpZ2F0aW9uU2VydmljZSA9XG5cdFx0XHRzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyID8gbmV3IE5hdmlnYXRpb25TZXJ2aWNlKG9TZXJ2aWNlQ29udGV4dCkgOiBuZXcgTmF2aWdhdGlvblNlcnZpY2VzTW9jaygpO1xuXHRcdC8vIFdhaXQgRm9yIGluaXRcblx0XHRyZXR1cm4gb05hdmlnYXRpb25TZXJ2aWNlLmluaXRQcm9taXNlLnRoZW4oZnVuY3Rpb24ob1NlcnZpY2U6IGFueSkge1xuXHRcdFx0cmV0dXJuIG9TZXJ2aWNlO1xuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeTtcbiJdfQ==