@sapui5/sap.fe.core 1.124.2 → 1.126.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 (300) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +5 -1
  3. package/src/sap/fe/core/ActionRuntime.js +2 -2
  4. package/src/sap/fe/core/ActionRuntime.ts +4 -4
  5. package/src/sap/fe/core/AppComponent.js +2 -2
  6. package/src/sap/fe/core/AppComponent.ts +1 -1
  7. package/src/sap/fe/core/AppStateHandler.js +2 -2
  8. package/src/sap/fe/core/AppStateHandler.ts +1 -1
  9. package/src/sap/fe/core/BaseController.js +2 -2
  10. package/src/sap/fe/core/BaseController.ts +1 -1
  11. package/src/sap/fe/core/CommonUtils.js +3 -3
  12. package/src/sap/fe/core/CommonUtils.ts +12 -15
  13. package/src/sap/fe/core/ExtensionAPI.js +2 -2
  14. package/src/sap/fe/core/ExtensionAPI.ts +4 -3
  15. package/src/sap/fe/core/PageController.js +2 -2
  16. package/src/sap/fe/core/PageController.ts +1 -1
  17. package/src/sap/fe/core/ResourceModel.js +2 -2
  18. package/src/sap/fe/core/ResourceModel.ts +1 -1
  19. package/src/sap/fe/core/ReuseComponent.js +172 -0
  20. package/src/sap/fe/core/ReuseComponent.ts +165 -0
  21. package/src/sap/fe/core/TemplateComponent.js +2 -2
  22. package/src/sap/fe/core/TemplateComponent.ts +5 -1
  23. package/src/sap/fe/core/TemplateModel.js +2 -2
  24. package/src/sap/fe/core/TemplateModel.ts +1 -1
  25. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +92 -6
  26. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +90 -10
  27. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +1 -1
  28. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +1 -1
  29. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +30 -3
  30. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +28 -4
  31. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +10 -16
  32. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +19 -16
  33. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.js +3 -3
  34. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.ts +5 -5
  35. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +2 -2
  36. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +1 -1
  37. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +17 -5
  38. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +14 -6
  39. package/src/sap/fe/core/controllerextensions/ContextSharing.js +2 -2
  40. package/src/sap/fe/core/controllerextensions/ContextSharing.ts +1 -1
  41. package/src/sap/fe/core/controllerextensions/EditFlow.js +57 -43
  42. package/src/sap/fe/core/controllerextensions/EditFlow.ts +61 -46
  43. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +2 -2
  44. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +1 -1
  45. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +8 -11
  46. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +8 -16
  47. package/src/sap/fe/core/controllerextensions/InternalRouting.js +10 -7
  48. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +5 -5
  49. package/src/sap/fe/core/controllerextensions/KPIManagement.js +22 -18
  50. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +28 -23
  51. package/src/sap/fe/core/controllerextensions/MessageHandler.js +4 -4
  52. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +4 -1
  53. package/src/sap/fe/core/controllerextensions/PageReady.js +21 -15
  54. package/src/sap/fe/core/controllerextensions/PageReady.ts +29 -20
  55. package/src/sap/fe/core/controllerextensions/Paginator.js +2 -2
  56. package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -1
  57. package/src/sap/fe/core/controllerextensions/Placeholder.js +12 -6
  58. package/src/sap/fe/core/controllerextensions/Placeholder.ts +15 -1
  59. package/src/sap/fe/core/controllerextensions/Recommendations.js +26 -8
  60. package/src/sap/fe/core/controllerextensions/Recommendations.ts +29 -3
  61. package/src/sap/fe/core/controllerextensions/Routing.js +5 -7
  62. package/src/sap/fe/core/controllerextensions/Routing.ts +4 -4
  63. package/src/sap/fe/core/controllerextensions/Share.js +4 -4
  64. package/src/sap/fe/core/controllerextensions/Share.ts +10 -6
  65. package/src/sap/fe/core/controllerextensions/SideEffects.js +20 -5
  66. package/src/sap/fe/core/controllerextensions/SideEffects.ts +22 -2
  67. package/src/sap/fe/core/controllerextensions/Telemetry.js +2 -2
  68. package/src/sap/fe/core/controllerextensions/Telemetry.ts +1 -1
  69. package/src/sap/fe/core/controllerextensions/ViewState.js +79 -81
  70. package/src/sap/fe/core/controllerextensions/ViewState.ts +117 -105
  71. package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.js +3 -3
  72. package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.ts +1 -1
  73. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
  74. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +2 -2
  75. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +17 -8
  76. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +8 -2
  77. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +1 -1
  78. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +10 -9
  79. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +15 -10
  80. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +2 -2
  81. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +1 -1
  82. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +130 -158
  83. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +240 -275
  84. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +2 -2
  85. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +1 -1
  86. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +46 -28
  87. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +60 -32
  88. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +2 -2
  89. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +1 -1
  90. package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.js +2 -2
  91. package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.ts +27 -3
  92. package/src/sap/fe/core/controls/CommandExecution.js +2 -2
  93. package/src/sap/fe/core/controls/CommandExecution.ts +2 -2
  94. package/src/sap/fe/core/controls/ComponentLoader.js +3 -3
  95. package/src/sap/fe/core/controls/ComponentLoader.ts +2 -2
  96. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +3 -3
  97. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +2 -2
  98. package/src/sap/fe/core/controls/EventDelegateHook.js +2 -2
  99. package/src/sap/fe/core/controls/EventDelegateHook.ts +2 -2
  100. package/src/sap/fe/core/controls/FormElementWrapper.js +51 -6
  101. package/src/sap/fe/core/controls/FormElementWrapper.ts +43 -2
  102. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +3 -3
  103. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +3 -3
  104. package/src/sap/fe/core/converters/ConverterContext.js +4 -2
  105. package/src/sap/fe/core/converters/ConverterContext.ts +5 -2
  106. package/src/sap/fe/core/converters/ManifestSettings.js +8 -2
  107. package/src/sap/fe/core/converters/ManifestSettings.ts +25 -3
  108. package/src/sap/fe/core/converters/ManifestWrapper.js +12 -3
  109. package/src/sap/fe/core/converters/ManifestWrapper.ts +11 -1
  110. package/src/sap/fe/core/converters/MetaModelConverter.js +7 -6
  111. package/src/sap/fe/core/converters/MetaModelConverter.ts +6 -2
  112. package/src/sap/fe/core/converters/annotations/DataField.js +56 -16
  113. package/src/sap/fe/core/converters/annotations/DataField.ts +74 -25
  114. package/src/sap/fe/core/converters/common/AnnotationConverter.js +19 -18
  115. package/src/sap/fe/core/converters/controls/Common/Action.js +5 -5
  116. package/src/sap/fe/core/converters/controls/Common/Action.ts +14 -14
  117. package/src/sap/fe/core/converters/controls/Common/Chart.js +40 -7
  118. package/src/sap/fe/core/converters/controls/Common/Chart.ts +56 -20
  119. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +8 -11
  120. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +23 -27
  121. package/src/sap/fe/core/converters/controls/Common/Form.js +10 -3
  122. package/src/sap/fe/core/converters/controls/Common/Form.ts +13 -4
  123. package/src/sap/fe/core/converters/controls/Common/KPI.js +3 -2
  124. package/src/sap/fe/core/converters/controls/Common/KPI.ts +6 -2
  125. package/src/sap/fe/core/converters/controls/Common/Table.js +137 -48
  126. package/src/sap/fe/core/converters/controls/Common/Table.ts +174 -52
  127. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +73 -21
  128. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +91 -20
  129. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +4 -4
  130. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +2 -2
  131. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +2 -2
  132. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +2 -2
  133. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +3 -3
  134. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +1 -1
  135. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +17 -16
  136. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +18 -17
  137. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +2 -2
  138. package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +1 -1
  139. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +9 -9
  140. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +12 -12
  141. package/src/sap/fe/core/converters/templates/ListReportConverter.js +13 -7
  142. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +12 -5
  143. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +9 -73
  144. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +4 -74
  145. package/src/sap/fe/core/designtime/AppComponent.designtime.js +5 -10
  146. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +3 -12
  147. package/src/sap/fe/core/formatters/CriticalityFormatter.js +4 -7
  148. package/src/sap/fe/core/formatters/CriticalityFormatter.ts +3 -3
  149. package/src/sap/fe/core/formatters/FiscalFormat.js +5 -3
  150. package/src/sap/fe/core/formatters/FiscalFormat.ts +4 -2
  151. package/src/sap/fe/core/formatters/StandardFormatter.js +2 -2
  152. package/src/sap/fe/core/formatters/StandardFormatter.ts +3 -3
  153. package/src/sap/fe/core/fpm/Component.js +3 -3
  154. package/src/sap/fe/core/fpm/Component.ts +3 -3
  155. package/src/sap/fe/core/fpm/manifest.json +1 -1
  156. package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.js +2 -2
  157. package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.ts +1 -1
  158. package/src/sap/fe/core/helpers/BindingHelper.js +2 -2
  159. package/src/sap/fe/core/helpers/BindingHelper.ts +2 -2
  160. package/src/sap/fe/core/helpers/BindingToolkitEvaluator.js +2 -2
  161. package/src/sap/fe/core/helpers/BindingToolkitEvaluator.ts +2 -2
  162. package/src/sap/fe/core/helpers/DeleteHelper.js +7 -4
  163. package/src/sap/fe/core/helpers/DeleteHelper.ts +9 -3
  164. package/src/sap/fe/core/helpers/MetaModelFunction.js +5 -5
  165. package/src/sap/fe/core/helpers/MetaModelFunction.ts +2 -2
  166. package/src/sap/fe/core/helpers/MetaPath.js +9 -3
  167. package/src/sap/fe/core/helpers/MetaPath.ts +8 -2
  168. package/src/sap/fe/core/helpers/ModelHelper.js +149 -3
  169. package/src/sap/fe/core/helpers/ModelHelper.ts +202 -6
  170. package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +3 -3
  171. package/src/sap/fe/core/helpers/StandardRecommendationHelper.ts +2 -2
  172. package/src/sap/fe/core/helpers/TitleHelper.js +4 -4
  173. package/src/sap/fe/core/helpers/TitleHelper.ts +4 -4
  174. package/src/sap/fe/core/library.js +4 -4
  175. package/src/sap/fe/core/library.ts +2 -1
  176. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +11 -3
  177. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +10 -2
  178. package/src/sap/fe/core/messagebundle.properties +8 -57
  179. package/src/sap/fe/core/messagebundle_ar.properties +2 -0
  180. package/src/sap/fe/core/messagebundle_bg.properties +2 -0
  181. package/src/sap/fe/core/messagebundle_ca.properties +2 -0
  182. package/src/sap/fe/core/messagebundle_cnr.properties +2 -0
  183. package/src/sap/fe/core/messagebundle_cs.properties +2 -0
  184. package/src/sap/fe/core/messagebundle_cy.properties +4 -2
  185. package/src/sap/fe/core/messagebundle_da.properties +2 -0
  186. package/src/sap/fe/core/messagebundle_de.properties +2 -0
  187. package/src/sap/fe/core/messagebundle_el.properties +2 -0
  188. package/src/sap/fe/core/messagebundle_en.properties +6 -57
  189. package/src/sap/fe/core/messagebundle_en_GB.properties +2 -0
  190. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +3 -36
  191. package/src/sap/fe/core/messagebundle_es.properties +2 -0
  192. package/src/sap/fe/core/messagebundle_es_MX.properties +2 -0
  193. package/src/sap/fe/core/messagebundle_et.properties +2 -0
  194. package/src/sap/fe/core/messagebundle_fi.properties +2 -0
  195. package/src/sap/fe/core/messagebundle_fr.properties +2 -0
  196. package/src/sap/fe/core/messagebundle_fr_CA.properties +3 -1
  197. package/src/sap/fe/core/messagebundle_hi.properties +2 -0
  198. package/src/sap/fe/core/messagebundle_hr.properties +2 -0
  199. package/src/sap/fe/core/messagebundle_hu.properties +3 -1
  200. package/src/sap/fe/core/messagebundle_id.properties +2 -0
  201. package/src/sap/fe/core/messagebundle_it.properties +2 -0
  202. package/src/sap/fe/core/messagebundle_iw.properties +3 -1
  203. package/src/sap/fe/core/messagebundle_ja.properties +2 -0
  204. package/src/sap/fe/core/messagebundle_kk.properties +2 -0
  205. package/src/sap/fe/core/messagebundle_ko.properties +2 -0
  206. package/src/sap/fe/core/messagebundle_lt.properties +2 -0
  207. package/src/sap/fe/core/messagebundle_lv.properties +2 -0
  208. package/src/sap/fe/core/messagebundle_mk.properties +2 -0
  209. package/src/sap/fe/core/messagebundle_ms.properties +2 -0
  210. package/src/sap/fe/core/messagebundle_nl.properties +2 -0
  211. package/src/sap/fe/core/messagebundle_no.properties +2 -0
  212. package/src/sap/fe/core/messagebundle_pl.properties +2 -0
  213. package/src/sap/fe/core/messagebundle_pt.properties +2 -0
  214. package/src/sap/fe/core/messagebundle_pt_PT.properties +2 -0
  215. package/src/sap/fe/core/messagebundle_ro.properties +2 -0
  216. package/src/sap/fe/core/messagebundle_ru.properties +2 -0
  217. package/src/sap/fe/core/messagebundle_sh.properties +64 -62
  218. package/src/sap/fe/core/messagebundle_sk.properties +2 -0
  219. package/src/sap/fe/core/messagebundle_sl.properties +2 -0
  220. package/src/sap/fe/core/messagebundle_sr.properties +2 -0
  221. package/src/sap/fe/core/messagebundle_sv.properties +2 -0
  222. package/src/sap/fe/core/messagebundle_th.properties +2 -0
  223. package/src/sap/fe/core/messagebundle_tr.properties +2 -0
  224. package/src/sap/fe/core/messagebundle_uk.properties +3 -1
  225. package/src/sap/fe/core/messagebundle_vi.properties +2 -0
  226. package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -0
  227. package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -0
  228. package/src/sap/fe/core/operationsHelper.js +3 -3
  229. package/src/sap/fe/core/operationsHelper.ts +2 -2
  230. package/src/sap/fe/core/rootView/Fcl.controller.js +3 -3
  231. package/src/sap/fe/core/rootView/Fcl.controller.ts +2 -2
  232. package/src/sap/fe/core/rootView/NavContainer.controller.js +2 -2
  233. package/src/sap/fe/core/rootView/NavContainer.controller.ts +1 -1
  234. package/src/sap/fe/core/rootView/RootViewBaseController.js +114 -92
  235. package/src/sap/fe/core/rootView/RootViewBaseController.ts +120 -106
  236. package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.js +2 -2
  237. package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.ts +1 -1
  238. package/src/sap/fe/core/services/NavigationServiceFactory.js +6 -4
  239. package/src/sap/fe/core/services/NavigationServiceFactory.ts +4 -3
  240. package/src/sap/fe/core/services/RoutingServiceFactory.js +2 -2
  241. package/src/sap/fe/core/services/RoutingServiceFactory.ts +1 -1
  242. package/src/sap/fe/core/services/ShellServicesFactory.js +1 -1
  243. package/src/sap/fe/core/services/ShellServicesFactory.ts +12 -2
  244. package/src/sap/fe/core/services/TelemetryServiceFactory.js +8 -2
  245. package/src/sap/fe/core/services/TelemetryServiceFactory.ts +7 -1
  246. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +16 -9
  247. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +22 -11
  248. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +2 -2
  249. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.ts +1 -1
  250. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -2
  251. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
  252. package/src/sap/fe/core/templating/ActionHelper.js +2 -2
  253. package/src/sap/fe/core/templating/ActionHelper.ts +2 -2
  254. package/src/sap/fe/core/templating/CommonFormatters.js +2 -2
  255. package/src/sap/fe/core/templating/CommonFormatters.ts +3 -3
  256. package/src/sap/fe/core/templating/CriticalityFormatters.js +2 -2
  257. package/src/sap/fe/core/templating/CriticalityFormatters.ts +2 -2
  258. package/src/sap/fe/core/templating/DataFieldFormatters.js +4 -4
  259. package/src/sap/fe/core/templating/DataFieldFormatters.ts +2 -2
  260. package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -2
  261. package/src/sap/fe/core/templating/DataModelPathHelper.ts +2 -2
  262. package/src/sap/fe/core/templating/EntityTypeHelper.js +2 -2
  263. package/src/sap/fe/core/templating/EntityTypeHelper.ts +2 -2
  264. package/src/sap/fe/core/templating/FieldControlHelper.js +2 -2
  265. package/src/sap/fe/core/templating/FieldControlHelper.ts +2 -2
  266. package/src/sap/fe/core/templating/SemanticObjectHelper.js +2 -2
  267. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +2 -2
  268. package/src/sap/fe/core/templating/UIFormatters.js +7 -7
  269. package/src/sap/fe/core/templating/UIFormatters.ts +6 -6
  270. package/src/sap/fe/core/type/DateTimeWithTimezone.js +2 -2
  271. package/src/sap/fe/core/type/DateTimeWithTimezone.ts +1 -1
  272. package/src/sap/fe/core/type/Email.js +2 -2
  273. package/src/sap/fe/core/type/Email.ts +1 -1
  274. package/src/sap/fe/core/type/FiscalDate.js +2 -2
  275. package/src/sap/fe/core/type/FiscalDate.ts +1 -1
  276. package/src/sap/fe/core/type/InputMask.js +124 -0
  277. package/src/sap/fe/core/type/InputMask.ts +131 -0
  278. package/ui5.yaml +19 -0
  279. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js +0 -81
  280. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.ts +0 -117
  281. package/src/sap/fe/core/helpers/AnnotationEnum.js +0 -33
  282. package/src/sap/fe/core/helpers/AnnotationEnum.ts +0 -21
  283. package/src/sap/fe/core/helpers/BindingToolkit.js +0 -1813
  284. package/src/sap/fe/core/helpers/BindingToolkit.ts +0 -2450
  285. package/src/sap/fe/core/helpers/ClassSupport.js +0 -584
  286. package/src/sap/fe/core/helpers/ClassSupport.ts +0 -697
  287. package/src/sap/fe/core/jsx-runtime/Fragment.js +0 -14
  288. package/src/sap/fe/core/jsx-runtime/Fragment.ts +0 -3
  289. package/src/sap/fe/core/jsx-runtime/ViewLoader.js +0 -93
  290. package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +0 -86
  291. package/src/sap/fe/core/jsx-runtime/jsx-control.js +0 -177
  292. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +0 -197
  293. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +0 -237
  294. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +0 -246
  295. package/src/sap/fe/core/jsx-runtime/jsx.js +0 -47
  296. package/src/sap/fe/core/jsx-runtime/jsx.ts +0 -71
  297. package/src/sap/fe/core/jsx-runtime/jsxs.js +0 -10
  298. package/src/sap/fe/core/jsx-runtime/jsxs.ts +0 -3
  299. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +0 -172
  300. package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +0 -194
