@sapui5/sap.fe.core 1.135.0 → 1.136.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 (217) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +3 -2
  4. package/src/sap/fe/core/ActionRuntime.ts +3 -1
  5. package/src/sap/fe/core/AppComponent.js +6 -4
  6. package/src/sap/fe/core/AppComponent.ts +3 -1
  7. package/src/sap/fe/core/AppStateHandler.js +8 -6
  8. package/src/sap/fe/core/AppStateHandler.ts +7 -5
  9. package/src/sap/fe/core/CommonUtils.js +4 -1
  10. package/src/sap/fe/core/CommonUtils.ts +12 -2
  11. package/src/sap/fe/core/ExtensionAPI.js +5 -3
  12. package/src/sap/fe/core/ExtensionAPI.ts +4 -2
  13. package/src/sap/fe/core/PageController.js +13 -1
  14. package/src/sap/fe/core/PageController.ts +13 -0
  15. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +13 -5
  16. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +19 -6
  17. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +4 -2
  18. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +3 -1
  19. package/src/sap/fe/core/controllerextensions/EditFlow.js +58 -14
  20. package/src/sap/fe/core/controllerextensions/EditFlow.ts +71 -11
  21. package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +184 -17
  22. package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +204 -12
  23. package/src/sap/fe/core/controllerextensions/InternalRouting.js +12 -3
  24. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +11 -1
  25. package/src/sap/fe/core/controllerextensions/MessageHandler.js +35 -5
  26. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +41 -1
  27. package/src/sap/fe/core/controllerextensions/Routing.js +6 -6
  28. package/src/sap/fe/core/controllerextensions/Routing.ts +2 -2
  29. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +3 -11
  30. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +2 -10
  31. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +11 -1
  32. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +12 -0
  33. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +21 -6
  34. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +19 -5
  35. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +17 -14
  36. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +19 -17
  37. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +2 -2
  38. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +4 -1
  39. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +10 -2
  40. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +8 -2
  41. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +2 -2
  42. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +1 -1
  43. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +1 -1
  44. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +33 -31
  45. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +2 -2
  46. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +3 -3
  47. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +4 -1
  48. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +2 -1
  49. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +2 -2
  50. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +8 -1
  51. package/src/sap/fe/core/controls/HideFormGroupAutomatically.js +4 -3
  52. package/src/sap/fe/core/controls/HideFormGroupAutomatically.ts +7 -2
  53. package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.js +68 -0
  54. package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.tsx +52 -0
  55. package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.js +144 -0
  56. package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.tsx +128 -0
  57. package/src/sap/fe/core/controls/inlineEditFlow/DraftExistsDialog.js +53 -0
  58. package/src/sap/fe/core/controls/inlineEditFlow/DraftExistsDialog.tsx +39 -0
  59. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  60. package/src/sap/fe/core/converters/ManifestSettings.ts +18 -8
  61. package/src/sap/fe/core/converters/controls/Common/Action.js +54 -5
  62. package/src/sap/fe/core/converters/controls/Common/Action.ts +59 -3
  63. package/src/sap/fe/core/converters/controls/Common/Chart.js +22 -4
  64. package/src/sap/fe/core/converters/controls/Common/Chart.ts +23 -4
  65. package/src/sap/fe/core/converters/controls/Common/Form.js +13 -4
  66. package/src/sap/fe/core/converters/controls/Common/Form.ts +13 -3
  67. package/src/sap/fe/core/converters/controls/Common/Table.js +29 -9
  68. package/src/sap/fe/core/converters/controls/Common/Table.ts +38 -8
  69. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +14 -16
  70. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +61 -96
  71. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +62 -13
  72. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +75 -13
  73. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +4 -33
  74. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +4 -44
  75. package/src/sap/fe/core/converters/controls/ListReport/FilterField.js +106 -0
  76. package/src/sap/fe/core/converters/controls/ListReport/FilterField.ts +129 -0
  77. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +9 -4
  78. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +8 -3
  79. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +7 -2
  80. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +5 -1
  81. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +29 -7
  82. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +40 -16
  83. package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +34 -16
  84. package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +35 -16
  85. package/src/sap/fe/core/designtime/messagebundle_ar.properties +7 -0
  86. package/src/sap/fe/core/designtime/messagebundle_bg.properties +7 -0
  87. package/src/sap/fe/core/designtime/messagebundle_ca.properties +7 -0
  88. package/src/sap/fe/core/designtime/messagebundle_cnr.properties +7 -0
  89. package/src/sap/fe/core/designtime/messagebundle_cs.properties +7 -0
  90. package/src/sap/fe/core/designtime/messagebundle_cy.properties +7 -0
  91. package/src/sap/fe/core/designtime/messagebundle_da.properties +7 -0
  92. package/src/sap/fe/core/designtime/messagebundle_de.properties +7 -0
  93. package/src/sap/fe/core/designtime/messagebundle_el.properties +7 -0
  94. package/src/sap/fe/core/designtime/messagebundle_en.properties +7 -0
  95. package/src/sap/fe/core/designtime/messagebundle_en_GB.properties +7 -0
  96. package/src/sap/fe/core/designtime/messagebundle_es.properties +7 -0
  97. package/src/sap/fe/core/designtime/messagebundle_es_MX.properties +7 -0
  98. package/src/sap/fe/core/designtime/messagebundle_et.properties +7 -0
  99. package/src/sap/fe/core/designtime/messagebundle_fi.properties +7 -0
  100. package/src/sap/fe/core/designtime/messagebundle_fr.properties +7 -0
  101. package/src/sap/fe/core/designtime/messagebundle_fr_CA.properties +7 -0
  102. package/src/sap/fe/core/designtime/messagebundle_hi.properties +7 -0
  103. package/src/sap/fe/core/designtime/messagebundle_hr.properties +7 -0
  104. package/src/sap/fe/core/designtime/messagebundle_hu.properties +7 -0
  105. package/src/sap/fe/core/designtime/messagebundle_id.properties +7 -0
  106. package/src/sap/fe/core/designtime/messagebundle_it.properties +7 -0
  107. package/src/sap/fe/core/designtime/messagebundle_iw.properties +7 -0
  108. package/src/sap/fe/core/designtime/messagebundle_ja.properties +7 -0
  109. package/src/sap/fe/core/designtime/messagebundle_kk.properties +7 -0
  110. package/src/sap/fe/core/designtime/messagebundle_ko.properties +7 -0
  111. package/src/sap/fe/core/designtime/messagebundle_lt.properties +7 -0
  112. package/src/sap/fe/core/designtime/messagebundle_lv.properties +7 -0
  113. package/src/sap/fe/core/designtime/messagebundle_mk.properties +7 -0
  114. package/src/sap/fe/core/designtime/messagebundle_ms.properties +7 -0
  115. package/src/sap/fe/core/designtime/messagebundle_nl.properties +7 -0
  116. package/src/sap/fe/core/designtime/messagebundle_no.properties +7 -0
  117. package/src/sap/fe/core/designtime/messagebundle_pl.properties +7 -0
  118. package/src/sap/fe/core/designtime/messagebundle_pt.properties +7 -0
  119. package/src/sap/fe/core/designtime/messagebundle_pt_PT.properties +7 -0
  120. package/src/sap/fe/core/designtime/messagebundle_ro.properties +7 -0
  121. package/src/sap/fe/core/designtime/messagebundle_ru.properties +7 -0
  122. package/src/sap/fe/core/designtime/messagebundle_sh.properties +7 -0
  123. package/src/sap/fe/core/designtime/messagebundle_sk.properties +7 -0
  124. package/src/sap/fe/core/designtime/messagebundle_sl.properties +7 -0
  125. package/src/sap/fe/core/designtime/messagebundle_sr.properties +7 -0
  126. package/src/sap/fe/core/designtime/messagebundle_sv.properties +7 -0
  127. package/src/sap/fe/core/designtime/messagebundle_th.properties +7 -0
  128. package/src/sap/fe/core/designtime/messagebundle_tr.properties +7 -0
  129. package/src/sap/fe/core/designtime/messagebundle_uk.properties +7 -0
  130. package/src/sap/fe/core/designtime/messagebundle_vi.properties +7 -0
  131. package/src/sap/fe/core/designtime/messagebundle_zh_CN.properties +7 -0
  132. package/src/sap/fe/core/designtime/messagebundle_zh_TW.properties +7 -0
  133. package/src/sap/fe/core/fpm/manifest.json +1 -1
  134. package/src/sap/fe/core/helpers/AppStartupHelper.js +24 -3
  135. package/src/sap/fe/core/helpers/AppStartupHelper.ts +28 -2
  136. package/src/sap/fe/core/helpers/BindingHelper.js +3 -2
  137. package/src/sap/fe/core/helpers/BindingHelper.ts +2 -1
  138. package/src/sap/fe/core/helpers/DeleteHelper.js +4 -9
  139. package/src/sap/fe/core/helpers/DeleteHelper.ts +3 -8
  140. package/src/sap/fe/core/helpers/ModelHelper.js +14 -4
  141. package/src/sap/fe/core/helpers/ModelHelper.ts +15 -4
  142. package/src/sap/fe/core/helpers/PasteHelper.js +38 -39
  143. package/src/sap/fe/core/helpers/PasteHelper.ts +49 -51
  144. package/src/sap/fe/core/helpers/WebSocket.js +10 -1
  145. package/src/sap/fe/core/helpers/WebSocket.ts +8 -0
  146. package/src/sap/fe/core/library.js +1 -1
  147. package/src/sap/fe/core/messagebundle.properties +41 -2
  148. package/src/sap/fe/core/messagebundle_ar.properties +23 -2
  149. package/src/sap/fe/core/messagebundle_bg.properties +23 -2
  150. package/src/sap/fe/core/messagebundle_ca.properties +21 -0
  151. package/src/sap/fe/core/messagebundle_cnr.properties +23 -2
  152. package/src/sap/fe/core/messagebundle_cs.properties +21 -0
  153. package/src/sap/fe/core/messagebundle_cy.properties +21 -0
  154. package/src/sap/fe/core/messagebundle_da.properties +23 -2
  155. package/src/sap/fe/core/messagebundle_de.properties +23 -2
  156. package/src/sap/fe/core/messagebundle_el.properties +21 -0
  157. package/src/sap/fe/core/messagebundle_en.properties +23 -2
  158. package/src/sap/fe/core/messagebundle_en_GB.properties +23 -2
  159. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +23 -2
  160. package/src/sap/fe/core/messagebundle_es.properties +21 -0
  161. package/src/sap/fe/core/messagebundle_es_MX.properties +21 -0
  162. package/src/sap/fe/core/messagebundle_et.properties +21 -0
  163. package/src/sap/fe/core/messagebundle_fi.properties +21 -0
  164. package/src/sap/fe/core/messagebundle_fr.properties +22 -1
  165. package/src/sap/fe/core/messagebundle_fr_CA.properties +21 -0
  166. package/src/sap/fe/core/messagebundle_hi.properties +22 -1
  167. package/src/sap/fe/core/messagebundle_hr.properties +24 -3
  168. package/src/sap/fe/core/messagebundle_hu.properties +21 -0
  169. package/src/sap/fe/core/messagebundle_id.properties +21 -0
  170. package/src/sap/fe/core/messagebundle_it.properties +23 -2
  171. package/src/sap/fe/core/messagebundle_iw.properties +21 -0
  172. package/src/sap/fe/core/messagebundle_ja.properties +21 -0
  173. package/src/sap/fe/core/messagebundle_kk.properties +21 -0
  174. package/src/sap/fe/core/messagebundle_ko.properties +21 -0
  175. package/src/sap/fe/core/messagebundle_lt.properties +21 -0
  176. package/src/sap/fe/core/messagebundle_lv.properties +23 -2
  177. package/src/sap/fe/core/messagebundle_mk.properties +21 -0
  178. package/src/sap/fe/core/messagebundle_ms.properties +22 -1
  179. package/src/sap/fe/core/messagebundle_nl.properties +21 -0
  180. package/src/sap/fe/core/messagebundle_no.properties +21 -0
  181. package/src/sap/fe/core/messagebundle_pl.properties +23 -2
  182. package/src/sap/fe/core/messagebundle_pt.properties +23 -2
  183. package/src/sap/fe/core/messagebundle_pt_PT.properties +21 -0
  184. package/src/sap/fe/core/messagebundle_ro.properties +23 -2
  185. package/src/sap/fe/core/messagebundle_ru.properties +22 -1
  186. package/src/sap/fe/core/messagebundle_sh.properties +23 -2
  187. package/src/sap/fe/core/messagebundle_sk.properties +21 -0
  188. package/src/sap/fe/core/messagebundle_sl.properties +23 -2
  189. package/src/sap/fe/core/messagebundle_sr.properties +23 -2
  190. package/src/sap/fe/core/messagebundle_sv.properties +21 -0
  191. package/src/sap/fe/core/messagebundle_th.properties +21 -0
  192. package/src/sap/fe/core/messagebundle_tr.properties +21 -0
  193. package/src/sap/fe/core/messagebundle_uk.properties +23 -2
  194. package/src/sap/fe/core/messagebundle_vi.properties +23 -2
  195. package/src/sap/fe/core/messagebundle_zh_CN.properties +23 -2
  196. package/src/sap/fe/core/messagebundle_zh_TW.properties +21 -0
  197. package/src/sap/fe/core/rootView/Fcl.controller.js +5 -5
  198. package/src/sap/fe/core/rootView/Fcl.controller.ts +10 -4
  199. package/src/sap/fe/core/rootView/NavContainer.controller.js +2 -2
  200. package/src/sap/fe/core/rootView/NavContainer.controller.ts +1 -1
  201. package/src/sap/fe/core/rootView/RootViewBaseController.js +61 -9
  202. package/src/sap/fe/core/rootView/RootViewBaseController.ts +70 -7
  203. package/src/sap/fe/core/services/CollaborationManagerServiceFactory.js +28 -12
  204. package/src/sap/fe/core/services/CollaborationManagerServiceFactory.ts +27 -13
  205. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +7 -1
  206. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +6 -0
  207. package/src/sap/fe/core/services/RoutingServiceFactory.js +3 -2
  208. package/src/sap/fe/core/services/RoutingServiceFactory.ts +2 -1
  209. package/src/sap/fe/core/services/ShellServicesFactory.js +4 -3
  210. package/src/sap/fe/core/services/ShellServicesFactory.ts +5 -3
  211. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +27 -3
  212. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +32 -3
  213. package/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +1 -1
  214. package/src/sap/fe/core/templating/EntitySetHelper.js +198 -58
  215. package/src/sap/fe/core/templating/EntitySetHelper.ts +221 -61
  216. package/src/sap/fe/core/templating/SemanticObjectHelper.js +6 -7
  217. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +9 -7
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfiguracija
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Sprememba razporeditve besedila
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Preimenovanje
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Sprememba oznak
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0458\u0430
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\u041F\u0440\u043E\u043C\u0435\u043D\u0438 \u0440\u0430\u0441\u043F\u043E\u0440\u0435\u0434 \u0442\u0435\u043A\u0441\u0442\u0430
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\u041F\u0440\u0435\u0438\u043C\u0435\u043D\u0443\u0458
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\u041F\u0440\u043E\u043C\u0435\u043D\u0438 \u0435\u0442\u0438\u043A\u0435\u0442\u0435
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfiguration
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\u00C4ndra textarrangemang
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Byt namn
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\u00C4ndra etiketter
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=\u0E01\u0E32\u0E23\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07\u0E01\u0E32\u0E23\u0E08\u0E31\u0E14\u0E40\u0E23\u0E35\u0E22\u0E07\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E0A\u0E37\u0E48\u0E2D
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07\u0E1B\u0E49\u0E32\u0E22\u0E0A\u0E37\u0E48\u0E2D
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=Konfig\u00FCrasyon
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Metin d\u00FCzenlemelerini de\u011Fi\u015Ftir
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=Yeniden adland\u0131r
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Etiketleri de\u011Fi\u015Ftir
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=\u041A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044F
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0440\u043E\u0437\u043C\u0456\u0449\u0435\u043D\u043D\u044F \u0442\u0435\u043A\u0441\u0442\u0443
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\u041F\u0435\u0440\u0435\u0439\u043C\u0435\u043D\u0443\u0432\u0430\u0442\u0438
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u043D\u0430\u0434\u043F\u0438\u0441\u0438
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=C\u00E2\u0301u hi\u0300nh
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=Thay \u0111\u1ED5i s\u1EAFp x\u1EBFp v\u0103n b\u1EA3n
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\u0110\u00F4\u0309i t\u00EAn
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=Thay \u0111\u1ED5i nh\u00E3n
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=\u914D\u7F6E
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\u66F4\u6539\u6587\u672C\u6392\u5217
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\u91CD\u547D\u540D
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\u66F4\u6539\u6807\u7B7E
@@ -0,0 +1,7 @@
1
+ RTA_CONTEXT_ACTIONMENU_CONFIG=\u7D44\u614B
2
+
3
+ RTA_CONTEXT_ACTIONMENU_TEXTARRANGE=\u66F4\u6539\u5167\u6587\u6392\u5217
4
+
5
+ RTA_CONTEXT_ACTIONMENU_RENAME=\u91CD\u65B0\u547D\u540D
6
+
7
+ RTA_CONTEXT_ACTIONMENU_CHANGELABELS=\u66F4\u6539\u6A19\u7C64
@@ -4,7 +4,7 @@
4
4
  "id": "sap.fe.core.fpm",
5
5
  "type": "component",
6
6
  "applicationVersion": {
7
- "version": "1.135.0"
7
+ "version": "1.136.0"
8
8
  },
9
9
  "title": "Object Page",
10
10
  "tags": {
@@ -121,6 +121,24 @@ sap.ui.define(["sap/ui/model/Filter", "sap/ui/model/FilterOperator", "../convert
121
121
  });
122
122
  return Promise.all(aContextPromises);
123
123
  },
