@sap/open.fe 1.98.0 → 1.99.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 (916) 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 +10 -8
  5. package/packages/sap.fe.common/src/sap/fe/common/MessageButton.js +1 -1
  6. package/packages/sap.fe.common/src/sap/fe/common/library-dbg.js +1 -1
  7. package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js +2 -2
  8. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +3 -3
  9. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js.map +3 -3
  10. package/packages/sap.fe.common/src/sap/fe/common/library.js +1 -1
  11. package/packages/sap.fe.common/src/sap/fe/common/manifest.json +3 -3
  12. package/packages/sap.fe.common/src/sap/fe/common/resources.json +4 -4
  13. package/packages/sap.fe.common/test/sap/fe/common/designtime/api.json +1 -1
  14. package/packages/sap.fe.common/test/sap/fe/common/designtime/apiref/api.json +1 -1
  15. package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.xmlmeta.json +1 -1
  16. package/packages/sap.fe.common/test/sap/fe/common/relnotes/changes-1.99.json +18 -0
  17. package/packages/sap.fe.core/src/sap/fe/core/.library +1 -1
  18. package/packages/sap.fe.core/src/sap/fe/core/.theming +1 -1
  19. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper-dbg.js +376 -405
  20. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.js +2 -3
  21. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.ts +385 -0
  22. package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler-dbg.js +228 -181
  23. package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler.js +2 -3
  24. package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler.ts +171 -0
  25. package/packages/sap.fe.core/src/sap/fe/core/BusyLocker-dbg.js +104 -121
  26. package/packages/sap.fe.core/src/sap/fe/core/BusyLocker.js +2 -3
  27. package/packages/sap.fe.core/src/sap/fe/core/BusyLocker.ts +98 -0
  28. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +2072 -2399
  29. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +2 -3
  30. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.ts +2078 -0
  31. package/packages/sap.fe.core/src/sap/fe/core/PageController-dbg.js +83 -125
  32. package/packages/sap.fe.core/src/sap/fe/core/PageController.js +2 -3
  33. package/packages/sap.fe.core/src/sap/fe/core/PageController.ts +101 -0
  34. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +985 -823
  35. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.js +2 -3
  36. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.ts +838 -0
  37. package/packages/sap.fe.core/src/sap/fe/core/Synchronization-dbg.js +50 -35
  38. package/packages/sap.fe.core/src/sap/fe/core/Synchronization.js +2 -3
  39. package/packages/sap.fe.core/src/sap/fe/core/Synchronization.ts +29 -0
  40. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent-dbg.js +172 -164
  41. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.js +2 -3
  42. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.ts +166 -0
  43. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel-dbg.js +96 -54
  44. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.js +2 -3
  45. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.ts +63 -0
  46. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper-dbg.js +1575 -1664
  47. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +2 -3
  48. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.ts +1706 -0
  49. package/packages/sap.fe.core/src/sap/fe/core/actions/draft-dbg.js +558 -608
  50. package/packages/sap.fe.core/src/sap/fe/core/actions/draft.js +2 -3
  51. package/packages/sap.fe.core/src/sap/fe/core/actions/draft.ts +593 -0
  52. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +544 -514
  53. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.js +2 -3
  54. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.ts +532 -0
  55. package/packages/sap.fe.core/src/sap/fe/core/actions/nonDraft-dbg.js +16 -19
  56. package/packages/sap.fe.core/src/sap/fe/core/actions/nonDraft.js +2 -3
  57. package/packages/sap.fe.core/src/sap/fe/core/actions/nonDraft.ts +12 -0
  58. package/packages/sap.fe.core/src/sap/fe/core/actions/operations-dbg.js +1073 -1215
  59. package/packages/sap.fe.core/src/sap/fe/core/actions/operations.js +2 -3
  60. package/packages/sap.fe.core/src/sap/fe/core/actions/operations.ts +1162 -0
  61. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky-dbg.js +101 -105
  62. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.js +2 -3
  63. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.ts +102 -0
  64. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +51 -209
  65. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
  66. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +276 -9
  67. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.js +1 -1
  68. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +5 -4
  69. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
  70. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +44 -43
  71. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
  72. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +2 -3
  73. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.js +1 -1
  74. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.ts +29 -26
  75. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +98 -6
  76. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit.js +1 -1
  77. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +14 -6
  78. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +1 -1
  79. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady-dbg.js +2 -2
  80. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
  81. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.ts +12 -8
  82. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing-dbg.js +6 -2
  83. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.js +1 -1
  84. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +3 -3
  85. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
  86. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.ts +18 -18
  87. package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper-dbg.js +8 -20
  88. package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.js +1 -1
  89. package/packages/sap.fe.core/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +1 -0
  90. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +2 -2
  91. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter.js +1 -1
  92. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext-dbg.js +2 -2
  93. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.js +1 -1
  94. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.ts +4 -3
  95. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +1 -1
  96. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.ts +1 -0
  97. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper-dbg.js +39 -26
  98. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
  99. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.ts +9 -0
  100. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +11 -8
  101. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
  102. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.ts +16 -16
  103. package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter-dbg.js +1 -1
  104. package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter.ts +2 -2
  105. package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +17 -13
  106. package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
  107. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action-dbg.js +2 -2
  108. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
  109. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.ts +2 -2
  110. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +5 -3
  111. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
  112. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Chart.ts +11 -3
  113. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +3 -3
  114. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
  115. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +2 -2
  116. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +4 -2
  117. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
  118. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.ts +16 -2
  119. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +250 -146
  120. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
  121. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.ts +300 -167
  122. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +115 -56
  123. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
  124. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +120 -74
  125. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +467 -32
  126. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
  127. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +483 -54
  128. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +6 -6
  129. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -1
  130. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +9 -15
  131. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +13 -5
  132. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
  133. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation.ts +20 -5
  134. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +4 -1
  135. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
  136. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/IssueManager.ts +3 -0
  137. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +4 -4
  138. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
  139. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +3 -3
  140. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +13 -6
  141. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
  142. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.ts +26 -15
  143. package/packages/sap.fe.core/src/sap/fe/core/formatters/CriticalityFormatter-dbg.js +1 -1
  144. package/packages/sap.fe.core/src/sap/fe/core/formatters/CriticalityFormatter.ts +1 -1
  145. package/packages/sap.fe.core/src/sap/fe/core/formatters/FPMFormatter-dbg.js +1 -1
  146. package/packages/sap.fe.core/src/sap/fe/core/formatters/FPMFormatter.ts +4 -10
  147. package/packages/sap.fe.core/src/sap/fe/core/formatters/KPIFormatter-dbg.js +1 -1
  148. package/packages/sap.fe.core/src/sap/fe/core/formatters/KPIFormatter.ts +3 -1
  149. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter-dbg.js +39 -28
  150. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.js +1 -1
  151. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.ts +43 -28
  152. package/packages/sap.fe.core/src/sap/fe/core/formatters/ValueFormatter-dbg.js +1 -1
  153. package/packages/sap.fe.core/src/sap/fe/core/formatters/ValueFormatter.ts +7 -6
  154. package/packages/sap.fe.core/src/sap/fe/core/fpm/manifest.json +2 -2
  155. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +2 -2
  156. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.js +1 -1
  157. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.ts +7 -4
  158. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression-dbg.js +314 -355
  159. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.js +1 -1
  160. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.ts +317 -391
  161. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport-dbg.js +27 -15
  162. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.js +1 -1
  163. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.ts +31 -20
  164. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper-dbg.js +62 -59
  165. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -3
  166. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +56 -0
  167. package/packages/sap.fe.core/src/sap/fe/core/helpers/EditState-dbg.js +80 -84
  168. package/packages/sap.fe.core/src/sap/fe/core/helpers/EditState.js +2 -3
  169. package/packages/sap.fe.core/src/sap/fe/core/helpers/EditState.ts +81 -0
  170. package/packages/sap.fe.core/src/sap/fe/core/helpers/ExcelFormatHelper-dbg.js +61 -48
  171. package/packages/sap.fe.core/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -3
  172. package/packages/sap.fe.core/src/sap/fe/core/helpers/ExcelFormatHelper.ts +49 -0
  173. package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper-dbg.js +51 -56
  174. package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper.js +2 -3
  175. package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper.ts +62 -0
  176. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper-dbg.js +3 -4
  177. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.js +1 -1
  178. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.ts +9 -9
  179. package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper-dbg.js +24 -16
  180. package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper.js +1 -1
  181. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper-dbg.js +228 -225
  182. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.js +2 -3
  183. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.ts +227 -0
  184. package/packages/sap.fe.core/src/sap/fe/core/helpers/PasteHelper-dbg.js +209 -132
  185. package/packages/sap.fe.core/src/sap/fe/core/helpers/PasteHelper.js +2 -3
  186. package/packages/sap.fe.core/src/sap/fe/core/helpers/PasteHelper.ts +196 -0
  187. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +331 -313
  188. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.js +2 -3
  189. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.ts +330 -0
  190. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticKeyHelper-dbg.js +65 -67
  191. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticKeyHelper.js +2 -3
  192. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticKeyHelper.ts +73 -0
  193. package/packages/sap.fe.core/src/sap/fe/core/helpers/StableIdHelper-dbg.js +1 -5
  194. package/packages/sap.fe.core/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
  195. package/packages/sap.fe.core/src/sap/fe/core/helpers/StableIdHelper.ts +2 -6
  196. package/packages/sap.fe.core/src/sap/fe/core/jsx-runtime/jsx-dbg.js +1 -1
  197. package/packages/sap.fe.core/src/sap/fe/core/jsx-runtime/jsx.ts +1 -1
  198. package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +1 -1
  199. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +23 -26
  200. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +1 -1
  201. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +630 -649
  202. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js.map +3 -3
  203. package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js +17 -5
  204. package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js.map +2 -2
  205. package/packages/sap.fe.core/src/sap/fe/core/library.js +1 -1
  206. package/packages/sap.fe.core/src/sap/fe/core/manifest.json +10 -10
  207. package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +1 -1
  208. package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +1 -1
  209. package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +23 -10
  210. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +9 -0
  211. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +9 -0
  212. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +9 -0
  213. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +10 -1
  214. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +9 -0
  215. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +9 -0
  216. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +9 -0
  217. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +9 -0
  218. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +9 -0
  219. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +9 -0
  220. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +9 -0
  221. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +9 -0
  222. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +9 -0
  223. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +9 -0
  224. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +9 -0
  225. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +9 -0
  226. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +9 -0
  227. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +13 -4
  228. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +15 -6
  229. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +15 -6
  230. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +15 -6
  231. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +9 -0
  232. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +10 -1
  233. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +9 -0
  234. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +9 -0
  235. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +9 -0
  236. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +15 -6
  237. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +9 -0
  238. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +9 -0
  239. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +15 -6
  240. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +14 -5
  241. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +9 -0
  242. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +9 -0
  243. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +9 -0
  244. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +9 -0
  245. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +9 -0
  246. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +9 -0
  247. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +9 -0
  248. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +11 -2
  249. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +9 -0
  250. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +15 -6
  251. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +9 -0
  252. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +9 -0
  253. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +9 -0
  254. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +9 -0
  255. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +9 -0
  256. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +9 -0
  257. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +15 -6
  258. package/packages/sap.fe.core/src/sap/fe/core/resources.json +427 -341
  259. package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +1 -1
  260. package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
  261. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +268 -202
  262. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.js +2 -3
  263. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +212 -0
  264. package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +1 -1
  265. package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.ts +7 -6
  266. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +405 -300
  267. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.js +2 -3
  268. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.ts +316 -0
  269. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +148 -81
  270. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -3
  271. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.ts +80 -0
  272. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +986 -899
  273. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +2 -3
  274. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.ts +898 -0
  275. package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory-dbg.js +1 -1
  276. package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.ts +15 -10
  277. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +35 -81
  278. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
  279. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.ts +46 -94
  280. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +460 -487
  281. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +2 -3
  282. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +453 -0
  283. package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage-dbg.controller.js +9 -8
  284. package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -3
  285. package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +8 -0
  286. package/packages/sap.fe.core/src/sap/fe/core/support/AnnotationIssue.support.js +15 -3
  287. package/packages/sap.fe.core/src/sap/fe/core/support/AnnotationIssue.support.ts +16 -2
  288. package/packages/sap.fe.core/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -2
  289. package/packages/sap.fe.core/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +1 -1
  290. package/packages/sap.fe.core/src/sap/fe/core/templating/FieldControlHelper-dbg.js +8 -8
  291. package/packages/sap.fe.core/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
  292. package/packages/sap.fe.core/src/sap/fe/core/templating/FieldControlHelper.ts +25 -7
  293. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper-dbg.js +138 -72
  294. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.js +1 -1
  295. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.ts +139 -71
  296. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters-dbg.js +31 -1
  297. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.js +1 -1
  298. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.ts +33 -2
  299. package/packages/sap.fe.core/src/sap/fe/core/type/Email-dbg.js +1 -1
  300. package/packages/sap.fe.core/src/sap/fe/core/type/Email.ts +4 -6
  301. package/packages/sap.fe.core/test/sap/fe/core/designtime/api.json +1 -1
  302. package/packages/sap.fe.core/test/sap/fe/core/designtime/apiref/api.json +1 -1
  303. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jsmeta.json +1 -1
  304. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jstemplates.json +1 -1
  305. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.xmlmeta.json +1 -1
  306. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/controls/FileEditor.js +15 -1
  307. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/MacroNavigationModel.js +90 -0
  308. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/buildingBlockOverview.md +2 -0
  309. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/Component.js +36 -0
  310. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/chartFilterBar.controller.js +5 -0
  311. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/chartFilterBar.view.xml +22 -0
  312. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/localService/ChildEntity.json +686 -0
  313. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/localService/CreditLimitDetails.json +154 -0
  314. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/localService/RootEntity.json +252 -0
  315. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/localService/service.cds +141 -0
  316. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/localService/status.json +11 -0
  317. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartFilterBar/manifest.json +69 -0
  318. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chartFilterBar.html +37 -0
  319. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/FieldFormatOptions.view.xml +186 -122
  320. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/localService/FieldFormatOptions.cds +5 -0
  321. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldFormatOptions/localService/RootEntity.json +2 -1
  322. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarDefault/localService/service.cds +15 -1
  323. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/localService/service.cds +36 -5
  324. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/form/formSample/Component.js +33 -0
  325. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/form/formSample/FormSample.view.xml +10 -0
  326. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/form/formSample/localService/FormSample.cds +72 -0
  327. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/form/formSample/localService/RootEntity.json +13 -0
  328. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/form/formSample/manifest.json +68 -0
  329. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/formSample.html +37 -0
  330. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/EntryPage.controller.js +72 -43
  331. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/EntryPage.controller.ts +90 -0
  332. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/guidance/guidanceFreestyle/EntryPage.view.xml +12 -3
  333. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.controller.js +4 -0
  334. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.view.xml +9 -3
  335. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableFilterBar/Component.js +36 -0
  336. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableFilterBar/TableFilterBar.controller.js +5 -0
  337. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableFilterBar/TableFilterBar.view.xml +11 -0
  338. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableFilterBar/localService/RootEntity.json +102 -0
  339. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableFilterBar/localService/ValueHelpEntity.js +11 -0
  340. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableFilterBar/localService/service.cds +94 -0
  341. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableFilterBar/manifest.json +79 -0
  342. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/tableFilterBar.html +37 -0
  343. package/packages/sap.fe.core/test/sap/fe/core/jest/AnnotationHelper.spec.js +694 -0
  344. package/packages/sap.fe.core/test/sap/fe/core/jest/AnnotationHelper.spec.ts +819 -0
  345. package/packages/sap.fe.core/test/sap/fe/core/jest/AppStateHandler.spec.js +51 -0
  346. package/packages/sap.fe.core/test/sap/fe/core/jest/AppStateHandler.spec.ts +40 -0
  347. package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression-AnnotationExpression.spec.js +1 -1
  348. package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression-AnnotationExpression.spec.ts +1 -1
  349. package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression.spec.js +26 -15
  350. package/packages/sap.fe.core/test/sap/fe/core/jest/BindingExpression.spec.ts +28 -15
  351. package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.ts +202 -0
  352. package/packages/sap.fe.core/test/sap/fe/core/jest/RouterProxy.spec.js +54 -0
  353. package/packages/sap.fe.core/test/sap/fe/core/jest/RouterProxy.spec.ts +35 -0
  354. package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.js +5 -11
  355. package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.ts +8 -8
  356. package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.js +736 -619
  357. package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.ts +703 -0
  358. package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +89 -85
  359. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/draft.spec.js +102 -0
  360. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/draft.spec.ts +97 -0
  361. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/messageHandling.spec.js +492 -0
  362. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/messageHandling.spec.ts +509 -0
  363. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/operations.spec.js +895 -0
  364. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/operations.spec.ts +908 -0
  365. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.js +209 -353
  366. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.ts +222 -362
  367. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalEditFlow.spec.js +508 -0
  368. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalEditFlow.spec.ts +440 -0
  369. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalRouting.spec.ts +90 -0
  370. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/KPIManagement.spec.js +1 -1
  371. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/KPIManagement.spec.ts +10 -10
  372. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MassEdit.spec.js +286 -0
  373. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MassEdit.spec.ts +179 -0
  374. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.js +200 -21
  375. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.ts +168 -17
  376. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Routing.spec.js +40 -0
  377. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Routing.spec.ts +26 -0
  378. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.js +1 -1
  379. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.ts +1 -1
  380. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/FilterBar.spec.js +355 -0
  381. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/FilterBar.spec.ts +287 -0
  382. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.js +1 -1
  383. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.ts +1 -1
  384. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Filter.spec.js +542 -0
  385. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Filter.spec.ts +588 -0
  386. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/HeaderFacet.spec.js +1 -2
  387. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/HeaderFacet.spec.ts +1 -2
  388. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.js +371 -7
  389. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.ts +469 -6
  390. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.js +2 -2
  391. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.ts +2 -2
  392. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ObjectPageAvatar.spec.js +2 -2
  393. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ObjectPageAvatar.spec.ts +1 -1
  394. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/SubSection.spec.js +12 -8
  395. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/SubSection.spec.ts +8 -7
  396. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +436 -45
  397. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +565 -33
  398. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.js +136 -78
  399. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.ts +315 -199
  400. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/Filter.spec.ts.snap +307 -0
  401. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/MetaModelConverter.spec.ts.snap +49 -1
  402. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/Table.spec.ts.snap +1 -0
  403. package/packages/sap.fe.core/test/sap/fe/core/jest/data/AnalyticalService.cds +51 -4
  404. package/packages/sap.fe.core/test/sap/fe/core/jest/data/AnalyticalService2.cds +107 -0
  405. package/packages/sap.fe.core/test/sap/fe/core/jest/data/ComplexType.cds +39 -0
  406. package/packages/sap.fe.core/test/sap/fe/core/jest/data/Filter.cds +187 -0
  407. package/packages/sap.fe.core/test/sap/fe/core/jest/data/MassEditHelper.cds +226 -0
  408. package/packages/sap.fe.core/test/sap/fe/core/jest/data/SideEffects.cds +1 -1
  409. package/packages/sap.fe.core/test/sap/fe/core/jest/data/computedDefaultValueService.cds +99 -0
  410. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.js +25 -5
  411. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.ts +18 -7
  412. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.js +1 -1
  413. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.ts +4 -2
  414. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/DynamicAnnotationPathHelper.spec.js +40 -0
  415. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/DynamicAnnotationPathHelper.spec.ts +39 -0
  416. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ExcelFormatHelper.spec.js +20 -0
  417. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ExcelFormatHelper.spec.ts +13 -0
  418. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelper.spec.js +1 -1
  419. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelper.spec.ts +3 -3
  420. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/MassEditHelper.spec.js +712 -0
  421. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/MassEditHelper.spec.ts +613 -0
  422. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.js +344 -225
  423. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.ts +347 -0
  424. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/PasteHelper.spec.js +439 -0
  425. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/PasteHelper.spec.ts +378 -0
  426. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/SemanticDateOperators.spec.js +123 -0
  427. package/packages/sap.fe.core/test/sap/fe/core/{qunit/helpers/SemanticDateOperators.qunit.js → jest/helpers/SemanticDateOperators.spec.ts} +10 -21
  428. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/SemanticKeyHelper.spec.js +215 -0
  429. package/packages/sap.fe.core/test/sap/fe/core/{qunit/helpers/SemanticKeyHelper.qunit.js → jest/helpers/SemanticKeyHelper.spec.ts} +58 -55
  430. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/StableIdHelper.spec.js +125 -0
  431. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/StableIdHelper.spec.ts +142 -0
  432. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/__snapshots__/MassEditHelper.spec.ts.snap +263 -0
  433. package/packages/sap.fe.core/test/sap/fe/core/jest/services/CacheHandlerTest.spec.js +871 -0
  434. package/packages/sap.fe.core/test/sap/fe/core/jest/services/CacheHandlerTest.spec.ts +899 -0
  435. package/packages/sap.fe.core/test/sap/fe/core/jest/services/NavigationServiceFactory.spec.js +46 -0
  436. package/packages/sap.fe.core/test/sap/fe/core/jest/services/NavigationServiceFactory.spec.ts +37 -0
  437. package/packages/sap.fe.core/test/sap/fe/core/jest/services/RoutingServiceFactory.spec.js +120 -3
  438. package/packages/sap.fe.core/test/sap/fe/core/jest/services/RoutingServiceFactory.spec.ts +96 -7
  439. package/packages/sap.fe.core/test/sap/fe/core/jest/services/ShellServicesFactory.spec.js +86 -0
  440. package/packages/sap.fe.core/test/sap/fe/core/jest/services/ShellServicesFactory.spec.ts +72 -0
  441. package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.js +16 -44
  442. package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.ts +22 -60
  443. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.js +4 -4
  444. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.ts +9 -3
  445. package/packages/sap.fe.core/test/sap/fe/core/jest/type/ComplexType.spec.js +68 -0
  446. package/packages/sap.fe.core/test/sap/fe/core/jest/type/ComplexType.spec.ts +51 -0
  447. package/packages/sap.fe.core/test/sap/fe/core/qunit/TemplatingExpressions.qunit.js +2 -2
  448. package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +0 -105
  449. package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.98.json +0 -11
  450. package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.99.json +534 -0
  451. package/packages/sap.fe.macros/src/sap/fe/macros/.library +1 -1
  452. package/packages/sap.fe.macros/src/sap/fe/macros/.theming +1 -1
  453. package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata-dbg.js +14 -5
  454. package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata.js +1 -1
  455. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI-dbg.js +15 -6
  456. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.js +1 -1
  457. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.ts +9 -1
  458. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate-dbg.js +37 -3
  459. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate.js +1 -1
  460. package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper-dbg.js +27 -2
  461. package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper.js +1 -1
  462. package/packages/sap.fe.macros/src/sap/fe/macros/Field.fragment.xml +4 -0
  463. package/packages/sap.fe.macros/src/sap/fe/macros/Field.metadata-dbg.js +17 -1
  464. package/packages/sap.fe.macros/src/sap/fe/macros/Field.metadata.js +1 -1
  465. package/packages/sap.fe.macros/src/sap/fe/macros/Field.metadata.ts +17 -1
  466. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +1 -1
  467. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.ts +35 -9
  468. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.fragment.xml +1 -1
  469. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata-dbg.js +41 -10
  470. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata.js +1 -1
  471. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +1 -1
  472. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +1 -1
  473. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +50 -4
  474. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +1 -1
  475. package/packages/sap.fe.macros/src/sap/fe/macros/Form.fragment.xml +65 -75
  476. package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata-dbg.js +55 -51
  477. package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata.js +1 -1
  478. package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI-dbg.js +83 -0
  479. package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI.js +5 -0
  480. package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI.ts +29 -0
  481. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.fragment.xml +11 -10
  482. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.metadata-dbg.js +2 -4
  483. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.metadata.js +1 -1
  484. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI-dbg.js +99 -0
  485. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI.js +5 -0
  486. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI.ts +32 -0
  487. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI-dbg.js +67 -7
  488. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.js +1 -1
  489. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.ts +60 -10
  490. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +26 -34
  491. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil.js +1 -1
  492. package/packages/sap.fe.macros/src/sap/fe/macros/Table.fragment.xml +6 -6
  493. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +38 -4
  494. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata.js +1 -1
  495. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI-dbg.js +78 -92
  496. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +1 -1
  497. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +55 -68
  498. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper-dbg.js +41 -39
  499. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper.js +1 -1
  500. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime-dbg.js +125 -31
  501. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime.js +1 -1
  502. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating-dbg.js +16 -42
  503. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.js +1 -1
  504. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.ts +13 -39
  505. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +0 -7
  506. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +1 -1
  507. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper-dbg.js +142 -129
  508. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper.js +1 -1
  509. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils-dbg.js +120 -61
  510. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils.js +1 -1
  511. package/packages/sap.fe.macros/src/sap/fe/macros/form/AddressSection.fragment.xml +4 -4
  512. package/packages/sap.fe.macros/src/sap/fe/macros/form/DataFieldCollection.fragment.xml +3 -3
  513. package/packages/sap.fe.macros/src/sap/fe/macros/form/FormHelper-dbg.js +1 -14
  514. package/packages/sap.fe.macros/src/sap/fe/macros/form/FormHelper.js +1 -1
  515. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.fragment.xml +1 -1
  516. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata-dbg.js +23 -8
  517. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.js +1 -1
  518. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.ts +29 -17
  519. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.fragment.xml +45 -54
  520. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata-dbg.js +16 -22
  521. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata.js +1 -1
  522. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +1 -1
  523. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata-dbg.js +14 -5
  524. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.js +1 -1
  525. package/packages/sap.fe.macros/src/sap/fe/macros/internal/FilterField.fragment.xml +1 -1
  526. package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator-dbg.js +3 -2
  527. package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.ts +4 -3
  528. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +1 -1
  529. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWithQuickViewForm.fragment.xml +3 -1
  530. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWrapper.fragment.xml +3 -1
  531. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ObjectIdentifier.fragment.xml +4 -145
  532. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ObjectStatus.fragment.xml +32 -8
  533. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DatePicker.fragment.xml +1 -1
  534. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DateTimePicker.fragment.xml +1 -1
  535. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/File.fragment.xml +3 -3
  536. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/Input.fragment.xml +1 -1
  537. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithUnit.fragment.xml +2 -2
  538. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithValueHelp.fragment.xml +2 -2
  539. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/TextArea.fragment.xml +1 -1
  540. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/TimePicker.fragment.xml +1 -1
  541. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/fragments/ObjectIdentifierContent.fragment.xml +81 -0
  542. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +64 -30
  543. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +1 -1
  544. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +58 -36
  545. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Formatter-dbg.js +4 -2
  546. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Formatter.js +1 -1
  547. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Formatter.ts +19 -20
  548. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime-dbg.js +2 -3
  549. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.js +1 -1
  550. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.ts +13 -5
  551. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelpContent.fragment.xml +3 -1
  552. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelpTemplating-dbg.js +17 -7
  553. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelpTemplating.js +1 -1
  554. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueHelpTemplating.ts +10 -3
  555. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -1
  556. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper-dbg.js +53 -62
  557. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +1 -1
  558. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +2 -2
  559. package/packages/sap.fe.macros/src/sap/fe/macros/library-dbg.js +1 -1
  560. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js +16 -14
  561. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js.map +1 -1
  562. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js +157 -178
  563. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js.map +4 -4
  564. package/packages/sap.fe.macros/src/sap/fe/macros/library.js +1 -1
  565. package/packages/sap.fe.macros/src/sap/fe/macros/manifest.json +9 -9
  566. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +1 -1
  567. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +14 -6
  568. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +14 -6
  569. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +14 -6
  570. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +14 -6
  571. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +14 -6
  572. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +14 -6
  573. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +14 -6
  574. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +14 -6
  575. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +14 -6
  576. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +14 -6
  577. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +14 -6
  578. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +14 -6
  579. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saptrc.properties +14 -6
  580. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +14 -6
  581. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +14 -6
  582. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +14 -6
  583. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +14 -6
  584. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +14 -6
  585. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +14 -6
  586. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +14 -6
  587. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +14 -6
  588. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +14 -6
  589. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +14 -6
  590. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +14 -6
  591. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +14 -6
  592. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +14 -6
  593. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +14 -6
  594. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +14 -6
  595. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +14 -6
  596. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +14 -6
  597. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +14 -6
  598. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +14 -6
  599. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +14 -6
  600. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +14 -6
  601. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +14 -6
  602. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +14 -6
  603. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +14 -6
  604. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +14 -6
  605. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +14 -6
  606. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +14 -6
  607. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +16 -8
  608. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +14 -6
  609. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +14 -6
  610. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +14 -6
  611. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +14 -6
  612. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +14 -6
  613. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +14 -6
  614. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +14 -6
  615. package/packages/sap.fe.macros/src/sap/fe/macros/microchart/MicroChartHelper-dbg.js +2 -2
  616. package/packages/sap.fe.macros/src/sap/fe/macros/microchart/MicroChartHelper.js +1 -1
  617. package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/BulletMicroChart.fragment.xml +2 -2
  618. package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/ComparisonMicroChart.fragment.xml +1 -1
  619. package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +277 -209
  620. package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +5 -16
  621. package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +17 -4
  622. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +0 -2
  623. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +1 -1
  624. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableRuntime-dbg.js +27 -18
  625. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableRuntime.js +1 -1
  626. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate-dbg.js +196 -139
  627. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -1
  628. package/packages/sap.fe.macros/src/sap/fe/macros/visualfilters/InteractiveChartHelper-dbg.js +12 -14
  629. package/packages/sap.fe.macros/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +1 -1
  630. package/packages/sap.fe.macros/src/sap/fe/macros/visualfilters/VisualFilterRuntime-dbg.js +13 -15
  631. package/packages/sap.fe.macros/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +1 -1
  632. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +113 -2
  633. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/apiref/api.json +1 -1
  634. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.jsmeta.json +1 -1
  635. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.xmlmeta.json +1 -1
  636. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.js +1 -1
  637. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.ts +1 -1
  638. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartMacro.spec.js +32 -20
  639. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartMacro.spec.ts +24 -12
  640. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CollectionField.spec.js +15 -5
  641. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CollectionField.spec.ts +18 -3
  642. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonHelper.spec.js +69 -0
  643. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonHelper.spec.ts +32 -0
  644. package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.js +6 -180
  645. package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.ts +6 -177
  646. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroWithSemanticKey.spec.js +1 -1
  647. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroWithSemanticKey.spec.ts +1 -1
  648. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterField.spec.js +1 -1
  649. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterField.spec.ts +1 -2
  650. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterFieldHelper.spec.js +51 -0
  651. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterFieldHelper.spec.ts +48 -0
  652. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterUtils.spec.js +133 -0
  653. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormContainerAPI.spec.js +34 -0
  654. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormContainerAPI.spec.ts +23 -0
  655. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormMacro.spec.js +49 -0
  656. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormMacro.spec.ts +41 -0
  657. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroAPI.spec.js +105 -0
  658. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroAPI.spec.ts +53 -0
  659. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroComponent.spec.js +1 -1
  660. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroComponent.spec.ts +1 -1
  661. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MicroChart.spec.js +15 -1
  662. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MicroChart.spec.ts +13 -0
  663. package/packages/sap.fe.macros/test/sap/fe/macros/jest/PhantomUtil.spec.js +1 -1
  664. package/packages/sap.fe.macros/test/sap/fe/macros/jest/PhantomUtil.spec.ts +1 -1
  665. package/packages/sap.fe.macros/test/sap/fe/macros/jest/QuickViewForm.spec.js +2 -3
  666. package/packages/sap.fe.macros/test/sap/fe/macros/jest/QuickViewForm.spec.ts +3 -4
  667. package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.js +14 -4
  668. package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.ts +18 -4
  669. package/packages/sap.fe.macros/test/sap/fe/macros/jest/Table.spec.js +140 -0
  670. package/packages/sap.fe.macros/test/sap/fe/macros/jest/Table.spec.ts +144 -0
  671. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.js +445 -635
  672. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.ts +528 -719
  673. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.js +83 -4
  674. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.ts +101 -3
  675. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ValueHelpMacro.spec.js +1 -1
  676. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ValueHelpMacro.spec.ts +1 -1
  677. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartMacro.spec.ts.snap +75 -7
  678. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/CollectionField.spec.ts.snap +26 -11
  679. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap +42 -304
  680. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroDataFieldTypes.spec.ts.snap +6 -6
  681. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterBarMacro.spec.ts.snap +12 -12
  682. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterField.spec.ts.snap +3 -3
  683. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FormMacro.spec.ts.snap +150 -0
  684. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/KPITag.spec.ts.snap +4 -4
  685. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/MicroChart.spec.ts.snap +39 -3
  686. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +4 -4
  687. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/SimpleFieldMacro.spec.ts.snap +125 -51
  688. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/Table.spec.ts.snap +1455 -0
  689. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Chart.cds +56 -1
  690. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldMacroDataFieldTypes.cds +12 -59
  691. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Form.cds +129 -0
  692. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/MicroChart.cds +14 -0
  693. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Table.cds +55 -2
  694. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/simpleFieldMacro.cds +10 -4
  695. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.js +2 -2
  696. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.ts +15 -8
  697. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.js +12 -34
  698. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.ts +21 -38
  699. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.js +1 -1
  700. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.ts +2 -2
  701. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/__snapshots__/columnWidth.spec.ts.snap +54 -14
  702. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.js +17 -7
  703. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.ts +18 -11
  704. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/data/columnWidth.cds +26 -3
  705. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.js +145 -17
  706. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.ts +176 -18
  707. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/__snapshots__/TableDelegate.spec.ts.snap +813 -111
  708. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/data/tabledelegate.cds +9 -2
  709. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelper.qunit.js +0 -56
  710. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelperTemplate.qunit.js +0 -321
  711. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormContainerTemplating.qunit.js +1 -0
  712. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormTemplating.qunit.js +10 -5
  713. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormTemplatingTs.qunit.js +1 -1
  714. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/MicroChartHelperForTemplate.qunit.js +1 -2
  715. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableRuntime.qunit.js +1 -1
  716. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueListHelper.qunit.js +130 -1
  717. package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.99.json +343 -0
  718. package/packages/sap.fe.navigation/src/sap/fe/navigation/.library +1 -1
  719. package/packages/sap.fe.navigation/src/sap/fe/navigation/.theming +1 -1
  720. package/packages/sap.fe.navigation/src/sap/fe/navigation/NavigationHandler-dbg.js +0 -1
  721. package/packages/sap.fe.navigation/src/sap/fe/navigation/NavigationHandler.js +1 -1
  722. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-dbg.js +1 -1
  723. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js +2 -2
  724. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js +3 -3
  725. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js.map +2 -2
  726. package/packages/sap.fe.navigation/src/sap/fe/navigation/library.js +1 -1
  727. package/packages/sap.fe.navigation/src/sap/fe/navigation/manifest.json +3 -3
  728. package/packages/sap.fe.navigation/src/sap/fe/navigation/resources.json +4 -4
  729. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/api.json +1 -1
  730. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/apiref/api.json +1 -1
  731. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.xmlmeta.json +1 -1
  732. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.library +1 -1
  733. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.theming +1 -1
  734. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-dbg.js +1 -1
  735. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js +2 -2
  736. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js +2 -2
  737. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library.js +1 -1
  738. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/manifest.json +3 -3
  739. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/api.json +1 -1
  740. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/apiref/api.json +1 -1
  741. package/packages/sap.fe.templates/src/sap/fe/templates/.library +1 -1
  742. package/packages/sap.fe.templates/src/sap/fe/templates/.theming +1 -1
  743. package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/manifest.json +2 -2
  744. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent-dbg.js +1 -1
  745. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent.js +1 -1
  746. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component-dbg.js +8 -0
  747. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component.js +1 -1
  748. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ExtensionAPI-dbg.js +8 -3
  749. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ExtensionAPI.js +1 -1
  750. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReport.view.xml +11 -6
  751. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +114 -29
  752. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController.controller.js +1 -1
  753. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/manifest.json +2 -2
  754. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation-dbg.js +10 -10
  755. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +1 -1
  756. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/Share-dbg.js +7 -6
  757. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/Share.js +1 -1
  758. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState-dbg.js +75 -53
  759. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState.js +1 -1
  760. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/resources.json +14 -23
  761. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/view/fragments/CollectionVisualization.fragment.xml +8 -0
  762. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +3 -3
  763. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +1 -1
  764. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component-dbg.js +1 -1
  765. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +1 -1
  766. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +8 -45
  767. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +17 -67
  768. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1 -1
  769. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/manifest.json +2 -2
  770. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/resources.json +24 -12
  771. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating-dbg.js +1 -1
  772. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.ts +2 -2
  773. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.fragment.xml +5 -1
  774. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/Heading.fragment.xml +33 -0
  775. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeadingAvatar.fragment.xml +17 -0
  776. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeadingTitle.fragment.xml +18 -0
  777. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionFormContent.fragment.xml +3 -3
  778. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/SectionMoreFormContent.fragment.xml +3 -3
  779. package/packages/sap.fe.templates/src/sap/fe/templates/library-dbg.js +1 -1
  780. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js +7 -5
  781. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js.map +1 -1
  782. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js +24 -22
  783. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js.map +4 -4
  784. package/packages/sap.fe.templates/src/sap/fe/templates/library.js +1 -1
  785. package/packages/sap.fe.templates/src/sap/fe/templates/manifest.json +13 -13
  786. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle.properties +14 -30
  787. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ar.properties +24 -6
  788. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_bg.properties +24 -6
  789. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ca.properties +24 -6
  790. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cs.properties +24 -6
  791. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cy.properties +24 -6
  792. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_da.properties +24 -6
  793. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_de.properties +24 -6
  794. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_el.properties +25 -7
  795. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en.properties +24 -6
  796. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_GB.properties +24 -6
  797. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +24 -6
  798. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +24 -6
  799. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +24 -6
  800. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es.properties +24 -6
  801. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es_MX.properties +24 -6
  802. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_et.properties +24 -6
  803. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fi.properties +24 -6
  804. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr.properties +24 -6
  805. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr_CA.properties +24 -6
  806. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hi.properties +24 -6
  807. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hr.properties +25 -7
  808. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hu.properties +24 -6
  809. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_id.properties +26 -8
  810. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_it.properties +24 -6
  811. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_iw.properties +24 -6
  812. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ja.properties +24 -6
  813. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_kk.properties +24 -6
  814. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ko.properties +24 -6
  815. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lt.properties +24 -6
  816. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lv.properties +24 -6
  817. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ms.properties +24 -6
  818. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_nl.properties +24 -6
  819. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_no.properties +24 -6
  820. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pl.properties +24 -6
  821. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt.properties +27 -9
  822. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt_PT.properties +25 -7
  823. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ro.properties +24 -6
  824. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ru.properties +24 -6
  825. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sh.properties +24 -6
  826. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sk.properties +24 -6
  827. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sl.properties +24 -6
  828. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sv.properties +25 -7
  829. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_th.properties +24 -6
  830. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_tr.properties +24 -6
  831. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_uk.properties +25 -7
  832. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_vi.properties +24 -6
  833. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_CN.properties +24 -6
  834. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_TW.properties +24 -6
  835. package/packages/sap.fe.templates/src/sap/fe/templates/resources.json +127 -113
  836. package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/manifest.json +1 -1
  837. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/api.json +1 -1
  838. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/apiref/api.json +1 -1
  839. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.xmlmeta.json +1 -1
  840. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/IntentBasedNavigation.spec.js +59 -0
  841. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/IntentBasedNavigation.spec.ts +54 -0
  842. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/Share.spec.js +85 -0
  843. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/Share.spec.ts +89 -0
  844. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.js +482 -259
  845. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.ts +442 -0
  846. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/AnnotationHelper.spec.js +99 -0
  847. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/AnnotationHelper.spec.ts +82 -0
  848. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/Heading.spec.js +50 -0
  849. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/Heading.spec.ts +32 -0
  850. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/Heading.spec.ts.snap +43 -0
  851. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/Sections.spec.ts.snap +9 -7
  852. package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.js +2 -2
  853. package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.ts +4 -3
  854. package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.99.json +335 -0
  855. package/packages/sap.fe.test/src/sap/fe/test/.library +1 -1
  856. package/packages/sap.fe.test/src/sap/fe/test/.theming +1 -1
  857. package/packages/sap.fe.test/src/sap/fe/test/FeMocks-dbg.js +66 -0
  858. package/packages/sap.fe.test/src/sap/fe/test/FeMocks.js +5 -0
  859. package/packages/sap.fe.test/src/sap/fe/test/FeMocks.ts +77 -0
  860. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper-dbg.js +78 -22
  861. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.js +1 -1
  862. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.ts +66 -22
  863. package/packages/sap.fe.test/src/sap/fe/test/ObjectPage-dbg.js +6 -4
  864. package/packages/sap.fe.test/src/sap/fe/test/ObjectPage.js +1 -1
  865. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper-dbg.js +44 -21
  866. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.js +1 -1
  867. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.ts +28 -8
  868. package/packages/sap.fe.test/src/sap/fe/test/api/BaseAPI-dbg.js +1 -0
  869. package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI-dbg.js +14 -2
  870. package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI.js +1 -1
  871. package/packages/sap.fe.test/src/sap/fe/test/api/DialogCreateActions-dbg.js +1 -1
  872. package/packages/sap.fe.test/src/sap/fe/test/api/DialogCreateActions.js +1 -1
  873. package/packages/sap.fe.test/src/sap/fe/test/api/DialogCreateAssertions-dbg.js +1 -1
  874. package/packages/sap.fe.test/src/sap/fe/test/api/DialogCreateAssertions.js +1 -1
  875. package/packages/sap.fe.test/src/sap/fe/test/api/DialogMessageActions-dbg.js +16 -1
  876. package/packages/sap.fe.test/src/sap/fe/test/api/DialogMessageActions.js +1 -1
  877. package/packages/sap.fe.test/src/sap/fe/test/api/DialogMessageAssertions-dbg.js +1 -1
  878. package/packages/sap.fe.test/src/sap/fe/test/api/DialogMessageAssertions.js +1 -1
  879. package/packages/sap.fe.test/src/sap/fe/test/api/DialogValueHelpActions-dbg.js +1 -1
  880. package/packages/sap.fe.test/src/sap/fe/test/api/DialogValueHelpActions.js +1 -1
  881. package/packages/sap.fe.test/src/sap/fe/test/api/DialogValueHelpAssertions-dbg.js +1 -1
  882. package/packages/sap.fe.test/src/sap/fe/test/api/DialogValueHelpAssertions.js +1 -1
  883. package/packages/sap.fe.test/src/sap/fe/test/api/TableActions-dbg.js +0 -19
  884. package/packages/sap.fe.test/src/sap/fe/test/api/TableActions.js +1 -1
  885. package/packages/sap.fe.test/src/sap/fe/test/api/TableAssertions-dbg.js +3 -4
  886. package/packages/sap.fe.test/src/sap/fe/test/api/TableAssertions.js +1 -1
  887. package/packages/sap.fe.test/src/sap/fe/test/builder/MdcTableBuilder-dbg.js +4 -0
  888. package/packages/sap.fe.test/src/sap/fe/test/builder/MdcTableBuilder.js +1 -1
  889. package/packages/sap.fe.test/src/sap/fe/test/internal/FEJourneyRunner-dbg.js +6 -3
  890. package/packages/sap.fe.test/src/sap/fe/test/internal/FEJourneyRunner.js +1 -1
  891. package/packages/sap.fe.test/src/sap/fe/test/library-dbg.js +1 -1
  892. package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js +3 -2
  893. package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js.map +1 -1
  894. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +39 -20
  895. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js.map +4 -4
  896. package/packages/sap.fe.test/src/sap/fe/test/library.js +1 -1
  897. package/packages/sap.fe.test/src/sap/fe/test/manifest.json +3 -3
  898. package/packages/sap.fe.test/src/sap/fe/test/resources.json +65 -28
  899. package/packages/sap.fe.test/test/sap/fe/test/designtime/api.json +1 -1
  900. package/packages/sap.fe.test/test/sap/fe/test/designtime/apiref/api.json +1 -1
  901. package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.jsmeta.json +1 -1
  902. package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -1
  903. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandling.spec.js +0 -115
  904. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandling.spec.ts +0 -95
  905. package/packages/sap.fe.core/test/sap/fe/core/qunit/helpers/ExcelFormatHelper.qunit.js +0 -19
  906. package/packages/sap.fe.core/test/sap/fe/core/qunit/helpers/StableIdHelper.qunit.js +0 -301
  907. package/packages/sap.fe.core/test/sap/fe/core/qunit/services/CacheHandlerTest.qunit.js +0 -924
  908. package/packages/sap.fe.macros/src/sap/fe/macros/formcontainer/FormContainerRuntime-dbg.js +0 -46
  909. package/packages/sap.fe.macros/src/sap/fe/macros/formcontainer/FormContainerRuntime.js +0 -6
  910. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.js +0 -94
  911. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.ts +0 -70
  912. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableFieldLabel.spec.js +0 -68
  913. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableFieldLabel.spec.ts +0 -65
  914. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/TableFieldLabel.spec.ts.snap +0 -607
  915. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/MassEdit-dbg.js +0 -96
  916. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/MassEdit.js +0 -6