@@ -130,6 +130,7 @@ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/core/conve
130
130
  }
131
131
  } else {
132
132
  // Criticality is an enum Value --> get the corresponding static value
133
+ // We ignore all the other type of dynamic expressions for now
133
134
  kpiDef.datapoint.criticalityValue = getMessageTypeFromCriticalityType(datapointAnnotation.Criticality);
134
135
  }
135
136
  } else if (datapointAnnotation.CriticalityCalculation) {
@@ -323,7 +324,7 @@ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/core/conve
323
324
  }
324
325
  const kpiDef = {
325
326
  type: "Analytical",
326
- id: getKPIID(kpiName),
327
+ id: "kpiTag-" + getKPIID(kpiName),
327
328
  entitySet: kpiConfig.entitySet,
328
329
  datapoint: {
329
330
  propertyPath: datapointAnnotation.Value.path,
@@ -388,4 +389,4 @@ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/core/conve
388
389
  _exports.getKPIDefinitions = getKPIDefinitions;
389
390
  return _exports;
390
391
  }, false);
391
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZXZpYXRpb25JbmRpY2F0b3JGcm9tVHJlbmRUeXBlIiwiS1BJQ2hhcnRUeXBlRnJvbVVJIiwiY29udmVydEtQSUNoYXJ0IiwiY2hhcnRBbm5vdGF0aW9uIiwicHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24iLCJNZWFzdXJlcyIsInVuZGVmaW5lZCIsImNoYXJEaW1lbnNpb25zIiwiRGltZW5zaW9ucyIsIm1hcCIsInByb3BlcnR5UGF0aCIsImRpbUF0dHJpYnV0ZSIsIkRpbWVuc2lvbkF0dHJpYnV0ZXMiLCJmaW5kIiwiYXR0cmlidXRlIiwiRGltZW5zaW9uIiwidmFsdWUiLCJuYW1lIiwibGFiZWwiLCIkdGFyZ2V0IiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJMYWJlbCIsInRvU3RyaW5nIiwicm9sZSIsIlJvbGUiLCJyZXBsYWNlIiwiY2hhcnRNZWFzdXJlcyIsIm1lYXN1cmVBdHRyaWJ1dGUiLCJNZWFzdXJlQXR0cmlidXRlcyIsIk1lYXN1cmUiLCJjaGFydFR5cGUiLCJDaGFydFR5cGUiLCJkaW1lbnNpb25zIiwibWVhc3VyZXMiLCJzb3J0T3JkZXIiLCJTb3J0T3JkZXIiLCJQcm9wZXJ0eSIsImRlc2NlbmRpbmciLCJEZXNjZW5kaW5nIiwibWF4SXRlbXMiLCJNYXhJdGVtcyIsInZhbHVlT2YiLCJ1cGRhdGVDdXJyZW5jeSIsImRhdGFwb2ludEFubm90YXRpb24iLCJrcGlEZWYiLCJ0YXJnZXRWYWx1ZVByb3BlcnR5IiwiVmFsdWUiLCJJU09DdXJyZW5jeSIsImN1cnJlbmN5IiwiaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24iLCJkYXRhcG9pbnQiLCJ1bml0IiwiaXNDdXJyZW5jeSIsImlzUGF0aCIsIlVuaXQiLCJ1cGRhdGVDcml0aWNhbGl0eSIsImFnZ3JlZ2F0aW9uSGVscGVyIiwiQ3JpdGljYWxpdHkiLCJjcml0aWNhbGl0eVByb3BlcnR5IiwiaXNQcm9wZXJ0eUFnZ3JlZ2F0YWJsZSIsImNyaXRpY2FsaXR5UGF0aCIsInBhdGgiLCJjcml0aWNhbGl0eVZhbHVlIiwiTWVzc2FnZVR5cGUiLCJOb25lIiwiZ2V0TWVzc2FnZVR5cGVGcm9tQ3JpdGljYWxpdHlUeXBlIiwiQ3JpdGljYWxpdHlDYWxjdWxhdGlvbiIsImNyaXRpY2FsaXR5Q2FsY3VsYXRpb25Nb2RlIiwiSW1wcm92ZW1lbnREaXJlY3Rpb24iLCJjcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcyIsInB1c2giLCJEZXZpYXRpb25SYW5nZUxvd1ZhbHVlIiwiVG9sZXJhbmNlUmFuZ2VMb3dWYWx1ZSIsIkFjY2VwdGFuY2VSYW5nZUxvd1ZhbHVlIiwiQWNjZXB0YW5jZVJhbmdlSGlnaFZhbHVlIiwiVG9sZXJhbmNlUmFuZ2VIaWdoVmFsdWUiLCJEZXZpYXRpb25SYW5nZUhpZ2hWYWx1ZSIsInVwZGF0ZVRyZW5kIiwiVHJlbmQiLCJ0cmVuZFByb3BlcnR5IiwidHJlbmRQYXRoIiwidHJlbmRWYWx1ZSIsIlRyZW5kQ2FsY3VsYXRpb24iLCJ0cmVuZENhbGN1bGF0aW9uSXNSZWxhdGl2ZSIsIklzUmVsYXRpdmVEaWZmZXJlbmNlIiwiUmVmZXJlbmNlVmFsdWUiLCJyZWZlcmVuY2VQcm9wZXJ0eSIsInRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VQYXRoIiwidHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVZhbHVlIiwidHJlbmRDYWxjdWxhdGlvblRyZXNob2xkcyIsIlN0cm9uZ0Rvd25EaWZmZXJlbmNlIiwiRG93bkRpZmZlcmVuY2UiLCJVcERpZmZlcmVuY2UiLCJTdHJvbmdVcERpZmZlcmVuY2UiLCJ1cGRhdGVUYXJnZXQiLCJUYXJnZXRWYWx1ZSIsInRhcmdldFByb3BlcnR5IiwidGFyZ2V0UGF0aCIsInRhcmdldFZhbHVlIiwiZ2V0TmF2aWdhdGlvbkluZm9Gcm9tUHJvcGVydHkiLCJwcm9wZXJ0eSIsInNlbWFudGljT2JqZWN0QW5ub3RhdGlvbiIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwiYW5ub3RhdGlvbktleSIsImFubm90YXRpb24iLCJpc0Fubm90YXRpb25PZlRlcm0iLCJxdWFsaWZpZXIiLCJyZXN1bHQiLCJzZW1hbnRpY09iamVjdCIsInVuYXZhaWxhYmxlQWN0aW9ucyIsImtleSIsImlzQ3VzdG9tS1BJQ29uZmlndXJhdGlvbiIsImtwaUNvbmZpZyIsInRlbXBsYXRlIiwiY3JlYXRlQW5hbHl0aWNhbEtQSURlZmluaXRpb24iLCJjb252ZXJ0ZXJDb250ZXh0Iiwia3BpTmFtZSIsImtwaUNvbnZlcnRlckNvbnRleHQiLCJnZXRDb252ZXJ0ZXJDb250ZXh0Rm9yIiwiZW50aXR5U2V0IiwiQWdncmVnYXRpb25IZWxwZXIiLCJnZXRFbnRpdHlUeXBlIiwiaXNBbmFseXRpY3NTdXBwb3J0ZWQiLCJnZXREaWFnbm9zdGljcyIsImFkZElzc3VlIiwiSXNzdWVDYXRlZ29yeSIsIkFubm90YXRpb24iLCJJc3N1ZVNldmVyaXR5IiwiTWVkaXVtIiwiSXNzdWVUeXBlIiwiS1BJX0lTU1VFUyIsIk5PX0FOQUxZVElDUyIsInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uIiwibmF2aWdhdGlvbkluZm8iLCJhS1BJQW5ub3RhdGlvbnMiLCJnZXRBbm5vdGF0aW9uc0J5VGVybSIsInRhcmdldEtQSSIsImtwaSIsIkRhdGFQb2ludCIsIlNlbGVjdGlvblZhcmlhbnQiLCJEZXRhaWwiLCJEZWZhdWx0UHJlc2VudGF0aW9uVmFyaWFudCIsIlZpc3VhbGl6YXRpb25zIiwidml6IiwiaXNBbm5vdGF0aW9uT2ZUeXBlIiwiU2VtYW50aWNPYmplY3QiLCJhY3Rpb24iLCJBY3Rpb24iLCJhU1BWQW5ub3RhdGlvbnMiLCJ0YXJnZXRTUFYiLCJzcHYiLCJQcmVzZW50YXRpb25WYXJpYW50IiwiS1BJX05PVF9GT1VORCIsIktQSV9ERVRBSUxfTk9UX0ZPVU5EIiwiZGF0YXBvaW50UHJvcGVydHkiLCJNQUlOX1BST1BFUlRZX05PVF9BR0dSRUdBVEFCTEUiLCJjaGFydERlZiIsInR5cGUiLCJpZCIsImdldEtQSUlEIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwidGl0bGUiLCJUaXRsZSIsImRlc2NyaXB0aW9uIiwiRGVzY3JpcHRpb24iLCJzZWxlY3Rpb25WYXJpYW50RmlsdGVyRGVmaW5pdGlvbnMiLCJnZXRGaWx0ZXJEZWZpbml0aW9uc0Zyb21TZWxlY3Rpb25WYXJpYW50IiwiY2hhcnQiLCJkZXRhaWxOYXZpZ2F0aW9uIiwib3V0Ym91bmROYXZpZ2F0aW9uIiwibmF2aWdhdGlvbiIsImNyZWF0ZUtQSURlZmluaXRpb24iLCJnZXRLUElEZWZpbml0aW9ucyIsImtwaUNvbmZpZ3MiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJnZXRLUElDb25maWd1cmF0aW9uIiwia3BpRGVmcyIsIm9EZWYiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIktQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNlbWFudGljT2JqZWN0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCB7IENvbW1vbkFubm90YXRpb25UZXJtcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uXCI7XG5pbXBvcnQgdHlwZSB7XG5cdENoYXJ0LFxuXHREYXRhUG9pbnQsXG5cdERhdGFQb2ludFR5cGUsXG5cdEltcHJvdmVtZW50RGlyZWN0aW9uVHlwZSxcblx0S1BJLFxuXHRQcmVzZW50YXRpb25WYXJpYW50VHlwZSxcblx0U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudFR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMsIFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgeyBJc3N1ZUNhdGVnb3J5LCBJc3N1ZVNldmVyaXR5LCBJc3N1ZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0lzc3VlTWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBGaWx0ZXJEZWZpbml0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9TZWxlY3Rpb25WYXJpYW50SGVscGVyXCI7XG5pbXBvcnQgeyBnZXRGaWx0ZXJEZWZpbml0aW9uc0Zyb21TZWxlY3Rpb25WYXJpYW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9TZWxlY3Rpb25WYXJpYW50SGVscGVyXCI7XG5pbXBvcnQgeyBpc0Fubm90YXRpb25PZlRlcm0sIGlzQW5ub3RhdGlvbk9mVHlwZSwgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgeyBNZXNzYWdlVHlwZSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEFuYWx5dGljYWxLUElDb25maWd1cmF0aW9uLCBDdXN0b21LUElDb25maWd1cmF0aW9uLCBLUElDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uSGVscGVyIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvQWdncmVnYXRpb25cIjtcbmltcG9ydCB7IGdldEtQSUlEIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvSURcIjtcbmltcG9ydCB7IGdldE1lc3NhZ2VUeXBlRnJvbUNyaXRpY2FsaXR5VHlwZSB9IGZyb20gXCIuL0NyaXRpY2FsaXR5XCI7XG5cbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25JbmZvID0ge1xuXHRzZW1hbnRpY09iamVjdD86IHN0cmluZztcblx0YWN0aW9uPzogc3RyaW5nO1xuXHR1bmF2YWlsYWJsZUFjdGlvbnM/OiBzdHJpbmdbXTtcblx0b3V0Ym91bmROYXZpZ2F0aW9uPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgS1BJQ2hhcnREZWZpbml0aW9uID0ge1xuXHRjaGFydFR5cGU6IHN0cmluZztcblx0ZGltZW5zaW9uczogeyBuYW1lOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IHJvbGU/OiBzdHJpbmcgfVtdO1xuXHRtZWFzdXJlczogeyBuYW1lOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IHJvbGU/OiBzdHJpbmcgfVtdO1xuXHRzb3J0T3JkZXI/OiB7IG5hbWU6IHN0cmluZzsgZGVzY2VuZGluZzogYm9vbGVhbiB9W107XG5cdG1heEl0ZW1zPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgQW5hbHl0aWNhbEtQSURlZmluaXRpb24gPSB7XG5cdHR5cGU6IFwiQW5hbHl0aWNhbFwiO1xuXHRpZDogc3RyaW5nO1xuXHRlbnRpdHlTZXQ6IHN0cmluZztcblx0ZGF0YXBvaW50OiB7XG5cdFx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0XHRwcm9wZXJ0eVBhdGg6IHN0cmluZztcblx0XHR1bml0Pzoge1xuXHRcdFx0dmFsdWU6IHN0cmluZztcblx0XHRcdGlzUGF0aDogYm9vbGVhbjtcblx0XHRcdGlzQ3VycmVuY3k6IGJvb2xlYW47XG5cdFx0fTtcblx0XHRjcml0aWNhbGl0eVBhdGg/OiBzdHJpbmc7XG5cdFx0Y3JpdGljYWxpdHlWYWx1ZT86IE1lc3NhZ2VUeXBlO1xuXHRcdGNyaXRpY2FsaXR5Q2FsY3VsYXRpb25Nb2RlPzogSW1wcm92ZW1lbnREaXJlY3Rpb25UeXBlO1xuXHRcdGNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzPzogKG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwpW107XG5cdFx0dGl0bGU/OiBzdHJpbmc7XG5cdFx0ZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cdFx0dHJlbmRQYXRoPzogc3RyaW5nO1xuXHRcdHRyZW5kVmFsdWU/OiBzdHJpbmc7XG5cdFx0dHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVZhbHVlPzogbnVtYmVyO1xuXHRcdHRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VQYXRoPzogc3RyaW5nO1xuXHRcdHRyZW5kQ2FsY3VsYXRpb25UcmVzaG9sZHM/OiAobnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbClbXTtcblx0XHR0cmVuZENhbGN1bGF0aW9uSXNSZWxhdGl2ZT86IGJvb2xlYW47XG5cdFx0dGFyZ2V0VmFsdWU/OiBudW1iZXI7XG5cdFx0dGFyZ2V0UGF0aD86IHN0cmluZztcblx0fTtcblx0Y2hhcnQ6IEtQSUNoYXJ0RGVmaW5pdGlvbjtcblx0c2VsZWN0aW9uVmFyaWFudEZpbHRlckRlZmluaXRpb25zPzogRmlsdGVyRGVmaW5pdGlvbltdO1xuXHRuYXZpZ2F0aW9uPzogTmF2aWdhdGlvbkluZm87XG59O1xuXG5leHBvcnQgdHlwZSBDdXN0b21LUElEZWZpbml0aW9uID0ge1xuXHR0eXBlOiBcIkN1c3RvbVwiO1xuXHRrZXk6IHN0cmluZztcblx0dGVtcGxhdGU6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBLUElEZWZpbml0aW9uID0gQW5hbHl0aWNhbEtQSURlZmluaXRpb24gfCBDdXN0b21LUElEZWZpbml0aW9uO1xuXG5jb25zdCBEZXZpYXRpb25JbmRpY2F0b3JGcm9tVHJlbmRUeXBlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuXHRcIlVJLlRyZW5kVHlwZS9TdHJvbmdVcFwiOiBcIlVwXCIsXG5cdFwiVUkuVHJlbmRUeXBlL1VwXCI6IFwiVXBcIixcblx0XCJVSS5UcmVuZFR5cGUvU3Ryb25nRG93blwiOiBcIkRvd25cIixcblx0XCJVSS5UcmVuZFR5cGUvRG93blwiOiBcIkRvd25cIixcblx0XCJVSS5UcmVuZFR5cGUvU2lkZXdheXNcIjogXCJOb25lXCJcbn07XG5cbmNvbnN0IEtQSUNoYXJ0VHlwZUZyb21VSTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcblx0XCJVSS5DaGFydFR5cGUvQ29sdW1uU3RhY2tlZFwiOiBcIlN0YWNrZWRDb2x1bW5cIixcblx0XCJVSS5DaGFydFR5cGUvQmFyU3RhY2tlZFwiOiBcIlN0YWNrZWRCYXJcIixcblx0XCJVSS5DaGFydFR5cGUvRG9udXRcIjogXCJEb251dFwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9MaW5lXCI6IFwiTGluZVwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9CdWJibGVcIjogXCJidWJibGVcIixcblx0XCJVSS5DaGFydFR5cGUvQ29sdW1uXCI6IFwiY29sdW1uXCIsXG5cdFwiVUkuQ2hhcnRUeXBlL0JhclwiOiBcImJhclwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9WZXJ0aWNhbEJ1bGxldFwiOiBcInZlcnRpY2FsX2J1bGxldFwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9Db21iaW5hdGlvblwiOiBcImNvbWJpbmF0aW9uXCIsXG5cdFwiVUkuQ2hhcnRUeXBlL1NjYXR0ZXJcIjogXCJzY2F0dGVyXCJcbn07XG5cbmZ1bmN0aW9uIGNvbnZlcnRLUElDaGFydChjaGFydEFubm90YXRpb246IENoYXJ0LCBwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbjogUHJlc2VudGF0aW9uVmFyaWFudFR5cGUpOiBLUElDaGFydERlZmluaXRpb24gfCB1bmRlZmluZWQge1xuXHRpZiAoY2hhcnRBbm5vdGF0aW9uLk1lYXN1cmVzID09PSB1bmRlZmluZWQpIHtcblx0XHQvLyBXZSBuZWVkIGF0IGxlYXN0IDEgbWVhc3VyZSAoYnV0IG5vIGRpbWVuc2lvbiBpcyBhbGxvd2VkLCBlLmcuIGZvciBidWJibGUgY2hhcnQpXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGNvbnN0IGNoYXJEaW1lbnNpb25zID0gY2hhcnRBbm5vdGF0aW9uLkRpbWVuc2lvbnNcblx0XHQ/IGNoYXJ0QW5ub3RhdGlvbi5EaW1lbnNpb25zLm1hcCgocHJvcGVydHlQYXRoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGRpbUF0dHJpYnV0ZSA9IGNoYXJ0QW5ub3RhdGlvbi5EaW1lbnNpb25BdHRyaWJ1dGVzPy5maW5kKChhdHRyaWJ1dGUpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gYXR0cmlidXRlLkRpbWVuc2lvbj8udmFsdWUgPT09IHByb3BlcnR5UGF0aC52YWx1ZTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0bmFtZTogcHJvcGVydHlQYXRoLnZhbHVlLFxuXHRcdFx0XHRcdGxhYmVsOiBwcm9wZXJ0eVBhdGguJHRhcmdldD8uYW5ub3RhdGlvbnMuQ29tbW9uPy5MYWJlbD8udG9TdHJpbmcoKSB8fCBwcm9wZXJ0eVBhdGgudmFsdWUsXG5cdFx0XHRcdFx0cm9sZTogZGltQXR0cmlidXRlPy5Sb2xlPy5yZXBsYWNlKFwiVUkuQ2hhcnREaW1lbnNpb25Sb2xlVHlwZS9cIiwgXCJcIilcblx0XHRcdFx0fTtcblx0XHQgIH0pXG5cdFx0OiBbXTtcblxuXHRjb25zdCBjaGFydE1lYXN1cmVzID0gY2hhcnRBbm5vdGF0aW9uLk1lYXN1cmVzLm1hcCgocHJvcGVydHlQYXRoKSA9PiB7XG5cdFx0Y29uc3QgbWVhc3VyZUF0dHJpYnV0ZSA9IGNoYXJ0QW5ub3RhdGlvbi5NZWFzdXJlQXR0cmlidXRlcz8uZmluZCgoYXR0cmlidXRlKSA9PiB7XG5cdFx0XHRyZXR1cm4gYXR0cmlidXRlLk1lYXN1cmU/LnZhbHVlID09PSBwcm9wZXJ0eVBhdGgudmFsdWU7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG5hbWU6IHByb3BlcnR5UGF0aC52YWx1ZSxcblx0XHRcdGxhYmVsOiBwcm9wZXJ0eVBhdGguJHRhcmdldD8uYW5ub3RhdGlvbnMuQ29tbW9uPy5MYWJlbD8udG9TdHJpbmcoKSB8fCBwcm9wZXJ0eVBhdGgudmFsdWUsXG5cdFx0XHRyb2xlOiBtZWFzdXJlQXR0cmlidXRlPy5Sb2xlPy5yZXBsYWNlKFwiVUkuQ2hhcnRNZWFzdXJlUm9sZVR5cGUvXCIsIFwiXCIpXG5cdFx0fTtcblx0fSk7XG5cblx0cmV0dXJuIHtcblx0XHRjaGFydFR5cGU6IEtQSUNoYXJ0VHlwZUZyb21VSVtjaGFydEFubm90YXRpb24uQ2hhcnRUeXBlXSB8fCBcIkxpbmVcIixcblx0XHRkaW1lbnNpb25zOiBjaGFyRGltZW5zaW9ucyxcblx0XHRtZWFzdXJlczogY2hhcnRNZWFzdXJlcyxcblx0XHRzb3J0T3JkZXI6IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uPy5Tb3J0T3JkZXI/Lm1hcCgoc29ydE9yZGVyKSA9PiB7XG5cdFx0XHRyZXR1cm4geyBuYW1lOiBzb3J0T3JkZXIuUHJvcGVydHk/LnZhbHVlIHx8IFwiXCIsIGRlc2NlbmRpbmc6ICEhc29ydE9yZGVyLkRlc2NlbmRpbmcgfTtcblx0XHR9KSxcblx0XHRtYXhJdGVtczogcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24/Lk1heEl0ZW1zPy52YWx1ZU9mKCkgYXMgbnVtYmVyXG5cdH07XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUN1cnJlbmN5KGRhdGFwb2ludEFubm90YXRpb246IERhdGFQb2ludFR5cGUsIGtwaURlZjogQW5hbHl0aWNhbEtQSURlZmluaXRpb24pOiB2b2lkIHtcblx0Y29uc3QgdGFyZ2V0VmFsdWVQcm9wZXJ0eSA9IGRhdGFwb2ludEFubm90YXRpb24uVmFsdWUuJHRhcmdldCBhcyBQcm9wZXJ0eTtcblx0aWYgKHRhcmdldFZhbHVlUHJvcGVydHkuYW5ub3RhdGlvbnMuTWVhc3VyZXM/LklTT0N1cnJlbmN5KSB7XG5cdFx0Y29uc3QgY3VycmVuY3kgPSB0YXJnZXRWYWx1ZVByb3BlcnR5LmFubm90YXRpb25zLk1lYXN1cmVzPy5JU09DdXJyZW5jeTtcblx0XHRpZiAoaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24oY3VycmVuY3kpKSB7XG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnVuaXQgPSB7XG5cdFx0XHRcdHZhbHVlOiAoY3VycmVuY3kuJHRhcmdldCBhcyB1bmtub3duIGFzIFByb3BlcnR5KS5uYW1lLFxuXHRcdFx0XHRpc0N1cnJlbmN5OiB0cnVlLFxuXHRcdFx0XHRpc1BhdGg6IHRydWVcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGtwaURlZi5kYXRhcG9pbnQudW5pdCA9IHtcblx0XHRcdFx0dmFsdWU6IGN1cnJlbmN5LnRvU3RyaW5nKCksXG5cdFx0XHRcdGlzQ3VycmVuY3k6IHRydWUsXG5cdFx0XHRcdGlzUGF0aDogZmFsc2Vcblx0XHRcdH07XG5cdFx0fVxuXHR9IGVsc2UgaWYgKHRhcmdldFZhbHVlUHJvcGVydHkuYW5ub3RhdGlvbnMuTWVhc3VyZXM/LlVuaXQpIHtcblx0XHRjb25zdCB1bml0ID0gdGFyZ2V0VmFsdWVQcm9wZXJ0eS5hbm5vdGF0aW9ucy5NZWFzdXJlcz8uVW5pdDtcblx0XHRpZiAoaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24odW5pdCkpIHtcblx0XHRcdGtwaURlZi5kYXRhcG9pbnQudW5pdCA9IHtcblx0XHRcdFx0dmFsdWU6ICh1bml0LiR0YXJnZXQgYXMgdW5rbm93biBhcyBQcm9wZXJ0eSkubmFtZSxcblx0XHRcdFx0aXNDdXJyZW5jeTogZmFsc2UsXG5cdFx0XHRcdGlzUGF0aDogdHJ1ZVxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC51bml0ID0ge1xuXHRcdFx0XHR2YWx1ZTogdW5pdC50b1N0cmluZygpLFxuXHRcdFx0XHRpc0N1cnJlbmN5OiBmYWxzZSxcblx0XHRcdFx0aXNQYXRoOiBmYWxzZVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlQ3JpdGljYWxpdHkoXG5cdGRhdGFwb2ludEFubm90YXRpb246IERhdGFQb2ludFR5cGUsXG5cdGFnZ3JlZ2F0aW9uSGVscGVyOiBBZ2dyZWdhdGlvbkhlbHBlcixcblx0a3BpRGVmOiBBbmFseXRpY2FsS1BJRGVmaW5pdGlvblxuKTogdm9pZCB7XG5cdGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5KSB7XG5cdFx0aWYgKGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkpKSB7XG5cdFx0XHQvLyBDcml0aWNhbGl0eSBpcyBhIHBhdGggLS0+IGNoZWNrIGlmIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGlzIGFnZ3JlZ2F0YWJsZVxuXHRcdFx0Y29uc3QgY3JpdGljYWxpdHlQcm9wZXJ0eSA9IGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkuJHRhcmdldDtcblx0XHRcdGlmIChjcml0aWNhbGl0eVByb3BlcnR5ICYmIGFnZ3JlZ2F0aW9uSGVscGVyLmlzUHJvcGVydHlBZ2dyZWdhdGFibGUoY3JpdGljYWxpdHlQcm9wZXJ0eSkpIHtcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eVBhdGggPSBkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5LnBhdGg7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBUaGUgcHJvcGVydHkgaXNuJ3QgYWdncmVnYXRhYmxlIC0tPiB3ZSBpZ25vcmUgaXRcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gQ3JpdGljYWxpdHkgaXMgYW4gZW51bSBWYWx1ZSAtLT4gZ2V0IHRoZSBjb3JyZXNwb25kaW5nIHN0YXRpYyB2YWx1ZVxuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eVZhbHVlID0gZ2V0TWVzc2FnZVR5cGVGcm9tQ3JpdGljYWxpdHlUeXBlKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24pIHtcblx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25Nb2RlID0gZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkltcHJvdmVtZW50RGlyZWN0aW9uO1xuXHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMgPSBbXTtcblx0XHRzd2l0Y2ggKGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGUpIHtcblx0XHRcdGNhc2UgXCJVSS5JbXByb3ZlbWVudERpcmVjdGlvblR5cGUvVGFyZ2V0XCI6XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uRGV2aWF0aW9uUmFuZ2VMb3dWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uVG9sZXJhbmNlUmFuZ2VMb3dWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uQWNjZXB0YW5jZVJhbmdlTG93VmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkFjY2VwdGFuY2VSYW5nZUhpZ2hWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uVG9sZXJhbmNlUmFuZ2VIaWdoVmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkRldmlhdGlvblJhbmdlSGlnaFZhbHVlKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJVSS5JbXByb3ZlbWVudERpcmVjdGlvblR5cGUvTWluaW1pemVcIjpcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcy5wdXNoKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5BY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLlRvbGVyYW5jZVJhbmdlSGlnaFZhbHVlKTtcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcy5wdXNoKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5EZXZpYXRpb25SYW5nZUhpZ2hWYWx1ZSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiVUkuSW1wcm92ZW1lbnREaXJlY3Rpb25UeXBlL01heGltaXplXCI6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkRldmlhdGlvblJhbmdlTG93VmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLlRvbGVyYW5jZVJhbmdlTG93VmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkFjY2VwdGFuY2VSYW5nZUxvd1ZhbHVlKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0fVxufVxuXG5mdW5jdGlvbiB1cGRhdGVUcmVuZChkYXRhcG9pbnRBbm5vdGF0aW9uOiBEYXRhUG9pbnRUeXBlLCBhZ2dyZWdhdGlvbkhlbHBlcjogQWdncmVnYXRpb25IZWxwZXIsIGtwaURlZjogQW5hbHl0aWNhbEtQSURlZmluaXRpb24pOiB2b2lkIHtcblx0aWYgKGRhdGFwb2ludEFubm90YXRpb24uVHJlbmQpIHtcblx0XHRpZiAoaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24oZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZCkpIHtcblx0XHRcdC8vIFRyZW5kIGlzIGEgcGF0aCAtLT4gY2hlY2sgaWYgdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgaXMgYWdncmVnYXRhYmxlXG5cdFx0XHRjb25zdCB0cmVuZFByb3BlcnR5ID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZC4kdGFyZ2V0O1xuXHRcdFx0aWYgKHRyZW5kUHJvcGVydHkgJiYgYWdncmVnYXRpb25IZWxwZXIuaXNQcm9wZXJ0eUFnZ3JlZ2F0YWJsZSh0cmVuZFByb3BlcnR5KSkge1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kUGF0aCA9IGRhdGFwb2ludEFubm90YXRpb24uVHJlbmQucGF0aDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFRoZSBwcm9wZXJ0eSBpc24ndCBhZ2dyZWdhdGFibGUgLS0+IHdlIGlnbm9yZSBpdFxuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kVmFsdWUgPSBcIk5vbmVcIjtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gVHJlbmQgaXMgYW4gZW51bSBWYWx1ZSAtLT4gZ2V0IHRoZSBjb3JyZXNwb25kaW5nIHN0YXRpYyB2YWx1ZVxuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC50cmVuZFZhbHVlID0gRGV2aWF0aW9uSW5kaWNhdG9yRnJvbVRyZW5kVHlwZVtkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kXSB8fCBcIk5vbmVcIjtcblx0XHR9XG5cdH0gZWxzZSBpZiAoZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uKSB7XG5cdFx0a3BpRGVmLmRhdGFwb2ludC50cmVuZENhbGN1bGF0aW9uSXNSZWxhdGl2ZSA9IGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5Jc1JlbGF0aXZlRGlmZmVyZW5jZSA/IHRydWUgOiBmYWxzZTtcblx0XHRpZiAoZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uLlJlZmVyZW5jZVZhbHVlLiR0YXJnZXQpIHtcblx0XHRcdC8vIFJlZmVyZW5jZSB2YWx1ZSBpcyBhIHBhdGggLS0+IGNoZWNrIGlmIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGlzIGFnZ3JlZ2F0YWJsZVxuXHRcdFx0Y29uc3QgcmVmZXJlbmNlUHJvcGVydHkgPSBkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24uUmVmZXJlbmNlVmFsdWUuJHRhcmdldCBhcyBQcm9wZXJ0eTtcblx0XHRcdGlmIChhZ2dyZWdhdGlvbkhlbHBlci5pc1Byb3BlcnR5QWdncmVnYXRhYmxlKHJlZmVyZW5jZVByb3BlcnR5KSkge1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VQYXRoID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uLlJlZmVyZW5jZVZhbHVlLnBhdGg7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBUaGUgcHJvcGVydHkgaXNuJ3QgYWdncmVnYXRhYmxlIC0tPiB3ZSBpZ25vcmUgaXQgYW5kIHN3aXRjaCBiYWNrIHRvIHRyZW5kICdOb25lJ1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kVmFsdWUgPSBcIk5vbmVcIjtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gUmVmZXJlbmNlIHZhbHVlIGlzIGEgc3RhdGljIHZhbHVlXG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VWYWx1ZSA9IGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5SZWZlcmVuY2VWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKGtwaURlZi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVBhdGggIT09IHVuZGVmaW5lZCB8fCBrcGlEZWYuZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25UcmVzaG9sZHMgPSBbXG5cdFx0XHRcdGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5TdHJvbmdEb3duRGlmZmVyZW5jZS52YWx1ZU9mKCksXG5cdFx0XHRcdGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5Eb3duRGlmZmVyZW5jZS52YWx1ZU9mKCksXG5cdFx0XHRcdGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5VcERpZmZlcmVuY2UudmFsdWVPZigpLFxuXHRcdFx0XHRkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24uU3Ryb25nVXBEaWZmZXJlbmNlLnZhbHVlT2YoKVxuXHRcdFx0XTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0a3BpRGVmLmRhdGFwb2ludC50cmVuZFZhbHVlID0gXCJOb25lXCI7XG5cdH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlVGFyZ2V0KGRhdGFwb2ludEFubm90YXRpb246IERhdGFQb2ludFR5cGUsIGFnZ3JlZ2F0aW9uSGVscGVyOiBBZ2dyZWdhdGlvbkhlbHBlciwga3BpRGVmOiBBbmFseXRpY2FsS1BJRGVmaW5pdGlvbik6IHZvaWQge1xuXHRpZiAoZGF0YXBvaW50QW5ub3RhdGlvbi5UYXJnZXRWYWx1ZSkge1xuXHRcdGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLlRhcmdldFZhbHVlLiR0YXJnZXQpIHtcblx0XHRcdC8vIFRhcmdldCB2YWx1ZSBpcyBhIHBhdGggLS0+IGNoZWNrIGlmIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGlzIGFnZ3JlZ2F0YWJsZSAob3RoZXJ3aXNlIGlnbm9yZSlcblx0XHRcdGNvbnN0IHRhcmdldFByb3BlcnR5ID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UYXJnZXRWYWx1ZS4kdGFyZ2V0IGFzIFByb3BlcnR5O1xuXHRcdFx0aWYgKGFnZ3JlZ2F0aW9uSGVscGVyLmlzUHJvcGVydHlBZ2dyZWdhdGFibGUodGFyZ2V0UHJvcGVydHkpKSB7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQudGFyZ2V0UGF0aCA9IGRhdGFwb2ludEFubm90YXRpb24uVGFyZ2V0VmFsdWUucGF0aDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gVGFyZ2V0IHZhbHVlIGlzIGEgc3RhdGljIHZhbHVlXG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRhcmdldFZhbHVlID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UYXJnZXRWYWx1ZTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0TmF2aWdhdGlvbkluZm9Gcm9tUHJvcGVydHkocHJvcGVydHk6IFByb3BlcnR5KTogTmF2aWdhdGlvbkluZm8gfCB1bmRlZmluZWQge1xuXHRjb25zdCBhbm5vdGF0aW9ucyA9IHByb3BlcnR5LmFubm90YXRpb25zW1wiQ29tbW9uXCJdIHx8IHt9O1xuXHQvLyBMb29rIGZvciB0aGUgc2VtYW50aWNPYmplY3QgYW5ub3RhdGlvbiAoaWYgYW55KVxuXHRsZXQgc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uOiBTZW1hbnRpY09iamVjdCB8IHVuZGVmaW5lZDtcblx0T2JqZWN0LmtleXMoYW5ub3RhdGlvbnMpLmZvckVhY2goKGFubm90YXRpb25LZXkpID0+IHtcblx0XHRjb25zdCBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnNbYW5ub3RhdGlvbktleSBhcyBrZXlvZiB0eXBlb2YgYW5ub3RhdGlvbnNdO1xuXHRcdGlmIChpc0Fubm90YXRpb25PZlRlcm0oYW5ub3RhdGlvbiwgQ29tbW9uQW5ub3RhdGlvblRlcm1zLlNlbWFudGljT2JqZWN0KSkge1xuXHRcdFx0aWYgKCFhbm5vdGF0aW9uLnF1YWxpZmllciB8fCAhc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uKSB7XG5cdFx0XHRcdC8vIFdlIGFsd2F5cyB0YWtlIHRoZSBhbm5vdGF0aW9uIHdpdGhvdXQgcXVhbGlmaWVyIGlmIHRoZXJlJ3Mgb25lLCBvdGhlcndpc2Ugd2UgdGFrZSB0aGUgZmlyc3Qgb25lXG5cdFx0XHRcdHNlbWFudGljT2JqZWN0QW5ub3RhdGlvbiA9IGFubm90YXRpb24gYXMgU2VtYW50aWNPYmplY3Q7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcblxuXHRpZiAoc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uKSB7XG5cdFx0Y29uc3QgcmVzdWx0OiBOYXZpZ2F0aW9uSW5mbyA9IHtcblx0XHRcdHNlbWFudGljT2JqZWN0OiBzZW1hbnRpY09iamVjdEFubm90YXRpb24udG9TdHJpbmcoKSxcblx0XHRcdHVuYXZhaWxhYmxlQWN0aW9uczogW11cblx0XHR9O1xuXG5cdFx0Ly8gTG9vayBmb3IgdGhlIHVuYXZhaWxhYmxlIGFjdGlvbnMgKGlmIGFueSlcblx0XHRjb25zdCBhbm5vdGF0aW9uS2V5ID0gT2JqZWN0LmtleXMoYW5ub3RhdGlvbnMpLmZpbmQoKGtleSkgPT4ge1xuXHRcdFx0Y29uc3QgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zW2tleSBhcyBrZXlvZiB0eXBlb2YgYW5ub3RhdGlvbnNdO1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0aXNBbm5vdGF0aW9uT2ZUZXJtKGFubm90YXRpb24sIENvbW1vbkFubm90YXRpb25UZXJtcy5TZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucykgJiZcblx0XHRcdFx0YW5ub3RhdGlvbi5xdWFsaWZpZXIgPT09IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvbj8ucXVhbGlmaWVyXG5cdFx0XHQpO1xuXHRcdH0pO1xuXHRcdGlmIChhbm5vdGF0aW9uS2V5KSB7XG5cdFx0XHRyZXN1bHQudW5hdmFpbGFibGVBY3Rpb25zID0gYW5ub3RhdGlvbnNbYW5ub3RhdGlvbktleSBhcyBrZXlvZiB0eXBlb2YgYW5ub3RhdGlvbnNdIGFzIHN0cmluZ1tdO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxufVxuXG5mdW5jdGlvbiBpc0N1c3RvbUtQSUNvbmZpZ3VyYXRpb24oa3BpQ29uZmlnOiBLUElDb25maWd1cmF0aW9uKToga3BpQ29uZmlnIGlzIEN1c3RvbUtQSUNvbmZpZ3VyYXRpb24ge1xuXHRyZXR1cm4gISEoa3BpQ29uZmlnIGFzIEN1c3RvbUtQSUNvbmZpZ3VyYXRpb24pLnRlbXBsYXRlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBbmFseXRpY2FsS1BJRGVmaW5pdGlvbihcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+LFxuXHRrcGlDb25maWc6IEFuYWx5dGljYWxLUElDb25maWd1cmF0aW9uLFxuXHRrcGlOYW1lOiBzdHJpbmdcbik6IEFuYWx5dGljYWxLUElEZWZpbml0aW9uIHwgdW5kZWZpbmVkIHtcblx0Y29uc3Qga3BpQ29udmVydGVyQ29udGV4dCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVyQ29udGV4dEZvcjxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+KGAvJHtrcGlDb25maWcuZW50aXR5U2V0fWApO1xuXHRjb25zdCBhZ2dyZWdhdGlvbkhlbHBlciA9IG5ldyBBZ2dyZWdhdGlvbkhlbHBlcihrcGlDb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKSwga3BpQ29udmVydGVyQ29udGV4dCk7XG5cblx0aWYgKCFhZ2dyZWdhdGlvbkhlbHBlci5pc0FuYWx5dGljc1N1cHBvcnRlZCgpKSB7XG5cdFx0Ly8gVGhlIGVudGl0eSBkb2Vzbid0IHN1cHBvcnQgYW5hbHl0aWNhbCBxdWVyaWVzXG5cdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0LmdldERpYWdub3N0aWNzKClcblx0XHRcdC5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuTWVkaXVtLCBJc3N1ZVR5cGUuS1BJX0lTU1VFUy5OT19BTkFMWVRJQ1MgKyBrcGlDb25maWcuZW50aXR5U2V0KTtcblxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRsZXQgc2VsZWN0aW9uVmFyaWFudEFubm90YXRpb246IFNlbGVjdGlvblZhcmlhbnRUeXBlIHwgdW5kZWZpbmVkO1xuXHRsZXQgZGF0YXBvaW50QW5ub3RhdGlvbjogRGF0YVBvaW50VHlwZSB8IHVuZGVmaW5lZDtcblx0bGV0IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uOiBQcmVzZW50YXRpb25WYXJpYW50VHlwZSB8IHVuZGVmaW5lZDtcblx0bGV0IGNoYXJ0QW5ub3RhdGlvbjogQ2hhcnQgfCB1bmRlZmluZWQ7XG5cdGxldCBuYXZpZ2F0aW9uSW5mbzogTmF2aWdhdGlvbkluZm8gfCB1bmRlZmluZWQ7XG5cblx0Ly8gU2VhcmNoIGZvciBhIEtQSSB3aXRoIHRoZSBxdWFsaWZpZXIgZnJtbyB0aGUgbWFuaWZlc3Rcblx0Y29uc3QgYUtQSUFubm90YXRpb25zID0ga3BpQ29udmVydGVyQ29udGV4dC5nZXRBbm5vdGF0aW9uc0J5VGVybShcIlVJXCIsIFVJQW5ub3RhdGlvblRlcm1zLktQSSkgYXMgS1BJW107XG5cdGNvbnN0IHRhcmdldEtQSSA9IGFLUElBbm5vdGF0aW9ucy5maW5kKChrcGkpID0+IHtcblx0XHRyZXR1cm4ga3BpLnF1YWxpZmllciA9PT0ga3BpQ29uZmlnLnF1YWxpZmllcjtcblx0fSk7XG5cdGlmICh0YXJnZXRLUEkpIHtcblx0XHRkYXRhcG9pbnRBbm5vdGF0aW9uID0gdGFyZ2V0S1BJLkRhdGFQb2ludDtcblx0XHRzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbiA9IHRhcmdldEtQSS5TZWxlY3Rpb25WYXJpYW50O1xuXHRcdHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gdGFyZ2V0S1BJLkRldGFpbD8uRGVmYXVsdFByZXNlbnRhdGlvblZhcmlhbnQ7XG5cdFx0Y2hhcnRBbm5vdGF0aW9uID0gcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24/LlZpc3VhbGl6YXRpb25zPy5maW5kKCh2aXopID0+IHtcblx0XHRcdHJldHVybiBpc0Fubm90YXRpb25PZlR5cGU8Q2hhcnQ+KHZpei4kdGFyZ2V0LCBVSUFubm90YXRpb25UeXBlcy5DaGFydERlZmluaXRpb25UeXBlKTtcblx0XHR9KT8uJHRhcmdldCBhcyBDaGFydDtcblxuXHRcdGlmICh0YXJnZXRLUEkuRGV0YWlsPy5TZW1hbnRpY09iamVjdCkge1xuXHRcdFx0bmF2aWdhdGlvbkluZm8gPSB7XG5cdFx0XHRcdHNlbWFudGljT2JqZWN0OiB0YXJnZXRLUEkuRGV0YWlsLlNlbWFudGljT2JqZWN0LnRvU3RyaW5nKCksXG5cdFx0XHRcdGFjdGlvbjogdGFyZ2V0S1BJLkRldGFpbC5BY3Rpb24/LnRvU3RyaW5nKCksXG5cdFx0XHRcdHVuYXZhaWxhYmxlQWN0aW9uczogW11cblx0XHRcdH07XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdC8vIEZhbGxiYWNrOiB0cnkgdG8gZmluZCBhIFNQViB3aXRoIHRoZSBzYW1lIHF1YWxpZmllclxuXHRcdGNvbnN0IGFTUFZBbm5vdGF0aW9ucyA9IGtwaUNvbnZlcnRlckNvbnRleHQuZ2V0QW5ub3RhdGlvbnNCeVRlcm0oXG5cdFx0XHRcIlVJXCIsXG5cdFx0XHRVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG5cdFx0KSBhcyBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50W107XG5cdFx0Y29uc3QgdGFyZ2V0U1BWID0gYVNQVkFubm90YXRpb25zLmZpbmQoKHNwdikgPT4ge1xuXHRcdFx0cmV0dXJuIHNwdi5xdWFsaWZpZXIgPT09IGtwaUNvbmZpZy5xdWFsaWZpZXI7XG5cdFx0fSk7XG5cdFx0aWYgKHRhcmdldFNQVikge1xuXHRcdFx0c2VsZWN0aW9uVmFyaWFudEFubm90YXRpb24gPSB0YXJnZXRTUFYuU2VsZWN0aW9uVmFyaWFudDtcblx0XHRcdHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gdGFyZ2V0U1BWLlByZXNlbnRhdGlvblZhcmlhbnQ7XG5cdFx0XHRkYXRhcG9pbnRBbm5vdGF0aW9uID0gcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24/LlZpc3VhbGl6YXRpb25zPy5maW5kKCh2aXopID0+IHtcblx0XHRcdFx0cmV0dXJuIGlzQW5ub3RhdGlvbk9mVHlwZTxEYXRhUG9pbnQ+KHZpei4kdGFyZ2V0LCBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlKTtcblx0XHRcdH0pPy4kdGFyZ2V0IGFzIERhdGFQb2ludDtcblx0XHRcdGNoYXJ0QW5ub3RhdGlvbiA9IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uPy5WaXN1YWxpemF0aW9ucz8uZmluZCgodml6KSA9PiB7XG5cdFx0XHRcdHJldHVybiBpc0Fubm90YXRpb25PZlR5cGU8Q2hhcnQ+KHZpei4kdGFyZ2V0LCBVSUFubm90YXRpb25UeXBlcy5DaGFydERlZmluaXRpb25UeXBlKTtcblx0XHRcdH0pPy4kdGFyZ2V0IGFzIENoYXJ0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBDb3VsZG4ndCBmaW5kIGEgS1BJIG9yIGEgU1BWIGFubm90YXRpb24gd2l0aCB0aGUgcXVhbGlmaWVyIGZyb20gdGhlIG1hbmlmZXN0XG5cdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdC5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuTWVkaXVtLCBJc3N1ZVR5cGUuS1BJX0lTU1VFUy5LUElfTk9UX0ZPVU5EICsga3BpQ29uZmlnLnF1YWxpZmllcik7XG5cblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cblx0aWYgKCFwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbiB8fCAhZGF0YXBvaW50QW5ub3RhdGlvbiB8fCAhY2hhcnRBbm5vdGF0aW9uKSB7XG5cdFx0Ly8gQ291bGRuJ3QgZmluZCBhIGNoYXJ0IG9yIGRhdGFwb2ludCBkZWZpbml0aW9uXG5cdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0LmdldERpYWdub3N0aWNzKClcblx0XHRcdC5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuTWVkaXVtLCBJc3N1ZVR5cGUuS1BJX0lTU1VFUy5LUElfREVUQUlMX05PVF9GT1VORCArIGtwaUNvbmZpZy5xdWFsaWZpZXIpO1xuXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGNvbnN0IGRhdGFwb2ludFByb3BlcnR5ID0gZGF0YXBvaW50QW5ub3RhdGlvbi5WYWx1ZS4kdGFyZ2V0IGFzIFByb3BlcnR5O1xuXHRpZiAoIWFnZ3JlZ2F0aW9uSGVscGVyLmlzUHJvcGVydHlBZ2dyZWdhdGFibGUoZGF0YXBvaW50UHJvcGVydHkpKSB7XG5cdFx0Ly8gVGhlIG1haW4gcHJvcGVydHkgb2YgdGhlIEtQSSBpcyBub3QgYWdncmVnYXRhYmxlIC0tPiBXZSBjYW4ndCBjYWxjdWxhdGUgaXRzIHZhbHVlIHNvIHdlIGlnbm9yZSB0aGUgS1BJXG5cdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0LmdldERpYWdub3N0aWNzKClcblx0XHRcdC5hZGRJc3N1ZShcblx0XHRcdFx0SXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLFxuXHRcdFx0XHRJc3N1ZVNldmVyaXR5Lk1lZGl1bSxcblx0XHRcdFx0SXNzdWVUeXBlLktQSV9JU1NVRVMuTUFJTl9QUk9QRVJUWV9OT1RfQUdHUkVHQVRBQkxFICsga3BpQ29uZmlnLnF1YWxpZmllclxuXHRcdFx0KTtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Ly8gQ2hhcnQgZGVmaW5pdGlvblxuXHRjb25zdCBjaGFydERlZiA9IGNvbnZlcnRLUElDaGFydChjaGFydEFubm90YXRpb24sIHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uKTtcblx0aWYgKCFjaGFydERlZikge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRjb25zdCBrcGlEZWY6IEFuYWx5dGljYWxLUElEZWZpbml0aW9uID0ge1xuXHRcdHR5cGU6IFwiQW5hbHl0aWNhbFwiLFxuXHRcdGlkOiBnZXRLUElJRChrcGlOYW1lKSxcblx0XHRlbnRpdHlTZXQ6IGtwaUNvbmZpZy5lbnRpdHlTZXQsXG5cdFx0ZGF0YXBvaW50OiB7XG5cdFx0XHRwcm9wZXJ0eVBhdGg6IGRhdGFwb2ludEFubm90YXRpb24uVmFsdWUucGF0aCxcblx0XHRcdGFubm90YXRpb25QYXRoOiBrcGlDb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YXBvaW50QW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUpLFxuXHRcdFx0dGl0bGU6IGRhdGFwb2ludEFubm90YXRpb24uVGl0bGU/LnRvU3RyaW5nKCksXG5cdFx0XHRkZXNjcmlwdGlvbjogZGF0YXBvaW50QW5ub3RhdGlvbi5EZXNjcmlwdGlvbj8udG9TdHJpbmcoKVxuXHRcdH0sXG5cdFx0c2VsZWN0aW9uVmFyaWFudEZpbHRlckRlZmluaXRpb25zOiBzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvblxuXHRcdFx0PyBnZXRGaWx0ZXJEZWZpbml0aW9uc0Zyb21TZWxlY3Rpb25WYXJpYW50KHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uKVxuXHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0Y2hhcnQ6IGNoYXJ0RGVmXG5cdH07XG5cblx0Ly8gTmF2aWdhdGlvblxuXHRpZiAoIW5hdmlnYXRpb25JbmZvKSB7XG5cdFx0Ly8gTm8gbmF2aWdhdGlvbkluZm8gd2FzIGZvdW5kIGluIHRoZSBLUEkgYW5ub3RhdGlvbiAtLT4gdHJ5IHRoZSBvdXRib3VuZCBuYXZpZ2F0aW9uIGZyb20gdGhlIG1hbmlmZXN0XG5cdFx0aWYgKGtwaUNvbmZpZy5kZXRhaWxOYXZpZ2F0aW9uKSB7XG5cdFx0XHRuYXZpZ2F0aW9uSW5mbyA9IHtcblx0XHRcdFx0b3V0Ym91bmROYXZpZ2F0aW9uOiBrcGlDb25maWcuZGV0YWlsTmF2aWdhdGlvblxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gTm8gb3V0Ym91bmQgbmF2aWdhdGlvbiBpbiB0aGUgbWFuaWZlc3QgLS0+IHRyeSB0aGUgc2VtYW50aWMgb2JqZWN0IG9uIHRoZSBEYXRhcG9pbnQgdmFsdWVcblx0XHRcdG5hdmlnYXRpb25JbmZvID0gZ2V0TmF2aWdhdGlvbkluZm9Gcm9tUHJvcGVydHkoZGF0YXBvaW50UHJvcGVydHkpO1xuXHRcdH1cblx0fVxuXHRpZiAobmF2aWdhdGlvbkluZm8pIHtcblx0XHRrcGlEZWYubmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JbmZvO1xuXHR9XG5cblx0dXBkYXRlQ3VycmVuY3koZGF0YXBvaW50QW5ub3RhdGlvbiwga3BpRGVmKTtcblx0dXBkYXRlQ3JpdGljYWxpdHkoZGF0YXBvaW50QW5ub3RhdGlvbiwgYWdncmVnYXRpb25IZWxwZXIsIGtwaURlZik7XG5cdHVwZGF0ZVRyZW5kKGRhdGFwb2ludEFubm90YXRpb24sIGFnZ3JlZ2F0aW9uSGVscGVyLCBrcGlEZWYpO1xuXHR1cGRhdGVUYXJnZXQoZGF0YXBvaW50QW5ub3RhdGlvbiwgYWdncmVnYXRpb25IZWxwZXIsIGtwaURlZik7XG5cblx0cmV0dXJuIGtwaURlZjtcbn1cblxuZnVuY3Rpb24gY3JlYXRlS1BJRGVmaW5pdGlvbihcblx0a3BpTmFtZTogc3RyaW5nLFxuXHRrcGlDb25maWc6IEtQSUNvbmZpZ3VyYXRpb24sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogS1BJRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG5cdGlmIChpc0N1c3RvbUtQSUNvbmZpZ3VyYXRpb24oa3BpQ29uZmlnKSkge1xuXHRcdHJldHVybiB7XG5cdFx0XHR0eXBlOiBcIkN1c3RvbVwiLFxuXHRcdFx0a2V5OiBrcGlOYW1lLFxuXHRcdFx0dGVtcGxhdGU6IGtwaUNvbmZpZy50ZW1wbGF0ZVxuXHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGNyZWF0ZUFuYWx5dGljYWxLUElEZWZpbml0aW9uKGNvbnZlcnRlckNvbnRleHQsIGtwaUNvbmZpZywga3BpTmFtZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBLUEkgZGVmaW5pdGlvbnMgZnJvbSB0aGUgbWFuaWZlc3QgYW5kIHRoZSBhbm5vdGF0aW9ucy5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHQgZm9yIHRoZSBwYWdlXG4gKiBAcmV0dXJucyBSZXR1cm5zIGFuIGFycmF5IG9mIEtQSSBkZWZpbml0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0S1BJRGVmaW5pdGlvbnMoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+KTogS1BJRGVmaW5pdGlvbltdIHtcblx0Y29uc3Qga3BpQ29uZmlncyA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuZ2V0S1BJQ29uZmlndXJhdGlvbigpLFxuXHRcdGtwaURlZnM6IEtQSURlZmluaXRpb25bXSA9IFtdO1xuXG5cdE9iamVjdC5rZXlzKGtwaUNvbmZpZ3MpLmZvckVhY2goKGtwaU5hbWUpID0+IHtcblx0XHRjb25zdCBvRGVmID0gY3JlYXRlS1BJRGVmaW5pdGlvbihrcGlOYW1lLCBrcGlDb25maWdzW2twaU5hbWVdLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0XHRpZiAob0RlZikge1xuXHRcdFx0a3BpRGVmcy5wdXNoKG9EZWYpO1xuXHRcdH1cblx0fSk7XG5cblx0cmV0dXJuIGtwaURlZnM7XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnRkEsTUFBTUEsK0JBQXVELEdBQUc7SUFDL0QsdUJBQXVCLEVBQUUsSUFBSTtJQUM3QixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLHlCQUF5QixFQUFFLE1BQU07SUFDakMsbUJBQW1CLEVBQUUsTUFBTTtJQUMzQix1QkFBdUIsRUFBRTtFQUMxQixDQUFDO0VBRUQsTUFBTUMsa0JBQTBDLEdBQUc7SUFDbEQsNEJBQTRCLEVBQUUsZUFBZTtJQUM3Qyx5QkFBeUIsRUFBRSxZQUFZO0lBQ3ZDLG9CQUFvQixFQUFFLE9BQU87SUFDN0IsbUJBQW1CLEVBQUUsTUFBTTtJQUMzQixxQkFBcUIsRUFBRSxRQUFRO0lBQy9CLHFCQUFxQixFQUFFLFFBQVE7SUFDL0Isa0JBQWtCLEVBQUUsS0FBSztJQUN6Qiw2QkFBNkIsRUFBRSxpQkFBaUI7SUFDaEQsMEJBQTBCLEVBQUUsYUFBYTtJQUN6QyxzQkFBc0IsRUFBRTtFQUN6QixDQUFDO0VBRUQsU0FBU0MsZUFBZSxDQUFDQyxlQUFzQixFQUFFQyw2QkFBc0Qs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
392
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZXZpYXRpb25JbmRpY2F0b3JGcm9tVHJlbmRUeXBlIiwiS1BJQ2hhcnRUeXBlRnJvbVVJIiwiY29udmVydEtQSUNoYXJ0IiwiY2hhcnRBbm5vdGF0aW9uIiwicHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24iLCJNZWFzdXJlcyIsInVuZGVmaW5lZCIsImNoYXJEaW1lbnNpb25zIiwiRGltZW5zaW9ucyIsIm1hcCIsInByb3BlcnR5UGF0aCIsImRpbUF0dHJpYnV0ZSIsIkRpbWVuc2lvbkF0dHJpYnV0ZXMiLCJmaW5kIiwiYXR0cmlidXRlIiwiRGltZW5zaW9uIiwidmFsdWUiLCJuYW1lIiwibGFiZWwiLCIkdGFyZ2V0IiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJMYWJlbCIsInRvU3RyaW5nIiwicm9sZSIsIlJvbGUiLCJyZXBsYWNlIiwiY2hhcnRNZWFzdXJlcyIsIm1lYXN1cmVBdHRyaWJ1dGUiLCJNZWFzdXJlQXR0cmlidXRlcyIsIk1lYXN1cmUiLCJjaGFydFR5cGUiLCJDaGFydFR5cGUiLCJkaW1lbnNpb25zIiwibWVhc3VyZXMiLCJzb3J0T3JkZXIiLCJTb3J0T3JkZXIiLCJQcm9wZXJ0eSIsImRlc2NlbmRpbmciLCJEZXNjZW5kaW5nIiwibWF4SXRlbXMiLCJNYXhJdGVtcyIsInZhbHVlT2YiLCJ1cGRhdGVDdXJyZW5jeSIsImRhdGFwb2ludEFubm90YXRpb24iLCJrcGlEZWYiLCJ0YXJnZXRWYWx1ZVByb3BlcnR5IiwiVmFsdWUiLCJJU09DdXJyZW5jeSIsImN1cnJlbmN5IiwiaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24iLCJkYXRhcG9pbnQiLCJ1bml0IiwiaXNDdXJyZW5jeSIsImlzUGF0aCIsIlVuaXQiLCJ1cGRhdGVDcml0aWNhbGl0eSIsImFnZ3JlZ2F0aW9uSGVscGVyIiwiQ3JpdGljYWxpdHkiLCJjcml0aWNhbGl0eVByb3BlcnR5IiwiaXNQcm9wZXJ0eUFnZ3JlZ2F0YWJsZSIsImNyaXRpY2FsaXR5UGF0aCIsInBhdGgiLCJjcml0aWNhbGl0eVZhbHVlIiwiTWVzc2FnZVR5cGUiLCJOb25lIiwiZ2V0TWVzc2FnZVR5cGVGcm9tQ3JpdGljYWxpdHlUeXBlIiwiQ3JpdGljYWxpdHlDYWxjdWxhdGlvbiIsImNyaXRpY2FsaXR5Q2FsY3VsYXRpb25Nb2RlIiwiSW1wcm92ZW1lbnREaXJlY3Rpb24iLCJjcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcyIsInB1c2giLCJEZXZpYXRpb25SYW5nZUxvd1ZhbHVlIiwiVG9sZXJhbmNlUmFuZ2VMb3dWYWx1ZSIsIkFjY2VwdGFuY2VSYW5nZUxvd1ZhbHVlIiwiQWNjZXB0YW5jZVJhbmdlSGlnaFZhbHVlIiwiVG9sZXJhbmNlUmFuZ2VIaWdoVmFsdWUiLCJEZXZpYXRpb25SYW5nZUhpZ2hWYWx1ZSIsInVwZGF0ZVRyZW5kIiwiVHJlbmQiLCJ0cmVuZFByb3BlcnR5IiwidHJlbmRQYXRoIiwidHJlbmRWYWx1ZSIsIlRyZW5kQ2FsY3VsYXRpb24iLCJ0cmVuZENhbGN1bGF0aW9uSXNSZWxhdGl2ZSIsIklzUmVsYXRpdmVEaWZmZXJlbmNlIiwiUmVmZXJlbmNlVmFsdWUiLCJyZWZlcmVuY2VQcm9wZXJ0eSIsInRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VQYXRoIiwidHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVZhbHVlIiwidHJlbmRDYWxjdWxhdGlvblRyZXNob2xkcyIsIlN0cm9uZ0Rvd25EaWZmZXJlbmNlIiwiRG93bkRpZmZlcmVuY2UiLCJVcERpZmZlcmVuY2UiLCJTdHJvbmdVcERpZmZlcmVuY2UiLCJ1cGRhdGVUYXJnZXQiLCJUYXJnZXRWYWx1ZSIsInRhcmdldFByb3BlcnR5IiwidGFyZ2V0UGF0aCIsInRhcmdldFZhbHVlIiwiZ2V0TmF2aWdhdGlvbkluZm9Gcm9tUHJvcGVydHkiLCJwcm9wZXJ0eSIsInNlbWFudGljT2JqZWN0QW5ub3RhdGlvbiIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwiYW5ub3RhdGlvbktleSIsImFubm90YXRpb24iLCJpc0Fubm90YXRpb25PZlRlcm0iLCJxdWFsaWZpZXIiLCJyZXN1bHQiLCJzZW1hbnRpY09iamVjdCIsInVuYXZhaWxhYmxlQWN0aW9ucyIsImtleSIsImlzQ3VzdG9tS1BJQ29uZmlndXJhdGlvbiIsImtwaUNvbmZpZyIsInRlbXBsYXRlIiwiY3JlYXRlQW5hbHl0aWNhbEtQSURlZmluaXRpb24iLCJjb252ZXJ0ZXJDb250ZXh0Iiwia3BpTmFtZSIsImtwaUNvbnZlcnRlckNvbnRleHQiLCJnZXRDb252ZXJ0ZXJDb250ZXh0Rm9yIiwiZW50aXR5U2V0IiwiQWdncmVnYXRpb25IZWxwZXIiLCJnZXRFbnRpdHlUeXBlIiwiaXNBbmFseXRpY3NTdXBwb3J0ZWQiLCJnZXREaWFnbm9zdGljcyIsImFkZElzc3VlIiwiSXNzdWVDYXRlZ29yeSIsIkFubm90YXRpb24iLCJJc3N1ZVNldmVyaXR5IiwiTWVkaXVtIiwiSXNzdWVUeXBlIiwiS1BJX0lTU1VFUyIsIk5PX0FOQUxZVElDUyIsInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uIiwibmF2aWdhdGlvbkluZm8iLCJhS1BJQW5ub3RhdGlvbnMiLCJnZXRBbm5vdGF0aW9uc0J5VGVybSIsInRhcmdldEtQSSIsImtwaSIsIkRhdGFQb2ludCIsIlNlbGVjdGlvblZhcmlhbnQiLCJEZXRhaWwiLCJEZWZhdWx0UHJlc2VudGF0aW9uVmFyaWFudCIsIlZpc3VhbGl6YXRpb25zIiwidml6IiwiaXNBbm5vdGF0aW9uT2ZUeXBlIiwiU2VtYW50aWNPYmplY3QiLCJhY3Rpb24iLCJBY3Rpb24iLCJhU1BWQW5ub3RhdGlvbnMiLCJ0YXJnZXRTUFYiLCJzcHYiLCJQcmVzZW50YXRpb25WYXJpYW50IiwiS1BJX05PVF9GT1VORCIsIktQSV9ERVRBSUxfTk9UX0ZPVU5EIiwiZGF0YXBvaW50UHJvcGVydHkiLCJNQUlOX1BST1BFUlRZX05PVF9BR0dSRUdBVEFCTEUiLCJjaGFydERlZiIsInR5cGUiLCJpZCIsImdldEtQSUlEIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwidGl0bGUiLCJUaXRsZSIsImRlc2NyaXB0aW9uIiwiRGVzY3JpcHRpb24iLCJzZWxlY3Rpb25WYXJpYW50RmlsdGVyRGVmaW5pdGlvbnMiLCJnZXRGaWx0ZXJEZWZpbml0aW9uc0Zyb21TZWxlY3Rpb25WYXJpYW50IiwiY2hhcnQiLCJkZXRhaWxOYXZpZ2F0aW9uIiwib3V0Ym91bmROYXZpZ2F0aW9uIiwibmF2aWdhdGlvbiIsImNyZWF0ZUtQSURlZmluaXRpb24iLCJnZXRLUElEZWZpbml0aW9ucyIsImtwaUNvbmZpZ3MiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJnZXRLUElDb25maWd1cmF0aW9uIiwia3BpRGVmcyIsIm9EZWYiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIktQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNlbWFudGljT2JqZWN0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCB7IENvbW1vbkFubm90YXRpb25UZXJtcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uXCI7XG5pbXBvcnQgdHlwZSB7XG5cdENoYXJ0LFxuXHRDcml0aWNhbGl0eVR5cGUsXG5cdERhdGFQb2ludCxcblx0RGF0YVBvaW50VHlwZSxcblx0SW1wcm92ZW1lbnREaXJlY3Rpb25UeXBlLFxuXHRLUEksXG5cdFByZXNlbnRhdGlvblZhcmlhbnRUeXBlLFxuXHRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50LFxuXHRTZWxlY3Rpb25WYXJpYW50VHlwZVxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UZXJtcywgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgUGFnZUNvbnRleHRQYXRoVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IElzc3VlQ2F0ZWdvcnksIElzc3VlU2V2ZXJpdHksIElzc3VlVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSXNzdWVNYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSB7IEZpbHRlckRlZmluaXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL1NlbGVjdGlvblZhcmlhbnRIZWxwZXJcIjtcbmltcG9ydCB7IGdldEZpbHRlckRlZmluaXRpb25zRnJvbVNlbGVjdGlvblZhcmlhbnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL1NlbGVjdGlvblZhcmlhbnRIZWxwZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbk9mVGVybSwgaXNBbm5vdGF0aW9uT2ZUeXBlLCBpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB7IE1lc3NhZ2VUeXBlIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIHsgQW5hbHl0aWNhbEtQSUNvbmZpZ3VyYXRpb24sIEN1c3RvbUtQSUNvbmZpZ3VyYXRpb24sIEtQSUNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgQWdncmVnYXRpb25IZWxwZXIgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9BZ2dyZWdhdGlvblwiO1xuaW1wb3J0IHsgZ2V0S1BJSUQgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9JRFwiO1xuaW1wb3J0IHsgZ2V0TWVzc2FnZVR5cGVGcm9tQ3JpdGljYWxpdHlUeXBlIH0gZnJvbSBcIi4vQ3JpdGljYWxpdHlcIjtcblxuZXhwb3J0IHR5cGUgTmF2aWdhdGlvbkluZm8gPSB7XG5cdHNlbWFudGljT2JqZWN0Pzogc3RyaW5nO1xuXHRhY3Rpb24/OiBzdHJpbmc7XG5cdHVuYXZhaWxhYmxlQWN0aW9ucz86IHN0cmluZ1tdO1xuXHRvdXRib3VuZE5hdmlnYXRpb24/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBLUElDaGFydERlZmluaXRpb24gPSB7XG5cdGNoYXJ0VHlwZTogc3RyaW5nO1xuXHRkaW1lbnNpb25zOiB7IG5hbWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgcm9sZT86IHN0cmluZyB9W107XG5cdG1lYXN1cmVzOiB7IG5hbWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgcm9sZT86IHN0cmluZyB9W107XG5cdHNvcnRPcmRlcj86IHsgbmFtZTogc3RyaW5nOyBkZXNjZW5kaW5nOiBib29sZWFuIH1bXTtcblx0bWF4SXRlbXM/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBBbmFseXRpY2FsS1BJRGVmaW5pdGlvbiA9IHtcblx0dHlwZTogXCJBbmFseXRpY2FsXCI7XG5cdGlkOiBzdHJpbmc7XG5cdGVudGl0eVNldDogc3RyaW5nO1xuXHRkYXRhcG9pbnQ6IHtcblx0XHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRcdHByb3BlcnR5UGF0aDogc3RyaW5nO1xuXHRcdHVuaXQ/OiB7XG5cdFx0XHR2YWx1ZTogc3RyaW5nO1xuXHRcdFx0aXNQYXRoOiBib29sZWFuO1xuXHRcdFx0aXNDdXJyZW5jeTogYm9vbGVhbjtcblx0XHR9O1xuXHRcdGNyaXRpY2FsaXR5UGF0aD86IHN0cmluZztcblx0XHRjcml0aWNhbGl0eVZhbHVlPzogTWVzc2FnZVR5cGU7XG5cdFx0Y3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGU/OiBJbXByb3ZlbWVudERpcmVjdGlvblR5cGU7XG5cdFx0Y3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHM/OiAobnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbClbXTtcblx0XHR0aXRsZT86IHN0cmluZztcblx0XHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0XHR0cmVuZFBhdGg/OiBzdHJpbmc7XG5cdFx0dHJlbmRWYWx1ZT86IHN0cmluZztcblx0XHR0cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlVmFsdWU/OiBudW1iZXI7XG5cdFx0dHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVBhdGg/OiBzdHJpbmc7XG5cdFx0dHJlbmRDYWxjdWxhdGlvblRyZXNob2xkcz86IChudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKVtdO1xuXHRcdHRyZW5kQ2FsY3VsYXRpb25Jc1JlbGF0aXZlPzogYm9vbGVhbjtcblx0XHR0YXJnZXRWYWx1ZT86IG51bWJlcjtcblx0XHR0YXJnZXRQYXRoPzogc3RyaW5nO1xuXHR9O1xuXHRjaGFydDogS1BJQ2hhcnREZWZpbml0aW9uO1xuXHRzZWxlY3Rpb25WYXJpYW50RmlsdGVyRGVmaW5pdGlvbnM/OiBGaWx0ZXJEZWZpbml0aW9uW107XG5cdG5hdmlnYXRpb24/OiBOYXZpZ2F0aW9uSW5mbztcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUtQSURlZmluaXRpb24gPSB7XG5cdHR5cGU6IFwiQ3VzdG9tXCI7XG5cdGtleTogc3RyaW5nO1xuXHR0ZW1wbGF0ZTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEtQSURlZmluaXRpb24gPSBBbmFseXRpY2FsS1BJRGVmaW5pdGlvbiB8IEN1c3RvbUtQSURlZmluaXRpb247XG5cbmNvbnN0IERldmlhdGlvbkluZGljYXRvckZyb21UcmVuZFR5cGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG5cdFwiVUkuVHJlbmRUeXBlL1N0cm9uZ1VwXCI6IFwiVXBcIixcblx0XCJVSS5UcmVuZFR5cGUvVXBcIjogXCJVcFwiLFxuXHRcIlVJLlRyZW5kVHlwZS9TdHJvbmdEb3duXCI6IFwiRG93blwiLFxuXHRcIlVJLlRyZW5kVHlwZS9Eb3duXCI6IFwiRG93blwiLFxuXHRcIlVJLlRyZW5kVHlwZS9TaWRld2F5c1wiOiBcIk5vbmVcIlxufTtcblxuY29uc3QgS1BJQ2hhcnRUeXBlRnJvbVVJOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuXHRcIlVJLkNoYXJ0VHlwZS9Db2x1bW5TdGFja2VkXCI6IFwiU3RhY2tlZENvbHVtblwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9CYXJTdGFja2VkXCI6IFwiU3RhY2tlZEJhclwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9Eb251dFwiOiBcIkRvbnV0XCIsXG5cdFwiVUkuQ2hhcnRUeXBlL0xpbmVcIjogXCJMaW5lXCIsXG5cdFwiVUkuQ2hhcnRUeXBlL0J1YmJsZVwiOiBcImJ1YmJsZVwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9Db2x1bW5cIjogXCJjb2x1bW5cIixcblx0XCJVSS5DaGFydFR5cGUvQmFyXCI6IFwiYmFyXCIsXG5cdFwiVUkuQ2hhcnRUeXBlL1ZlcnRpY2FsQnVsbGV0XCI6IFwidmVydGljYWxfYnVsbGV0XCIsXG5cdFwiVUkuQ2hhcnRUeXBlL0NvbWJpbmF0aW9uXCI6IFwiY29tYmluYXRpb25cIixcblx0XCJVSS5DaGFydFR5cGUvU2NhdHRlclwiOiBcInNjYXR0ZXJcIlxufTtcblxuZnVuY3Rpb24gY29udmVydEtQSUNoYXJ0KGNoYXJ0QW5ub3RhdGlvbjogQ2hhcnQsIHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uOiBQcmVzZW50YXRpb25WYXJpYW50VHlwZSk6IEtQSUNoYXJ0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG5cdGlmIChjaGFydEFubm90YXRpb24uTWVhc3VyZXMgPT09IHVuZGVmaW5lZCkge1xuXHRcdC8vIFdlIG5lZWQgYXQgbGVhc3QgMSBtZWFzdXJlIChidXQgbm8gZGltZW5zaW9uIGlzIGFsbG93ZWQsIGUuZy4gZm9yIGJ1YmJsZSBjaGFydClcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Y29uc3QgY2hhckRpbWVuc2lvbnMgPSBjaGFydEFubm90YXRpb24uRGltZW5zaW9uc1xuXHRcdD8gY2hhcnRBbm5vdGF0aW9uLkRpbWVuc2lvbnMubWFwKChwcm9wZXJ0eVBhdGgpID0+IHtcblx0XHRcdFx0Y29uc3QgZGltQXR0cmlidXRlID0gY2hhcnRBbm5vdGF0aW9uLkRpbWVuc2lvbkF0dHJpYnV0ZXM/LmZpbmQoKGF0dHJpYnV0ZSkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBhdHRyaWJ1dGUuRGltZW5zaW9uPy52YWx1ZSA9PT0gcHJvcGVydHlQYXRoLnZhbHVlO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRuYW1lOiBwcm9wZXJ0eVBhdGgudmFsdWUsXG5cdFx0XHRcdFx0bGFiZWw6IHByb3BlcnR5UGF0aC4kdGFyZ2V0Py5hbm5vdGF0aW9ucy5Db21tb24/LkxhYmVsPy50b1N0cmluZygpIHx8IHByb3BlcnR5UGF0aC52YWx1ZSxcblx0XHRcdFx0XHRyb2xlOiBkaW1BdHRyaWJ1dGU/LlJvbGU/LnJlcGxhY2UoXCJVSS5DaGFydERpbWVuc2lvblJvbGVUeXBlL1wiLCBcIlwiKVxuXHRcdFx0XHR9O1xuXHRcdCAgfSlcblx0XHQ6IFtdO1xuXG5cdGNvbnN0IGNoYXJ0TWVhc3VyZXMgPSBjaGFydEFubm90YXRpb24uTWVhc3VyZXMubWFwKChwcm9wZXJ0eVBhdGgpID0+IHtcblx0XHRjb25zdCBtZWFzdXJlQXR0cmlidXRlID0gY2hhcnRBbm5vdGF0aW9uLk1lYXN1cmVBdHRyaWJ1dGVzPy5maW5kKChhdHRyaWJ1dGUpID0+IHtcblx0XHRcdHJldHVybiBhdHRyaWJ1dGUuTWVhc3VyZT8udmFsdWUgPT09IHByb3BlcnR5UGF0aC52YWx1ZTtcblx0XHR9KTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0bmFtZTogcHJvcGVydHlQYXRoLnZhbHVlLFxuXHRcdFx0bGFiZWw6IHByb3BlcnR5UGF0aC4kdGFyZ2V0Py5hbm5vdGF0aW9ucy5Db21tb24/LkxhYmVsPy50b1N0cmluZygpIHx8IHByb3BlcnR5UGF0aC52YWx1ZSxcblx0XHRcdHJvbGU6IG1lYXN1cmVBdHRyaWJ1dGU/LlJvbGU/LnJlcGxhY2UoXCJVSS5DaGFydE1lYXN1cmVSb2xlVHlwZS9cIiwgXCJcIilcblx0XHR9O1xuXHR9KTtcblxuXHRyZXR1cm4ge1xuXHRcdGNoYXJ0VHlwZTogS1BJQ2hhcnRUeXBlRnJvbVVJW2NoYXJ0QW5ub3RhdGlvbi5DaGFydFR5cGVdIHx8IFwiTGluZVwiLFxuXHRcdGRpbWVuc2lvbnM6IGNoYXJEaW1lbnNpb25zLFxuXHRcdG1lYXN1cmVzOiBjaGFydE1lYXN1cmVzLFxuXHRcdHNvcnRPcmRlcjogcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24/LlNvcnRPcmRlcj8ubWFwKChzb3J0T3JkZXIpID0+IHtcblx0XHRcdHJldHVybiB7IG5hbWU6IHNvcnRPcmRlci5Qcm9wZXJ0eT8udmFsdWUgfHwgXCJcIiwgZGVzY2VuZGluZzogISFzb3J0T3JkZXIuRGVzY2VuZGluZyB9O1xuXHRcdH0pLFxuXHRcdG1heEl0ZW1zOiBwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbj8uTWF4SXRlbXM/LnZhbHVlT2YoKSBhcyBudW1iZXJcblx0fTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQ3VycmVuY3koZGF0YXBvaW50QW5ub3RhdGlvbjogRGF0YVBvaW50VHlwZSwga3BpRGVmOiBBbmFseXRpY2FsS1BJRGVmaW5pdGlvbik6IHZvaWQge1xuXHRjb25zdCB0YXJnZXRWYWx1ZVByb3BlcnR5ID0gZGF0YXBvaW50QW5ub3RhdGlvbi5WYWx1ZS4kdGFyZ2V0IGFzIFByb3BlcnR5O1xuXHRpZiAodGFyZ2V0VmFsdWVQcm9wZXJ0eS5hbm5vdGF0aW9ucy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kpIHtcblx0XHRjb25zdCBjdXJyZW5jeSA9IHRhcmdldFZhbHVlUHJvcGVydHkuYW5ub3RhdGlvbnMuTWVhc3VyZXM/LklTT0N1cnJlbmN5O1xuXHRcdGlmIChpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbihjdXJyZW5jeSkpIHtcblx0XHRcdGtwaURlZi5kYXRhcG9pbnQudW5pdCA9IHtcblx0XHRcdFx0dmFsdWU6IChjdXJyZW5jeS4kdGFyZ2V0IGFzIHVua25vd24gYXMgUHJvcGVydHkpLm5hbWUsXG5cdFx0XHRcdGlzQ3VycmVuY3k6IHRydWUsXG5cdFx0XHRcdGlzUGF0aDogdHJ1ZVxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC51bml0ID0ge1xuXHRcdFx0XHR2YWx1ZTogY3VycmVuY3kudG9TdHJpbmcoKSxcblx0XHRcdFx0aXNDdXJyZW5jeTogdHJ1ZSxcblx0XHRcdFx0aXNQYXRoOiBmYWxzZVxuXHRcdFx0fTtcblx0XHR9XG5cdH0gZWxzZSBpZiAodGFyZ2V0VmFsdWVQcm9wZXJ0eS5hbm5vdGF0aW9ucy5NZWFzdXJlcz8uVW5pdCkge1xuXHRcdGNvbnN0IHVuaXQgPSB0YXJnZXRWYWx1ZVByb3BlcnR5LmFubm90YXRpb25zLk1lYXN1cmVzPy5Vbml0O1xuXHRcdGlmIChpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbih1bml0KSkge1xuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC51bml0ID0ge1xuXHRcdFx0XHR2YWx1ZTogKHVuaXQuJHRhcmdldCBhcyB1bmtub3duIGFzIFByb3BlcnR5KS5uYW1lLFxuXHRcdFx0XHRpc0N1cnJlbmN5OiBmYWxzZSxcblx0XHRcdFx0aXNQYXRoOiB0cnVlXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnVuaXQgPSB7XG5cdFx0XHRcdHZhbHVlOiB1bml0LnRvU3RyaW5nKCksXG5cdFx0XHRcdGlzQ3VycmVuY3k6IGZhbHNlLFxuXHRcdFx0XHRpc1BhdGg6IGZhbHNlXG5cdFx0XHR9O1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiB1cGRhdGVDcml0aWNhbGl0eShcblx0ZGF0YXBvaW50QW5ub3RhdGlvbjogRGF0YVBvaW50VHlwZSxcblx0YWdncmVnYXRpb25IZWxwZXI6IEFnZ3JlZ2F0aW9uSGVscGVyLFxuXHRrcGlEZWY6IEFuYWx5dGljYWxLUElEZWZpbml0aW9uXG4pOiB2b2lkIHtcblx0aWYgKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkpIHtcblx0XHRpZiAoaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24oZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eSkpIHtcblx0XHRcdC8vIENyaXRpY2FsaXR5IGlzIGEgcGF0aCAtLT4gY2hlY2sgaWYgdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgaXMgYWdncmVnYXRhYmxlXG5cdFx0XHRjb25zdCBjcml0aWNhbGl0eVByb3BlcnR5ID0gZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eS4kdGFyZ2V0O1xuXHRcdFx0aWYgKGNyaXRpY2FsaXR5UHJvcGVydHkgJiYgYWdncmVnYXRpb25IZWxwZXIuaXNQcm9wZXJ0eUFnZ3JlZ2F0YWJsZShjcml0aWNhbGl0eVByb3BlcnR5KSkge1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5UGF0aCA9IGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkucGF0aDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFRoZSBwcm9wZXJ0eSBpc24ndCBhZ2dyZWdhdGFibGUgLS0+IHdlIGlnbm9yZSBpdFxuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5VmFsdWUgPSBNZXNzYWdlVHlwZS5Ob25lO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBDcml0aWNhbGl0eSBpcyBhbiBlbnVtIFZhbHVlIC0tPiBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgc3RhdGljIHZhbHVlXG5cdFx0XHQvLyBXZSBpZ25vcmUgYWxsIHRoZSBvdGhlciB0eXBlIG9mIGR5bmFtaWMgZXhwcmVzc2lvbnMgZm9yIG5vd1xuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eVZhbHVlID0gZ2V0TWVzc2FnZVR5cGVGcm9tQ3JpdGljYWxpdHlUeXBlKFxuXHRcdFx0XHRkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5IGFzIHVua25vd24gYXMgQ3JpdGljYWxpdHlUeXBlXG5cdFx0XHQpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24pIHtcblx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25Nb2RlID0gZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkltcHJvdmVtZW50RGlyZWN0aW9uO1xuXHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMgPSBbXTtcblx0XHRzd2l0Y2ggKGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGUpIHtcblx0XHRcdGNhc2UgXCJVSS5JbXByb3ZlbWVudERpcmVjdGlvblR5cGUvVGFyZ2V0XCI6XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uRGV2aWF0aW9uUmFuZ2VMb3dWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uVG9sZXJhbmNlUmFuZ2VMb3dWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uQWNjZXB0YW5jZVJhbmdlTG93VmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkFjY2VwdGFuY2VSYW5nZUhpZ2hWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uVG9sZXJhbmNlUmFuZ2VIaWdoVmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkRldmlhdGlvblJhbmdlSGlnaFZhbHVlKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJVSS5JbXByb3ZlbWVudERpcmVjdGlvblR5cGUvTWluaW1pemVcIjpcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcy5wdXNoKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5BY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLlRvbGVyYW5jZVJhbmdlSGlnaFZhbHVlKTtcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcy5wdXNoKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5EZXZpYXRpb25SYW5nZUhpZ2hWYWx1ZSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiVUkuSW1wcm92ZW1lbnREaXJlY3Rpb25UeXBlL01heGltaXplXCI6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkRldmlhdGlvblJhbmdlTG93VmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLlRvbGVyYW5jZVJhbmdlTG93VmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkFjY2VwdGFuY2VSYW5nZUxvd1ZhbHVlKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0fVxufVxuXG5mdW5jdGlvbiB1cGRhdGVUcmVuZChkYXRhcG9pbnRBbm5vdGF0aW9uOiBEYXRhUG9pbnRUeXBlLCBhZ2dyZWdhdGlvbkhlbHBlcjogQWdncmVnYXRpb25IZWxwZXIsIGtwaURlZjogQW5hbHl0aWNhbEtQSURlZmluaXRpb24pOiB2b2lkIHtcblx0aWYgKGRhdGFwb2ludEFubm90YXRpb24uVHJlbmQpIHtcblx0XHRpZiAoaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24oZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZCkpIHtcblx0XHRcdC8vIFRyZW5kIGlzIGEgcGF0aCAtLT4gY2hlY2sgaWYgdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgaXMgYWdncmVnYXRhYmxlXG5cdFx0XHRjb25zdCB0cmVuZFByb3BlcnR5ID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZC4kdGFyZ2V0O1xuXHRcdFx0aWYgKHRyZW5kUHJvcGVydHkgJiYgYWdncmVnYXRpb25IZWxwZXIuaXNQcm9wZXJ0eUFnZ3JlZ2F0YWJsZSh0cmVuZFByb3BlcnR5KSkge1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kUGF0aCA9IGRhdGFwb2ludEFubm90YXRpb24uVHJlbmQucGF0aDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFRoZSBwcm9wZXJ0eSBpc24ndCBhZ2dyZWdhdGFibGUgLS0+IHdlIGlnbm9yZSBpdFxuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kVmFsdWUgPSBcIk5vbmVcIjtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gVHJlbmQgaXMgYW4gZW51bSBWYWx1ZSAtLT4gZ2V0IHRoZSBjb3JyZXNwb25kaW5nIHN0YXRpYyB2YWx1ZVxuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC50cmVuZFZhbHVlID0gRGV2aWF0aW9uSW5kaWNhdG9yRnJvbVRyZW5kVHlwZVtkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kXSB8fCBcIk5vbmVcIjtcblx0XHR9XG5cdH0gZWxzZSBpZiAoZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uKSB7XG5cdFx0a3BpRGVmLmRhdGFwb2ludC50cmVuZENhbGN1bGF0aW9uSXNSZWxhdGl2ZSA9IGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5Jc1JlbGF0aXZlRGlmZmVyZW5jZSA/IHRydWUgOiBmYWxzZTtcblx0XHRpZiAoZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uLlJlZmVyZW5jZVZhbHVlLiR0YXJnZXQpIHtcblx0XHRcdC8vIFJlZmVyZW5jZSB2YWx1ZSBpcyBhIHBhdGggLS0+IGNoZWNrIGlmIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGlzIGFnZ3JlZ2F0YWJsZVxuXHRcdFx0Y29uc3QgcmVmZXJlbmNlUHJvcGVydHkgPSBkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24uUmVmZXJlbmNlVmFsdWUuJHRhcmdldCBhcyBQcm9wZXJ0eTtcblx0XHRcdGlmIChhZ2dyZWdhdGlvbkhlbHBlci5pc1Byb3BlcnR5QWdncmVnYXRhYmxlKHJlZmVyZW5jZVByb3BlcnR5KSkge1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VQYXRoID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uLlJlZmVyZW5jZVZhbHVlLnBhdGg7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBUaGUgcHJvcGVydHkgaXNuJ3QgYWdncmVnYXRhYmxlIC0tPiB3ZSBpZ25vcmUgaXQgYW5kIHN3aXRjaCBiYWNrIHRvIHRyZW5kICdOb25lJ1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kVmFsdWUgPSBcIk5vbmVcIjtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gUmVmZXJlbmNlIHZhbHVlIGlzIGEgc3RhdGljIHZhbHVlXG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VWYWx1ZSA9IGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5SZWZlcmVuY2VWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKGtwaURlZi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVBhdGggIT09IHVuZGVmaW5lZCB8fCBrcGlEZWYuZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25UcmVzaG9sZHMgPSBbXG5cdFx0XHRcdGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5TdHJvbmdEb3duRGlmZmVyZW5jZS52YWx1ZU9mKCksXG5cdFx0XHRcdGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5Eb3duRGlmZmVyZW5jZS52YWx1ZU9mKCksXG5cdFx0XHRcdGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5VcERpZmZlcmVuY2UudmFsdWVPZigpLFxuXHRcdFx0XHRkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24uU3Ryb25nVXBEaWZmZXJlbmNlLnZhbHVlT2YoKVxuXHRcdFx0XTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0a3BpRGVmLmRhdGFwb2ludC50cmVuZFZhbHVlID0gXCJOb25lXCI7XG5cdH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlVGFyZ2V0KGRhdGFwb2ludEFubm90YXRpb246IERhdGFQb2ludFR5cGUsIGFnZ3JlZ2F0aW9uSGVscGVyOiBBZ2dyZWdhdGlvbkhlbHBlciwga3BpRGVmOiBBbmFseXRpY2FsS1BJRGVmaW5pdGlvbik6IHZvaWQge1xuXHRpZiAoZGF0YXBvaW50QW5ub3RhdGlvbi5UYXJnZXRWYWx1ZSkge1xuXHRcdGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLlRhcmdldFZhbHVlLiR0YXJnZXQpIHtcblx0XHRcdC8vIFRhcmdldCB2YWx1ZSBpcyBhIHBhdGggLS0+IGNoZWNrIGlmIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGlzIGFnZ3JlZ2F0YWJsZSAob3RoZXJ3aXNlIGlnbm9yZSlcblx0XHRcdGNvbnN0IHRhcmdldFByb3BlcnR5ID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UYXJnZXRWYWx1ZS4kdGFyZ2V0IGFzIFByb3BlcnR5O1xuXHRcdFx0aWYgKGFnZ3JlZ2F0aW9uSGVscGVyLmlzUHJvcGVydHlBZ2dyZWdhdGFibGUodGFyZ2V0UHJvcGVydHkpKSB7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQudGFyZ2V0UGF0aCA9IGRhdGFwb2ludEFubm90YXRpb24uVGFyZ2V0VmFsdWUucGF0aDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gVGFyZ2V0IHZhbHVlIGlzIGEgc3RhdGljIHZhbHVlXG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRhcmdldFZhbHVlID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UYXJnZXRWYWx1ZTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0TmF2aWdhdGlvbkluZm9Gcm9tUHJvcGVydHkocHJvcGVydHk6IFByb3BlcnR5KTogTmF2aWdhdGlvbkluZm8gfCB1bmRlZmluZWQge1xuXHRjb25zdCBhbm5vdGF0aW9ucyA9IHByb3BlcnR5LmFubm90YXRpb25zW1wiQ29tbW9uXCJdIHx8IHt9O1xuXHQvLyBMb29rIGZvciB0aGUgc2VtYW50aWNPYmplY3QgYW5ub3RhdGlvbiAoaWYgYW55KVxuXHRsZXQgc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uOiBTZW1hbnRpY09iamVjdCB8IHVuZGVmaW5lZDtcblx0T2JqZWN0LmtleXMoYW5ub3RhdGlvbnMpLmZvckVhY2goKGFubm90YXRpb25LZXkpID0+IHtcblx0XHRjb25zdCBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnNbYW5ub3RhdGlvbktleSBhcyBrZXlvZiB0eXBlb2YgYW5ub3RhdGlvbnNdO1xuXHRcdGlmIChpc0Fubm90YXRpb25PZlRlcm0oYW5ub3RhdGlvbiwgQ29tbW9uQW5ub3RhdGlvblRlcm1zLlNlbWFudGljT2JqZWN0KSkge1xuXHRcdFx0aWYgKCFhbm5vdGF0aW9uLnF1YWxpZmllciB8fCAhc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uKSB7XG5cdFx0XHRcdC8vIFdlIGFsd2F5cyB0YWtlIHRoZSBhbm5vdGF0aW9uIHdpdGhvdXQgcXVhbGlmaWVyIGlmIHRoZXJlJ3Mgb25lLCBvdGhlcndpc2Ugd2UgdGFrZSB0aGUgZmlyc3Qgb25lXG5cdFx0XHRcdHNlbWFudGljT2JqZWN0QW5ub3RhdGlvbiA9IGFubm90YXRpb24gYXMgU2VtYW50aWNPYmplY3Q7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcblxuXHRpZiAoc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uKSB7XG5cdFx0Y29uc3QgcmVzdWx0OiBOYXZpZ2F0aW9uSW5mbyA9IHtcblx0XHRcdHNlbWFudGljT2JqZWN0OiBzZW1hbnRpY09iamVjdEFubm90YXRpb24udG9TdHJpbmcoKSxcblx0XHRcdHVuYXZhaWxhYmxlQWN0aW9uczogW11cblx0XHR9O1xuXG5cdFx0Ly8gTG9vayBmb3IgdGhlIHVuYXZhaWxhYmxlIGFjdGlvbnMgKGlmIGFueSlcblx0XHRjb25zdCBhbm5vdGF0aW9uS2V5ID0gT2JqZWN0LmtleXMoYW5ub3RhdGlvbnMpLmZpbmQoKGtleSkgPT4ge1xuXHRcdFx0Y29uc3QgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zW2tleSBhcyBrZXlvZiB0eXBlb2YgYW5ub3RhdGlvbnNdO1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0aXNBbm5vdGF0aW9uT2ZUZXJtKGFubm90YXRpb24sIENvbW1vbkFubm90YXRpb25UZXJtcy5TZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucykgJiZcblx0XHRcdFx0YW5ub3RhdGlvbi5xdWFsaWZpZXIgPT09IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvbj8ucXVhbGlmaWVyXG5cdFx0XHQpO1xuXHRcdH0pO1xuXHRcdGlmIChhbm5vdGF0aW9uS2V5KSB7XG5cdFx0XHRyZXN1bHQudW5hdmFpbGFibGVBY3Rpb25zID0gYW5ub3RhdGlvbnNbYW5ub3RhdGlvbktleSBhcyBrZXlvZiB0eXBlb2YgYW5ub3RhdGlvbnNdIGFzIHN0cmluZ1tdO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxufVxuXG5mdW5jdGlvbiBpc0N1c3RvbUtQSUNvbmZpZ3VyYXRpb24oa3BpQ29uZmlnOiBLUElDb25maWd1cmF0aW9uKToga3BpQ29uZmlnIGlzIEN1c3RvbUtQSUNvbmZpZ3VyYXRpb24ge1xuXHRyZXR1cm4gISEoa3BpQ29uZmlnIGFzIEN1c3RvbUtQSUNvbmZpZ3VyYXRpb24pLnRlbXBsYXRlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBbmFseXRpY2FsS1BJRGVmaW5pdGlvbihcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+LFxuXHRrcGlDb25maWc6IEFuYWx5dGljYWxLUElDb25maWd1cmF0aW9uLFxuXHRrcGlOYW1lOiBzdHJpbmdcbik6IEFuYWx5dGljYWxLUElEZWZpbml0aW9uIHwgdW5kZWZpbmVkIHtcblx0Y29uc3Qga3BpQ29udmVydGVyQ29udGV4dCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVyQ29udGV4dEZvcjxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+KGAvJHtrcGlDb25maWcuZW50aXR5U2V0fWApO1xuXHRjb25zdCBhZ2dyZWdhdGlvbkhlbHBlciA9IG5ldyBBZ2dyZWdhdGlvbkhlbHBlcihrcGlDb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKSwga3BpQ29udmVydGVyQ29udGV4dCk7XG5cblx0aWYgKCFhZ2dyZWdhdGlvbkhlbHBlci5pc0FuYWx5dGljc1N1cHBvcnRlZCgpKSB7XG5cdFx0Ly8gVGhlIGVudGl0eSBkb2Vzbid0IHN1cHBvcnQgYW5hbHl0aWNhbCBxdWVyaWVzXG5cdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0LmdldERpYWdub3N0aWNzKClcblx0XHRcdC5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuTWVkaXVtLCBJc3N1ZVR5cGUuS1BJX0lTU1VFUy5OT19BTkFMWVRJQ1MgKyBrcGlDb25maWcuZW50aXR5U2V0KTtcblxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRsZXQgc2VsZWN0aW9uVmFyaWFudEFubm90YXRpb246IFNlbGVjdGlvblZhcmlhbnRUeXBlIHwgdW5kZWZpbmVkO1xuXHRsZXQgZGF0YXBvaW50QW5ub3RhdGlvbjogRGF0YVBvaW50VHlwZSB8IHVuZGVmaW5lZDtcblx0bGV0IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uOiBQcmVzZW50YXRpb25WYXJpYW50VHlwZSB8IHVuZGVmaW5lZDtcblx0bGV0IGNoYXJ0QW5ub3RhdGlvbjogQ2hhcnQgfCB1bmRlZmluZWQ7XG5cdGxldCBuYXZpZ2F0aW9uSW5mbzogTmF2aWdhdGlvbkluZm8gfCB1bmRlZmluZWQ7XG5cblx0Ly8gU2VhcmNoIGZvciBhIEtQSSB3aXRoIHRoZSBxdWFsaWZpZXIgZnJtbyB0aGUgbWFuaWZlc3Rcblx0Y29uc3QgYUtQSUFubm90YXRpb25zID0ga3BpQ29udmVydGVyQ29udGV4dC5nZXRBbm5vdGF0aW9uc0J5VGVybShcIlVJXCIsIFVJQW5ub3RhdGlvblRlcm1zLktQSSkgYXMgS1BJW107XG5cdGNvbnN0IHRhcmdldEtQSSA9IGFLUElBbm5vdGF0aW9ucy5maW5kKChrcGkpID0+IHtcblx0XHRyZXR1cm4ga3BpLnF1YWxpZmllciA9PT0ga3BpQ29uZmlnLnF1YWxpZmllcjtcblx0fSk7XG5cdGlmICh0YXJnZXRLUEkpIHtcblx0XHRkYXRhcG9pbnRBbm5vdGF0aW9uID0gdGFyZ2V0S1BJLkRhdGFQb2ludDtcblx0XHRzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbiA9IHRhcmdldEtQSS5TZWxlY3Rpb25WYXJpYW50O1xuXHRcdHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gdGFyZ2V0S1BJLkRldGFpbD8uRGVmYXVsdFByZXNlbnRhdGlvblZhcmlhbnQ7XG5cdFx0Y2hhcnRBbm5vdGF0aW9uID0gcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24/LlZpc3VhbGl6YXRpb25zPy5maW5kKCh2aXopID0+IHtcblx0XHRcdHJldHVybiBpc0Fubm90YXRpb25PZlR5cGU8Q2hhcnQ+KHZpei4kdGFyZ2V0LCBVSUFubm90YXRpb25UeXBlcy5DaGFydERlZmluaXRpb25UeXBlKTtcblx0XHR9KT8uJHRhcmdldCBhcyBDaGFydDtcblxuXHRcdGlmICh0YXJnZXRLUEkuRGV0YWlsPy5TZW1hbnRpY09iamVjdCkge1xuXHRcdFx0bmF2aWdhdGlvbkluZm8gPSB7XG5cdFx0XHRcdHNlbWFudGljT2JqZWN0OiB0YXJnZXRLUEkuRGV0YWlsLlNlbWFudGljT2JqZWN0LnRvU3RyaW5nKCksXG5cdFx0XHRcdGFjdGlvbjogdGFyZ2V0S1BJLkRldGFpbC5BY3Rpb24/LnRvU3RyaW5nKCksXG5cdFx0XHRcdHVuYXZhaWxhYmxlQWN0aW9uczogW11cblx0XHRcdH07XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdC8vIEZhbGxiYWNrOiB0cnkgdG8gZmluZCBhIFNQViB3aXRoIHRoZSBzYW1lIHF1YWxpZmllclxuXHRcdGNvbnN0IGFTUFZBbm5vdGF0aW9ucyA9IGtwaUNvbnZlcnRlckNvbnRleHQuZ2V0QW5ub3RhdGlvbnNCeVRlcm0oXG5cdFx0XHRcIlVJXCIsXG5cdFx0XHRVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG5cdFx0KSBhcyBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50W107XG5cdFx0Y29uc3QgdGFyZ2V0U1BWID0gYVNQVkFubm90YXRpb25zLmZpbmQoKHNwdikgPT4ge1xuXHRcdFx0cmV0dXJuIHNwdi5xdWFsaWZpZXIgPT09IGtwaUNvbmZpZy5xdWFsaWZpZXI7XG5cdFx0fSk7XG5cdFx0aWYgKHRhcmdldFNQVikge1xuXHRcdFx0c2VsZWN0aW9uVmFyaWFudEFubm90YXRpb24gPSB0YXJnZXRTUFYuU2VsZWN0aW9uVmFyaWFudDtcblx0XHRcdHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gdGFyZ2V0U1BWLlByZXNlbnRhdGlvblZhcmlhbnQ7XG5cdFx0XHRkYXRhcG9pbnRBbm5vdGF0aW9uID0gcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24/LlZpc3VhbGl6YXRpb25zPy5maW5kKCh2aXopID0+IHtcblx0XHRcdFx0cmV0dXJuIGlzQW5ub3RhdGlvbk9mVHlwZTxEYXRhUG9pbnQ+KHZpei4kdGFyZ2V0LCBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlKTtcblx0XHRcdH0pPy4kdGFyZ2V0IGFzIERhdGFQb2ludDtcblx0XHRcdGNoYXJ0QW5ub3RhdGlvbiA9IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uPy5WaXN1YWxpemF0aW9ucz8uZmluZCgodml6KSA9PiB7XG5cdFx0XHRcdHJldHVybiBpc0Fubm90YXRpb25PZlR5cGU8Q2hhcnQ+KHZpei4kdGFyZ2V0LCBVSUFubm90YXRpb25UeXBlcy5DaGFydERlZmluaXRpb25UeXBlKTtcblx0XHRcdH0pPy4kdGFyZ2V0IGFzIENoYXJ0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBDb3VsZG4ndCBmaW5kIGEgS1BJIG9yIGEgU1BWIGFubm90YXRpb24gd2l0aCB0aGUgcXVhbGlmaWVyIGZyb20gdGhlIG1hbmlmZXN0XG5cdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdC5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuTWVkaXVtLCBJc3N1ZVR5cGUuS1BJX0lTU1VFUy5LUElfTk9UX0ZPVU5EICsga3BpQ29uZmlnLnF1YWxpZmllcik7XG5cblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cblx0aWYgKCFwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbiB8fCAhZGF0YXBvaW50QW5ub3RhdGlvbiB8fCAhY2hhcnRBbm5vdGF0aW9uKSB7XG5cdFx0Ly8gQ291bGRuJ3QgZmluZCBhIGNoYXJ0IG9yIGRhdGFwb2ludCBkZWZpbml0aW9uXG5cdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0LmdldERpYWdub3N0aWNzKClcblx0XHRcdC5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuTWVkaXVtLCBJc3N1ZVR5cGUuS1BJX0lTU1VFUy5LUElfREVUQUlMX05PVF9GT1VORCArIGtwaUNvbmZpZy5xdWFsaWZpZXIpO1xuXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGNvbnN0IGRhdGFwb2ludFByb3BlcnR5ID0gZGF0YXBvaW50QW5ub3RhdGlvbi5WYWx1ZS4kdGFyZ2V0IGFzIFByb3BlcnR5O1xuXHRpZiAoIWFnZ3JlZ2F0aW9uSGVscGVyLmlzUHJvcGVydHlBZ2dyZWdhdGFibGUoZGF0YXBvaW50UHJvcGVydHkpKSB7XG5cdFx0Ly8gVGhlIG1haW4gcHJvcGVydHkgb2YgdGhlIEtQSSBpcyBub3QgYWdncmVnYXRhYmxlIC0tPiBXZSBjYW4ndCBjYWxjdWxhdGUgaXRzIHZhbHVlIHNvIHdlIGlnbm9yZSB0aGUgS1BJXG5cdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0LmdldERpYWdub3N0aWNzKClcblx0XHRcdC5hZGRJc3N1ZShcblx0XHRcdFx0SXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLFxuXHRcdFx0XHRJc3N1ZVNldmVyaXR5Lk1lZGl1bSxcblx0XHRcdFx0SXNzdWVUeXBlLktQSV9JU1NVRVMuTUFJTl9QUk9QRVJUWV9OT1RfQUdHUkVHQVRBQkxFICsga3BpQ29uZmlnLnF1YWxpZmllclxuXHRcdFx0KTtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Ly8gQ2hhcnQgZGVmaW5pdGlvblxuXHRjb25zdCBjaGFydERlZiA9IGNvbnZlcnRLUElDaGFydChjaGFydEFubm90YXRpb24sIHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uKTtcblx0aWYgKCFjaGFydERlZikge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRjb25zdCBrcGlEZWY6IEFuYWx5dGljYWxLUElEZWZpbml0aW9uID0ge1xuXHRcdHR5cGU6IFwiQW5hbHl0aWNhbFwiLFxuXHRcdGlkOiBcImtwaVRhZy1cIiArIGdldEtQSUlEKGtwaU5hbWUpLFxuXHRcdGVudGl0eVNldDoga3BpQ29uZmlnLmVudGl0eVNldCxcblx0XHRkYXRhcG9pbnQ6IHtcblx0XHRcdHByb3BlcnR5UGF0aDogZGF0YXBvaW50QW5ub3RhdGlvbi5WYWx1ZS5wYXRoLFxuXHRcdFx0YW5ub3RhdGlvblBhdGg6IGtwaUNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChkYXRhcG9pbnRBbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0XHR0aXRsZTogZGF0YXBvaW50QW5ub3RhdGlvbi5UaXRsZT8udG9TdHJpbmcoKSxcblx0XHRcdGRlc2NyaXB0aW9uOiBkYXRhcG9pbnRBbm5vdGF0aW9uLkRlc2NyaXB0aW9uPy50b1N0cmluZygpXG5cdFx0fSxcblx0XHRzZWxlY3Rpb25WYXJpYW50RmlsdGVyRGVmaW5pdGlvbnM6IHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uXG5cdFx0XHQ/IGdldEZpbHRlckRlZmluaXRpb25zRnJvbVNlbGVjdGlvblZhcmlhbnQoc2VsZWN0aW9uVmFyaWFudEFubm90YXRpb24pXG5cdFx0XHQ6IHVuZGVmaW5lZCxcblx0XHRjaGFydDogY2hhcnREZWZcblx0fTtcblxuXHQvLyBOYXZpZ2F0aW9uXG5cdGlmICghbmF2aWdhdGlvbkluZm8pIHtcblx0XHQvLyBObyBuYXZpZ2F0aW9uSW5mbyB3YXMgZm91bmQgaW4gdGhlIEtQSSBhbm5vdGF0aW9uIC0tPiB0cnkgdGhlIG91dGJvdW5kIG5hdmlnYXRpb24gZnJvbSB0aGUgbWFuaWZlc3Rcblx0XHRpZiAoa3BpQ29uZmlnLmRldGFpbE5hdmlnYXRpb24pIHtcblx0XHRcdG5hdmlnYXRpb25JbmZvID0ge1xuXHRcdFx0XHRvdXRib3VuZE5hdmlnYXRpb246IGtwaUNvbmZpZy5kZXRhaWxOYXZpZ2F0aW9uXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBObyBvdXRib3VuZCBuYXZpZ2F0aW9uIGluIHRoZSBtYW5pZmVzdCAtLT4gdHJ5IHRoZSBzZW1hbnRpYyBvYmplY3Qgb24gdGhlIERhdGFwb2ludCB2YWx1ZVxuXHRcdFx0bmF2aWdhdGlvbkluZm8gPSBnZXROYXZpZ2F0aW9uSW5mb0Zyb21Qcm9wZXJ0eShkYXRhcG9pbnRQcm9wZXJ0eSk7XG5cdFx0fVxuXHR9XG5cdGlmIChuYXZpZ2F0aW9uSW5mbykge1xuXHRcdGtwaURlZi5uYXZpZ2F0aW9uID0gbmF2aWdhdGlvbkluZm87XG5cdH1cblxuXHR1cGRhdGVDdXJyZW5jeShkYXRhcG9pbnRBbm5vdGF0aW9uLCBrcGlEZWYpO1xuXHR1cGRhdGVDcml0aWNhbGl0eShkYXRhcG9pbnRBbm5vdGF0aW9uLCBhZ2dyZWdhdGlvbkhlbHBlciwga3BpRGVmKTtcblx0dXBkYXRlVHJlbmQoZGF0YXBvaW50QW5ub3RhdGlvbiwgYWdncmVnYXRpb25IZWxwZXIsIGtwaURlZik7XG5cdHVwZGF0ZVRhcmdldChkYXRhcG9pbnRBbm5vdGF0aW9uLCBhZ2dyZWdhdGlvbkhlbHBlciwga3BpRGVmKTtcblxuXHRyZXR1cm4ga3BpRGVmO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVLUElEZWZpbml0aW9uKFxuXHRrcGlOYW1lOiBzdHJpbmcsXG5cdGtwaUNvbmZpZzogS1BJQ29uZmlndXJhdGlvbixcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBLUElEZWZpbml0aW9uIHwgdW5kZWZpbmVkIHtcblx0aWYgKGlzQ3VzdG9tS1BJQ29uZmlndXJhdGlvbihrcGlDb25maWcpKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHR5cGU6IFwiQ3VzdG9tXCIsXG5cdFx0XHRrZXk6IGtwaU5hbWUsXG5cdFx0XHR0ZW1wbGF0ZToga3BpQ29uZmlnLnRlbXBsYXRlXG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gY3JlYXRlQW5hbHl0aWNhbEtQSURlZmluaXRpb24oY29udmVydGVyQ29udGV4dCwga3BpQ29uZmlnLCBrcGlOYW1lKTtcblx0fVxufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIEtQSSBkZWZpbml0aW9ucyBmcm9tIHRoZSBtYW5pZmVzdCBhbmQgdGhlIGFubm90YXRpb25zLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dCBmb3IgdGhlIHBhZ2VcbiAqIEByZXR1cm5zIFJldHVybnMgYW4gYXJyYXkgb2YgS1BJIGRlZmluaXRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRLUElEZWZpbml0aW9ucyhjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4pOiBLUElEZWZpbml0aW9uW10ge1xuXHRjb25zdCBrcGlDb25maWdzID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKS5nZXRLUElDb25maWd1cmF0aW9uKCksXG5cdFx0a3BpRGVmczogS1BJRGVmaW5pdGlvbltdID0gW107XG5cblx0T2JqZWN0LmtleXMoa3BpQ29uZmlncykuZm9yRWFjaCgoa3BpTmFtZSkgPT4ge1xuXHRcdGNvbnN0IG9EZWYgPSBjcmVhdGVLUElEZWZpbml0aW9uKGtwaU5hbWUsIGtwaUNvbmZpZ3Nba3BpTmFtZV0sIGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdGlmIChvRGVmKSB7XG5cdFx0XHRrcGlEZWZzLnB1c2gob0RlZik7XG5cdFx0fVxuXHR9KTtcblxuXHRyZXR1cm4ga3BpRGVmcztcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztFQWlGQSxNQUFNQSwrQkFBdUQsR0FBRztJQUMvRCx1QkFBdUIsRUFBRSxJQUFJO0lBQzdCLGlCQUFpQixFQUFFLElBQUk7SUFDdkIseUJBQXlCLEVBQUUsTUFBTTtJQUNqQyxtQkFBbUIsRUFBRSxNQUFNO0lBQzNCLHVCQUF1QixFQUFFO0VBQzFCLENBQUM7RUFFRCxNQUFNQyxrQkFBMEMsR0FBRztJQUNsRCw0QkFBNEIsRUFBRSxlQUFlO0lBQzdDLHlCQUF5QixFQUFFLFlBQVk7SUFDdkMsb0JBQW9CLEVBQUUsT0FBTztJQUM3QixtQkFBbUIsRUFBRSxNQUFNO0lBQzNCLHFCQUFxQixFQUFFLFFBQVE7SUFDL0IscUJBQXFC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
@@ -3,6 +3,7 @@ import type { SemanticObject } from "@sap-ux/vocabularies-types/vocabularies/Com
3
3
  import { CommonAnnotationTerms } from "@sap-ux/vocabularies-types/vocabularies/Common";