124
+ /**
125
+ * Returns the rightmost target name for a given route.
126
+ * @param route
127
+ * @param manifestRouting
128
+ * @returns The target name (or undefined if no valid target was found)
129
+ */
130
+ _getRightMostTargetName(route, manifestRouting) {
131
+ if (Array.isArray(route.target)) {
132
+ // Get the rightmost target for this route (ignore targets corresponding to reuse components)
133
+ const reverseTargets = [...route.target].reverse();
134
+ return reverseTargets.find(targetID => {
135
+ const currentTarget = manifestRouting?.targets?.[targetID];
136
+ return currentTarget?.name && ["sap.fe.templates.ListReport", "sap.fe.templates.ObjectPage", "sap.fe.core.fpm"].includes(currentTarget.name);
137
+ });
138
+ } else {
139
+ return route.target;
140
+ }
141
+ },
124
142
  /**
125
143
  * Creates a PageInfo from a route if it's reachable from the startup parameters.
126
144
  * @param oRoute The route
@@ -139,8 +157,11 @@ sap.ui.define(["sap/ui/model/Filter", "sap/ui/model/FilterOperator", "../convert
139
157
  }
140
158
  sPattern = sPattern.replace(/\(\{[^}]*\}\)/g, "(#)"); // Replace keys with #
141
159
 
142
- // Get the rightmost target for this route
143
- const sTargetName = Array.isArray(oRoute.target) ? oRoute.target[oRoute.target.length - 1] : oRoute.target;
160
+ const sTargetName = this._getRightMostTargetName(oRoute, oManifestRouting);
161
+ if (!sTargetName) {
162
+ // No target found for this route
163
+ return undefined;
164
+ }
144
165
  const oTarget = oManifestRouting?.targets?.[sTargetName];
145
166
  const aPatternSegments = sPattern.split("/");
146
167
  const pageLevel = aPatternSegments.length - 1;
@@ -396,4 +417,4 @@ sap.ui.define(["sap/ui/model/Filter", "sap/ui/model/FilterOperator", "../convert
396
417
  };
397
418
  return AppStartupHelper;
398
419
  }, false);
399
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcHBTdGFydHVwSGVscGVyIiwiX2dldEtleXNGcm9tU3RhcnR1cFBhcmFtcyIsImFLZXlOYW1lcyIsIm9TdGFydHVwUGFyYW1ldGVycyIsImJBbGxGb3VuZCIsImFLZXlzIiwibWFwIiwibmFtZSIsImxlbmd0aCIsInZhbHVlIiwidW5kZWZpbmVkIiwiX2NyZWF0ZUZpbHRlckZyb21LZXlzIiwiYkRyYWZ0TW9kZSIsIm9NZXRhTW9kZWwiLCJiRmlsdGVyQ2FzZVNlbnNpdGl2ZSIsIk1vZGVsSGVscGVyIiwiaXNGaWx0ZXJpbmdDYXNlU2Vuc2l0aXZlIiwiYkZpbHRlck9uQWN0aXZlRW50aXR5IiwiYUZpbHRlcnMiLCJrZXkiLCJGaWx0ZXIiLCJwYXRoIiwib3BlcmF0b3IiLCJGaWx0ZXJPcGVyYXRvciIsIkVRIiwidmFsdWUxIiwiY2FzZVNlbnNpdGl2ZSIsIm9EcmFmdEZpbHRlciIsImZpbHRlcnMiLCJhbmQiLCJwdXNoIiwiX3Nhbml0aXplS2V5cyIsImtleXMiLCJlbnRpdHlUeXBlIiwiZm9yRWFjaCIsInByb3BlcnR5VHlwZSIsIiRUeXBlIiwidHJpbSIsIm1hdGNoIiwiZXhlYyIsIl9yZXF1ZXN0T2JqZWN0c0Zyb21QYXJhbWV0ZXJzIiwiYVN0YXJ0dXBQYWdlcyIsIm9Nb2RlbCIsImFDb250ZXh0UHJvbWlzZXMiLCJwYWdlSW5mbyIsImdldE1ldGFNb2RlbCIsImdldE9iamVjdCIsImNvbnRleHRQYXRoIiwidGVjaG5pY2FsS2V5cyIsIlNlbWFudGljS2V5SGVscGVyIiwiZ2V0UGF0aENvbnRlbnQiLCJjb250ZXh0IiwiYmluZENvbnRleHQiLCJnZXRCb3VuZENvbnRleHQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNlbWFudGljS2V5cyIsIm9GaWx0ZXIiLCJkcmFmdE1vZGUiLCJvTGlzdEJpbmQiLCJiaW5kTGlzdCIsIiRzZWxlY3QiLCJqb2luIiwicmVxdWVzdENvbnRleHRzIiwiYWxsIiwiX2dldFJlYWNoYWJsZVBhZ2VJbmZvRnJvbVJvdXRlIiwib1JvdXRlIiwib01hbmlmZXN0Um91dGluZyIsInNQYXR0ZXJuIiwicGF0dGVybiIsInJlcGxhY2UiLCJlbmRzV2l0aCIsInNUYXJnZXROYW1lIiwiQXJyYXkiLCJpc0FycmF5IiwidGFyZ2V0Iiwib1RhcmdldCIsInRhcmdldHMiLCJhUGF0dGVyblNlZ21lbnRzIiwic3BsaXQiLCJwYWdlTGV2ZWwiLCJvcHRpb25zIiwic2V0dGluZ3MiLCJhbGxvd0RlZXBMaW5raW5nIiwic0NvbnRleHRQYXRoIiwiZW50aXR5U2V0IiwibWV0YUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsIm9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJ0YXJnZXRFbnRpdHlTZXQiLCJvRW50aXR5VHlwZSIsInNlbWFudGljS2V5TmFtZXMiLCJzZW1LZXkiLCIkUHJvcGVydHlQYXRoIiwidGVjaG5pY2FsS2V5TmFtZXMiLCJldmVyeSIsImluY2x1ZGVzIiwiYVNlbWFudGlja0tleXMiLCJhVGVjaG5pY2FsS2V5cyIsIl9nZXRSZWFjaGFibGVQYWdlcyIsImFSb3V0ZXMiLCJyb3V0ZXMiLCJtUGFnZXNCeUxldmVsIiwib1BhZ2VJbmZvIiwiYVJlYWNoYWJsZVBhZ2VzIiwibGV2ZWwiLCJfZ2V0U3RhcnR1cFBhZ2VzRnJvbVN0YXJ0dXBQYXJhbXMiLCJyZXN1bHQiLCJjdXJyZW50IiwiZmluZFJlY3Vyc2l2ZSIsImFDdXJyZW50TGV2ZWxQYWdlcyIsImxhc3RQYWdlIiwibmV4dFBhZ2UiLCJpbmRleE9mIiwicG9wIiwic2xpY2UiLCJfZ2V0RGVlcExpbmtPYmplY3QiLCJhQ29udGV4dHMiLCJoYXNoIiwib0NvbnRleHQiLCJnZXRQYXRoIiwiZ2V0RGVlcExpbmtTdGFydHVwSGFzaCIsInJlcXVlc3RPYmplY3QiLCJzdGFydHVwUGFnZXMiLCJhbGxDb250ZXh0cyIsImNvbnRleHRzRm9yU3RhcnR1cCIsImZvdW5kQ29udGV4dHMiLCJnZXRDcmVhdGVTdGFydHVwSGFzaCIsIm9Sb3V0ZXIiLCJ0aGVuIiwib0VudGl0eVNldEFubm90YXRpb25zIiwic01ldGFQYXRoIiwiYkNyZWF0YWJsZSIsImJOZXdBY3Rpb25PcGVyYXRpb25BdmFpbGFibGUiLCJvSW5zZXJ0UmVzdHJpY3Rpb25zIiwiSW5zZXJ0YWJsZSIsImdldERlZmF1bHRDcmVhdGVIYXNoIiwic0RlZmF1bHRDcmVhdGVIYXNoIiwicHJlZmVycmVkTW9kZSIsInNIYXNoIiwic3Vic3RyaW5nIiwiZ2V0Um91dGVJbmZvQnlIYXNoIiwiRXJyb3IiLCJ2ZXJpZnlFZGl0QW5ub3RhdGlvbnMiLCJtZXRhTW9kZWwiLCJlbnRpdHlTZXRBbm5vdGF0aW9ucyIsInVwZGF0ZUhpZGRlbiIsIm9wZXJhdGlvbkF2YWlsYWJsZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQXBwU3RhcnR1cEhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnR5UGF0aCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBTdGFydHVwUGFyYW1ldGVycyB9IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgUm91dGluZ0NvbmZpZ3VyYXRpb24sIFJvdXRpbmdSb3V0ZSB9IGZyb20gXCJzYXAvdWkvY29yZS9NYW5pZmVzdFwiO1xuaW1wb3J0IHR5cGUgUm91dGVyIGZyb20gXCJzYXAvdWkvY29yZS9yb3V0aW5nL1JvdXRlclwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBFeHBhbmRQYXRoVHlwZSwgTWV0YU1vZGVsRW50aXR5U2V0QW5ub3RhdGlvbiB9IGZyb20gXCJ0eXBlcy9tZXRhbW9kZWxfdHlwZXNcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCIuLi9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCIuL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgU2VtYW50aWNLZXlIZWxwZXIgZnJvbSBcIi4vU2VtYW50aWNLZXlIZWxwZXJcIjtcblxudHlwZSBWYWx1ZWRLZXkgPSB7XG5cdG5hbWU6IHN0cmluZztcblx0dmFsdWU6IHN0cmluZztcbn07XG5cbnR5cGUgUGFnZUluZm8gPSB7XG5cdHBhdHRlcm46IHN0cmluZztcblx0Y29udGV4dFBhdGg6IHN0cmluZztcblx0ZHJhZnRNb2RlOiBib29sZWFuO1xuXHR0ZWNobmljYWxLZXlzOiBWYWx1ZWRLZXlbXSB8IHVuZGVmaW5lZDtcblx0c2VtYW50aWNLZXlzOiBWYWx1ZWRLZXlbXSB8IHVuZGVmaW5lZDtcblx0dGFyZ2V0OiBzdHJpbmc7XG5cdHBhZ2VMZXZlbDogbnVtYmVyO1xufTtcblxuY29uc3QgQXBwU3RhcnR1cEhlbHBlciA9IHtcblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhIHNldCBvZiBrZXkgdmFsdWVzIGZyb20gc3RhcnR1cCBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0gYUtleU5hbWVzIFRoZSBhcnJheSBvZiBrZXkgbmFtZXNcblx0ICogQHBhcmFtIG9TdGFydHVwUGFyYW1ldGVycyBUaGUgc3RhcnR1cCBwYXJhbWV0ZXJzXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHBhaXJzIFxce25hbWUsIHZhbHVlXFx9IGlmIGFsbCBrZXkgdmFsdWVzIGNvdWxkIGJlIGZvdW5kIGluIHRoZSBzdGFydHVwIHBhcmFtZXRlcnMsIHVuZGVmaW5lZCBvdGhlcndpc2Vcblx0ICovXG5cdF9nZXRLZXlzRnJvbVN0YXJ0dXBQYXJhbXM6IGZ1bmN0aW9uIChhS2V5TmFtZXM6IHN0cmluZ1tdLCBvU3RhcnR1cFBhcmFtZXRlcnM6IFN0YXJ0dXBQYXJhbWV0ZXJzIHwgbnVsbCk6IFZhbHVlZEtleVtdIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgYkFsbEZvdW5kID0gdHJ1ZTtcblx0XHRjb25zdCBhS2V5cyA9IGFLZXlOYW1lcy5tYXAoKG5hbWUpID0+IHtcblx0XHRcdGlmIChvU3RhcnR1cFBhcmFtZXRlcnM/LltuYW1lXSAmJiBvU3RhcnR1cFBhcmFtZXRlcnNbbmFtZV0ubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdHJldHVybiB7IG5hbWUsIHZhbHVlOiBvU3RhcnR1cFBhcmFtZXRlcnNbbmFtZV1bMF0gYXMgc3RyaW5nIH07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBBIHVuaXF1ZSBrZXkgdmFsdWUgY291bGRuJ3QgYmUgZm91bmQgaW4gdGhlIHN0YXJ0dXAgcGFyYW1ldGVyc1xuXHRcdFx0XHRiQWxsRm91bmQgPSBmYWxzZTtcblx0XHRcdFx0cmV0dXJuIHsgbmFtZSwgdmFsdWU6IFwiXCIgfTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHJldHVybiBiQWxsRm91bmQgPyBhS2V5cyA6IHVuZGVmaW5lZDtcblx0fSxcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIGZpbHRlciBmcm9tIGEgbGlzdCBvZiBrZXkgdmFsdWVzLlxuXHQgKiBAcGFyYW0gYUtleXMgQXJyYXkgb2Ygc2VtYW50aWMga2V5cyBvciB0ZWNobmljYWwga2V5cyAod2l0aCB2YWx1ZXMpXG5cdCAqIEBwYXJhbSBiRHJhZnRNb2RlIFRydWUgaWYgdGhlIGVudGl0eSBzdXBwb3J0cyBkcmFmdCBtb2RlXG5cdCAqIEBwYXJhbSBvTWV0YU1vZGVsIFRoZSBtZXRhbW9kZWxcblx0ICogQHJldHVybnMgVGhlIGZpbHRlclxuXHQgKi9cblx0X2NyZWF0ZUZpbHRlckZyb21LZXlzOiBmdW5jdGlvbiAoYUtleXM6IFZhbHVlZEtleVtdLCBiRHJhZnRNb2RlOiBCb29sZWFuLCBvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCk6IEZpbHRlciB7XG5cdFx0Y29uc3QgYkZpbHRlckNhc2VTZW5zaXRpdmUgPSBNb2RlbEhlbHBlci5pc0ZpbHRlcmluZ0Nhc2VTZW5zaXRpdmUob01ldGFNb2RlbCk7XG5cblx0XHRsZXQgYkZpbHRlck9uQWN0aXZlRW50aXR5ID0gZmFsc2U7XG5cdFx0Y29uc3QgYUZpbHRlcnMgPSBhS2V5cy5tYXAoKGtleSkgPT4ge1xuXHRcdFx0aWYgKGtleS5uYW1lID09PSBcIklzQWN0aXZlRW50aXR5XCIpIHtcblx0XHRcdFx0YkZpbHRlck9uQWN0aXZlRW50aXR5ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBuZXcgRmlsdGVyKHtcblx0XHRcdFx0cGF0aDoga2V5Lm5hbWUsXG5cdFx0XHRcdG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvci5FUSxcblx0XHRcdFx0dmFsdWUxOiBrZXkudmFsdWUsXG5cdFx0XHRcdGNhc2VTZW5zaXRpdmU6IGJGaWx0ZXJDYXNlU2Vuc2l0aXZlXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0XHRpZiAoYkRyYWZ0TW9kZSAmJiAhYkZpbHRlck9uQWN0aXZlRW50aXR5KSB7XG5cdFx0XHRjb25zdCBvRHJhZnRGaWx0ZXIgPSBuZXcgRmlsdGVyKHtcblx0XHRcdFx0ZmlsdGVyczogW25ldyBGaWx0ZXIoXCJJc0FjdGl2ZUVudGl0eVwiLCBcIkVRXCIsIGZhbHNlKSwgbmV3IEZpbHRlcihcIlNpYmxpbmdFbnRpdHkvSXNBY3RpdmVFbnRpdHlcIiwgXCJFUVwiLCBudWxsKV0sXG5cdFx0XHRcdGFuZDogZmFsc2Vcblx0XHRcdH0pO1xuXHRcdFx0YUZpbHRlcnMucHVzaChvRHJhZnRGaWx0ZXIpO1xuXHRcdH1cblxuXHRcdHJldHVybiBuZXcgRmlsdGVyKGFGaWx0ZXJzLCB0cnVlKTtcblx0fSxcblxuXHQvKipcblx0ICogTWFrZXMgc3VyZSBrZXkgdmFsdWVzIGhhdmUgdGhlIGNvcnJlY3QgZm9ybWF0LlxuXHQgKiBUaGlzIGlzIHRvIGhhbmRsZSBzcGVjaWFsIGNhc2VzLCBmb3IgZXhhbXBsZSwgd2hlcmUgQm9vbGVhbiB2YWx1ZXMgYXJlICdYJyBvciAnJywgb3IgZ3VpZCB2YWx1ZXMgaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1hdDogZ3VpZCcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnLlwiLlxuXHQgKiBAcGFyYW0ga2V5c1xuXHQgKiBAcGFyYW0gZW50aXR5VHlwZVxuXHQgKi9cblx0X3Nhbml0aXplS2V5czogZnVuY3Rpb24gKGtleXM6IFZhbHVlZEtleVtdLCBlbnRpdHlUeXBlOiBSZWNvcmQ8c3RyaW5nLCB7ICRUeXBlOiBzdHJpbmcgfT4pOiB2b2lkIHtcblx0XHRrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdFx0Y29uc3QgcHJvcGVydHlUeXBlID0gZW50aXR5VHlwZVtrZXkubmFtZV0uJFR5cGU7XG5cdFx0XHRzd2l0Y2ggKHByb3BlcnR5VHlwZSkge1xuXHRcdFx0XHRjYXNlIFwiRWRtLkJvb2xlYW5cIjpcblx0XHRcdFx0XHRpZiAoa2V5LnZhbHVlICE9PSBcInRydWVcIiAmJiBrZXkudmFsdWUgIT09IFwiZmFsc2VcIikge1xuXHRcdFx0XHRcdFx0Ly8gSWYgdGhlIHZhbHVlIGlzIG5laXRoZXIgXCJ0cnVlXCIgbm9yIFwiZmFsc2VcIiwgaXQncyBjb25zaWRlcmVkIGFzIGZhbHNlIGlmIGl0IGNvbnRhaW5zIG9ubHkgd2hpdGVzcGFjZXMgKGUuZy4gdG8gaGFuZGxlICdYJy8nJyBmb3IgdHJ1ZS9mYWxzZSB2YWx1ZXMpXG5cdFx0XHRcdFx0XHRrZXkudmFsdWUgPSBrZXkudmFsdWUudHJpbSgpLmxlbmd0aCA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlIFwiRWRtLkd1aWRcIjoge1xuXHRcdFx0XHRcdGNvbnN0IG1hdGNoID0gL1swLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfS8uZXhlYyhrZXkudmFsdWUpO1xuXHRcdFx0XHRcdGtleS52YWx1ZSA9IG1hdGNoID8gbWF0Y2hbMF0gOiBrZXkudmFsdWU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHQvLyBEbyBub3RoaW5nXG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIExvYWRzIGFsbCBjb250ZXh0cyBmb3IgYSBsaXN0IG9mIHBhZ2UgaW5mb3MuXG5cdCAqIEBwYXJhbSBhU3RhcnR1cFBhZ2VzIFRoZSBsaXN0IG9mIHBhZ2UgaW5mb3Ncblx0ICogQHBhcmFtIG9Nb2RlbCBUaGUgbW9kZWwgdXNlZCB0byBsb2FkIHRoZSBjb250ZXh0c1xuXHQgKiBAcmV0dXJucyBBIFByb21pc2UgZm9yIGFsbCBjb250ZXh0c1xuXHQgKi9cblx0X3JlcXVlc3RPYmplY3RzRnJvbVBhcmFtZXRlcnM6IGFzeW5jIGZ1bmN0aW9uIChhU3RhcnR1cFBhZ2VzOiBQYWdlSW5mb1tdLCBvTW9kZWw6IE9EYXRhTW9kZWwpOiBQcm9taXNlPENvbnRleHRbXVtdPiB7XG5cdFx0Ly8gTG9hZCB0aGUgcmVzcGVjdGl2ZSBvYmplY3RzIGZvciBhbGwgb2JqZWN0IHBhZ2VzIGZvdW5kIGluIGFFeHRlcm5hbGx5TmF2aWdhYmxlUGFnZXNcblx0XHRjb25zdCBhQ29udGV4dFByb21pc2VzID0gYVN0YXJ0dXBQYWdlcy5tYXAoYXN5bmMgKHBhZ2VJbmZvKSA9PiB7XG5cdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gb01vZGVsLmdldE1ldGFNb2RlbCgpLmdldE9iamVjdChgJHtwYWdlSW5mby5jb250ZXh0UGF0aH0vYCk7XG5cdFx0XHRpZiAocGFnZUluZm8udGVjaG5pY2FsS2V5cykge1xuXHRcdFx0XHR0aGlzLl9zYW5pdGl6ZUtleXMocGFnZUluZm8udGVjaG5pY2FsS2V5cywgZW50aXR5VHlwZSk7XG5cdFx0XHRcdC8vIENyZWF0ZSBhIGNvbnRleHQgd2l0aCB0aGUgcHJvcGVyIHBhdGhcblx0XHRcdFx0Y29uc3QgcGF0aCA9IGAke3BhZ2VJbmZvLmNvbnRleHRQYXRofSgke1NlbWFudGljS2V5SGVscGVyLmdldFBhdGhDb250ZW50KHBhZ2VJbmZvLnRlY2huaWNhbEtleXMsIGVudGl0eVR5cGUpfSlgO1xuXHRcdFx0XHRjb25zdCBjb250ZXh0ID0gb01vZGVsLmJpbmRDb250ZXh0KHBhdGgpLmdldEJvdW5kQ29udGV4dCgpO1xuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtjb250ZXh0XSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBhS2V5cyA9IHBhZ2VJbmZvLnNlbWFudGljS2V5cyA/PyBbXTtcblx0XHRcdFx0dGhpcy5fc2FuaXRpemVLZXlzKGFLZXlzLCBlbnRpdHlUeXBlKTtcblx0XHRcdFx0Y29uc3Qgb0ZpbHRlciA9IHRoaXMuX2NyZWF0ZUZpbHRlckZyb21LZXlzKGFLZXlzLCBwYWdlSW5mby5kcmFmdE1vZGUsIG9Nb2RlbC5nZXRNZXRhTW9kZWwoKSk7XG5cblx0XHRcdFx0Ly8gb25seSByZXF1ZXN0IGEgbWluaW11bSBvZiBmaWVsZHMgdG8gYm9vc3QgYmFja2VuZCBwZXJmb3JtYW5jZSBzaW5jZSB0aGlzIGlzIG9ubHkgdXNlZCB0byBjaGVjayBpZiBhbiBvYmplY3QgZXhpc3RzXG5cdFx0XHRcdGNvbnN0IG9MaXN0QmluZCA9IG9Nb2RlbC5iaW5kTGlzdChwYWdlSW5mby5jb250ZXh0UGF0aCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG9GaWx0ZXIsIHtcblx0XHRcdFx0XHQkc2VsZWN0OiBhS2V5c1xuXHRcdFx0XHRcdFx0Lm1hcCgoa2V5KSA9PiB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBrZXkubmFtZTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQuam9pbihcIixcIilcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybiBvTGlzdEJpbmQucmVxdWVzdENvbnRleHRzKDAsIDIpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIFByb21pc2UuYWxsKGFDb250ZXh0UHJvbWlzZXMpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgUGFnZUluZm8gZnJvbSBhIHJvdXRlIGlmIGl0J3MgcmVhY2hhYmxlIGZyb20gdGhlIHN0YXJ0dXAgcGFyYW1ldGVycy5cblx0ICogQHBhcmFtIG9Sb3V0ZSBUaGUgcm91dGVcblx0ICogQHBhcmFtIG9NYW5pZmVzdFJvdXRpbmcgVGhlIGFwcCBtYW5pZmVzdCByb3V0aW5nIHNlY3Rpb25cblx0ICogQHBhcmFtIG9TdGFydHVwUGFyYW1ldGVycyBUaGUgc3RhcnR1cCBwYXJhbWV0ZXJzXG5cdCAqIEBwYXJhbSBvTWV0YU1vZGVsIFRoZSBhcHAgbWV0YW1vZGVsXG5cdCAqIEByZXR1cm5zIEEgcGFnZSBpbmZvIGlmIHRoZSBwYWdlIGlzIHJlYWNoYWJsZSwgdW5kZWZpbmVkIG90aGVyd2lzZVxuXHQgKi9cblx0X2dldFJlYWNoYWJsZVBhZ2VJbmZvRnJvbVJvdXRlOiBmdW5jdGlvbiAoXG5cdFx0b1JvdXRlOiBSb3V0aW5nUm91dGUsXG5cdFx0b01hbmlmZXN0Um91dGluZzogUm91dGluZ0NvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQsXG5cdFx0b1N0YXJ0dXBQYXJhbWV0ZXJzOiBTdGFydHVwUGFyYW1ldGVycyB8IG51bGwsXG5cdFx0b01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWxcblx0KTogUGFnZUluZm8gfCB1bmRlZmluZWQge1xuXHRcdC8vIFJlbW92ZSB0cmFpbGluZyAnOj9xdWVyeTonIGFuZCAnLydcblx0XHRsZXQgc1BhdHRlcm46IHN0cmluZyA9IG9Sb3V0ZS5wYXR0ZXJuIS5yZXBsYWNlKFwiOj9xdWVyeTpcIiwgXCJcIik7XG5cdFx0c1BhdHRlcm4gPSBzUGF0dGVybi5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG5cblx0XHRpZiAoIXNQYXR0ZXJuIHx8ICFzUGF0dGVybi5lbmRzV2l0aChcIilcIikpIHtcblx0XHRcdC8vIElnbm9yZSBsZXZlbC0wIHJvdXRlcyAoTGlzdFJlcG9ydCkgb3Igcm91dGVzIGNvcnJlc3BvbmRpbmcgdG8gYSAxLTEgcmVsYXRpb24gKG5vIGtleXMgaW4gdGhlIFVSTCBpbiB0aGlzIGNhc2UpXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdHNQYXR0ZXJuID0gc1BhdHRlcm4ucmVwbGFjZSgvXFwoXFx7W159XSpcXH1cXCkvZywgXCIoIylcIik7IC8vIFJlcGxhY2Uga2V5cyB3aXRoICNcblxuXHRcdC8vIEdldCB0aGUgcmlnaHRtb3N0IHRhcmdldCBmb3IgdGhpcyByb3V0ZVxuXHRcdGNvbnN0IHNUYXJnZXROYW1lOiBzdHJpbmcgPSBBcnJheS5pc0FycmF5KG9Sb3V0ZS50YXJnZXQpID8gb1JvdXRlLnRhcmdldFtvUm91dGUudGFyZ2V0Lmxlbmd0aCAtIDFdIDogb1JvdXRlLnRhcmdldDtcblx0XHRjb25zdCBvVGFyZ2V0ID0gb01hbmlmZXN0Um91dGluZz8udGFyZ2V0cz8uW3NUYXJnZXROYW1lXTtcblxuXHRcdGNvbnN0IGFQYXR0ZXJuU2VnbWVudHMgPSBzUGF0dGVybi5zcGxpdChcIi9cIik7XG5cdFx0Y29uc3QgcGFnZUxldmVsID0gYVBhdHRlcm5TZWdtZW50cy5sZW5ndGggLSAxO1xuXG5cdFx0aWYgKHBhZ2VMZXZlbCAhPT0gMCAmJiBvVGFyZ2V0Py5vcHRpb25zPy5zZXR0aW5ncz8uYWxsb3dEZWVwTGlua2luZyAhPT0gdHJ1ZSkge1xuXHRcdFx0Ly8gVGhlIGZpcnN0IGxldmVsIG9mIG9iamVjdCBwYWdlIGFsbG93cyBkZWVwIGxpbmtpbmcgYnkgZGVmYXVsdC5cblx0XHRcdC8vIE90aGVyd2lzZSwgdGhlIHRhcmdldCBtdXN0IGFsbG93IGRlZXAgbGlua2luZyBleHBsaWNpdGVseSBpbiB0aGUgbWFuaWZlc3Rcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0bGV0IHNDb250ZXh0UGF0aCA9IFwiXCI7XG5cdFx0aWYgKG9UYXJnZXQ/Lm9wdGlvbnM/LnNldHRpbmdzPy5lbnRpdHlTZXQpIHtcblx0XHRcdHNDb250ZXh0UGF0aCA9IGAvJHtvVGFyZ2V0Lm9wdGlvbnMuc2V0dGluZ3MuZW50aXR5U2V0fWA7XG5cdFx0fSBlbHNlIGlmIChvVGFyZ2V0Py5vcHRpb25zPy5zZXR0aW5ncz8uY29udGV4dFBhdGgpIHtcblx0XHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gb01ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChvVGFyZ2V0Lm9wdGlvbnMuc2V0dGluZ3MuY29udGV4dFBhdGgpITtcblx0XHRcdGNvbnN0IG9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMobWV0YUNvbnRleHQpO1xuXHRcdFx0aWYgKG9iamVjdFBhdGgudGFyZ2V0RW50aXR5U2V0KSB7XG5cdFx0XHRcdHNDb250ZXh0UGF0aCA9IGAvJHtvYmplY3RQYXRoLnRhcmdldEVudGl0eVNldC5uYW1lfWA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCFzQ29udGV4dFBhdGgpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGNvbnN0IG9FbnRpdHlUeXBlID0gc0NvbnRleHRQYXRoICYmIG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJEVudGl0eUNvbnRhaW5lciR7c0NvbnRleHRQYXRofS9gKTtcblxuXHRcdGlmICghb0VudGl0eVR5cGUpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gR2V0IHRoZSBzZW1hbnRpYyBrZXkgdmFsdWVzIGZvciB0aGUgZW50aXR5XG5cdFx0bGV0IHNlbWFudGljS2V5TmFtZXMgPSAoXG5cdFx0XHRvTWV0YU1vZGVsLmdldE9iamVjdChgLyRFbnRpdHlDb250YWluZXIke3NDb250ZXh0UGF0aH0vQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY0tleWApIGFzXG5cdFx0XHRcdHwgRXhwYW5kUGF0aFR5cGU8UHJvcGVydHlQYXRoPltdXG5cdFx0XHRcdHwgdW5kZWZpbmVkXG5cdFx0KT8ubWFwKChzZW1LZXkpID0+IHtcblx0XHRcdHJldHVybiBzZW1LZXkuJFByb3BlcnR5UGF0aDtcblx0XHR9KTtcblxuXHRcdC8vIElmIHdlJ3JlIG9uIGEgZmlyc3QgbGV2ZWwgb2JqZWN0IHBhZ2UgYW5kIHRoZSBzZW1hbnRpYyBrZXlzIGFyZSB0aGUgc2FtZSBhcyB0aGUgdGVjaG5pY2FsIGtleXMsIHdlIHVzZSB0ZWNobmljYWwga2V5cyBkaXJlY3RseSxcblx0XHQvLyB0byBhdm9pZCB0aGUgYWRkaXRpb25hbCBxdWVyeSB1c2VkIHRvIGxvYWQgdGhlIG9iamVjdCBmcm9tIGl0cyBzZW1hbnRpYyBrZXlzIGluIF9yZXF1ZXN0T2JqZWN0c0Zyb21QYXJhbWV0ZXJzXG5cdFx0Y29uc3QgdGVjaG5pY2FsS2V5TmFtZXMgPSBvRW50aXR5VHlwZVtcIiRLZXlcIl07XG5cdFx0aWYgKFxuXHRcdFx0cGFnZUxldmVsID09PSAwICYmXG5cdFx0XHRzZW1hbnRpY0tleU5hbWVzICYmXG5cdFx0XHRzZW1hbnRpY0tleU5hbWVzLmxlbmd0aCA9PT0gdGVjaG5pY2FsS2V5TmFtZXMubGVuZ3RoICYmXG5cdFx0XHRzZW1hbnRpY0tleU5hbWVzLmV2ZXJ5KChrZXkpID0+IHRlY2huaWNhbEtleU5hbWVzLmluY2x1ZGVzKGtleSkpXG5cdFx0KSB7XG5cdFx0XHRzZW1hbnRpY0tleU5hbWVzID0gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFTZW1hbnRpY2tLZXlzID0gc2VtYW50aWNLZXlOYW1lcyA/IHRoaXMuX2dldEtleXNGcm9tU3RhcnR1cFBhcmFtcyhzZW1hbnRpY0tleU5hbWVzLCBvU3RhcnR1cFBhcmFtZXRlcnMpIDogdW5kZWZpbmVkO1xuXG5cdFx0Ly8gR2V0IHRoZSB0ZWNobmljYWwga2V5cyBvbmx5IGlmIHdlIGNvdWxkbid0IGZpbmQgdGhlIHNlbWFudGljIGtleSB2YWx1ZXMsIGFuZCBvbiBmaXJzdCBsZXZlbCBPUFxuXHRcdGNvbnN0IGFUZWNobmljYWxLZXlzID1cblx0XHRcdCFhU2VtYW50aWNrS2V5cyAmJiBwYWdlTGV2ZWwgPT09IDAgPyB0aGlzLl9nZXRLZXlzRnJvbVN0YXJ0dXBQYXJhbXModGVjaG5pY2FsS2V5TmFtZXMsIG9TdGFydHVwUGFyYW1ldGVycykgOiB1bmRlZmluZWQ7XG5cblx0XHRpZiAoYVNlbWFudGlja0tleXMgPT09IHVuZGVmaW5lZCAmJiBhVGVjaG5pY2FsS2V5cyA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHQvLyBXZSBjb3VsZG4ndCBmaW5kIHRoZSBzZW1hbnRpYy90ZWNobmljYWwga2V5cyBpbiB0aGUgc3RhcnR1cCBwYXJhbWV0ZXJzXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdC8vIFRoZSBzdGFydHVwIHBhcmFtZXRlcnMgY29udGFpbiB2YWx1ZXMgZm9yIGFsbCBzZW1hbnRpYyBrZXlzIChvciB0ZWNobmljYWwga2V5cykgLS0+IHdlIGNhbiBzdG9yZSB0aGUgcGFnZSBpbmZvIGluIHRoZSBjb3JyZXNwb25kaW5nIGxldmVsXG5cdFx0Y29uc3QgZHJhZnRNb2RlID1cblx0XHRcdG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJEVudGl0eUNvbnRhaW5lciR7c0NvbnRleHRQYXRofUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290YCkgfHxcblx0XHRcdG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJEVudGl0eUNvbnRhaW5lciR7c0NvbnRleHRQYXRofUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnROb2RlYClcblx0XHRcdFx0PyB0cnVlXG5cdFx0XHRcdDogZmFsc2U7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGF0dGVybjogc1BhdHRlcm4sXG5cdFx0XHRjb250ZXh0UGF0aDogc0NvbnRleHRQYXRoLFxuXHRcdFx0ZHJhZnRNb2RlLFxuXHRcdFx0dGVjaG5pY2FsS2V5czogYVRlY2huaWNhbEtleXMsXG5cdFx0XHRzZW1hbnRpY0tleXM6IGFTZW1hbnRpY2tLZXlzLFxuXHRcdFx0dGFyZ2V0OiBzVGFyZ2V0TmFtZSxcblx0XHRcdHBhZ2VMZXZlbFxuXHRcdH07XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIHBhZ2VzIHRoYXQgYWxsb3cgZGVlcGxpbmsgYW5kIHRoYXQgY2FuIGJlIHJlYWNoZWQgdXNpbmcgdGhlIHN0YXJ0dXAgcGFyYW1ldGVycy5cblx0ICogQHBhcmFtIG9NYW5pZmVzdFJvdXRpbmcgVGhlIHJvdXRpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgYXBwIG1hbmlmZXN0XG5cdCAqIEBwYXJhbSBvU3RhcnR1cFBhcmFtZXRlcnMgVGhlIHN0YXJ0dXAgcGFyYW1ldGVyc1xuXHQgKiBAcGFyYW0gb01ldGFNb2RlbCBUaGUgbWV0YW1vZGVsXG5cdCAqIEByZXR1cm5zIFRoZSByZWFjaGFibGUgcGFnZXNcblx0ICovXG5cdF9nZXRSZWFjaGFibGVQYWdlczogZnVuY3Rpb24gKFxuXHRcdG9NYW5pZmVzdFJvdXRpbmc6IFJvdXRpbmdDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuXHRcdG9TdGFydHVwUGFyYW1ldGVyczogU3RhcnR1cFBhcmFtZXRlcnMgfCBudWxsLFxuXHRcdG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsXG5cdCk6IFBhZ2VJbmZvW11bXSB7XG5cdFx0Y29uc3QgYVJvdXRlczogUm91dGluZ1JvdXRlW10gPSBvTWFuaWZlc3RSb3V0aW5nPy5yb3V0ZXMgPz8gW107XG5cdFx0Y29uc3QgbVBhZ2VzQnlMZXZlbDogUmVjb3JkPG51bWJlciwgUGFnZUluZm9bXT4gPSB7fTtcblxuXHRcdGFSb3V0ZXMuZm9yRWFjaCgob1JvdXRlKSA9PiB7XG5cdFx0XHRjb25zdCBvUGFnZUluZm8gPSB0aGlzLl9nZXRSZWFjaGFibGVQYWdlSW5mb0Zyb21Sb3V0ZShvUm91dGUsIG9NYW5pZmVzdFJvdXRpbmcsIG9TdGFydHVwUGFyYW1ldGVycywgb01ldGFNb2RlbCk7XG5cblx0XHRcdGlmIChvUGFnZUluZm8pIHtcblx0XHRcdFx0aWYgKCFtUGFnZXNCeUxldmVsW29QYWdlSW5mby5wYWdlTGV2ZWxdKSB7XG5cdFx0XHRcdFx0bVBhZ2VzQnlMZXZlbFtvUGFnZUluZm8ucGFnZUxldmVsXSA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1QYWdlc0J5TGV2ZWxbb1BhZ2VJbmZvLnBhZ2VMZXZlbF0ucHVzaChvUGFnZUluZm8pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Ly8gQSBwYWdlIGlzIHJlYWNoYWJsZSBvbmx5IGlmIGFsbCBpdHMgcGFyZW50cyBhcmUgYWxzbyByZWFjaGFibGVcblx0XHQvLyBTbyBpZiB3ZSBjb3VsZG4ndCBmaW5kIGFueSBwYWdlcyBmb3IgYSBnaXZlbiBsZXZlbCwgYWxsIHBhZ2VzIHdpdGggYSBoaWdoZXIgbGV2ZWwgd29uJ3QgYmUgcmVhY2hhYmxlIGFueXdheVxuXHRcdGNvbnN0IGFSZWFjaGFibGVQYWdlczogUGFnZUluZm9bXVtdID0gW107XG5cdFx0bGV0IGxldmVsID0gMDtcblx0XHR3aGlsZSAobVBhZ2VzQnlMZXZlbFtsZXZlbF0pIHtcblx0XHRcdGFSZWFjaGFibGVQYWdlcy5wdXNoKG1QYWdlc0J5TGV2ZWxbbGV2ZWxdKTtcblx0XHRcdGxldmVsKys7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFSZWFjaGFibGVQYWdlcztcblx0fSxcblxuXHQvKipcblx0ICogR2V0IHRoZSBsaXN0IG9mIHN0YXJ0dXAgcGFnZXMuXG5cdCAqIEBwYXJhbSBvTWFuaWZlc3RSb3V0aW5nIFRoZSByb3V0aW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIGFwcCBtYW5pZmVzdFxuXHQgKiBAcGFyYW0gb1N0YXJ0dXBQYXJhbWV0ZXJzIFRoZSBzdGFydHVwIHBhcmFtZXRlcnNcblx0ICogQHBhcmFtIG9NZXRhTW9kZWwgVGhlIG1ldGFtb2RlbFxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdGFydHVwIHBhZ2UgaW5mb3Ncblx0ICovXG5cdF9nZXRTdGFydHVwUGFnZXNGcm9tU3RhcnR1cFBhcmFtczogZnVuY3Rpb24gKFxuXHRcdG9NYW5pZmVzdFJvdXRpbmc6IFJvdXRpbmdDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuXHRcdG9TdGFydHVwUGFyYW1ldGVyczogU3RhcnR1cFBhcmFtZXRlcnMgfCBudWxsLFxuXHRcdG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsXG5cdCk6IFBhZ2VJbmZvW10ge1xuXHRcdC8vIEZpbmQgYWxsIHBhZ2VzIHRoYXQgY2FuIGJlIHJlYWNoZWQgd2l0aCB0aGUgc3RhcnR1cCBwYXJhbWV0ZXJzXG5cdFx0Y29uc3QgYVJlYWNoYWJsZVBhZ2VzID0gdGhpcy5fZ2V0UmVhY2hhYmxlUGFnZXMob01hbmlmZXN0Um91dGluZywgb1N0YXJ0dXBQYXJhbWV0ZXJzLCBvTWV0YU1vZGVsKTtcblxuXHRcdGlmIChhUmVhY2hhYmxlUGFnZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXG5cdFx0Ly8gRmluZCB0aGUgbG9uZ2VzdCBzZXF1ZW5jZSBvZiBwYWdlcyB0aGF0IGNhbiBiZSByZWFjaGVkIChyZWN1cnNpdmVseSlcblx0XHRsZXQgcmVzdWx0OiBQYWdlSW5mb1tdID0gW107XG5cdFx0Y29uc3QgY3VycmVudDogUGFnZUluZm9bXSA9IFtdO1xuXG5cdFx0ZnVuY3Rpb24gZmluZFJlY3Vyc2l2ZShsZXZlbDogbnVtYmVyKTogdm9pZCB7XG5cdFx0XHRjb25zdCBhQ3VycmVudExldmVsUGFnZXMgPSBhUmVhY2hhYmxlUGFnZXNbbGV2ZWxdO1xuXHRcdFx0Y29uc3QgbGFzdFBhZ2UgPSBjdXJyZW50Lmxlbmd0aCA/IGN1cnJlbnRbY3VycmVudC5sZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcblxuXHRcdFx0aWYgKGFDdXJyZW50TGV2ZWxQYWdlcykge1xuXHRcdFx0XHRhQ3VycmVudExldmVsUGFnZXMuZm9yRWFjaChmdW5jdGlvbiAobmV4dFBhZ2UpIHtcblx0XHRcdFx0XHRpZiAoIWxhc3RQYWdlIHx8IG5leHRQYWdlLnBhdHRlcm4uaW5kZXhPZihsYXN0UGFnZS5wYXR0ZXJuKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0Ly8gV2Ugb25seSBjb25zaWRlciBwYWdlcyB0aGF0IGNhbiBiZSByZWFjaGVkIGZyb20gdGhlIHBhZ2UgYXQgdGhlIHByZXZpb3VzIGxldmVsLFxuXHRcdFx0XHRcdFx0Ly8gLS0+IHRoZWlyIHBhdHRlcm4gbXVzdCBiZSB0aGUgcGF0dGVybiBvZiB0aGUgcHJldmlvdXMgcGFnZSB3aXRoIGFub3RoZXIgc2VnbWVudCBhcHBlbmRlZFxuXHRcdFx0XHRcdFx0Y3VycmVudC5wdXNoKG5leHRQYWdlKTtcblx0XHRcdFx0XHRcdGZpbmRSZWN1cnNpdmUobGV2ZWwgKyAxKTtcblx0XHRcdFx0XHRcdGN1cnJlbnQucG9wKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGlmIChjdXJyZW50Lmxlbmd0aCA+IHJlc3VsdC5sZW5ndGgpIHtcblx0XHRcdFx0cmVzdWx0ID0gY3VycmVudC5zbGljZSgpOyAvLyBXZSBoYXZlIGZvdW5kIGEgc2VxdWVuY2UgbG9uZ2VyIHRoYW4gb3VyIHByZXZpb3VzIGJlc3QgLS0+IHN0b3JlIGl0IGFzIHRoZSBuZXcgbG9uZ2VzdFxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZpbmRSZWN1cnNpdmUoMCk7XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBzdGFydHVwIG9iamVjdCBmcm9tIHRoZSBsaXN0IG9mIHBhZ2VzIGFuZCBjb250ZXh0cy5cblx0ICogQHBhcmFtIGFTdGFydHVwUGFnZXMgVGhlIHBhZ2VzXG5cdCAqIEBwYXJhbSBhQ29udGV4dHMgVGhlIGNvbnRleHRzXG5cdCAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIGVpdGhlciBhIGhhc2ggb3IgYSBjb250ZXh0IHRvIG5hdmlnYXRlIHRvLCBvciBhbiBlbXB0eSBvYmplY3QgaWYgbm8gZGVlcCBsaW5rIHdhcyBmb3VuZFxuXHQgKi9cblx0X2dldERlZXBMaW5rT2JqZWN0OiBmdW5jdGlvbiAoYVN0YXJ0dXBQYWdlczogUGFnZUluZm9bXSwgYUNvbnRleHRzOiBDb250ZXh0W10pOiB7IGhhc2g/OiBzdHJpbmc7IGNvbnRleHQ/OiBDb250ZXh0IH0ge1xuXHRcdGlmIChhQ29udGV4dHMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRyZXR1cm4geyBjb250ZXh0OiBhQ29udGV4dHNbMF0gfTtcblx0XHR9IGVsc2UgaWYgKGFDb250ZXh0cy5sZW5ndGggPiAxKSB7XG5cdFx0XHQvLyBOYXZpZ2F0aW9uIHRvIGEgZGVlcGVyIGxldmVsIC0tPiB1c2UgdGhlIHBhdHRlcm4gb2YgdGhlIGRlZXBlc3Qgb2JqZWN0IHBhZ2Vcblx0XHRcdC8vIGFuZCByZXBsYWNlIHRoZSBwYXJhbWV0ZXJzIGJ5IHRoZSBJRCBmcm9tIHRoZSBjb250ZXh0c1xuXHRcdFx0bGV0IGhhc2ggPSBhU3RhcnR1cFBhZ2VzW2FTdGFydHVwUGFnZXMubGVuZ3RoIC0gMV0ucGF0dGVybjtcblx0XHRcdGFDb250ZXh0cy5mb3JFYWNoKGZ1bmN0aW9uIChvQ29udGV4dCkge1xuXHRcdFx0XHRoYXNoID0gaGFzaC5yZXBsYWNlKFwiKCMpXCIsIGAoJHtvQ29udGV4dC5nZXRQYXRoKCkuc3BsaXQoXCIoXCIpWzFdfWApO1xuXHRcdFx0fSk7XG5cblx0XHRcdHJldHVybiB7IGhhc2ggfTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHt9O1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogQ2FsY3VsYXRlcyBzdGFydHVwIHBhcmFtZXRlcnMgZm9yIGEgZGVlcGxpbmsgY2FzZSwgZnJvbSBzdGFydHVwIHBhcmFtZXRlcnMgYW5kIHJvdXRpbmcgaW5mb3JtYXRpb24uXG5cdCAqIEBwYXJhbSBvTWFuaWZlc3RSb3V0aW5nIFRoZSByb3V0aW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIGFwcCBtYW5pZmVzdFxuXHQgKiBAcGFyYW0gb1N0YXJ0dXBQYXJhbWV0ZXJzIFRoZSBzdGFydHVwIHBhcmFtZXRlcnNcblx0ICogQHBhcmFtIG9Nb2RlbCBUaGUgT0RhdGEgbW9kZWxcblx0ICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgZWl0aGVyIGEgaGFzaCBvciBhIGNvbnRleHQgdG8gbmF2aWdhdGUgdG8sIG9yIGFuIGVtcHR5IG9iamVjdCBpZiBubyBkZWVwIGxpbmsgd2FzIGZvdW5kXG5cdCAqL1xuXHRnZXREZWVwTGlua1N0YXJ0dXBIYXNoOiBhc3luYyBmdW5jdGlvbiAoXG5cdFx0b01hbmlmZXN0Um91dGluZzogUm91dGluZ0NvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQsXG5cdFx0b1N0YXJ0dXBQYXJhbWV0ZXJzOiBTdGFydHVwUGFyYW1ldGVycyB8IG51bGwsXG5cdFx0b01vZGVsOiBPRGF0YU1vZGVsXG5cdCk6IFByb21pc2U8eyBoYXNoPzogc3RyaW5nOyBjb250ZXh0PzogQ29udGV4dCB9PiB7XG5cdFx0YXdhaXQgb01vZGVsLmdldE1ldGFNb2RlbCgpLnJlcXVlc3RPYmplY3QoXCIvJEVudGl0eUNvbnRhaW5lci9cIik7XG5cblx0XHQvLyBDaGVjayBpZiBzZW1hbnRpYyBrZXlzIGFyZSBwcmVzZW50IGluIHVybCBwYXJhbWV0ZXJzIGZvciBldmVyeSBvYmplY3QgcGFnZSBhdCBlYWNoIGxldmVsXG5cdFx0Y29uc3Qgc3RhcnR1cFBhZ2VzID0gdGhpcy5fZ2V0U3RhcnR1cFBhZ2VzRnJvbVN0YXJ0dXBQYXJhbXMob01hbmlmZXN0Um91dGluZywgb1N0YXJ0dXBQYXJhbWV0ZXJzLCBvTW9kZWwuZ2V0TWV0YU1vZGVsKCkpO1xuXG5cdFx0Ly8gTG9hZCB0aGUgY29udGV4dHNcblx0XHRjb25zdCBhbGxDb250ZXh0cyA9IGF3YWl0IHRoaXMuX3JlcXVlc3RPYmplY3RzRnJvbVBhcmFtZXRlcnMoc3RhcnR1cFBhZ2VzLCBvTW9kZWwpO1xuXHRcdGlmIChhbGxDb250ZXh0cy5sZW5ndGgpIHtcblx0XHRcdC8vIE1ha2Ugc3VyZSB3ZSBvbmx5IGdldCAxIGNvbnRleHQgcGVyIHByb21pc2UsIGFuZCBmbGF0dGVuIHRoZSBhcnJheVxuXHRcdFx0Y29uc3QgY29udGV4dHNGb3JTdGFydHVwOiBDb250ZXh0W10gPSBbXTtcblx0XHRcdGFsbENvbnRleHRzLmZvckVhY2goZnVuY3Rpb24gKGZvdW5kQ29udGV4dHMpIHtcblx0XHRcdFx0aWYgKGZvdW5kQ29udGV4dHMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdFx0Y29udGV4dHNGb3JTdGFydHVwLnB1c2goZm91bmRDb250ZXh0c1swXSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRyZXR1cm4gY29udGV4dHNGb3JTdGFydHVwLmxlbmd0aCA9PT0gYWxsQ29udGV4dHMubGVuZ3RoID8gdGhpcy5fZ2V0RGVlcExpbmtPYmplY3Qoc3RhcnR1cFBhZ2VzLCBjb250ZXh0c0ZvclN0YXJ0dXApIDoge307XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB7fTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIENhbGN1bGF0ZXMgdGhlIG5ldyBoYXNoIGJhc2VkIG9uIHRoZSBzdGFydHVwIHBhcmFtZXRlcnMuXG5cdCAqIEBwYXJhbSBvU3RhcnR1cFBhcmFtZXRlcnMgVGhlIHN0YXJ0dXAgcGFyYW1ldGVyIHZhbHVlcyAobWFwIHBhcmFtZXRlciBuYW1lIC0+IGFycmF5IG9mIHZhbHVlcylcblx0ICogQHBhcmFtIHNDb250ZXh0UGF0aCBUaGUgY29udGV4dCBwYXRoIGZvciB0aGUgc3RhcnR1cCBvZiB0aGUgYXBwIChnZW5lcmFsbHkgdGhlIHBhdGggdG8gdGhlIG1haW4gZW50aXR5IHNldClcblx0ICogQHBhcmFtIG9Sb3V0ZXIgVGhlIHJvdXRlciBpbnN0YW5jZVxuXHQgKiBAcGFyYW0gb01ldGFNb2RlbCBUaGUgbWV0YSBtb2RlbFxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgY29udGFpbmluZyB0aGUgaGFzaCB0byBuYXZpZ2F0ZSB0bywgb3IgYW4gZW1wdHkgc3RyaW5nIGlmIHRoZXJlJ3Mgbm8gbmVlZCB0byBuYXZpZ2F0ZVxuXHQgKi9cblx0Z2V0Q3JlYXRlU3RhcnR1cEhhc2g6IGFzeW5jIGZ1bmN0aW9uIChcblx0XHRvU3RhcnR1cFBhcmFtZXRlcnM6IFN0YXJ0dXBQYXJhbWV0ZXJzLFxuXHRcdHNDb250ZXh0UGF0aDogc3RyaW5nLFxuXHRcdG9Sb3V0ZXI6IFJvdXRlcixcblx0XHRvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbFxuXHQpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRcdHJldHVybiBvTWV0YU1vZGVsLnJlcXVlc3RPYmplY3QoYCR7c0NvbnRleHRQYXRofUBgKS50aGVuKChvRW50aXR5U2V0QW5ub3RhdGlvbnM6IE1ldGFNb2RlbEVudGl0eVNldEFubm90YXRpb24pID0+IHtcblx0XHRcdGxldCBzTWV0YVBhdGggPSBcIlwiO1xuXHRcdFx0bGV0IGJDcmVhdGFibGUgPSB0cnVlO1xuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9FbnRpdHlTZXRBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290XCJdICYmXG5cdFx0XHRcdG9FbnRpdHlTZXRBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290XCJdW1wiTmV3QWN0aW9uXCJdXG5cdFx0XHQpIHtcblx0XHRcdFx0c01ldGFQYXRoID0gYCR7c0NvbnRleHRQYXRofUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290L05ld0FjdGlvbkBPcmcuT0RhdGEuQ29yZS5WMS5PcGVyYXRpb25BdmFpbGFibGVgO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0b0VudGl0eVNldEFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlNlc3Npb24udjEuU3RpY2t5U2Vzc2lvblN1cHBvcnRlZFwiXSAmJlxuXHRcdFx0XHRvRW50aXR5U2V0QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuU2Vzc2lvbi52MS5TdGlja3lTZXNzaW9uU3VwcG9ydGVkXCJdW1wiTmV3QWN0aW9uXCJdXG5cdFx0XHQpIHtcblx0XHRcdFx0c01ldGFQYXRoID0gYCR7c0NvbnRleHRQYXRofUBjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxLlN0aWNreVNlc3Npb25TdXBwb3J0ZWQvTmV3QWN0aW9uQE9yZy5PRGF0YS5Db3JlLlYxLk9wZXJhdGlvbkF2YWlsYWJsZWA7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzTWV0YVBhdGgpIHtcblx0XHRcdFx0Y29uc3QgYk5ld0FjdGlvbk9wZXJhdGlvbkF2YWlsYWJsZSA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KHNNZXRhUGF0aCk7XG5cdFx0XHRcdGlmIChiTmV3QWN0aW9uT3BlcmF0aW9uQXZhaWxhYmxlID09PSBmYWxzZSkge1xuXHRcdFx0XHRcdGJDcmVhdGFibGUgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3Qgb0luc2VydFJlc3RyaWN0aW9ucyA9IG9FbnRpdHlTZXRBbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkluc2VydFJlc3RyaWN0aW9uc1wiXTtcblx0XHRcdFx0aWYgKG9JbnNlcnRSZXN0cmljdGlvbnMgJiYgb0luc2VydFJlc3RyaWN0aW9ucy5JbnNlcnRhYmxlID09PSBmYWxzZSkge1xuXHRcdFx0XHRcdGJDcmVhdGFibGUgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGJDcmVhdGFibGUpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0RGVmYXVsdENyZWF0ZUhhc2gob1N0YXJ0dXBQYXJhbWV0ZXJzLCBzQ29udGV4dFBhdGgsIG9Sb3V0ZXIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENhbGN1bGF0ZXMgdGhlIGhhc2ggdG8gY3JlYXRlIGEgbmV3IG9iamVjdC5cblx0ICogQHBhcmFtIG9TdGFydHVwUGFyYW1ldGVycyBUaGUgc3RhcnR1cCBwYXJhbWV0ZXIgdmFsdWVzIChtYXAgcGFyYW1ldGVyIG5hbWUgLT4gYXJyYXkgb2YgdmFsdWVzKVxuXHQgKiBAcGFyYW0gc0NvbnRleHRQYXRoIFRoZSBjb250ZXh0IHBhdGggb2YgdGhlIGVudGl0eSBzZXQgdG8gYmUgdXNlZCBmb3IgdGhlIGNyZWF0aW9uXG5cdCAqIEBwYXJhbSBvUm91dGVyIFRoZSByb3V0ZXIgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgVGhlIGhhc2hcblx0ICovXG5cdGdldERlZmF1bHRDcmVhdGVIYXNoOiBmdW5jdGlvbiAoXG5cdFx0b1N0YXJ0dXBQYXJhbWV0ZXJzOiBTdGFydHVwUGFyYW1ldGVycyB8IG51bGwgfCB1bmRlZmluZWQsXG5cdFx0c0NvbnRleHRQYXRoOiBzdHJpbmcsXG5cdFx0b1JvdXRlcjogUm91dGVyXG5cdCk6IHN0cmluZyB7XG5cdFx0bGV0IHNEZWZhdWx0Q3JlYXRlSGFzaCA9IG9TdGFydHVwUGFyYW1ldGVycyAmJiBvU3RhcnR1cFBhcmFtZXRlcnMucHJlZmVycmVkTW9kZSA/IG9TdGFydHVwUGFyYW1ldGVycy5wcmVmZXJyZWRNb2RlWzBdIDogXCJjcmVhdGVcIjtcblx0XHRsZXQgc0hhc2ggPSBcIlwiO1xuXG5cdFx0c0RlZmF1bHRDcmVhdGVIYXNoID1cblx0XHRcdHNEZWZhdWx0Q3JlYXRlSGFzaC5pbmNsdWRlcyhcIjpcIikgJiYgc0RlZmF1bHRDcmVhdGVIYXNoLmxlbmd0aCA+IHNEZWZhdWx0Q3JlYXRlSGFzaC5pbmRleE9mKFwiOlwiKSArIDFcblx0XHRcdFx0PyBzRGVmYXVsdENyZWF0ZUhhc2guc3Vic3RyaW5nKDAsIHNEZWZhdWx0Q3JlYXRlSGFzaC5pbmRleE9mKFwiOlwiKSlcblx0XHRcdFx0OiBcImNyZWF0ZVwiO1xuXHRcdHNIYXNoID0gYCR7c0NvbnRleHRQYXRoLnN1YnN0cmluZygxKX0oLi4uKT9pLWFjdGlvbj0ke3NEZWZhdWx0Q3JlYXRlSGFzaH1gO1xuXHRcdGlmIChvUm91dGVyLmdldFJvdXRlSW5mb0J5SGFzaChzSGFzaCkpIHtcblx0XHRcdHJldHVybiBzSGFzaDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBObyByb3V0ZSBtYXRjaCBmb3IgY3JlYXRpbmcgYSBuZXcgJHtzQ29udGV4dFBhdGguc3Vic3RyaW5nKDEpfWApO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogVmVyaWZpZXMgd2hldGhlciB0aGUgZW50aXR5IGluIHRoZSBnaXZlbiBjb250ZXh0IHBhdGggaXMgZWRpdGFibGUgYnkgbG9va2luZyBhdCB0aGUgZm9sbG93aW5nIGFubm90YXRpb25zOlxuXHQgKlxuXHQgKiAtIEBDb3JlLk9wZXJhdGlvbkF2YWlsYWJsZSBvZiB0aGUgZWRpdCBhY3Rpb25cblx0ICogLSBAVUkuVXBkYXRlSGlkZGVuXG5cdCAqXG5cdCAqIE9ubHkgc3RhdGljIHZhbHVlcyAodHJ1ZS9mYWxzZSkgYXJlIGNvbnNpZGVyZWQgaGVyZSBhcyB3ZSBkb24ndCBoYXZlIHRoZSBhY3R1YWwgYmluZGluZyBjb250ZXh0IHRvIGV2YWx1YXRlIGR5bmFtaWMgYmluZGluZ3MuXG5cdCAqIEBwYXJhbSBjb250ZXh0UGF0aFxuXHQgKiBAcGFyYW0gbWV0YU1vZGVsXG5cdCAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGVudGl0eSBpcyBlZGl0YWJsZSBvciBub3Rcblx0ICovXG5cdHZlcmlmeUVkaXRBbm5vdGF0aW9uczogYXN5bmMgZnVuY3Rpb24gKGNvbnRleHRQYXRoOiBzdHJpbmcsIG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0XHRjb25zdCBlbnRpdHlTZXRBbm5vdGF0aW9uczogTWV0YU1vZGVsRW50aXR5U2V0QW5ub3RhdGlvbiA9IGF3YWl0IG1ldGFNb2RlbC5yZXF1ZXN0T2JqZWN0KGAke2NvbnRleHRQYXRofUBgKTtcblx0XHRjb25zdCB1cGRhdGVIaWRkZW4gPSBlbnRpdHlTZXRBbm5vdGF0aW9ucz8uW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlVwZGF0ZUhpZGRlblwiXTtcblx0XHRsZXQgb3BlcmF0aW9uQXZhaWxhYmxlID0gdHJ1ZTtcblxuXHRcdGlmIChlbnRpdHlTZXRBbm5vdGF0aW9ucz8uW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdFJvb3RcIl0/LltcIkVkaXRBY3Rpb25cIl0pIHtcblx0XHRcdG9wZXJhdGlvbkF2YWlsYWJsZSA9IG1ldGFNb2RlbC5nZXRPYmplY3QoXG5cdFx0XHRcdGAke2NvbnRleHRQYXRofUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290L0VkaXRBY3Rpb25AT3JnLk9EYXRhLkNvcmUuVjEuT3BlcmF0aW9uQXZhaWxhYmxlYFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gb3BlcmF0aW9uQXZhaWxhYmxlICE9PSBmYWxzZSAmJiB1cGRhdGVIaWRkZW4gIT09IHRydWU7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFwcFN0YXJ0dXBIZWxwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0VBNkJBLE1BQU1BLGdCQUFnQixHQUFHO0lBQ3hCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyx5QkFBeUIsRUFBRSxTQUFBQSxDQUFVQyxTQUFtQixFQUFFQyxrQkFBNEMsRUFBMkI7TUFDaEksSUFBSUMsU0FBUyxHQUFHLElBQUk7TUFDcEIsTUFBTUMsS0FBSyxHQUFHSCxTQUFTLENBQUNJLEdBQUcsQ0FBRUMsSUFBSSxJQUFLO1FBQ3JDLElBQUlKLGtCQUFrQixHQUFHSSxJQUFJLENBQUMsSUFBSUosa0JBQWtCLENBQUNJLElBQUksQ0FBQyxDQUFDQyxNQUFNLEtBQUssQ0FB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
420
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcHBTdGFydHVwSGVscGVyIiwiX2dldEtleXNGcm9tU3RhcnR1cFBhcmFtcyIsImFLZXlOYW1lcyIsIm9TdGFydHVwUGFyYW1ldGVycyIsImJBbGxGb3VuZCIsImFLZXlzIiwibWFwIiwibmFtZSIsImxlbmd0aCIsInZhbHVlIiwidW5kZWZpbmVkIiwiX2NyZWF0ZUZpbHRlckZyb21LZXlzIiwiYkRyYWZ0TW9kZSIsIm9NZXRhTW9kZWwiLCJiRmlsdGVyQ2FzZVNlbnNpdGl2ZSIsIk1vZGVsSGVscGVyIiwiaXNGaWx0ZXJpbmdDYXNlU2Vuc2l0aXZlIiwiYkZpbHRlck9uQWN0aXZlRW50aXR5IiwiYUZpbHRlcnMiLCJrZXkiLCJGaWx0ZXIiLCJwYXRoIiwib3BlcmF0b3IiLCJGaWx0ZXJPcGVyYXRvciIsIkVRIiwidmFsdWUxIiwiY2FzZVNlbnNpdGl2ZSIsIm9EcmFmdEZpbHRlciIsImZpbHRlcnMiLCJhbmQiLCJwdXNoIiwiX3Nhbml0aXplS2V5cyIsImtleXMiLCJlbnRpdHlUeXBlIiwiZm9yRWFjaCIsInByb3BlcnR5VHlwZSIsIiRUeXBlIiwidHJpbSIsIm1hdGNoIiwiZXhlYyIsIl9yZXF1ZXN0T2JqZWN0c0Zyb21QYXJhbWV0ZXJzIiwiYVN0YXJ0dXBQYWdlcyIsIm9Nb2RlbCIsImFDb250ZXh0UHJvbWlzZXMiLCJwYWdlSW5mbyIsImdldE1ldGFNb2RlbCIsImdldE9iamVjdCIsImNvbnRleHRQYXRoIiwidGVjaG5pY2FsS2V5cyIsIlNlbWFudGljS2V5SGVscGVyIiwiZ2V0UGF0aENvbnRlbnQiLCJjb250ZXh0IiwiYmluZENvbnRleHQiLCJnZXRCb3VuZENvbnRleHQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNlbWFudGljS2V5cyIsIm9GaWx0ZXIiLCJkcmFmdE1vZGUiLCJvTGlzdEJpbmQiLCJiaW5kTGlzdCIsIiRzZWxlY3QiLCJqb2luIiwicmVxdWVzdENvbnRleHRzIiwiYWxsIiwiX2dldFJpZ2h0TW9zdFRhcmdldE5hbWUiLCJyb3V0ZSIsIm1hbmlmZXN0Um91dGluZyIsIkFycmF5IiwiaXNBcnJheSIsInRhcmdldCIsInJldmVyc2VUYXJnZXRzIiwicmV2ZXJzZSIsImZpbmQiLCJ0YXJnZXRJRCIsImN1cnJlbnRUYXJnZXQiLCJ0YXJnZXRzIiwiaW5jbHVkZXMiLCJfZ2V0UmVhY2hhYmxlUGFnZUluZm9Gcm9tUm91dGUiLCJvUm91dGUiLCJvTWFuaWZlc3RSb3V0aW5nIiwic1BhdHRlcm4iLCJwYXR0ZXJuIiwicmVwbGFjZSIsImVuZHNXaXRoIiwic1RhcmdldE5hbWUiLCJvVGFyZ2V0IiwiYVBhdHRlcm5TZWdtZW50cyIsInNwbGl0IiwicGFnZUxldmVsIiwib3B0aW9ucyIsInNldHRpbmdzIiwiYWxsb3dEZWVwTGlua2luZyIsInNDb250ZXh0UGF0aCIsImVudGl0eVNldCIsIm1ldGFDb250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJvYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwidGFyZ2V0RW50aXR5U2V0Iiwib0VudGl0eVR5cGUiLCJzZW1hbnRpY0tleU5hbWVzIiwic2VtS2V5IiwiJFByb3BlcnR5UGF0aCIsInRlY2huaWNhbEtleU5hbWVzIiwiZXZlcnkiLCJhU2VtYW50aWNrS2V5cyIsImFUZWNobmljYWxLZXlzIiwiX2dldFJlYWNoYWJsZVBhZ2VzIiwiYVJvdXRlcyIsInJvdXRlcyIsIm1QYWdlc0J5TGV2ZWwiLCJvUGFnZUluZm8iLCJhUmVhY2hhYmxlUGFnZXMiLCJsZXZlbCIsIl9nZXRTdGFydHVwUGFnZXNGcm9tU3RhcnR1cFBhcmFtcyIsInJlc3VsdCIsImN1cnJlbnQiLCJmaW5kUmVjdXJzaXZlIiwiYUN1cnJlbnRMZXZlbFBhZ2VzIiwibGFzdFBhZ2UiLCJuZXh0UGFnZSIsImluZGV4T2YiLCJwb3AiLCJzbGljZSIsIl9nZXREZWVwTGlua09iamVjdCIsImFDb250ZXh0cyIsImhhc2giLCJvQ29udGV4dCIsImdldFBhdGgiLCJnZXREZWVwTGlua1N0YXJ0dXBIYXNoIiwicmVxdWVzdE9iamVjdCIsInN0YXJ0dXBQYWdlcyIsImFsbENvbnRleHRzIiwiY29udGV4dHNGb3JTdGFydHVwIiwiZm91bmRDb250ZXh0cyIsImdldENyZWF0ZVN0YXJ0dXBIYXNoIiwib1JvdXRlciIsInRoZW4iLCJvRW50aXR5U2V0QW5ub3RhdGlvbnMiLCJzTWV0YVBhdGgiLCJiQ3JlYXRhYmxlIiwiYk5ld0FjdGlvbk9wZXJhdGlvbkF2YWlsYWJsZSIsIm9JbnNlcnRSZXN0cmljdGlvbnMiLCJJbnNlcnRhYmxlIiwiZ2V0RGVmYXVsdENyZWF0ZUhhc2giLCJzRGVmYXVsdENyZWF0ZUhhc2giLCJwcmVmZXJyZWRNb2RlIiwic0hhc2giLCJzdWJzdHJpbmciLCJnZXRSb3V0ZUluZm9CeUhhc2giLCJFcnJvciIsInZlcmlmeUVkaXRBbm5vdGF0aW9ucyIsIm1ldGFNb2RlbCIsImVudGl0eVNldEFubm90YXRpb25zIiwidXBkYXRlSGlkZGVuIiwib3BlcmF0aW9uQXZhaWxhYmxlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBcHBTdGFydHVwSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFN0YXJ0dXBQYXJhbWV0ZXJzIH0gZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBSb3V0aW5nQ29uZmlndXJhdGlvbiwgUm91dGluZ1JvdXRlIH0gZnJvbSBcInNhcC91aS9jb3JlL01hbmlmZXN0XCI7XG5pbXBvcnQgdHlwZSBSb3V0ZXIgZnJvbSBcInNhcC91aS9jb3JlL3JvdXRpbmcvUm91dGVyXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyXCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJPcGVyYXRvclwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IEV4cGFuZFBhdGhUeXBlLCBNZXRhTW9kZWxFbnRpdHlTZXRBbm5vdGF0aW9uIH0gZnJvbSBcInR5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcIi4uL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcIi4vTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBTZW1hbnRpY0tleUhlbHBlciBmcm9tIFwiLi9TZW1hbnRpY0tleUhlbHBlclwiO1xuXG50eXBlIFZhbHVlZEtleSA9IHtcblx0bmFtZTogc3RyaW5nO1xuXHR2YWx1ZTogc3RyaW5nO1xufTtcblxudHlwZSBQYWdlSW5mbyA9IHtcblx0cGF0dGVybjogc3RyaW5nO1xuXHRjb250ZXh0UGF0aDogc3RyaW5nO1xuXHRkcmFmdE1vZGU6IGJvb2xlYW47XG5cdHRlY2huaWNhbEtleXM6IFZhbHVlZEtleVtdIHwgdW5kZWZpbmVkO1xuXHRzZW1hbnRpY0tleXM6IFZhbHVlZEtleVtdIHwgdW5kZWZpbmVkO1xuXHR0YXJnZXQ6IHN0cmluZztcblx0cGFnZUxldmVsOiBudW1iZXI7XG59O1xuXG5jb25zdCBBcHBTdGFydHVwSGVscGVyID0ge1xuXHQvKipcblx0ICogUmV0cmlldmVzIGEgc2V0IG9mIGtleSB2YWx1ZXMgZnJvbSBzdGFydHVwIHBhcmFtZXRlcnMuXG5cdCAqIEBwYXJhbSBhS2V5TmFtZXMgVGhlIGFycmF5IG9mIGtleSBuYW1lc1xuXHQgKiBAcGFyYW0gb1N0YXJ0dXBQYXJhbWV0ZXJzIFRoZSBzdGFydHVwIHBhcmFtZXRlcnNcblx0ICogQHJldHVybnMgQW4gYXJyYXkgb2YgcGFpcnMgXFx7bmFtZSwgdmFsdWVcXH0gaWYgYWxsIGtleSB2YWx1ZXMgY291bGQgYmUgZm91bmQgaW4gdGhlIHN0YXJ0dXAgcGFyYW1ldGVycywgdW5kZWZpbmVkIG90aGVyd2lzZVxuXHQgKi9cblx0X2dldEtleXNGcm9tU3RhcnR1cFBhcmFtczogZnVuY3Rpb24gKGFLZXlOYW1lczogc3RyaW5nW10sIG9TdGFydHVwUGFyYW1ldGVyczogU3RhcnR1cFBhcmFtZXRlcnMgfCBudWxsKTogVmFsdWVkS2V5W10gfCB1bmRlZmluZWQge1xuXHRcdGxldCBiQWxsRm91bmQgPSB0cnVlO1xuXHRcdGNvbnN0IGFLZXlzID0gYUtleU5hbWVzLm1hcCgobmFtZSkgPT4ge1xuXHRcdFx0aWYgKG9TdGFydHVwUGFyYW1ldGVycz8uW25hbWVdICYmIG9TdGFydHVwUGFyYW1ldGVyc1tuYW1lXS5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0cmV0dXJuIHsgbmFtZSwgdmFsdWU6IG9TdGFydHVwUGFyYW1ldGVyc1tuYW1lXVswXSBhcyBzdHJpbmcgfTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEEgdW5pcXVlIGtleSB2YWx1ZSBjb3VsZG4ndCBiZSBmb3VuZCBpbiB0aGUgc3RhcnR1cCBwYXJhbWV0ZXJzXG5cdFx0XHRcdGJBbGxGb3VuZCA9IGZhbHNlO1xuXHRcdFx0XHRyZXR1cm4geyBuYW1lLCB2YWx1ZTogXCJcIiB9O1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIGJBbGxGb3VuZCA/IGFLZXlzIDogdW5kZWZpbmVkO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgZmlsdGVyIGZyb20gYSBsaXN0IG9mIGtleSB2YWx1ZXMuXG5cdCAqIEBwYXJhbSBhS2V5cyBBcnJheSBvZiBzZW1hbnRpYyBrZXlzIG9yIHRlY2huaWNhbCBrZXlzICh3aXRoIHZhbHVlcylcblx0ICogQHBhcmFtIGJEcmFmdE1vZGUgVHJ1ZSBpZiB0aGUgZW50aXR5IHN1cHBvcnRzIGRyYWZ0IG1vZGVcblx0ICogQHBhcmFtIG9NZXRhTW9kZWwgVGhlIG1ldGFtb2RlbFxuXHQgKiBAcmV0dXJucyBUaGUgZmlsdGVyXG5cdCAqL1xuXHRfY3JlYXRlRmlsdGVyRnJvbUtleXM6IGZ1bmN0aW9uIChhS2V5czogVmFsdWVkS2V5W10sIGJEcmFmdE1vZGU6IEJvb2xlYW4sIG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsKTogRmlsdGVyIHtcblx0XHRjb25zdCBiRmlsdGVyQ2FzZVNlbnNpdGl2ZSA9IE1vZGVsSGVscGVyLmlzRmlsdGVyaW5nQ2FzZVNlbnNpdGl2ZShvTWV0YU1vZGVsKTtcblxuXHRcdGxldCBiRmlsdGVyT25BY3RpdmVFbnRpdHkgPSBmYWxzZTtcblx0XHRjb25zdCBhRmlsdGVycyA9IGFLZXlzLm1hcCgoa2V5KSA9PiB7XG5cdFx0XHRpZiAoa2V5Lm5hbWUgPT09IFwiSXNBY3RpdmVFbnRpdHlcIikge1xuXHRcdFx0XHRiRmlsdGVyT25BY3RpdmVFbnRpdHkgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG5ldyBGaWx0ZXIoe1xuXHRcdFx0XHRwYXRoOiBrZXkubmFtZSxcblx0XHRcdFx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLkVRLFxuXHRcdFx0XHR2YWx1ZTE6IGtleS52YWx1ZSxcblx0XHRcdFx0Y2FzZVNlbnNpdGl2ZTogYkZpbHRlckNhc2VTZW5zaXRpdmVcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdGlmIChiRHJhZnRNb2RlICYmICFiRmlsdGVyT25BY3RpdmVFbnRpdHkpIHtcblx0XHRcdGNvbnN0IG9EcmFmdEZpbHRlciA9IG5ldyBGaWx0ZXIoe1xuXHRcdFx0XHRmaWx0ZXJzOiBbbmV3IEZpbHRlcihcIklzQWN0aXZlRW50aXR5XCIsIFwiRVFcIiwgZmFsc2UpLCBuZXcgRmlsdGVyKFwiU2libGluZ0VudGl0eS9Jc0FjdGl2ZUVudGl0eVwiLCBcIkVRXCIsIG51bGwpXSxcblx0XHRcdFx0YW5kOiBmYWxzZVxuXHRcdFx0fSk7XG5cdFx0XHRhRmlsdGVycy5wdXNoKG9EcmFmdEZpbHRlcik7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG5ldyBGaWx0ZXIoYUZpbHRlcnMsIHRydWUpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBNYWtlcyBzdXJlIGtleSB2YWx1ZXMgaGF2ZSB0aGUgY29ycmVjdCBmb3JtYXQuXG5cdCAqIFRoaXMgaXMgdG8gaGFuZGxlIHNwZWNpYWwgY2FzZXMsIGZvciBleGFtcGxlLCB3aGVyZSBCb29sZWFuIHZhbHVlcyBhcmUgJ1gnIG9yICcnLCBvciBndWlkIHZhbHVlcyBoYXZlIHRoZSBmb2xsb3dpbmcgZm9ybWF0OiBndWlkJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCcuXCIuXG5cdCAqIEBwYXJhbSBrZXlzXG5cdCAqIEBwYXJhbSBlbnRpdHlUeXBlXG5cdCAqL1xuXHRfc2FuaXRpemVLZXlzOiBmdW5jdGlvbiAoa2V5czogVmFsdWVkS2V5W10sIGVudGl0eVR5cGU6IFJlY29yZDxzdHJpbmcsIHsgJFR5cGU6IHN0cmluZyB9Pik6IHZvaWQge1xuXHRcdGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eVR5cGUgPSBlbnRpdHlUeXBlW2tleS5uYW1lXS4kVHlwZTtcblx0XHRcdHN3aXRjaCAocHJvcGVydHlUeXBlKSB7XG5cdFx0XHRcdGNhc2UgXCJFZG0uQm9vbGVhblwiOlxuXHRcdFx0XHRcdGlmIChrZXkudmFsdWUgIT09IFwidHJ1ZVwiICYmIGtleS52YWx1ZSAhPT0gXCJmYWxzZVwiKSB7XG5cdFx0XHRcdFx0XHQvLyBJZiB0aGUgdmFsdWUgaXMgbmVpdGhlciBcInRydWVcIiBub3IgXCJmYWxzZVwiLCBpdCdzIGNvbnNpZGVyZWQgYXMgZmFsc2UgaWYgaXQgY29udGFpbnMgb25seSB3aGl0ZXNwYWNlcyAoZS5nLiB0byBoYW5kbGUgJ1gnLycnIGZvciB0cnVlL2ZhbHNlIHZhbHVlcylcblx0XHRcdFx0XHRcdGtleS52YWx1ZSA9IGtleS52YWx1ZS50cmltKCkubGVuZ3RoID8gXCJ0cnVlXCIgOiBcImZhbHNlXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgXCJFZG0uR3VpZFwiOiB7XG5cdFx0XHRcdFx0Y29uc3QgbWF0Y2ggPSAvWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9Ly5leGVjKGtleS52YWx1ZSk7XG5cdFx0XHRcdFx0a2V5LnZhbHVlID0gbWF0Y2ggPyBtYXRjaFswXSA6IGtleS52YWx1ZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdC8vIERvIG5vdGhpbmdcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHQvKipcblx0ICogTG9hZHMgYWxsIGNvbnRleHRzIGZvciBhIGxpc3Qgb2YgcGFnZSBpbmZvcy5cblx0ICogQHBhcmFtIGFTdGFydHVwUGFnZXMgVGhlIGxpc3Qgb2YgcGFnZSBpbmZvc1xuXHQgKiBAcGFyYW0gb01vZGVsIFRoZSBtb2RlbCB1c2VkIHRvIGxvYWQgdGhlIGNvbnRleHRzXG5cdCAqIEByZXR1cm5zIEEgUHJvbWlzZSBmb3IgYWxsIGNvbnRleHRzXG5cdCAqL1xuXHRfcmVxdWVzdE9iamVjdHNGcm9tUGFyYW1ldGVyczogYXN5bmMgZnVuY3Rpb24gKGFTdGFydHVwUGFnZXM6IFBhZ2VJbmZvW10sIG9Nb2RlbDogT0RhdGFNb2RlbCk6IFByb21pc2U8Q29udGV4dFtdW10+IHtcblx0XHQvLyBMb2FkIHRoZSByZXNwZWN0aXZlIG9iamVjdHMgZm9yIGFsbCBvYmplY3QgcGFnZXMgZm91bmQgaW4gYUV4dGVybmFsbHlOYXZpZ2FibGVQYWdlc1xuXHRcdGNvbnN0IGFDb250ZXh0UHJvbWlzZXMgPSBhU3RhcnR1cFBhZ2VzLm1hcChhc3luYyAocGFnZUluZm8pID0+IHtcblx0XHRcdGNvbnN0IGVudGl0eVR5cGUgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCkuZ2V0T2JqZWN0KGAke3BhZ2VJbmZvLmNvbnRleHRQYXRofS9gKTtcblx0XHRcdGlmIChwYWdlSW5mby50ZWNobmljYWxLZXlzKSB7XG5cdFx0XHRcdHRoaXMuX3Nhbml0aXplS2V5cyhwYWdlSW5mby50ZWNobmljYWxLZXlzLCBlbnRpdHlUeXBlKTtcblx0XHRcdFx0Ly8gQ3JlYXRlIGEgY29udGV4dCB3aXRoIHRoZSBwcm9wZXIgcGF0aFxuXHRcdFx0XHRjb25zdCBwYXRoID0gYCR7cGFnZUluZm8uY29udGV4dFBhdGh9KCR7U2VtYW50aWNLZXlIZWxwZXIuZ2V0UGF0aENvbnRlbnQocGFnZUluZm8udGVjaG5pY2FsS2V5cywgZW50aXR5VHlwZSl9KWA7XG5cdFx0XHRcdGNvbnN0IGNvbnRleHQgPSBvTW9kZWwuYmluZENvbnRleHQocGF0aCkuZ2V0Qm91bmRDb250ZXh0KCk7XG5cdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoW2NvbnRleHRdKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IGFLZXlzID0gcGFnZUluZm8uc2VtYW50aWNLZXlzID8/IFtdO1xuXHRcdFx0XHR0aGlzLl9zYW5pdGl6ZUtleXMoYUtleXMsIGVudGl0eVR5cGUpO1xuXHRcdFx0XHRjb25zdCBvRmlsdGVyID0gdGhpcy5fY3JlYXRlRmlsdGVyRnJvbUtleXMoYUtleXMsIHBhZ2VJbmZvLmRyYWZ0TW9kZSwgb01vZGVsLmdldE1ldGFNb2RlbCgpKTtcblxuXHRcdFx0XHQvLyBvbmx5IHJlcXVlc3QgYSBtaW5pbXVtIG9mIGZpZWxkcyB0byBib29zdCBiYWNrZW5kIHBlcmZvcm1hbmNlIHNpbmNlIHRoaXMgaXMgb25seSB1c2VkIHRvIGNoZWNrIGlmIGFuIG9iamVjdCBleGlzdHNcblx0XHRcdFx0Y29uc3Qgb0xpc3RCaW5kID0gb01vZGVsLmJpbmRMaXN0KHBhZ2VJbmZvLmNvbnRleHRQYXRoLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgb0ZpbHRlciwge1xuXHRcdFx0XHRcdCRzZWxlY3Q6IGFLZXlzXG5cdFx0XHRcdFx0XHQubWFwKChrZXkpID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGtleS5uYW1lO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC5qb2luKFwiLFwiKVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIG9MaXN0QmluZC5yZXF1ZXN0Q29udGV4dHMoMCwgMik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYUNvbnRleHRQcm9taXNlcyk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIHJpZ2h0bW9zdCB0YXJnZXQgbmFtZSBmb3IgYSBnaXZlbiByb3V0ZS5cblx0ICogQHBhcmFtIHJvdXRlXG5cdCAqIEBwYXJhbSBtYW5pZmVzdFJvdXRpbmdcblx0ICogQHJldHVybnMgVGhlIHRhcmdldCBuYW1lIChvciB1bmRlZmluZWQgaWYgbm8gdmFsaWQgdGFyZ2V0IHdhcyBmb3VuZClcblx0ICovXG5cdF9nZXRSaWdodE1vc3RUYXJnZXROYW1lKHJvdXRlOiBSb3V0aW5nUm91dGUsIG1hbmlmZXN0Um91dGluZzogUm91dGluZ0NvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KHJvdXRlLnRhcmdldCkpIHtcblx0XHRcdC8vIEdldCB0aGUgcmlnaHRtb3N0IHRhcmdldCBmb3IgdGhpcyByb3V0ZSAoaWdub3JlIHRhcmdldHMgY29ycmVzcG9uZGluZyB0byByZXVzZSBjb21wb25lbnRzKVxuXHRcdFx0Y29uc3QgcmV2ZXJzZVRhcmdldHMgPSBbLi4ucm91dGUudGFyZ2V0XS5yZXZlcnNlKCk7XG5cdFx0XHRyZXR1cm4gcmV2ZXJzZVRhcmdldHMuZmluZCgodGFyZ2V0SUQpID0+IHtcblx0XHRcdFx0Y29uc3QgY3VycmVudFRhcmdldCA9IG1hbmlmZXN0Um91dGluZz8udGFyZ2V0cz8uW3RhcmdldElEXTtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0Py5uYW1lICYmXG5cdFx0XHRcdFx0W1wic2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0XCIsIFwic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlXCIsIFwic2FwLmZlLmNvcmUuZnBtXCJdLmluY2x1ZGVzKGN1cnJlbnRUYXJnZXQubmFtZSlcblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gcm91dGUudGFyZ2V0O1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIFBhZ2VJbmZvIGZyb20gYSByb3V0ZSBpZiBpdCdzIHJlYWNoYWJsZSBmcm9tIHRoZSBzdGFydHVwIHBhcmFtZXRlcnMuXG5cdCAqIEBwYXJhbSBvUm91dGUgVGhlIHJvdXRlXG5cdCAqIEBwYXJhbSBvTWFuaWZlc3RSb3V0aW5nIFRoZSBhcHAgbWFuaWZlc3Qgcm91dGluZyBzZWN0aW9uXG5cdCAqIEBwYXJhbSBvU3RhcnR1cFBhcmFtZXRlcnMgVGhlIHN0YXJ0dXAgcGFyYW1ldGVyc1xuXHQgKiBAcGFyYW0gb01ldGFNb2RlbCBUaGUgYXBwIG1ldGFtb2RlbFxuXHQgKiBAcmV0dXJucyBBIHBhZ2UgaW5mbyBpZiB0aGUgcGFnZSBpcyByZWFjaGFibGUsIHVuZGVmaW5lZCBvdGhlcndpc2Vcblx0ICovXG5cdF9nZXRSZWFjaGFibGVQYWdlSW5mb0Zyb21Sb3V0ZTogZnVuY3Rpb24gKFxuXHRcdG9Sb3V0ZTogUm91dGluZ1JvdXRlLFxuXHRcdG9NYW5pZmVzdFJvdXRpbmc6IFJvdXRpbmdDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuXHRcdG9TdGFydHVwUGFyYW1ldGVyczogU3RhcnR1cFBhcmFtZXRlcnMgfCBudWxsLFxuXHRcdG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsXG5cdCk6IFBhZ2VJbmZvIHwgdW5kZWZpbmVkIHtcblx0XHQvLyBSZW1vdmUgdHJhaWxpbmcgJzo/cXVlcnk6JyBhbmQgJy8nXG5cdFx0bGV0IHNQYXR0ZXJuOiBzdHJpbmcgPSBvUm91dGUucGF0dGVybiEucmVwbGFjZShcIjo/cXVlcnk6XCIsIFwiXCIpO1xuXHRcdHNQYXR0ZXJuID0gc1BhdHRlcm4ucmVwbGFjZSgvXFwvJC8sIFwiXCIpO1xuXG5cdFx0aWYgKCFzUGF0dGVybiB8fCAhc1BhdHRlcm4uZW5kc1dpdGgoXCIpXCIpKSB7XG5cdFx0XHQvLyBJZ25vcmUgbGV2ZWwtMCByb3V0ZXMgKExpc3RSZXBvcnQpIG9yIHJvdXRlcyBjb3JyZXNwb25kaW5nIHRvIGEgMS0xIHJlbGF0aW9uIChubyBrZXlzIGluIHRoZSBVUkwgaW4gdGhpcyBjYXNlKVxuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRzUGF0dGVybiA9IHNQYXR0ZXJuLnJlcGxhY2UoL1xcKFxce1tefV0qXFx9XFwpL2csIFwiKCMpXCIpOyAvLyBSZXBsYWNlIGtleXMgd2l0aCAjXG5cblx0XHRjb25zdCBzVGFyZ2V0TmFtZSA9IHRoaXMuX2dldFJpZ2h0TW9zdFRhcmdldE5hbWUob1JvdXRlLCBvTWFuaWZlc3RSb3V0aW5nKTtcblx0XHRpZiAoIXNUYXJnZXROYW1lKSB7XG5cdFx0XHQvLyBObyB0YXJnZXQgZm91bmQgZm9yIHRoaXMgcm91dGVcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb1RhcmdldCA9IG9NYW5pZmVzdFJvdXRpbmc/LnRhcmdldHM/LltzVGFyZ2V0TmFtZV07XG5cblx0XHRjb25zdCBhUGF0dGVyblNlZ21lbnRzID0gc1BhdHRlcm4uc3BsaXQoXCIvXCIpO1xuXHRcdGNvbnN0IHBhZ2VMZXZlbCA9IGFQYXR0ZXJuU2VnbWVudHMubGVuZ3RoIC0gMTtcblxuXHRcdGlmIChwYWdlTGV2ZWwgIT09IDAgJiYgb1RhcmdldD8ub3B0aW9ucz8uc2V0dGluZ3M/LmFsbG93RGVlcExpbmtpbmcgIT09IHRydWUpIHtcblx0XHRcdC8vIFRoZSBmaXJzdCBsZXZlbCBvZiBvYmplY3QgcGFnZSBhbGxvd3MgZGVlcCBsaW5raW5nIGJ5IGRlZmF1bHQuXG5cdFx0XHQvLyBPdGhlcndpc2UsIHRoZSB0YXJnZXQgbXVzdCBhbGxvdyBkZWVwIGxpbmtpbmcgZXhwbGljaXRlbHkgaW4gdGhlIG1hbmlmZXN0XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGxldCBzQ29udGV4dFBhdGggPSBcIlwiO1xuXHRcdGlmIChvVGFyZ2V0Py5vcHRpb25zPy5zZXR0aW5ncz8uZW50aXR5U2V0KSB7XG5cdFx0XHRzQ29udGV4dFBhdGggPSBgLyR7b1RhcmdldC5vcHRpb25zLnNldHRpbmdzLmVudGl0eVNldH1gO1xuXHRcdH0gZWxzZSBpZiAob1RhcmdldD8ub3B0aW9ucz8uc2V0dGluZ3M/LmNvbnRleHRQYXRoKSB7XG5cdFx0XHRjb25zdCBtZXRhQ29udGV4dCA9IG9NZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQob1RhcmdldC5vcHRpb25zLnNldHRpbmdzLmNvbnRleHRQYXRoKSE7XG5cdFx0XHRjb25zdCBvYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG1ldGFDb250ZXh0KTtcblx0XHRcdGlmIChvYmplY3RQYXRoLnRhcmdldEVudGl0eVNldCkge1xuXHRcdFx0XHRzQ29udGV4dFBhdGggPSBgLyR7b2JqZWN0UGF0aC50YXJnZXRFbnRpdHlTZXQubmFtZX1gO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICghc0NvbnRleHRQYXRoKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRjb25zdCBvRW50aXR5VHlwZSA9IHNDb250ZXh0UGF0aCAmJiBvTWV0YU1vZGVsLmdldE9iamVjdChgLyRFbnRpdHlDb250YWluZXIke3NDb250ZXh0UGF0aH0vYCk7XG5cblx0XHRpZiAoIW9FbnRpdHlUeXBlKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdC8vIEdldCB0aGUgc2VtYW50aWMga2V5IHZhbHVlcyBmb3IgdGhlIGVudGl0eVxuXHRcdGxldCBzZW1hbnRpY0tleU5hbWVzID0gKFxuXHRcdFx0b01ldGFNb2RlbC5nZXRPYmplY3QoYC8kRW50aXR5Q29udGFpbmVyJHtzQ29udGV4dFBhdGh9L0Bjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2VtYW50aWNLZXlgKSBhc1xuXHRcdFx0XHR8IEV4cGFuZFBhdGhUeXBlPFByb3BlcnR5UGF0aD5bXVxuXHRcdFx0XHR8IHVuZGVmaW5lZFxuXHRcdCk/Lm1hcCgoc2VtS2V5KSA9PiB7XG5cdFx0XHRyZXR1cm4gc2VtS2V5LiRQcm9wZXJ0eVBhdGg7XG5cdFx0fSk7XG5cblx0XHQvLyBJZiB3ZSdyZSBvbiBhIGZpcnN0IGxldmVsIG9iamVjdCBwYWdlIGFuZCB0aGUgc2VtYW50aWMga2V5cyBhcmUgdGhlIHNhbWUgYXMgdGhlIHRlY2huaWNhbCBrZXlzLCB3ZSB1c2UgdGVjaG5pY2FsIGtleXMgZGlyZWN0bHksXG5cdFx0Ly8gdG8gYXZvaWQgdGhlIGFkZGl0aW9uYWwgcXVlcnkgdXNlZCB0byBsb2FkIHRoZSBvYmplY3QgZnJvbSBpdHMgc2VtYW50aWMga2V5cyBpbiBfcmVxdWVzdE9iamVjdHNGcm9tUGFyYW1ldGVyc1xuXHRcdGNvbnN0IHRlY2huaWNhbEtleU5hbWVzID0gb0VudGl0eVR5cGVbXCIkS2V5XCJdO1xuXHRcdGlmIChcblx0XHRcdHBhZ2VMZXZlbCA9PT0gMCAmJlxuXHRcdFx0c2VtYW50aWNLZXlOYW1lcyAmJlxuXHRcdFx0c2VtYW50aWNLZXlOYW1lcy5sZW5ndGggPT09IHRlY2huaWNhbEtleU5hbWVzLmxlbmd0aCAmJlxuXHRcdFx0c2VtYW50aWNLZXlOYW1lcy5ldmVyeSgoa2V5KSA9PiB0ZWNobmljYWxLZXlOYW1lcy5pbmNsdWRlcyhrZXkpKVxuXHRcdCkge1xuXHRcdFx0c2VtYW50aWNLZXlOYW1lcyA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRjb25zdCBhU2VtYW50aWNrS2V5cyA9IHNlbWFudGljS2V5TmFtZXMgPyB0aGlzLl9nZXRLZXlzRnJvbVN0YXJ0dXBQYXJhbXMoc2VtYW50aWNLZXlOYW1lcywgb1N0YXJ0dXBQYXJhbWV0ZXJzKSA6IHVuZGVmaW5lZDtcblxuXHRcdC8vIEdldCB0aGUgdGVjaG5pY2FsIGtleXMgb25seSBpZiB3ZSBjb3VsZG4ndCBmaW5kIHRoZSBzZW1hbnRpYyBrZXkgdmFsdWVzLCBhbmQgb24gZmlyc3QgbGV2ZWwgT1Bcblx0XHRjb25zdCBhVGVjaG5pY2FsS2V5cyA9XG5cdFx0XHQhYVNlbWFudGlja0tleXMgJiYgcGFnZUxldmVsID09PSAwID8gdGhpcy5fZ2V0S2V5c0Zyb21TdGFydHVwUGFyYW1zKHRlY2huaWNhbEtleU5hbWVzLCBvU3RhcnR1cFBhcmFtZXRlcnMpIDogdW5kZWZpbmVkO1xuXG5cdFx0aWYgKGFTZW1hbnRpY2tLZXlzID09PSB1bmRlZmluZWQgJiYgYVRlY2huaWNhbEtleXMgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Ly8gV2UgY291bGRuJ3QgZmluZCB0aGUgc2VtYW50aWMvdGVjaG5pY2FsIGtleXMgaW4gdGhlIHN0YXJ0dXAgcGFyYW1ldGVyc1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHQvLyBUaGUgc3RhcnR1cCBwYXJhbWV0ZXJzIGNvbnRhaW4gdmFsdWVzIGZvciBhbGwgc2VtYW50aWMga2V5cyAob3IgdGVjaG5pY2FsIGtleXMpIC0tPiB3ZSBjYW4gc3RvcmUgdGhlIHBhZ2UgaW5mbyBpbiB0aGUgY29ycmVzcG9uZGluZyBsZXZlbFxuXHRcdGNvbnN0IGRyYWZ0TW9kZSA9XG5cdFx0XHRvTWV0YU1vZGVsLmdldE9iamVjdChgLyRFbnRpdHlDb250YWluZXIke3NDb250ZXh0UGF0aH1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Um9vdGApIHx8XG5cdFx0XHRvTWV0YU1vZGVsLmdldE9iamVjdChgLyRFbnRpdHlDb250YWluZXIke3NDb250ZXh0UGF0aH1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Tm9kZWApXG5cdFx0XHRcdD8gdHJ1ZVxuXHRcdFx0XHQ6IGZhbHNlO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhdHRlcm46IHNQYXR0ZXJuLFxuXHRcdFx0Y29udGV4dFBhdGg6IHNDb250ZXh0UGF0aCxcblx0XHRcdGRyYWZ0TW9kZSxcblx0XHRcdHRlY2huaWNhbEtleXM6IGFUZWNobmljYWxLZXlzLFxuXHRcdFx0c2VtYW50aWNLZXlzOiBhU2VtYW50aWNrS2V5cyxcblx0XHRcdHRhcmdldDogc1RhcmdldE5hbWUsXG5cdFx0XHRwYWdlTGV2ZWxcblx0XHR9O1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBwYWdlcyB0aGF0IGFsbG93IGRlZXBsaW5rIGFuZCB0aGF0IGNhbiBiZSByZWFjaGVkIHVzaW5nIHRoZSBzdGFydHVwIHBhcmFtZXRlcnMuXG5cdCAqIEBwYXJhbSBvTWFuaWZlc3RSb3V0aW5nIFRoZSByb3V0aW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIGFwcCBtYW5pZmVzdFxuXHQgKiBAcGFyYW0gb1N0YXJ0dXBQYXJhbWV0ZXJzIFRoZSBzdGFydHVwIHBhcmFtZXRlcnNcblx0ICogQHBhcmFtIG9NZXRhTW9kZWwgVGhlIG1ldGFtb2RlbFxuXHQgKiBAcmV0dXJucyBUaGUgcmVhY2hhYmxlIHBhZ2VzXG5cdCAqL1xuXHRfZ2V0UmVhY2hhYmxlUGFnZXM6IGZ1bmN0aW9uIChcblx0XHRvTWFuaWZlc3RSb3V0aW5nOiBSb3V0aW5nQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCxcblx0XHRvU3RhcnR1cFBhcmFtZXRlcnM6IFN0YXJ0dXBQYXJhbWV0ZXJzIHwgbnVsbCxcblx0XHRvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbFxuXHQpOiBQYWdlSW5mb1tdW10ge1xuXHRcdGNvbnN0IGFSb3V0ZXM6IFJvdXRpbmdSb3V0ZVtdID0gb01hbmlmZXN0Um91dGluZz8ucm91dGVzID8/IFtdO1xuXHRcdGNvbnN0IG1QYWdlc0J5TGV2ZWw6IFJlY29yZDxudW1iZXIsIFBhZ2VJbmZvW10+ID0ge307XG5cblx0XHRhUm91dGVzLmZvckVhY2goKG9Sb3V0ZSkgPT4ge1xuXHRcdFx0Y29uc3Qgb1BhZ2VJbmZvID0gdGhpcy5fZ2V0UmVhY2hhYmxlUGFnZUluZm9Gcm9tUm91dGUob1JvdXRlLCBvTWFuaWZlc3RSb3V0aW5nLCBvU3RhcnR1cFBhcmFtZXRlcnMsIG9NZXRhTW9kZWwpO1xuXG5cdFx0XHRpZiAob1BhZ2VJbmZvKSB7XG5cdFx0XHRcdGlmICghbVBhZ2VzQnlMZXZlbFtvUGFnZUluZm8ucGFnZUxldmVsXSkge1xuXHRcdFx0XHRcdG1QYWdlc0J5TGV2ZWxbb1BhZ2VJbmZvLnBhZ2VMZXZlbF0gPSBbXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRtUGFnZXNCeUxldmVsW29QYWdlSW5mby5wYWdlTGV2ZWxdLnB1c2gob1BhZ2VJbmZvKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdC8vIEEgcGFnZSBpcyByZWFjaGFibGUgb25seSBpZiBhbGwgaXRzIHBhcmVudHMgYXJlIGFsc28gcmVhY2hhYmxlXG5cdFx0Ly8gU28gaWYgd2UgY291bGRuJ3QgZmluZCBhbnkgcGFnZXMgZm9yIGEgZ2l2ZW4gbGV2ZWwsIGFsbCBwYWdlcyB3aXRoIGEgaGlnaGVyIGxldmVsIHdvbid0IGJlIHJlYWNoYWJsZSBhbnl3YXlcblx0XHRjb25zdCBhUmVhY2hhYmxlUGFnZXM6IFBhZ2VJbmZvW11bXSA9IFtdO1xuXHRcdGxldCBsZXZlbCA9IDA7XG5cdFx0d2hpbGUgKG1QYWdlc0J5TGV2ZWxbbGV2ZWxdKSB7XG5cdFx0XHRhUmVhY2hhYmxlUGFnZXMucHVzaChtUGFnZXNCeUxldmVsW2xldmVsXSk7XG5cdFx0XHRsZXZlbCsrO1xuXHRcdH1cblxuXHRcdHJldHVybiBhUmVhY2hhYmxlUGFnZXM7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCB0aGUgbGlzdCBvZiBzdGFydHVwIHBhZ2VzLlxuXHQgKiBAcGFyYW0gb01hbmlmZXN0Um91dGluZyBUaGUgcm91dGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBhcHAgbWFuaWZlc3Rcblx0ICogQHBhcmFtIG9TdGFydHVwUGFyYW1ldGVycyBUaGUgc3RhcnR1cCBwYXJhbWV0ZXJzXG5cdCAqIEBwYXJhbSBvTWV0YU1vZGVsIFRoZSBtZXRhbW9kZWxcblx0ICogQHJldHVybnMgQW4gYXJyYXkgb2Ygc3RhcnR1cCBwYWdlIGluZm9zXG5cdCAqL1xuXHRfZ2V0U3RhcnR1cFBhZ2VzRnJvbVN0YXJ0dXBQYXJhbXM6IGZ1bmN0aW9uIChcblx0XHRvTWFuaWZlc3RSb3V0aW5nOiBSb3V0aW5nQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCxcblx0XHRvU3RhcnR1cFBhcmFtZXRlcnM6IFN0YXJ0dXBQYXJhbWV0ZXJzIHwgbnVsbCxcblx0XHRvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbFxuXHQpOiBQYWdlSW5mb1tdIHtcblx0XHQvLyBGaW5kIGFsbCBwYWdlcyB0aGF0IGNhbiBiZSByZWFjaGVkIHdpdGggdGhlIHN0YXJ0dXAgcGFyYW1ldGVyc1xuXHRcdGNvbnN0IGFSZWFjaGFibGVQYWdlcyA9IHRoaXMuX2dldFJlYWNoYWJsZVBhZ2VzKG9NYW5pZmVzdFJvdXRpbmcsIG9TdGFydHVwUGFyYW1ldGVycywgb01ldGFNb2RlbCk7XG5cblx0XHRpZiAoYVJlYWNoYWJsZVBhZ2VzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblxuXHRcdC8vIEZpbmQgdGhlIGxvbmdlc3Qgc2VxdWVuY2Ugb2YgcGFnZXMgdGhhdCBjYW4gYmUgcmVhY2hlZCAocmVjdXJzaXZlbHkpXG5cdFx0bGV0IHJlc3VsdDogUGFnZUluZm9bXSA9IFtdO1xuXHRcdGNvbnN0IGN1cnJlbnQ6IFBhZ2VJbmZvW10gPSBbXTtcblxuXHRcdGZ1bmN0aW9uIGZpbmRSZWN1cnNpdmUobGV2ZWw6IG51bWJlcik6IHZvaWQge1xuXHRcdFx0Y29uc3QgYUN1cnJlbnRMZXZlbFBhZ2VzID0gYVJlYWNoYWJsZVBhZ2VzW2xldmVsXTtcblx0XHRcdGNvbnN0IGxhc3RQYWdlID0gY3VycmVudC5sZW5ndGggPyBjdXJyZW50W2N1cnJlbnQubGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG5cblx0XHRcdGlmIChhQ3VycmVudExldmVsUGFnZXMpIHtcblx0XHRcdFx0YUN1cnJlbnRMZXZlbFBhZ2VzLmZvckVhY2goZnVuY3Rpb24gKG5leHRQYWdlKSB7XG5cdFx0XHRcdFx0aWYgKCFsYXN0UGFnZSB8fCBuZXh0UGFnZS5wYXR0ZXJuLmluZGV4T2YobGFzdFBhZ2UucGF0dGVybikgPT09IDApIHtcblx0XHRcdFx0XHRcdC8vIFdlIG9ubHkgY29uc2lkZXIgcGFnZXMgdGhhdCBjYW4gYmUgcmVhY2hlZCBmcm9tIHRoZSBwYWdlIGF0IHRoZSBwcmV2aW91cyBsZXZlbCxcblx0XHRcdFx0XHRcdC8vIC0tPiB0aGVpciBwYXR0ZXJuIG11c3QgYmUgdGhlIHBhdHRlcm4gb2YgdGhlIHByZXZpb3VzIHBhZ2Ugd2l0aCBhbm90aGVyIHNlZ21lbnQgYXBwZW5kZWRcblx0XHRcdFx0XHRcdGN1cnJlbnQucHVzaChuZXh0UGFnZSk7XG5cdFx0XHRcdFx0XHRmaW5kUmVjdXJzaXZlKGxldmVsICsgMSk7XG5cdFx0XHRcdFx0XHRjdXJyZW50LnBvcCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY3VycmVudC5sZW5ndGggPiByZXN1bHQubGVuZ3RoKSB7XG5cdFx0XHRcdHJlc3VsdCA9IGN1cnJlbnQuc2xpY2UoKTsgLy8gV2UgaGF2ZSBmb3VuZCBhIHNlcXVlbmNlIGxvbmdlciB0aGFuIG91ciBwcmV2aW91cyBiZXN0IC0tPiBzdG9yZSBpdCBhcyB0aGUgbmV3IGxvbmdlc3Rcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmaW5kUmVjdXJzaXZlKDApO1xuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fSxcblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgc3RhcnR1cCBvYmplY3QgZnJvbSB0aGUgbGlzdCBvZiBwYWdlcyBhbmQgY29udGV4dHMuXG5cdCAqIEBwYXJhbSBhU3RhcnR1cFBhZ2VzIFRoZSBwYWdlc1xuXHQgKiBAcGFyYW0gYUNvbnRleHRzIFRoZSBjb250ZXh0c1xuXHQgKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyBlaXRoZXIgYSBoYXNoIG9yIGEgY29udGV4dCB0byBuYXZpZ2F0ZSB0bywgb3IgYW4gZW1wdHkgb2JqZWN0IGlmIG5vIGRlZXAgbGluayB3YXMgZm91bmRcblx0ICovXG5cdF9nZXREZWVwTGlua09iamVjdDogZnVuY3Rpb24gKGFTdGFydHVwUGFnZXM6IFBhZ2VJbmZvW10sIGFDb250ZXh0czogQ29udGV4dFtdKTogeyBoYXNoPzogc3RyaW5nOyBjb250ZXh0PzogQ29udGV4dCB9IHtcblx0XHRpZiAoYUNvbnRleHRzLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0cmV0dXJuIHsgY29udGV4dDogYUNvbnRleHRzWzBdIH07XG5cdFx0fSBlbHNlIGlmIChhQ29udGV4dHMubGVuZ3RoID4gMSkge1xuXHRcdFx0Ly8gTmF2aWdhdGlvbiB0byBhIGRlZXBlciBsZXZlbCAtLT4gdXNlIHRoZSBwYXR0ZXJuIG9mIHRoZSBkZWVwZXN0IG9iamVjdCBwYWdlXG5cdFx0XHQvLyBhbmQgcmVwbGFjZSB0aGUgcGFyYW1ldGVycyBieSB0aGUgSUQgZnJvbSB0aGUgY29udGV4dHNcblx0XHRcdGxldCBoYXNoID0gYVN0YXJ0dXBQYWdlc1thU3RhcnR1cFBhZ2VzLmxlbmd0aCAtIDFdLnBhdHRlcm47XG5cdFx0XHRhQ29udGV4dHMuZm9yRWFjaChmdW5jdGlvbiAob0NvbnRleHQpIHtcblx0XHRcdFx0aGFzaCA9IGhhc2gucmVwbGFjZShcIigjKVwiLCBgKCR7b0NvbnRleHQuZ2V0UGF0aCgpLnNwbGl0KFwiKFwiKVsxXX1gKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRyZXR1cm4geyBoYXNoIH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB7fTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIENhbGN1bGF0ZXMgc3RhcnR1cCBwYXJhbWV0ZXJzIGZvciBhIGRlZXBsaW5rIGNhc2UsIGZyb20gc3RhcnR1cCBwYXJhbWV0ZXJzIGFuZCByb3V0aW5nIGluZm9ybWF0aW9uLlxuXHQgKiBAcGFyYW0gb01hbmlmZXN0Um91dGluZyBUaGUgcm91dGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBhcHAgbWFuaWZlc3Rcblx0ICogQHBhcmFtIG9TdGFydHVwUGFyYW1ldGVycyBUaGUgc3RhcnR1cCBwYXJhbWV0ZXJzXG5cdCAqIEBwYXJhbSBvTW9kZWwgVGhlIE9EYXRhIG1vZGVsXG5cdCAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIGVpdGhlciBhIGhhc2ggb3IgYSBjb250ZXh0IHRvIG5hdmlnYXRlIHRvLCBvciBhbiBlbXB0eSBvYmplY3QgaWYgbm8gZGVlcCBsaW5rIHdhcyBmb3VuZFxuXHQgKi9cblx0Z2V0RGVlcExpbmtTdGFydHVwSGFzaDogYXN5bmMgZnVuY3Rpb24gKFxuXHRcdG9NYW5pZmVzdFJvdXRpbmc6IFJvdXRpbmdDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuXHRcdG9TdGFydHVwUGFyYW1ldGVyczogU3RhcnR1cFBhcmFtZXRlcnMgfCBudWxsLFxuXHRcdG9Nb2RlbDogT0RhdGFNb2RlbFxuXHQpOiBQcm9taXNlPHsgaGFzaD86IHN0cmluZzsgY29udGV4dD86IENvbnRleHQgfT4ge1xuXHRcdGF3YWl0IG9Nb2RlbC5nZXRNZXRhTW9kZWwoKS5yZXF1ZXN0T2JqZWN0KFwiLyRFbnRpdHlDb250YWluZXIvXCIpO1xuXG5cdFx0Ly8gQ2hlY2sgaWYgc2VtYW50aWMga2V5cyBhcmUgcHJlc2VudCBpbiB1cmwgcGFyYW1ldGVycyBmb3IgZXZlcnkgb2JqZWN0IHBhZ2UgYXQgZWFjaCBsZXZlbFxuXHRcdGNvbnN0IHN0YXJ0dXBQYWdlcyA9IHRoaXMuX2dldFN0YXJ0dXBQYWdlc0Zyb21TdGFydHVwUGFyYW1zKG9NYW5pZmVzdFJvdXRpbmcsIG9TdGFydHVwUGFyYW1ldGVycywgb01vZGVsLmdldE1ldGFNb2RlbCgpKTtcblxuXHRcdC8vIExvYWQgdGhlIGNvbnRleHRzXG5cdFx0Y29uc3QgYWxsQ29udGV4dHMgPSBhd2FpdCB0aGlzLl9yZXF1ZXN0T2JqZWN0c0Zyb21QYXJhbWV0ZXJzKHN0YXJ0dXBQYWdlcywgb01vZGVsKTtcblx0XHRpZiAoYWxsQ29udGV4dHMubGVuZ3RoKSB7XG5cdFx0XHQvLyBNYWtlIHN1cmUgd2Ugb25seSBnZXQgMSBjb250ZXh0IHBlciBwcm9taXNlLCBhbmQgZmxhdHRlbiB0aGUgYXJyYXlcblx0XHRcdGNvbnN0IGNvbnRleHRzRm9yU3RhcnR1cDogQ29udGV4dFtdID0gW107XG5cdFx0XHRhbGxDb250ZXh0cy5mb3JFYWNoKGZ1bmN0aW9uIChmb3VuZENvbnRleHRzKSB7XG5cdFx0XHRcdGlmIChmb3VuZENvbnRleHRzLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRcdGNvbnRleHRzRm9yU3RhcnR1cC5wdXNoKGZvdW5kQ29udGV4dHNbMF0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0cmV0dXJuIGNvbnRleHRzRm9yU3RhcnR1cC5sZW5ndGggPT09IGFsbENvbnRleHRzLmxlbmd0aCA/IHRoaXMuX2dldERlZXBMaW5rT2JqZWN0KHN0YXJ0dXBQYWdlcywgY29udGV4dHNGb3JTdGFydHVwKSA6IHt9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4ge307XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBDYWxjdWxhdGVzIHRoZSBuZXcgaGFzaCBiYXNlZCBvbiB0aGUgc3RhcnR1cCBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0gb1N0YXJ0dXBQYXJhbWV0ZXJzIFRoZSBzdGFydHVwIHBhcmFtZXRlciB2YWx1ZXMgKG1hcCBwYXJhbWV0ZXIgbmFtZSAtPiBhcnJheSBvZiB2YWx1ZXMpXG5cdCAqIEBwYXJhbSBzQ29udGV4dFBhdGggVGhlIGNvbnRleHQgcGF0aCBmb3IgdGhlIHN0YXJ0dXAgb2YgdGhlIGFwcCAoZ2VuZXJhbGx5IHRoZSBwYXRoIHRvIHRoZSBtYWluIGVudGl0eSBzZXQpXG5cdCAqIEBwYXJhbSBvUm91dGVyIFRoZSByb3V0ZXIgaW5zdGFuY2Vcblx0ICogQHBhcmFtIG9NZXRhTW9kZWwgVGhlIG1ldGEgbW9kZWxcblx0ICogQHJldHVybnMgQSBwcm9taXNlIGNvbnRhaW5pbmcgdGhlIGhhc2ggdG8gbmF2aWdhdGUgdG8sIG9yIGFuIGVtcHR5IHN0cmluZyBpZiB0aGVyZSdzIG5vIG5lZWQgdG8gbmF2aWdhdGVcblx0ICovXG5cdGdldENyZWF0ZVN0YXJ0dXBIYXNoOiBhc3luYyBmdW5jdGlvbiAoXG5cdFx0b1N0YXJ0dXBQYXJhbWV0ZXJzOiBTdGFydHVwUGFyYW1ldGVycyxcblx0XHRzQ29udGV4dFBhdGg6IHN0cmluZyxcblx0XHRvUm91dGVyOiBSb3V0ZXIsXG5cdFx0b01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWxcblx0KTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRyZXR1cm4gb01ldGFNb2RlbC5yZXF1ZXN0T2JqZWN0KGAke3NDb250ZXh0UGF0aH1AYCkudGhlbigob0VudGl0eVNldEFubm90YXRpb25zOiBNZXRhTW9kZWxFbnRpdHlTZXRBbm5vdGF0aW9uKSA9PiB7XG5cdFx0XHRsZXQgc01ldGFQYXRoID0gXCJcIjtcblx0XHRcdGxldCBiQ3JlYXRhYmxlID0gdHJ1ZTtcblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRvRW50aXR5U2V0QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Um9vdFwiXSAmJlxuXHRcdFx0XHRvRW50aXR5U2V0QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Um9vdFwiXVtcIk5ld0FjdGlvblwiXVxuXHRcdFx0KSB7XG5cdFx0XHRcdHNNZXRhUGF0aCA9IGAke3NDb250ZXh0UGF0aH1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Um9vdC9OZXdBY3Rpb25AT3JnLk9EYXRhLkNvcmUuVjEuT3BlcmF0aW9uQXZhaWxhYmxlYDtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdG9FbnRpdHlTZXRBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxLlN0aWNreVNlc3Npb25TdXBwb3J0ZWRcIl0gJiZcblx0XHRcdFx0b0VudGl0eVNldEFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlNlc3Npb24udjEuU3RpY2t5U2Vzc2lvblN1cHBvcnRlZFwiXVtcIk5ld0FjdGlvblwiXVxuXHRcdFx0KSB7XG5cdFx0XHRcdHNNZXRhUGF0aCA9IGAke3NDb250ZXh0UGF0aH1AY29tLnNhcC52b2NhYnVsYXJpZXMuU2Vzc2lvbi52MS5TdGlja3lTZXNzaW9uU3VwcG9ydGVkL05ld0FjdGlvbkBPcmcuT0RhdGEuQ29yZS5WMS5PcGVyYXRpb25BdmFpbGFibGVgO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoc01ldGFQYXRoKSB7XG5cdFx0XHRcdGNvbnN0IGJOZXdBY3Rpb25PcGVyYXRpb25BdmFpbGFibGUgPSBvTWV0YU1vZGVsLmdldE9iamVjdChzTWV0YVBhdGgpO1xuXHRcdFx0XHRpZiAoYk5ld0FjdGlvbk9wZXJhdGlvbkF2YWlsYWJsZSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHRiQ3JlYXRhYmxlID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IG9JbnNlcnRSZXN0cmljdGlvbnMgPSBvRW50aXR5U2V0QW5ub3RhdGlvbnNbXCJAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5JbnNlcnRSZXN0cmljdGlvbnNcIl07XG5cdFx0XHRcdGlmIChvSW5zZXJ0UmVzdHJpY3Rpb25zICYmIG9JbnNlcnRSZXN0cmljdGlvbnMuSW5zZXJ0YWJsZSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHRiQ3JlYXRhYmxlID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChiQ3JlYXRhYmxlKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldERlZmF1bHRDcmVhdGVIYXNoKG9TdGFydHVwUGFyYW1ldGVycywgc0NvbnRleHRQYXRoLCBvUm91dGVyKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBcIlwiO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDYWxjdWxhdGVzIHRoZSBoYXNoIHRvIGNyZWF0ZSBhIG5ldyBvYmplY3QuXG5cdCAqIEBwYXJhbSBvU3RhcnR1cFBhcmFtZXRlcnMgVGhlIHN0YXJ0dXAgcGFyYW1ldGVyIHZhbHVlcyAobWFwIHBhcmFtZXRlciBuYW1lIC0+IGFycmF5IG9mIHZhbHVlcylcblx0ICogQHBhcmFtIHNDb250ZXh0UGF0aCBUaGUgY29udGV4dCBwYXRoIG9mIHRoZSBlbnRpdHkgc2V0IHRvIGJlIHVzZWQgZm9yIHRoZSBjcmVhdGlvblxuXHQgKiBAcGFyYW0gb1JvdXRlciBUaGUgcm91dGVyIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIFRoZSBoYXNoXG5cdCAqL1xuXHRnZXREZWZhdWx0Q3JlYXRlSGFzaDogZnVuY3Rpb24gKFxuXHRcdG9TdGFydHVwUGFyYW1ldGVyczogU3RhcnR1cFBhcmFtZXRlcnMgfCBudWxsIHwgdW5kZWZpbmVkLFxuXHRcdHNDb250ZXh0UGF0aDogc3RyaW5nLFxuXHRcdG9Sb3V0ZXI6IFJvdXRlclxuXHQpOiBzdHJpbmcge1xuXHRcdGxldCBzRGVmYXVsdENyZWF0ZUhhc2ggPSBvU3RhcnR1cFBhcmFtZXRlcnMgJiYgb1N0YXJ0dXBQYXJhbWV0ZXJzLnByZWZlcnJlZE1vZGUgPyBvU3RhcnR1cFBhcmFtZXRlcnMucHJlZmVycmVkTW9kZVswXSA6IFwiY3JlYXRlXCI7XG5cdFx0bGV0IHNIYXNoID0gXCJcIjtcblxuXHRcdHNEZWZhdWx0Q3JlYXRlSGFzaCA9XG5cdFx0XHRzRGVmYXVsdENyZWF0ZUhhc2guaW5jbHVkZXMoXCI6XCIpICYmIHNEZWZhdWx0Q3JlYXRlSGFzaC5sZW5ndGggPiBzRGVmYXVsdENyZWF0ZUhhc2guaW5kZXhPZihcIjpcIikgKyAxXG5cdFx0XHRcdD8gc0RlZmF1bHRDcmVhdGVIYXNoLnN1YnN0cmluZygwLCBzRGVmYXVsdENyZWF0ZUhhc2guaW5kZXhPZihcIjpcIikpXG5cdFx0XHRcdDogXCJjcmVhdGVcIjtcblx0XHRzSGFzaCA9IGAke3NDb250ZXh0UGF0aC5zdWJzdHJpbmcoMSl9KC4uLik/aS1hY3Rpb249JHtzRGVmYXVsdENyZWF0ZUhhc2h9YDtcblx0XHRpZiAob1JvdXRlci5nZXRSb3V0ZUluZm9CeUhhc2goc0hhc2gpKSB7XG5cdFx0XHRyZXR1cm4gc0hhc2g7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgTm8gcm91dGUgbWF0Y2ggZm9yIGNyZWF0aW5nIGEgbmV3ICR7c0NvbnRleHRQYXRoLnN1YnN0cmluZygxKX1gKTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIFZlcmlmaWVzIHdoZXRoZXIgdGhlIGVudGl0eSBpbiB0aGUgZ2l2ZW4gY29udGV4dCBwYXRoIGlzIGVkaXRhYmxlIGJ5IGxvb2tpbmcgYXQgdGhlIGZvbGxvd2luZyBhbm5vdGF0aW9uczpcblx0ICpcblx0ICogLSBAQ29yZS5PcGVyYXRpb25BdmFpbGFibGUgb2YgdGhlIGVkaXQgYWN0aW9uXG5cdCAqIC0gQFVJLlVwZGF0ZUhpZGRlblxuXHQgKlxuXHQgKiBPbmx5IHN0YXRpYyB2YWx1ZXMgKHRydWUvZmFsc2UpIGFyZSBjb25zaWRlcmVkIGhlcmUgYXMgd2UgZG9uJ3QgaGF2ZSB0aGUgYWN0dWFsIGJpbmRpbmcgY29udGV4dCB0byBldmFsdWF0ZSBkeW5hbWljIGJpbmRpbmdzLlxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICogQHBhcmFtIG1ldGFNb2RlbFxuXHQgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBlbnRpdHkgaXMgZWRpdGFibGUgb3Igbm90XG5cdCAqL1xuXHR2ZXJpZnlFZGl0QW5ub3RhdGlvbnM6IGFzeW5jIGZ1bmN0aW9uIChjb250ZXh0UGF0aDogc3RyaW5nLCBtZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdFx0Y29uc3QgZW50aXR5U2V0QW5ub3RhdGlvbnM6IE1ldGFNb2RlbEVudGl0eVNldEFubm90YXRpb24gPSBhd2FpdCBtZXRhTW9kZWwucmVxdWVzdE9iamVjdChgJHtjb250ZXh0UGF0aH1AYCk7XG5cdFx0Y29uc3QgdXBkYXRlSGlkZGVuID0gZW50aXR5U2V0QW5ub3RhdGlvbnM/LltcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5VcGRhdGVIaWRkZW5cIl07XG5cdFx0bGV0IG9wZXJhdGlvbkF2YWlsYWJsZSA9IHRydWU7XG5cblx0XHRpZiAoZW50aXR5U2V0QW5ub3RhdGlvbnM/LltcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290XCJdPy5bXCJFZGl0QWN0aW9uXCJdKSB7XG5cdFx0XHRvcGVyYXRpb25BdmFpbGFibGUgPSBtZXRhTW9kZWwuZ2V0T2JqZWN0KFxuXHRcdFx0XHRgJHtjb250ZXh0UGF0aH1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Um9vdC9FZGl0QWN0aW9uQE9yZy5PRGF0YS5Db3JlLlYxLk9wZXJhdGlvbkF2YWlsYWJsZWBcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG9wZXJhdGlvbkF2YWlsYWJsZSAhPT0gZmFsc2UgJiYgdXBkYXRlSGlkZGVuICE9PSB0cnVlO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBcHBTdGFydHVwSGVscGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztFQTZCQSxNQUFNQSxnQkFBZ0IsR0FBRztJQUN4QjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MseUJBQXlCLEVBQUUsU0FBQUEsQ0FBVUMsU0FBbUIsRUFBRUMsa0JBQTRDLEVBQTJCO01BQ2hJLElBQUlDLFNBQVMsR0FBRyxJQUFJO01BQ3BCLE1BQU1DLEtBQUss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
@@ -147,6 +147,28 @@ const AppStartupHelper = {
147
147
  return Promise.all(aContextPromises);
148
148
  },
149
149
 
150
+ /**
151
+ * Returns the rightmost target name for a given route.
152
+ * @param route
153
+ * @param manifestRouting
154
+ * @returns The target name (or undefined if no valid target was found)
155
+ */
156
+ _getRightMostTargetName(route: RoutingRoute, manifestRouting: RoutingConfiguration | undefined): string | undefined {
157
+ if (Array.isArray(route.target)) {
158
+ // Get the rightmost target for this route (ignore targets corresponding to reuse components)
159
+ const reverseTargets = [...route.target].reverse();
160
+ return reverseTargets.find((targetID) => {
161
+ const currentTarget = manifestRouting?.targets?.[targetID];
162
+ return (
163
+ currentTarget?.name &&
164
+ ["sap.fe.templates.ListReport", "sap.fe.templates.ObjectPage", "sap.fe.core.fpm"].includes(currentTarget.name)
165
+ );
166
+ });
167
+ } else {
168
+ return route.target;
169
+ }
170
+ },
171
+
150
172
  /**
151
173
  * Creates a PageInfo from a route if it's reachable from the startup parameters.
152
174
  * @param oRoute The route
@@ -172,8 +194,12 @@ const AppStartupHelper = {
172
194
 
173
195
  sPattern = sPattern.replace(/\(\{[^}]*\}\)/g, "(#)"); // Replace keys with #
174
196
 
175
- // Get the rightmost target for this route
176
- const sTargetName: string = Array.isArray(oRoute.target) ? oRoute.target[oRoute.target.length - 1] : oRoute.target;
197
+ const sTargetName = this._getRightMostTargetName(oRoute, oManifestRouting);
198
+ if (!sTargetName) {
199
+ // No target found for this route
200
+ return undefined;
201
+ }
202
+
177
203
  const oTarget = oManifestRouting?.targets?.[sTargetName];
178
204
 
179
205
  const aPatternSegments = sPattern.split("/");
@@ -19,7 +19,8 @@ sap.ui.define(["sap/fe/base/BindingToolkit"], function (BindingToolkit) {
19
19
  IsExpanded: equal(pathInModel("@$ui5.node.isExpanded"), true),
20
20
  NodeLevel: pathInModel("@$ui5.node.level"),
21
21
  IsInactive: pathInModel("@$ui5.context.isInactive"),
22
- isNodeLevelNavigable: pathInModel("isNodeLevelNavigable", "internal")
22
+ isNodeLevelNavigable: pathInModel("isNodeLevelNavigable", "internal"),
23
+ hasCollaborationAuthorization: pathInModel("hasCollaborationAuthorization", "ui")
23
24
  };
24
25
  _exports.UI = UI;
25
26
  const Entity = {
@@ -97,4 +98,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit"], function (BindingToolkit) {
97
98
  _exports.bindingContextPathVisitor = bindingContextPathVisitor;
98
99
  return _exports;
99
100
  }, false);
100
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVSSIsIklzQ3JlYXRlTW9kZSIsInBhdGhJbk1vZGVsIiwiSXNFZGl0YWJsZSIsIklzVHJhbnNpZW50QmluZGluZyIsImVxdWFsIiwiSXNUb3RhbCIsIklzRXhwYW5kZWQiLCJOb2RlTGV2ZWwiLCJJc0luYWN0aXZlIiwiaXNOb2RlTGV2ZWxOYXZpZ2FibGUiLCJfZXhwb3J0cyIsIkVudGl0eSIsIkhhc0RyYWZ0IiwiSGFzQWN0aXZlIiwiSXNBY3RpdmUiLCJEcmFmdCIsIklzTmV3T2JqZWN0IiwiYW5kIiwibm90IiwiSGFzTm9EcmFmdEZvckN1cnJlbnRVc2VyIiwib3IiLCJnZXRTaW5nbGV0b24iLCJjb252ZXJ0ZWRUeXBlcyIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInNpbmdsZXRvbnMiLCJmaW5kIiwic2luZ2xldG9uIiwic2luZ2xldG9uUGF0aFZpc2l0b3IiLCJwYXRoIiwidmlzaXRlZE5hdmlnYXRpb25QYXRocyIsImluZGV4T2YiLCJwYXJ0cyIsInNwbGl0IiwiZmlsdGVyIiwiQm9vbGVhbiIsInByb3BlcnR5TmFtZSIsInBvcCIsImVudGl0eVNldE5hbWUiLCJqb2luIiwibmFtZSIsImxvY2FsUGF0aCIsImNvbmNhdCIsInB1c2giLCJiaW5kaW5nQ29udGV4dFBhdGhWaXNpdG9yIiwiYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lIiwiYmluZGluZ1BhcmFtZXRlclByZWZpeCIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwic3RhcnRzV2l0aCIsImxlbmd0aCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQmluZGluZ0hlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnZlcnRlZE1ldGFkYXRhLCBTaW5nbGV0b24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBhbmQsIGVxdWFsLCBub3QsIG9yLCBwYXRoSW5Nb2RlbCB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuXG5leHBvcnQgY29uc3QgVUkgPSB7XG5cdElzQ3JlYXRlTW9kZTogcGF0aEluTW9kZWwoXCJjcmVhdGVNb2RlXCIsIFwicGFnZUludGVybmFsXCIpIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPixcblx0SXNFZGl0YWJsZTogcGF0aEluTW9kZWwoXCJpc0VkaXRhYmxlXCIsIFwidWlcIikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+LFxuXHRJc1RyYW5zaWVudEJpbmRpbmc6IGVxdWFsKHBhdGhJbk1vZGVsKFwiQCR1aTUuY29udGV4dC5pc1RyYW5zaWVudFwiKSwgdHJ1ZSksXG5cdElzVG90YWw6IGVxdWFsKHBhdGhJbk1vZGVsKFwiQCR1aTUubm9kZS5pc1RvdGFsXCIpLCB0cnVlKSxcblx0SXNFeHBhbmRlZDogZXF1YWwocGF0aEluTW9kZWwoXCJAJHVpNS5ub2RlLmlzRXhwYW5kZWRcIiksIHRydWUpLFxuXHROb2RlTGV2ZWw6IHBhdGhJbk1vZGVsKFwiQCR1aTUubm9kZS5sZXZlbFwiKSxcblx0SXNJbmFjdGl2ZTogcGF0aEluTW9kZWwoXCJAJHVpNS5jb250ZXh0LmlzSW5hY3RpdmVcIiksXG5cdGlzTm9kZUxldmVsTmF2aWdhYmxlOiBwYXRoSW5Nb2RlbChcImlzTm9kZUxldmVsTmF2aWdhYmxlXCIsIFwiaW50ZXJuYWxcIilcbn07XG5cbmV4cG9ydCBjb25zdCBFbnRpdHkgPSB7XG5cdEhhc0RyYWZ0OiBwYXRoSW5Nb2RlbChcIkhhc0RyYWZ0RW50aXR5XCIpLFxuXHRIYXNBY3RpdmU6IHBhdGhJbk1vZGVsKFwiSGFzQWN0aXZlRW50aXR5XCIpLFxuXHRJc0FjdGl2ZTogcGF0aEluTW9kZWwoXCJJc0FjdGl2ZUVudGl0eVwiKVxufTtcblxuZXhwb3J0IGNvbnN0IERyYWZ0ID0ge1xuXHRJc05ld09iamVjdDogYW5kKG5vdChFbnRpdHkuSGFzQWN0aXZlKSwgbm90KEVudGl0eS5Jc0FjdGl2ZSkpLFxuXHRIYXNOb0RyYWZ0Rm9yQ3VycmVudFVzZXI6IG9yKFxuXHRcdG5vdChFbnRpdHkuSGFzRHJhZnQpLFxuXHRcdGFuZChFbnRpdHkuSGFzRHJhZnQsIG5vdChwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0RyYWZ0SXNDcmVhdGVkQnlNZVwiKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4pKVxuXHQpXG59O1xuXG4vKipcbiAqIEdldHMgYSBzaW5nbGV0b24gYmFzZWQgb24gdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lLlxuICogQHBhcmFtIGNvbnZlcnRlZFR5cGVzIFRoZSBjb252ZXJ0ZWQgdHlwZXNcbiAqIEBwYXJhbSBmdWxseVF1YWxpZmllZE5hbWUgVGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBzaW5nbGV0b25cbiAqIEByZXR1cm5zIFRoZSBzaW5nbGV0b24gaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGdldFNpbmdsZXRvbihjb252ZXJ0ZWRUeXBlczogQ29udmVydGVkTWV0YWRhdGEsIGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nKTogU2luZ2xldG9uIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGNvbnZlcnRlZFR5cGVzLnNpbmdsZXRvbnMuZmluZCgoc2luZ2xldG9uKSA9PiBzaW5nbGV0b24uZnVsbHlRdWFsaWZpZWROYW1lID09PSBmdWxseVF1YWxpZmllZE5hbWUpO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGFkanVzdCBzaW5nbGV0b24gcGF0aHMgaW4gdGhlIGFubm90YXRpb24uXG4gKiBUaGUgYWJzb2x1dGUgcGF0aCB2aWEgRW50aXR5Q29udGFpbmVyIG5lZWRzIHRvIGJlIHNob3J0ZW5lZCB0byAvU2luZ2xldG9uTmFtZS9Qcm9wZXJ0eU5hbWUuXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCBjb25maWd1cmVkIGluIHRoZSBhbm5vdGF0aW9uXG4gKiBAcGFyYW0gY29udmVydGVkVHlwZXMgVGhlIGluc3RhbmNlIG9mIHRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMgVGhlIGFycmF5IG9mIHZpc2l0ZWQgbmF2aWdhdGlvbiBwYXRoc1xuICogQHJldHVybnMgVGhlIGFkanVzdGVkIHBhdGggZm9yIHRoZSByZWZlcmVuY2Ugb2YgdGhlIHNpbmdsZXRvbiBwcm9wZXJ0eSwgb3RoZXJ3aXNlIHRoZSBpbnB1dCBwYXRoIGl0c2VsZi5cbiAqL1xuZXhwb3J0IGNvbnN0IHNpbmdsZXRvblBhdGhWaXNpdG9yID0gZnVuY3Rpb24gKHBhdGg6IHN0cmluZywgY29udmVydGVkVHlwZXM6IENvbnZlcnRlZE1ldGFkYXRhLCB2aXNpdGVkTmF2aWdhdGlvblBhdGhzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG5cdC8vIERldGVybWluZSB3aGV0aGVyIHRoZSBwYXRoIGlzIGFic29sdXRlIGFuZCB3aGV0aGVyIGl0IHBvaW50cyB0byBhIHNpbmdsZXRvbi5cblx0aWYgKHBhdGguaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKSxcblx0XHRcdHByb3BlcnR5TmFtZSA9IHBhcnRzLnBvcCgpLFxuXHRcdFx0ZW50aXR5U2V0TmFtZSA9IHBhcnRzLmpvaW4oXCIvXCIpLFxuXHRcdFx0c2luZ2xldG9uID0gZ2V0U2luZ2xldG9uKGNvbnZlcnRlZFR5cGVzLCBlbnRpdHlTZXROYW1lKTtcblx0XHRpZiAoc2luZ2xldG9uKSB7XG5cdFx0XHQvLyBTZXQgdGhlIGFic29sdXRlIGJpbmRpbmcgcGF0aCB0byBhY2Nlc3MgdGhlIHNpbmdsZXRvbiBwcm9wZXJ0eVxuXHRcdFx0cGF0aCA9IGAvJHtzaW5nbGV0b24ubmFtZX0vJHtwcm9wZXJ0eU5hbWV9YDtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Ly8gTm90IGEgc2luZ2xldG9uIHJlZmVyZW5jZS5cblx0XHQvLyBQcmVmaXggdGhlIG5hdmlnYXRpb24gcGF0aCB0byB0aGUgcHJvcGVydHkgcGF0aFxuXHRcdGNvbnN0IGxvY2FsUGF0aCA9IHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMuY29uY2F0KCk7XG5cdFx0bG9jYWxQYXRoLnB1c2gocGF0aCk7XG5cdFx0cGF0aCA9IGxvY2FsUGF0aC5qb2luKFwiL1wiKTtcblx0fVxuXHRyZXR1cm4gcGF0aDtcbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gYWRqdXN0IHByb3BlcnR5IHBhdGhzIGRlZmluZWQgaW4gdGhlIGJpbmRpbmcgb2YgYW4gYWN0aW9uLlxuICpcbiAqIFRoZSBiaW5kaW5nIHBhcmFtZXRlciBuYW1lIG5lZWRzIHRvIGJlIHJlbW92ZWQuIFNpbmdsZXRvbiBwYXRocyBuZWVkIHRvIGJlIHJlc29sdmVkLlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggY29uZmlndXJlZCBpbiB0aGUgYW5ub3RhdGlvblxuICogQHBhcmFtIGNvbnZlcnRlZFR5cGVzIENvbnZlcnRlcmVkIG1ldGFkYXRhXG4gKiBAcGFyYW0gYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lIFRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgYmluZGluZyBwYXJhbWV0ZXJcbiAqIEByZXR1cm5zIFRoZSBhZGp1c3RlZCBwcm9wZXJ0eSBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kaW5nQ29udGV4dFBhdGhWaXNpdG9yKHBhdGg6IHN0cmluZywgY29udmVydGVkVHlwZXM6IENvbnZlcnRlZE1ldGFkYXRhLCBiaW5kaW5nUGFyYW1ldGVyRnVsbE5hbWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRpZiAoYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lKSB7XG5cdFx0Y29uc3QgYmluZGluZ1BhcmFtZXRlclByZWZpeCA9IGAke2JpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZT8uc3Vic3RyaW5nKGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZS5sYXN0SW5kZXhPZihcIi9cIikgKyAxKX0vYDtcblx0XHQvLyBTdHJpcCB0aGUgYmluZGluZyBwYXJhbWV0ZXIgbmFtZSBmcm9tIE9wZXJhdGlvbkF2YWlsYWJsZSBwYXRoXG5cdFx0Ly8gRm9yIGUuZy4gX2l0L3Byb3BlcnR5MSAtLT4gcHJvcGVydHkxXG5cdFx0aWYgKHBhdGguc3RhcnRzV2l0aChiaW5kaW5nUGFyYW1ldGVyUHJlZml4KSkge1xuXHRcdFx0cmV0dXJuIHBhdGguc3Vic3RyaW5nKGJpbmRpbmdQYXJhbWV0ZXJQcmVmaXgubGVuZ3RoKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHNpbmdsZXRvblBhdGhWaXNpdG9yKHBhdGgsIGNvbnZlcnRlZFR5cGVzLCBbXSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7RUFJTyxNQUFNQSxFQUFFLEdBQUc7SUFDakJDLFlBQVksRUFBRUMsV0FBVyxDQUFDLFlBQVksRUFBRSxjQUFjLENBQXNDO0lBQzVGQyxVQUFVLEVBQUVELFdBQVcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFzQztJQUNoRkUsa0JBQWtCLEVBQUVDLEtBQUssQ0FBQ0gsV0FBVyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsSUFBSSxDQUFDO0lBQ3pFSSxPQUFPLEVBQUVELEtBQUssQ0FBQ0gsV0FBVyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsSUFBSSxDQUFDO0lBQ3ZESyxVQUFVLEVBQUVGLEtBQUssQ0FBQ0gsV0FBVyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsSUFBSSxDQUFDO0lBQzdETSxTQUFTLEVBQUVOLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQztJQUMxQ08sVUFBVSxFQUFFUCxXQUFXLENBQUMsMEJBQTBCLENBQUM7SUFDbkRRLG9CQUFvQixFQUFFUixXQUFXLENBQUMsc0JBQXNCLEVBQUUsVUFBVTtFQUNyRSxDQUFDO0VBQUNTLFFBQUEsQ0FBQVgsRUFBQSxHQUFBQSxFQUFBO0VBRUssTUFBTVksTUFBTSxHQUFHO0lBQ3JCQyxRQUFRLEVBQUVYLFdBQVcs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
101
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVSSIsIklzQ3JlYXRlTW9kZSIsInBhdGhJbk1vZGVsIiwiSXNFZGl0YWJsZSIsIklzVHJhbnNpZW50QmluZGluZyIsImVxdWFsIiwiSXNUb3RhbCIsIklzRXhwYW5kZWQiLCJOb2RlTGV2ZWwiLCJJc0luYWN0aXZlIiwiaXNOb2RlTGV2ZWxOYXZpZ2FibGUiLCJoYXNDb2xsYWJvcmF0aW9uQXV0aG9yaXphdGlvbiIsIl9leHBvcnRzIiwiRW50aXR5IiwiSGFzRHJhZnQiLCJIYXNBY3RpdmUiLCJJc0FjdGl2ZSIsIkRyYWZ0IiwiSXNOZXdPYmplY3QiLCJhbmQiLCJub3QiLCJIYXNOb0RyYWZ0Rm9yQ3VycmVudFVzZXIiLCJvciIsImdldFNpbmdsZXRvbiIsImNvbnZlcnRlZFR5cGVzIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwic2luZ2xldG9ucyIsImZpbmQiLCJzaW5nbGV0b24iLCJzaW5nbGV0b25QYXRoVmlzaXRvciIsInBhdGgiLCJ2aXNpdGVkTmF2aWdhdGlvblBhdGhzIiwiaW5kZXhPZiIsInBhcnRzIiwic3BsaXQiLCJmaWx0ZXIiLCJCb29sZWFuIiwicHJvcGVydHlOYW1lIiwicG9wIiwiZW50aXR5U2V0TmFtZSIsImpvaW4iLCJuYW1lIiwibG9jYWxQYXRoIiwiY29uY2F0IiwicHVzaCIsImJpbmRpbmdDb250ZXh0UGF0aFZpc2l0b3IiLCJiaW5kaW5nUGFyYW1ldGVyRnVsbE5hbWUiLCJiaW5kaW5nUGFyYW1ldGVyUHJlZml4Iiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJzdGFydHNXaXRoIiwibGVuZ3RoIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJCaW5kaW5nSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29udmVydGVkTWV0YWRhdGEsIFNpbmdsZXRvbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFuZCwgZXF1YWwsIG5vdCwgb3IsIHBhdGhJbk1vZGVsIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5cbmV4cG9ydCBjb25zdCBVSSA9IHtcblx0SXNDcmVhdGVNb2RlOiBwYXRoSW5Nb2RlbChcImNyZWF0ZU1vZGVcIiwgXCJwYWdlSW50ZXJuYWxcIikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+LFxuXHRJc0VkaXRhYmxlOiBwYXRoSW5Nb2RlbChcImlzRWRpdGFibGVcIiwgXCJ1aVwiKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4sXG5cdElzVHJhbnNpZW50QmluZGluZzogZXF1YWwocGF0aEluTW9kZWwoXCJAJHVpNS5jb250ZXh0LmlzVHJhbnNpZW50XCIpLCB0cnVlKSxcblx0SXNUb3RhbDogZXF1YWwocGF0aEluTW9kZWwoXCJAJHVpNS5ub2RlLmlzVG90YWxcIiksIHRydWUpLFxuXHRJc0V4cGFuZGVkOiBlcXVhbChwYXRoSW5Nb2RlbChcIkAkdWk1Lm5vZGUuaXNFeHBhbmRlZFwiKSwgdHJ1ZSksXG5cdE5vZGVMZXZlbDogcGF0aEluTW9kZWwoXCJAJHVpNS5ub2RlLmxldmVsXCIpLFxuXHRJc0luYWN0aXZlOiBwYXRoSW5Nb2RlbChcIkAkdWk1LmNvbnRleHQuaXNJbmFjdGl2ZVwiKSxcblx0aXNOb2RlTGV2ZWxOYXZpZ2FibGU6IHBhdGhJbk1vZGVsKFwiaXNOb2RlTGV2ZWxOYXZpZ2FibGVcIiwgXCJpbnRlcm5hbFwiKSxcblx0aGFzQ29sbGFib3JhdGlvbkF1dGhvcml6YXRpb246IHBhdGhJbk1vZGVsKFwiaGFzQ29sbGFib3JhdGlvbkF1dGhvcml6YXRpb25cIiwgXCJ1aVwiKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj5cbn07XG5cbmV4cG9ydCBjb25zdCBFbnRpdHkgPSB7XG5cdEhhc0RyYWZ0OiBwYXRoSW5Nb2RlbChcIkhhc0RyYWZ0RW50aXR5XCIpLFxuXHRIYXNBY3RpdmU6IHBhdGhJbk1vZGVsKFwiSGFzQWN0aXZlRW50aXR5XCIpLFxuXHRJc0FjdGl2ZTogcGF0aEluTW9kZWwoXCJJc0FjdGl2ZUVudGl0eVwiKVxufTtcblxuZXhwb3J0IGNvbnN0IERyYWZ0ID0ge1xuXHRJc05ld09iamVjdDogYW5kKG5vdChFbnRpdHkuSGFzQWN0aXZlKSwgbm90KEVudGl0eS5Jc0FjdGl2ZSkpLFxuXHRIYXNOb0RyYWZ0Rm9yQ3VycmVudFVzZXI6IG9yKFxuXHRcdG5vdChFbnRpdHkuSGFzRHJhZnQpLFxuXHRcdGFuZChFbnRpdHkuSGFzRHJhZnQsIG5vdChwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0RyYWZ0SXNDcmVhdGVkQnlNZVwiKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4pKVxuXHQpXG59O1xuXG4vKipcbiAqIEdldHMgYSBzaW5nbGV0b24gYmFzZWQgb24gdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lLlxuICogQHBhcmFtIGNvbnZlcnRlZFR5cGVzIFRoZSBjb252ZXJ0ZWQgdHlwZXNcbiAqIEBwYXJhbSBmdWxseVF1YWxpZmllZE5hbWUgVGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBzaW5nbGV0b25cbiAqIEByZXR1cm5zIFRoZSBzaW5nbGV0b24gaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGdldFNpbmdsZXRvbihjb252ZXJ0ZWRUeXBlczogQ29udmVydGVkTWV0YWRhdGEsIGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nKTogU2luZ2xldG9uIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGNvbnZlcnRlZFR5cGVzLnNpbmdsZXRvbnMuZmluZCgoc2luZ2xldG9uKSA9PiBzaW5nbGV0b24uZnVsbHlRdWFsaWZpZWROYW1lID09PSBmdWxseVF1YWxpZmllZE5hbWUpO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGFkanVzdCBzaW5nbGV0b24gcGF0aHMgaW4gdGhlIGFubm90YXRpb24uXG4gKiBUaGUgYWJzb2x1dGUgcGF0aCB2aWEgRW50aXR5Q29udGFpbmVyIG5lZWRzIHRvIGJlIHNob3J0ZW5lZCB0byAvU2luZ2xldG9uTmFtZS9Qcm9wZXJ0eU5hbWUuXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCBjb25maWd1cmVkIGluIHRoZSBhbm5vdGF0aW9uXG4gKiBAcGFyYW0gY29udmVydGVkVHlwZXMgVGhlIGluc3RhbmNlIG9mIHRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMgVGhlIGFycmF5IG9mIHZpc2l0ZWQgbmF2aWdhdGlvbiBwYXRoc1xuICogQHJldHVybnMgVGhlIGFkanVzdGVkIHBhdGggZm9yIHRoZSByZWZlcmVuY2Ugb2YgdGhlIHNpbmdsZXRvbiBwcm9wZXJ0eSwgb3RoZXJ3aXNlIHRoZSBpbnB1dCBwYXRoIGl0c2VsZi5cbiAqL1xuZXhwb3J0IGNvbnN0IHNpbmdsZXRvblBhdGhWaXNpdG9yID0gZnVuY3Rpb24gKHBhdGg6IHN0cmluZywgY29udmVydGVkVHlwZXM6IENvbnZlcnRlZE1ldGFkYXRhLCB2aXNpdGVkTmF2aWdhdGlvblBhdGhzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG5cdC8vIERldGVybWluZSB3aGV0aGVyIHRoZSBwYXRoIGlzIGFic29sdXRlIGFuZCB3aGV0aGVyIGl0IHBvaW50cyB0byBhIHNpbmdsZXRvbi5cblx0aWYgKHBhdGguaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKSxcblx0XHRcdHByb3BlcnR5TmFtZSA9IHBhcnRzLnBvcCgpLFxuXHRcdFx0ZW50aXR5U2V0TmFtZSA9IHBhcnRzLmpvaW4oXCIvXCIpLFxuXHRcdFx0c2luZ2xldG9uID0gZ2V0U2luZ2xldG9uKGNvbnZlcnRlZFR5cGVzLCBlbnRpdHlTZXROYW1lKTtcblx0XHRpZiAoc2luZ2xldG9uKSB7XG5cdFx0XHQvLyBTZXQgdGhlIGFic29sdXRlIGJpbmRpbmcgcGF0aCB0byBhY2Nlc3MgdGhlIHNpbmdsZXRvbiBwcm9wZXJ0eVxuXHRcdFx0cGF0aCA9IGAvJHtzaW5nbGV0b24ubmFtZX0vJHtwcm9wZXJ0eU5hbWV9YDtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Ly8gTm90IGEgc2luZ2xldG9uIHJlZmVyZW5jZS5cblx0XHQvLyBQcmVmaXggdGhlIG5hdmlnYXRpb24gcGF0aCB0byB0aGUgcHJvcGVydHkgcGF0aFxuXHRcdGNvbnN0IGxvY2FsUGF0aCA9IHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMuY29uY2F0KCk7XG5cdFx0bG9jYWxQYXRoLnB1c2gocGF0aCk7XG5cdFx0cGF0aCA9IGxvY2FsUGF0aC5qb2luKFwiL1wiKTtcblx0fVxuXHRyZXR1cm4gcGF0aDtcbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gYWRqdXN0IHByb3BlcnR5IHBhdGhzIGRlZmluZWQgaW4gdGhlIGJpbmRpbmcgb2YgYW4gYWN0aW9uLlxuICpcbiAqIFRoZSBiaW5kaW5nIHBhcmFtZXRlciBuYW1lIG5lZWRzIHRvIGJlIHJlbW92ZWQuIFNpbmdsZXRvbiBwYXRocyBuZWVkIHRvIGJlIHJlc29sdmVkLlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggY29uZmlndXJlZCBpbiB0aGUgYW5ub3RhdGlvblxuICogQHBhcmFtIGNvbnZlcnRlZFR5cGVzIENvbnZlcnRlcmVkIG1ldGFkYXRhXG4gKiBAcGFyYW0gYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lIFRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgYmluZGluZyBwYXJhbWV0ZXJcbiAqIEByZXR1cm5zIFRoZSBhZGp1c3RlZCBwcm9wZXJ0eSBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kaW5nQ29udGV4dFBhdGhWaXNpdG9yKHBhdGg6IHN0cmluZywgY29udmVydGVkVHlwZXM6IENvbnZlcnRlZE1ldGFkYXRhLCBiaW5kaW5nUGFyYW1ldGVyRnVsbE5hbWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRpZiAoYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lKSB7XG5cdFx0Y29uc3QgYmluZGluZ1BhcmFtZXRlclByZWZpeCA9IGAke2JpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZT8uc3Vic3RyaW5nKGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZS5sYXN0SW5kZXhPZihcIi9cIikgKyAxKX0vYDtcblx0XHQvLyBTdHJpcCB0aGUgYmluZGluZyBwYXJhbWV0ZXIgbmFtZSBmcm9tIE9wZXJhdGlvbkF2YWlsYWJsZSBwYXRoXG5cdFx0Ly8gRm9yIGUuZy4gX2l0L3Byb3BlcnR5MSAtLT4gcHJvcGVydHkxXG5cdFx0aWYgKHBhdGguc3RhcnRzV2l0aChiaW5kaW5nUGFyYW1ldGVyUHJlZml4KSkge1xuXHRcdFx0cmV0dXJuIHBhdGguc3Vic3RyaW5nKGJpbmRpbmdQYXJhbWV0ZXJQcmVmaXgubGVuZ3RoKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHNpbmdsZXRvblBhdGhWaXNpdG9yKHBhdGgsIGNvbnZlcnRlZFR5cGVzLCBbXSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7RUFJTyxNQUFNQSxFQUFFLEdBQUc7SUFDakJDLFlBQVksRUFBRUMsV0FBVyxDQUFDLFlBQVksRUFBRSxjQUFjLENBQXNDO0lBQzVGQyxVQUFVLEVBQUVELFdBQVcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFzQztJQUNoRkUsa0JBQWtCLEVBQUVDLEtBQUssQ0FBQ0gsV0FBVyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsSUFBSSxDQUFDO0lBQ3pFSSxPQUFPLEVBQUVELEtBQUssQ0FBQ0gsV0FBVyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsSUFBSSxDQUFDO0lBQ3ZESyxVQUFVLEVBQUVGLEtBQUssQ0FBQ0gsV0FBVyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsSUFBSSxDQUFDO0lBQzdETSxTQUFTLEVBQUVOLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQztJQUMxQ08sVUFBVSxFQUFFUCxXQUFXLENBQUMsMEJBQTBCLENBQUM7SUFDbkRRLG9CQUFvQixFQUFFUixXQUFXLENBQUMsc0JBQXNCLEVBQUUsVUFBVSxDQUFDO0lBQ3JFUyw2QkFBNkIsRUFBRVQsV0FBVyxDQUFDLCtCQUErQixFQUFFLElBQUk7RUFDakYsQ0FBQztFQUFDVSxRQUFBLENBQUFaLEVBQUEsR0FBQUEsRUFBQTtFQUVLLE1BQU1hLE1BQU0sR0FBRztJQUNyQkMsUUFBUSxFQUFFWixXQUFXLENBQUMsZ0JBQWdCLENBQUM7SUFDdkNhLFNBQVMsRUFBRWIsV0FBVyxDQUFDLGlCQUFpQixDQUFDO0lBQ3pDYyxRQUFRLEVBQUVkLFdBQVcsQ0FBQyxnQkFBZ0I7RUFDdkMsQ0FBQztFQUFDVSxRQUFBLENBQUFDLE1BQUEsR0FBQUEsTUFBQTtFQUVLLE1BQU1JLEtBQUssR0FBRztJQUNwQkMsV0FBVyxFQUFFQyxHQUFHLENBQUNDLEdBQUcsQ0FBQ1AsTUFBTSxDQUFDRSxTQUFTLENBQUMsRUFBRUssR0FBRyxDQUFDUCxNQUFNLENBQUNHLFFBQVEsQ0FBQyxDQUFDO0lBQzdESyx3QkFBd0IsRUFBRUMsRUFBRSxDQUMzQkYsR0FBRyxDQUFDUCxNQUFNLENBQUNDLFFBQVEsQ0FBQyxFQUNwQkssR0FBRyxDQUFDTixNQUFNLENBQUNDLFFBQVEsRUFBRU0sR0FBRyxDQUFDbEIsV0FBVyxDQUFDLDRDQUE0QyxDQUFzQyxDQUFDLENBQ3pIO0VBQ0QsQ0FBQzs7RUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFMQVUsUUFBQSxDQUFBSyxLQUFBLEdBQUFBLEtBQUE7RUFNQSxTQUFTTSxZQUFZQSxDQUFDQyxjQUFpQyxFQUFFQyxrQkFBMEIsRUFBeUI7SUFDM0csT0FBT0QsY0FBYyxDQUFDRSxVQUFVLENBQUNDLElBQUksQ0FBRUMsU0FBUyxJQUFLQSxTQUFTLENBQUNILGtCQUFrQixLQUFLQSxrQkFBa0IsQ0FBQztFQUMxRzs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sTUFBTUksb0JBQW9CLEdBQUcsU0FBQUEsQ0FBVUMsSUFBWSxFQUFFTixjQUFpQyxFQUFFTyxzQkFBZ0MsRUFBVTtJQUN4STtJQUNBLElBQUlELElBQUksQ0FBQ0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtNQUM1QixNQUFNQyxLQUFLLEdBQUdILElBQUksQ0FBQ0ksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDQyxNQUFNLENBQUNDLE9BQU8sQ0FBQztRQUM1Q0MsWUFBWSxHQUFHSixLQUFLLENBQUNLLEdBQUcsQ0FBQyxDQUFDO1FBQzFCQyxhQUFhLEdBQUdOLEtBQUssQ0FBQ08sSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUMvQlosU0FBUyxHQUFHTCxZQUFZLENBQUNDLGNBQWMsRUFBRWUsYUFBYSxDQUFDO01BQ3hELElBQUlYLFNBQVMsRUFBRTtRQUNkO1FBQ0FFLElBQUksR0FBRyxJQUFJRixTQUFTLENBQUNhLElBQUksSUFBSUosWUFBWSxFQUFFO01BQzVDO0lBQ0QsQ0FBQyxNQUFNO01BQ047TUFDQTtNQUNBLE1BQU1LLFNBQVMsR0FBR1gsc0JBQXNCLENBQUNZLE1BQU0sQ0FBQyxDQUFDO01BQ2pERCxTQUFTLENBQUNFLElBQUksQ0FBQ2QsSUFBSSxDQUFDO01BQ3BCQSxJQUFJLEdBQUdZLFNBQVMsQ0FBQ0YsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMzQjtJQUNBLE9BQU9WLElBQUk7RUFDWixDQUFDOztFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVJBbEIsUUFBQSxDQUFBaUIsb0JBQUEsR0FBQUEsb0JBQUE7RUFTTyxTQUFTZ0IseUJBQXlCQSxDQUFDZixJQUFZLEVBQUVOLGNBQWlDLEVBQUVzQix3QkFBaUMsRUFBVTtJQUNySSxJQUFJQSx3QkFBd0IsRUFBRTtNQUM3QixNQUFNQyxzQkFBc0IsR0FBRyxHQUFHRCx3QkFBd0IsRUFBRUUsU0FBUyxDQUFDRix3QkFBd0IsQ0FBQ0csV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHO01BQ3ZIO01BQ0E7TUFDQSxJQUFJbkIsSUFBSSxDQUFDb0IsVUFBVSxDQUFDSCxzQkFBc0IsQ0FBQyxFQUFFO1FBQzVDLE9BQU9qQixJQUFJLENBQUNrQixTQUFTLENBQUNELHNCQUFzQixDQUFDSSxNQUFNLENBQUM7TUFDckQ7SUFDRDtJQUNBLE9BQU90QixvQkFBb0IsQ0FBQ0MsSUFBSSxFQUFFTixjQUFjLEVBQUUsRUFBRSxDQUFDO0VBQ3REO0VBQUNaLFFBQUEsQ0FBQWlDLHlCQUFBLEdBQUFBLHlCQUFBO0VBQUEsT0FBQWpDLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -10,7 +10,8 @@ export const UI = {
10
10
  IsExpanded: equal(pathInModel("@$ui5.node.isExpanded"), true),
11
11
  NodeLevel: pathInModel("@$ui5.node.level"),
12
12
  IsInactive: pathInModel("@$ui5.context.isInactive"),
13
- isNodeLevelNavigable: pathInModel("isNodeLevelNavigable", "internal")
13
+ isNodeLevelNavigable: pathInModel("isNodeLevelNavigable", "internal"),
14
+ hasCollaborationAuthorization: pathInModel("hasCollaborationAuthorization", "ui") as BindingToolkitExpression<boolean>
14
15
  };
15
16
 
16
17
  export const Entity = {