@@ -1,13 +1,14 @@
1
- import { Log } from "sap/base";
2
- import { MessageBox } from "sap/m";
3
- import { Control } from "sap/ui/core";
1
+ import Log from "sap/base/Log";
2
+ import MessageBox from "sap/m/MessageBox";
3
+ import Control from "sap/ui/core/Control";
4
4
 
5
5
  import { FieldRuntime } from "sap/fe/macros/field";
6
6
  import { ResourceModel, DelegateUtil } from "sap/fe/macros";
7
- import { BusyLocker, CommonUtils } from "sap/fe/core";
8
- import { ModelHelper } from "sap/fe/core/helpers";
7
+ import CommonUtils from "sap/fe/core/CommonUtils";
8
+ import ModelHelper from "sap/fe/core/helpers/ModelHelper";
9
9
  import { MockUI5Element, MockEvent, mockMVC } from "sap/fe/test/UI5MockHelper";
10
- import { ODataModel } from "sap/ui/model/odata/v4";
10
+ import ODataModel from "sap/ui/model/odata/v4/ODataModel";
11
+ import BusyLocker from "sap/fe/core/BusyLocker";
11
12
 
12
13
  describe("FieldRuntime", () => {
13
14
  const messageBoxErrorMock = jest.fn();
@@ -156,7 +157,7 @@ describe("FieldRuntime", () => {
156
157
  reject: jest.fn(() => false)
157
158
  }
158
159
  };
159
- FieldRuntime.uploadPromises = fieldRuntimeUploadPromisesMock;
160
+ (FieldRuntime as any).uploadPromises = fieldRuntimeUploadPromisesMock;
160
161
  });
161
162
 