4
4
  import type {
5
5
  Chart,
6
+ CriticalityType,
6
7
  DataPoint,
7
8
  DataPointType,
8
9
  ImprovementDirectionType,
@@ -192,7 +193,10 @@ function updateCriticality(
192
193
  }
193
194
  } else {
194
195
  // Criticality is an enum Value --> get the corresponding static value
195
- kpiDef.datapoint.criticalityValue = getMessageTypeFromCriticalityType(datapointAnnotation.Criticality);
196
+ // We ignore all the other type of dynamic expressions for now
197
+ kpiDef.datapoint.criticalityValue = getMessageTypeFromCriticalityType(
198
+ datapointAnnotation.Criticality as unknown as CriticalityType
199
+ );
196
200
  }
197
201
  } else if (datapointAnnotation.CriticalityCalculation) {
198
202
  kpiDef.datapoint.criticalityCalculationMode = datapointAnnotation.CriticalityCalculation.ImprovementDirection;
@@ -425,7 +429,7 @@ function createAnalyticalKPIDefinition(
425
429
 
426
430
  const kpiDef: AnalyticalKPIDefinition = {
427
431
  type: "Analytical",
428
- id: getKPIID(kpiName),
432
+ id: "kpiTag-" + getKPIID(kpiName),
429
433
  entitySet: kpiConfig.entitySet,
430
434
  datapoint: {
431
435
  propertyPath: datapointAnnotation.Value.path,