162
163
  beforeAll(() => {
@@ -313,7 +314,13 @@ describe("FieldRuntime", () => {
313
314
  describe("removeStream", () => {
314
315
  const source = new MockUI5Element();
315
316
  source.getParent.mockReturnValue({
316
- getItems: jest.fn(() => [{ isA: jest.fn(() => false) }, { isA: jest.fn(() => true) }, { isA: jest.fn(() => false) }])
317
+ getItems: jest.fn(() => [
318
+ { isA: jest.fn(() => false) },
319
+ {
320
+ isA: jest.fn(() => true)
321
+ },
322
+ { isA: jest.fn(() => false) }
323
+ ])
317
324
  });
318
325
  const mockEvent = new MockEvent({}, source);
319
326
 
@@ -18,7 +18,6 @@ sap.ui.define(["sap/fe/macros/field/FieldTemplating", "sap/fe/core/templating/UI
18
18
  var isUsedInNavigationWithQuickViewFacets = FieldTemplating.isUsedInNavigationWithQuickViewFacets;
19
19
  var getSemanticObjects = FieldTemplating.getSemanticObjects;
20
20
  var getSemanticObjectExpressionToResolve = FieldTemplating.getSemanticObjectExpressionToResolve;
21
- var getDataPointStyle = FieldTemplating.getDataPointStyle;
22
21
  var getDisplayStyle = FieldTemplating.getDisplayStyle;
23
22
  var getValueBinding = FieldTemplating.getValueBinding;
24
23
  var getVisibleExpression = FieldTemplating.getVisibleExpression;
@@ -82,11 +81,11 @@ sap.ui.define(["sap/fe/macros/field/FieldTemplating", "sap/fe/core/templating/UI
82
81
  var emailSimpleBinding = getValueBinding(getDataModelObjectPathForProperty(entitySet, properties["emailBinding"]), {});
83
82
  expect(emailSimpleBinding).toEqual("{path: 'emailBinding', type: 'sap.fe.core.type.Email'}");
84
83
  var unitWithCurrencyBindingSimpleBinding = getValueBinding(getDataModelObjectPathForProperty(entitySet, properties["UnitWithCurrencyBinding"]), {});
85
- expect(unitWithCurrencyBindingSimpleBinding).toEqual("{mode:'TwoWay', parts:[{path:'UnitWithCurrencyBinding', type : 'sap.ui.model.odata.type.Int32', formatOptions: {parseAsString: false, emptyString: ''}},{path:'currency', type : 'sap.ui.model.odata.type.String', formatOptions: {parseKeepsEmptyString: true}},{mode:'OneTime',path:'/##@@requestCurrencyCodes',targetType:'any'}],type:'sap.ui.model.odata.type.Currency', formatOptions: {parseAsString: false, emptyString: '', showMeasure: false}}");
84
+ expect(unitWithCurrencyBindingSimpleBinding).toMatchInlineSnapshot("\"{mode:'TwoWay', parts:[{path: 'UnitWithCurrencyBinding', type: 'sap.ui.model.odata.type.Int32', formatOptions: {parseAsString: false, emptyString: ''}},{path: 'currency', type: 'sap.ui.model.odata.type.String', formatOptions: {parseKeepsEmptyString: true}},{mode:'OneTime',path:'/##@@requestCurrencyCodes',targetType:'any'}],type:'sap.ui.model.odata.type.Currency', formatOptions: {parseAsString: false, emptyString: '', showMeasure: false}}\"");
86
85
  var unitWithCurrencyBindingIgnoreUnit = getValueBinding(getDataModelObjectPathForProperty(entitySet, properties["UnitWithCurrencyBinding"]), {}, true);
87
86
  expect(unitWithCurrencyBindingIgnoreUnit).toEqual("{path: 'UnitWithCurrencyBinding', type: 'sap.ui.model.odata.type.Int32', formatOptions: {parseAsString: false, emptyString: ''}}");
88
87
  var unitWithCurrencyDescriptionBinding = getValueBinding(getDataModelObjectPathForProperty(entitySet, properties["UnitWithCurrencyBinding"]), {}, false, false, undefined, true, true);
89
- expect(unitWithCurrencyDescriptionBinding).toEqual("{mode:'TwoWay', parts:[{path:'UnitWithCurrencyBinding', type : 'sap.ui.model.odata.type.Int32', formatOptions: {parseAsString: false, emptyString: ''}},{path:'currency', type : 'sap.ui.model.odata.type.String', formatOptions: {parseKeepsEmptyString: true}},{mode:'OneTime',path:'/##@@requestCurrencyCodes',targetType:'any'}],type:'sap.ui.model.odata.type.Currency', formatOptions: {parseAsString: false, emptyString: '', showNumber: false}}");
88
+ expect(unitWithCurrencyDescriptionBinding).toMatchInlineSnapshot("\"{mode:'TwoWay', parts:[{path: 'UnitWithCurrencyBinding', type: 'sap.ui.model.odata.type.Int32', formatOptions: {parseAsString: false, emptyString: ''}},{path: 'currency', type: 'sap.ui.model.odata.type.String', formatOptions: {parseKeepsEmptyString: true}},{mode:'OneTime',path:'/##@@requestCurrencyCodes',targetType:'any'}],type:'sap.ui.model.odata.type.Currency', formatOptions: {parseAsString: false, emptyString: '', showNumber: false}}\"");
90
89
  });
91
90
  it("#getDisplayStyle", {
92
91
  "references": [{
@@ -98,17 +97,20 @@ sap.ui.define(["sap/fe/macros/field/FieldTemplating", "sap/fe/core/templating/UI
98
97
 
99
98
  var entitySetLineItem = (_entitySet$entityType = entitySet.entityType.annotations.UI) === null || _entitySet$entityType === void 0 ? void 0 : _entitySet$entityType.LineItem;
100
99
  var dataModelObjectPathForProperty = getDataModelObjectPathForProperty(entitySet, entitySetLineItem[1]);
101
- var semanticObject = "";
102
100
  var formatOptions = {
103
101
  valueFormat: "DescriptionValue",
104
102
  textAlignMode: "Form",
105
- retrieveTextFromValueList: true
103
+ retrieveTextFromValueList: false
106
104
  };
107
- var dataFieldConverted = getValueBinding(getDataModelObjectPathForProperty(entitySet, properties["propertyNoTextWithVH"]), {});
108
- var displayStyle = getDisplayStyle(properties["propertyNoTextWithVH"], dataFieldConverted, dataModelObjectPathForProperty, formatOptions, semanticObject); // Fallback feature for retrieve the text annotation from the value lists:
109
- // Property has value help, no Text annotation, has display format, used in Form and manifest-switch retrieveTextFromValueList is on
105
+ var dataFieldConverted = getValueBinding(getDataModelObjectPathForProperty(entitySet, properties["propertyNoTextWithVH"]), {}); // displayStyle "LinkWithQuickViewForm"
110
106
 
111
- expect(displayStyle).toEqual("MdcFieldWithValueHelp");
107
+ var semanticObject = "semanticObject";
108
+ var displayStyleLink = getDisplayStyle(properties["propertyNoTextWithVH"], dataFieldConverted, dataModelObjectPathForProperty, formatOptions, semanticObject);
109
+ expect(displayStyleLink).toEqual("LinkWithQuickViewForm"); // displayStyle "Text"
110
+
111
+ var noSemanticObject = "";
112
+ var displayStyleText = getDisplayStyle(properties["propertyNoTextWithVH"], dataFieldConverted, dataModelObjectPathForProperty, formatOptions, noSemanticObject);
113
+ expect(displayStyleText).toEqual("Text");
112
114
  });
113
115
  it("#getBindingWithTextArrangement", function () {
114
116
  // Cases to consider
@@ -239,30 +241,6 @@ sap.ui.define(["sap/fe/macros/field/FieldTemplating", "sap/fe/core/templating/UI
239
241
  );
240
242
  expect(getVisibleExpression(dataModelObjectPathForProperty)).toEqual("true");
241
243
  });
242
- it("getDataPointStyle with datapoint having Visualization", function () {
243
- var oContextPath = metaModel.createBindingContext("/MainEntity");
244
- var oMetaPath = metaModel.createBindingContext("/MainEntity/@com.sap.vocabularies.UI.v1.HeaderFacets/0/Target/$AnnotationPath/");
245
- var oDataModelPath = getInvolvedDataModelObjects(oMetaPath, oContextPath);
246
- expect(getDataPointStyle(oDataModelPath)).toEqual(undefined);
247
- });
248
- it("getDataPointStyle with datapoint having QuickViewFacets", function () {
249
- var oContextPath = metaModel.createBindingContext("/MainEntity");
250
- var oMetaPath = metaModel.createBindingContext("/MainEntity/@com.sap.vocabularies.UI.v1.HeaderFacets/2/Target/$AnnotationPath/");
251
- var oDataModelPath = getInvolvedDataModelObjects(oMetaPath, oContextPath);
252
- expect(getDataPointStyle(oDataModelPath)).toEqual("LinkWithQuickViewForm");
253
- });
254
- it("getDataPointStyle with datapoint having SemanticObjects", function () {
255
- var oContextPath = metaModel.createBindingContext("/MainEntity");
256
- var oMetaPath = metaModel.createBindingContext("/MainEntity/@com.sap.vocabularies.UI.v1.HeaderFacets/1/Target/$AnnotationPath/");
257
- var oDataModelPath = getInvolvedDataModelObjects(oMetaPath, oContextPath);
258
- expect(getDataPointStyle(oDataModelPath)).toEqual("LinkWrapper");
259
- });
260
- it("getDataPointStyle with datapoint not having Visualization, Quick View Facets, SemanticObjects", function () {
261
- var oContextPath = metaModel.createBindingContext("/MainEntity");
262
- var oMetaPath = metaModel.createBindingContext("/MainEntity/@com.sap.vocabularies.UI.v1.HeaderFacets/3/Target/$AnnotationPath/");
263
- var oDataModelPath = getInvolvedDataModelObjects(oMetaPath, oContextPath);
264
- expect(getDataPointStyle(oDataModelPath)).toEqual(undefined);
265
- });
266
244
  it("getSemanticObjectExpressionToResolve with annotations", function () {
267
245
  var oAnnotations = {
268
246
  Label: "Semantic Object Property",
@@ -310,4 +288,4 @@ sap.ui.define(["sap/fe/macros/field/FieldTemplating", "sap/fe/core/templating/UI
310
288
  });
311
289
  });
312
290
  }, false);
313
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZpZWxkVGVtcGxhdGluZy5zcGVjLnRzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiY29udmVydGVkVHlwZXMiLCJtZXRhTW9kZWwiLCJlbnRpdHlTZXQiLCJlbnRpdHlUeXBlIiwicHJvcGVydGllcyIsImJlZm9yZUFsbCIsInNNZXRhZGF0YVVybCIsImNvbXBpbGVDRFMiLCJwYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsImdldE1ldGFNb2RlbCIsImNvbnZlcnRUeXBlcyIsIm1heWJlRW50aXR5U2V0IiwiZW50aXR5U2V0cyIsImZpbmQiLCJldCIsIm5hbWUiLCJlbnRpdHlQcm9wZXJ0aWVzIiwiZm9yRWFjaCIsInByb3AiLCJFcnJvciIsImJlZm9yZUVhY2giLCJqZXN0IiwiY2xlYXJBbGxNb2NrcyIsIml0IiwidGV4dFNpbXBsZUJpbmRpbmciLCJnZXRWYWx1ZUJpbmRpbmciLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkiLCJleHBlY3QiLCJ0b0VxdWFsIiwidGV4dERlbGV0ZUZvcm1hdHRlckJpbmRpbmciLCJ0ZXh0TWF4TGluZXMiLCJ0ZXh0QmluZGluZ1BhcmFtZXR0ZXIiLCIkJG5vUGF0Y2giLCJ0ZXh0VHlwZUFueSIsInVuZGVmaW5lZCIsImVtYWlsU2ltcGxlQmluZGluZyIsInVuaXRXaXRoQ3VycmVuY3lCaW5kaW5nU2ltcGxlQmluZGluZyIsInVuaXRXaXRoQ3VycmVuY3lCaW5kaW5nSWdub3JlVW5pdCIsInVuaXRXaXRoQ3VycmVuY3lEZXNjcmlwdGlvbkJpbmRpbmciLCJlbnRpdHlTZXRMaW5lSXRlbSIsImFubm90YXRpb25zIiwiVUkiLCJMaW5lSXRlbSIsImRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSIsInNlbWFudGljT2JqZWN0IiwiZm9ybWF0T3B0aW9ucyIsInZhbHVlRm9ybWF0IiwidGV4dEFsaWduTW9kZSIsInJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3QiLCJkYXRhRmllbGRDb252ZXJ0ZWQiLCJkaXNwbGF5U3R5bGUiLCJnZXREaXNwbGF5U3R5bGUiLCJ0ZXh0T25seUJpbmRpbmciLCJnZXRCaW5kaW5nV2l0aFRleHRBcnJhbmdlbWVudCIsImJpbmRpbmdFeHByZXNzaW9uIiwidG9NYXRjaFNuYXBzaG90IiwiY29tcGlsZUJpbmRpbmciLCJ0b0NvbnRhaW4iLCJldmFsdWF0ZUJpbmRpbmdXaXRoTW9kZWwiLCJ0YXJnZXRUZXh0Iiwibm9UZXh0QmluZGluZyIsIm5vVGV4dCIsInRleHRGaXJzdEJpbmRpbmciLCJ0ZXh0Rmlyc3QiLCJ0ZXh0TGFzdEJpbmRpbmciLCJ0ZXh0TGFzdCIsImZ1bGxDb250ZXh0Iiwib3RoZXJNb2RlbEJpbmRpbmciLCJhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uIiwibm90IiwiYWRkVGV4dExhc3RCaW5kaW5nIiwiY29tcGxleFRleHRCaW5kaW5nIiwiaWZFbHNlIiwibW9kZWxDb250ZW50IiwidGVzdFByb3AiLCJvUHJvcGVydHlUeXBlIiwiX3R5cGUiLCJ0eXBlIiwiZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbiIsImdldFZpc2libGVFeHByZXNzaW9uIiwiaXNBbmFseXRpY3MiLCJvQ29udGV4dFBhdGgiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsIm9NZXRhUGF0aCIsIm9EYXRhTW9kZWxQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZ2V0RGF0YVBvaW50U3R5bGUiLCJvQW5ub3RhdGlvbnMiLCJMYWJlbCIsIlNlbWFudGljT2JqZWN0IiwiZ2V0U2VtYW50aWNPYmplY3RFeHByZXNzaW9uVG9SZXNvbHZlIiwiYVNlbU9iakV4cHJUb1Jlc29sdmUiLCJrZXkiLCJ2YWx1ZSIsIm9TZW1hbnRpY09iamVjdENvbnRleHQiLCJnZXRTZW1hbnRpY09iamVjdHMiLCJnZXRPYmplY3QiLCJvUHJvcGVydHkiLCJ0YXJnZXRPYmplY3QiLCJWYWx1ZSIsIiR0YXJnZXQiLCJpc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzIl0s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QXRDLENBQU4sQ0FBNEdyRSxPQUE1RyxDQUFvSCxJQUFwSDtBQUNBLEtBTkMsQ0FBRjtBQVFBTCxJQUFBQSxFQUFFLENBQUMsbUZBQUQsRUFBc0YsWUFBTTtBQUM3RixVQUFNMEQsWUFBWSxHQUFHbEYsU0FBUyxDQUFDbUYsb0JBQVYsQ0FBK0IsYUFBL0IsQ0FBckI7QUFDQSxVQUFNQyxTQUFTLEdBQUdwRixTQUFTLENBQUNtRixvQkFBVixDQUErQixnRkFBL0IsQ0FBbEI7QUFDQSxVQUFNRSxjQUFjLEdBQUdDLDJCQUEyQixDQUFDRixTQUFELEVBQVlGLFlBQVosQ0FBbEQ7QUFDQSxVQUFNZ0IsU0FBbUIsR0FBR2IsY0FBSCxhQUFHQSxjQUFILHVCQUFHQSxjQUFjLENBQUVjLFlBQWhCLENBQTZCQyxLQUE3QixDQUFtQ0MsT0FBL0Q7QUFDQXpFLE1BQUFBLE1BQU0sQ0FBQzBFLHFDQUFxQyxDQUFDakIsY0FBRCxFQUF3Q2EsU0FBeEMsQ0FBdEMsQ0FBTixDQUE0R3JFLE9BQTVHLENBQW9ILEtBQXBIO0FBQ0EsS0FOQyxDQUFGO0FBT0EsR0FoWk8sQ0FBUiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Z2V0QmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnQsXG5cdGFkZFRleHRBcnJhbmdlbWVudFRvQmluZGluZ0V4cHJlc3Npb24sXG5cdGdldFZpc2libGVFeHByZXNzaW9uLFxuXHRGaWVsZEZvcm1hdE9wdGlvbnMsXG5cdGdldFZhbHVlQmluZGluZyxcblx0Z2V0RGlzcGxheVN0eWxlLFxuXHRnZXREYXRhUG9pbnRTdHlsZSxcblx0Z2V0U2VtYW50aWNPYmplY3RFeHByZXNzaW9uVG9SZXNvbHZlLFxuXHRnZXRTZW1hbnRpY09iamVjdHMsXG5cdGlzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHNcbn0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgeyBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgY29tcGlsZUNEUywgZ2V0TWV0YU1vZGVsLCBnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHksIGV2YWx1YXRlQmluZGluZ1dpdGhNb2RlbCB9IGZyb20gXCJzYXAvZmUvdGVzdC9KZXN0VGVtcGxhdGluZ0hlbHBlclwiO1xuaW1wb3J0IHsgY29udmVydFR5cGVzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBBbnlBbm5vdGF0aW9uLCBFbnRpdHlTZXQsIEVudGl0eVR5cGUsIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvYW5ub3RhdGlvbi1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGJpbmRpbmdFeHByZXNzaW9uLCBjb21waWxlQmluZGluZywgaWZFbHNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcbmltcG9ydCB7IExpbmVJdGVtIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5cbmRlc2NyaWJlKFwiRmllbGQgVGVtcGxhdGluZyBUZXN0aW5nXCIsICgpID0+IHtcblx0bGV0IGNvbnZlcnRlZFR5cGVzO1xuXHRsZXQgbWV0YU1vZGVsOiBhbnk7XG5cdGxldCBlbnRpdHlTZXQ6IEVudGl0eVNldDtcblx0bGV0IGVudGl0eVR5cGU6IEVudGl0eVR5cGU7XG5cdGNvbnN0IHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIFByb3BlcnR5PiA9IHt9O1xuXHRiZWZvcmVBbGwoYXN5bmMgKCkgPT4ge1xuXHRcdGNvbnN0IHNNZXRhZGF0YVVybCA9IGNvbXBpbGVDRFMocGF0aC5qb2luKF9fZGlybmFtZSwgXCIuL0ZpZWxkVGVtcGxhdGluZy5jZHNcIikpO1xuXHRcdG1ldGFNb2RlbCA9IGF3YWl0IGdldE1ldGFNb2RlbChzTWV0YWRhdGFVcmwpO1xuXHRcdGNvbnZlcnRlZFR5cGVzID0gY29udmVydFR5cGVzKG1ldGFNb2RlbCk7XG5cdFx0Y29uc3QgbWF5YmVFbnRpdHlTZXQgPSBjb252ZXJ0ZWRUeXBlcy5lbnRpdHlTZXRzLmZpbmQoZXQgPT4gZXQubmFtZSA9PT0gXCJNYWluRW50aXR5XCIpO1xuXHRcdGlmIChtYXliZUVudGl0eVNldCkge1xuXHRcdFx0ZW50aXR5U2V0ID0gbWF5YmVFbnRpdHlTZXQ7XG5cdFx0XHRlbnRpdHlUeXBlID0gbWF5YmVFbnRpdHlTZXQuZW50aXR5VHlwZTtcblx0XHRcdGVudGl0eVR5cGUuZW50aXR5UHJvcGVydGllcy5mb3JFYWNoKHByb3AgPT4ge1xuXHRcdFx0XHRwcm9wZXJ0aWVzW3Byb3AubmFtZV0gPSBwcm9wO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIkVycm9yIGluIHRlc3Qgc2V0dXBcIik7XG5cdFx0fVxuXHR9KTtcblx0YmVmb3JlRWFjaCgoKSA9PiB7XG5cdFx0amVzdC5jbGVhckFsbE1vY2tzKCk7XG5cdH0pO1xuXG5cdGl0KFxuXHRcdFwiI2dldFZhbHVlQmluZGluZ1wiLFxuXHRcdHtcblx0XHRcdFwicmVmZXJlbmNlc1wiOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRcInR5cGVcIjogXCJCQ1BcIixcblx0XHRcdFx0XHRcIklEXCI6IFwiMjE3MDIzNzE2NVwiXG5cdFx0XHRcdH1cblx0XHRcdF1cblx0XHR9LFxuXHRcdCgpID0+IHtcblx0XHRcdGNvbnN0IHRleHRTaW1wbGVCaW5kaW5nID0gZ2V0VmFsdWVCaW5kaW5nKGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShlbnRpdHlTZXQsIHByb3BlcnRpZXNbXCJ0ZXh0QmluZGluZ1wiXSksIHt9KTtcblx0XHRcdGV4cGVjdCh0ZXh0U2ltcGxlQmluZGluZykudG9FcXVhbChcblx0XHRcdFx0XCJ7cGF0aDogJ3RleHRCaW5kaW5nJywgdHlwZTogJ3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZycsIGZvcm1hdE9wdGlvbnM6IHtwYXJzZUtlZXBzRW1wdHlTdHJpbmc6IHRydWV9fVwiXG5cdFx0XHQpO1xuXG5cdFx0XHRjb25zdCB0ZXh0RGVsZXRlRm9ybWF0dGVyQmluZGluZyA9IGdldFZhbHVlQmluZGluZyhcblx0XHRcdFx0Z2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KGVudGl0eVNldCwgcHJvcGVydGllc1tcInRleHRCaW5kaW5nXCJdKSxcblx0XHRcdFx0eyB0ZXh0TWF4TGluZXM6IFwiMTBcIiB9LFxuXHRcdFx0XHR0cnVlLCAvL2lnbm9yZVVuaXQsIGl0IGRvZXNuJ3QgaGF2ZSB1bml0LCBzbyBkb2Vzbid0IG1hdHRlci4gVGVzdGVkIGEgZmV3IGxpbmVzIGxhdGVyLlxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpO1xuXHRcdFx0ZXhwZWN0KHRleHREZWxldGVGb3JtYXR0ZXJCaW5kaW5nKS50b0VxdWFsKFwie3RleHRCaW5kaW5nfVwiKTtcblxuXHRcdFx0Y29uc3QgdGV4dEJpbmRpbmdQYXJhbWV0dGVyID0gZ2V0VmFsdWVCaW5kaW5nKFxuXHRcdFx0XHRnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkoZW50aXR5U2V0LCBwcm9wZXJ0aWVzW1widGV4dEJpbmRpbmdcIl0pLFxuXHRcdFx0XHR7IHRleHRNYXhMaW5lczogXCIxMFwiIH0sXG5cdFx0XHRcdHRydWUsXG5cdFx0XHRcdHRydWUsXG5cdFx0XHRcdHsgJCRub1BhdGNoOiB0cnVlIH1cblx0XHRcdCk7XG5cdFx0XHRleHBlY3QodGV4dEJpbmRpbmdQYXJhbWV0dGVyKS50b0VxdWFsKFwie3BhdGg6ICd0ZXh0QmluZGluZycsIHBhcmFtZXRlcnM6IHskJG5vUGF0Y2g6IHRydWV9fVwiKTtcblxuXHRcdFx0Y29uc3QgdGV4dFR5cGVBbnkgPSBnZXRWYWx1ZUJpbmRpbmcoXG5cdFx0XHRcdGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShlbnRpdHlTZXQsIHByb3BlcnRpZXNbXCJ0ZXh0QmluZGluZ1wiXSksXG5cdFx0XHRcdHt9LFxuXHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KTtcblx0XHRcdGV4cGVjdCh0ZXh0VHlwZUFueSkudG9FcXVhbChcblx0XHRcdFx0XCJ7cGF0aDogJ3RleHRCaW5kaW5nJywgdHlwZTogJ3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZycsIHRhcmdldFR5cGU6ICdhbnknLCBmb3JtYXRPcHRpb25zOiB7cGFyc2VLZWVwc0VtcHR5U3RyaW5nOiB0cnVlfX1cIlxuXHRcdFx0KTtcblxuXHRcdFx0Y29uc3QgZW1haWxTaW1wbGVCaW5kaW5nID0gZ2V0VmFsdWVCaW5kaW5nKGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShlbnRpdHlTZXQsIHByb3BlcnRpZXNbXCJlbWFpbEJpbmRpbmdcIl0pLCB7fSk7XG5cdFx0XHRleHBlY3QoZW1haWxTaW1wbGVCaW5kaW5nKS50b0VxdWFsKFwie3BhdGg6ICdlbWFpbEJpbmRpbmcnLCB0eXBlOiAnc2FwLmZlLmNvcmUudHlwZS5FbWFpbCd9XCIpO1xuXG5cdFx0XHRjb25zdCB1bml0V2l0aEN1cnJlbmN5QmluZGluZ1NpbXBsZUJpbmRpbmcgPSBnZXRWYWx1ZUJpbmRpbmcoXG5cdFx0XHRcdGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShlbnRpdHlTZXQsIHByb3BlcnRpZXNbXCJVbml0V2l0aEN1cnJlbmN5QmluZGluZ1wiXSksXG5cdFx0XHRcdHt9XG5cdFx0XHQpO1xuXHRcdFx0ZXhwZWN0KHVuaXRXaXRoQ3VycmVuY3lCaW5kaW5nU2ltcGxlQmluZGluZykudG9FcXVhbChcblx0XHRcdFx0XCJ7bW9kZTonVHdvV2F5JywgcGFydHM6W3twYXRoOidVbml0V2l0aEN1cnJlbmN5QmluZGluZycsIHR5cGUgOiAnc2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuSW50MzInLCBmb3JtYXRPcHRpb25zOiB7cGFyc2VBc1N0cmluZzogZmFsc2UsIGVtcHR5U3RyaW5nOiAnJ319LHtwYXRoOidjdXJyZW5jeScsIHR5cGUgOiAnc2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU3RyaW5nJywgZm9ybWF0T3B0aW9uczoge3BhcnNlS2VlcHNFbXB0eVN0cmluZzogdHJ1ZX19LHttb2RlOidPbmVUaW1lJyxwYXRoOicvIyNAQHJlcXVlc3RDdXJyZW5jeUNvZGVzJyx0YXJnZXRUeXBlOidhbnknfV0sdHlwZTonc2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuQ3VycmVuY3knLCBmb3JtYXRPcHRpb25zOiB7cGFyc2VBc1N0cmluZzogZmFsc2UsIGVtcHR5U3RyaW5nOiAnJywgc2hvd01lYXN1cmU6IGZhbHNlfX1cIlxuXHRcdFx0KTtcblxuXHRcdFx0Y29uc3QgdW5pdFdpdGhDdXJyZW5jeUJpbmRpbmdJZ25vcmVVbml0ID0gZ2V0VmFsdWVCaW5kaW5nKFxuXHRcdFx0XHRnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkoZW50aXR5U2V0LCBwcm9wZXJ0aWVzW1wiVW5pdFdpdGhDdXJyZW5jeUJpbmRpbmdcIl0pLFxuXHRcdFx0XHR7fSxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KTtcblx0XHRcdGV4cGVjdCh1bml0V2l0aEN1cnJlbmN5QmluZGluZ0lnbm9yZVVuaXQpLnRvRXF1YWwoXG5cdFx0XHRcdFwie3BhdGg6ICdVbml0V2l0aEN1cnJlbmN5QmluZGluZycsIHR5cGU6ICdzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnQzMicsIGZvcm1hdE9wdGlvbnM6IHtwYXJzZUFzU3RyaW5nOiBmYWxzZSwgZW1wdHlTdHJpbmc6ICcnfX1cIlxuXHRcdFx0KTtcblxuXHRcdFx0Y29uc3QgdW5pdFdpdGhDdXJyZW5jeURlc2NyaXB0aW9uQmluZGluZyA9IGdldFZhbHVlQmluZGluZyhcblx0XHRcdFx0Z2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KGVudGl0eVNldCwgcHJvcGVydGllc1tcIlVuaXRXaXRoQ3VycmVuY3lCaW5kaW5nXCJdKSxcblx0XHRcdFx0e30sXG5cdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHR0cnVlLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpO1xuXHRcdFx0ZXhwZWN0KHVuaXRXaXRoQ3VycmVuY3lEZXNjcmlwdGlvbkJpbmRpbmcpLnRvRXF1YWwoXG5cdFx0XHRcdFwie21vZGU6J1R3b1dheScsIHBhcnRzOlt7cGF0aDonVW5pdFdpdGhDdXJyZW5jeUJpbmRpbmcnLCB0eXBlIDogJ3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLkludDMyJywgZm9ybWF0T3B0aW9uczoge3BhcnNlQXNTdHJpbmc6IGZhbHNlLCBlbXB0eVN0cmluZzogJyd9fSx7cGF0aDonY3VycmVuY3knLCB0eXBlIDogJ3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZycsIGZvcm1hdE9wdGlvbnM6IHtwYXJzZUtlZXBzRW1wdHlTdHJpbmc6IHRydWV9fSx7bW9kZTonT25lVGltZScscGF0aDonLyMjQEByZXF1ZXN0Q3VycmVuY3lDb2RlcycsdGFyZ2V0VHlwZTonYW55J31dLHR5cGU6J3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLkN1cnJlbmN5JywgZm9ybWF0T3B0aW9uczoge3BhcnNlQXNTdHJpbmc6IGZhbHNlLCBlbXB0eVN0cmluZzogJycsIHNob3dOdW1iZXI6IGZhbHNlfX1cIlxuXHRcdFx0KTtcblx0XHR9XG5cdCk7XG5cblx0aXQoXG5cdFx0XCIjZ2V0RGlzcGxheVN0eWxlXCIsXG5cdFx0e1xuXHRcdFx0XCJyZWZlcmVuY2VzXCI6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdFwidHlwZVwiOiBcIkpJUkFcIixcblx0XHRcdFx0XHRcIklEXCI6IFwiRklPUklURUNIUDEtMjExNzZcIlxuXHRcdFx0XHR9XG5cdFx0XHRdXG5cdFx0fSxcblx0XHQoKSA9PiB7XG5cdFx0XHRjb25zdCBlbnRpdHlTZXRMaW5lSXRlbSA9IGVudGl0eVNldC5lbnRpdHlUeXBlLmFubm90YXRpb25zLlVJPy5MaW5lSXRlbSBhcyBMaW5lSXRlbTtcblx0XHRcdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSA9IGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShlbnRpdHlTZXQsIGVudGl0eVNldExpbmVJdGVtWzFdIGFzIEFueUFubm90YXRpb24pO1xuXHRcdFx0Y29uc3Qgc2VtYW50aWNPYmplY3Q6IHN0cmluZyA9IFwiXCI7XG5cdFx0XHRjb25zdCBmb3JtYXRPcHRpb25zID0ge1xuXHRcdFx0XHR2YWx1ZUZvcm1hdDogXCJEZXNjcmlwdGlvblZhbHVlXCIsXG5cdFx0XHRcdHRleHRBbGlnbk1vZGU6IFwiRm9ybVwiLFxuXHRcdFx0XHRyZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0OiB0cnVlXG5cdFx0XHR9IGFzIEZpZWxkRm9ybWF0T3B0aW9ucztcblxuXHRcdFx0Y29uc3QgZGF0YUZpZWxkQ29udmVydGVkID0gZ2V0VmFsdWVCaW5kaW5nKFxuXHRcdFx0XHRnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkoZW50aXR5U2V0LCBwcm9wZXJ0aWVzW1wicHJvcGVydHlOb1RleHRXaXRoVkhcIl0pLFxuXHRcdFx0XHR7fVxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IGRpc3BsYXlTdHlsZSA9IGdldERpc3BsYXlTdHlsZShcblx0XHRcdFx0cHJvcGVydGllc1tcInByb3BlcnR5Tm9UZXh0V2l0aFZIXCJdLFxuXHRcdFx0XHRkYXRhRmllbGRDb252ZXJ0ZWQsXG5cdFx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSxcblx0XHRcdFx0Zm9ybWF0T3B0aW9ucyxcblx0XHRcdFx0c2VtYW50aWNPYmplY3Rcblx0XHRcdCk7XG5cdFx0XHQvLyBGYWxsYmFjayBmZWF0dXJlIGZvciByZXRyaWV2ZSB0aGUgdGV4dCBhbm5vdGF0aW9uIGZyb20gdGhlIHZhbHVlIGxpc3RzOlxuXHRcdFx0Ly8gUHJvcGVydHkgaGFzIHZhbHVlIGhlbHAsIG5vIFRleHQgYW5ub3RhdGlvbiwgaGFzIGRpc3BsYXkgZm9ybWF0LCB1c2VkIGluIEZvcm0gYW5kIG1hbmlmZXN0LXN3aXRjaCByZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0IGlzIG9uXG5cdFx0XHRleHBlY3QoZGlzcGxheVN0eWxlKS50b0VxdWFsKFwiTWRjRmllbGRXaXRoVmFsdWVIZWxwXCIpO1xuXHRcdH1cblx0KTtcblxuXHRpdChcIiNnZXRCaW5kaW5nV2l0aFRleHRBcnJhbmdlbWVudFwiLCAoKSA9PiB7XG5cdFx0Ly8gQ2FzZXMgdG8gY29uc2lkZXJcblxuXHRcdC8vIFRleHRPbmx5XG5cdFx0Y29uc3QgdGV4dE9ubHlCaW5kaW5nID0gZ2V0QmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnQoXG5cdFx0XHRnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkoZW50aXR5U2V0LCBwcm9wZXJ0aWVzW1widGV4dE9ubHlcIl0pLFxuXHRcdFx0YmluZGluZ0V4cHJlc3Npb24oXCJ0ZXh0T25seVwiKVxuXHRcdCk7XG5cdFx0ZXhwZWN0KHRleHRPbmx5QmluZGluZykudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHRleHRPbmx5QmluZGluZykpLnRvQ29udGFpbihcInRhcmdldFRleHRcIik7XG5cdFx0ZXhwZWN0KGV2YWx1YXRlQmluZGluZ1dpdGhNb2RlbChjb21waWxlQmluZGluZyh0ZXh0T25seUJpbmRpbmcpLCB7IHRhcmdldFRleHQ6IFwiWW9sb1wiIH0pKS50b0VxdWFsKFwiWW9sb1wiKTtcblxuXHRcdC8vIE5vIHRleHQgYXJyYW5nZW1lbnRcblx0XHRjb25zdCBub1RleHRCaW5kaW5nID0gZ2V0QmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnQoXG5cdFx0XHRnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkoZW50aXR5U2V0LCBwcm9wZXJ0aWVzW1wibm9UZXh0XCJdKSxcblx0XHRcdGJpbmRpbmdFeHByZXNzaW9uKFwibm9UZXh0XCIpXG5cdFx0KTtcblx0XHRleHBlY3Qobm9UZXh0QmluZGluZykudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG5vVGV4dEJpbmRpbmcpKS50b0NvbnRhaW4oXCJub1RleHRcIik7XG5cdFx0ZXhwZWN0KGV2YWx1YXRlQmluZGluZ1dpdGhNb2RlbChjb21waWxlQmluZGluZyhub1RleHRCaW5kaW5nKSwgeyBub1RleHQ6IFwiWW9sb1wiIH0pKS50b0VxdWFsKFwiWW9sb1wiKTtcblxuXHRcdC8vIFRleHRGaXJzdFxuXHRcdGNvbnN0IHRleHRGaXJzdEJpbmRpbmcgPSBnZXRCaW5kaW5nV2l0aFRleHRBcnJhbmdlbWVudChcblx0XHRcdGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShlbnRpdHlTZXQsIHByb3BlcnRpZXNbXCJ0ZXh0Rmlyc3RcIl0pLFxuXHRcdFx0YmluZGluZ0V4cHJlc3Npb24oXCJ0ZXh0Rmlyc3RcIilcblx0XHQpO1xuXHRcdGV4cGVjdCh0ZXh0Rmlyc3RCaW5kaW5nKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcodGV4dEZpcnN0QmluZGluZykpLnRvQ29udGFpbihcInRleHRGaXJzdFwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcodGV4dEZpcnN0QmluZGluZykpLnRvQ29udGFpbihcInRhcmdldFRleHRcIik7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0ZXZhbHVhdGVCaW5kaW5nV2l0aE1vZGVsKGNvbXBpbGVCaW5kaW5nKHRleHRGaXJzdEJpbmRpbmcpLCB7IHRleHRGaXJzdDogXCJZb2xvIExhc3RcIiwgdGFyZ2V0VGV4dDogXCJZb2xvIERlc2NyaXB0aW9uXCIgfSlcblx0XHQpLnRvRXF1YWwoXCJZb2xvIERlc2NyaXB0aW9uIChZb2xvIExhc3QpXCIpO1xuXG5cdFx0Ly8gVGV4dExhc3Rcblx0XHRjb25zdCB0ZXh0TGFzdEJpbmRpbmcgPSBnZXRCaW5kaW5nV2l0aFRleHRBcnJhbmdlbWVudChcblx0XHRcdGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShlbnRpdHlTZXQsIHByb3BlcnRpZXNbXCJ0ZXh0TGFzdFwiXSksXG5cdFx0XHRiaW5kaW5nRXhwcmVzc2lvbihcInRleHRMYXN0XCIpXG5cdFx0KTtcblx0XHRleHBlY3QodGV4dExhc3RCaW5kaW5nKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcodGV4dExhc3RCaW5kaW5nKSkudG9Db250YWluKFwidGV4dExhc3RcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHRleHRMYXN0QmluZGluZykpLnRvQ29udGFpbihcInRhcmdldFRleHRcIik7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0ZXZhbHVhdGVCaW5kaW5nV2l0aE1vZGVsKGNvbXBpbGVCaW5kaW5nKHRleHRMYXN0QmluZGluZyksIHsgdGV4dExhc3Q6IFwiWW9sbyBGaXJzdFwiLCB0YXJnZXRUZXh0OiBcIllvbG8gRGVzY3JpcHRpb25cIiB9KVxuXHRcdCkudG9FcXVhbChcIllvbG8gRmlyc3QgKFlvbG8gRGVzY3JpcHRpb24pXCIpO1xuXHR9KTtcblxuXHRpdChcIiNhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uXCIsICgpID0+IHtcblx0XHRjb25zdCBmdWxsQ29udGV4dCA9IGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShlbnRpdHlTZXQpO1xuXG5cdFx0Y29uc3Qgb3RoZXJNb2RlbEJpbmRpbmcgPSBhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uKGJpbmRpbmdFeHByZXNzaW9uKFwidGV4dExhc3RcIiwgXCJvdGhlck1vZGVsXCIpLCBmdWxsQ29udGV4dCk7XG5cdFx0ZXhwZWN0KG90aGVyTW9kZWxCaW5kaW5nKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcob3RoZXJNb2RlbEJpbmRpbmcpKS50b0NvbnRhaW4oXCJ0ZXh0TGFzdFwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcob3RoZXJNb2RlbEJpbmRpbmcpKS5ub3QudG9Db250YWluKFwidGFyZ2V0VGV4dFwiKTtcblxuXHRcdGNvbnN0IGFkZFRleHRMYXN0QmluZGluZyA9IGFkZFRleHRBcnJhbmdlbWVudFRvQmluZGluZ0V4cHJlc3Npb24oYmluZGluZ0V4cHJlc3Npb24oXCJ0ZXh0TGFzdFwiKSwgZnVsbENvbnRleHQpO1xuXHRcdGV4cGVjdChhZGRUZXh0TGFzdEJpbmRpbmcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhhZGRUZXh0TGFzdEJpbmRpbmcpKS50b0NvbnRhaW4oXCJ0ZXh0TGFzdFwiKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoYWRkVGV4dExhc3RCaW5kaW5nKSkudG9Db250YWluKFwidGFyZ2V0VGV4dFwiKTtcblx0XHRleHBlY3QoXG5cdFx0XHRldmFsdWF0ZUJpbmRpbmdXaXRoTW9kZWwoY29tcGlsZUJpbmRpbmcoYWRkVGV4dExhc3RCaW5kaW5nKSwgeyB0ZXh0TGFzdDogXCJZb2xvIEZpcnN0XCIsIHRhcmdldFRleHQ6IFwiWW9sbyBEZXNjcmlwdGlvblwiIH0pXG5cdFx0KS50b0VxdWFsKFwiWW9sbyBGaXJzdCAoWW9sbyBEZXNjcmlwdGlvbilcIik7XG5cblx0XHRjb25zdCBjb21wbGV4VGV4dEJpbmRpbmcgPSBhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uKFxuXHRcdFx0aWZFbHNlKGJpbmRpbmdFeHByZXNzaW9uKFwidGVzdFByb3BcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwidGV4dExhc3RcIiksIGJpbmRpbmdFeHByZXNzaW9uKFwibm9UZXh0XCIpKSxcblx0XHRcdGZ1bGxDb250ZXh0XG5cdFx0KTtcblx0XHRleHBlY3QoY29tcGxleFRleHRCaW5kaW5nKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoY29tcGxleFRleHRCaW5kaW5nKSkudG9Db250YWluKFwidGV4dExhc3RcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGNvbXBsZXhUZXh0QmluZGluZykpLnRvQ29udGFpbihcInRhcmdldFRleHRcIik7XG5cdFx0Y29uc3QgbW9kZWxDb250ZW50ID0ge1xuXHRcdFx0dGVzdFByb3A6IHRydWUsXG5cdFx0XHR0ZXh0TGFzdDogXCJZb2xvIEZpcnN0XCIsXG5cdFx0XHR0YXJnZXRUZXh0OiBcIllvbG8gRGVzY3JpcHRpb25cIixcblx0XHRcdG5vVGV4dDogXCJOb3QgWW9sb1wiXG5cdFx0fTtcblx0XHRleHBlY3QoZXZhbHVhdGVCaW5kaW5nV2l0aE1vZGVsKGNvbXBpbGVCaW5kaW5nKGNvbXBsZXhUZXh0QmluZGluZyksIG1vZGVsQ29udGVudCkpLnRvRXF1YWwoXCJZb2xvIEZpcnN0IChZb2xvIERlc2NyaXB0aW9uKVwiKTtcblxuXHRcdG1vZGVsQ29udGVudC50ZXN0UHJvcCA9IGZhbHNlO1xuXHRcdGV4cGVjdChldmFsdWF0ZUJpbmRpbmdXaXRoTW9kZWwoY29tcGlsZUJpbmRpbmcoY29tcGxleFRleHRCaW5kaW5nKSwgbW9kZWxDb250ZW50KSkudG9FcXVhbChcIk5vdCBZb2xvXCIpO1xuXHR9KTtcblxuXHRpdChcImZvcm1hdHRlZCBJbnRlZ2VyIHR5cGUgY2FsbFwiLCAoKSA9PiB7XG5cdFx0Y29uc3Qgb1Byb3BlcnR5VHlwZSA9IHsgX3R5cGU6IFwiUHJvcGVydHlcIiwgdHlwZTogXCJFZG0uSW50MzJcIiB9IGFzIFByb3BlcnR5O1xuXHRcdHJldHVybiBleHBlY3QoY29tcGlsZUJpbmRpbmcoZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihvUHJvcGVydHlUeXBlLCBiaW5kaW5nRXhwcmVzc2lvbihcInZhbHVlXCIpKSkpLnRvRXF1YWwoXG5cdFx0XHRcIntwYXRoOiAndmFsdWUnLCB0eXBlOiAnc2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuSW50MzInLCBmb3JtYXRPcHRpb25zOiB7cGFyc2VBc1N0cmluZzogZmFsc2UsIGVtcHR5U3RyaW5nOiAnJ319XCJcblx0XHQpO1xuXHR9KTtcblxuXHRpdChcblx0XHRcImZvcm1hdHRlZCBEb3VibGUgdHlwZSBjYWxsXCIsXG5cdFx0e1xuXHRcdFx0XCJyZWZlcmVuY2VzXCI6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdFwidHlwZVwiOiBcIkJDUFwiLFxuXHRcdFx0XHRcdFwiSURcIjogXCIyMTgwMjEyMTQ4XCJcblx0XHRcdFx0fVxuXHRcdFx0XVxuXHRcdH0sXG5cdFx0KCkgPT4ge1xuXHRcdFx0Y29uc3Qgb1Byb3BlcnR5VHlwZSA9IHsgX3R5cGU6IFwiUHJvcGVydHlcIiwgdHlwZTogXCJFZG0uRG91YmxlXCIgfSBhcyBQcm9wZXJ0eTtcblx0XHRcdHJldHVybiBleHBlY3QoY29tcGlsZUJpbmRpbmcoZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihvUHJvcGVydHlUeXBlLCBiaW5kaW5nRXhwcmVzc2lvbihcInZhbHVlXCIpKSkpLnRvRXF1YWwoXG5cdFx0XHRcdFwie3BhdGg6ICd2YWx1ZScsIHR5cGU6ICdzYXAudWkubW9kZWwub2RhdGEudHlwZS5Eb3VibGUnLCBmb3JtYXRPcHRpb25zOiB7cGFyc2VBc1N0cmluZzogZmFsc2UsIGVtcHR5U3RyaW5nOiAnJ319XCJcblx0XHRcdCk7XG5cdFx0fVxuXHQpO1xuXG5cdGl0KFwiY2FuIGV2YWx1YXRlIHRoZSB2aXNpYmxlIHBhcmFtZXRlciBiYXNlZCBvbiBVSS5IaWRkZW5cIiwgKCkgPT4ge1xuXHRcdGNvbnN0IGVudGl0eVNldExpbmVJdGVtID0gZW50aXR5U2V0LmVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkxpbmVJdGVtIGFzIExpbmVJdGVtO1xuXHRcdGxldCBkYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkgPSBnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkoXG5cdFx0XHRlbnRpdHlTZXQsXG5cdFx0XHRlbnRpdHlTZXRMaW5lSXRlbVsxXSBhcyBBbnlBbm5vdGF0aW9uIC8vIHN0YXRpY0hpZGRlblByb3Bcblx0XHQpO1xuXHRcdGV4cGVjdChnZXRWaXNpYmxlRXhwcmVzc2lvbihkYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5ID0gZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KFxuXHRcdFx0ZW50aXR5U2V0LFxuXHRcdFx0ZW50aXR5U2V0TGluZUl0ZW1bMl0gYXMgQW55QW5ub3RhdGlvbiAvLyBkeW5hbWljSGlkZGVuUHJvcFxuXHRcdCk7XG5cdFx0ZXhwZWN0KGdldFZpc2libGVFeHByZXNzaW9uKGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSkpLnRvRXF1YWwoXCJ7PSAle2lzSGlkZGVufSAhPT0gdHJ1ZX1cIik7XG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5ID0gZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KFxuXHRcdFx0ZW50aXR5U2V0LFxuXHRcdFx0ZW50aXR5U2V0TGluZUl0ZW1bM10gYXMgQW55QW5ub3RhdGlvbiAvLyB0ZXh0Rmlyc3Qgd2l0aCBkYXRhRmllbGQgc3RhdGljYWxseSBoaWRkZW5cblx0XHQpO1xuXHRcdGV4cGVjdChnZXRWaXNpYmxlRXhwcmVzc2lvbihkYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkpKS50b0VxdWFsKFwiZmFsc2VcIik7XG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5ID0gZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KFxuXHRcdFx0ZW50aXR5U2V0LFxuXHRcdFx0ZW50aXR5U2V0TGluZUl0ZW1bNF0gYXMgQW55QW5ub3RhdGlvbiAvLyB0ZXh0T25seSB3aXRoIGRhdGFGaWVsZCBkeW5hbWljYWxseSBoaWRkZW5cblx0XHQpO1xuXHRcdGV4cGVjdChnZXRWaXNpYmxlRXhwcmVzc2lvbihkYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkpKS50b0VxdWFsKFwiez0gJXtpc0hpZGRlbn0gIT09IHRydWV9XCIpO1xuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSA9IGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShcblx0XHRcdGVudGl0eVNldCxcblx0XHRcdGVudGl0eVNldExpbmVJdGVtWzVdIGFzIEFueUFubm90YXRpb24gLy8gZHluYW1pY0hpZGRlblByb3AyIHdpdGggZHluYW1pYyBkYXRhZmllbGQgaGlkZGVuXG5cdFx0KTtcblx0XHRleHBlY3QoZ2V0VmlzaWJsZUV4cHJlc3Npb24oZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KSkudG9FcXVhbChcIns9ICV7aXNIaWRkZW4yfSAhPT0gdHJ1ZSAmJiAle2lzSGlkZGVufSAhPT0gdHJ1ZX1cIik7XG5cdFx0ZXhwZWN0KGdldFZpc2libGVFeHByZXNzaW9uKGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSwgeyBpc0FuYWx5dGljczogdHJ1ZSB9IGFzIEZpZWxkRm9ybWF0T3B0aW9ucykpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICV7aXNIaWRkZW4yfSAhPT0gdHJ1ZSAmJiAle2lzSGlkZGVufSAhPT0gdHJ1ZSAmJiAoJXtAJHVpNS5ub2RlLmlzRXhwYW5kZWR9ICE9PSB0cnVlIHx8ICV7QCR1aTUubm9kZS5sZXZlbH0gPT09IDApfVwiXG5cdFx0KTtcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkgPSBnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkoXG5cdFx0XHRlbnRpdHlTZXQsXG5cdFx0XHRlbnRpdHlTZXRMaW5lSXRlbVs2XSBhcyBBbnlBbm5vdGF0aW9uIC8vIGhpZGRlbldpdGgxMU5hdiB3aXRoIGR5bmFtaWMgZGF0YWZpZWxkIGhpZGRlblxuXHRcdCk7XG5cdFx0ZXhwZWN0KGdldFZpc2libGVFeHByZXNzaW9uKGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSkpLnRvRXF1YWwoXG5cdFx0XHRcIns9ICV7aXNIaWRkZW4yfSAhPT0gdHJ1ZSAmJiAle1NwZWNpYWxDaGlsZC9pc0hpZGRlbn0gIT09IHRydWV9XCJcblx0XHQpO1xuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSA9IGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShcblx0XHRcdGVudGl0eVNldCxcblx0XHRcdGVudGl0eVNldExpbmVJdGVtWzddIGFzIEFueUFubm90YXRpb24gLy8gaGlkZGVuV2l0aDFOTmF2IHdpdGggZHluYW1pYyBkYXRhZmllbGQgaGlkZGVuIC0+IERvZXNuJ3QgbWFrZSBzZW5zZSBhbmQgbW9kZWwgd2lsbCBjb21wbGFpbiBidXQgaGVoIDooXG5cdFx0KTtcblx0XHRleHBlY3QoZ2V0VmlzaWJsZUV4cHJlc3Npb24oZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KSkudG9FcXVhbChcIns9ICV7aXNIaWRkZW4yfSAhPT0gdHJ1ZSAmJiAle19FbGVtZW50cy9pc0hpZGRlbn0gIT09IHRydWV9XCIpO1xuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSA9IGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShcblx0XHRcdGVudGl0eVNldCxcblx0XHRcdGVudGl0eVNldExpbmVJdGVtWzhdIGFzIEFueUFubm90YXRpb24gLy8gRGF0YSBGaWVsZCBGb3IgQWN0aW9uXG5cdFx0KTtcblx0XHRleHBlY3QoZ2V0VmlzaWJsZUV4cHJlc3Npb24oZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5ID0gZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KFxuXHRcdFx0ZW50aXR5U2V0LFxuXHRcdFx0ZW50aXR5U2V0TGluZUl0ZW1bOV0gYXMgQW55QW5ub3RhdGlvbiAvLyBEYXRhRmllbGRGb3JBbm5vdGF0aW9uIC0+IGRhdGEgcG9pbnQgdmlzaWJsZVxuXHRcdCk7XG5cdFx0ZXhwZWN0KGdldFZpc2libGVFeHByZXNzaW9uKGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGV4cGVjdChnZXRWaXNpYmxlRXhwcmVzc2lvbihkYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHksIHsgaXNBbmFseXRpY3M6IHRydWUgfSBhcyBGaWVsZEZvcm1hdE9wdGlvbnMpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAle0AkdWk1Lm5vZGUuaXNFeHBhbmRlZH0gIT09IHRydWUgfHwgJXtAJHVpNS5ub2RlLmxldmVsfSA9PT0gMH1cIlxuXHRcdCk7XG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5ID0gZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KFxuXHRcdFx0ZW50aXR5U2V0LFxuXHRcdFx0ZW50aXR5U2V0TGluZUl0ZW1bMTBdIGFzIEFueUFubm90YXRpb24gLy8gRGF0YUZpZWxkRm9yQW5ub3RhdGlvbiAtPiBkYXRhIHBvaW50IGR5bmFtaWMgdmlzaWJsZVxuXHRcdCk7XG5cdFx0ZXhwZWN0KGdldFZpc2libGVFeHByZXNzaW9uKGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSkpLnRvRXF1YWwoXCJ7PSAle2lzSGlkZGVufSAhPT0gdHJ1ZX1cIik7XG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5ID0gZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KFxuXHRcdFx0ZW50aXR5U2V0LFxuXHRcdFx0ZW50aXR5U2V0TGluZUl0ZW1bMTFdIGFzIEFueUFubm90YXRpb24gLy8gbm9IaWRkZW5Qcm9wXG5cdFx0KTtcblx0XHRleHBlY3QoZ2V0VmlzaWJsZUV4cHJlc3Npb24oZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KSkudG9FcXVhbChcInRydWVcIik7XG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5ID0gZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KFxuXHRcdFx0ZW50aXR5U2V0LFxuXHRcdFx0ZW50aXR5U2V0TGluZUl0ZW1bMTJdIGFzIEFueUFubm90YXRpb24gLy8gRGF0YUZpZWxkRm9yQW5ub3RhdGlvbiAtPiBGaWVsZEdyb3VwIC0+IERhdGFcblx0XHQpO1xuXHRcdGV4cGVjdChnZXRWaXNpYmxlRXhwcmVzc2lvbihkYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0fSk7XG5cblx0aXQoXCJnZXREYXRhUG9pbnRTdHlsZSB3aXRoIGRhdGFwb2ludCBoYXZpbmcgVmlzdWFsaXphdGlvblwiLCAoKSA9PiB7XG5cdFx0Y29uc3Qgb0NvbnRleHRQYXRoID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL01haW5FbnRpdHlcIik7XG5cdFx0Y29uc3Qgb01ldGFQYXRoID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL01haW5FbnRpdHkvQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhlYWRlckZhY2V0cy8wL1RhcmdldC8kQW5ub3RhdGlvblBhdGgvXCIpO1xuXHRcdGNvbnN0IG9EYXRhTW9kZWxQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG9NZXRhUGF0aCwgb0NvbnRleHRQYXRoKTtcblx0XHRleHBlY3QoZ2V0RGF0YVBvaW50U3R5bGUob0RhdGFNb2RlbFBhdGgpKS50b0VxdWFsKHVuZGVmaW5lZCk7XG5cdH0pO1xuXHRpdChcImdldERhdGFQb2ludFN0eWxlIHdpdGggZGF0YXBvaW50IGhhdmluZyBRdWlja1ZpZXdGYWNldHNcIiwgKCkgPT4ge1xuXHRcdGNvbnN0IG9Db250ZXh0UGF0aCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9NYWluRW50aXR5XCIpO1xuXHRcdGNvbnN0IG9NZXRhUGF0aCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9NYWluRW50aXR5L0Bjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IZWFkZXJGYWNldHMvMi9UYXJnZXQvJEFubm90YXRpb25QYXRoL1wiKTtcblx0XHRjb25zdCBvRGF0YU1vZGVsUGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhvTWV0YVBhdGgsIG9Db250ZXh0UGF0aCk7XG5cdFx0ZXhwZWN0KGdldERhdGFQb2ludFN0eWxlKG9EYXRhTW9kZWxQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGgpKS50b0VxdWFsKFwiTGlua1dpdGhRdWlja1ZpZXdGb3JtXCIpO1xuXHR9KTtcblxuXHRpdChcImdldERhdGFQb2ludFN0eWxlIHdpdGggZGF0YXBvaW50IGhhdmluZyBTZW1hbnRpY09iamVjdHNcIiwgKCkgPT4ge1xuXHRcdGNvbnN0IG9Db250ZXh0UGF0aCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9NYWluRW50aXR5XCIpO1xuXHRcdGNvbnN0IG9NZXRhUGF0aCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9NYWluRW50aXR5L0Bjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IZWFkZXJGYWNldHMvMS9UYXJnZXQvJEFubm90YXRpb25QYXRoL1wiKTtcblx0XHRjb25zdCBvRGF0YU1vZGVsUGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhvTWV0YVBhdGgsIG9Db250ZXh0UGF0aCk7XG5cdFx0ZXhwZWN0KGdldERhdGFQb2ludFN0eWxlKG9EYXRhTW9kZWxQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGgpKS50b0VxdWFsKFwiTGlua1dyYXBwZXJcIik7XG5cdH0pO1xuXG5cdGl0KFwiZ2V0RGF0YVBvaW50U3R5bGUgd2l0aCBkYXRhcG9pbnQgbm90IGhhdmluZyBWaXN1YWxpemF0aW9uLCBRdWljayBWaWV3IEZhY2V0cywgU2VtYW50aWNPYmplY3RzXCIsICgpID0+IHtcblx0XHRjb25zdCBvQ29udGV4dFBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvTWFpbkVudGl0eVwiKTtcblx0XHRjb25zdCBvTWV0YVBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvTWFpbkVudGl0eS9AY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGVhZGVyRmFjZXRzLzMvVGFyZ2V0LyRBbm5vdGF0aW9uUGF0aC9cIik7XG5cdFx0Y29uc3Qgb0RhdGFNb2RlbFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMob01ldGFQYXRoLCBvQ29udGV4dFBhdGgpO1xuXHRcdGV4cGVjdChnZXREYXRhUG9pbnRTdHlsZShvRGF0YU1vZGVsUGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoKSkudG9FcXVhbCh1bmRlZmluZWQpO1xuXHR9KTtcblxuXHRpdChcImdldFNlbWFudGljT2JqZWN0RXhwcmVzc2lvblRvUmVzb2x2ZSB3aXRoIGFubm90YXRpb25zXCIsICgpID0+IHtcblx0XHRjb25zdCBvQW5ub3RhdGlvbnMgPSB7XG5cdFx0XHRMYWJlbDogXCJTZW1hbnRpYyBPYmplY3QgUHJvcGVydHlcIixcblx0XHRcdFNlbWFudGljT2JqZWN0OiBcInY0LUZyZWVzdHlsZVwiXG5cdFx0fTtcblx0XHRleHBlY3QoZ2V0U2VtYW50aWNPYmplY3RFeHByZXNzaW9uVG9SZXNvbHZlKG9Bbm5vdGF0aW9ucykpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHR9KTtcblxuXHRpdChcImdldFNlbWFudGljT2JqZWN0RXhwcmVzc2lvblRvUmVzb2x2ZSB3aXRoIGFubm90YXRpb25zIGFuZCBzZW1hbnRpYyBvYmplY3QgcXVhbGlmaWVyXCIsICgpID0+IHtcblx0XHRjb25zdCBvQW5ub3RhdGlvbnMgPSB7XG5cdFx0XHRcIkxhYmVsXCI6IFwiU2VtYW50aWMgT2JqZWN0IFByb3BlcnR5XCIsXG5cdFx0XHRcIlNlbWFudGljT2JqZWN0I1F1YWxpZmllclwiOiBcInY0LUZyZWVzdHlsZVwiXG5cdFx0fTtcblx0XHRleHBlY3QoZ2V0U2VtYW50aWNPYmplY3RFeHByZXNzaW9uVG9SZXNvbHZlKG9Bbm5vdGF0aW9ucykpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHR9KTtcblxuXHRpdChcImdldFNlbWFudGljT2JqZWN0RXhwcmVzc2lvblRvUmVzb2x2ZSB3aXRob3V0IGFubm90YXRpb25zXCIsICgpID0+IHtcblx0XHRjb25zdCBvQW5ub3RhdGlvbnMgPSB7fTtcblx0XHRleHBlY3QoZ2V0U2VtYW50aWNPYmplY3RFeHByZXNzaW9uVG9SZXNvbHZlKG9Bbm5vdGF0aW9ucykpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHR9KTtcblxuXHRpdChcImdldFNlbWFudGljT2JqZWN0cyB3aXRoIGFTZW1PYmpFeHByVG9SZXNvbHZlXCIsICgpID0+IHtcblx0XHRjb25zdCBhU2VtT2JqRXhwclRvUmVzb2x2ZSA9IFtcblx0XHRcdHtcblx0XHRcdFx0a2V5OiBcInY0LUZyZWVzdHlsZVwiLFxuXHRcdFx0XHR2YWx1ZTogXCJ2NC1GcmVlc3R5bGVcIlxuXHRcdFx0fVxuXHRcdF07XG5cdFx0Y29uc3Qgb1NlbWFudGljT2JqZWN0Q29udGV4dCA9IGdldFNlbWFudGljT2JqZWN0cyhhU2VtT2JqRXhwclRvUmVzb2x2ZSk7XG5cdFx0ZXhwZWN0KG9TZW1hbnRpY09iamVjdENvbnRleHQuZ2V0T2JqZWN0KCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHR9KTtcblxuXHRpdChcImdldFNlbWFudGljT2JqZWN0cyB3aXRob3V0IGFTZW1PYmpFeHByVG9SZXNvbHZlXCIsICgpID0+IHtcblx0XHRjb25zdCBhU2VtT2JqRXhwclRvUmVzb2x2ZTogYW55ID0gW107XG5cdFx0Y29uc3Qgb1NlbWFudGljT2JqZWN0Q29udGV4dCA9IGdldFNlbWFudGljT2JqZWN0cyhhU2VtT2JqRXhwclRvUmVzb2x2ZSk7XG5cdFx0ZXhwZWN0KG9TZW1hbnRpY09iamVjdENvbnRleHQuZ2V0T2JqZWN0KCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHR9KTtcblxuXHRpdChcImlzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHMgd2l0aCBkYXRhcG9pbnQgaGF2aW5nIFF1aWNrVmlld0ZhY2V0c1wiLCAoKSA9PiB7XG5cdFx0Y29uc3Qgb0NvbnRleHRQYXRoID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL01haW5FbnRpdHlcIik7XG5cdFx0Y29uc3Qgb01ldGFQYXRoID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL01haW5FbnRpdHkvQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhlYWRlckZhY2V0cy8yL1RhcmdldC8kQW5ub3RhdGlvblBhdGgvXCIpO1xuXHRcdGNvbnN0IG9EYXRhTW9kZWxQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG9NZXRhUGF0aCwgb0NvbnRleHRQYXRoKTtcblx0XHRjb25zdCBvUHJvcGVydHk6IFByb3BlcnR5ID0gb0RhdGFNb2RlbFBhdGg/LnRhcmdldE9iamVjdC5WYWx1ZS4kdGFyZ2V0O1xuXHRcdGV4cGVjdChpc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzKG9EYXRhTW9kZWxQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGgsIG9Qcm9wZXJ0eSBhcyBQcm9wZXJ0eSkpLnRvRXF1YWwodHJ1ZSk7XG5cdH0pO1xuXG5cdGl0KFwiaXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cyB3aXRoIGRhdGFwb2ludCBub3QgaGF2aW5nIFF1aWNrIFZpZXcgRmFjZXRzXCIsICgpID0+IHtcblx0XHRjb25zdCBvQ29udGV4dFBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvTWFpbkVudGl0eVwiKTtcblx0XHRjb25zdCBvTWV0YVBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvTWFpbkVudGl0eS9AY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGVhZGVyRmFjZXRzLzMvVGFyZ2V0LyRBbm5vdGF0aW9uUGF0aC9cIik7XG5cdFx0Y29uc3Qgb0RhdGFNb2RlbFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMob01ldGFQYXRoLCBvQ29udGV4dFBhdGgpO1xuXHRcdGNvbnN0IG9Qcm9wZXJ0eTogUHJvcGVydHkgPSBvRGF0YU1vZGVsUGF0aD8udGFyZ2V0T2JqZWN0LlZhbHVlLiR0YXJnZXQ7XG5cdFx0ZXhwZWN0KGlzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHMob0RhdGFNb2RlbFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aCwgb1Byb3BlcnR5IGFzIFByb3BlcnR5KSkudG9FcXVhbChmYWxzZSk7XG5cdH0pO1xufSk7XG4iXX0=
291
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZpZWxkVGVtcGxhdGluZy5zcGVjLnRzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiY29udmVydGVkVHlwZXMiLCJtZXRhTW9kZWwiLCJlbnRpdHlTZXQiLCJlbnRpdHlUeXBlIiwicHJvcGVydGllcyIsImJlZm9yZUFsbCIsInNNZXRhZGF0YVVybCIsImNvbXBpbGVDRFMiLCJwYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsImdldE1ldGFNb2RlbCIsImNvbnZlcnRUeXBlcyIsIm1heWJlRW50aXR5U2V0IiwiZW50aXR5U2V0cyIsImZpbmQiLCJldCIsIm5hbWUiLCJlbnRpdHlQcm9wZXJ0aWVzIiwiZm9yRWFjaCIsInByb3AiLCJFcnJvciIsImJlZm9yZUVhY2giLCJqZXN0IiwiY2xlYXJBbGxNb2NrcyIsIml0IiwidGV4dFNpbXBsZUJpbmRpbmciLCJnZXRWYWx1ZUJpbmRpbmciLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkiLCJleHBlY3QiLCJ0b0VxdWFsIiwidGV4dERlbGV0ZUZvcm1hdHRlckJpbmRpbmciLCJ0ZXh0TWF4TGluZXMiLCJ0ZXh0QmluZGluZ1BhcmFtZXR0ZXIiLCIkJG5vUGF0Y2giLCJ0ZXh0VHlwZUFueSIsInVuZGVmaW5lZCIsImVtYWlsU2ltcGxlQmluZGluZyIsInVuaXRXaXRoQ3VycmVuY3lCaW5kaW5nU2ltcGxlQmluZGluZyIsInRvTWF0Y2hJbmxpbmVTbmFwc2hvdCIsInVuaXRXaXRoQ3VycmVuY3lCaW5kaW5nSWdub3JlVW5pdCIsInVuaXRXaXRoQ3VycmVuY3lEZXNjcmlwdGlvbkJpbmRpbmciLCJlbnRpdHlTZXRMaW5lSXRlbSIsImFubm90YXRpb25zIiwiVUkiLCJMaW5lSXRlbSIsImRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSIsImZvcm1hdE9wdGlvbnMiLCJ2YWx1ZUZvcm1hdCIsInRleHRBbGlnbk1vZGUiLCJyZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0IiwiZGF0YUZpZWxkQ29udmVydGVkIiwic2VtYW50aWNPYmplY3QiLCJkaXNwbGF5U3R5bGVMaW5rIiwiZ2V0RGlzcGxheVN0eWxlIiwibm9TZW1hbnRpY09iamVjdCIsImRpc3BsYXlTdHlsZVRleHQiLCJ0ZXh0T25seUJpbmRpbmciLCJnZXRCaW5kaW5nV2l0aFRleHRBcnJhbmdlbWVudCIsImJpbmRpbmdFeHByZXNzaW9uIiwidG9NYXRjaFNuYXBzaG90IiwiY29tcGlsZUJpbmRpbmciLCJ0b0NvbnRhaW4iLCJldmFsdWF0ZUJpbmRpbmdXaXRoTW9kZWwiLCJ0YXJnZXRUZXh0Iiwibm9UZXh0QmluZGluZyIsIm5vVGV4dCIsInRleHRGaXJzdEJpbmRpbmciLCJ0ZXh0Rmlyc3QiLCJ0ZXh0TGFzdEJpbmRpbmciLCJ0ZXh0TGFzdCIsImZ1bGxDb250ZXh0Iiwib3RoZXJNb2RlbEJpbmRpbmciLCJhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uIiwibm90IiwiYWRkVGV4dExhc3RCaW5kaW5nIiwiY29tcGxleFRleHRCaW5kaW5nIiwiaWZFbHNlIiwibW9kZWxDb250ZW50IiwidGVzdFByb3AiLCJvUHJvcGVydHlUeXBlIiwiX3R5cGUiLCJ0eXBlIiwiZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbiIsImdldFZpc2libGVFeHByZXNzaW9uIiwiaXNBbmFseXRpY3MiLCJvQW5ub3RhdGlvbnMiLCJMYWJlbCIsIlNlbWFudGljT2JqZWN0IiwiZ2V0U2VtYW50aWNPYmplY3RFeHByZXNzaW9uVG9SZXNvbHZlIiwiYVNlbU9iakV4cHJUb1Jlc29sdmUiLCJrZXkiLCJ2YWx1ZSIsIm9TZW1hbnRpY09iamVjdENvbnRleHQiLCJnZXRTZW1hbnRpY09iamVjdHMiLCJnZXRPYmplY3QiLCJvQ29udGV4dFBhdGgiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsIm9NZXRhUGF0aCIsIm9EYXRhTW9kZWxQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwib1Byb3BlcnR5IiwidGFyZ2V0T2JqZWN0IiwiVmFsdWUiLCIkdGFy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c0YsWUFBTTtBQUM3RixVQUFNdUUsWUFBWSxHQUFHL0YsU0FBUyxDQUFDZ0csb0JBQVYsQ0FBK0IsYUFBL0IsQ0FBckI7QUFDQSxVQUFNQyxTQUFTLEdBQUdqRyxTQUFTLENBQUNnRyxvQkFBVixDQUErQixnRkFBL0IsQ0FBbEI7QUFDQSxVQUFNRSxjQUFjLEdBQUdDLDJCQUEyQixDQUFDRixTQUFELEVBQVlGLFlBQVosQ0FBbEQ7QUFDQSxVQUFNSyxTQUFtQixHQUFHRixjQUFILGFBQUdBLGNBQUgsdUJBQUdBLGNBQWMsQ0FBRUcsWUFBaEIsQ0FBNkJDLEtBQTdCLENBQW1DQyxPQUEvRDtBQUNBM0UsTUFBQUEsTUFBTSxDQUFDNEUscUNBQXFDLENBQUNOLGNBQUQsRUFBd0NFLFNBQXhDLENBQXRDLENBQU4sQ0FBNEd2RSxPQUE1RyxDQUFvSCxLQUFwSDtBQUNBLEtBTkMsQ0FBRjtBQU9BLEdBaFlPLENBQVIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50LFxuXHRhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uLFxuXHRnZXRWaXNpYmxlRXhwcmVzc2lvbixcblx0RmllbGRGb3JtYXRPcHRpb25zLFxuXHRnZXRWYWx1ZUJpbmRpbmcsXG5cdGdldERpc3BsYXlTdHlsZSxcblx0Z2V0U2VtYW50aWNPYmplY3RFeHByZXNzaW9uVG9SZXNvbHZlLFxuXHRnZXRTZW1hbnRpY09iamVjdHMsXG5cdGlzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHNcbn0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgeyBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgY29tcGlsZUNEUywgZ2V0TWV0YU1vZGVsLCBnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHksIGV2YWx1YXRlQmluZGluZ1dpdGhNb2RlbCB9IGZyb20gXCJzYXAvZmUvdGVzdC9KZXN0VGVtcGxhdGluZ0hlbHBlclwiO1xuaW1wb3J0IHsgY29udmVydFR5cGVzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBBbnlBbm5vdGF0aW9uLCBFbnRpdHlTZXQsIEVudGl0eVR5cGUsIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvYW5ub3RhdGlvbi1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGJpbmRpbmdFeHByZXNzaW9uLCBjb21waWxlQmluZGluZywgaWZFbHNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcbmltcG9ydCB7IExpbmVJdGVtIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5cbmRlc2NyaWJlKFwiRmllbGQgVGVtcGxhdGluZyBUZXN0aW5nXCIsICgpID0+IHtcblx0bGV0IGNvbnZlcnRlZFR5cGVzO1xuXHRsZXQgbWV0YU1vZGVsOiBhbnk7XG5cdGxldCBlbnRpdHlTZXQ6IEVudGl0eVNldDtcblx0bGV0IGVudGl0eVR5cGU6IEVudGl0eVR5cGU7XG5cdGNvbnN0IHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIFByb3BlcnR5PiA9IHt9O1xuXHRiZWZvcmVBbGwoYXN5bmMgKCkgPT4ge1xuXHRcdGNvbnN0IHNNZXRhZGF0YVVybCA9IGNvbXBpbGVDRFMocGF0aC5qb2luKF9fZGlybmFtZSwgXCIuL0ZpZWxkVGVtcGxhdGluZy5jZHNcIikpO1xuXHRcdG1ldGFNb2RlbCA9IGF3YWl0IGdldE1ldGFNb2RlbChzTWV0YWRhdGFVcmwpO1xuXHRcdGNvbnZlcnRlZFR5cGVzID0gY29udmVydFR5cGVzKG1ldGFNb2RlbCk7XG5cdFx0Y29uc3QgbWF5YmVFbnRpdHlTZXQgPSBjb252ZXJ0ZWRUeXBlcy5lbnRpdHlTZXRzLmZpbmQoZXQgPT4gZXQubmFtZSA9PT0gXCJNYWluRW50aXR5XCIpO1xuXHRcdGlmIChtYXliZUVudGl0eVNldCkge1xuXHRcdFx0ZW50aXR5U2V0ID0gbWF5YmVFbnRpdHlTZXQ7XG5cdFx0XHRlbnRpdHlUeXBlID0gbWF5YmVFbnRpdHlTZXQuZW50aXR5VHlwZTtcblx0XHRcdGVudGl0eVR5cGUuZW50aXR5UHJvcGVydGllcy5mb3JFYWNoKHByb3AgPT4ge1xuXHRcdFx0XHRwcm9wZXJ0aWVzW3Byb3AubmFtZV0gPSBwcm9wO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIkVycm9yIGluIHRlc3Qgc2V0dXBcIik7XG5cdFx0fVxuXHR9KTtcblx0YmVmb3JlRWFjaCgoKSA9PiB7XG5cdFx0amVzdC5jbGVhckFsbE1vY2tzKCk7XG5cdH0pO1xuXG5cdGl0KFxuXHRcdFwiI2dldFZhbHVlQmluZGluZ1wiLFxuXHRcdHtcblx0XHRcdFwicmVmZXJlbmNlc1wiOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRcInR5cGVcIjogXCJCQ1BcIixcblx0XHRcdFx0XHRcIklEXCI6IFwiMjE3MDIzNzE2NVwiXG5cdFx0XHRcdH1cblx0XHRcdF1cblx0XHR9LFxuXHRcdCgpID0+IHtcblx0XHRcdGNvbnN0IHRleHRTaW1wbGVCaW5kaW5nID0gZ2V0VmFsdWVCaW5kaW5nKGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShlbnRpdHlTZXQsIHByb3BlcnRpZXNbXCJ0ZXh0QmluZGluZ1wiXSksIHt9KTtcblx0XHRcdGV4cGVjdCh0ZXh0U2ltcGxlQmluZGluZykudG9FcXVhbChcblx0XHRcdFx0XCJ7cGF0aDogJ3RleHRCaW5kaW5nJywgdHlwZTogJ3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZycsIGZvcm1hdE9wdGlvbnM6IHtwYXJzZUtlZXBzRW1wdHlTdHJpbmc6IHRydWV9fVwiXG5cdFx0XHQpO1xuXG5cdFx0XHRjb25zdCB0ZXh0RGVsZXRlRm9ybWF0dGVyQmluZGluZyA9IGdldFZhbHVlQmluZGluZyhcblx0XHRcdFx0Z2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KGVudGl0eVNldCwgcHJvcGVydGllc1tcInRleHRCaW5kaW5nXCJdKSxcblx0XHRcdFx0eyB0ZXh0TWF4TGluZXM6IFwiMTBcIiB9LFxuXHRcdFx0XHR0cnVlLCAvL2lnbm9yZVVuaXQsIGl0IGRvZXNuJ3QgaGF2ZSB1bml0LCBzbyBkb2Vzbid0IG1hdHRlci4gVGVzdGVkIGEgZmV3IGxpbmVzIGxhdGVyLlxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpO1xuXHRcdFx0ZXhwZWN0KHRleHREZWxldGVGb3JtYXR0ZXJCaW5kaW5nKS50b0VxdWFsKFwie3RleHRCaW5kaW5nfVwiKTtcblxuXHRcdFx0Y29uc3QgdGV4dEJpbmRpbmdQYXJhbWV0dGVyID0gZ2V0VmFsdWVCaW5kaW5nKFxuXHRcdFx0XHRnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkoZW50aXR5U2V0LCBwcm9wZXJ0aWVzW1widGV4dEJpbmRpbmdcIl0pLFxuXHRcdFx0XHR7IHRleHRNYXhMaW5lczogXCIxMFwiIH0sXG5cdFx0XHRcdHRydWUsXG5cdFx0XHRcdHRydWUsXG5cdFx0XHRcdHsgJCRub1BhdGNoOiB0cnVlIH1cblx0XHRcdCk7XG5cdFx0XHRleHBlY3QodGV4dEJpbmRpbmdQYXJhbWV0dGVyKS50b0VxdWFsKFwie3BhdGg6ICd0ZXh0QmluZGluZycsIHBhcmFtZXRlcnM6IHskJG5vUGF0Y2g6IHRydWV9fVwiKTtcblxuXHRcdFx0Y29uc3QgdGV4dFR5cGVBbnkgPSBnZXRWYWx1ZUJpbmRpbmcoXG5cdFx0XHRcdGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShlbnRpdHlTZXQsIHByb3BlcnRpZXNbXCJ0ZXh0QmluZGluZ1wiXSksXG5cdFx0XHRcdHt9LFxuXHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KTtcblx0XHRcdGV4cGVjdCh0ZXh0VHlwZUFueSkudG9FcXVhbChcblx0XHRcdFx0XCJ7cGF0aDogJ3RleHRCaW5kaW5nJywgdHlwZTogJ3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZycsIHRhcmdldFR5cGU6ICdhbnknLCBmb3JtYXRPcHRpb25zOiB7cGFyc2VLZWVwc0VtcHR5U3RyaW5nOiB0cnVlfX1cIlxuXHRcdFx0KTtcblxuXHRcdFx0Y29uc3QgZW1haWxTaW1wbGVCaW5kaW5nID0gZ2V0VmFsdWVCaW5kaW5nKGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShlbnRpdHlTZXQsIHByb3BlcnRpZXNbXCJlbWFpbEJpbmRpbmdcIl0pLCB7fSk7XG5cdFx0XHRleHBlY3QoZW1haWxTaW1wbGVCaW5kaW5nKS50b0VxdWFsKFwie3BhdGg6ICdlbWFpbEJpbmRpbmcnLCB0eXBlOiAnc2FwLmZlLmNvcmUudHlwZS5FbWFpbCd9XCIpO1xuXG5cdFx0XHRjb25zdCB1bml0V2l0aEN1cnJlbmN5QmluZGluZ1NpbXBsZUJpbmRpbmcgPSBnZXRWYWx1ZUJpbmRpbmcoXG5cdFx0XHRcdGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShlbnRpdHlTZXQsIHByb3BlcnRpZXNbXCJVbml0V2l0aEN1cnJlbmN5QmluZGluZ1wiXSksXG5cdFx0XHRcdHt9XG5cdFx0XHQpO1xuXHRcdFx0ZXhwZWN0KHVuaXRXaXRoQ3VycmVuY3lCaW5kaW5nU2ltcGxlQmluZGluZykudG9NYXRjaElubGluZVNuYXBzaG90KFxuXHRcdFx0XHRgXCJ7bW9kZTonVHdvV2F5JywgcGFydHM6W3twYXRoOiAnVW5pdFdpdGhDdXJyZW5jeUJpbmRpbmcnLCB0eXBlOiAnc2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuSW50MzInLCBmb3JtYXRPcHRpb25zOiB7cGFyc2VBc1N0cmluZzogZmFsc2UsIGVtcHR5U3RyaW5nOiAnJ319LHtwYXRoOiAnY3VycmVuY3knLCB0eXBlOiAnc2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU3RyaW5nJywgZm9ybWF0T3B0aW9uczoge3BhcnNlS2VlcHNFbXB0eVN0cmluZzogdHJ1ZX19LHttb2RlOidPbmVUaW1lJyxwYXRoOicvIyNAQHJlcXVlc3RDdXJyZW5jeUNvZGVzJyx0YXJnZXRUeXBlOidhbnknfV0sdHlwZTonc2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuQ3VycmVuY3knLCBmb3JtYXRPcHRpb25zOiB7cGFyc2VBc1N0cmluZzogZmFsc2UsIGVtcHR5U3RyaW5nOiAnJywgc2hvd01lYXN1cmU6IGZhbHNlfX1cImBcblx0XHRcdCk7XG5cblx0XHRcdGNvbnN0IHVuaXRXaXRoQ3VycmVuY3lCaW5kaW5nSWdub3JlVW5pdCA9IGdldFZhbHVlQmluZGluZyhcblx0XHRcdFx0Z2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KGVudGl0eVNldCwgcHJvcGVydGllc1tcIlVuaXRXaXRoQ3VycmVuY3lCaW5kaW5nXCJdKSxcblx0XHRcdFx0e30sXG5cdFx0XHRcdHRydWVcblx0XHRcdCk7XG5cdFx0XHRleHBlY3QodW5pdFdpdGhDdXJyZW5jeUJpbmRpbmdJZ25vcmVVbml0KS50b0VxdWFsKFxuXHRcdFx0XHRcIntwYXRoOiAnVW5pdFdpdGhDdXJyZW5jeUJpbmRpbmcnLCB0eXBlOiAnc2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuSW50MzInLCBmb3JtYXRPcHRpb25zOiB7cGFyc2VBc1N0cmluZzogZmFsc2UsIGVtcHR5U3RyaW5nOiAnJ319XCJcblx0XHRcdCk7XG5cblx0XHRcdGNvbnN0IHVuaXRXaXRoQ3VycmVuY3lEZXNjcmlwdGlvbkJpbmRpbmcgPSBnZXRWYWx1ZUJpbmRpbmcoXG5cdFx0XHRcdGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShlbnRpdHlTZXQsIHByb3BlcnRpZXNbXCJVbml0V2l0aEN1cnJlbmN5QmluZGluZ1wiXSksXG5cdFx0XHRcdHt9LFxuXHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KTtcblx0XHRcdGV4cGVjdCh1bml0V2l0aEN1cnJlbmN5RGVzY3JpcHRpb25CaW5kaW5nKS50b01hdGNoSW5saW5lU25hcHNob3QoXG5cdFx0XHRcdGBcInttb2RlOidUd29XYXknLCBwYXJ0czpbe3BhdGg6ICdVbml0V2l0aEN1cnJlbmN5QmluZGluZycsIHR5cGU6ICdzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnQzMicsIGZvcm1hdE9wdGlvbnM6IHtwYXJzZUFzU3RyaW5nOiBmYWxzZSwgZW1wdHlTdHJpbmc6ICcnfX0se3BhdGg6ICdjdXJyZW5jeScsIHR5cGU6ICdzYXAudWkubW9kZWwub2RhdGEudHlwZS5TdHJpbmcnLCBmb3JtYXRPcHRpb25zOiB7cGFyc2VLZWVwc0VtcHR5U3RyaW5nOiB0cnVlfX0se21vZGU6J09uZVRpbWUnLHBhdGg6Jy8jI0BAcmVxdWVzdEN1cnJlbmN5Q29kZXMnLHRhcmdldFR5cGU6J2FueSd9XSx0eXBlOidzYXAudWkubW9kZWwub2RhdGEudHlwZS5DdXJyZW5jeScsIGZvcm1hdE9wdGlvbnM6IHtwYXJzZUFzU3RyaW5nOiBmYWxzZSwgZW1wdHlTdHJpbmc6ICcnLCBzaG93TnVtYmVyOiBmYWxzZX19XCJgXG5cdFx0XHQpO1xuXHRcdH1cblx0KTtcblxuXHRpdChcblx0XHRcIiNnZXREaXNwbGF5U3R5bGVcIixcblx0XHR7XG5cdFx0XHRcInJlZmVyZW5jZXNcIjogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0XCJ0eXBlXCI6IFwiSklSQVwiLFxuXHRcdFx0XHRcdFwiSURcIjogXCJGSU9SSVRFQ0hQMS0yMTE3NlwiXG5cdFx0XHRcdH1cblx0XHRcdF1cblx0XHR9LFxuXHRcdCgpID0+IHtcblx0XHRcdGNvbnN0IGVudGl0eVNldExpbmVJdGVtID0gZW50aXR5U2V0LmVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkxpbmVJdGVtIGFzIExpbmVJdGVtO1xuXHRcdFx0Y29uc3QgZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5ID0gZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KGVudGl0eVNldCwgZW50aXR5U2V0TGluZUl0ZW1bMV0gYXMgQW55QW5ub3RhdGlvbik7XG5cdFx0XHRjb25zdCBmb3JtYXRPcHRpb25zID0ge1xuXHRcdFx0XHR2YWx1ZUZvcm1hdDogXCJEZXNjcmlwdGlvblZhbHVlXCIsXG5cdFx0XHRcdHRleHRBbGlnbk1vZGU6IFwiRm9ybVwiLFxuXHRcdFx0XHRyZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0OiBmYWxzZVxuXHRcdFx0fSBhcyBGaWVsZEZvcm1hdE9wdGlvbnM7XG5cblx0XHRcdGNvbnN0IGRhdGFGaWVsZENvbnZlcnRlZCA9IGdldFZhbHVlQmluZGluZyhcblx0XHRcdFx0Z2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KGVudGl0eVNldCwgcHJvcGVydGllc1tcInByb3BlcnR5Tm9UZXh0V2l0aFZIXCJdKSxcblx0XHRcdFx0e31cblx0XHRcdCk7XG5cblx0XHRcdC8vIGRpc3BsYXlTdHlsZSBcIkxpbmtXaXRoUXVpY2tWaWV3Rm9ybVwiXG5cdFx0XHRjb25zdCBzZW1hbnRpY09iamVjdDogc3RyaW5nID0gXCJzZW1hbnRpY09iamVjdFwiO1xuXHRcdFx0Y29uc3QgZGlzcGxheVN0eWxlTGluayA9IGdldERpc3BsYXlTdHlsZShcblx0XHRcdFx0cHJvcGVydGllc1tcInByb3BlcnR5Tm9UZXh0V2l0aFZIXCJdLFxuXHRcdFx0XHRkYXRhRmllbGRDb252ZXJ0ZWQsXG5cdFx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSxcblx0XHRcdFx0Zm9ybWF0T3B0aW9ucyxcblx0XHRcdFx0c2VtYW50aWNPYmplY3Rcblx0XHRcdCk7XG5cdFx0XHRleHBlY3QoZGlzcGxheVN0eWxlTGluaykudG9FcXVhbChcIkxpbmtXaXRoUXVpY2tWaWV3Rm9ybVwiKTtcblxuXHRcdFx0Ly8gZGlzcGxheVN0eWxlIFwiVGV4dFwiXG5cdFx0XHRjb25zdCBub1NlbWFudGljT2JqZWN0OiBzdHJpbmcgPSBcIlwiO1xuXHRcdFx0Y29uc3QgZGlzcGxheVN0eWxlVGV4dCA9IGdldERpc3BsYXlTdHlsZShcblx0XHRcdFx0cHJvcGVydGllc1tcInByb3BlcnR5Tm9UZXh0V2l0aFZIXCJdLFxuXHRcdFx0XHRkYXRhRmllbGRDb252ZXJ0ZWQsXG5cdFx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSxcblx0XHRcdFx0Zm9ybWF0T3B0aW9ucyxcblx0XHRcdFx0bm9TZW1hbnRpY09iamVjdFxuXHRcdFx0KTtcblx0XHRcdGV4cGVjdChkaXNwbGF5U3R5bGVUZXh0KS50b0VxdWFsKFwiVGV4dFwiKTtcblx0XHR9XG5cdCk7XG5cblx0aXQoXCIjZ2V0QmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnRcIiwgKCkgPT4ge1xuXHRcdC8vIENhc2VzIHRvIGNvbnNpZGVyXG5cblx0XHQvLyBUZXh0T25seVxuXHRcdGNvbnN0IHRleHRPbmx5QmluZGluZyA9IGdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50KFxuXHRcdFx0Z2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KGVudGl0eVNldCwgcHJvcGVydGllc1tcInRleHRPbmx5XCJdKSxcblx0XHRcdGJpbmRpbmdFeHByZXNzaW9uKFwidGV4dE9ubHlcIilcblx0XHQpO1xuXHRcdGV4cGVjdCh0ZXh0T25seUJpbmRpbmcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh0ZXh0T25seUJpbmRpbmcpKS50b0NvbnRhaW4oXCJ0YXJnZXRUZXh0XCIpO1xuXHRcdGV4cGVjdChldmFsdWF0ZUJpbmRpbmdXaXRoTW9kZWwoY29tcGlsZUJpbmRpbmcodGV4dE9ubHlCaW5kaW5nKSwgeyB0YXJnZXRUZXh0OiBcIllvbG9cIiB9KSkudG9FcXVhbChcIllvbG9cIik7XG5cblx0XHQvLyBObyB0ZXh0IGFycmFuZ2VtZW50XG5cdFx0Y29uc3Qgbm9UZXh0QmluZGluZyA9IGdldEJpbmRpbmdXaXRoVGV4dEFycmFuZ2VtZW50KFxuXHRcdFx0Z2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KGVudGl0eVNldCwgcHJvcGVydGllc1tcIm5vVGV4dFwiXSksXG5cdFx0XHRiaW5kaW5nRXhwcmVzc2lvbihcIm5vVGV4dFwiKVxuXHRcdCk7XG5cdFx0ZXhwZWN0KG5vVGV4dEJpbmRpbmcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhub1RleHRCaW5kaW5nKSkudG9Db250YWluKFwibm9UZXh0XCIpO1xuXHRcdGV4cGVjdChldmFsdWF0ZUJpbmRpbmdXaXRoTW9kZWwoY29tcGlsZUJpbmRpbmcobm9UZXh0QmluZGluZyksIHsgbm9UZXh0OiBcIllvbG9cIiB9KSkudG9FcXVhbChcIllvbG9cIik7XG5cblx0XHQvLyBUZXh0Rmlyc3Rcblx0XHRjb25zdCB0ZXh0Rmlyc3RCaW5kaW5nID0gZ2V0QmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnQoXG5cdFx0XHRnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkoZW50aXR5U2V0LCBwcm9wZXJ0aWVzW1widGV4dEZpcnN0XCJdKSxcblx0XHRcdGJpbmRpbmdFeHByZXNzaW9uKFwidGV4dEZpcnN0XCIpXG5cdFx0KTtcblx0XHRleHBlY3QodGV4dEZpcnN0QmluZGluZykudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHRleHRGaXJzdEJpbmRpbmcpKS50b0NvbnRhaW4oXCJ0ZXh0Rmlyc3RcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHRleHRGaXJzdEJpbmRpbmcpKS50b0NvbnRhaW4oXCJ0YXJnZXRUZXh0XCIpO1xuXHRcdGV4cGVjdChcblx0XHRcdGV2YWx1YXRlQmluZGluZ1dpdGhNb2RlbChjb21waWxlQmluZGluZyh0ZXh0Rmlyc3RCaW5kaW5nKSwgeyB0ZXh0Rmlyc3Q6IFwiWW9sbyBMYXN0XCIsIHRhcmdldFRleHQ6IFwiWW9sbyBEZXNjcmlwdGlvblwiIH0pXG5cdFx0KS50b0VxdWFsKFwiWW9sbyBEZXNjcmlwdGlvbiAoWW9sbyBMYXN0KVwiKTtcblxuXHRcdC8vIFRleHRMYXN0XG5cdFx0Y29uc3QgdGV4dExhc3RCaW5kaW5nID0gZ2V0QmluZGluZ1dpdGhUZXh0QXJyYW5nZW1lbnQoXG5cdFx0XHRnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkoZW50aXR5U2V0LCBwcm9wZXJ0aWVzW1widGV4dExhc3RcIl0pLFxuXHRcdFx0YmluZGluZ0V4cHJlc3Npb24oXCJ0ZXh0TGFzdFwiKVxuXHRcdCk7XG5cdFx0ZXhwZWN0KHRleHRMYXN0QmluZGluZykudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKHRleHRMYXN0QmluZGluZykpLnRvQ29udGFpbihcInRleHRMYXN0XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyh0ZXh0TGFzdEJpbmRpbmcpKS50b0NvbnRhaW4oXCJ0YXJnZXRUZXh0XCIpO1xuXHRcdGV4cGVjdChcblx0XHRcdGV2YWx1YXRlQmluZGluZ1dpdGhNb2RlbChjb21waWxlQmluZGluZyh0ZXh0TGFzdEJpbmRpbmcpLCB7IHRleHRMYXN0OiBcIllvbG8gRmlyc3RcIiwgdGFyZ2V0VGV4dDogXCJZb2xvIERlc2NyaXB0aW9uXCIgfSlcblx0XHQpLnRvRXF1YWwoXCJZb2xvIEZpcnN0IChZb2xvIERlc2NyaXB0aW9uKVwiKTtcblx0fSk7XG5cblx0aXQoXCIjYWRkVGV4dEFycmFuZ2VtZW50VG9CaW5kaW5nRXhwcmVzc2lvblwiLCAoKSA9PiB7XG5cdFx0Y29uc3QgZnVsbENvbnRleHQgPSBnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkoZW50aXR5U2V0KTtcblxuXHRcdGNvbnN0IG90aGVyTW9kZWxCaW5kaW5nID0gYWRkVGV4dEFycmFuZ2VtZW50VG9CaW5kaW5nRXhwcmVzc2lvbihiaW5kaW5nRXhwcmVzc2lvbihcInRleHRMYXN0XCIsIFwib3RoZXJNb2RlbFwiKSwgZnVsbENvbnRleHQpO1xuXHRcdGV4cGVjdChvdGhlck1vZGVsQmluZGluZykudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG90aGVyTW9kZWxCaW5kaW5nKSkudG9Db250YWluKFwidGV4dExhc3RcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKG90aGVyTW9kZWxCaW5kaW5nKSkubm90LnRvQ29udGFpbihcInRhcmdldFRleHRcIik7XG5cblx0XHRjb25zdCBhZGRUZXh0TGFzdEJpbmRpbmcgPSBhZGRUZXh0QXJyYW5nZW1lbnRUb0JpbmRpbmdFeHByZXNzaW9uKGJpbmRpbmdFeHByZXNzaW9uKFwidGV4dExhc3RcIiksIGZ1bGxDb250ZXh0KTtcblx0XHRleHBlY3QoYWRkVGV4dExhc3RCaW5kaW5nKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRleHBlY3QoY29tcGlsZUJpbmRpbmcoYWRkVGV4dExhc3RCaW5kaW5nKSkudG9Db250YWluKFwidGV4dExhc3RcIik7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGFkZFRleHRMYXN0QmluZGluZykpLnRvQ29udGFpbihcInRhcmdldFRleHRcIik7XG5cdFx0ZXhwZWN0KFxuXHRcdFx0ZXZhbHVhdGVCaW5kaW5nV2l0aE1vZGVsKGNvbXBpbGVCaW5kaW5nKGFkZFRleHRMYXN0QmluZGluZyksIHsgdGV4dExhc3Q6IFwiWW9sbyBGaXJzdFwiLCB0YXJnZXRUZXh0OiBcIllvbG8gRGVzY3JpcHRpb25cIiB9KVxuXHRcdCkudG9FcXVhbChcIllvbG8gRmlyc3QgKFlvbG8gRGVzY3JpcHRpb24pXCIpO1xuXG5cdFx0Y29uc3QgY29tcGxleFRleHRCaW5kaW5nID0gYWRkVGV4dEFycmFuZ2VtZW50VG9CaW5kaW5nRXhwcmVzc2lvbihcblx0XHRcdGlmRWxzZShiaW5kaW5nRXhwcmVzc2lvbihcInRlc3RQcm9wXCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcInRleHRMYXN0XCIpLCBiaW5kaW5nRXhwcmVzc2lvbihcIm5vVGV4dFwiKSksXG5cdFx0XHRmdWxsQ29udGV4dFxuXHRcdCk7XG5cdFx0ZXhwZWN0KGNvbXBsZXhUZXh0QmluZGluZykudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0ZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGNvbXBsZXhUZXh0QmluZGluZykpLnRvQ29udGFpbihcInRleHRMYXN0XCIpO1xuXHRcdGV4cGVjdChjb21waWxlQmluZGluZyhjb21wbGV4VGV4dEJpbmRpbmcpKS50b0NvbnRhaW4oXCJ0YXJnZXRUZXh0XCIpO1xuXHRcdGNvbnN0IG1vZGVsQ29udGVudCA9IHtcblx0XHRcdHRlc3RQcm9wOiB0cnVlLFxuXHRcdFx0dGV4dExhc3Q6IFwiWW9sbyBGaXJzdFwiLFxuXHRcdFx0dGFyZ2V0VGV4dDogXCJZb2xvIERlc2NyaXB0aW9uXCIsXG5cdFx0XHRub1RleHQ6IFwiTm90IFlvbG9cIlxuXHRcdH07XG5cdFx0ZXhwZWN0KGV2YWx1YXRlQmluZGluZ1dpdGhNb2RlbChjb21waWxlQmluZGluZyhjb21wbGV4VGV4dEJpbmRpbmcpLCBtb2RlbENvbnRlbnQpKS50b0VxdWFsKFwiWW9sbyBGaXJzdCAoWW9sbyBEZXNjcmlwdGlvbilcIik7XG5cblx0XHRtb2RlbENvbnRlbnQudGVzdFByb3AgPSBmYWxzZTtcblx0XHRleHBlY3QoZXZhbHVhdGVCaW5kaW5nV2l0aE1vZGVsKGNvbXBpbGVCaW5kaW5nKGNvbXBsZXhUZXh0QmluZGluZyksIG1vZGVsQ29udGVudCkpLnRvRXF1YWwoXCJOb3QgWW9sb1wiKTtcblx0fSk7XG5cblx0aXQoXCJmb3JtYXR0ZWQgSW50ZWdlciB0eXBlIGNhbGxcIiwgKCkgPT4ge1xuXHRcdGNvbnN0IG9Qcm9wZXJ0eVR5cGUgPSB7IF90eXBlOiBcIlByb3BlcnR5XCIsIHR5cGU6IFwiRWRtLkludDMyXCIgfSBhcyBQcm9wZXJ0eTtcblx0XHRyZXR1cm4gZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24ob1Byb3BlcnR5VHlwZSwgYmluZGluZ0V4cHJlc3Npb24oXCJ2YWx1ZVwiKSkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7cGF0aDogJ3ZhbHVlJywgdHlwZTogJ3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLkludDMyJywgZm9ybWF0T3B0aW9uczoge3BhcnNlQXNTdHJpbmc6IGZhbHNlLCBlbXB0eVN0cmluZzogJyd9fVwiXG5cdFx0KTtcblx0fSk7XG5cblx0aXQoXG5cdFx0XCJmb3JtYXR0ZWQgRG91YmxlIHR5cGUgY2FsbFwiLFxuXHRcdHtcblx0XHRcdFwicmVmZXJlbmNlc1wiOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRcInR5cGVcIjogXCJCQ1BcIixcblx0XHRcdFx0XHRcIklEXCI6IFwiMjE4MDIxMjE0OFwiXG5cdFx0XHRcdH1cblx0XHRcdF1cblx0XHR9LFxuXHRcdCgpID0+IHtcblx0XHRcdGNvbnN0IG9Qcm9wZXJ0eVR5cGUgPSB7IF90eXBlOiBcIlByb3BlcnR5XCIsIHR5cGU6IFwiRWRtLkRvdWJsZVwiIH0gYXMgUHJvcGVydHk7XG5cdFx0XHRyZXR1cm4gZXhwZWN0KGNvbXBpbGVCaW5kaW5nKGZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24ob1Byb3BlcnR5VHlwZSwgYmluZGluZ0V4cHJlc3Npb24oXCJ2YWx1ZVwiKSkpKS50b0VxdWFsKFxuXHRcdFx0XHRcIntwYXRoOiAndmFsdWUnLCB0eXBlOiAnc2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRG91YmxlJywgZm9ybWF0T3B0aW9uczoge3BhcnNlQXNTdHJpbmc6IGZhbHNlLCBlbXB0eVN0cmluZzogJyd9fVwiXG5cdFx0XHQpO1xuXHRcdH1cblx0KTtcblxuXHRpdChcImNhbiBldmFsdWF0ZSB0aGUgdmlzaWJsZSBwYXJhbWV0ZXIgYmFzZWQgb24gVUkuSGlkZGVuXCIsICgpID0+IHtcblx0XHRjb25zdCBlbnRpdHlTZXRMaW5lSXRlbSA9IGVudGl0eVNldC5lbnRpdHlUeXBlLmFubm90YXRpb25zLlVJPy5MaW5lSXRlbSBhcyBMaW5lSXRlbTtcblx0XHRsZXQgZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5ID0gZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KFxuXHRcdFx0ZW50aXR5U2V0LFxuXHRcdFx0ZW50aXR5U2V0TGluZUl0ZW1bMV0gYXMgQW55QW5ub3RhdGlvbiAvLyBzdGF0aWNIaWRkZW5Qcm9wXG5cdFx0KTtcblx0XHRleHBlY3QoZ2V0VmlzaWJsZUV4cHJlc3Npb24oZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSA9IGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShcblx0XHRcdGVudGl0eVNldCxcblx0XHRcdGVudGl0eVNldExpbmVJdGVtWzJdIGFzIEFueUFubm90YXRpb24gLy8gZHluYW1pY0hpZGRlblByb3Bcblx0XHQpO1xuXHRcdGV4cGVjdChnZXRWaXNpYmxlRXhwcmVzc2lvbihkYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkpKS50b0VxdWFsKFwiez0gJXtpc0hpZGRlbn0gIT09IHRydWV9XCIpO1xuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSA9IGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShcblx0XHRcdGVudGl0eVNldCxcblx0XHRcdGVudGl0eVNldExpbmVJdGVtWzNdIGFzIEFueUFubm90YXRpb24gLy8gdGV4dEZpcnN0IHdpdGggZGF0YUZpZWxkIHN0YXRpY2FsbHkgaGlkZGVuXG5cdFx0KTtcblx0XHRleHBlY3QoZ2V0VmlzaWJsZUV4cHJlc3Npb24oZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KSkudG9FcXVhbChcImZhbHNlXCIpO1xuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSA9IGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShcblx0XHRcdGVudGl0eVNldCxcblx0XHRcdGVudGl0eVNldExpbmVJdGVtWzRdIGFzIEFueUFubm90YXRpb24gLy8gdGV4dE9ubHkgd2l0aCBkYXRhRmllbGQgZHluYW1pY2FsbHkgaGlkZGVuXG5cdFx0KTtcblx0XHRleHBlY3QoZ2V0VmlzaWJsZUV4cHJlc3Npb24oZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KSkudG9FcXVhbChcIns9ICV7aXNIaWRkZW59ICE9PSB0cnVlfVwiKTtcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkgPSBnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkoXG5cdFx0XHRlbnRpdHlTZXQsXG5cdFx0XHRlbnRpdHlTZXRMaW5lSXRlbVs1XSBhcyBBbnlBbm5vdGF0aW9uIC8vIGR5bmFtaWNIaWRkZW5Qcm9wMiB3aXRoIGR5bmFtaWMgZGF0YWZpZWxkIGhpZGRlblxuXHRcdCk7XG5cdFx0ZXhwZWN0KGdldFZpc2libGVFeHByZXNzaW9uKGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSkpLnRvRXF1YWwoXCJ7PSAle2lzSGlkZGVuMn0gIT09IHRydWUgJiYgJXtpc0hpZGRlbn0gIT09IHRydWV9XCIpO1xuXHRcdGV4cGVjdChnZXRWaXNpYmxlRXhwcmVzc2lvbihkYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHksIHsgaXNBbmFseXRpY3M6IHRydWUgfSBhcyBGaWVsZEZvcm1hdE9wdGlvbnMpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAle2lzSGlkZGVuMn0gIT09IHRydWUgJiYgJXtpc0hpZGRlbn0gIT09IHRydWUgJiYgKCV7QCR1aTUubm9kZS5pc0V4cGFuZGVkfSAhPT0gdHJ1ZSB8fCAle0AkdWk1Lm5vZGUubGV2ZWx9ID09PSAwKX1cIlxuXHRcdCk7XG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5ID0gZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KFxuXHRcdFx0ZW50aXR5U2V0LFxuXHRcdFx0ZW50aXR5U2V0TGluZUl0ZW1bNl0gYXMgQW55QW5ub3RhdGlvbiAvLyBoaWRkZW5XaXRoMTFOYXYgd2l0aCBkeW5hbWljIGRhdGFmaWVsZCBoaWRkZW5cblx0XHQpO1xuXHRcdGV4cGVjdChnZXRWaXNpYmxlRXhwcmVzc2lvbihkYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkpKS50b0VxdWFsKFxuXHRcdFx0XCJ7PSAle2lzSGlkZGVuMn0gIT09IHRydWUgJiYgJXtTcGVjaWFsQ2hpbGQvaXNIaWRkZW59ICE9PSB0cnVlfVwiXG5cdFx0KTtcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkgPSBnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkoXG5cdFx0XHRlbnRpdHlTZXQsXG5cdFx0XHRlbnRpdHlTZXRMaW5lSXRlbVs3XSBhcyBBbnlBbm5vdGF0aW9uIC8vIGhpZGRlbldpdGgxTk5hdiB3aXRoIGR5bmFtaWMgZGF0YWZpZWxkIGhpZGRlbiAtPiBEb2Vzbid0IG1ha2Ugc2Vuc2UgYW5kIG1vZGVsIHdpbGwgY29tcGxhaW4gYnV0IGhlaCA6KFxuXHRcdCk7XG5cdFx0ZXhwZWN0KGdldFZpc2libGVFeHByZXNzaW9uKGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSkpLnRvRXF1YWwoXCJ7PSAle2lzSGlkZGVuMn0gIT09IHRydWUgJiYgJXtfRWxlbWVudHMvaXNIaWRkZW59ICE9PSB0cnVlfVwiKTtcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkgPSBnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkoXG5cdFx0XHRlbnRpdHlTZXQsXG5cdFx0XHRlbnRpdHlTZXRMaW5lSXRlbVs4XSBhcyBBbnlBbm5vdGF0aW9uIC8vIERhdGEgRmllbGQgRm9yIEFjdGlvblxuXHRcdCk7XG5cdFx0ZXhwZWN0KGdldFZpc2libGVFeHByZXNzaW9uKGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSA9IGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShcblx0XHRcdGVudGl0eVNldCxcblx0XHRcdGVudGl0eVNldExpbmVJdGVtWzldIGFzIEFueUFubm90YXRpb24gLy8gRGF0YUZpZWxkRm9yQW5ub3RhdGlvbiAtPiBkYXRhIHBvaW50IHZpc2libGVcblx0XHQpO1xuXHRcdGV4cGVjdChnZXRWaXNpYmxlRXhwcmVzc2lvbihkYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkpKS50b0VxdWFsKFwidHJ1ZVwiKTtcblx0XHRleHBlY3QoZ2V0VmlzaWJsZUV4cHJlc3Npb24oZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5LCB7IGlzQW5hbHl0aWNzOiB0cnVlIH0gYXMgRmllbGRGb3JtYXRPcHRpb25zKSkudG9FcXVhbChcblx0XHRcdFwiez0gJXtAJHVpNS5ub2RlLmlzRXhwYW5kZWR9ICE9PSB0cnVlIHx8ICV7QCR1aTUubm9kZS5sZXZlbH0gPT09IDB9XCJcblx0XHQpO1xuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSA9IGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShcblx0XHRcdGVudGl0eVNldCxcblx0XHRcdGVudGl0eVNldExpbmVJdGVtWzEwXSBhcyBBbnlBbm5vdGF0aW9uIC8vIERhdGFGaWVsZEZvckFubm90YXRpb24gLT4gZGF0YSBwb2ludCBkeW5hbWljIHZpc2libGVcblx0XHQpO1xuXHRcdGV4cGVjdChnZXRWaXNpYmxlRXhwcmVzc2lvbihkYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkpKS50b0VxdWFsKFwiez0gJXtpc0hpZGRlbn0gIT09IHRydWV9XCIpO1xuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSA9IGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShcblx0XHRcdGVudGl0eVNldCxcblx0XHRcdGVudGl0eVNldExpbmVJdGVtWzExXSBhcyBBbnlBbm5vdGF0aW9uIC8vIG5vSGlkZGVuUHJvcFxuXHRcdCk7XG5cdFx0ZXhwZWN0KGdldFZpc2libGVFeHByZXNzaW9uKGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSkpLnRvRXF1YWwoXCJ0cnVlXCIpO1xuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSA9IGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShcblx0XHRcdGVudGl0eVNldCxcblx0XHRcdGVudGl0eVNldExpbmVJdGVtWzEyXSBhcyBBbnlBbm5vdGF0aW9uIC8vIERhdGFGaWVsZEZvckFubm90YXRpb24gLT4gRmllbGRHcm91cCAtPiBEYXRhXG5cdFx0KTtcblx0XHRleHBlY3QoZ2V0VmlzaWJsZUV4cHJlc3Npb24oZGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KSkudG9FcXVhbChcInRydWVcIik7XG5cdH0pO1xuXG5cdGl0KFwiZ2V0U2VtYW50aWNPYmplY3RFeHByZXNzaW9uVG9SZXNvbHZlIHdpdGggYW5ub3RhdGlvbnNcIiwgKCkgPT4ge1xuXHRcdGNvbnN0IG9Bbm5vdGF0aW9ucyA9IHtcblx0XHRcdExhYmVsOiBcIlNlbWFudGljIE9iamVjdCBQcm9wZXJ0eVwiLFxuXHRcdFx0U2VtYW50aWNPYmplY3Q6IFwidjQtRnJlZXN0eWxlXCJcblx0XHR9O1xuXHRcdGV4cGVjdChnZXRTZW1hbnRpY09iamVjdEV4cHJlc3Npb25Ub1Jlc29sdmUob0Fubm90YXRpb25zKSkudG9NYXRjaFNuYXBzaG90KCk7XG5cdH0pO1xuXG5cdGl0KFwiZ2V0U2VtYW50aWNPYmplY3RFeHByZXNzaW9uVG9SZXNvbHZlIHdpdGggYW5ub3RhdGlvbnMgYW5kIHNlbWFudGljIG9iamVjdCBxdWFsaWZpZXJcIiwgKCkgPT4ge1xuXHRcdGNvbnN0IG9Bbm5vdGF0aW9ucyA9IHtcblx0XHRcdFwiTGFiZWxcIjogXCJTZW1hbnRpYyBPYmplY3QgUHJvcGVydHlcIixcblx0XHRcdFwiU2VtYW50aWNPYmplY3QjUXVhbGlmaWVyXCI6IFwidjQtRnJlZXN0eWxlXCJcblx0XHR9O1xuXHRcdGV4cGVjdChnZXRTZW1hbnRpY09iamVjdEV4cHJlc3Npb25Ub1Jlc29sdmUob0Fubm90YXRpb25zKSkudG9NYXRjaFNuYXBzaG90KCk7XG5cdH0pO1xuXG5cdGl0KFwiZ2V0U2VtYW50aWNPYmplY3RFeHByZXNzaW9uVG9SZXNvbHZlIHdpdGhvdXQgYW5ub3RhdGlvbnNcIiwgKCkgPT4ge1xuXHRcdGNvbnN0IG9Bbm5vdGF0aW9ucyA9IHt9O1xuXHRcdGV4cGVjdChnZXRTZW1hbnRpY09iamVjdEV4cHJlc3Npb25Ub1Jlc29sdmUob0Fubm90YXRpb25zKSkudG9NYXRjaFNuYXBzaG90KCk7XG5cdH0pO1xuXG5cdGl0KFwiZ2V0U2VtYW50aWNPYmplY3RzIHdpdGggYVNlbU9iakV4cHJUb1Jlc29sdmVcIiwgKCkgPT4ge1xuXHRcdGNvbnN0IGFTZW1PYmpFeHByVG9SZXNvbHZlID0gW1xuXHRcdFx0e1xuXHRcdFx0XHRrZXk6IFwidjQtRnJlZXN0eWxlXCIsXG5cdFx0XHRcdHZhbHVlOiBcInY0LUZyZWVzdHlsZVwiXG5cdFx0XHR9XG5cdFx0XTtcblx0XHRjb25zdCBvU2VtYW50aWNPYmplY3RDb250ZXh0ID0gZ2V0U2VtYW50aWNPYmplY3RzKGFTZW1PYmpFeHByVG9SZXNvbHZlKTtcblx0XHRleHBlY3Qob1NlbWFudGljT2JqZWN0Q29udGV4dC5nZXRPYmplY3QoKSkudG9NYXRjaFNuYXBzaG90KCk7XG5cdH0pO1xuXG5cdGl0KFwiZ2V0U2VtYW50aWNPYmplY3RzIHdpdGhvdXQgYVNlbU9iakV4cHJUb1Jlc29sdmVcIiwgKCkgPT4ge1xuXHRcdGNvbnN0IGFTZW1PYmpFeHByVG9SZXNvbHZlOiBhbnkgPSBbXTtcblx0XHRjb25zdCBvU2VtYW50aWNPYmplY3RDb250ZXh0ID0gZ2V0U2VtYW50aWNPYmplY3RzKGFTZW1PYmpFeHByVG9SZXNvbHZlKTtcblx0XHRleHBlY3Qob1NlbWFudGljT2JqZWN0Q29udGV4dC5nZXRPYmplY3QoKSkudG9NYXRjaFNuYXBzaG90KCk7XG5cdH0pO1xuXG5cdGl0KFwiaXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cyB3aXRoIGRhdGFwb2ludCBoYXZpbmcgUXVpY2tWaWV3RmFjZXRzXCIsICgpID0+IHtcblx0XHRjb25zdCBvQ29udGV4dFBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvTWFpbkVudGl0eVwiKTtcblx0XHRjb25zdCBvTWV0YVBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvTWFpbkVudGl0eS9AY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGVhZGVyRmFjZXRzLzIvVGFyZ2V0LyRBbm5vdGF0aW9uUGF0aC9cIik7XG5cdFx0Y29uc3Qgb0RhdGFNb2RlbFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMob01ldGFQYXRoLCBvQ29udGV4dFBhdGgpO1xuXHRcdGNvbnN0IG9Qcm9wZXJ0eTogUHJvcGVydHkgPSBvRGF0YU1vZGVsUGF0aD8udGFyZ2V0T2JqZWN0LlZhbHVlLiR0YXJnZXQ7XG5cdFx0ZXhwZWN0KGlzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHMob0RhdGFNb2RlbFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aCwgb1Byb3BlcnR5IGFzIFByb3BlcnR5KSkudG9FcXVhbCh0cnVlKTtcblx0fSk7XG5cblx0aXQoXCJpc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzIHdpdGggZGF0YXBvaW50IG5vdCBoYXZpbmcgUXVpY2sgVmlldyBGYWNldHNcIiwgKCkgPT4ge1xuXHRcdGNvbnN0IG9Db250ZXh0UGF0aCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9NYWluRW50aXR5XCIpO1xuXHRcdGNvbnN0IG9NZXRhUGF0aCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9NYWluRW50aXR5L0Bjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IZWFkZXJGYWNldHMvMy9UYXJnZXQvJEFubm90YXRpb25QYXRoL1wiKTtcblx0XHRjb25zdCBvRGF0YU1vZGVsUGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhvTWV0YVBhdGgsIG9Db250ZXh0UGF0aCk7XG5cdFx0Y29uc3Qgb1Byb3BlcnR5OiBQcm9wZXJ0eSA9IG9EYXRhTW9kZWxQYXRoPy50YXJnZXRPYmplY3QuVmFsdWUuJHRhcmdldDtcblx0XHRleHBlY3QoaXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cyhvRGF0YU1vZGVsUGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoLCBvUHJvcGVydHkgYXMgUHJvcGVydHkpKS50b0VxdWFsKGZhbHNlKTtcblx0fSk7XG59KTtcbiJdfQ==
@@ -5,7 +5,6 @@ import {
5
5
  FieldFormatOptions,
6
6
  getValueBinding,
7
7
  getDisplayStyle,
8
- getDataPointStyle,
9
8
  getSemanticObjectExpressionToResolve,
10
9
  getSemanticObjects,
11
10
  isUsedInNavigationWithQuickViewFacets
@@ -97,8 +96,8 @@ describe("Field Templating Testing", () => {
97
96
  getDataModelObjectPathForProperty(entitySet, properties["UnitWithCurrencyBinding"]),
98
97
  {}
99
98
  );
100
- expect(unitWithCurrencyBindingSimpleBinding).toEqual(
101
- "{mode:'TwoWay', parts:[{path:'UnitWithCurrencyBinding', type : 'sap.ui.model.odata.type.Int32', formatOptions: {parseAsString: false, emptyString: ''}},{path:'currency', type : 'sap.ui.model.odata.type.String', formatOptions: {parseKeepsEmptyString: true}},{mode:'OneTime',path:'/##@@requestCurrencyCodes',targetType:'any'}],type:'sap.ui.model.odata.type.Currency', formatOptions: {parseAsString: false, emptyString: '', showMeasure: false}}"
99
+ expect(unitWithCurrencyBindingSimpleBinding).toMatchInlineSnapshot(
100
+ `"{mode:'TwoWay', parts:[{path: 'UnitWithCurrencyBinding', type: 'sap.ui.model.odata.type.Int32', formatOptions: {parseAsString: false, emptyString: ''}},{path: 'currency', type: 'sap.ui.model.odata.type.String', formatOptions: {parseKeepsEmptyString: true}},{mode:'OneTime',path:'/##@@requestCurrencyCodes',targetType:'any'}],type:'sap.ui.model.odata.type.Currency', formatOptions: {parseAsString: false, emptyString: '', showMeasure: false}}"`
102
101
  );
103
102
 
104
103
  const unitWithCurrencyBindingIgnoreUnit = getValueBinding(
@@ -119,8 +118,8 @@ describe("Field Templating Testing", () => {
119
118
  true,
120
119
  true
121
120
  );
122
- expect(unitWithCurrencyDescriptionBinding).toEqual(
123
- "{mode:'TwoWay', parts:[{path:'UnitWithCurrencyBinding', type : 'sap.ui.model.odata.type.Int32', formatOptions: {parseAsString: false, emptyString: ''}},{path:'currency', type : 'sap.ui.model.odata.type.String', formatOptions: {parseKeepsEmptyString: true}},{mode:'OneTime',path:'/##@@requestCurrencyCodes',targetType:'any'}],type:'sap.ui.model.odata.type.Currency', formatOptions: {parseAsString: false, emptyString: '', showNumber: false}}"
121
+ expect(unitWithCurrencyDescriptionBinding).toMatchInlineSnapshot(
122
+ `"{mode:'TwoWay', parts:[{path: 'UnitWithCurrencyBinding', type: 'sap.ui.model.odata.type.Int32', formatOptions: {parseAsString: false, emptyString: ''}},{path: 'currency', type: 'sap.ui.model.odata.type.String', formatOptions: {parseKeepsEmptyString: true}},{mode:'OneTime',path:'/##@@requestCurrencyCodes',targetType:'any'}],type:'sap.ui.model.odata.type.Currency', formatOptions: {parseAsString: false, emptyString: '', showNumber: false}}"`
124
123
  );
125
124
  }
126
125
  );
@@ -138,27 +137,38 @@ describe("Field Templating Testing", () => {
138
137
  () => {
139
138
  const entitySetLineItem = entitySet.entityType.annotations.UI?.LineItem as LineItem;
140
139
  const dataModelObjectPathForProperty = getDataModelObjectPathForProperty(entitySet, entitySetLineItem[1] as AnyAnnotation);
141
- const semanticObject: string = "";
142
140
  const formatOptions = {
143
141
  valueFormat: "DescriptionValue",
144
142
  textAlignMode: "Form",
145
- retrieveTextFromValueList: true
143
+ retrieveTextFromValueList: false
146
144
  } as FieldFormatOptions;
147
145
 
148
146
  const dataFieldConverted = getValueBinding(
149
147
  getDataModelObjectPathForProperty(entitySet, properties["propertyNoTextWithVH"]),
150
148
  {}
151
149
  );
152
- const displayStyle = getDisplayStyle(
150
+
151
+ // displayStyle "LinkWithQuickViewForm"
152
+ const semanticObject: string = "semanticObject";
153
+ const displayStyleLink = getDisplayStyle(
153
154
  properties["propertyNoTextWithVH"],
154
155
  dataFieldConverted,
155
156
  dataModelObjectPathForProperty,
156
157
  formatOptions,
157
158
  semanticObject
158
159
  );
159
- // Fallback feature for retrieve the text annotation from the value lists:
160
- // Property has value help, no Text annotation, has display format, used in Form and manifest-switch retrieveTextFromValueList is on
161
- expect(displayStyle).toEqual("MdcFieldWithValueHelp");
160
+ expect(displayStyleLink).toEqual("LinkWithQuickViewForm");
161
+
162
+ // displayStyle "Text"
163
+ const noSemanticObject: string = "";
164
+ const displayStyleText = getDisplayStyle(
165
+ properties["propertyNoTextWithVH"],
166
+ dataFieldConverted,
167
+ dataModelObjectPathForProperty,
168
+ formatOptions,
169
+ noSemanticObject
170
+ );
171
+ expect(displayStyleText).toEqual("Text");
162
172
  }
163
173
  );
164
174
 
@@ -340,33 +350,6 @@ describe("Field Templating Testing", () => {
340
350
  expect(getVisibleExpression(dataModelObjectPathForProperty)).toEqual("true");
341
351
  });
342
352
 
343
- it("getDataPointStyle with datapoint having Visualization", () => {
344
- const oContextPath = metaModel.createBindingContext("/MainEntity");
345
- const oMetaPath = metaModel.createBindingContext("/MainEntity/@com.sap.vocabularies.UI.v1.HeaderFacets/0/Target/$AnnotationPath/");
346
- const oDataModelPath = getInvolvedDataModelObjects(oMetaPath, oContextPath);
347
- expect(getDataPointStyle(oDataModelPath)).toEqual(undefined);
348
- });
349
- it("getDataPointStyle with datapoint having QuickViewFacets", () => {
350
- const oContextPath = metaModel.createBindingContext("/MainEntity");
351
- const oMetaPath = metaModel.createBindingContext("/MainEntity/@com.sap.vocabularies.UI.v1.HeaderFacets/2/Target/$AnnotationPath/");
352
- const oDataModelPath = getInvolvedDataModelObjects(oMetaPath, oContextPath);
353
- expect(getDataPointStyle(oDataModelPath as DataModelObjectPath)).toEqual("LinkWithQuickViewForm");
354
- });
355
-
356
- it("getDataPointStyle with datapoint having SemanticObjects", () => {
357
- const oContextPath = metaModel.createBindingContext("/MainEntity");
358
- const oMetaPath = metaModel.createBindingContext("/MainEntity/@com.sap.vocabularies.UI.v1.HeaderFacets/1/Target/$AnnotationPath/");
359
- const oDataModelPath = getInvolvedDataModelObjects(oMetaPath, oContextPath);
360
- expect(getDataPointStyle(oDataModelPath as DataModelObjectPath)).toEqual("LinkWrapper");
361
- });
362
-
363
- it("getDataPointStyle with datapoint not having Visualization, Quick View Facets, SemanticObjects", () => {
364
- const oContextPath = metaModel.createBindingContext("/MainEntity");
365
- const oMetaPath = metaModel.createBindingContext("/MainEntity/@com.sap.vocabularies.UI.v1.HeaderFacets/3/Target/$AnnotationPath/");
366
- const oDataModelPath = getInvolvedDataModelObjects(oMetaPath, oContextPath);
367
- expect(getDataPointStyle(oDataModelPath as DataModelObjectPath)).toEqual(undefined);
368
- });
369
-
370
353
  it("getSemanticObjectExpressionToResolve with annotations", () => {
371
354
  const oAnnotations = {
372
355
  Label: "Semantic Object Property",
@@ -163,4 +163,4 @@ sap.ui.define(["sap/fe/test/JestTemplatingHelper", "path", "sap/fe/core/converte
163
163
  });
164
164
  });
165
165
  }, false);
166
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFjdGlvbnMuc3BlYy50cyJdLCJuYW1lcyI6WyJjb252ZXJ0ZWRUeXBlcyIsInNNZXRhZGF0YVVybCIsIm1ldGFNb2RlbCIsImJlZm9yZUFsbCIsImNvbXBpbGVDRFMiLCJwYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsImdldE1ldGFNb2RlbCIsImNvbnZlcnRUeXBlcyIsImdldFRhYmxlQWN0aW9uc0ZvclRlc3QiLCJtYW5pZmVzdFNldHRpbmdzIiwiY29udmVydGVyT3V0cHV0IiwiY29udmVydGVyQ29udGV4dEludGVybWVkaWF0ZSIsImdldENvbnZlcnRlckNvbnRleHRGb3JUZXN0IiwiY29udmVydGVyVHlwZSIsIlRlbXBsYXRlVHlwZSIsIkxpc3RSZXBvcnQiLCJlbnRpdHlTZXQiLCJjb250cm9sQ29uZmlndXJhdGlvbiIsImFjdGlvbnMiLCJNZW51QWN0aW9ucyIsInRleHQiLCJwb3NpdGlvbiIsInBsYWNlbWVudCIsIlBsYWNlbWVudCIsIkFmdGVyIiwibWVudSIsImdldFRhYmxlQWN0aW9ucyIsImdldEVudGl0eVR5cGUiLCJhbm5vdGF0aW9ucyIsIlVJIiwiTGluZUl0ZW0iLCJnZXRTaW5ndWxhckNvbnRyb2xUeXBlIiwieG1sVHJlZSIsInhtbENvbnRyb2xOYW1lIiwicmVDb250cm9sTWF0Y2hlciIsIlJlZ0V4cCIsImFsbENvbnRyb2xzIiwiaXRlcmF0aW9uVGV4dCIsImkiLCJleGVjIiwiZGVzY3JpYmUiLCJpdCIsImZuVGFibGVBY3Rpb25zIiwiYW5ub3RhdGlvbiIsInN0YW5kYXJkQWN0aW9ucyIsImlzVGVtcGxhdGVkIiwiZW5hYmxlZCIsInZpc2libGUiLCJtQmluZGluZ0NvbnRleHRzIiwibUludGVybmFsTW9kZWxzIiwiSlNPTk1vZGVsIiwiZ2V0T2JqZWN0IiwieG1sVGFibGVBY3Rpb25zIiwiZ2V0VGVtcGxhdGVkWE1MIiwidGVtcGxhdGVkVGFibGVBY3Rpb25zWE1MIiwiYnV0dG9ucyIsIm1lbnVCdXR0b24iLCJyZVByb3BlcnR5VG9CZUNoZWNrZWQiLCJleHBlY3QiLCJub3QiLCJ0b0JlRmFsc3kiLCJhbm5vdGF0aW9uQnV0dG9uMSIsImFubm90YXRpb25CdXR0b24yIiwiYW5ub3RhdGlvbkJ1dHRvbjMiLCJkZWxldGVCdXR0b24iLCJ0b01hdGNoIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVUEsTUFBSUEsY0FBSjtBQUNBLE1BQUlDLFlBQUo7QUFDQSxNQUFJQyxTQUFKO0FBRUFDLEVBQUFBLFNBQVM7QUFBQSxRQUFrQjtBQUMxQkYsTUFBQUEsWUFBWSxHQUFHRyxVQUFVLENBQUNDLElBQUksQ0FBQ0MsSUFBTCxDQUFVQyxTQUFWLEVBQXFCLG1CQUFyQixDQUFELENBQXpCO0FBRDBCLDZCQUVSQyxZQUFZLENBQUNQLFlBQUQsQ0FGSjtBQUUxQkMsUUFBQUEsU0FBUyxnQkFBVDtBQUNBRixRQUFBQSxjQUFjLEdBQUdTLFlBQVksQ0FBQ1AsU0FBRCxDQUE3QjtBQUgwQjtBQUkxQixLQUpRO0FBQUE7QUFBQTtBQUFBLElBQVQ7O0FBTUEsTUFBTVEsc0JBQXNCLEdBQUcsVUFDOUJDLGdCQUQ4QixFQUdaO0FBQUE7O0FBQUEsUUFEbEJDLGVBQ2tCLHVFQURpQlosY0FDakI7QUFDbEIsUUFBTWEsNEJBQTRCLEdBQUdDLDBCQUEwQixDQUFDRixlQUFELEVBQWtCO0FBQ2hGRyxNQUFBQSxhQUFhLEVBQUVDLFlBQVksQ0FBQ0MsVUFEb0Q7QUFFaEZDLE1BQUFBLFNBQVMsRUFBRSxZQUZxRTtBQUdoRkMsTUFBQUEsb0JBQW9CLEVBQUU7QUFDckIsZ0RBQXdDO0FBQ3ZDQyxVQUFBQSxPQUFPLEVBQUU7QUFDUkMsWUFBQUEsV0FBVyxFQUFFO0FBQ1pDLGNBQUFBLElBQUksRUFBRSxNQURNO0FBRVpDLGNBQUFBLFFBQVEsRUFBRTtBQUNUQyxnQkFBQUEsU0FBUyxFQUFFQyxTQUFTLENBQUNDO0FBRFosZUFGRTtBQUtaQyxjQUFBQSxJQUFJLEVBQUUsQ0FDTCx5REFESyxFQUVMLHlEQUZL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QSx3Q0FBZ0ZMLE9BQWhGO0FBQUEsY0FBT00saUJBQVA7QUFBQSxjQUEwQkMsaUJBQTFCO0FBQUEsY0FBNkNDLGlCQUE3QztBQUFBLGNBQWdFQyxZQUFoRTs7QUFDQU4sVUFBQUEsTUFBTSxDQUFDRyxpQkFBRCxDQUFOLENBQTBCSSxPQUExQixDQUFrQ1IscUJBQWxDO0FBQ0FDLFVBQUFBLE1BQU0sQ0FBQ0ksaUJBQUQsQ0FBTixDQUEwQkcsT0FBMUIsQ0FBa0NSLHFCQUFsQztBQUNBQyxVQUFBQSxNQUFNLENBQUNLLGlCQUFELENBQU4sQ0FBMEJFLE9BQTFCLENBQWtDUixxQkFBbEM7QUFDQUMsVUFBQUEsTUFBTSxDQUFDTSxZQUFELENBQU4sQ0FBcUJDLE9BQXJCLENBQTZCUixxQkFBN0I7QUFDQUMsVUFBQUEsTUFBTSxDQUFDRixVQUFVLENBQUMsQ0FBRCxDQUFYLENBQU4sQ0FBc0JTLE9BQXRCLENBQThCUixxQkFBOUI7QUF2RGdCO0FBd0RoQixPQTdEQTtBQUFBO0FBQUE7QUFBQSxNQUFGO0FBK0RBLEdBaEVPLENBQVIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBpbGVDRFMsIGdldENvbnZlcnRlckNvbnRleHRGb3JUZXN0LCBnZXRNZXRhTW9kZWwsIGdldFRlbXBsYXRlZFhNTCB9IGZyb20gXCJzYXAvZmUvdGVzdC9KZXN0VGVtcGxhdGluZ0hlbHBlclwiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGdldFRhYmxlQWN0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9UYWJsZVwiO1xuaW1wb3J0IHsgTGluZUl0ZW0gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IENvbnZlcnRlck91dHB1dCB9IGZyb20gXCJAc2FwLXV4L2Fubm90YXRpb24tY29udmVydGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0VHlwZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IExpc3RSZXBvcnRNYW5pZmVzdFNldHRpbmdzLCBUZW1wbGF0ZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBCYXNlQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHsgT0RhdGFNZXRhTW9kZWwgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0XCI7XG5pbXBvcnQgeyBKU09OTW9kZWwgfSBmcm9tIFwic2FwL3VpL21vZGVsL2pzb25cIjtcbmltcG9ydCB7IFBsYWNlbWVudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5cbmxldCBjb252ZXJ0ZWRUeXBlczogQ29udmVydGVyT3V0cHV0O1xubGV0IHNNZXRhZGF0YVVybDogc3RyaW5nO1xubGV0IG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWw7XG5cbmJlZm9yZUFsbChhc3luYyBmdW5jdGlvbigpIHtcblx0c01ldGFkYXRhVXJsID0gY29tcGlsZUNEUyhwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uL2RhdGEvVGFibGUuY2RzXCIpKTtcblx0bWV0YU1vZGVsID0gYXdhaXQgZ2V0TWV0YU1vZGVsKHNNZXRhZGF0YVVybCk7XG5cdGNvbnZlcnRlZFR5cGVzID0gY29udmVydFR5cGVzKG1ldGFNb2RlbCk7XG59KTtcblxuY29uc3QgZ2V0VGFibGVBY3Rpb25zRm9yVGVzdCA9IChcblx0bWFuaWZlc3RTZXR0aW5nczogTGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MsXG5cdGNvbnZlcnRlck91dHB1dDogQ29udmVydGVyT3V0cHV0ID0gY29udmVydGVkVHlwZXNcbik6IEJhc2VBY3Rpb25bXSA9PiB7XG5cdGNvbnN0IGNvbnZlcnRlckNvbnRleHRJbnRlcm1lZGlhdGUgPSBnZXRDb252ZXJ0ZXJDb250ZXh0Rm9yVGVzdChjb252ZXJ0ZXJPdXRwdXQsIHtcblx0XHRjb252ZXJ0ZXJUeXBlOiBUZW1wbGF0ZVR5cGUuTGlzdFJlcG9ydCxcblx0XHRlbnRpdHlTZXQ6IFwiVGVzdEVudGl0eVwiLFxuXHRcdGNvbnRyb2xDb25maWd1cmF0aW9uOiB7XG5cdFx0XHRcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiOiB7XG5cdFx0XHRcdGFjdGlvbnM6IHtcblx0XHRcdFx0XHRNZW51QWN0aW9uczoge1xuXHRcdFx0XHRcdFx0dGV4dDogXCJNZW51XCIsXG5cdFx0XHRcdFx0XHRwb3NpdGlvbjoge1xuXHRcdFx0XHRcdFx0XHRwbGFjZW1lbnQ6IFBsYWNlbWVudC5BZnRlclxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG1lbnU6IFtcblx0XHRcdFx0XHRcdFx0XCJEYXRhRmllbGRGb3JBY3Rpb246OnNhcC5mZS50ZXN0Lkplc3RTZXJ2aWNlLk1lbnVBY3Rpb24xXCIsXG5cdFx0XHRcdFx0XHRcdFwiRGF0YUZpZWxkRm9yQWN0aW9uOjpzYXAuZmUudGVzdC5KZXN0U2VydmljZS5NZW51QWN0aW9uMlwiXG5cdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIGdldFRhYmxlQWN0aW9ucyhcblx0XHRjb252ZXJ0ZXJDb250ZXh0SW50ZXJtZWRpYXRlLmdldEVudGl0eVR5cGUoKS5hbm5vdGF0aW9ucy5VST8uTGluZUl0ZW0gYXMgTGluZUl0ZW0sXG5cdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIixcblx0XHRjb252ZXJ0ZXJDb250ZXh0SW50ZXJtZWRpYXRlXG5cdCk7XG59O1xuXG5jb25zdCBnZXRTaW5ndWxhckNvbnRyb2xUeXBlID0gZnVuY3Rpb24oeG1sVHJlZTogc3RyaW5nLCB4bWxDb250cm9sTmFtZTogc3RyaW5nKSB7XG5cdGNvbnN0IHJlQ29udHJvbE1hdGNoZXIgPSBuZXcgUmVnRXhwKFwiPFtcIiArIHhtbENvbnRyb2xOYW1lICsgXCJdK3MqW14+XSo+XCIsIFwiZ1wiKSxcblx0XHRhbGxDb250cm9scyA9IFtdO1xuXHRsZXQgaXRlcmF0aW9uVGV4dCxcblx0XHRpID0gMDtcblx0ZG8ge1xuXHRcdGl0ZXJhdGlvblRleHQgPSByZUNvbnRyb2xNYXRjaGVyLmV4ZWMoeG1sVHJlZSk7XG5cdFx0aWYgKGl0ZXJhdGlvblRleHQpIHtcblx0XHRcdGFsbENvbnRyb2xzW2ldID0gaXRlcmF0aW9uVGV4dFswXTtcblx0XHR9XG5cdFx0aSsrO1xuXHR9IHdoaWxlIChpdGVyYXRpb25UZXh0KTtcblx0cmV0dXJuIGFsbENvbnRyb2xzO1xufTtcblxuLypcblx0Tm90ZTpcblx0VGhpcyB0ZXN0IGlzIGFsc28gdGVzdGluZyBvdXIgY3VycmVudCBmcmFtZXdvcmsuIFdlIGhhdmUgbm90IHN0cmVhbWxpbmVkIGJlaGF2aW91ciB5ZXQuXG5cdFBsZWFzZSBkbyBub3QgcmVwbGljYXRlIHRlc3RpbmcgZnJhZ21lbnRzLCB3aGljaCBhcmUgbm90IGZ1bGx5IGF2YWlsYWJsZSBtYWNyb3MgYXMgb2Ygbm93LCBsaWtlIHRoaXMuXG5cdFByb2JhYmx5LCB3aWxsIGJlIGFkYXB0ZWQuXG4gKi9cblxuZGVzY3JpYmUoXCJUYWJsZSBBY3Rpb25zXCIsIGZ1bmN0aW9uKCkge1xuXHRpdChcblx0XHRcInRhYmxlIGFjdGlvbnMgdHlwZVwiLFxuXHRcdHtcblx0XHRcdFwicmVmZXJlbmNlc1wiOiBbeyBcInR5cGVcIjogXCJCQ1BcIiwgXCJJRFwiOiBcIjIxODAzNDExMzFcIiB9XVxuXHRcdH0sXG5cdFx0YXN5bmMgZnVuY3Rpb24oKSB7XG5cdFx0XHRjb25zdCBmblRhYmxlQWN0aW9ucyA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFwiYWN0aW9uc1wiOiBnZXRUYWJsZUFjdGlvbnNGb3JUZXN0KHtcblx0XHRcdFx0XHRcdGVudGl0eVNldDogXCJUZXN0RW50aXR5XCIsXG5cdFx0XHRcdFx0XHRjb252ZXJ0ZXJUeXBlOiBUZW1wbGF0ZVR5cGUuTGlzdFJlcG9ydFxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGFubm90YXRpb246IHtcblx0XHRcdFx0XHRcdHN0YW5kYXJkQWN0aW9uczoge1xuXHRcdFx0XHRcdFx0XHRpc1RlbXBsYXRlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0YWN0aW9uczoge1xuXHRcdFx0XHRcdFx0XHRcdFwiZGVsZXRlXCI6IHtcblx0XHRcdFx0XHRcdFx0XHRcdGlzVGVtcGxhdGVkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZW5hYmxlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU6IHRydWVcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9O1xuXG5cdFx0XHRjb25zdCBtQmluZGluZ0NvbnRleHRzID0ge1xuXHRcdFx0XHRcImVudGl0eVNldFwiOiBcIi9UZXN0RW50aXR5XCIsXG5cdFx0XHRcdFwidGFibGVEZWZpbml0aW9uXCI6IFwiL1wiXG5cdFx0XHR9O1xuXG5cdFx0XHRjb25zdCBtSW50ZXJuYWxNb2RlbHMgPSB7XG5cdFx0XHRcdFwidGhpc1wiOiBuZXcgSlNPTk1vZGVsKHtcblx0XHRcdFx0XHRcImlkXCI6IFwiSmVzdFNlcnZpY2U6OlRlc3RFbnRpdHktLWZlOjp0YWJsZTo6VGVzdEVudGl0eTo6TGluZUl0ZW1cIixcblx0XHRcdFx0XHRcImNvbGxlY3Rpb25cIjoge1xuXHRcdFx0XHRcdFx0Z2V0T2JqZWN0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIFwic2FwLmZlLnRlc3QuSmVzdFNlcnZpY2UuVGVzdEVudGl0eVwiO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdFwidGFibGVEZWZpbml0aW9uXCI6IHtcblx0XHRcdFx0XHRcImRhdGFcIjogZm5UYWJsZUFjdGlvbnMsXG5cdFx0XHRcdFx0XCJpc1RlbXBsYXRlTW9kZWxcIjogdHJ1ZVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0XHRjb25zdCB4bWxUYWJsZUFjdGlvbnMgPSBgPGNvcmU6RnJhZ21lbnQgZnJhZ21lbnROYW1lPVwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25zXCIgdHlwZT1cIlhNTFwiIHhtbG5zOmNvcmU9XCJzYXAudWkuY29yZVwiIC8+YDtcblx0XHRcdGNvbnN0IHRlbXBsYXRlZFRhYmxlQWN0aW9uc1hNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxUYWJsZUFjdGlvbnMsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywgbUludGVybmFsTW9kZWxzKTtcblxuXHRcdFx0Y29uc3QgYnV0dG9ucyA9IGdldFNpbmd1bGFyQ29udHJvbFR5cGUodGVtcGxhdGVkVGFibGVBY3Rpb25zWE1MLCBcIkJ1dHRvblwiKTtcblx0XHRcdGNvbnN0IG1lbnVCdXR0b24gPSBnZXRTaW5ndWxhckNvbnRyb2xUeXBlKHRlbXBsYXRlZFRhYmxlQWN0aW9uc1hNTCwgXCJNZW51QnV0dG9uXCIpO1xuXHRcdFx0Y29uc3QgcmVQcm9wZXJ0eVRvQmVDaGVja2VkID0gbmV3IFJlZ0V4cCgndHlwZT1cXFxcXCJUcmFuc3BhcmVudFxcXFxcIicpO1xuXG5cdFx0XHRleHBlY3QoYnV0dG9ucykubm90LnRvQmVGYWxzeSgpO1xuXHRcdFx0Y29uc3QgW2Fubm90YXRpb25CdXR0b24xLCBhbm5vdGF0aW9uQnV0dG9uMiwgYW5ub3RhdGlvbkJ1dHRvbjMsIGRlbGV0ZUJ1dHRvbl0gPSBidXR0b25zO1xuXHRcdFx0ZXhwZWN0KGFubm90YXRpb25CdXR0b24xKS50b01hdGNoKHJlUHJvcGVydHlUb0JlQ2hlY2tlZCk7XG5cdFx0XHRleHBlY3QoYW5ub3RhdGlvbkJ1dHRvbjIpLnRvTWF0Y2gocmVQcm9wZXJ0eVRvQmVDaGVja2VkKTtcblx0XHRcdGV4cGVjdChhbm5vdGF0aW9uQnV0dG9uMykudG9NYXRjaChyZVByb3BlcnR5VG9CZUNoZWNrZWQpO1xuXHRcdFx0ZXhwZWN0KGRlbGV0ZUJ1dHRvbikudG9NYXRjaChyZVByb3BlcnR5VG9CZUNoZWNrZWQpO1xuXHRcdFx0ZXhwZWN0KG1lbnVCdXR0b25bMF0pLnRvTWF0Y2gocmVQcm9wZXJ0eVRvQmVDaGVja2VkKTtcblx0XHR9XG5cdCk7XG59KTtcbiJdfQ==
166
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFjdGlvbnMuc3BlYy50cyJdLCJuYW1lcyI6WyJjb252ZXJ0ZWRUeXBlcyIsInNNZXRhZGF0YVVybCIsIm1ldGFNb2RlbCIsImJlZm9yZUFsbCIsImNvbXBpbGVDRFMiLCJwYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsImdldE1ldGFNb2RlbCIsImNvbnZlcnRUeXBlcyIsImdldFRhYmxlQWN0aW9uc0ZvclRlc3QiLCJtYW5pZmVzdFNldHRpbmdzIiwiY29udmVydGVyT3V0cHV0IiwiY29udmVydGVyQ29udGV4dEludGVybWVkaWF0ZSIsImdldENvbnZlcnRlckNvbnRleHRGb3JUZXN0IiwiY29udmVydGVyVHlwZSIsIlRlbXBsYXRlVHlwZSIsIkxpc3RSZXBvcnQiLCJlbnRpdHlTZXQiLCJjb250cm9sQ29uZmlndXJhdGlvbiIsImFjdGlvbnMiLCJNZW51QWN0aW9ucyIsInRleHQiLCJwb3NpdGlvbiIsInBsYWNlbWVudCIsIlBsYWNlbWVudCIsIkFmdGVyIiwibWVudSIsImdldFRhYmxlQWN0aW9ucyIsImdldEVudGl0eVR5cGUiLCJhbm5vdGF0aW9ucyIsIlVJIiwiTGluZUl0ZW0iLCJnZXRTaW5ndWxhckNvbnRyb2xUeXBlIiwieG1sVHJlZSIsInhtbENvbnRyb2xOYW1lIiwicmVDb250cm9sTWF0Y2hlciIsIlJlZ0V4cCIsImFsbENvbnRyb2xzIiwiaXRlcmF0aW9uVGV4dCIsImkiLCJleGVjIiwiZGVzY3JpYmUiLCJpdCIsImZuVGFibGVBY3Rpb25zIiwiYW5ub3RhdGlvbiIsInN0YW5kYXJkQWN0aW9ucyIsImlzVGVtcGxhdGVkIiwiZW5hYmxlZCIsInZpc2libGUiLCJtQmluZGluZ0NvbnRleHRzIiwibUludGVybmFsTW9kZWxzIiwiSlNPTk1vZGVsIiwiZ2V0T2JqZWN0IiwieG1sVGFibGVBY3Rpb25zIiwiZ2V0VGVtcGxhdGVkWE1MIiwidGVtcGxhdGVkVGFibGVBY3Rpb25zWE1MIiwiYnV0dG9ucyIsIm1lbnVCdXR0b24iLCJyZVByb3BlcnR5VG9CZUNoZWNrZWQiLCJleHBlY3QiLCJub3QiLCJ0b0JlRmFsc3kiLCJhbm5vdGF0aW9uQnV0dG9uMSIsImFubm90YXRpb25CdXR0b24yIiwiYW5ub3RhdGlvbkJ1dHRvbjMiLCJkZWxldGVCdXR0b24iLCJ0b01hdGNoIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVUEsTUFBSUEsY0FBSjtBQUNBLE1BQUlDLFlBQUo7QUFDQSxNQUFJQyxTQUFKO0FBRUFDLEVBQUFBLFNBQVM7QUFBQSxRQUFrQjtBQUMxQkYsTUFBQUEsWUFBWSxHQUFHRyxVQUFVLENBQUNDLElBQUksQ0FBQ0MsSUFBTCxDQUFVQyxTQUFWLEVBQXFCLG1CQUFyQixDQUFELENBQXpCO0FBRDBCLDZCQUVSQyxZQUFZLENBQUNQLFlBQUQsQ0FGSjtBQUUxQkMsUUFBQUEsU0FBUyxnQkFBVDtBQUNBRixRQUFBQSxjQUFjLEdBQUdTLFlBQVksQ0FBQ1AsU0FBRCxDQUE3QjtBQUgwQjtBQUkxQixLQUpRO0FBQUE7QUFBQTtBQUFBLElBQVQ7O0FBTUEsTUFBTVEsc0JBQXNCLEdBQUcsVUFDOUJDLGdCQUQ4QixFQUdaO0FBQUE7O0FBQUEsUUFEbEJDLGVBQ2tCLHVFQURpQlosY0FDakI7QUFDbEIsUUFBTWEsNEJBQTRCLEdBQUdDLDBCQUEwQixDQUFDRixlQUFELEVBQWtCO0FBQ2hGRyxNQUFBQSxhQUFhLEVBQUVDLFlBQVksQ0FBQ0MsVUFEb0Q7QUFFaEZDLE1BQUFBLFNBQVMsRUFBRSxZQUZxRTtBQUdoRkMsTUFBQUEsb0JBQW9CLEVBQUU7QUFDckIsZ0RBQXdDO0FBQ3ZDQyxVQUFBQSxPQUFPLEVBQUU7QUFDUkMsWUFBQUEsV0FBVyxFQUFFO0FBQ1pDLGNBQUFBLElBQUksRUFBRSxNQURNO0FBRVpDLGNBQUFBLFFBQVEsRUFBRTtBQUNUQyxnQkFBQUEsU0FBUyxFQUFFQyxTQUFTLENBQUNDO0FBRFosZUFGRTtBQUtaQyxjQUFBQSxJQUFJLEVBQUUsQ0FDTCx5REFESyxFQUVMLHlEQUZL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QSx3Q0FBZ0ZMLE9BQWhGO0FBQUEsY0FBT00saUJBQVA7QUFBQSxjQUEwQkMsaUJBQTFCO0FBQUEsY0FBNkNDLGlCQUE3QztBQUFBLGNBQWdFQyxZQUFoRTs7QUFDQU4sVUFBQUEsTUFBTSxDQUFDRyxpQkFBRCxDQUFOLENBQTBCSSxPQUExQixDQUFrQ1IscUJBQWxDO0FBQ0FDLFVBQUFBLE1BQU0sQ0FBQ0ksaUJBQUQsQ0FBTixDQUEwQkcsT0FBMUIsQ0FBa0NSLHFCQUFsQztBQUNBQyxVQUFBQSxNQUFNLENBQUNLLGlCQUFELENBQU4sQ0FBMEJFLE9BQTFCLENBQWtDUixxQkFBbEM7QUFDQUMsVUFBQUEsTUFBTSxDQUFDTSxZQUFELENBQU4sQ0FBcUJDLE9BQXJCLENBQTZCUixxQkFBN0I7QUFDQUMsVUFBQUEsTUFBTSxDQUFDRixVQUFVLENBQUMsQ0FBRCxDQUFYLENBQU4sQ0FBc0JTLE9BQXRCLENBQThCUixxQkFBOUI7QUF2RGdCO0FBd0RoQixPQTdEQTtBQUFBO0FBQUE7QUFBQSxNQUFGO0FBK0RBLEdBaEVPLENBQVIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBpbGVDRFMsIGdldENvbnZlcnRlckNvbnRleHRGb3JUZXN0LCBnZXRNZXRhTW9kZWwsIGdldFRlbXBsYXRlZFhNTCB9IGZyb20gXCJzYXAvZmUvdGVzdC9KZXN0VGVtcGxhdGluZ0hlbHBlclwiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGdldFRhYmxlQWN0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9UYWJsZVwiO1xuaW1wb3J0IHsgTGluZUl0ZW0gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IENvbnZlcnRlck91dHB1dCB9IGZyb20gXCJAc2FwLXV4L2Fubm90YXRpb24tY29udmVydGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0VHlwZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IExpc3RSZXBvcnRNYW5pZmVzdFNldHRpbmdzLCBUZW1wbGF0ZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBCYXNlQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHsgUGxhY2VtZW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcblxubGV0IGNvbnZlcnRlZFR5cGVzOiBDb252ZXJ0ZXJPdXRwdXQ7XG5sZXQgc01ldGFkYXRhVXJsOiBzdHJpbmc7XG5sZXQgbWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbDtcblxuYmVmb3JlQWxsKGFzeW5jIGZ1bmN0aW9uKCkge1xuXHRzTWV0YWRhdGFVcmwgPSBjb21waWxlQ0RTKHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vZGF0YS9UYWJsZS5jZHNcIikpO1xuXHRtZXRhTW9kZWwgPSBhd2FpdCBnZXRNZXRhTW9kZWwoc01ldGFkYXRhVXJsKTtcblx0Y29udmVydGVkVHlwZXMgPSBjb252ZXJ0VHlwZXMobWV0YU1vZGVsKTtcbn0pO1xuXG5jb25zdCBnZXRUYWJsZUFjdGlvbnNGb3JUZXN0ID0gKFxuXHRtYW5pZmVzdFNldHRpbmdzOiBMaXN0UmVwb3J0TWFuaWZlc3RTZXR0aW5ncyxcblx0Y29udmVydGVyT3V0cHV0OiBDb252ZXJ0ZXJPdXRwdXQgPSBjb252ZXJ0ZWRUeXBlc1xuKTogQmFzZUFjdGlvbltdID0+IHtcblx0Y29uc3QgY29udmVydGVyQ29udGV4dEludGVybWVkaWF0ZSA9IGdldENvbnZlcnRlckNvbnRleHRGb3JUZXN0KGNvbnZlcnRlck91dHB1dCwge1xuXHRcdGNvbnZlcnRlclR5cGU6IFRlbXBsYXRlVHlwZS5MaXN0UmVwb3J0LFxuXHRcdGVudGl0eVNldDogXCJUZXN0RW50aXR5XCIsXG5cdFx0Y29udHJvbENvbmZpZ3VyYXRpb246IHtcblx0XHRcdFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCI6IHtcblx0XHRcdFx0YWN0aW9uczoge1xuXHRcdFx0XHRcdE1lbnVBY3Rpb25zOiB7XG5cdFx0XHRcdFx0XHR0ZXh0OiBcIk1lbnVcIixcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdFx0XHRcdHBsYWNlbWVudDogUGxhY2VtZW50LkFmdGVyXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bWVudTogW1xuXHRcdFx0XHRcdFx0XHRcIkRhdGFGaWVsZEZvckFjdGlvbjo6c2FwLmZlLnRlc3QuSmVzdFNlcnZpY2UuTWVudUFjdGlvbjFcIixcblx0XHRcdFx0XHRcdFx0XCJEYXRhRmllbGRGb3JBY3Rpb246OnNhcC5mZS50ZXN0Lkplc3RTZXJ2aWNlLk1lbnVBY3Rpb24yXCJcblx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gZ2V0VGFibGVBY3Rpb25zKFxuXHRcdGNvbnZlcnRlckNvbnRleHRJbnRlcm1lZGlhdGUuZ2V0RW50aXR5VHlwZSgpLmFubm90YXRpb25zLlVJPy5MaW5lSXRlbSBhcyBMaW5lSXRlbSxcblx0XHRcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiLFxuXHRcdGNvbnZlcnRlckNvbnRleHRJbnRlcm1lZGlhdGVcblx0KTtcbn07XG5cbmNvbnN0IGdldFNpbmd1bGFyQ29udHJvbFR5cGUgPSBmdW5jdGlvbih4bWxUcmVlOiBzdHJpbmcsIHhtbENvbnRyb2xOYW1lOiBzdHJpbmcpIHtcblx0Y29uc3QgcmVDb250cm9sTWF0Y2hlciA9IG5ldyBSZWdFeHAoXCI8W1wiICsgeG1sQ29udHJvbE5hbWUgKyBcIl0rcypbXj5dKj5cIiwgXCJnXCIpLFxuXHRcdGFsbENvbnRyb2xzID0gW107XG5cdGxldCBpdGVyYXRpb25UZXh0LFxuXHRcdGkgPSAwO1xuXHRkbyB7XG5cdFx0aXRlcmF0aW9uVGV4dCA9IHJlQ29udHJvbE1hdGNoZXIuZXhlYyh4bWxUcmVlKTtcblx0XHRpZiAoaXRlcmF0aW9uVGV4dCkge1xuXHRcdFx0YWxsQ29udHJvbHNbaV0gPSBpdGVyYXRpb25UZXh0WzBdO1xuXHRcdH1cblx0XHRpKys7XG5cdH0gd2hpbGUgKGl0ZXJhdGlvblRleHQpO1xuXHRyZXR1cm4gYWxsQ29udHJvbHM7XG59O1xuXG4vKlxuXHROb3RlOlxuXHRUaGlzIHRlc3QgaXMgYWxzbyB0ZXN0aW5nIG91ciBjdXJyZW50IGZyYW1ld29yay4gV2UgaGF2ZSBub3Qgc3RyZWFtbGluZWQgYmVoYXZpb3VyIHlldC5cblx0UGxlYXNlIGRvIG5vdCByZXBsaWNhdGUgdGVzdGluZyBmcmFnbWVudHMsIHdoaWNoIGFyZSBub3QgZnVsbHkgYXZhaWxhYmxlIG1hY3JvcyBhcyBvZiBub3csIGxpa2UgdGhpcy5cblx0UHJvYmFibHksIHdpbGwgYmUgYWRhcHRlZC5cbiAqL1xuXG5kZXNjcmliZShcIlRhYmxlIEFjdGlvbnNcIiwgZnVuY3Rpb24oKSB7XG5cdGl0KFxuXHRcdFwidGFibGUgYWN0aW9ucyB0eXBlXCIsXG5cdFx0e1xuXHRcdFx0XCJyZWZlcmVuY2VzXCI6IFt7IFwidHlwZVwiOiBcIkJDUFwiLCBcIklEXCI6IFwiMjE4MDM0MTEzMVwiIH1dXG5cdFx0fSxcblx0XHRhc3luYyBmdW5jdGlvbigpIHtcblx0XHRcdGNvbnN0IGZuVGFibGVBY3Rpb25zID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XCJhY3Rpb25zXCI6IGdldFRhYmxlQWN0aW9uc0ZvclRlc3Qoe1xuXHRcdFx0XHRcdFx0ZW50aXR5U2V0OiBcIlRlc3RFbnRpdHlcIixcblx0XHRcdFx0XHRcdGNvbnZlcnRlclR5cGU6IFRlbXBsYXRlVHlwZS5MaXN0UmVwb3J0XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0YW5ub3RhdGlvbjoge1xuXHRcdFx0XHRcdFx0c3RhbmRhcmRBY3Rpb25zOiB7XG5cdFx0XHRcdFx0XHRcdGlzVGVtcGxhdGVkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRhY3Rpb25zOiB7XG5cdFx0XHRcdFx0XHRcdFx0XCJkZWxldGVcIjoge1xuXHRcdFx0XHRcdFx0XHRcdFx0aXNUZW1wbGF0ZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRlbmFibGVkOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZTogdHJ1ZVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH07XG5cblx0XHRcdGNvbnN0IG1CaW5kaW5nQ29udGV4dHMgPSB7XG5cdFx0XHRcdFwiZW50aXR5U2V0XCI6IFwiL1Rlc3RFbnRpdHlcIixcblx0XHRcdFx0XCJ0YWJsZURlZmluaXRpb25cIjogXCIvXCJcblx0XHRcdH07XG5cblx0XHRcdGNvbnN0IG1JbnRlcm5hbE1vZGVscyA9IHtcblx0XHRcdFx0XCJ0aGlzXCI6IG5ldyBKU09OTW9kZWwoe1xuXHRcdFx0XHRcdFwiaWRcIjogXCJKZXN0U2VydmljZTo6VGVzdEVudGl0eS0tZmU6OnRhYmxlOjpUZXN0RW50aXR5OjpMaW5lSXRlbVwiLFxuXHRcdFx0XHRcdFwiY29sbGVjdGlvblwiOiB7XG5cdFx0XHRcdFx0XHRnZXRPYmplY3Q6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gXCJzYXAuZmUudGVzdC5KZXN0U2VydmljZS5UZXN0RW50aXR5XCI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0XCJ0YWJsZURlZmluaXRpb25cIjoge1xuXHRcdFx0XHRcdFwiZGF0YVwiOiBmblRhYmxlQWN0aW9ucyxcblx0XHRcdFx0XHRcImlzVGVtcGxhdGVNb2RlbFwiOiB0cnVlXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRcdGNvbnN0IHhtbFRhYmxlQWN0aW9ucyA9IGA8Y29yZTpGcmFnbWVudCBmcmFnbWVudE5hbWU9XCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbnNcIiB0eXBlPVwiWE1MXCIgeG1sbnM6Y29yZT1cInNhcC51aS5jb3JlXCIgLz5gO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVkVGFibGVBY3Rpb25zWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbFRhYmxlQWN0aW9ucywgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCBtSW50ZXJuYWxNb2RlbHMpO1xuXG5cdFx0XHRjb25zdCBidXR0b25zID0gZ2V0U2luZ3VsYXJDb250cm9sVHlwZSh0ZW1wbGF0ZWRUYWJsZUFjdGlvbnNYTUwsIFwiQnV0dG9uXCIpO1xuXHRcdFx0Y29uc3QgbWVudUJ1dHRvbiA9IGdldFNpbmd1bGFyQ29udHJvbFR5cGUodGVtcGxhdGVkVGFibGVBY3Rpb25zWE1MLCBcIk1lbnVCdXR0b25cIik7XG5cdFx0XHRjb25zdCByZVByb3BlcnR5VG9CZUNoZWNrZWQgPSBuZXcgUmVnRXhwKCd0eXBlPVxcXFxcIlRyYW5zcGFyZW50XFxcXFwiJyk7XG5cblx0XHRcdGV4cGVjdChidXR0b25zKS5ub3QudG9CZUZhbHN5KCk7XG5cdFx0XHRjb25zdCBbYW5ub3RhdGlvbkJ1dHRvbjEsIGFubm90YXRpb25CdXR0b24yLCBhbm5vdGF0aW9uQnV0dG9uMywgZGVsZXRlQnV0dG9uXSA9IGJ1dHRvbnM7XG5cdFx0XHRleHBlY3QoYW5ub3RhdGlvbkJ1dHRvbjEpLnRvTWF0Y2gocmVQcm9wZXJ0eVRvQmVDaGVja2VkKTtcblx0XHRcdGV4cGVjdChhbm5vdGF0aW9uQnV0dG9uMikudG9NYXRjaChyZVByb3BlcnR5VG9CZUNoZWNrZWQpO1xuXHRcdFx0ZXhwZWN0KGFubm90YXRpb25CdXR0b24zKS50b01hdGNoKHJlUHJvcGVydHlUb0JlQ2hlY2tlZCk7XG5cdFx0XHRleHBlY3QoZGVsZXRlQnV0dG9uKS50b01hdGNoKHJlUHJvcGVydHlUb0JlQ2hlY2tlZCk7XG5cdFx0XHRleHBlY3QobWVudUJ1dHRvblswXSkudG9NYXRjaChyZVByb3BlcnR5VG9CZUNoZWNrZWQpO1xuXHRcdH1cblx0KTtcbn0pO1xuIl19
@@ -6,8 +6,8 @@ import { ConverterOutput } from "@sap-ux/annotation-converter";
6
6
  import { convertTypes } from "sap/fe/core/converters/MetaModelConverter";
7
7
  import { ListReportManifestSettings, TemplateType } from "sap/fe/core/converters/ManifestSettings";
8
8
  import { BaseAction } from "sap/fe/core/converters/controls/Common/Action";
9
- import { ODataMetaModel } from "sap/ui/model/odata/v4";
10
- import { JSONModel } from "sap/ui/model/json";
9
+ import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
10
+ import JSONModel from "sap/ui/model/json/JSONModel";
11
11
  import { Placement } from "sap/fe/core/converters/helpers/ConfigurableObject";
12
12
 
13
13
  let convertedTypes: ConverterOutput;