@sapui5/sap.fe.core 1.97.0 → 1.99.1

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 (249) hide show
  1. package/package.json +5 -4
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AnnotationHelper.js +377 -405
  4. package/src/sap/fe/core/AnnotationHelper.ts +385 -0
  5. package/src/sap/fe/core/AppComponent.js +6 -3
  6. package/src/sap/fe/core/AppStateHandler.js +229 -181
  7. package/src/sap/fe/core/AppStateHandler.ts +171 -0
  8. package/src/sap/fe/core/BaseController.js +3 -2
  9. package/src/sap/fe/core/BusyLocker.js +105 -121
  10. package/src/sap/fe/core/BusyLocker.ts +98 -0
  11. package/src/sap/fe/core/CommonUtils.js +2073 -2379
  12. package/src/sap/fe/core/CommonUtils.ts +2078 -0
  13. package/src/sap/fe/core/ExtensionAPI.js +16 -7
  14. package/src/sap/fe/core/PageController.js +84 -119
  15. package/src/sap/fe/core/PageController.ts +101 -0
  16. package/src/sap/fe/core/RouterProxy.js +986 -807
  17. package/src/sap/fe/core/RouterProxy.ts +838 -0
  18. package/src/sap/fe/core/Synchronization.js +51 -35
  19. package/src/sap/fe/core/Synchronization.ts +29 -0
  20. package/src/sap/fe/core/TemplateComponent.js +173 -155
  21. package/src/sap/fe/core/TemplateComponent.ts +166 -0
  22. package/src/sap/fe/core/TemplateModel.js +97 -54
  23. package/src/sap/fe/core/TemplateModel.ts +64 -0
  24. package/src/sap/fe/core/TransactionHelper.js +1576 -1579
  25. package/src/sap/fe/core/TransactionHelper.ts +1706 -0
  26. package/src/sap/fe/core/actions/draft.js +560 -581
  27. package/src/sap/fe/core/actions/draft.ts +594 -0
  28. package/src/sap/fe/core/actions/messageHandling.js +545 -511
  29. package/src/sap/fe/core/actions/messageHandling.ts +532 -0
  30. package/src/sap/fe/core/actions/nonDraft.js +17 -19
  31. package/src/sap/fe/core/actions/nonDraft.ts +12 -0
  32. package/src/sap/fe/core/actions/operations.js +1074 -1211
  33. package/src/sap/fe/core/actions/operations.ts +1162 -0
  34. package/src/sap/fe/core/actions/sticky.js +102 -105
  35. package/src/sap/fe/core/actions/sticky.ts +102 -0
  36. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +3 -2
  37. package/src/sap/fe/core/controllerextensions/EditFlow.js +229 -260
  38. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +3 -2
  39. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +288 -13
  40. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +27 -23
  41. package/src/sap/fe/core/controllerextensions/InternalRouting.js +82 -46
  42. package/src/sap/fe/core/controllerextensions/KPIManagement.js +113 -25
  43. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +135 -44
  44. package/src/sap/fe/core/controllerextensions/MassEdit.js +172 -0
  45. package/src/sap/fe/core/controllerextensions/MessageHandler.js +22 -9
  46. package/src/sap/fe/core/controllerextensions/PageReady.js +3 -3
  47. package/src/sap/fe/core/controllerextensions/PageReady.ts +12 -8
  48. package/src/sap/fe/core/controllerextensions/Paginator.js +37 -9
  49. package/src/sap/fe/core/controllerextensions/Placeholder.js +8 -4
  50. package/src/sap/fe/core/controllerextensions/Routing.js +25 -5
  51. package/src/sap/fe/core/controllerextensions/RoutingListener.js +3 -2
  52. package/src/sap/fe/core/controllerextensions/Share.js +22 -8
  53. package/src/sap/fe/core/controllerextensions/SideEffects.js +9 -9
  54. package/src/sap/fe/core/controllerextensions/SideEffects.ts +22 -21
  55. package/src/sap/fe/core/controllerextensions/ViewState.js +3 -2
  56. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -1
  57. package/src/sap/fe/core/controls/CommandExecution.js +3 -2
  58. package/src/sap/fe/core/controls/ConditionalWrapper.js +3 -2
  59. package/src/sap/fe/core/controls/CustomQuickViewPage.js +3 -2
  60. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +9 -5
  61. package/src/sap/fe/core/controls/FieldWrapper.js +18 -23
  62. package/src/sap/fe/core/controls/FilterBar.js +3 -2
  63. package/src/sap/fe/core/controls/FormElementWrapper.js +3 -7
  64. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +3 -2
  65. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +2 -1
  66. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +3 -2
  67. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +5 -4
  68. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -2
  69. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +3 -2
  70. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +106 -0
  71. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +79 -0
  72. package/src/sap/fe/core/converters/ConverterContext.js +14 -2
  73. package/src/sap/fe/core/converters/ConverterContext.ts +14 -3
  74. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  75. package/src/sap/fe/core/converters/ManifestSettings.ts +4 -0
  76. package/src/sap/fe/core/converters/ManifestWrapper.js +56 -32
  77. package/src/sap/fe/core/converters/ManifestWrapper.ts +24 -6
  78. package/src/sap/fe/core/converters/MetaModelConverter.js +67 -6
  79. package/src/sap/fe/core/converters/MetaModelConverter.ts +70 -14
  80. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  81. package/src/sap/fe/core/converters/TemplateConverter.ts +2 -2
  82. package/src/sap/fe/core/converters/annotations/DataField.js +3 -3
  83. package/src/sap/fe/core/converters/annotations/DataField.ts +1 -1
  84. package/src/sap/fe/core/converters/common/AnnotationConverter.js +33 -21
  85. package/src/sap/fe/core/converters/controls/Common/Action.js +11 -2
  86. package/src/sap/fe/core/converters/controls/Common/Action.ts +8 -2
  87. package/src/sap/fe/core/converters/controls/Common/Chart.js +5 -3
  88. package/src/sap/fe/core/converters/controls/Common/Chart.ts +11 -3
  89. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +3 -3
  90. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +2 -2
  91. package/src/sap/fe/core/converters/controls/Common/Form.js +20 -10
  92. package/src/sap/fe/core/converters/controls/Common/Form.ts +24 -4
  93. package/src/sap/fe/core/converters/controls/Common/KPI.js +69 -4
  94. package/src/sap/fe/core/converters/controls/Common/KPI.ts +72 -0
  95. package/src/sap/fe/core/converters/controls/Common/Table.js +390 -398
  96. package/src/sap/fe/core/converters/controls/Common/Table.ts +497 -484
  97. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +527 -0
  98. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +655 -0
  99. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +489 -37
  100. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +506 -58
  101. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +2 -2
  102. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +1 -1
  103. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +17 -9
  104. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +24 -9
  105. package/src/sap/fe/core/converters/helpers/Aggregation.js +18 -3
  106. package/src/sap/fe/core/converters/helpers/Aggregation.ts +28 -5
  107. package/src/sap/fe/core/converters/helpers/IssueManager.js +7 -1
  108. package/src/sap/fe/core/converters/helpers/IssueManager.ts +6 -0
  109. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +4 -4
  110. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +3 -3
  111. package/src/sap/fe/core/converters/templates/ListReportConverter.js +13 -6
  112. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +26 -15
  113. package/src/sap/fe/core/designtime/AppComponent.designtime.js +11 -2
  114. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  115. package/src/sap/fe/core/formatters/CriticalityFormatter.ts +1 -1
  116. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  117. package/src/sap/fe/core/formatters/FPMFormatter.ts +4 -10
  118. package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
  119. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -1
  120. package/src/sap/fe/core/formatters/TableFormatter.js +39 -28
  121. package/src/sap/fe/core/formatters/TableFormatter.ts +43 -28
  122. package/src/sap/fe/core/formatters/ValueFormatter.js +30 -5
  123. package/src/sap/fe/core/formatters/ValueFormatter.ts +30 -7
  124. package/src/sap/fe/core/fpm/Component.js +3 -2
  125. package/src/sap/fe/core/helpers/AppStartupHelper.js +359 -0
  126. package/src/sap/fe/core/helpers/AppStartupHelper.ts +391 -0
  127. package/src/sap/fe/core/helpers/BindingExpression.js +484 -437
  128. package/src/sap/fe/core/helpers/BindingExpression.ts +480 -463
  129. package/src/sap/fe/core/helpers/ClassSupport.js +27 -15
  130. package/src/sap/fe/core/helpers/ClassSupport.ts +31 -20
  131. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +63 -59
  132. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +56 -0
  133. package/src/sap/fe/core/helpers/EditState.js +81 -84
  134. package/src/sap/fe/core/helpers/EditState.ts +81 -0
  135. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +62 -48
  136. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +49 -0
  137. package/src/sap/fe/core/helpers/FPMHelper.js +52 -56
  138. package/src/sap/fe/core/helpers/FPMHelper.ts +62 -0
  139. package/src/sap/fe/core/helpers/KeepAliveHelper.js +4 -5
  140. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +10 -10
  141. package/src/sap/fe/core/helpers/MassEditHelper.js +687 -0
  142. package/src/sap/fe/core/helpers/ModelHelper.js +229 -225
  143. package/src/sap/fe/core/helpers/ModelHelper.ts +227 -0
  144. package/src/sap/fe/core/helpers/PasteHelper.js +210 -132
  145. package/src/sap/fe/core/helpers/PasteHelper.ts +196 -0
  146. package/src/sap/fe/core/helpers/SemanticDateOperators.js +332 -313
  147. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +330 -0
  148. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +66 -67
  149. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +73 -0
  150. package/src/sap/fe/core/helpers/StableIdHelper.js +4 -7
  151. package/src/sap/fe/core/helpers/StableIdHelper.ts +2 -6
  152. package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
  153. package/src/sap/fe/core/jsx-runtime/jsx.ts +1 -1
  154. package/src/sap/fe/core/library.js +30 -3
  155. package/src/sap/fe/core/library.support.js +12 -5
  156. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +62 -0
  157. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +66 -0
  158. package/src/sap/fe/core/messagebundle.properties +61 -13
  159. package/src/sap/fe/core/messagebundle_ar.properties +33 -2
  160. package/src/sap/fe/core/messagebundle_bg.properties +33 -2
  161. package/src/sap/fe/core/messagebundle_ca.properties +33 -2
  162. package/src/sap/fe/core/messagebundle_cs.properties +34 -3
  163. package/src/sap/fe/core/messagebundle_cy.properties +33 -2
  164. package/src/sap/fe/core/messagebundle_da.properties +33 -2
  165. package/src/sap/fe/core/messagebundle_de.properties +33 -2
  166. package/src/sap/fe/core/messagebundle_el.properties +33 -2
  167. package/src/sap/fe/core/messagebundle_en.properties +32 -1
  168. package/src/sap/fe/core/messagebundle_en_GB.properties +32 -1
  169. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +36 -1
  170. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +33 -2
  171. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +33 -2
  172. package/src/sap/fe/core/messagebundle_es.properties +33 -2
  173. package/src/sap/fe/core/messagebundle_es_MX.properties +33 -2
  174. package/src/sap/fe/core/messagebundle_et.properties +33 -2
  175. package/src/sap/fe/core/messagebundle_fi.properties +34 -3
  176. package/src/sap/fe/core/messagebundle_fr.properties +38 -7
  177. package/src/sap/fe/core/messagebundle_fr_CA.properties +33 -2
  178. package/src/sap/fe/core/messagebundle_hi.properties +33 -2
  179. package/src/sap/fe/core/messagebundle_hr.properties +33 -2
  180. package/src/sap/fe/core/messagebundle_hu.properties +34 -3
  181. package/src/sap/fe/core/messagebundle_id.properties +36 -5
  182. package/src/sap/fe/core/messagebundle_it.properties +33 -2
  183. package/src/sap/fe/core/messagebundle_iw.properties +33 -2
  184. package/src/sap/fe/core/messagebundle_ja.properties +33 -2
  185. package/src/sap/fe/core/messagebundle_kk.properties +33 -2
  186. package/src/sap/fe/core/messagebundle_ko.properties +33 -2
  187. package/src/sap/fe/core/messagebundle_lt.properties +33 -2
  188. package/src/sap/fe/core/messagebundle_lv.properties +33 -2
  189. package/src/sap/fe/core/messagebundle_ms.properties +33 -2
  190. package/src/sap/fe/core/messagebundle_nl.properties +33 -2
  191. package/src/sap/fe/core/messagebundle_no.properties +33 -2
  192. package/src/sap/fe/core/messagebundle_pl.properties +33 -2
  193. package/src/sap/fe/core/messagebundle_pt.properties +34 -3
  194. package/src/sap/fe/core/messagebundle_pt_PT.properties +33 -2
  195. package/src/sap/fe/core/messagebundle_ro.properties +33 -2
  196. package/src/sap/fe/core/messagebundle_ru.properties +33 -2
  197. package/src/sap/fe/core/messagebundle_sh.properties +33 -2
  198. package/src/sap/fe/core/messagebundle_sk.properties +33 -2
  199. package/src/sap/fe/core/messagebundle_sl.properties +33 -2
  200. package/src/sap/fe/core/messagebundle_sv.properties +34 -3
  201. package/src/sap/fe/core/messagebundle_th.properties +33 -2
  202. package/src/sap/fe/core/messagebundle_tr.properties +33 -2
  203. package/src/sap/fe/core/messagebundle_uk.properties +33 -2
  204. package/src/sap/fe/core/messagebundle_vi.properties +33 -2
  205. package/src/sap/fe/core/messagebundle_zh_CN.properties +33 -2
  206. package/src/sap/fe/core/messagebundle_zh_TW.properties +33 -2
  207. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
  208. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
  209. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +269 -202
  210. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +212 -0
  211. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +4 -3
  212. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +9 -5
  213. package/src/sap/fe/core/services/NavigationServiceFactory.js +406 -300
  214. package/src/sap/fe/core/services/NavigationServiceFactory.ts +316 -0
  215. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +149 -81
  216. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +80 -0
  217. package/src/sap/fe/core/services/RoutingServiceFactory.js +987 -1152
  218. package/src/sap/fe/core/services/RoutingServiceFactory.ts +898 -0
  219. package/src/sap/fe/core/services/ShellServicesFactory.js +31 -2
  220. package/src/sap/fe/core/services/ShellServicesFactory.ts +45 -11
  221. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +42 -85
  222. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +57 -100
  223. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +461 -478
  224. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +453 -0
  225. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +10 -8
  226. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +8 -0
  227. package/src/sap/fe/core/support/AnnotationIssue.support.js +15 -3
  228. package/src/sap/fe/core/support/AnnotationIssue.support.ts +16 -2
  229. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -2
  230. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +1 -1
  231. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +38 -0
  232. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +18 -0
  233. package/src/sap/fe/core/templating/DataModelPathHelper.js +10 -48
  234. package/src/sap/fe/core/templating/DataModelPathHelper.ts +14 -46
  235. package/src/sap/fe/core/templating/DisplayModeFormatter.js +114 -0
  236. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +86 -0
  237. package/src/sap/fe/core/templating/FieldControlHelper.js +8 -8
  238. package/src/sap/fe/core/templating/FieldControlHelper.ts +25 -7
  239. package/src/sap/fe/core/templating/FilterHelper.js +139 -70
  240. package/src/sap/fe/core/templating/FilterHelper.ts +140 -70
  241. package/src/sap/fe/core/templating/PropertyHelper.js +2 -2
  242. package/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
  243. package/src/sap/fe/core/templating/UIFormatters.js +45 -110
  244. package/src/sap/fe/core/templating/UIFormatters.ts +39 -75
  245. package/src/sap/fe/core/type/Email.js +1 -1
  246. package/src/sap/fe/core/type/Email.ts +4 -6
  247. package/ui5.yaml +0 -3
  248. package/src/sap/fe/core/controls/filterbar.d.js +0 -8
  249. package/src/sap/fe/core/controls/filterbar.d.ts +0 -0
@@ -7,15 +7,15 @@ sap.ui.define([], function () {
7
7
 
8
8
  var _exports = {};
9
9
 
10
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
10
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
11
 
12
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
12
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
13
 
14
14
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
15
 
16
16
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
17
17
 
18
- function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
18
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
19
19
 
20
20
  function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }
21
21
 
@@ -25,20 +25,24 @@ sap.ui.define([], function () {
25
25
 
26
26
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
27
27
 
28
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
28
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
29
29
 
30
30
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
31
31
 
32
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
33
+
34
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
35
+
32
36
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
33
37
 
34
- var Path = function Path(pathExpression, targetName, annotationsTerm, annotationType, term) {
38
+ var Path = /*#__PURE__*/_createClass(function Path(pathExpression, targetName, annotationsTerm, annotationType, term) {
35
39
  _classCallCheck(this, Path);
36
40
 
37
41
  this.path = pathExpression.Path;
38
42
  this.type = "Path";
39
43
  this.$target = targetName;
40
44
  this.term = term, this.annotationType = annotationType, this.annotationsTerm = annotationsTerm;
41
- };
45
+ });
42
46
 
43
47
  var TermToTypes;
44
48
 
@@ -445,16 +449,19 @@ sap.ui.define([], function () {
445
449
  objectMap[property.fullyQualifiedName] = property;
446
450
  });
447
451
  });
452
+ parserOutput.schema.typeDefinitions.forEach(function (typeDefinition) {
453
+ objectMap[typeDefinition.fullyQualifiedName] = typeDefinition;
454
+ });
448
455
  parserOutput.schema.entityTypes.forEach(function (entityType) {
449
456
  objectMap[entityType.fullyQualifiedName] = entityType;
450
457
  entityType.entityProperties.forEach(function (property) {
451
458
  objectMap[property.fullyQualifiedName] = property;
452
459
 
453
- if (property.type.indexOf("Edm") === -1) {
460
+ if (property.type.indexOf("Edm") !== 0) {
454
461
  // Handle complex types
455
462
  var complexTypeDefinition = objectMap[property.type];
456
463
 
457
- if (complexTypeDefinition && complexTypeDefinition.properties) {
464
+ if (complexTypeDefinition && complexTypeDefinition._type === "ComplexType" && complexTypeDefinition.properties) {
458
465
  complexTypeDefinition.properties.forEach(function (complexTypeProp) {
459
466
  var complexTypePropTarget = Object.assign(complexTypeProp, {
460
467
  _type: "Property",
@@ -1138,23 +1145,27 @@ sap.ui.define([], function () {
1138
1145
  property.annotations = {};
1139
1146
  }
1140
1147
 
1141
- if (property.type.indexOf("Edm") === -1) {
1142
- var complexType;
1148
+ try {
1149
+ if (property.type.indexOf("Edm") !== 0) {
1150
+ var complexType;
1143
1151
 
1144
- if (property.type.startsWith("Collection")) {
1145
- var complexTypeName = property.type.substr(11, property.type.length - 12);
1146
- complexType = objectMap[complexTypeName];
1147
- } else {
1148
- complexType = objectMap[property.type];
1149
- }
1152
+ if (property.type.startsWith("Collection")) {
1153
+ var complexTypeName = property.type.substr(11, property.type.length - 12);
1154
+ complexType = objectMap[complexTypeName];
1155
+ } else {
1156
+ complexType = objectMap[property.type];
1157
+ }
1150
1158
 
1151
- if (complexType) {
1152
- property.targetType = complexType;
1159
+ if (complexType) {
1160
+ property.targetType = complexType;
1153
1161
 
1154
- if (complexType.properties) {
1155
- complexType.properties.forEach(link);
1162
+ if (complexType.properties) {
1163
+ complexType.properties.forEach(link);
1164
+ }
1156
1165
  }
1157
1166
  }
1167
+ } catch (sError) {
1168
+ throw new Error("Property Type is not defined");
1158
1169
  }
1159
1170
  }
1160
1171
 
@@ -1497,6 +1508,7 @@ sap.ui.define([], function () {
1497
1508
  singletons: parserOutput.schema.singletons,
1498
1509
  entityTypes: parserOutput.schema.entityTypes,
1499
1510
  complexTypes: parserOutput.schema.complexTypes,
1511
+ typeDefinitions: parserOutput.schema.typeDefinitions,
1500
1512
  references: defaultReferences.concat(extraReferences),
1501
1513
  diagnostics: ANNOTATION_ERRORS.concat()
1502
1514
  };
@@ -1716,4 +1728,4 @@ sap.ui.define([], function () {
1716
1728
  _exports.revertTermToGenericType = revertTermToGenericType;
1717
1729
  return _exports;
1718
1730
  });
1719
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbW1vbi9Bbm5vdGF0aW9uQ29udmVydGVyLnRzIl0sIm5hbWVzIjpbIlBhdGgiLCJwYXRoRXhwcmVzc2lvbiIsInRhcmdldE5hbWUiLCJhbm5vdGF0aW9uc1Rlcm0iLCJhbm5vdGF0aW9uVHlwZSIsInRlcm0iLCJwYXRoIiwidHlwZSIsIiR0YXJnZXQiLCJUZXJtVG9UeXBlcyIsImRlZmF1bHRSZWZlcmVuY2VzIiwiYWxpYXMiLCJuYW1lc3BhY2UiLCJ1cmkiLCJyZWZlcmVuY2VzIiwidW5hbGlhc2VkVmFsdWUiLCJyZXZlcnNlUmVmZXJlbmNlTWFwIiwicmVkdWNlIiwibWFwIiwicmVmZXJlbmNlIiwibGFzdERvdEluZGV4IiwibGFzdEluZGV4T2YiLCJzdWJzdHIiLCJ2YWx1ZSIsImluZGV4T2YiLCJzcGxpdCIsInByZUFsaWFzIiwicG9zdEFsaWFzIiwiam9pbiIsInVuYWxpYXMiLCJhbGlhc2VkVmFsdWUiLCJyZWZlcmVuY2VNYXAiLCJidWlsZE9iamVjdE1hcCIsInBhcnNlck91dHB1dCIsIm9iamVjdE1hcCIsInNjaGVtYSIsImVudGl0eUNvbnRhaW5lciIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImVudGl0eVNldHMiLCJmb3JFYWNoIiwiZW50aXR5U2V0IiwiYWN0aW9ucyIsImFjdGlvbiIsImlzQm91bmQiLCJ1bkJvdW5kQWN0aW9uTmFtZSIsIl90eXBlIiwicHVzaCIsInBhcmFtZXRlcnMiLCJwYXJhbWV0ZXIiLCJjb21wbGV4VHlwZXMiLCJjb21wbGV4VHlwZSIsInByb3BlcnRpZXMiLCJwcm9wZXJ0eSIsImVudGl0eVR5cGVzIiwiZW50aXR5VHlwZSIsImVudGl0eVByb3BlcnRpZXMiLCJjb21wbGV4VHlwZURlZmluaXRpb24iLCJjb21wbGV4VHlwZVByb3AiLCJjb21wbGV4VHlwZVByb3BUYXJnZXQiLCJPYmplY3QiLCJhc3NpZ24iLCJuYW1lIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJuYXZQcm9wZXJ0eSIsImtleXMiLCJhbm5vdGF0aW9ucyIsImFubm90YXRpb25Tb3VyY2UiLCJhbm5vdGF0aW9uTGlzdCIsImN1cnJlbnRUYXJnZXROYW1lIiwidGFyZ2V0IiwiYW5ub3RhdGlvbiIsImFubm90YXRpb25GUU4iLCJxdWFsaWZpZXIiLCJjb21iaW5lUGF0aCIsImN1cnJlbnRUYXJnZXQiLCJzdGFydHNXaXRoIiwiYWRkQW5ub3RhdGlvbkVycm9yTWVzc2FnZSIsIm9FcnJvck1zZyIsIkFMTF9BTk5PVEFUSU9OX0VSUk9SUyIsInJlc29sdmVUYXJnZXQiLCJwYXRoT25seSIsImluY2x1ZGVWaXNpdGVkT2JqZWN0cyIsInVuZGVmaW5lZCIsImFWaXNpdGVkT2JqZWN0cyIsInBhdGhTcGxpdCIsInRhcmdldFBhdGhTcGxpdCIsInBhdGhQYXJ0IiwiYW5ub3RhdGlvblBhdGgiLCJjdXJyZW50UGF0aCIsImN1cnJlbnRDb250ZXh0IiwiY3VycmVudFZhbHVlIiwibGVuZ3RoIiwidGFyZ2V0VHlwZSIsImVudGl0eVR5cGVOYW1lIiwidGFyZ2V0VHlwZU5hbWUiLCJzb3VyY2VUeXBlIiwiaXNFbnRpdHlTZXQiLCJsYXN0SWR4Iiwic3ViVGFyZ2V0IiwidmlzaXRlZE9iamVjdHMiLCJ2aXNpdGVkU3ViT2JqZWN0IiwiY29uY2F0IiwicmV2ZXJzZSIsImZpbmQiLCJvYmoiLCJpbnRlcm1lZGlhdGVUYXJnZXQiLCJoYXNPd25Qcm9wZXJ0eSIsIm1lc3NhZ2UiLCJpc0Fubm90YXRpb25QYXRoIiwicGF0aFN0ciIsInBhcnNlVmFsdWUiLCJwcm9wZXJ0eVZhbHVlIiwidmFsdWVGUU4iLCJ0b1Jlc29sdmUiLCJ1bnJlc29sdmVkQW5ub3RhdGlvbnMiLCJTdHJpbmciLCJJbnQiLCJCb29sIiwiRGVjaW1hbCIsIkRhdGUiLCJFbnVtTWVtYmVyIiwiUHJvcGVydHlQYXRoIiwiTmF2aWdhdGlvblByb3BlcnR5UGF0aCIsImFubm90YXRpb25UYXJnZXQiLCJBbm5vdGF0aW9uUGF0aCIsImlubGluZSIsInBhcnNlUmVjb3JkIiwiUmVjb3JkIiwicGFyc2VDb2xsZWN0aW9uIiwiQ29sbGVjdGlvbiIsImluZmVyVHlwZUZyb21UZXJtIiwiaXNFcnJvciIsInJlY29yZERlZmluaXRpb24iLCJjdXJyZW50RlFOIiwiYW5ub3RhdGlvblRlcm0iLCIkVHlwZSIsImFubm90YXRpb25Db250ZW50IiwiQXJyYXkiLCJpc0FycmF5Iiwic3ViQW5ub3RhdGlvbkxpc3QiLCJfX3NvdXJjZSIsInByb3BlcnR5VmFsdWVzIiwiQWN0aW9uVGFyZ2V0IiwiQWN0aW9uIiwiQU5OT1RBVElPTl9FUlJPUlMiLCJnZXRPckluZmVyQ29sbGVjdGlvblR5cGUiLCJjb2xsZWN0aW9uRGVmaW5pdGlvbiIsImZpcnN0Q29sSXRlbSIsInBhcmVudEZRTiIsImNvbGxlY3Rpb25EZWZpbml0aW9uVHlwZSIsInByb3BlcnR5UGF0aCIsInByb3BlcnR5SWR4IiwicGF0aFZhbHVlIiwiYW5ub3RhdGlvbklkeCIsImFubm90YXRpb25Db2xsZWN0aW9uRWxlbWVudCIsIm5hdlByb3BlcnR5UGF0aCIsIm5hdlByb3BJZHgiLCJyZWNvcmRJZHgiLCJpZlZhbHVlIiwic3RyaW5nVmFsdWUiLCJFcnJvciIsImNvbnZlcnRBbm5vdGF0aW9uIiwicmVjb3JkIiwiY29sbGVjdGlvbiIsImNyZWF0ZVJlc29sdmVQYXRoRm4iLCJyZWxhdGl2ZVBhdGgiLCJyZXNvbHZlTmF2aWdhdGlvblByb3BlcnRpZXMiLCJhc3NvY2lhdGlvbnMiLCJuYXZQcm9wIiwib3V0TmF2UHJvcCIsInBhcnRuZXIiLCJpc0NvbGxlY3Rpb24iLCJjb250YWluc1RhcmdldCIsInJlZmVyZW50aWFsQ29uc3RyYWludCIsInJlbGF0aW9uc2hpcCIsInRhcmdldEFzc29jaWF0aW9uIiwiYXNzb2NpYXRpb24iLCJhc3NvY2lhdGlvbkVuZCIsImVuZCIsInJvbGUiLCJ0b1JvbGUiLCJtdWx0aXBsaWNpdHkiLCJvdXROYXZQcm9wUmVxIiwicmVzb2x2ZVBhdGgiLCJsaW5rQWN0aW9uc1RvRW50aXR5VHlwZSIsInNvdXJjZUVudGl0eVR5cGUiLCJyZXR1cm5FbnRpdHlUeXBlIiwicmV0dXJuVHlwZSIsImxpbmtFbnRpdHlUeXBlVG9FbnRpdHlTZXQiLCJrZXlQcm9wIiwiaXNLZXkiLCJsaW5rRW50aXR5VHlwZVRvU2luZ2xldG9uIiwic2luZ2xldG9ucyIsInNpbmdsZXRvbiIsInR5cGVOYW1lIiwibGlua1Byb3BlcnRpZXNUb0NvbXBsZXhUeXBlcyIsImxpbmsiLCJjb21wbGV4VHlwZU5hbWUiLCJwcmVwYXJlQ29tcGxleFR5cGVzIiwic3BsaXRUZXJtIiwidGVybVZhbHVlIiwiYWxpYXNlZFRlcm0iLCJsYXN0RG90IiwidGVybUFsaWFzIiwiY3JlYXRlR2xvYmFsUmVzb2x2ZSIsImNvbnZlcnRlZE91dHB1dCIsInNQYXRoIiwiYVBhdGhTcGxpdCIsInNoaWZ0IiwiZW50aXR5U2V0TmFtZSIsImV0Iiwib2JqZWN0UGF0aCIsInRhcmdldFJlc29sdXRpb24iLCJjb252ZXJ0VHlwZXMiLCJvYmplY3RNYXBFbGVtZW50IiwiYWxsVGFyZ2V0cyIsImJPdmVycmlkZUV4aXN0aW5nIiwidm9jQWxpYXMiLCJ2b2NUZXJtIiwiX2Fubm90YXRpb25zIiwidm9jVGVybVdpdGhRdWFsaWZpZXIiLCJCb29sZWFuIiwiZXh0cmFVbnJlc29sdmVkQW5ub3RhdGlvbnMiLCJiYXNlT2JqIiwiYW5ub3RhdGlvblBhcnQiLCJ0YXJnZXRTcGxpdCIsInNsaWNlIiwiY3VycmVudE9iaiIsInJlc29sdmVhYmxlIiwidGFyZ2V0U3RyIiwicmVzb2x2ZWRUYXJnZXQiLCJ0YXJnZXRTdHJpbmciLCJ0ZXJtSW5mbyIsImV4dHJhUmVmZXJlbmNlcyIsImZpbHRlciIsImRlZmF1bHRSZWYiLCJ2ZXJzaW9uIiwiZGlhZ25vc3RpY3MiLCJyZXZlcnRWYWx1ZVRvR2VuZXJpY1R5cGUiLCJyZXN1bHQiLCJ2YWx1ZU1hdGNoZXMiLCJtYXRjaCIsInJlZiIsImFubm8iLCJyZXZlcnRDb2xsZWN0aW9uSXRlbVRvR2VuZXJpY1R5cGUiLCJ0b1N0cmluZyIsInRvRml4ZWQiLCJpc0RlY2ltYWwiLCJ2YWx1ZU9mIiwiQXBwbHkiLCJwcm90b3R5cGUiLCJjYWxsIiwiY29sbGVjdGlvbkl0ZW0iLCJvdXRJdGVtIiwiY29sbGVjdGlvbktleSIsImtleSIsInBhcnNlZEFubm90YXRpb24iLCJyZXZlcnRUZXJtVG9HZW5lcmljVHlwZSIsInVuYWxpYXNlZFRlcm0iLCJxdWFsaWZpZWRTcGxpdCIsImJhc2VBbm5vdGF0aW9uIiwiY3VycmVudEFubm90YXRpb25zIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFzQ01BLEksR0FRTCxjQUNDQyxjQURELEVBRUNDLFVBRkQsRUFHQ0MsZUFIRCxFQUlDQyxjQUpELEVBS0NDLElBTEQsRUFNRTtBQUFBOztBQUNELFNBQUtDLElBQUwsR0FBWUwsY0FBYyxDQUFDRCxJQUEzQjtBQUNBLFNBQUtPLElBQUwsR0FBWSxNQUFaO0FBQ0EsU0FBS0MsT0FBTCxHQUFlTixVQUFmO0FBQ0MsU0FBS0csSUFBTCxHQUFZQSxJQUFiLEVBQXFCLEtBQUtELGNBQUwsR0FBc0JBLGNBQTNDLEVBQTZELEtBQUtELGVBQUwsR0FBdUJBLGVBQXBGO0FBQ0EsRzs7TUFHR00sVzs7YUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFB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YyxDQUFDLENBQUQsQ0FBdEM7O0FBQ0Esb0JBQUlBLGNBQWMsQ0FBQ3hLLE1BQWYsR0FBd0IsQ0FBNUIsRUFBK0I7QUFDOUJxSyxrQkFBQUEsZ0JBQWdCLENBQUN4TCxTQUFqQixHQUE2QjJMLGNBQWMsQ0FBQyxDQUFELENBQTNDO0FBQ0E7QUFDRDtBQUNEOztBQUNELHFDQUFBQyxjQUFjLENBQUNuTSxXQUFmLGdGQUE0Qm5CLElBQTVCLENBQWlDa04sZ0JBQWpDO0FBQ0EsV0FiRDtBQWNBLFNBakJGO0FBa0JBOztBQUNELDZDQUNJSSxjQURKO0FBRUNqRyxRQUFBQSxVQUFVLEVBQUU3RixVQUFVLENBQUNwRCxHQUFYLENBQWUsVUFBQWlPLElBQUk7QUFBQSxpQkFBSUMsaUNBQWlDLENBQUN0TyxVQUFELEVBQWFxTyxJQUFiLENBQXJDO0FBQUEsU0FBbkI7QUFGYjtBQUlBLEtBNUJELE1BNEJPLElBQUk3SyxVQUFVLENBQUNvQyxjQUFYLENBQTBCLE9BQTFCLENBQUosRUFBd0M7QUFDOUMsNkNBQVkwSixjQUFaO0FBQTRCbEcsUUFBQUEsTUFBTSxFQUFFa0YsaUNBQWlDLENBQUN0TyxVQUFELEVBQWF3RCxVQUFiO0FBQXJFO0FBQ0EsS0FGTSxNQUVBO0FBQ04sNkNBQVk4TCxjQUFaO0FBQTRCN08sUUFBQUEsS0FBSyxFQUFFdU4sd0JBQXdCLENBQUNoTyxVQUFELEVBQWF3RCxVQUFiO0FBQTNEO0FBQ0E7QUFDRCIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0QW5ub3RhdGlvbiBhcyBFZG1Bbm5vdGF0aW9uLFxuXHRBbm5vdGF0aW9uTGlzdCxcblx0QW5ub3RhdGlvblJlY29yZCxcblx0QW5ub3RhdGlvblRlcm0sXG5cdENvbnZlcnRlck91dHB1dCxcblx0RXhwcmVzc2lvbixcblx0UGFyc2VyT3V0cHV0LFxuXHRQYXRoRXhwcmVzc2lvbixcblx0UHJvcGVydHlQYXRoLFxuXHRQcm9wZXJ0eVZhbHVlLFxuXHRBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24sXG5cdE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhFeHByZXNzaW9uLFxuXHRQcm9wZXJ0eVBhdGhFeHByZXNzaW9uXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHtcblx0QXNzb2NpYXRpb24sXG5cdEdlbmVyaWNOYXZpZ2F0aW9uUHJvcGVydHksXG5cdFJlZmVyZW5jZSxcblx0UHJvcGVydHkgYXMgUGFyc2VyUHJvcGVydHksXG5cdEVudGl0eVR5cGUgYXMgUGFyc2VyRW50aXR5VHlwZSxcblx0Q29tcGxleFR5cGUgYXMgUGFyc2VyQ29tcGxleFR5cGUsXG5cdFYyTmF2aWdhdGlvblByb3BlcnR5LFxuXHRWNE5hdmlnYXRpb25Qcm9wZXJ0eVxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvZGlzdC9QYXJzZXJcIjtcbmltcG9ydCB7XG5cdEFubm90YXRpb24sXG5cdEVudGl0eVR5cGUsXG5cdENvbXBsZXhUeXBlLFxuXHRBY3Rpb24sXG5cdEVudGl0eVNldCxcblx0U2luZ2xldG9uLFxuXHRQcm9wZXJ0eSxcblx0TmF2aWdhdGlvblByb3BlcnR5LFxuXHRFbnRpdHlDb250YWluZXIsXG5cdFNlcnZpY2VPYmplY3RBbmRBbm5vdGF0aW9uLFxuXHRSZXNvbHV0aW9uVGFyZ2V0XG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9kaXN0L0NvbnZlcnRlclwiO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwidHMtbm9kZVwiO1xuXG5jbGFzcyBQYXRoIHtcblx0cGF0aDogc3RyaW5nO1xuXHQkdGFyZ2V0OiBzdHJpbmc7XG5cdHR5cGU6IHN0cmluZztcblx0YW5ub3RhdGlvbnNUZXJtOiBzdHJpbmc7XG5cdGFubm90YXRpb25UeXBlOiBzdHJpbmc7XG5cdHRlcm06IHN0cmluZztcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwYXRoRXhwcmVzc2lvbjogUGF0aEV4cHJlc3Npb24sXG5cdFx0dGFyZ2V0TmFtZTogc3RyaW5nLFxuXHRcdGFubm90YXRpb25zVGVybTogc3RyaW5nLFxuXHRcdGFubm90YXRpb25UeXBlOiBzdHJpbmcsXG5cdFx0dGVybTogc3RyaW5nXG5cdCkge1xuXHRcdHRoaXMucGF0aCA9IHBhdGhFeHByZXNzaW9uLlBhdGg7XG5cdFx0dGhpcy50eXBlID0gXCJQYXRoXCI7XG5cdFx0dGhpcy4kdGFyZ2V0ID0gdGFyZ2V0TmFtZTtcblx0XHQodGhpcy50ZXJtID0gdGVybSksICh0aGlzLmFubm90YXRpb25UeXBlID0gYW5ub3RhdGlvblR5cGUpLCAodGhpcy5hbm5vdGF0aW9uc1Rlcm0gPSBhbm5vdGF0aW9uc1Rlcm0pO1xuXHR9XG59XG5cbmVudW0gVGVybVRvVHlwZXMge1xuXHRcIk9yZy5PRGF0YS5BdXRob3JpemF0aW9uLlYxLlNlY3VyaXR5U2NoZW1lc1wiID0gXCJPcmcuT0RhdGEuQXV0aG9yaXphdGlvbi5WMS5TZWN1cml0eVNjaGVtZVwiLFxuXHRcIk9yZy5PRGF0YS5BdXRob3JpemF0aW9uLlYxLkF1dGhvcml6YXRpb25zXCIgPSBcIk9yZy5PRGF0YS5BdXRob3JpemF0aW9uLlYxLkF1dGhvcml6YXRpb25cIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5SZXZpc2lvbnNcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuUmV2aXNpb25UeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNvcmUuVjEuTGlua3NcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuTGlua1wiLFxuXHRcIk9yZy5PRGF0YS5Db3JlLlYxLkV4YW1wbGVcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuRXhhbXBsZVZhbHVlXCIsXG5cdFwiT3JnLk9EYXRhLkNvcmUuVjEuTWVzc2FnZXNcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuTWVzc2FnZVR5cGVcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5WYWx1ZUV4Y2VwdGlvblwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5WYWx1ZUV4Y2VwdGlvblR5cGVcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5SZXNvdXJjZUV4Y2VwdGlvblwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5SZXNvdXJjZUV4Y2VwdGlvblR5cGVcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5EYXRhTW9kaWZpY2F0aW9uRXhjZXB0aW9uXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLkRhdGFNb2RpZmljYXRpb25FeGNlcHRpb25UeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNvcmUuVjEuSXNMYW5ndWFnZURlcGVuZGVudFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5EZXJlZmVyZW5jZWFibGVJRHNcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLkNvcmUuVjEuQ29udmVudGlvbmFsSURzXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcIk9yZy5PRGF0YS5Db3JlLlYxLlBlcm1pc3Npb25zXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlBlcm1pc3Npb25cIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5EZWZhdWx0TmFtZXNwYWNlXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcIk9yZy5PRGF0YS5Db3JlLlYxLkltbXV0YWJsZVwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5Db21wdXRlZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5Db21wdXRlZERlZmF1bHRWYWx1ZVwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5Jc1VSTFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5Jc01lZGlhVHlwZVwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5Db250ZW50RGlzcG9zaXRpb25cIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuQ29udGVudERpc3Bvc2l0aW9uVHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5Db3JlLlYxLk9wdGltaXN0aWNDb25jdXJyZW5jeVwiID0gXCJFZG0uUHJvcGVydHlQYXRoXCIsXG5cdFwiT3JnLk9EYXRhLkNvcmUuVjEuQWRkaXRpb25hbFByb3BlcnRpZXNcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLkNvcmUuVjEuQXV0b0V4cGFuZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5BdXRvRXhwYW5kUmVmZXJlbmNlc1wiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5NYXlJbXBsZW1lbnRcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuUXVhbGlmaWVkVHlwZU5hbWVcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5PcmRlcmVkXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcIk9yZy5PRGF0YS5Db3JlLlYxLlBvc2l0aW9uYWxJbnNlcnRcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLkNvcmUuVjEuQWx0ZXJuYXRlS2V5c1wiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5BbHRlcm5hdGVLZXlcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5PcHRpb25hbFBhcmFtZXRlclwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5PcHRpb25hbFBhcmFtZXRlclR5cGVcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5PcGVyYXRpb25BdmFpbGFibGVcIiA9IFwiRWRtLkJvb2xlYW5cIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5TeW1ib2xpY05hbWVcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuU2ltcGxlSWRlbnRpZmllclwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ29uZm9ybWFuY2VMZXZlbFwiID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNvbmZvcm1hbmNlTGV2ZWxUeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Bc3luY2hyb25vdXNSZXF1ZXN0c1N1cHBvcnRlZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkJhdGNoQ29udGludWVPbkVycm9yU3VwcG9ydGVkXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuSXNvbGF0aW9uU3VwcG9ydGVkXCIgPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuSXNvbGF0aW9uTGV2ZWxcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNyb3NzSm9pblN1cHBvcnRlZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNhbGxiYWNrU3VwcG9ydGVkXCIgPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ2FsbGJhY2tUeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5DaGFuZ2VUcmFja2luZ1wiID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNoYW5nZVRyYWNraW5nVHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ291bnRSZXN0cmljdGlvbnNcIiA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Db3VudFJlc3RyaWN0aW9uc1R5cGVcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLk5hdmlnYXRpb25SZXN0cmljdGlvbnNcIiA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5OYXZpZ2F0aW9uUmVzdHJpY3Rpb25zVHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuSW5kZXhhYmxlQnlLZXlcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Ub3BTdXBwb3J0ZWRcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Ta2lwU3VwcG9ydGVkXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ29tcHV0ZVN1cHBvcnRlZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlNlbGVjdFN1cHBvcnRcIiA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5TZWxlY3RTdXBwb3J0VHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQmF0Y2hTdXBwb3J0ZWRcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5CYXRjaFN1cHBvcnRcIiA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5CYXRjaFN1cHBvcnRUeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNcIiA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNUeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Tb3J0UmVzdHJpY3Rpb25zXCIgPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuU29ydFJlc3RyaWN0aW9uc1R5cGVcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkV4cGFuZFJlc3RyaWN0aW9uc1wiID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkV4cGFuZFJlc3RyaWN0aW9uc1R5cGVcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlNlYXJjaFJlc3RyaWN0aW9uc1wiID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlNlYXJjaFJlc3RyaWN0aW9uc1R5cGVcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLktleUFzU2VnbWVudFN1cHBvcnRlZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlF1ZXJ5U2VnbWVudFN1cHBvcnRlZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkluc2VydFJlc3RyaWN0aW9uc1wiID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkluc2VydFJlc3RyaWN0aW9uc1R5cGVcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkRlZXBJbnNlcnRTdXBwb3J0XCIgPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRGVlcEluc2VydFN1cHBvcnRUeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5VcGRhdGVSZXN0cmljdGlvbnNcIiA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5VcGRhdGVSZXN0cmljdGlvbnNUeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5EZWVwVXBkYXRlU3VwcG9ydFwiID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkRlZXBVcGRhdGVTdXBwb3J0VHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRGVsZXRlUmVzdHJpY3Rpb25zXCIgPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRGVsZXRlUmVzdHJpY3Rpb25zVHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ29sbGVjdGlvblByb3BlcnR5UmVzdHJpY3Rpb25zXCIgPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ29sbGVjdGlvblByb3BlcnR5UmVzdHJpY3Rpb25zVHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuT3BlcmF0aW9uUmVzdHJpY3Rpb25zXCIgPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuT3BlcmF0aW9uUmVzdHJpY3Rpb25zVHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQW5ub3RhdGlvblZhbHVlc0luUXVlcnlTdXBwb3J0ZWRcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Nb2RpZmljYXRpb25RdWVyeU9wdGlvbnNcIiA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Nb2RpZmljYXRpb25RdWVyeU9wdGlvbnNUeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5SZWFkUmVzdHJpY3Rpb25zXCIgPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuUmVhZFJlc3RyaWN0aW9uc1R5cGVcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkN1c3RvbUhlYWRlcnNcIiA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5DdXN0b21QYXJhbWV0ZXJcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkN1c3RvbVF1ZXJ5T3B0aW9uc1wiID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkN1c3RvbVBhcmFtZXRlclwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuTWVkaWFMb2NhdGlvblVwZGF0ZVN1cHBvcnRlZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQXBwbHlTdXBwb3J0ZWRcIiA9IFwiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkFwcGx5U3VwcG9ydGVkVHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5Hcm91cGFibGVcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkFnZ3JlZ2F0YWJsZVwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQ29udGV4dERlZmluaW5nUHJvcGVydGllc1wiID0gXCJFZG0uUHJvcGVydHlQYXRoXCIsXG5cdFwiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkxldmVsZWRIaWVyYXJjaHlcIiA9IFwiRWRtLlByb3BlcnR5UGF0aFwiLFxuXHRcIk9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5SZWN1cnNpdmVIaWVyYXJjaHlcIiA9IFwiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLlJlY3Vyc2l2ZUhpZXJhcmNoeVR5cGVcIixcblx0XCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQXZhaWxhYmxlT25BZ2dyZWdhdGVzXCIgPSBcIk9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5BdmFpbGFibGVPbkFnZ3JlZ2F0ZXNUeXBlXCIsXG5cdFwiT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuTWluaW11bVwiID0gXCJFZG0uUHJpbWl0aXZlVHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1heGltdW1cIiA9IFwiRWRtLlByaW1pdGl2ZVR5cGVcIixcblx0XCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5FeGNsdXNpdmVcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuQWxsb3dlZFZhbHVlc1wiID0gXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5BbGxvd2VkVmFsdWVcIixcblx0XCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5NdWx0aXBsZU9mXCIgPSBcIkVkbS5EZWNpbWFsXCIsXG5cdFwiT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuQ29uc3RyYWludFwiID0gXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5Db25zdHJhaW50VHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLkl0ZW1zT2ZcIiA9IFwiT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuSXRlbXNPZlR5cGVcIixcblx0XCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5PcGVuUHJvcGVydHlUeXBlQ29uc3RyYWludFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5RdWFsaWZpZWRUeXBlTmFtZVwiLFxuXHRcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLkRlcml2ZWRUeXBlQ29uc3RyYWludFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5RdWFsaWZpZWRUeXBlTmFtZVwiLFxuXHRcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLkFsbG93ZWRUZXJtc1wiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5RdWFsaWZpZWRUZXJtTmFtZVwiLFxuXHRcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLkFwcGxpY2FibGVUZXJtc1wiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5RdWFsaWZpZWRUZXJtTmFtZVwiLFxuXHRcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1heEl0ZW1zXCIgPSBcIkVkbS5JbnQ2NFwiLFxuXHRcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1pbkl0ZW1zXCIgPSBcIkVkbS5JbnQ2NFwiLFxuXHRcIk9yZy5PRGF0YS5NZWFzdXJlcy5WMS5TY2FsZVwiID0gXCJFZG0uQnl0ZVwiLFxuXHRcIk9yZy5PRGF0YS5NZWFzdXJlcy5WMS5EdXJhdGlvbkdyYW51bGFyaXR5XCIgPSBcIk9yZy5PRGF0YS5NZWFzdXJlcy5WMS5EdXJhdGlvbkdyYW51bGFyaXR5VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkFuYWx5dGljcy52MS5EaW1lbnNpb25cIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQW5hbHl0aWNzLnYxLk1lYXN1cmVcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQW5hbHl0aWNzLnYxLkFjY3VtdWxhdGl2ZU1lYXN1cmVcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQW5hbHl0aWNzLnYxLlJvbGxlZFVwUHJvcGVydHlDb3VudFwiID0gXCJFZG0uSW50MTZcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5BbmFseXRpY3MudjEuUGxhbm5pbmdBY3Rpb25cIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQW5hbHl0aWNzLnYxLkFnZ3JlZ2F0ZWRQcm9wZXJ0aWVzXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkFuYWx5dGljcy52MS5BZ2dyZWdhdGVkUHJvcGVydHlUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNlcnZpY2VWZXJzaW9uXCIgPSBcIkVkbS5JbnQzMlwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZXJ2aWNlU2NoZW1hVmVyc2lvblwiID0gXCJFZG0uSW50MzJcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVGV4dEZvclwiID0gXCJFZG0uUHJvcGVydHlQYXRoXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzTGFuZ3VhZ2VJZGVudGlmaWVyXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UZXh0Rm9ybWF0XCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UZXh0Rm9ybWF0VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0RpZ2l0U2VxdWVuY2VcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzVXBwZXJDYXNlXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0N1cnJlbmN5XCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc1VuaXRcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlVuaXRTcGVjaWZpY1NjYWxlXCIgPSBcIkVkbS5QcmltaXRpdmVUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlVuaXRTcGVjaWZpY1ByZWNpc2lvblwiID0gXCJFZG0uUHJpbWl0aXZlVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZWNvbmRhcnlLZXlcIiA9IFwiRWRtLlByb3BlcnR5UGF0aFwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5NaW5PY2N1cnNcIiA9IFwiRWRtLkludDY0XCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLk1heE9jY3Vyc1wiID0gXCJFZG0uSW50NjRcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuQXNzb2NpYXRpb25FbnRpdHlcIiA9IFwiRWRtLk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRGVyaXZlZE5hdmlnYXRpb25cIiA9IFwiRWRtLk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTWFza2VkXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5NYXNrZWRBbHdheXNcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNlbWFudGljT2JqZWN0TWFwcGluZ1wiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2VtYW50aWNPYmplY3RNYXBwaW5nVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0luc3RhbmNlQW5ub3RhdGlvblwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uc1wiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5GaWVsZENvbnRyb2xcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpZWxkQ29udHJvbFR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuQXBwbGljYXRpb25cIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkFwcGxpY2F0aW9uVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UaW1lc3RhbXBcIiA9IFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkVycm9yUmVzb2x1dGlvblwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRXJyb3JSZXNvbHV0aW9uVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5NZXNzYWdlc1wiID0gXCJFZG0uQ29tcGxleFR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEubnVtZXJpY1NldmVyaXR5XCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5OdW1lcmljTWVzc2FnZVNldmVyaXR5VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5NYXhpbXVtTnVtZXJpY01lc3NhZ2VTZXZlcml0eVwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTnVtZXJpY01lc3NhZ2VTZXZlcml0eVR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNBY3Rpb25Dcml0aWNhbFwiID0gXCJFZG0uQm9vbGVhblwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5BdHRyaWJ1dGVzXCIgPSBcIkVkbS5Qcm9wZXJ0eVBhdGhcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuUmVsYXRlZFJlY3Vyc2l2ZUhpZXJhcmNoeVwiID0gXCJFZG0uQW5ub3RhdGlvblBhdGhcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSW50ZXJ2YWxcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkludGVydmFsVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5SZXN1bHRDb250ZXh0XCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5XZWFrUmVmZXJlbnRpYWxDb25zdHJhaW50XCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5XZWFrUmVmZXJlbnRpYWxDb25zdHJhaW50VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc05hdHVyYWxQZXJzb25cIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RSZWxldmFudFF1YWxpZmllcnNcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNpbXBsZUlkZW50aWZpZXJcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RNYXBwaW5nXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RNYXBwaW5nVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0NhbGVuZGFyWWVhclwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDYWxlbmRhckhhbGZ5ZWFyXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0NhbGVuZGFyUXVhcnRlclwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDYWxlbmRhck1vbnRoXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0NhbGVuZGFyV2Vla1wiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNEYXlPZkNhbGVuZGFyTW9udGhcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRGF5T2ZDYWxlbmRhclllYXJcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzQ2FsZW5kYXJZZWFySGFsZnllYXJcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzQ2FsZW5kYXJZZWFyUXVhcnRlclwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDYWxlbmRhclllYXJNb250aFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDYWxlbmRhclllYXJXZWVrXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0NhbGVuZGFyRGF0ZVwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNGaXNjYWxZZWFyXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0Zpc2NhbFBlcmlvZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNGaXNjYWxZZWFyUGVyaW9kXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0Zpc2NhbFF1YXJ0ZXJcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRmlzY2FsWWVhclF1YXJ0ZXJcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRmlzY2FsV2Vla1wiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNGaXNjYWxZZWFyV2Vla1wiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNEYXlPZkZpc2NhbFllYXJcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRmlzY2FsWWVhclZhcmlhbnRcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLk11dHVhbGx5RXhjbHVzaXZlVGVybVwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290XCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdFJvb3RUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Tm9kZVwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnROb2RlVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdEFjdGl2YXRpb25WaWFcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNpbXBsZUlkZW50aWZpZXJcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRWRpdGFibGVGaWVsZEZvclwiID0gXCJFZG0uUHJvcGVydHlQYXRoXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNlbWFudGljS2V5XCIgPSBcIkVkbS5Qcm9wZXJ0eVBhdGhcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2lkZUVmZmVjdHNcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNpZGVFZmZlY3RzVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EZWZhdWx0VmFsdWVzRnVuY3Rpb25cIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlF1YWxpZmllZE5hbWVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRmlsdGVyRGVmYXVsdFZhbHVlXCIgPSBcIkVkbS5QcmltaXRpdmVUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpbHRlckRlZmF1bHRWYWx1ZUhpZ2hcIiA9IFwiRWRtLlByaW1pdGl2ZVR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU29ydE9yZGVyXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Tb3J0T3JkZXJUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlJlY3Vyc2l2ZUhpZXJhcmNoeVwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuUmVjdXJzaXZlSGllcmFyY2h5VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5DcmVhdGVkQXRcIiA9IFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkNyZWF0ZWRCeVwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVXNlcklEXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkNoYW5nZWRBdFwiID0gXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuQ2hhbmdlZEJ5XCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Vc2VySURcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuQXBwbHlNdWx0aVVuaXRCZWhhdmlvckZvclNvcnRpbmdBbmRGaWx0ZXJpbmdcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29kZUxpc3QudjEuQ3VycmVuY3lDb2Rlc1wiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db2RlTGlzdC52MS5Db2RlTGlzdFNvdXJjZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvZGVMaXN0LnYxLlVuaXRzT2ZNZWFzdXJlXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvZGVMaXN0LnYxLkNvZGVMaXN0U291cmNlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29kZUxpc3QudjEuU3RhbmRhcmRDb2RlXCIgPSBcIkVkbS5Qcm9wZXJ0eVBhdGhcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db2RlTGlzdC52MS5FeHRlcm5hbENvZGVcIiA9IFwiRWRtLlByb3BlcnR5UGF0aFwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvZGVMaXN0LnYxLklzQ29uZmlndXJhdGlvbkRlcHJlY2F0aW9uQ29kZVwiID0gXCJFZG0uQm9vbGVhblwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQ29udGFjdFwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLkNvbnRhY3RUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5BZGRyZXNzXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQWRkcmVzc1R5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLklzRW1haWxBZGRyZXNzXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuSXNQaG9uZU51bWJlclwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLkV2ZW50XCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuRXZlbnREYXRhXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5UYXNrXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuVGFza0RhdGFcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLk1lc3NhZ2VcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5NZXNzYWdlRGF0YVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkhpZXJhcmNoeS52MS5SZWN1cnNpdmVIaWVyYXJjaHlcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuSGllcmFyY2h5LnYxLlJlY3Vyc2l2ZUhpZXJhcmNoeVR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5QZXJzb25hbERhdGEudjEuRW50aXR5U2VtYW50aWNzXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlBlcnNvbmFsRGF0YS52MS5FbnRpdHlTZW1hbnRpY3NUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuUGVyc29uYWxEYXRhLnYxLkZpZWxkU2VtYW50aWNzXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlBlcnNvbmFsRGF0YS52MS5GaWVsZFNlbWFudGljc1R5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5QZXJzb25hbERhdGEudjEuSXNQb3RlbnRpYWxseVBlcnNvbmFsXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlBlcnNvbmFsRGF0YS52MS5Jc1BvdGVudGlhbGx5U2Vuc2l0aXZlXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlNlc3Npb24udjEuU3RpY2t5U2Vzc2lvblN1cHBvcnRlZFwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxLlN0aWNreVNlc3Npb25TdXBwb3J0ZWRUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGVhZGVySW5mb1wiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IZWFkZXJJbmZvVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLklkZW50aWZpY2F0aW9uXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEFic3RyYWN0XCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQmFkZ2VcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQmFkZ2VUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkQWJzdHJhY3RcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TdGF0dXNJbmZvXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEFic3RyYWN0XCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmllbGRHcm91cFwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GaWVsZEdyb3VwVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbm5lY3RlZEZpZWxkc1wiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Db25uZWN0ZWRGaWVsZHNUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuR2VvTG9jYXRpb25zXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkdlb0xvY2F0aW9uVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkdlb0xvY2F0aW9uXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkdlb0xvY2F0aW9uVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbnRhY3RzXCIgPSBcIkVkbS5Bbm5vdGF0aW9uUGF0aFwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLk1lZGlhUmVzb3VyY2VcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTWVkaWFSZXNvdXJjZVR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YVBvaW50VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLktQSVwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5LUElUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnREZWZpbml0aW9uVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlZhbHVlQ3JpdGljYWxpdHlcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuVmFsdWVDcml0aWNhbGl0eVR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Dcml0aWNhbGl0eUxhYmVsc1wiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Dcml0aWNhbGl0eUxhYmVsVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvbkZpZWxkc1wiID0gXCJFZG0uUHJvcGVydHlQYXRoXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmFjZXRzXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZhY2V0XCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGVhZGVyRmFjZXRzXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZhY2V0XCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUXVpY2tWaWV3RmFjZXRzXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZhY2V0XCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUXVpY2tDcmVhdGVGYWNldHNcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmFjZXRcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GaWx0ZXJGYWNldHNcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUmVmZXJlbmNlRmFjZXRcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUHJlc2VudGF0aW9uVmFyaWFudFwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QcmVzZW50YXRpb25WYXJpYW50VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblZhcmlhbnRcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uVmFyaWFudFR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5UaGluZ1BlcnNwZWN0aXZlXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLklzU3VtbWFyeVwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QYXJ0T2ZQcmV2aWV3XCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLk1hcFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5HYWxsZXJ5XCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLklzSW1hZ2VVUkxcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSXNJbWFnZVwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5NdWx0aUxpbmVUZXh0XCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlRleHRBcnJhbmdlbWVudFwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5UZXh0QXJyYW5nZW1lbnRUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSW1wb3J0YW5jZVwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5JbXBvcnRhbmNlVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhpZGRlblwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DcmVhdGVIaWRkZW5cIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuVXBkYXRlSGlkZGVuXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRlbGV0ZUhpZGRlblwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IaWRkZW5GaWx0ZXJcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRGVmYXVsdFwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRBYnN0cmFjdFwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNyaXRpY2FsaXR5XCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNyaXRpY2FsaXR5VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb25cIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ3JpdGljYWxpdHlDYWxjdWxhdGlvblR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5FbXBoYXNpemVkXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLk9yZGVyQnlcIiA9IFwiRWRtLlByb3BlcnR5UGF0aFwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlBhcmFtZXRlckRlZmF1bHRWYWx1ZVwiID0gXCJFZG0uUHJpbWl0aXZlVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlJlY29tbWVuZGF0aW9uU3RhdGVcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUmVjb21tZW5kYXRpb25TdGF0ZVR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWNvbW1lbmRhdGlvbkxpc3RcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUmVjb21tZW5kYXRpb25MaXN0VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkV4Y2x1ZGVGcm9tTmF2aWdhdGlvbkNvbnRleHRcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuSFRNTDUudjEuQ3NzRGVmYXVsdHNcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuSFRNTDUudjEuQ3NzRGVmYXVsdHNUeXBlXCJcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRSZWZlcmVuY2VzOiBSZWZlcmVuY2VzV2l0aE1hcCA9IFtcblx0eyBhbGlhczogXCJDYXBhYmlsaXRpZXNcIiwgbmFtZXNwYWNlOiBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjFcIiwgdXJpOiBcIlwiIH0sXG5cdHsgYWxpYXM6IFwiQWdncmVnYXRpb25cIiwgbmFtZXNwYWNlOiBcIk9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMVwiLCB1cmk6IFwiXCIgfSxcblx0eyBhbGlhczogXCJWYWxpZGF0aW9uXCIsIG5hbWVzcGFjZTogXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMVwiLCB1cmk6IFwiXCIgfSxcblx0eyBuYW1lc3BhY2U6IFwiT3JnLk9EYXRhLkNvcmUuVjFcIiwgYWxpYXM6IFwiQ29yZVwiLCB1cmk6IFwiXCIgfSxcblx0eyBuYW1lc3BhY2U6IFwiT3JnLk9EYXRhLk1lYXN1cmVzLlYxXCIsIGFsaWFzOiBcIk1lYXN1cmVzXCIsIHVyaTogXCJcIiB9LFxuXHR7IG5hbWVzcGFjZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjFcIiwgYWxpYXM6IFwiQ29tbW9uXCIsIHVyaTogXCJcIiB9LFxuXHR7IG5hbWVzcGFjZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MVwiLCBhbGlhczogXCJVSVwiLCB1cmk6IFwiXCIgfSxcblx0eyBuYW1lc3BhY2U6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuU2Vzc2lvbi52MVwiLCBhbGlhczogXCJTZXNzaW9uXCIsIHVyaTogXCJcIiB9LFxuXHR7IG5hbWVzcGFjZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5BbmFseXRpY3MudjFcIiwgYWxpYXM6IFwiQW5hbHl0aWNzXCIsIHVyaTogXCJcIiB9LFxuXHR7IG5hbWVzcGFjZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db2RlTGlzdC52MVwiLCBhbGlhczogXCJDb2RlTGlzdFwiLCB1cmk6IFwiXCIgfSxcblx0eyBuYW1lc3BhY2U6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuUGVyc29uYWxEYXRhLnYxXCIsIGFsaWFzOiBcIlBlcnNvbmFsRGF0YVwiLCB1cmk6IFwiXCIgfSxcblx0eyBuYW1lc3BhY2U6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MVwiLCBhbGlhczogXCJDb21tdW5pY2F0aW9uXCIsIHVyaTogXCJcIiB9LFxuXHR7IG5hbWVzcGFjZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5IVE1MNS52MVwiLCBhbGlhczogXCJIVE1MNVwiLCB1cmk6IFwiXCIgfVxuXTtcblxudHlwZSBSZWZlcmVuY2VzV2l0aE1hcCA9IFJlZmVyZW5jZVtdICYge1xuXHRyZWZlcmVuY2VNYXA/OiBSZWNvcmQ8c3RyaW5nLCBSZWZlcmVuY2U+O1xuXHRyZXZlcnNlUmVmZXJlbmNlTWFwPzogUmVjb3JkPHN0cmluZywgUmVmZXJlbmNlPjtcbn07XG5cbmZ1bmN0aW9uIGFsaWFzKHJlZmVyZW5jZXM6IFJlZmVyZW5jZXNXaXRoTWFwLCB1bmFsaWFzZWRWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcblx0aWYgKCFyZWZlcmVuY2VzLnJldmVyc2VSZWZlcmVuY2VNYXApIHtcblx0XHRyZWZlcmVuY2VzLnJldmVyc2VSZWZlcmVuY2VNYXAgPSByZWZlcmVuY2VzLnJlZHVjZSgobWFwOiBSZWNvcmQ8c3RyaW5nLCBSZWZlcmVuY2U+LCByZWZlcmVuY2UpID0+IHtcblx0XHRcdG1hcFtyZWZlcmVuY2UubmFtZXNwYWNlXSA9IHJlZmVyZW5jZTtcblx0XHRcdHJldHVybiBtYXA7XG5cdFx0fSwge30pO1xuXHR9XG5cdGlmICghdW5hbGlhc2VkVmFsdWUpIHtcblx0XHRyZXR1cm4gdW5hbGlhc2VkVmFsdWU7XG5cdH1cblx0Y29uc3QgbGFzdERvdEluZGV4ID0gdW5hbGlhc2VkVmFsdWUubGFzdEluZGV4T2YoXCIuXCIpO1xuXHRjb25zdCBuYW1lc3BhY2UgPSB1bmFsaWFzZWRWYWx1ZS5zdWJzdHIoMCwgbGFzdERvdEluZGV4KTtcblx0Y29uc3QgdmFsdWUgPSB1bmFsaWFzZWRWYWx1ZS5zdWJzdHIobGFzdERvdEluZGV4ICsgMSk7XG5cdGNvbnN0IHJlZmVyZW5jZSA9IHJlZmVyZW5jZXMucmV2ZXJzZVJlZmVyZW5jZU1hcFtuYW1lc3BhY2VdO1xuXHRpZiAocmVmZXJlbmNlKSB7XG5cdFx0cmV0dXJuIGAke3JlZmVyZW5jZS5hbGlhc30uJHt2YWx1ZX1gO1xuXHR9IGVsc2Uge1xuXHRcdC8vIFRyeSB0byBzZWUgaWYgaXQncyBhbiBhbm5vdGF0aW9uIFBhdGggbGlrZSB0b19TYWxlc09yZGVyL0BVSS5MaW5lSXRlbVxuXHRcdGlmICh1bmFsaWFzZWRWYWx1ZS5pbmRleE9mKFwiQFwiKSAhPT0gLTEpIHtcblx0XHRcdGNvbnN0IFtwcmVBbGlhcywgLi4ucG9zdEFsaWFzXSA9IHVuYWxpYXNlZFZhbHVlLnNwbGl0KFwiQFwiKTtcblx0XHRcdHJldHVybiBgJHtwcmVBbGlhc31AJHthbGlhcyhyZWZlcmVuY2VzLCBwb3N0QWxpYXMuam9pbihcIkBcIikpfWA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB1bmFsaWFzZWRWYWx1ZTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gdW5hbGlhcyhyZWZlcmVuY2VzOiBSZWZlcmVuY2VzV2l0aE1hcCwgYWxpYXNlZFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRpZiAoIXJlZmVyZW5jZXMucmVmZXJlbmNlTWFwKSB7XG5cdFx0cmVmZXJlbmNlcy5yZWZlcmVuY2VNYXAgPSByZWZlcmVuY2VzLnJlZHVjZSgobWFwOiBSZWNvcmQ8c3RyaW5nLCBSZWZlcmVuY2U+LCByZWZlcmVuY2UpID0+IHtcblx0XHRcdG1hcFtyZWZlcmVuY2UuYWxpYXNdID0gcmVmZXJlbmNlO1xuXHRcdFx0cmV0dXJuIG1hcDtcblx0XHR9LCB7fSk7XG5cdH1cblx0aWYgKCFhbGlhc2VkVmFsdWUpIHtcblx0XHRyZXR1cm4gYWxpYXNlZFZhbHVlO1xuXHR9XG5cdGNvbnN0IFthbGlhcywgLi4udmFsdWVdID0gYWxpYXNlZFZhbHVlLnNwbGl0KFwiLlwiKTtcblx0Y29uc3QgcmVmZXJlbmNlID0gcmVmZXJlbmNlcy5yZWZlcmVuY2VNYXBbYWxpYXNdO1xuXHRpZiAocmVmZXJlbmNlKSB7XG5cdFx0cmV0dXJuIGAke3JlZmVyZW5jZS5uYW1lc3BhY2V9LiR7dmFsdWUuam9pbihcIi5cIil9YDtcblx0fSBlbHNlIHtcblx0XHQvLyBUcnkgdG8gc2VlIGlmIGl0J3MgYW4gYW5ub3RhdGlvbiBQYXRoIGxpa2UgdG9fU2FsZXNPcmRlci9AVUkuTGluZUl0ZW1cblx0XHRpZiAoYWxpYXNlZFZhbHVlLmluZGV4T2YoXCJAXCIpICE9PSAtMSkge1xuXHRcdFx0Y29uc3QgW3ByZUFsaWFzLCAuLi5wb3N0QWxpYXNdID0gYWxpYXNlZFZhbHVlLnNwbGl0KFwiQFwiKTtcblx0XHRcdHJldHVybiBgJHtwcmVBbGlhc31AJHt1bmFsaWFzKHJlZmVyZW5jZXMsIHBvc3RBbGlhcy5qb2luKFwiQFwiKSl9YDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGFsaWFzZWRWYWx1ZTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gYnVpbGRPYmplY3RNYXAocGFyc2VyT3V0cHV0OiBQYXJzZXJPdXRwdXQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcblx0Y29uc3Qgb2JqZWN0TWFwOiBhbnkgPSB7fTtcblx0aWYgKHBhcnNlck91dHB1dC5zY2hlbWEuZW50aXR5Q29udGFpbmVyICYmIHBhcnNlck91dHB1dC5zY2hlbWEuZW50aXR5Q29udGFpbmVyLmZ1bGx5UXVhbGlmaWVkTmFtZSkge1xuXHRcdG9iamVjdE1hcFtwYXJzZXJPdXRwdXQuc2NoZW1hLmVudGl0eUNvbnRhaW5lci5mdWxseVF1YWxpZmllZE5hbWVdID0gcGFyc2VyT3V0cHV0LnNjaGVtYS5lbnRpdHlDb250YWluZXI7XG5cdH1cblx0cGFyc2VyT3V0cHV0LnNjaGVtYS5lbnRpdHlTZXRzLmZvckVhY2goZW50aXR5U2V0ID0+IHtcblx0XHRvYmplY3RNYXBbZW50aXR5U2V0LmZ1bGx5UXVhbGlmaWVkTmFtZV0gPSBlbnRpdHlTZXQ7XG5cdH0pO1xuXHRwYXJzZXJPdXRwdXQuc2NoZW1hLmFjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuXHRcdG9iamVjdE1hcFthY3Rpb24uZnVsbHlRdWFsaWZpZWROYW1lXSA9IGFjdGlvbjtcblx0XHRpZiAoYWN0aW9uLmlzQm91bmQpIHtcblx0XHRcdGNvbnN0IHVuQm91bmRBY3Rpb25OYW1lID0gYWN0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdChcIihcIilbMF07XG5cdFx0XHRpZiAoIW9iamVjdE1hcFt1bkJvdW5kQWN0aW9uTmFtZV0pIHtcblx0XHRcdFx0b2JqZWN0TWFwW3VuQm91bmRBY3Rpb25OYW1lXSA9IHtcblx0XHRcdFx0XHRfdHlwZTogXCJVbmJvdW5kR2VuZXJpY0FjdGlvblwiLFxuXHRcdFx0XHRcdGFjdGlvbnM6IFtdXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHRvYmplY3RNYXBbdW5Cb3VuZEFjdGlvbk5hbWVdLmFjdGlvbnMucHVzaChhY3Rpb24pO1xuXHRcdH1cblxuXHRcdGFjdGlvbi5wYXJhbWV0ZXJzLmZvckVhY2gocGFyYW1ldGVyID0+IHtcblx0XHRcdG9iamVjdE1hcFtwYXJhbWV0ZXIuZnVsbHlRdWFsaWZpZWROYW1lXSA9IHBhcmFtZXRlcjtcblx0XHR9KTtcblx0fSk7XG5cdHBhcnNlck91dHB1dC5zY2hlbWEuY29tcGxleFR5cGVzLmZvckVhY2goY29tcGxleFR5cGUgPT4ge1xuXHRcdG9iamVjdE1hcFtjb21wbGV4VHlwZS5mdWxseVF1YWxpZmllZE5hbWVdID0gY29tcGxleFR5cGU7XG5cdFx0Y29tcGxleFR5cGUucHJvcGVydGllcy5mb3JFYWNoKHByb3BlcnR5ID0+IHtcblx0XHRcdG9iamVjdE1hcFtwcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdID0gcHJvcGVydHk7XG5cdFx0fSk7XG5cdH0pO1xuXHRwYXJzZXJPdXRwdXQuc2NoZW1hLmVudGl0eVR5cGVzLmZvckVhY2goZW50aXR5VHlwZSA9PiB7XG5cdFx0b2JqZWN0TWFwW2VudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lXSA9IGVudGl0eVR5cGU7XG5cdFx0ZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLmZvckVhY2gocHJvcGVydHkgPT4ge1xuXHRcdFx0b2JqZWN0TWFwW3Byb3BlcnR5LmZ1bGx5UXVhbGlmaWVkTmFtZV0gPSBwcm9wZXJ0eTtcblx0XHRcdGlmIChwcm9wZXJ0eS50eXBlLmluZGV4T2YoXCJFZG1cIikgPT09IC0xKSB7XG5cdFx0XHRcdC8vIEhhbmRsZSBjb21wbGV4IHR5cGVzXG5cdFx0XHRcdGNvbnN0IGNvbXBsZXhUeXBlRGVmaW5pdGlvbiA9IG9iamVjdE1hcFtwcm9wZXJ0eS50eXBlXSBhcyBDb21wbGV4VHlwZTtcblx0XHRcdFx0aWYgKGNvbXBsZXhUeXBlRGVmaW5pdGlvbiAmJiBjb21wbGV4VHlwZURlZmluaXRpb24ucHJvcGVydGllcykge1xuXHRcdFx0XHRcdGNvbXBsZXhUeXBlRGVmaW5pdGlvbi5wcm9wZXJ0aWVzLmZvckVhY2goY29tcGxleFR5cGVQcm9wID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IGNvbXBsZXhUeXBlUHJvcFRhcmdldDogUGFyc2VyUHJvcGVydHkgPSBPYmplY3QuYXNzaWduKGNvbXBsZXhUeXBlUHJvcCwge1xuXHRcdFx0XHRcdFx0XHRfdHlwZTogXCJQcm9wZXJ0eVwiLFxuXHRcdFx0XHRcdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IHByb3BlcnR5LmZ1bGx5UXVhbGlmaWVkTmFtZSArIFwiL1wiICsgY29tcGxleFR5cGVQcm9wLm5hbWVcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0b2JqZWN0TWFwW2NvbXBsZXhUeXBlUHJvcFRhcmdldC5mdWxseVF1YWxpZmllZE5hbWVdID0gY29tcGxleFR5cGVQcm9wVGFyZ2V0O1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0ZW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5mb3JFYWNoKG5hdlByb3BlcnR5ID0+IHtcblx0XHRcdG9iamVjdE1hcFtuYXZQcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdID0gbmF2UHJvcGVydHk7XG5cdFx0fSk7XG5cdH0pO1xuXG5cdE9iamVjdC5rZXlzKHBhcnNlck91dHB1dC5zY2hlbWEuYW5ub3RhdGlvbnMpLmZvckVhY2goYW5ub3RhdGlvblNvdXJjZSA9PiB7XG5cdFx0cGFyc2VyT3V0cHV0LnNjaGVtYS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uU291cmNlXS5mb3JFYWNoKGFubm90YXRpb25MaXN0ID0+IHtcblx0XHRcdGNvbnN0IGN1cnJlbnRUYXJnZXROYW1lID0gdW5hbGlhcyhwYXJzZXJPdXRwdXQucmVmZXJlbmNlcywgYW5ub3RhdGlvbkxpc3QudGFyZ2V0KTtcblx0XHRcdGFubm90YXRpb25MaXN0LmFubm90YXRpb25zLmZvckVhY2goYW5ub3RhdGlvbiA9PiB7XG5cdFx0XHRcdGxldCBhbm5vdGF0aW9uRlFOID0gYCR7Y3VycmVudFRhcmdldE5hbWV9QCR7dW5hbGlhcyhwYXJzZXJPdXRwdXQucmVmZXJlbmNlcywgYW5ub3RhdGlvbi50ZXJtKX1gO1xuXHRcdFx0XHRpZiAoYW5ub3RhdGlvbi5xdWFsaWZpZXIpIHtcblx0XHRcdFx0XHRhbm5vdGF0aW9uRlFOICs9IGAjJHthbm5vdGF0aW9uLnF1YWxpZmllcn1gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0eXBlb2YgYW5ub3RhdGlvbiAhPT0gXCJvYmplY3RcIikge1xuXHRcdFx0XHRcdGRlYnVnZ2VyO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9iamVjdE1hcFthbm5vdGF0aW9uRlFOXSA9IGFubm90YXRpb247XG5cdFx0XHRcdChhbm5vdGF0aW9uIGFzIEFubm90YXRpb24pLmZ1bGx5UXVhbGlmaWVkTmFtZSA9IGFubm90YXRpb25GUU47XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fSk7XG5cdHJldHVybiBvYmplY3RNYXA7XG59XG5cbmZ1bmN0aW9uIGNvbWJpbmVQYXRoKGN1cnJlbnRUYXJnZXQ6IHN0cmluZywgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcblx0aWYgKHBhdGguc3RhcnRzV2l0aChcIkBcIikpIHtcblx0XHRyZXR1cm4gY3VycmVudFRhcmdldCArIHVuYWxpYXMoZGVmYXVsdFJlZmVyZW5jZXMsIHBhdGgpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBjdXJyZW50VGFyZ2V0ICsgXCIvXCIgKyBwYXRoO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGFkZEFubm90YXRpb25FcnJvck1lc3NhZ2UocGF0aDogc3RyaW5nLCBvRXJyb3JNc2c6IGFueSkge1xuXHRpZiAoIUFMTF9BTk5PVEFUSU9OX0VSUk9SU1twYXRoXSkge1xuXHRcdEFMTF9BTk5PVEFUSU9OX0VSUk9SU1twYXRoXSA9IFtvRXJyb3JNc2ddO1xuXHR9IGVsc2Uge1xuXHRcdEFMTF9BTk5PVEFUSU9OX0VSUk9SU1twYXRoXS5wdXNoKG9FcnJvck1zZyk7XG5cdH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVRhcmdldChcblx0b2JqZWN0TWFwOiBhbnksXG5cdGN1cnJlbnRUYXJnZXQ6IGFueSxcblx0cGF0aDogc3RyaW5nLFxuXHRwYXRoT25seTogYm9vbGVhbiA9IGZhbHNlLFxuXHRpbmNsdWRlVmlzaXRlZE9iamVjdHM6IGJvb2xlYW4gPSBmYWxzZSxcblx0YW5ub3RhdGlvblR5cGU/OiBzdHJpbmcsXG5cdGFubm90YXRpb25zVGVybT86IHN0cmluZ1xuKSB7XG5cdGlmICghcGF0aCkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0Ly9jb25zdCBwcm9wZXJ0eVBhdGggPSBwYXRoO1xuXHRsZXQgYVZpc2l0ZWRPYmplY3RzOiBhbnlbXSA9IFtdO1xuXHRpZiAoY3VycmVudFRhcmdldCAmJiBjdXJyZW50VGFyZ2V0Ll90eXBlID09PSBcIlByb3BlcnR5XCIpIHtcblx0XHRjdXJyZW50VGFyZ2V0ID0gb2JqZWN0TWFwW2N1cnJlbnRUYXJnZXQuZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KFwiL1wiKVswXV07XG5cdH1cblx0cGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRUYXJnZXQuZnVsbHlRdWFsaWZpZWROYW1lLCBwYXRoKTtcblxuXHRjb25zdCBwYXRoU3BsaXQgPSBwYXRoLnNwbGl0KFwiL1wiKTtcblx0Y29uc3QgdGFyZ2V0UGF0aFNwbGl0OiBzdHJpbmdbXSA9IFtdO1xuXHRwYXRoU3BsaXQuZm9yRWFjaChwYXRoUGFydCA9PiB7XG5cdFx0Ly8gU2VwYXJhdGUgb3V0IHRoZSBhbm5vdGF0aW9uXG5cdFx0aWYgKHBhdGhQYXJ0LmluZGV4T2YoXCJAXCIpICE9PSAtMSkge1xuXHRcdFx0Y29uc3QgW3BhdGgsIGFubm90YXRpb25QYXRoXSA9IHBhdGhQYXJ0LnNwbGl0KFwiQFwiKTtcblx0XHRcdHRhcmdldFBhdGhTcGxpdC5wdXNoKHBhdGgpO1xuXHRcdFx0dGFyZ2V0UGF0aFNwbGl0LnB1c2goYEAke2Fubm90YXRpb25QYXRofWApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0YXJnZXRQYXRoU3BsaXQucHVzaChwYXRoUGFydCk7XG5cdFx0fVxuXHR9KTtcblx0bGV0IGN1cnJlbnRQYXRoID0gcGF0aDtcblx0bGV0IGN1cnJlbnRDb250ZXh0ID0gY3VycmVudFRhcmdldDtcblx0Y29uc3QgdGFyZ2V0ID0gdGFyZ2V0UGF0aFNwbGl0LnJlZHVjZSgoY3VycmVudFZhbHVlOiBhbnksIHBhdGhQYXJ0KSA9PiB7XG5cdFx0aWYgKHBhdGhQYXJ0ID09PSBcIiRUeXBlXCIgJiYgY3VycmVudFZhbHVlLl90eXBlID09PSBcIkVudGl0eVR5cGVcIikge1xuXHRcdFx0cmV0dXJuIGN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKHBhdGhQYXJ0Lmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0Ly8gRW1wdHkgUGF0aCBhZnRlciBhbiBlbnRpdHlTZXQgbWVhbnMgZW50aXR5VHlwZVxuXHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSAmJiBjdXJyZW50VmFsdWUuX3R5cGUgPT09IFwiRW50aXR5U2V0XCIgJiYgY3VycmVudFZhbHVlLmVudGl0eVR5cGUpIHtcblx0XHRcdFx0aWYgKGluY2x1ZGVWaXNpdGVkT2JqZWN0cykge1xuXHRcdFx0XHRcdGFWaXNpdGVkT2JqZWN0cy5wdXNoKGN1cnJlbnRWYWx1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y3VycmVudFZhbHVlID0gY3VycmVudFZhbHVlLmVudGl0eVR5cGU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY3VycmVudFZhbHVlICYmIGN1cnJlbnRWYWx1ZS5fdHlwZSA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIiAmJiBjdXJyZW50VmFsdWUudGFyZ2V0VHlwZSkge1xuXHRcdFx0XHRpZiAoaW5jbHVkZVZpc2l0ZWRPYmplY3RzKSB7XG5cdFx0XHRcdFx0YVZpc2l0ZWRPYmplY3RzLnB1c2goY3VycmVudFZhbHVlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjdXJyZW50VmFsdWUgPSBjdXJyZW50VmFsdWUudGFyZ2V0VHlwZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBjdXJyZW50VmFsdWU7XG5cdFx0fVxuXHRcdGlmIChpbmNsdWRlVmlzaXRlZE9iamVjdHMgJiYgY3VycmVudFZhbHVlICE9PSBudWxsICYmIGN1cnJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRhVmlzaXRlZE9iamVjdHMucHVzaChjdXJyZW50VmFsdWUpO1xuXHRcdH1cblx0XHRpZiAoIWN1cnJlbnRWYWx1ZSkge1xuXHRcdFx0Y3VycmVudFBhdGggPSBwYXRoUGFydDtcblx0XHR9IGVsc2UgaWYgKGN1cnJlbnRWYWx1ZS5fdHlwZSA9PT0gXCJFbnRpdHlTZXRcIiAmJiBwYXRoUGFydCA9PT0gXCIkVHlwZVwiKSB7XG5cdFx0XHRjdXJyZW50VmFsdWUgPSBjdXJyZW50VmFsdWUudGFyZ2V0VHlwZTtcblx0XHRcdHJldHVybiBjdXJyZW50VmFsdWU7XG5cdFx0fSBlbHNlIGlmIChjdXJyZW50VmFsdWUuX3R5cGUgPT09IFwiRW50aXR5U2V0XCIgJiYgY3VycmVudFZhbHVlLmVudGl0eVR5cGUpIHtcblx0XHRcdGN1cnJlbnRQYXRoID0gY29tYmluZVBhdGgoY3VycmVudFZhbHVlLmVudGl0eVR5cGVOYW1lLCBwYXRoUGFydCk7XG5cdFx0fSBlbHNlIGlmIChjdXJyZW50VmFsdWUuX3R5cGUgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIgJiYgY3VycmVudFZhbHVlLnRhcmdldFR5cGVOYW1lKSB7XG5cdFx0XHRjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRWYWx1ZS50YXJnZXRUeXBlTmFtZSwgcGF0aFBhcnQpO1xuXHRcdH0gZWxzZSBpZiAoY3VycmVudFZhbHVlLl90eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiICYmIGN1cnJlbnRWYWx1ZS50YXJnZXRUeXBlKSB7XG5cdFx0XHRjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRWYWx1ZS50YXJnZXRUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZSwgcGF0aFBhcnQpO1xuXHRcdH0gZWxzZSBpZiAoY3VycmVudFZhbHVlLl90eXBlID09PSBcIlByb3BlcnR5XCIpIHtcblx0XHRcdC8vIENvbXBsZXhUeXBlIG9yIFByb3BlcnR5XG5cdFx0XHRpZiAoY3VycmVudFZhbHVlLnRhcmdldFR5cGUpIHtcblx0XHRcdFx0Y3VycmVudFBhdGggPSBjb21iaW5lUGF0aChjdXJyZW50VmFsdWUudGFyZ2V0VHlwZS5mdWxseVF1YWxpZmllZE5hbWUsIHBhdGhQYXJ0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGN1cnJlbnRQYXRoID0gY29tYmluZVBhdGgoY3VycmVudFZhbHVlLmZ1bGx5UXVhbGlmaWVkTmFtZSwgcGF0aFBhcnQpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoY3VycmVudFZhbHVlLl90eXBlID09PSBcIkFjdGlvblwiICYmIGN1cnJlbnRWYWx1ZS5pc0JvdW5kKSB7XG5cdFx0XHRjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRWYWx1ZS5mdWxseVF1YWxpZmllZE5hbWUsIHBhdGhQYXJ0KTtcblx0XHRcdGlmICghb2JqZWN0TWFwW2N1cnJlbnRQYXRoXSkge1xuXHRcdFx0XHRjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRWYWx1ZS5zb3VyY2VUeXBlLCBwYXRoUGFydCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChjdXJyZW50VmFsdWUuX3R5cGUgPT09IFwiQWN0aW9uUGFyYW1ldGVyXCIgJiYgY3VycmVudFZhbHVlLmlzRW50aXR5U2V0KSB7XG5cdFx0XHRjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRWYWx1ZS50eXBlLCBwYXRoUGFydCk7XG5cdFx0fSBlbHNlIGlmIChjdXJyZW50VmFsdWUuX3R5cGUgPT09IFwiQWN0aW9uUGFyYW1ldGVyXCIgJiYgIWN1cnJlbnRWYWx1ZS5pc0VudGl0eVNldCkge1xuXHRcdFx0Y3VycmVudFBhdGggPSBjb21iaW5lUGF0aChcblx0XHRcdFx0Y3VycmVudFRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUuc3Vic3RyKDAsIGN1cnJlbnRUYXJnZXQuZnVsbHlRdWFsaWZpZWROYW1lLmxhc3RJbmRleE9mKFwiL1wiKSksXG5cdFx0XHRcdHBhdGhQYXJ0XG5cdFx0XHQpO1xuXHRcdFx0aWYgKCFvYmplY3RNYXBbY3VycmVudFBhdGhdKSB7XG5cdFx0XHRcdGxldCBsYXN0SWR4ID0gY3VycmVudFRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUubGFzdEluZGV4T2YoXCIvXCIpO1xuXHRcdFx0XHRpZiAobGFzdElkeCA9PT0gLTEpIHtcblx0XHRcdFx0XHRsYXN0SWR4ID0gY3VycmVudFRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUubGVuZ3RoO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGN1cnJlbnRQYXRoID0gY29tYmluZVBhdGgoXG5cdFx0XHRcdFx0KG9iamVjdE1hcFtjdXJyZW50VGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZS5zdWJzdHIoMCwgbGFzdElkeCldIGFzIEFjdGlvbikuc291cmNlVHlwZSxcblx0XHRcdFx0XHRwYXRoUGFydFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRWYWx1ZS5mdWxseVF1YWxpZmllZE5hbWUsIHBhdGhQYXJ0KTtcblx0XHRcdGlmIChwYXRoUGFydCAhPT0gXCJuYW1lXCIgJiYgY3VycmVudFZhbHVlW3BhdGhQYXJ0XSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHJldHVybiBjdXJyZW50VmFsdWVbcGF0aFBhcnRdO1xuXHRcdFx0fSBlbHNlIGlmIChwYXRoUGFydCA9PT0gXCIkQW5ub3RhdGlvblBhdGhcIiAmJiBjdXJyZW50VmFsdWUuJHRhcmdldCkge1xuXHRcdFx0XHRjb25zdCBjdXJyZW50Q29udGV4dCA9IG9iamVjdE1hcFtjdXJyZW50VmFsdWUuZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KFwiQFwiKVswXV07XG5cdFx0XHRcdGNvbnN0IHN1YlRhcmdldDogYW55ID0gcmVzb2x2ZVRhcmdldChvYmplY3RNYXAsIGN1cnJlbnRDb250ZXh0LCBjdXJyZW50VmFsdWUudmFsdWUsIGZhbHNlLCB0cnVlKTtcblx0XHRcdFx0c3ViVGFyZ2V0LnZpc2l0ZWRPYmplY3RzLmZvckVhY2goKHZpc2l0ZWRTdWJPYmplY3Q6IGFueSkgPT4ge1xuXHRcdFx0XHRcdGlmIChhVmlzaXRlZE9iamVjdHMuaW5kZXhPZih2aXNpdGVkU3ViT2JqZWN0KSA9PT0gLTEpIHtcblx0XHRcdFx0XHRcdGFWaXNpdGVkT2JqZWN0cy5wdXNoKHZpc2l0ZWRTdWJPYmplY3QpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybiBzdWJUYXJnZXQudGFyZ2V0O1xuXHRcdFx0fSBlbHNlIGlmIChwYXRoUGFydCA9PT0gXCIkUGF0aFwiICYmIGN1cnJlbnRWYWx1ZS4kdGFyZ2V0KSB7XG5cdFx0XHRcdGN1cnJlbnRDb250ZXh0ID0gYVZpc2l0ZWRPYmplY3RzXG5cdFx0XHRcdFx0LmNvbmNhdCgpXG5cdFx0XHRcdFx0LnJldmVyc2UoKVxuXHRcdFx0XHRcdC5maW5kKFxuXHRcdFx0XHRcdFx0b2JqID0+XG5cdFx0XHRcdFx0XHRcdG9iai5fdHlwZSA9PT0gXCJFbnRpdHlUeXBlXCIgfHxcblx0XHRcdFx0XHRcdFx0b2JqLl90eXBlID09PSBcIkVudGl0eVNldFwiIHx8XG5cdFx0XHRcdFx0XHRcdG9iai5fdHlwZSA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChjdXJyZW50Q29udGV4dCkge1xuXHRcdFx0XHRcdGNvbnN0IHN1YlRhcmdldDogYW55ID0gcmVzb2x2ZVRhcmdldChvYmplY3RNYXAsIGN1cnJlbnRDb250ZXh0LCBjdXJyZW50VmFsdWUucGF0aCwgZmFsc2UsIHRydWUpO1xuXHRcdFx0XHRcdHN1YlRhcmdldC52aXNpdGVkT2JqZWN0cy5mb3JFYWNoKCh2aXNpdGVkU3ViT2JqZWN0OiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdGlmIChhVmlzaXRlZE9iamVjdHMuaW5kZXhPZih2aXNpdGVkU3ViT2JqZWN0KSA9PT0gLTEpIHtcblx0XHRcdFx0XHRcdFx0YVZpc2l0ZWRPYmplY3RzLnB1c2godmlzaXRlZFN1Yk9iamVjdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuIHN1YlRhcmdldC50YXJnZXQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGN1cnJlbnRWYWx1ZS4kdGFyZ2V0O1xuXHRcdFx0fSBlbHNlIGlmIChwYXRoUGFydC5zdGFydHNXaXRoKFwiJFBhdGhcIikgJiYgY3VycmVudFZhbHVlLiR0YXJnZXQpIHtcblx0XHRcdFx0Y29uc3QgaW50ZXJtZWRpYXRlVGFyZ2V0ID0gY3VycmVudFZhbHVlLiR0YXJnZXQ7XG5cdFx0XHRcdGN1cnJlbnRQYXRoID0gY29tYmluZVBhdGgoaW50ZXJtZWRpYXRlVGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZSwgcGF0aFBhcnQuc3Vic3RyKDUpKTtcblx0XHRcdH0gZWxzZSBpZiAoY3VycmVudFZhbHVlLmhhc093blByb3BlcnR5KFwiJFR5cGVcIikgJiYgIW9iamVjdE1hcFtjdXJyZW50UGF0aF0pIHtcblx0XHRcdFx0Ly8gVGhpcyBpcyBub3cgYW4gYW5ub3RhdGlvbiB2YWx1ZVxuXHRcdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gb2JqZWN0TWFwW2N1cnJlbnRWYWx1ZS5mdWxseVF1YWxpZmllZE5hbWUuc3BsaXQoXCJAXCIpWzBdXTtcblx0XHRcdFx0aWYgKGVudGl0eVR5cGUpIHtcblx0XHRcdFx0XHRjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lLCBwYXRoUGFydCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG9iamVjdE1hcFtjdXJyZW50UGF0aF07XG5cdH0sIG51bGwpO1xuXHRpZiAoIXRhcmdldCkge1xuXHRcdGlmIChhbm5vdGF0aW9uc1Rlcm0gJiYgYW5ub3RhdGlvblR5cGUpIHtcblx0XHRcdHZhciBvRXJyb3JNc2cgPSB7XG5cdFx0XHRcdG1lc3NhZ2U6XG5cdFx0XHRcdFx0XCJVbmFibGUgdG8gcmVzb2x2ZSB0aGUgcGF0aCBleHByZXNzaW9uOiBcIiArXG5cdFx0XHRcdFx0XCJcXG5cIiArXG5cdFx0XHRcdFx0cGF0aCArXG5cdFx0XHRcdFx0XCJcXG5cIiArXG5cdFx0XHRcdFx0XCJcXG5cIiArXG5cdFx0XHRcdFx0XCJIaW50OiBDaGVjayBhbmQgY29ycmVjdCB0aGUgcGF0aCB2YWx1ZXMgdW5kZXIgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgaW4gdGhlIG1ldGFkYXRhIChhbm5vdGF0aW9uLnhtbCBmaWxlIG9yIENEUyBhbm5vdGF0aW9ucyBmb3IgdGhlIGFwcGxpY2F0aW9uKTogXFxuXFxuXCIgK1xuXHRcdFx0XHRcdFwiPEFubm90YXRpb24gVGVybSA9IFwiICtcblx0XHRcdFx0XHRhbm5vdGF0aW9uc1Rlcm0gK1xuXHRcdFx0XHRcdFwiPlwiICtcblx0XHRcdFx0XHRcIlxcblwiICtcblx0XHRcdFx0XHRcIjxSZWNvcmQgVHlwZSA9IFwiICtcblx0XHRcdFx0XHRhbm5vdGF0aW9uVHlwZSArXG5cdFx0XHRcdFx0XCI+XCIgK1xuXHRcdFx0XHRcdFwiXFxuXCIgK1xuXHRcdFx0XHRcdFwiPEFubm90YXRpb25QYXRoID0gXCIgK1xuXHRcdFx0XHRcdHBhdGggK1xuXHRcdFx0XHRcdFwiPlwiXG5cdFx0XHR9O1xuXHRcdFx0YWRkQW5ub3RhdGlvbkVycm9yTWVzc2FnZShwYXRoLCBvRXJyb3JNc2cpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YXIgb0Vycm9yTXNnID0ge1xuXHRcdFx0XHRtZXNzYWdlOlxuXHRcdFx0XHRcdFwiVW5hYmxlIHRvIHJlc29sdmUgdGhlIHBhdGggZXhwcmVzc2lvbjogXCIgK1xuXHRcdFx0XHRcdHBhdGggK1xuXHRcdFx0XHRcdFwiXFxuXCIgK1xuXHRcdFx0XHRcdFwiXFxuXCIgK1xuXHRcdFx0XHRcdFwiSGludDogQ2hlY2sgYW5kIGNvcnJlY3QgdGhlIHBhdGggdmFsdWVzIHVuZGVyIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIGluIHRoZSBtZXRhZGF0YSAoYW5ub3RhdGlvbi54bWwgZmlsZSBvciBDRFMgYW5ub3RhdGlvbnMgZm9yIHRoZSBhcHBsaWNhdGlvbik6IFxcblxcblwiICtcblx0XHRcdFx0XHRcIjxBbm5vdGF0aW9uIFRlcm0gPSBcIiArXG5cdFx0XHRcdFx0cGF0aFNwbGl0WzBdICtcblx0XHRcdFx0XHRcIj5cIiArXG5cdFx0XHRcdFx0XCJcXG5cIiArXG5cdFx0XHRcdFx0XCI8UHJvcGVydHlWYWx1ZSAgUGF0aD0gXCIgK1xuXHRcdFx0XHRcdHBhdGhTcGxpdFsxXSArXG5cdFx0XHRcdFx0XCI+XCJcblx0XHRcdH07XG5cdFx0XHRhZGRBbm5vdGF0aW9uRXJyb3JNZXNzYWdlKHBhdGgsIG9FcnJvck1zZyk7XG5cdFx0fVxuXHRcdC8vIGNvbnNvbGUubG9nKFwiTWlzc2luZyB0YXJnZXQgXCIgKyBwYXRoKTtcblx0fVxuXHRpZiAocGF0aE9ubHkpIHtcblx0XHRyZXR1cm4gY3VycmVudFBhdGg7XG5cdH1cblx0aWYgKGluY2x1ZGVWaXNpdGVkT2JqZWN0cykge1xuXHRcdHJldHVybiB7XG5cdFx0XHR2aXNpdGVkT2JqZWN0czogYVZpc2l0ZWRPYmplY3RzLFxuXHRcdFx0dGFyZ2V0OiB0YXJnZXRcblx0XHR9O1xuXHR9XG5cdHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIGlzQW5ub3RhdGlvblBhdGgocGF0aFN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdHJldHVybiBwYXRoU3RyLmluZGV4T2YoXCJAXCIpICE9PSAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VWYWx1ZShcblx0cHJvcGVydHlWYWx1ZTogRXhwcmVzc2lvbixcblx0dmFsdWVGUU46IHN0cmluZyxcblx0cGFyc2VyT3V0cHV0OiBQYXJzZXJPdXRwdXQsXG5cdGN1cnJlbnRUYXJnZXQ6IGFueSxcblx0b2JqZWN0TWFwOiBhbnksXG5cdHRvUmVzb2x2ZTogUmVzb2x2ZWFibGVbXSxcblx0YW5ub3RhdGlvblNvdXJjZTogc3RyaW5nLFxuXHR1bnJlc29sdmVkQW5ub3RhdGlvbnM6IEFubm90YXRpb25MaXN0W10sXG5cdGFubm90YXRpb25UeXBlOiBzdHJpbmcsXG5cdGFubm90YXRpb25zVGVybTogc3RyaW5nXG4pIHtcblx0aWYgKHByb3BlcnR5VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0c3dpdGNoIChwcm9wZXJ0eVZhbHVlLnR5cGUpIHtcblx0XHRjYXNlIFwiU3RyaW5nXCI6XG5cdFx0XHRyZXR1cm4gcHJvcGVydHlWYWx1ZS5TdHJpbmc7XG5cdFx0Y2FzZSBcIkludFwiOlxuXHRcdFx0cmV0dXJuIHByb3BlcnR5VmFsdWUuSW50O1xuXHRcdGNhc2UgXCJCb29sXCI6XG5cdFx0XHRyZXR1cm4gcHJvcGVydHlWYWx1ZS5Cb29sO1xuXHRcdGNhc2UgXCJEZWNpbWFsXCI6XG5cdFx0XHRyZXR1cm4gcHJvcGVydHlWYWx1ZS5EZWNpbWFsO1xuXHRcdGNhc2UgXCJEYXRlXCI6XG5cdFx0XHRyZXR1cm4gcHJvcGVydHlWYWx1ZS5EYXRlO1xuXHRcdGNhc2UgXCJFbnVtTWVtYmVyXCI6XG5cdFx0XHRyZXR1cm4gYWxpYXMocGFyc2VyT3V0cHV0LnJlZmVyZW5jZXMsIHByb3BlcnR5VmFsdWUuRW51bU1lbWJlcik7XG5cdFx0Y2FzZSBcIlByb3BlcnR5UGF0aFwiOlxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dHlwZTogXCJQcm9wZXJ0eVBhdGhcIixcblx0XHRcdFx0dmFsdWU6IHByb3BlcnR5VmFsdWUuUHJvcGVydHlQYXRoLFxuXHRcdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IHZhbHVlRlFOLFxuXHRcdFx0XHQkdGFyZ2V0OiByZXNvbHZlVGFyZ2V0KFxuXHRcdFx0XHRcdG9iamVjdE1hcCxcblx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LFxuXHRcdFx0XHRcdHByb3BlcnR5VmFsdWUuUHJvcGVydHlQYXRoLFxuXHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdGFubm90YXRpb25UeXBlLFxuXHRcdFx0XHRcdGFubm90YXRpb25zVGVybVxuXHRcdFx0XHQpXG5cdFx0XHR9O1xuXHRcdGNhc2UgXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCI6XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR0eXBlOiBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIixcblx0XHRcdFx0dmFsdWU6IHByb3BlcnR5VmFsdWUuTmF2aWdhdGlvblByb3BlcnR5UGF0aCxcblx0XHRcdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiB2YWx1ZUZRTixcblx0XHRcdFx0JHRhcmdldDogcmVzb2x2ZVRhcmdldChcblx0XHRcdFx0XHRvYmplY3RNYXAsXG5cdFx0XHRcdFx0Y3VycmVudFRhcmdldCxcblx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlLk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdFx0YW5ub3RhdGlvblR5cGUsXG5cdFx0XHRcdFx0YW5ub3RhdGlvbnNUZXJtXG5cdFx0XHRcdClcblx0XHRcdH07XG5cdFx0Y2FzZSBcIkFubm90YXRpb25QYXRoXCI6XG5cdFx0XHRjb25zdCBhbm5vdGF0aW9uVGFyZ2V0ID0gcmVzb2x2ZVRhcmdldChcblx0XHRcdFx0b2JqZWN0TWFwLFxuXHRcdFx0XHRjdXJyZW50VGFyZ2V0LFxuXHRcdFx0XHR1bmFsaWFzKHBhcnNlck91dHB1dC5yZWZlcmVuY2VzLCBwcm9wZXJ0eVZhbHVlLkFubm90YXRpb25QYXRoKSBhcyBzdHJpbmcsXG5cdFx0XHRcdHRydWUsXG5cdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRhbm5vdGF0aW9uVHlwZSxcblx0XHRcdFx0YW5ub3RhdGlvbnNUZXJtXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgYW5ub3RhdGlvblBhdGggPSB7XG5cdFx0XHRcdHR5cGU6IFwiQW5ub3RhdGlvblBhdGhcIixcblx0XHRcdFx0dmFsdWU6IHByb3BlcnR5VmFsdWUuQW5ub3RhdGlvblBhdGgsXG5cdFx0XHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogdmFsdWVGUU4sXG5cdFx0XHRcdCR0YXJnZXQ6IGFubm90YXRpb25UYXJnZXQsXG5cdFx0XHRcdGFubm90YXRpb25UeXBlOiBhbm5vdGF0aW9uVHlwZSxcblx0XHRcdFx0YW5ub3RhdGlvbnNUZXJtOiBhbm5vdGF0aW9uc1Rlcm0sXG5cdFx0XHRcdHRlcm06IFwiXCIsXG5cdFx0XHRcdHBhdGg6IFwiXCJcblx0XHRcdH07XG5cdFx0XHR0b1Jlc29sdmUucHVzaCh7IGlubGluZTogZmFsc2UsIHRvUmVzb2x2ZTogYW5ub3RhdGlvblBhdGggfSk7XG5cdFx0XHRyZXR1cm4gYW5ub3RhdGlvblBhdGg7XG5cdFx0Y2FzZSBcIlBhdGhcIjpcblx0XHRcdGNvbnN0ICR0YXJnZXQgPSByZXNvbHZlVGFyZ2V0KFxuXHRcdFx0XHRvYmplY3RNYXAsXG5cdFx0XHRcdGN1cnJlbnRUYXJnZXQsXG5cdFx0XHRcdHByb3BlcnR5VmFsdWUuUGF0aCxcblx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdGFubm90YXRpb25UeXBlLFxuXHRcdFx0XHRhbm5vdGF0aW9uc1Rlcm1cblx0XHRcdCk7XG5cdFx0XHRjb25zdCBwYXRoID0gbmV3IFBhdGgocHJvcGVydHlWYWx1ZSwgJHRhcmdldCwgYW5ub3RhdGlvbnNUZXJtLCBhbm5vdGF0aW9uVHlwZSwgXCJcIik7XG5cdFx0XHR0b1Jlc29sdmUucHVzaCh7XG5cdFx0XHRcdGlubGluZTogaXNBbm5vdGF0aW9uUGF0aChwcm9wZXJ0eVZhbHVlLlBhdGgpLFxuXHRcdFx0XHR0b1Jlc29sdmU6IHBhdGhcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIHBhdGg7XG5cblx0XHRjYXNlIFwiUmVjb3JkXCI6XG5cdFx0XHRyZXR1cm4gcGFyc2VSZWNvcmQoXG5cdFx0XHRcdHByb3BlcnR5VmFsdWUuUmVjb3JkLFxuXHRcdFx0XHR2YWx1ZUZRTixcblx0XHRcdFx0cGFyc2VyT3V0cHV0LFxuXHRcdFx0XHRjdXJyZW50VGFyZ2V0LFxuXHRcdFx0XHRvYmplY3RNYXAsXG5cdFx0XHRcdHRvUmVzb2x2ZSxcblx0XHRcdFx0YW5ub3RhdGlvblNvdXJjZSxcblx0XHRcdFx0dW5yZXNvbHZlZEFubm90YXRpb25zLFxuXHRcdFx0XHRhbm5vdGF0aW9uVHlwZSxcblx0XHRcdFx0YW5ub3RhdGlvbnNUZXJtXG5cdFx0XHQpO1xuXHRcdGNhc2UgXCJDb2xsZWN0aW9uXCI6XG5cdFx0XHRyZXR1cm4gcGFyc2VDb2xsZWN0aW9uKFxuXHRcdFx0XHRwcm9wZXJ0eVZhbHVlLkNvbGxlY3Rpb24sXG5cdFx0XHRcdHZhbHVlRlFOLFxuXHRcdFx0XHRwYXJzZXJPdXRwdXQsXG5cdFx0XHRcdGN1cnJlbnRUYXJnZXQsXG5cdFx0XHRcdG9iamVjdE1hcCxcblx0XHRcdFx0dG9SZXNvbHZlLFxuXHRcdFx0XHRhbm5vdGF0aW9uU291cmNlLFxuXHRcdFx0XHR1bnJlc29sdmVkQW5ub3RhdGlvbnMsXG5cdFx0XHRcdGFubm90YXRpb25UeXBlLFxuXHRcdFx0XHRhbm5vdGF0aW9uc1Rlcm1cblx0XHRcdCk7XG5cdFx0Y2FzZSBcIkFwcGx5XCI6XG5cdFx0Y2FzZSBcIk51bGxcIjpcblx0XHRjYXNlIFwiTm90XCI6XG5cdFx0Y2FzZSBcIkVxXCI6XG5cdFx0Y2FzZSBcIk5lXCI6XG5cdFx0Y2FzZSBcIkd0XCI6XG5cdFx0Y2FzZSBcIkdlXCI6XG5cdFx0Y2FzZSBcIkx0XCI6XG5cdFx0Y2FzZSBcIkxlXCI6XG5cdFx0Y2FzZSBcIklmXCI6XG5cdFx0Y2FzZSBcIkFuZFwiOlxuXHRcdGNhc2UgXCJPclwiOlxuXHRcdFx0cmV0dXJuIHByb3BlcnR5VmFsdWU7XG5cdH1cbn1cblxuZnVuY3Rpb24gaW5mZXJUeXBlRnJvbVRlcm0oYW5ub3RhdGlvbnNUZXJtOiBzdHJpbmcsIHBhcnNlck91dHB1dDogUGFyc2VyT3V0cHV0LCBhbm5vdGF0aW9uVGFyZ2V0OiBzdHJpbmcpIHtcblx0Y29uc3QgdGFyZ2V0VHlwZSA9IChUZXJtVG9UeXBlcyBhcyBhbnkpW2Fubm90YXRpb25zVGVybV07XG5cdHZhciBvRXJyb3JNc2cgPSB7XG5cdFx0aXNFcnJvcjogZmFsc2UsXG5cdFx0bWVzc2FnZTogYFRoZSB0eXBlIG9mIHRoZSByZWNvcmQgdXNlZCB3aXRoaW4gdGhlIHRlcm0gJHthbm5vdGF0aW9uc1Rlcm19IHdhcyBub3QgZGVmaW5lZCBhbmQgd2FzIGluZmVycmVkIGFzICR7dGFyZ2V0VHlwZX0uXG5IaW50OiBJZiBwb3NzaWJsZSwgdHJ5IHRvIG1haW50YWluIHRoZSBUeXBlIHByb3BlcnR5IGZvciBlYWNoIFJlY29yZC5cbjxBbm5vdGF0aW9ucyBUYXJnZXQ9XCIke2Fubm90YXRpb25UYXJnZXR9XCI+XG5cdDxBbm5vdGF0aW9uIFRlcm09XCIke2Fubm90YXRpb25zVGVybX1cIj5cblx0XHQ8UmVjb3JkPi4uLjwvUmVjb3JkPlxuXHQ8L0Fubm90YXRpb24+XG48L0Fubm90YXRpb25zPmBcblx0fTtcblx0YWRkQW5ub3RhdGlvbkVycm9yTWVzc2FnZShhbm5vdGF0aW9uVGFyZ2V0ICsgXCIvXCIgKyBhbm5vdGF0aW9uc1Rlcm0sIG9FcnJvck1zZyk7XG5cdHJldHVybiB0YXJnZXRUeXBlO1xufVxuXG5mdW5jdGlvbiBwYXJzZVJlY29yZChcblx0cmVjb3JkRGVmaW5pdGlvbjogQW5ub3RhdGlvblJlY29yZCxcblx0Y3VycmVudEZRTjogc3RyaW5nLFxuXHRwYXJzZXJPdXRwdXQ6IFBhcnNlck91dHB1dCxcblx0Y3VycmVudFRhcmdldDogYW55LFxuXHRvYmplY3RNYXA6IGFueSxcblx0dG9SZXNvbHZlOiBSZXNvbHZlYWJsZVtdLFxuXHRhbm5vdGF0aW9uU291cmNlOiBzdHJpbmcsXG5cdHVucmVzb2x2ZWRBbm5vdGF0aW9uczogQW5ub3RhdGlvbkxpc3RbXSxcblx0YW5ub3RhdGlvblR5cGU6IHN0cmluZyxcblx0YW5ub3RhdGlvbnNUZXJtOiBzdHJpbmdcbikge1xuXHRsZXQgdGFyZ2V0VHlwZTtcblx0aWYgKCFyZWNvcmREZWZpbml0aW9uLnR5cGUgJiYgYW5ub3RhdGlvbnNUZXJtKSB7XG5cdFx0dGFyZ2V0VHlwZSA9IGluZmVyVHlwZUZyb21UZXJtKGFubm90YXRpb25zVGVybSwgcGFyc2VyT3V0cHV0LCBjdXJyZW50VGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZSk7XG5cdH0gZWxzZSB7XG5cdFx0dGFyZ2V0VHlwZSA9IHVuYWxpYXMocGFyc2VyT3V0cHV0LnJlZmVyZW5jZXMsIHJlY29yZERlZmluaXRpb24udHlwZSk7XG5cdH1cblx0Y29uc3QgYW5ub3RhdGlvblRlcm06IGFueSA9IHtcblx0XHQkVHlwZTogdGFyZ2V0VHlwZSxcblx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGN1cnJlbnRGUU5cblx0fTtcblx0Y29uc3QgYW5ub3RhdGlvbkNvbnRlbnQ6IGFueSA9IHt9O1xuXHRpZiAocmVjb3JkRGVmaW5pdGlvbi5hbm5vdGF0aW9ucyAmJiBBcnJheS5pc0FycmF5KHJlY29yZERlZmluaXRpb24uYW5ub3RhdGlvbnMpKSB7XG5cdFx0Y29uc3Qgc3ViQW5ub3RhdGlvbkxpc3QgPSB7XG5cdFx0XHR0YXJnZXQ6IGN1cnJlbnRGUU4sXG5cdFx0XHRhbm5vdGF0aW9uczogcmVjb3JkRGVmaW5pdGlvbi5hbm5vdGF0aW9ucyxcblx0XHRcdF9fc291cmNlOiBhbm5vdGF0aW9uU291cmNlXG5cdFx0fTtcblx0XHR1bnJlc29sdmVkQW5ub3RhdGlvbnMucHVzaChzdWJBbm5vdGF0aW9uTGlzdCk7XG5cdH1cblx0aWYgKHJlY29yZERlZmluaXRpb24ucHJvcGVydHlWYWx1ZXMpIHtcblx0XHRyZWNvcmREZWZpbml0aW9uLnByb3BlcnR5VmFsdWVzLmZvckVhY2goKHByb3BlcnR5VmFsdWU6IFByb3BlcnR5VmFsdWUpID0+IHtcblx0XHRcdGFubm90YXRpb25Db250ZW50W3Byb3BlcnR5VmFsdWUubmFtZV0gPSBwYXJzZVZhbHVlKFxuXHRcdFx0XHRwcm9wZXJ0eVZhbHVlLnZhbHVlLFxuXHRcdFx0XHRgJHtjdXJyZW50RlFOfS8ke3Byb3BlcnR5VmFsdWUubmFtZX1gLFxuXHRcdFx0XHRwYXJzZXJPdXRwdXQsXG5cdFx0XHRcdGN1cnJlbnRUYXJnZXQsXG5cdFx0XHRcdG9iamVjdE1hcCxcblx0XHRcdFx0dG9SZXNvbHZlLFxuXHRcdFx0XHRhbm5vdGF0aW9uU291cmNlLFxuXHRcdFx0XHR1bnJlc29sdmVkQW5ub3RhdGlvbnMsXG5cdFx0XHRcdGFubm90YXRpb25UeXBlLFxuXHRcdFx0XHRhbm5vdGF0aW9uc1Rlcm1cblx0XHRcdCk7XG5cdFx0XHRpZiAocHJvcGVydHlWYWx1ZS5hbm5vdGF0aW9ucyAmJiBBcnJheS5pc0FycmF5KHByb3BlcnR5VmFsdWUuYW5ub3RhdGlvbnMpKSB7XG5cdFx0XHRcdGNvbnN0IHN1YkFubm90YXRpb25MaXN0ID0ge1xuXHRcdFx0XHRcdHRhcmdldDogYCR7Y3VycmVudEZRTn0vJHtwcm9wZXJ0eVZhbHVlLm5hbWV9YCxcblx0XHRcdFx0XHRhbm5vdGF0aW9uczogcHJvcGVydHlWYWx1ZS5hbm5vdGF0aW9ucyxcblx0XHRcdFx0XHRfX3NvdXJjZTogYW5ub3RhdGlvblNvdXJjZVxuXHRcdFx0XHR9O1xuXHRcdFx0XHR1bnJlc29sdmVkQW5ub3RhdGlvbnMucHVzaChzdWJBbm5vdGF0aW9uTGlzdCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGFubm90YXRpb25Db250ZW50Lmhhc093blByb3BlcnR5KFwiQWN0aW9uXCIpICYmXG5cdFx0XHRcdChhbm5vdGF0aW9uVGVybS4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb25cIiB8fFxuXHRcdFx0XHRcdGFubm90YXRpb25UZXJtLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhBY3Rpb25cIilcblx0XHRcdCkge1xuXHRcdFx0XHRhbm5vdGF0aW9uQ29udGVudC5BY3Rpb25UYXJnZXQgPVxuXHRcdFx0XHRcdChjdXJyZW50VGFyZ2V0LmFjdGlvbnMgJiYgY3VycmVudFRhcmdldC5hY3Rpb25zW2Fubm90YXRpb25Db250ZW50LkFjdGlvbl0pIHx8XG5cdFx0XHRcdFx0b2JqZWN0TWFwW2Fubm90YXRpb25Db250ZW50LkFjdGlvbl07XG5cdFx0XHRcdGlmICghYW5ub3RhdGlvbkNvbnRlbnQuQWN0aW9uVGFyZ2V0KSB7XG5cdFx0XHRcdFx0Ly8gQWRkIHRvIGRpYWdub3N0aWNzIGRlYnVnZ2VyO1xuXHRcdFx0XHRcdEFOTk9UQVRJT05fRVJST1JTLnB1c2goe1xuXHRcdFx0XHRcdFx0bWVzc2FnZTpcblx0XHRcdFx0XHRcdFx0XCJVbmFibGUgdG8gcmVzb2x2ZSB0aGUgYWN0aW9uIFwiICtcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvbkNvbnRlbnQuQWN0aW9uICtcblx0XHRcdFx0XHRcdFx0XCIgZGVmaW5lZCBmb3IgXCIgK1xuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uVGVybS5mdWxseVF1YWxpZmllZE5hbWVcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBPYmplY3QuYXNzaWduKGFubm90YXRpb25UZXJtLCBhbm5vdGF0aW9uQ29udGVudCk7XG59XG5cbmV4cG9ydCB0eXBlIENvbGxlY3Rpb25UeXBlID1cblx0fCBcIlByb3BlcnR5UGF0aFwiXG5cdHwgXCJQYXRoXCJcblx0fCBcIklmXCJcblx0fCBcIkFwcGx5XCJcblx0fCBcIk51bGxcIlxuXHR8IFwiQW5kXCJcblx0fCBcIkVxXCJcblx0fCBcIk5lXCJcblx0fCBcIk5vdFwiXG5cdHwgXCJHdFwiXG5cdHwgXCJHZVwiXG5cdHwgXCJMdFwiXG5cdHwgXCJMZVwiXG5cdHwgXCJPclwiXG5cdHwgXCJBbm5vdGF0aW9uUGF0aFwiXG5cdHwgXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCJcblx0fCBcIlJlY29yZFwiXG5cdHwgXCJTdHJpbmdcIlxuXHR8IFwiRW1wdHlDb2xsZWN0aW9uXCI7XG5cbmZ1bmN0aW9uIGdldE9ySW5mZXJDb2xsZWN0aW9uVHlwZShjb2xsZWN0aW9uRGVmaW5pdGlvbjogYW55W10pOiBDb2xsZWN0aW9uVHlwZSB7XG5cdGxldCB0eXBlOiBDb2xsZWN0aW9uVHlwZSA9IChjb2xsZWN0aW9uRGVmaW5pdGlvbiBhcyBhbnkpLnR5cGU7XG5cdGlmICh0eXBlID09PSB1bmRlZmluZWQgJiYgY29sbGVjdGlvbkRlZmluaXRpb24ubGVuZ3RoID4gMCkge1xuXHRcdGNvbnN0IGZpcnN0Q29sSXRlbSA9IGNvbGxlY3Rpb25EZWZpbml0aW9uWzBdO1xuXHRcdGlmIChmaXJzdENvbEl0ZW0uaGFzT3duUHJvcGVydHkoXCJQcm9wZXJ0eVBhdGhcIikpIHtcblx0XHRcdHR5cGUgPSBcIlByb3BlcnR5UGF0aFwiO1xuXHRcdH0gZWxzZSBpZiAoZmlyc3RDb2xJdGVtLmhhc093blByb3BlcnR5KFwiUGF0aFwiKSkge1xuXHRcdFx0dHlwZSA9IFwiUGF0aFwiO1xuXHRcdH0gZWxzZSBpZiAoZmlyc3RDb2xJdGVtLmhhc093blByb3BlcnR5KFwiQW5ub3RhdGlvblBhdGhcIikpIHtcblx0XHRcdHR5cGUgPSBcIkFubm90YXRpb25QYXRoXCI7XG5cdFx0fSBlbHNlIGlmIChmaXJzdENvbEl0ZW0uaGFzT3duUHJvcGVydHkoXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIpKSB7XG5cdFx0XHR0eXBlID0gXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCI7XG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdHR5cGVvZiBmaXJzdENvbEl0ZW0gPT09IFwib2JqZWN0XCIgJiZcblx0XHRcdChmaXJzdENvbEl0ZW0uaGFzT3duUHJvcGVydHkoXCJ0eXBlXCIpIHx8IGZpcnN0Q29sSXRlbS5oYXNPd25Qcm9wZXJ0eShcInByb3BlcnR5VmFsdWVzXCIpKVxuXHRcdCkge1xuXHRcdFx0dHlwZSA9IFwiUmVjb3JkXCI7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgZmlyc3RDb2xJdGVtID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHR0eXBlID0gXCJTdHJpbmdcIjtcblx0XHR9XG5cdH0gZWxzZSBpZiAodHlwZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dHlwZSA9IFwiRW1wdHlDb2xsZWN0aW9uXCI7XG5cdH1cblx0cmV0dXJuIHR5cGU7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQ29sbGVjdGlvbihcblx0Y29sbGVjdGlvbkRlZmluaXRpb246IGFueVtdLFxuXHRwYXJlbnRGUU46IHN0cmluZyxcblx0cGFyc2VyT3V0cHV0OiBQYXJzZXJPdXRwdXQsXG5cdGN1cnJlbnRUYXJnZXQ6IGFueSxcblx0b2JqZWN0TWFwOiBhbnksXG5cdHRvUmVzb2x2ZTogUmVzb2x2ZWFibGVbXSxcblx0YW5ub3RhdGlvblNvdXJjZTogc3RyaW5nLFxuXHR1bnJlc29sdmVkQW5ub3RhdGlvbnM6IEFubm90YXRpb25MaXN0W10sXG5cdGFubm90YXRpb25UeXBlOiBzdHJpbmcsXG5cdGFubm90YXRpb25zVGVybTogc3RyaW5nXG4pIHtcblx0Y29uc3QgY29sbGVjdGlvbkRlZmluaXRpb25UeXBlID0gZ2V0T3JJbmZlckNvbGxlY3Rpb25UeXBlKGNvbGxlY3Rpb25EZWZpbml0aW9uKTtcblx0c3dpdGNoIChjb2xsZWN0aW9uRGVmaW5pdGlvblR5cGUpIHtcblx0XHRjYXNlIFwiUHJvcGVydHlQYXRoXCI6XG5cdFx0XHRyZXR1cm4gY29sbGVjdGlvbkRlZmluaXRpb24ubWFwKChwcm9wZXJ0eVBhdGgsIHByb3BlcnR5SWR4KSA9PiB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0dHlwZTogXCJQcm9wZXJ0eVBhdGhcIixcblx0XHRcdFx0XHR2YWx1ZTogcHJvcGVydHlQYXRoLlByb3BlcnR5UGF0aCxcblx0XHRcdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGAke3BhcmVudEZRTn0vJHtwcm9wZXJ0eUlkeH1gLFxuXHRcdFx0XHRcdCR0YXJnZXQ6IHJlc29sdmVUYXJnZXQoXG5cdFx0XHRcdFx0XHRvYmplY3RNYXAsXG5cdFx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LFxuXHRcdFx0XHRcdFx0cHJvcGVydHlQYXRoLlByb3BlcnR5UGF0aCxcblx0XHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdFx0XHRhbm5vdGF0aW9uVHlwZSxcblx0XHRcdFx0XHRcdGFubm90YXRpb25zVGVybVxuXHRcdFx0XHRcdClcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdGNhc2UgXCJQYXRoXCI6XG5cdFx0XHRyZXR1cm4gY29sbGVjdGlvbkRlZmluaXRpb24ubWFwKHBhdGhWYWx1ZSA9PiB7XG5cdFx0XHRcdGNvbnN0ICR0YXJnZXQgPSByZXNvbHZlVGFyZ2V0KFxuXHRcdFx0XHRcdG9iamVjdE1hcCxcblx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LFxuXHRcdFx0XHRcdHBhdGhWYWx1ZS5QYXRoLFxuXHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdFx0YW5ub3RhdGlvblR5cGUsXG5cdFx0XHRcdFx0YW5ub3RhdGlvbnNUZXJtXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IHBhdGggPSBuZXcgUGF0aChwYXRoVmFsdWUsICR0YXJnZXQsIGFubm90YXRpb25zVGVybSwgYW5ub3RhdGlvblR5cGUsIFwiXCIpO1xuXHRcdFx0XHR0b1Jlc29sdmUucHVzaCh7XG5cdFx0XHRcdFx0aW5saW5lOiBpc0Fubm90YXRpb25QYXRoKHBhdGhWYWx1ZS5QYXRoKSxcblx0XHRcdFx0XHR0b1Jlc29sdmU6IHBhdGhcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybiBwYXRoO1xuXHRcdFx0fSk7XG5cdFx0Y2FzZSBcIkFubm90YXRpb25QYXRoXCI6XG5cdFx0XHRyZXR1cm4gY29sbGVjdGlvbkRlZmluaXRpb24ubWFwKChhbm5vdGF0aW9uUGF0aCwgYW5ub3RhdGlvbklkeCkgPT4ge1xuXHRcdFx0XHRjb25zdCBhbm5vdGF0aW9uVGFyZ2V0ID0gcmVzb2x2ZVRhcmdldChcblx0XHRcdFx0XHRvYmplY3RNYXAsXG5cdFx0XHRcdFx0Y3VycmVudFRhcmdldCxcblx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aC5Bbm5vdGF0aW9uUGF0aCxcblx0XHRcdFx0XHR0cnVlLFxuXHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdGFubm90YXRpb25UeXBlLFxuXHRcdFx0XHRcdGFubm90YXRpb25zVGVybVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBhbm5vdGF0aW9uQ29sbGVjdGlvbkVsZW1lbnQgPSB7XG5cdFx0XHRcdFx0dHlwZTogXCJBbm5vdGF0aW9uUGF0aFwiLFxuXHRcdFx0XHRcdHZhbHVlOiBhbm5vdGF0aW9uUGF0aC5Bbm5vdGF0aW9uUGF0aCxcblx0XHRcdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGAke3BhcmVudEZRTn0vJHthbm5vdGF0aW9uSWR4fWAsXG5cdFx0XHRcdFx0JHRhcmdldDogYW5ub3RhdGlvblRhcmdldCxcblx0XHRcdFx0XHRhbm5vdGF0aW9uVHlwZTogYW5ub3RhdGlvblR5cGUsXG5cdFx0XHRcdFx0YW5ub3RhdGlvbnNUZXJtOiBhbm5vdGF0aW9uc1Rlcm0sXG5cdFx0XHRcdFx0dGVybTogXCJcIixcblx0XHRcdFx0XHRwYXRoOiBcIlwiXG5cdFx0XHRcdH07XG5cdFx0XHRcdHRvUmVzb2x2ZS5wdXNoKHtcblx0XHRcdFx0XHRpbmxpbmU6IGZhbHNlLFxuXHRcdFx0XHRcdHRvUmVzb2x2ZTogYW5ub3RhdGlvbkNvbGxlY3Rpb25FbGVtZW50XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gYW5ub3RhdGlvbkNvbGxlY3Rpb25FbGVtZW50O1xuXHRcdFx0fSk7XG5cdFx0Y2FzZSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIjpcblx0XHRcdHJldHVybiBjb2xsZWN0aW9uRGVmaW5pdGlvbi5tYXAoKG5hdlByb3BlcnR5UGF0aCwgbmF2UHJvcElkeCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdHR5cGU6IFwiTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiLFxuXHRcdFx0XHRcdHZhbHVlOiBuYXZQcm9wZXJ0eVBhdGguTmF2aWdhdGlvblByb3BlcnR5UGF0aCxcblx0XHRcdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGAke3BhcmVudEZRTn0vJHtuYXZQcm9wSWR4fWAsXG5cdFx0XHRcdFx0JHRhcmdldDogcmVzb2x2ZVRhcmdldChcblx0XHRcdFx0XHRcdG9iamVjdE1hcCxcblx0XHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQsXG5cdFx0XHRcdFx0XHRuYXZQcm9wZXJ0eVBhdGguTmF2aWdhdGlvblByb3BlcnR5UGF0aCxcblx0XHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdFx0XHRhbm5vdGF0aW9uVHlwZSxcblx0XHRcdFx0XHRcdGFubm90YXRpb25zVGVybVxuXHRcdFx0XHRcdClcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdGNhc2UgXCJSZWNvcmRcIjpcblx0XHRcdHJldHVybiBjb2xsZWN0aW9uRGVmaW5pdGlvbi5tYXAoKHJlY29yZERlZmluaXRpb24sIHJlY29yZElkeCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gcGFyc2VSZWNvcmQoXG5cdFx0XHRcdFx0cmVjb3JkRGVmaW5pdGlvbixcblx0XHRcdFx0XHRgJHtwYXJlbnRGUU59LyR7cmVjb3JkSWR4fWAsXG5cdFx0XHRcdFx0cGFyc2VyT3V0cHV0LFxuXHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQsXG5cdFx0XHRcdFx0b2JqZWN0TWFwLFxuXHRcdFx0XHRcdHRvUmVzb2x2ZSxcblx0XHRcdFx0XHRhbm5vdGF0aW9uU291cmNlLFxuXHRcdFx0XHRcdHVucmVzb2x2ZWRBbm5vdGF0aW9ucyxcblx0XHRcdFx0XHRhbm5vdGF0aW9uVHlwZSxcblx0XHRcdFx0XHRhbm5vdGF0aW9uc1Rlcm1cblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXHRcdGNhc2UgXCJBcHBseVwiOlxuXHRcdGNhc2UgXCJOdWxsXCI6XG5cdFx0Y2FzZSBcIklmXCI6XG5cdFx0Y2FzZSBcIkVxXCI6XG5cdFx0Y2FzZSBcIk5lXCI6XG5cdFx0Y2FzZSBcIkx0XCI6XG5cdFx0Y2FzZSBcIkd0XCI6XG5cdFx0Y2FzZSBcIkxlXCI6XG5cdFx0Y2FzZSBcIkdlXCI6XG5cdFx0Y2FzZSBcIk5vdFwiOlxuXHRcdGNhc2UgXCJBbmRcIjpcblx0XHRjYXNlIFwiT3JcIjpcblx0XHRcdHJldHVybiBjb2xsZWN0aW9uRGVmaW5pdGlvbi5tYXAoaWZWYWx1ZSA9PiB7XG5cdFx0XHRcdHJldHVybiBpZlZhbHVlO1xuXHRcdFx0fSk7XG5cdFx0Y2FzZSBcIlN0cmluZ1wiOlxuXHRcdFx0cmV0dXJuIGNvbGxlY3Rpb25EZWZpbml0aW9uLm1hcChzdHJpbmdWYWx1ZSA9PiB7XG5cdFx0XHRcdGlmICh0eXBlb2Ygc3RyaW5nVmFsdWUgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0XHRyZXR1cm4gc3RyaW5nVmFsdWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAoc3RyaW5nVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdHJldHVybiBzdHJpbmdWYWx1ZTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gc3RyaW5nVmFsdWUuU3RyaW5nO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0aWYgKGNvbGxlY3Rpb25EZWZpbml0aW9uLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRyZXR1cm4gW107XG5cdFx0XHR9XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBjYXNlXCIpO1xuXHR9XG59XG5cbnR5cGUgUmVzb2x2ZWFibGUgPSB7XG5cdGlubGluZTogYm9vbGVhbjtcblx0dG9SZXNvbHZlOiB7XG5cdFx0JHRhcmdldDogc3RyaW5nO1xuXHRcdHRhcmdldFN0cmluZz86IHN0cmluZztcblx0XHRhbm5vdGF0aW9uc1Rlcm06IHN0cmluZztcblx0XHRhbm5vdGF0aW9uVHlwZTogc3RyaW5nO1xuXHRcdHRlcm06IHN0cmluZztcblx0XHRwYXRoOiBzdHJpbmc7XG5cdH07XG59O1xuXG5mdW5jdGlvbiBjb252ZXJ0QW5ub3RhdGlvbihcblx0YW5ub3RhdGlvbjogQW5ub3RhdGlvbixcblx0cGFyc2VyT3V0cHV0OiBQYXJzZXJPdXRwdXQsXG5cdGN1cnJlbnRUYXJnZXQ6IGFueSxcblx0b2JqZWN0TWFwOiBhbnksXG5cdHRvUmVzb2x2ZTogUmVzb2x2ZWFibGVbXSxcblx0YW5ub3RhdGlvblNvdXJjZTogc3RyaW5nLFxuXHR1bnJlc29sdmVkQW5ub3RhdGlvbnM6IEFubm90YXRpb25MaXN0W11cbik6IGFueSB7XG5cdGlmIChhbm5vdGF0aW9uLnJlY29yZCkge1xuXHRcdGNvbnN0IGFubm90YXRpb25UeXBlID0gYW5ub3RhdGlvbi5yZWNvcmQudHlwZVxuXHRcdFx0PyB1bmFsaWFzKHBhcnNlck91dHB1dC5yZWZlcmVuY2VzLCBhbm5vdGF0aW9uLnJlY29yZC50eXBlKVxuXHRcdFx0OiBpbmZlclR5cGVGcm9tVGVybShhbm5vdGF0aW9uLnRlcm0sIHBhcnNlck91dHB1dCwgY3VycmVudFRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUpO1xuXHRcdGNvbnN0IGFubm90YXRpb25UZXJtOiBhbnkgPSB7XG5cdFx0XHQkVHlwZTogYW5ub3RhdGlvblR5cGUsXG5cdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IGFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0cXVhbGlmaWVyOiBhbm5vdGF0aW9uLnF1YWxpZmllclxuXHRcdH07XG5cdFx0Y29uc3QgYW5ub3RhdGlvbkNvbnRlbnQ6IGFueSA9IHt9O1xuXHRcdGFubm90YXRpb24ucmVjb3JkLnByb3BlcnR5VmFsdWVzLmZvckVhY2goKHByb3BlcnR5VmFsdWU6IFByb3BlcnR5VmFsdWUpID0+IHtcblx0XHRcdGFubm90YXRpb25Db250ZW50W3Byb3BlcnR5VmFsdWUubmFtZV0gPSBwYXJzZVZhbHVlKFxuXHRcdFx0XHRwcm9wZXJ0eVZhbHVlLnZhbHVlLFxuXHRcdFx0XHRgJHthbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZX0vJHtwcm9wZXJ0eVZhbHVlLm5hbWV9YCxcblx0XHRcdFx0cGFyc2VyT3V0cHV0LFxuXHRcdFx0XHRjdXJyZW50VGFyZ2V0LFxuXHRcdFx0XHRvYmplY3RNYXAsXG5cdFx0XHRcdHRvUmVzb2x2ZSxcblx0XHRcdFx0YW5ub3RhdGlvblNvdXJjZSxcblx0XHRcdFx0dW5yZXNvbHZlZEFubm90YXRpb25zLFxuXHRcdFx0XHRhbm5vdGF0aW9uVHlwZSxcblx0XHRcdFx0YW5ub3RhdGlvbi50ZXJtXG5cdFx0XHQpO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRhbm5vdGF0aW9uQ29udGVudC5oYXNPd25Qcm9wZXJ0eShcIkFjdGlvblwiKSAmJlxuXHRcdFx0XHQoIWFubm90YXRpb24ucmVjb3JkIHx8XG5cdFx0XHRcdFx0YW5ub3RhdGlvblRlcm0uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQWN0aW9uXCIgfHxcblx0XHRcdFx0XHRhbm5vdGF0aW9uVGVybS4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoQWN0aW9uXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0YW5ub3RhdGlvbkNvbnRlbnQuQWN0aW9uVGFyZ2V0ID1cblx0XHRcdFx0XHQoY3VycmVudFRhcmdldC5hY3Rpb25zICYmIGN1cnJlbnRUYXJnZXQuYWN0aW9uc1thbm5vdGF0aW9uQ29udGVudC5BY3Rpb25dKSB8fFxuXHRcdFx0XHRcdG9iamVjdE1hcFthbm5vdGF0aW9uQ29udGVudC5BY3Rpb25dO1xuXHRcdFx0XHRpZiAoIWFubm90YXRpb25Db250ZW50LkFjdGlvblRhcmdldCkge1xuXHRcdFx0XHRcdEFOTk9UQVRJT05fRVJST1JTLnB1c2goe1xuXHRcdFx0XHRcdFx0bWVzc2FnZTpcblx0XHRcdFx0XHRcdFx0XCJVbmFibGUgdG8gcmVzb2x2ZSB0aGUgYWN0aW9uIFwiICtcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvbkNvbnRlbnQuQWN0aW9uICtcblx0XHRcdFx0XHRcdFx0XCIgZGVmaW5lZCBmb3IgXCIgK1xuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdC8vIEFkZCB0byBkaWFnbm9zdGljc1xuXHRcdFx0XHRcdC8vIGRlYnVnZ2VyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIE9iamVjdC5hc3NpZ24oYW5ub3RhdGlvblRlcm0sIGFubm90YXRpb25Db250ZW50KTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uLmNvbGxlY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuXHRcdGlmIChhbm5vdGF0aW9uLnZhbHVlKSB7XG5cdFx0XHRyZXR1cm4gcGFyc2VWYWx1ZShcblx0XHRcdFx0YW5ub3RhdGlvbi52YWx1ZSxcblx0XHRcdFx0YW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRcdHBhcnNlck91dHB1dCxcblx0XHRcdFx0Y3VycmVudFRhcmdldCxcblx0XHRcdFx0b2JqZWN0TWFwLFxuXHRcdFx0XHR0b1Jlc29sdmUsXG5cdFx0XHRcdGFubm90YXRpb25Tb3VyY2UsXG5cdFx0XHRcdHVucmVzb2x2ZWRBbm5vdGF0aW9ucyxcblx0XHRcdFx0XCJcIixcblx0XHRcdFx0YW5ub3RhdGlvbi50ZXJtXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbi5jb2xsZWN0aW9uKSB7XG5cdFx0Y29uc3QgY29sbGVjdGlvbjogYW55ID0gcGFyc2VDb2xsZWN0aW9uKFxuXHRcdFx0YW5ub3RhdGlvbi5jb2xsZWN0aW9uLFxuXHRcdFx0YW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRwYXJzZXJPdXRwdXQsXG5cdFx0XHRjdXJyZW50VGFyZ2V0LFxuXHRcdFx0b2JqZWN0TWFwLFxuXHRcdFx0dG9SZXNvbHZlLFxuXHRcdFx0YW5ub3RhdGlvblNvdXJjZSxcblx0XHRcdHVucmVzb2x2ZWRBbm5vdGF0aW9ucyxcblx0XHRcdFwiXCIsXG5cdFx0XHRhbm5vdGF0aW9uLnRlcm1cblx0XHQpO1xuXHRcdGNvbGxlY3Rpb24uZnVsbHlRdWFsaWZpZWROYW1lID0gYW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWU7XG5cdFx0cmV0dXJuIGNvbGxlY3Rpb247XG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgY2FzZVwiKTtcblx0fVxufVxuXG5mdW5jdGlvbiBjcmVhdGVSZXNvbHZlUGF0aEZuKGVudGl0eVR5cGU6IEVudGl0eVR5cGUsIG9iamVjdE1hcDogUmVjb3JkPHN0cmluZywgYW55Pikge1xuXHRyZXR1cm4gZnVuY3Rpb24ocmVsYXRpdmVQYXRoOiBzdHJpbmcsIGluY2x1ZGVWaXNpdGVkT2JqZWN0czogYm9vbGVhbik6IGFueSB7XG5cdFx0Y29uc3QgYW5ub3RhdGlvblRlcm06IHN0cmluZyA9IFwiXCI7XG5cdFx0Y29uc3QgYW5ub3RhdGlvblR5cGU6IHN0cmluZyA9IFwiXCI7XG5cdFx0cmV0dXJuIHJlc29sdmVUYXJnZXQoXG5cdFx0XHRvYmplY3RNYXAsXG5cdFx0XHRlbnRpdHlUeXBlLFxuXHRcdFx0cmVsYXRpdmVQYXRoLFxuXHRcdFx0ZmFsc2UsXG5cdFx0XHRpbmNsdWRlVmlzaXRlZE9iamVjdHMsXG5cdFx0XHRhbm5vdGF0aW9uVHlwZSxcblx0XHRcdGFubm90YXRpb25UZXJtXG5cdFx0KTtcblx0fTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZU5hdmlnYXRpb25Qcm9wZXJ0aWVzKFxuXHRlbnRpdHlUeXBlczogUGFyc2VyRW50aXR5VHlwZVtdLFxuXHRhc3NvY2lhdGlvbnM6IEFzc29jaWF0aW9uW10sXG5cdG9iamVjdE1hcDogUmVjb3JkPHN0cmluZywgYW55PlxuKTogdm9pZCB7XG5cdGVudGl0eVR5cGVzLmZvckVhY2goZW50aXR5VHlwZSA9PiB7XG5cdFx0ZW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcyA9IGVudGl0eVR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMubWFwKG5hdlByb3AgPT4ge1xuXHRcdFx0Y29uc3Qgb3V0TmF2UHJvcDogUGFydGlhbDxOYXZpZ2F0aW9uUHJvcGVydHk+ID0ge1xuXHRcdFx0XHRfdHlwZTogXCJOYXZpZ2F0aW9uUHJvcGVydHlcIixcblx0XHRcdFx0bmFtZTogbmF2UHJvcC5uYW1lLFxuXHRcdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IG5hdlByb3AuZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHRwYXJ0bmVyOiAobmF2UHJvcCBhcyBhbnkpLmhhc093blByb3BlcnR5KFwicGFydG5lclwiKSA/IChuYXZQcm9wIGFzIGFueSkucGFydG5lciA6IHVuZGVmaW5lZCxcblx0XHRcdFx0Ly8gdGFyZ2V0VHlwZU5hbWU6IEZ1bGx5UXVhbGlmaWVkTmFtZTtcblx0XHRcdFx0Ly8gdGFyZ2V0VHlwZTogRW50aXR5VHlwZTtcblx0XHRcdFx0aXNDb2xsZWN0aW9uOiAobmF2UHJvcCBhcyBhbnkpLmhhc093blByb3BlcnR5KFwiaXNDb2xsZWN0aW9uXCIpID8gKG5hdlByb3AgYXMgYW55KS5pc0NvbGxlY3Rpb24gOiBmYWxzZSxcblx0XHRcdFx0Y29udGFpbnNUYXJnZXQ6IChuYXZQcm9wIGFzIGFueSkuaGFzT3duUHJvcGVydHkoXCJjb250YWluc1RhcmdldFwiKVxuXHRcdFx0XHRcdD8gKG5hdlByb3AgYXMgYW55KS5jb250YWluc1RhcmdldFxuXHRcdFx0XHRcdDogZmFsc2UsXG5cdFx0XHRcdHJlZmVyZW50aWFsQ29uc3RyYWludDogKG5hdlByb3AgYXMgYW55KS5yZWZlcmVudGlhbENvbnN0cmFpbnRcblx0XHRcdFx0XHQ/IChuYXZQcm9wIGFzIGFueSkucmVmZXJlbnRpYWxDb25zdHJhaW50XG5cdFx0XHRcdFx0OiBbXSxcblx0XHRcdFx0YW5ub3RhdGlvbnM6IHt9XG5cdFx0XHR9O1xuXHRcdFx0aWYgKChuYXZQcm9wIGFzIEdlbmVyaWNOYXZpZ2F0aW9uUHJvcGVydHkpLnRhcmdldFR5cGVOYW1lKSB7XG5cdFx0XHRcdG91dE5hdlByb3AudGFyZ2V0VHlwZSA9IG9iamVjdE1hcFsobmF2UHJvcCBhcyBWNE5hdmlnYXRpb25Qcm9wZXJ0eSkudGFyZ2V0VHlwZU5hbWVdO1xuXHRcdFx0fSBlbHNlIGlmICgobmF2UHJvcCBhcyBWMk5hdmlnYXRpb25Qcm9wZXJ0eSkucmVsYXRpb25zaGlwKSB7XG5cdFx0XHRcdGNvbnN0IHRhcmdldEFzc29jaWF0aW9uID0gYXNzb2NpYXRpb25zLmZpbmQoXG5cdFx0XHRcdFx0YXNzb2NpYXRpb24gPT4gYXNzb2NpYXRpb24uZnVsbHlRdWFsaWZpZWROYW1lID09PSAobmF2UHJvcCBhcyBWMk5hdmlnYXRpb25Qcm9wZXJ0eSkucmVsYXRpb25zaGlwXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmICh0YXJnZXRBc3NvY2lhdGlvbikge1xuXHRcdFx0XHRcdGNvbnN0IGFzc29jaWF0aW9uRW5kID0gdGFyZ2V0QXNzb2NpYXRpb24uYXNzb2NpYXRpb25FbmQuZmluZChcblx0XHRcdFx0XHRcdGVuZCA9PiBlbmQucm9sZSA9PT0gKG5hdlByb3AgYXMgVjJOYXZpZ2F0aW9uUHJvcGVydHkpLnRvUm9sZVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKGFzc29jaWF0aW9uRW5kKSB7XG5cdFx0XHRcdFx0XHRvdXROYXZQcm9wLnRhcmdldFR5cGUgPSBvYmplY3RNYXBbYXNzb2NpYXRpb25FbmQudHlwZV07XG5cdFx0XHRcdFx0XHRvdXROYXZQcm9wLmlzQ29sbGVjdGlvbiA9IGFzc29jaWF0aW9uRW5kLm11bHRpcGxpY2l0eSA9PT0gXCIqXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAob3V0TmF2UHJvcC50YXJnZXRUeXBlKSB7XG5cdFx0XHRcdG91dE5hdlByb3AudGFyZ2V0VHlwZU5hbWUgPSBvdXROYXZQcm9wLnRhcmdldFR5cGUuZnVsbHlRdWFsaWZpZWROYW1lO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgb3V0TmF2UHJvcFJlcSA9IG91dE5hdlByb3AgYXMgTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdFx0b2JqZWN0TWFwW291dE5hdlByb3BSZXEuZnVsbHlRdWFsaWZpZWROYW1lXSA9IG91dE5hdlByb3BSZXE7XG5cdFx0XHRyZXR1cm4gb3V0TmF2UHJvcFJlcTtcblx0XHR9KTtcblx0XHQoZW50aXR5VHlwZSBhcyBFbnRpdHlUeXBlKS5yZXNvbHZlUGF0aCA9IGNyZWF0ZVJlc29sdmVQYXRoRm4oZW50aXR5VHlwZSBhcyBFbnRpdHlUeXBlLCBvYmplY3RNYXApO1xuXHR9KTtcbn1cblxuZnVuY3Rpb24gbGlua0FjdGlvbnNUb0VudGl0eVR5cGUobmFtZXNwYWNlOiBzdHJpbmcsIGFjdGlvbnM6IEFjdGlvbltdLCBvYmplY3RNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkIHtcblx0YWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XG5cdFx0aWYgKCFhY3Rpb24uYW5ub3RhdGlvbnMpIHtcblx0XHRcdGFjdGlvbi5hbm5vdGF0aW9ucyA9IHt9O1xuXHRcdH1cblx0XHRpZiAoYWN0aW9uLmlzQm91bmQpIHtcblx0XHRcdGNvbnN0IHNvdXJjZUVudGl0eVR5cGUgPSBvYmplY3RNYXBbYWN0aW9uLnNvdXJjZVR5cGVdO1xuXHRcdFx0YWN0aW9uLnNvdXJjZUVudGl0eVR5cGUgPSBzb3VyY2VFbnRpdHlUeXBlO1xuXHRcdFx0aWYgKHNvdXJjZUVudGl0eVR5cGUpIHtcblx0XHRcdFx0aWYgKCFzb3VyY2VFbnRpdHlUeXBlLmFjdGlvbnMpIHtcblx0XHRcdFx0XHRzb3VyY2VFbnRpdHlUeXBlLmFjdGlvbnMgPSB7fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzb3VyY2VFbnRpdHlUeXBlLmFjdGlvbnNbYWN0aW9uLm5hbWVdID0gYWN0aW9uO1xuXHRcdFx0XHRzb3VyY2VFbnRpdHlUeXBlLmFjdGlvbnNbYCR7bmFtZXNwYWNlfS4ke2FjdGlvbi5uYW1lfWBdID0gYWN0aW9uO1xuXHRcdFx0fVxuXHRcdFx0YWN0aW9uLnJldHVybkVudGl0eVR5cGUgPSBvYmplY3RNYXBbYWN0aW9uLnJldHVyblR5cGVdO1xuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIGxpbmtFbnRpdHlUeXBlVG9FbnRpdHlTZXQoXG5cdGVudGl0eVNldHM6IEVudGl0eVNldFtdLFxuXHRvYmplY3RNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4sXG5cdHJlZmVyZW5jZXM6IFJlZmVyZW5jZXNXaXRoTWFwXG4pOiB2b2lkIHtcblx0ZW50aXR5U2V0cy5mb3JFYWNoKGVudGl0eVNldCA9PiB7XG5cdFx0ZW50aXR5U2V0LmVudGl0eVR5cGUgPSBvYmplY3RNYXBbZW50aXR5U2V0LmVudGl0eVR5cGVOYW1lXTtcblx0XHRpZiAoIWVudGl0eVNldC5lbnRpdHlUeXBlKSB7XG5cdFx0XHRlbnRpdHlTZXQuZW50aXR5VHlwZSA9IG9iamVjdE1hcFt1bmFsaWFzKHJlZmVyZW5jZXMsIGVudGl0eVNldC5lbnRpdHlUeXBlTmFtZSkgYXMgc3RyaW5nXTtcblx0XHR9XG5cdFx0aWYgKCFlbnRpdHlTZXQuYW5ub3RhdGlvbnMpIHtcblx0XHRcdGVudGl0eVNldC5hbm5vdGF0aW9ucyA9IHt9O1xuXHRcdH1cblx0XHRpZiAoIWVudGl0eVNldC5lbnRpdHlUeXBlLmFubm90YXRpb25zKSB7XG5cdFx0XHRlbnRpdHlTZXQuZW50aXR5VHlwZS5hbm5vdGF0aW9ucyA9IHt9O1xuXHRcdH1cblx0XHRlbnRpdHlTZXQuZW50aXR5VHlwZS5rZXlzLmZvckVhY2goKGtleVByb3A6IFByb3BlcnR5KSA9PiB7XG5cdFx0XHRrZXlQcm9wLmlzS2V5ID0gdHJ1ZTtcblx0XHR9KTtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIGxpbmtFbnRpdHlUeXBlVG9TaW5nbGV0b24oXG5cdHNpbmdsZXRvbnM6IFNpbmdsZXRvbltdID0gW10sXG5cdG9iamVjdE1hcDogUmVjb3JkPHN0cmluZywgYW55Pixcblx0cmVmZXJlbmNlczogUmVmZXJlbmNlc1dpdGhNYXBcbik6IHZvaWQge1xuXHRzaW5nbGV0b25zLmZvckVhY2goc2luZ2xldG9uID0+IHtcblx0XHRzaW5nbGV0b24udHlwZSA9IG9iamVjdE1hcFtzaW5nbGV0b24udHlwZU5hbWVdO1xuXHRcdGlmICghc2luZ2xldG9uLnR5cGUpIHtcblx0XHRcdHNpbmdsZXRvbi50eXBlID0gb2JqZWN0TWFwW3VuYWxpYXMocmVmZXJlbmNlcywgc2luZ2xldG9uLnR5cGVOYW1lKSBhcyBzdHJpbmddO1xuXHRcdH1cblx0XHRpZiAoIXNpbmdsZXRvbi5hbm5vdGF0aW9ucykge1xuXHRcdFx0c2luZ2xldG9uLmFubm90YXRpb25zID0ge307XG5cdFx0fVxuXHRcdGlmICghc2luZ2xldG9uLnR5cGUuYW5ub3RhdGlvbnMpIHtcblx0XHRcdHNpbmdsZXRvbi50eXBlLmFubm90YXRpb25zID0ge307XG5cdFx0fVxuXHRcdHNpbmdsZXRvbi50eXBlLmtleXMuZm9yRWFjaCgoa2V5UHJvcDogUHJvcGVydHkpID0+IHtcblx0XHRcdGtleVByb3AuaXNLZXkgPSB0cnVlO1xuXHRcdH0pO1xuXHRcdHNpbmdsZXRvbi5lbnRpdHlUeXBlID0gc2luZ2xldG9uLnR5cGU7XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBsaW5rUHJvcGVydGllc1RvQ29tcGxleFR5cGVzKGVudGl0eVR5cGVzOiBFbnRpdHlUeXBlW10sIG9iamVjdE1hcDogUmVjb3JkPHN0cmluZywgYW55Pikge1xuXHRmdW5jdGlvbiBsaW5rKHByb3BlcnR5OiBQcm9wZXJ0eSkge1xuXHRcdGlmICghcHJvcGVydHkuYW5ub3RhdGlvbnMpIHtcblx0XHRcdHByb3BlcnR5LmFubm90YXRpb25zID0ge307XG5cdFx0fVxuXHRcdGlmIChwcm9wZXJ0eS50eXBlLmluZGV4T2YoXCJFZG1cIikgPT09IC0xKSB7XG5cdFx0XHRsZXQgY29tcGxleFR5cGU6IENvbXBsZXhUeXBlO1xuXHRcdFx0aWYgKHByb3BlcnR5LnR5cGUuc3RhcnRzV2l0aChcIkNvbGxlY3Rpb25cIikpIHtcblx0XHRcdFx0Y29uc3QgY29tcGxleFR5cGVOYW1lID0gcHJvcGVydHkudHlwZS5zdWJzdHIoMTEsIHByb3BlcnR5LnR5cGUubGVuZ3RoIC0gMTIpO1xuXHRcdFx0XHRjb21wbGV4VHlwZSA9IG9iamVjdE1hcFtjb21wbGV4VHlwZU5hbWVdIGFzIENvbXBsZXhUeXBlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29tcGxleFR5cGUgPSBvYmplY3RNYXBbcHJvcGVydHkudHlwZV0gYXMgQ29tcGxleFR5cGU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY29tcGxleFR5cGUpIHtcblx0XHRcdFx0cHJvcGVydHkudGFyZ2V0VHlwZSA9IGNvbXBsZXhUeXBlO1xuXHRcdFx0XHRpZiAoY29tcGxleFR5cGUucHJvcGVydGllcykge1xuXHRcdFx0XHRcdGNvbXBsZXhUeXBlLnByb3BlcnRpZXMuZm9yRWFjaChsaW5rKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGVudGl0eVR5cGVzLmZvckVhY2goZW50aXR5VHlwZSA9PiB7XG5cdFx0ZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLmZvckVhY2gobGluayk7XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlQ29tcGxleFR5cGVzKFxuXHRjb21wbGV4VHlwZXM6IFBhcnNlckNvbXBsZXhUeXBlW10sXG5cdGFzc29jaWF0aW9uczogQXNzb2NpYXRpb25bXSxcblx0b2JqZWN0TWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4pIHtcblx0Y29tcGxleFR5cGVzLmZvckVhY2goY29tcGxleFR5cGUgPT4ge1xuXHRcdChjb21wbGV4VHlwZSBhcyBDb21wbGV4VHlwZSkuYW5ub3RhdGlvbnMgPSB7fTtcblx0XHRjb21wbGV4VHlwZS5wcm9wZXJ0aWVzLmZvckVhY2gocHJvcGVydHkgPT4ge1xuXHRcdFx0aWYgKCEocHJvcGVydHkgYXMgUHJvcGVydHkpLmFubm90YXRpb25zKSB7XG5cdFx0XHRcdChwcm9wZXJ0eSBhcyBQcm9wZXJ0eSkuYW5ub3RhdGlvbnMgPSB7fTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRjb21wbGV4VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcyA9IGNvbXBsZXhUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLm1hcChuYXZQcm9wID0+IHtcblx0XHRcdGlmICghKG5hdlByb3AgYXMgTmF2aWdhdGlvblByb3BlcnR5KS5hbm5vdGF0aW9ucykge1xuXHRcdFx0XHQobmF2UHJvcCBhcyBOYXZpZ2F0aW9uUHJvcGVydHkpLmFubm90YXRpb25zID0ge307XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBvdXROYXZQcm9wOiBQYXJ0aWFsPE5hdmlnYXRpb25Qcm9wZXJ0eT4gPSB7XG5cdFx0XHRcdF90eXBlOiBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiLFxuXHRcdFx0XHRuYW1lOiBuYXZQcm9wLm5hbWUsXG5cdFx0XHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogbmF2UHJvcC5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRcdHBhcnRuZXI6IChuYXZQcm9wIGFzIGFueSkuaGFzT3duUHJvcGVydHkoXCJwYXJ0bmVyXCIpID8gKG5hdlByb3AgYXMgYW55KS5wYXJ0bmVyIDogdW5kZWZpbmVkLFxuXHRcdFx0XHQvLyB0YXJnZXRUeXBlTmFtZTogRnVsbHlRdWFsaWZpZWROYW1lO1xuXHRcdFx0XHQvLyB0YXJnZXRUeXBlOiBFbnRpdHlUeXBlO1xuXHRcdFx0XHRpc0NvbGxlY3Rpb246IChuYXZQcm9wIGFzIGFueSkuaGFzT3duUHJvcGVydHkoXCJpc0NvbGxlY3Rpb25cIikgPyAobmF2UHJvcCBhcyBhbnkpLmlzQ29sbGVjdGlvbiA6IGZhbHNlLFxuXHRcdFx0XHRjb250YWluc1RhcmdldDogKG5hdlByb3AgYXMgYW55KS5oYXNPd25Qcm9wZXJ0eShcImNvbnRhaW5zVGFyZ2V0XCIpXG5cdFx0XHRcdFx0PyAobmF2UHJvcCBhcyBhbnkpLmNvbnRhaW5zVGFyZ2V0XG5cdFx0XHRcdFx0OiBmYWxzZSxcblx0XHRcdFx0cmVmZXJlbnRpYWxDb25zdHJhaW50OiAobmF2UHJvcCBhcyBhbnkpLnJlZmVyZW50aWFsQ29uc3RyYWludFxuXHRcdFx0XHRcdD8gKG5hdlByb3AgYXMgYW55KS5yZWZlcmVudGlhbENvbnN0cmFpbnRcblx0XHRcdFx0XHQ6IFtdXG5cdFx0XHR9O1xuXHRcdFx0aWYgKChuYXZQcm9wIGFzIEdlbmVyaWNOYXZpZ2F0aW9uUHJvcGVydHkpLnRhcmdldFR5cGVOYW1lKSB7XG5cdFx0XHRcdG91dE5hdlByb3AudGFyZ2V0VHlwZSA9IG9iamVjdE1hcFsobmF2UHJvcCBhcyBWNE5hdmlnYXRpb25Qcm9wZXJ0eSkudGFyZ2V0VHlwZU5hbWVdO1xuXHRcdFx0fSBlbHNlIGlmICgobmF2UHJvcCBhcyBWMk5hdmlnYXRpb25Qcm9wZXJ0eSkucmVsYXRpb25zaGlwKSB7XG5cdFx0XHRcdGNvbnN0IHRhcmdldEFzc29jaWF0aW9uID0gYXNzb2NpYXRpb25zLmZpbmQoXG5cdFx0XHRcdFx0YXNzb2NpYXRpb24gPT4gYXNzb2NpYXRpb24uZnVsbHlRdWFsaWZpZWROYW1lID09PSAobmF2UHJvcCBhcyBWMk5hdmlnYXRpb25Qcm9wZXJ0eSkucmVsYXRpb25zaGlwXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmICh0YXJnZXRBc3NvY2lhdGlvbikge1xuXHRcdFx0XHRcdGNvbnN0IGFzc29jaWF0aW9uRW5kID0gdGFyZ2V0QXNzb2NpYXRpb24uYXNzb2NpYXRpb25FbmQuZmluZChcblx0XHRcdFx0XHRcdGVuZCA9PiBlbmQucm9sZSA9PT0gKG5hdlByb3AgYXMgVjJOYXZpZ2F0aW9uUHJvcGVydHkpLnRvUm9sZVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKGFzc29jaWF0aW9uRW5kKSB7XG5cdFx0XHRcdFx0XHRvdXROYXZQcm9wLnRhcmdldFR5cGUgPSBvYmplY3RNYXBbYXNzb2NpYXRpb25FbmQudHlwZV07XG5cdFx0XHRcdFx0XHRvdXROYXZQcm9wLmlzQ29sbGVjdGlvbiA9IGFzc29jaWF0aW9uRW5kLm11bHRpcGxpY2l0eSA9PT0gXCIqXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAob3V0TmF2UHJvcC50YXJnZXRUeXBlKSB7XG5cdFx0XHRcdG91dE5hdlByb3AudGFyZ2V0VHlwZU5hbWUgPSBvdXROYXZQcm9wLnRhcmdldFR5cGUuZnVsbHlRdWFsaWZpZWROYW1lO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgb3V0TmF2UHJvcFJlcSA9IG91dE5hdlByb3AgYXMgTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdFx0b2JqZWN0TWFwW291dE5hdlByb3BSZXEuZnVsbHlRdWFsaWZpZWROYW1lXSA9IG91dE5hdlByb3BSZXE7XG5cdFx0XHRyZXR1cm4gb3V0TmF2UHJvcFJlcTtcblx0XHR9KTtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIHNwbGl0VGVybShyZWZlcmVuY2VzOiBSZWZlcmVuY2VzV2l0aE1hcCwgdGVybVZhbHVlOiBzdHJpbmcpIHtcblx0Y29uc3QgYWxpYXNlZFRlcm0gPSBhbGlhcyhyZWZlcmVuY2VzLCB0ZXJtVmFsdWUpO1xuXHRjb25zdCBsYXN0RG90ID0gYWxpYXNlZFRlcm0ubGFzdEluZGV4T2YoXCIuXCIpO1xuXHRsZXQgdGVybUFsaWFzID0gYWxpYXNlZFRlcm0uc3Vic3RyKDAsIGxhc3REb3QpO1xuXHRsZXQgdGVybSA9IGFsaWFzZWRUZXJtLnN1YnN0cihsYXN0RG90ICsgMSk7XG5cdHJldHVybiBbdGVybUFsaWFzLCB0ZXJtXTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgc3BlY2lmaWMgcGF0aFxuICogQHBhcmFtIHNQYXRoXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUdsb2JhbFJlc29sdmUoY29udmVydGVkT3V0cHV0OiBDb252ZXJ0ZXJPdXRwdXQsIG9iamVjdE1hcDogUmVjb3JkPHN0cmluZywgYW55Pikge1xuXHRyZXR1cm4gZnVuY3Rpb24gcmVzb2x2ZVBhdGg8VCBleHRlbmRzIFNlcnZpY2VPYmplY3RBbmRBbm5vdGF0aW9uPihzUGF0aDogc3RyaW5nKTogUmVzb2x1dGlvblRhcmdldDxUPiB7XG5cdFx0Y29uc3QgYVBhdGhTcGxpdCA9IHNQYXRoLnNwbGl0KFwiL1wiKTtcblx0XHRpZiAoYVBhdGhTcGxpdC5zaGlmdCgpICE9PSBcIlwiKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZGVhbCB3aXRoIHJlbGF0aXZlIHBhdGhcIik7XG5cdFx0fVxuXHRcdGNvbnN0IGVudGl0eVNldE5hbWUgPSBhUGF0aFNwbGl0LnNoaWZ0KCk7XG5cdFx0Y29uc3QgZW50aXR5U2V0ID0gY29udmVydGVkT3V0cHV0LmVudGl0eVNldHMuZmluZChldCA9PiBldC5uYW1lID09PSBlbnRpdHlTZXROYW1lKTtcblx0XHRpZiAoIWVudGl0eVNldCkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dGFyZ2V0OiBjb252ZXJ0ZWRPdXRwdXQuZW50aXR5Q29udGFpbmVyLFxuXHRcdFx0XHRvYmplY3RQYXRoOiBbY29udmVydGVkT3V0cHV0LmVudGl0eUNvbnRhaW5lcl1cblx0XHRcdH0gYXMgUmVzb2x1dGlvblRhcmdldDxUPjtcblx0XHR9XG5cdFx0aWYgKGFQYXRoU3BsaXQubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR0YXJnZXQ6IGVudGl0eVNldCxcblx0XHRcdFx0b2JqZWN0UGF0aDogW2NvbnZlcnRlZE91dHB1dC5lbnRpdHlDb250YWluZXIsIGVudGl0eVNldF1cblx0XHRcdH0gYXMgUmVzb2x1dGlvblRhcmdldDxUPjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgdGFyZ2V0UmVzb2x1dGlvbjogYW55ID0gcmVzb2x2ZVRhcmdldChvYmplY3RNYXAsIGVudGl0eVNldCwgXCIvXCIgKyBhUGF0aFNwbGl0LmpvaW4oXCIvXCIpLCBmYWxzZSwgdHJ1ZSk7XG5cdFx0XHRpZiAodGFyZ2V0UmVzb2x1dGlvbi50YXJnZXQpIHtcblx0XHRcdFx0dGFyZ2V0UmVzb2x1dGlvbi52aXNpdGVkT2JqZWN0cy5wdXNoKHRhcmdldFJlc29sdXRpb24udGFyZ2V0KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHRhcmdldDogdGFyZ2V0UmVzb2x1dGlvbi50YXJnZXQsXG5cdFx0XHRcdG9iamVjdFBhdGg6IHRhcmdldFJlc29sdXRpb24udmlzaXRlZE9iamVjdHNcblx0XHRcdH07XG5cdFx0fVxuXHR9O1xufVxuXG5sZXQgQU5OT1RBVElPTl9FUlJPUlM6IHsgbWVzc2FnZTogc3RyaW5nIH1bXSA9IFtdO1xubGV0IEFMTF9BTk5PVEFUSU9OX0VSUk9SUzogYW55ID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VHlwZXMocGFyc2VyT3V0cHV0OiBQYXJzZXJPdXRwdXQpOiBDb252ZXJ0ZXJPdXRwdXQge1xuXHRBTk5PVEFUSU9OX0VSUk9SUyA9IFtdO1xuXHRjb25zdCBvYmplY3RNYXAgPSBidWlsZE9iamVjdE1hcChwYXJzZXJPdXRwdXQpO1xuXHRyZXNvbHZlTmF2aWdhdGlvblByb3BlcnRpZXMoXG5cdFx0cGFyc2VyT3V0cHV0LnNjaGVtYS5lbnRpdHlUeXBlcyBhcyBFbnRpdHlUeXBlW10sXG5cdFx0cGFyc2VyT3V0cHV0LnNjaGVtYS5hc3NvY2lhdGlvbnMsXG5cdFx0b2JqZWN0TWFwXG5cdCk7XG5cdGlmICghKHBhcnNlck91dHB1dC5zY2hlbWEuZW50aXR5Q29udGFpbmVyIGFzIEVudGl0eUNvbnRhaW5lcikuYW5ub3RhdGlvbnMpIHtcblx0XHQocGFyc2VyT3V0cHV0LnNjaGVtYS5lbnRpdHlDb250YWluZXIgYXMgRW50aXR5Q29udGFpbmVyKS5hbm5vdGF0aW9ucyA9IHt9O1xuXHR9XG5cdGxpbmtBY3Rpb25zVG9FbnRpdHlUeXBlKHBhcnNlck91dHB1dC5zY2hlbWEubmFtZXNwYWNlLCBwYXJzZXJPdXRwdXQuc2NoZW1hLmFjdGlvbnMgYXMgQWN0aW9uW10sIG9iamVjdE1hcCk7XG5cdGxpbmtFbnRpdHlUeXBlVG9FbnRpdHlTZXQocGFyc2VyT3V0cHV0LnNjaGVtYS5lbnRpdHlTZXRzIGFzIEVudGl0eVNldFtdLCBvYmplY3RNYXAsIHBhcnNlck91dHB1dC5yZWZlcmVuY2VzKTtcblx0bGlua0VudGl0eVR5cGVUb1NpbmdsZXRvbihwYXJzZXJPdXRwdXQuc2NoZW1hLnNpbmdsZXRvbnMgYXMgU2luZ2xldG9uW10sIG9iamVjdE1hcCwgcGFyc2VyT3V0cHV0LnJlZmVyZW5jZXMpO1xuXHRsaW5rUHJvcGVydGllc1RvQ29tcGxleFR5cGVzKHBhcnNlck91dHB1dC5zY2hlbWEuZW50aXR5VHlwZXMgYXMgRW50aXR5VHlwZVtdLCBvYmplY3RNYXApO1xuXHRwcmVwYXJlQ29tcGxleFR5cGVzKHBhcnNlck91dHB1dC5zY2hlbWEuY29tcGxleFR5cGVzIGFzIENvbXBsZXhUeXBlW10sIHBhcnNlck91dHB1dC5zY2hlbWEuYXNzb2NpYXRpb25zLCBvYmplY3RNYXApO1xuXHRjb25zdCB0b1Jlc29sdmU6IFJlc29sdmVhYmxlW10gPSBbXTtcblx0Y29uc3QgdW5yZXNvbHZlZEFubm90YXRpb25zOiBBbm5vdGF0aW9uTGlzdFtdID0gW107XG5cblx0T2JqZWN0LmtleXMocGFyc2VyT3V0cHV0LnNjaGVtYS5hbm5vdGF0aW9ucykuZm9yRWFjaChhbm5vdGF0aW9uU291cmNlID0+IHtcblx0XHRwYXJzZXJPdXRwdXQuc2NoZW1hLmFubm90YXRpb25zW2Fubm90YXRpb25Tb3VyY2VdLmZvckVhY2goYW5ub3RhdGlvbkxpc3QgPT4ge1xuXHRcdFx0bGV0IGN1cnJlbnRUYXJnZXROYW1lID0gdW5hbGlhcyhwYXJzZXJPdXRwdXQucmVmZXJlbmNlcywgYW5ub3RhdGlvbkxpc3QudGFyZ2V0KSBhcyBzdHJpbmc7XG5cdFx0XHRjb25zdCBvYmplY3RNYXBFbGVtZW50ID0gb2JqZWN0TWFwW2N1cnJlbnRUYXJnZXROYW1lXTtcblx0XHRcdGlmICghb2JqZWN0TWFwRWxlbWVudCkge1xuXHRcdFx0XHRpZiAoY3VycmVudFRhcmdldE5hbWUgJiYgY3VycmVudFRhcmdldE5hbWUuaW5kZXhPZihcIkBcIikgIT09IC0xKSB7XG5cdFx0XHRcdFx0KGFubm90YXRpb25MaXN0IGFzIGFueSkuX19zb3VyY2UgPSBhbm5vdGF0aW9uU291cmNlO1xuXHRcdFx0XHRcdHVucmVzb2x2ZWRBbm5vdGF0aW9ucy5wdXNoKGFubm90YXRpb25MaXN0KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2Ygb2JqZWN0TWFwRWxlbWVudCA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0XHRsZXQgYWxsVGFyZ2V0cyA9IFtvYmplY3RNYXBFbGVtZW50XTtcblx0XHRcdFx0bGV0IGJPdmVycmlkZUV4aXN0aW5nID0gdHJ1ZTtcblx0XHRcdFx0aWYgKG9iamVjdE1hcEVsZW1lbnQuX3R5cGUgPT09IFwiVW5ib3VuZEdlbmVyaWNBY3Rpb25cIikge1xuXHRcdFx0XHRcdGFsbFRhcmdldHMgPSBvYmplY3RNYXBFbGVtZW50LmFjdGlvbnM7XG5cdFx0XHRcdFx0Yk92ZXJyaWRlRXhpc3RpbmcgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhbGxUYXJnZXRzLmZvckVhY2goY3VycmVudFRhcmdldCA9PiB7XG5cdFx0XHRcdFx0aWYgKGN1cnJlbnRUYXJnZXROYW1lICE9PSBjdXJyZW50VGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZSkge1xuXHRcdFx0XHRcdFx0Y3VycmVudFRhcmdldE5hbWUgPSBjdXJyZW50VGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCFjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zKSB7XG5cdFx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zID0ge307XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGFubm90YXRpb25MaXN0LmFubm90YXRpb25zLmZvckVhY2goYW5ub3RhdGlvbiA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBbdm9jQWxpYXMsIHZvY1Rlcm1dID0gc3BsaXRUZXJtKGRlZmF1bHRSZWZlcmVuY2VzLCBhbm5vdGF0aW9uLnRlcm0pO1xuXHRcdFx0XHRcdFx0aWYgKCFjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXSkge1xuXHRcdFx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXSA9IHt9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKCFjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zLl9hbm5vdGF0aW9ucykge1xuXHRcdFx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zLl9hbm5vdGF0aW9ucyA9IHt9O1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRjb25zdCB2b2NUZXJtV2l0aFF1YWxpZmllciA9IGAke3ZvY1Rlcm19JHtcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvbi5xdWFsaWZpZXIgPyBgIyR7YW5ub3RhdGlvbi5xdWFsaWZpZXJ9YCA6IFwiXCJcblx0XHRcdFx0XHRcdH1gO1xuXHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHQhYk92ZXJyaWRlRXhpc3RpbmcgJiZcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9ucz8uW3ZvY0FsaWFzXT8uW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXSAhPT0gdW5kZWZpbmVkXG5cdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdID0gY29udmVydEFubm90YXRpb24oXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb24gYXMgQW5ub3RhdGlvbixcblx0XHRcdFx0XHRcdFx0cGFyc2VyT3V0cHV0LFxuXHRcdFx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LFxuXHRcdFx0XHRcdFx0XHRvYmplY3RNYXAsXG5cdFx0XHRcdFx0XHRcdHRvUmVzb2x2ZSxcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvblNvdXJjZSxcblx0XHRcdFx0XHRcdFx0dW5yZXNvbHZlZEFubm90YXRpb25zXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0c3dpdGNoICh0eXBlb2YgY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgXCJzdHJpbmdcIjpcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0gPSBuZXcgU3RyaW5nKFxuXHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0Y2FzZSBcImJvb2xlYW5cIjpcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0gPSBuZXcgQm9vbGVhbihcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXSAhPT0gbnVsbCAmJlxuXHRcdFx0XHRcdFx0XHR0eXBlb2YgY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdID09PSBcIm9iamVjdFwiXG5cdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdLnRlcm0gPSB1bmFsaWFzKFxuXHRcdFx0XHRcdFx0XHRcdGRlZmF1bHRSZWZlcmVuY2VzLFxuXHRcdFx0XHRcdFx0XHRcdGAke3ZvY0FsaWFzfS4ke3ZvY1Rlcm19YFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0ucXVhbGlmaWVyID0gYW5ub3RhdGlvbi5xdWFsaWZpZXI7XG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXS5fX3NvdXJjZSA9IGFubm90YXRpb25Tb3VyY2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjb25zdCBhbm5vdGF0aW9uVGFyZ2V0ID0gYCR7Y3VycmVudFRhcmdldE5hbWV9QCR7dW5hbGlhcyhcblx0XHRcdFx0XHRcdFx0ZGVmYXVsdFJlZmVyZW5jZXMsXG5cdFx0XHRcdFx0XHRcdHZvY0FsaWFzICsgXCIuXCIgKyB2b2NUZXJtV2l0aFF1YWxpZmllclxuXHRcdFx0XHRcdFx0KX1gO1xuXHRcdFx0XHRcdFx0aWYgKGFubm90YXRpb24uYW5ub3RhdGlvbnMgJiYgQXJyYXkuaXNBcnJheShhbm5vdGF0aW9uLmFubm90YXRpb25zKSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzdWJBbm5vdGF0aW9uTGlzdCA9IHtcblx0XHRcdFx0XHRcdFx0XHR0YXJnZXQ6IGFubm90YXRpb25UYXJnZXQsXG5cdFx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvbnM6IGFubm90YXRpb24uYW5ub3RhdGlvbnMsXG5cdFx0XHRcdFx0XHRcdFx0X19zb3VyY2U6IGFubm90YXRpb25Tb3VyY2Vcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0dW5yZXNvbHZlZEFubm90YXRpb25zLnB1c2goc3ViQW5ub3RhdGlvbkxpc3QpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvbi5hbm5vdGF0aW9ucyAmJlxuXHRcdFx0XHRcdFx0XHQhY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdLmFubm90YXRpb25zXG5cdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdLmFubm90YXRpb25zID1cblx0XHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uLmFubm90YXRpb25zO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9ucy5fYW5ub3RhdGlvbnNbYCR7dm9jQWxpYXN9LiR7dm9jVGVybVdpdGhRdWFsaWZpZXJ9YF0gPVxuXHRcdFx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl07XG5cdFx0XHRcdFx0XHRvYmplY3RNYXBbYW5ub3RhdGlvblRhcmdldF0gPSBjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl07XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9KTtcblx0Y29uc3QgZXh0cmFVbnJlc29sdmVkQW5ub3RhdGlvbnM6IEFubm90YXRpb25MaXN0W10gPSBbXTtcblx0dW5yZXNvbHZlZEFubm90YXRpb25zLmZvckVhY2goYW5ub3RhdGlvbkxpc3QgPT4ge1xuXHRcdGNvbnN0IGN1cnJlbnRUYXJnZXROYW1lID0gdW5hbGlhcyhwYXJzZXJPdXRwdXQucmVmZXJlbmNlcywgYW5ub3RhdGlvbkxpc3QudGFyZ2V0KSBhcyBzdHJpbmc7XG5cdFx0bGV0IFtiYXNlT2JqLCBhbm5vdGF0aW9uUGFydF0gPSBjdXJyZW50VGFyZ2V0TmFtZS5zcGxpdChcIkBcIik7XG5cdFx0Y29uc3QgdGFyZ2V0U3BsaXQgPSBhbm5vdGF0aW9uUGFydC5zcGxpdChcIi9cIik7XG5cdFx0YmFzZU9iaiA9IGJhc2VPYmogKyBcIkBcIiArIHRhcmdldFNwbGl0WzBdO1xuXHRcdGNvbnN0IGN1cnJlbnRUYXJnZXQgPSB0YXJnZXRTcGxpdC5zbGljZSgxKS5yZWR1Y2UoKGN1cnJlbnRPYmosIHBhdGgpID0+IHtcblx0XHRcdGlmICghY3VycmVudE9iaikge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH1cblx0XHRcdHJldHVybiBjdXJyZW50T2JqW3BhdGhdO1xuXHRcdH0sIG9iamVjdE1hcFtiYXNlT2JqXSk7XG5cdFx0aWYgKCFjdXJyZW50VGFyZ2V0KSB7XG5cdFx0XHRBTk5PVEFUSU9OX0VSUk9SUy5wdXNoKHtcblx0XHRcdFx0bWVzc2FnZTogXCJUaGUgZm9sbG93aW5nIGFubm90YXRpb24gdGFyZ2V0IHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZpY2UgXCIgKyBjdXJyZW50VGFyZ2V0TmFtZVxuXHRcdFx0fSk7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhcIk1pc3NpbmcgdGFyZ2V0IGFnYWluIFwiICsgY3VycmVudFRhcmdldE5hbWUpO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIGN1cnJlbnRUYXJnZXQgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdGlmICghY3VycmVudFRhcmdldC5hbm5vdGF0aW9ucykge1xuXHRcdFx0XHRjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zID0ge307XG5cdFx0XHR9XG5cdFx0XHRhbm5vdGF0aW9uTGlzdC5hbm5vdGF0aW9ucy5mb3JFYWNoKGFubm90YXRpb24gPT4ge1xuXHRcdFx0XHRjb25zdCBbdm9jQWxpYXMsIHZvY1Rlcm1dID0gc3BsaXRUZXJtKGRlZmF1bHRSZWZlcmVuY2VzLCBhbm5vdGF0aW9uLnRlcm0pO1xuXHRcdFx0XHRpZiAoIWN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdKSB7XG5cdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc10gPSB7fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnMuX2Fubm90YXRpb25zKSB7XG5cdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9ucy5fYW5ub3RhdGlvbnMgPSB7fTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IHZvY1Rlcm1XaXRoUXVhbGlmaWVyID0gYCR7dm9jVGVybX0ke2Fubm90YXRpb24ucXVhbGlmaWVyID8gYCMke2Fubm90YXRpb24ucXVhbGlmaWVyfWAgOiBcIlwifWA7XG5cdFx0XHRcdGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXSA9IGNvbnZlcnRBbm5vdGF0aW9uKFxuXHRcdFx0XHRcdGFubm90YXRpb24gYXMgQW5ub3RhdGlvbixcblx0XHRcdFx0XHRwYXJzZXJPdXRwdXQsXG5cdFx0XHRcdFx0Y3VycmVudFRhcmdldCxcblx0XHRcdFx0XHRvYmplY3RNYXAsXG5cdFx0XHRcdFx0dG9SZXNvbHZlLFxuXHRcdFx0XHRcdChhbm5vdGF0aW9uTGlzdCBhcyBhbnkpLl9fc291cmNlLFxuXHRcdFx0XHRcdGV4dHJhVW5yZXNvbHZlZEFubm90YXRpb25zXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0gIT09IG51bGwgJiZcblx0XHRcdFx0XHR0eXBlb2YgY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdID09PSBcIm9iamVjdFwiXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXS50ZXJtID0gdW5hbGlhcyhcblx0XHRcdFx0XHRcdGRlZmF1bHRSZWZlcmVuY2VzLFxuXHRcdFx0XHRcdFx0YCR7dm9jQWxpYXN9LiR7dm9jVGVybX1gXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0ucXVhbGlmaWVyID0gYW5ub3RhdGlvbi5xdWFsaWZpZXI7XG5cdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bXG5cdFx0XHRcdFx0XHR2b2NUZXJtV2l0aFF1YWxpZmllclxuXHRcdFx0XHRcdF0uX19zb3VyY2UgPSAoYW5ub3RhdGlvbkxpc3QgYXMgYW55KS5fX3NvdXJjZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zLl9hbm5vdGF0aW9uc1tgJHt2b2NBbGlhc30uJHt2b2NUZXJtV2l0aFF1YWxpZmllcn1gXSA9XG5cdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdO1xuXHRcdFx0XHRvYmplY3RNYXBbYCR7Y3VycmVudFRhcmdldE5hbWV9QCR7dW5hbGlhcyhkZWZhdWx0UmVmZXJlbmNlcywgdm9jQWxpYXMgKyBcIi5cIiArIHZvY1Rlcm1XaXRoUXVhbGlmaWVyKX1gXSA9XG5cdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9KTtcblx0dG9SZXNvbHZlLmZvckVhY2gocmVzb2x2ZWFibGUgPT4ge1xuXHRcdGNvbnN0IHRvUmVzb2x2ZSA9IHJlc29sdmVhYmxlLnRvUmVzb2x2ZTtcblx0XHRjb25zdCB0YXJnZXRTdHIgPSB0b1Jlc29sdmUuJHRhcmdldDtcblx0XHRjb25zdCByZXNvbHZlZFRhcmdldCA9IG9iamVjdE1hcFt0YXJnZXRTdHJdO1xuXHRcdGNvbnN0IHsgYW5ub3RhdGlvbnNUZXJtLCBhbm5vdGF0aW9uVHlwZSB9ID0gdG9SZXNvbHZlO1xuXHRcdGRlbGV0ZSB0b1Jlc29sdmUuYW5ub3RhdGlvblR5cGU7XG5cdFx0ZGVsZXRlIHRvUmVzb2x2ZS5hbm5vdGF0aW9uc1Rlcm07XG5cblx0XHRpZiAocmVzb2x2ZWFibGUuaW5saW5lICYmICEocmVzb2x2ZWRUYXJnZXQgaW5zdGFuY2VvZiBTdHJpbmcpKSB7XG5cdFx0XHQvLyBpbmxpbmUgdGhlIHJlc29sdmVkIHRhcmdldFxuXHRcdFx0bGV0IGtleXM6IGtleW9mIHR5cGVvZiB0b1Jlc29sdmU7XG5cdFx0XHRmb3IgKGtleXMgaW4gdG9SZXNvbHZlKSBkZWxldGUgdG9SZXNvbHZlW2tleXNdO1xuXG5cdFx0XHRPYmplY3QuYXNzaWduKHRvUmVzb2x2ZSwgcmVzb2x2ZWRUYXJnZXQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBhc3NpZ24gdGhlIHJlc29sdmVkIHRhcmdldFxuXHRcdFx0dG9SZXNvbHZlLiR0YXJnZXQgPSByZXNvbHZlZFRhcmdldDtcblx0XHR9XG5cblx0XHRpZiAoIXJlc29sdmVkVGFyZ2V0KSB7XG5cdFx0XHR0b1Jlc29sdmUudGFyZ2V0U3RyaW5nID0gdGFyZ2V0U3RyO1xuXHRcdFx0aWYgKGFubm90YXRpb25zVGVybSAmJiBhbm5vdGF0aW9uVHlwZSkge1xuXHRcdFx0XHRjb25zdCBvRXJyb3JNc2cgPSB7XG5cdFx0XHRcdFx0bWVzc2FnZTpcblx0XHRcdFx0XHRcdFwiVW5hYmxlIHRvIHJlc29sdmUgdGhlIHBhdGggZXhwcmVzc2lvbjogXCIgK1xuXHRcdFx0XHRcdFx0dGFyZ2V0U3RyICtcblx0XHRcdFx0XHRcdFwiXFxuXCIgK1xuXHRcdFx0XHRcdFx0XCJcXG5cIiArXG5cdFx0XHRcdFx0XHRcIkhpbnQ6IENoZWNrIGFuZCBjb3JyZWN0IHRoZSBwYXRoIHZhbHVlcyB1bmRlciB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZSBpbiB0aGUgbWV0YWRhdGEgKGFubm90YXRpb24ueG1sIGZpbGUgb3IgQ0RTIGFubm90YXRpb25zIGZvciB0aGUgYXBwbGljYXRpb24pOiBcXG5cXG5cIiArXG5cdFx0XHRcdFx0XHRcIjxBbm5vdGF0aW9uIFRlcm0gPSBcIiArXG5cdFx0XHRcdFx0XHRhbm5vdGF0aW9uc1Rlcm0gK1xuXHRcdFx0XHRcdFx0XCI+XCIgK1xuXHRcdFx0XHRcdFx0XCJcXG5cIiArXG5cdFx0XHRcdFx0XHRcIjxSZWNvcmQgVHlwZSA9IFwiICtcblx0XHRcdFx0XHRcdGFubm90YXRpb25UeXBlICtcblx0XHRcdFx0XHRcdFwiPlwiICtcblx0XHRcdFx0XHRcdFwiXFxuXCIgK1xuXHRcdFx0XHRcdFx0XCI8QW5ub3RhdGlvblBhdGggPSBcIiArXG5cdFx0XHRcdFx0XHR0YXJnZXRTdHIgK1xuXHRcdFx0XHRcdFx0XCI+XCJcblx0XHRcdFx0fTtcblx0XHRcdFx0YWRkQW5ub3RhdGlvbkVycm9yTWVzc2FnZSh0YXJnZXRTdHIsIG9FcnJvck1zZyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBwcm9wZXJ0eSA9IHRvUmVzb2x2ZS50ZXJtO1xuXHRcdFx0XHRjb25zdCBwYXRoID0gdG9SZXNvbHZlLnBhdGg7XG5cdFx0XHRcdGNvbnN0IHRlcm1JbmZvID0gdGFyZ2V0U3RyID8gdGFyZ2V0U3RyLnNwbGl0KFwiL1wiKVswXSA6IHRhcmdldFN0cjtcblx0XHRcdFx0Y29uc3Qgb0Vycm9yTXNnID0ge1xuXHRcdFx0XHRcdG1lc3NhZ2U6XG5cdFx0XHRcdFx0XHRcIlVuYWJsZSB0byByZXNvbHZlIHRoZSBwYXRoIGV4cHJlc3Npb246IFwiICtcblx0XHRcdFx0XHRcdHRhcmdldFN0ciArXG5cdFx0XHRcdFx0XHRcIlxcblwiICtcblx0XHRcdFx0XHRcdFwiXFxuXCIgK1xuXHRcdFx0XHRcdFx0XCJIaW50OiBDaGVjayBhbmQgY29ycmVjdCB0aGUgcGF0aCB2YWx1ZXMgdW5kZXIgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgaW4gdGhlIG1ldGFkYXRhIChhbm5vdGF0aW9uLnhtbCBmaWxlIG9yIENEUyBhbm5vdGF0aW9ucyBmb3IgdGhlIGFwcGxpY2F0aW9uKTogXFxuXFxuXCIgK1xuXHRcdFx0XHRcdFx0XCI8QW5ub3RhdGlvbiBUZXJtID0gXCIgK1xuXHRcdFx0XHRcdFx0dGVybUluZm8gK1xuXHRcdFx0XHRcdFx0XCI+XCIgK1xuXHRcdFx0XHRcdFx0XCJcXG5cIiArXG5cdFx0XHRcdFx0XHRcIjxQcm9wZXJ0eVZhbHVlIFByb3BlcnR5ID0gXCIgK1xuXHRcdFx0XHRcdFx0cHJvcGVydHkgK1xuXHRcdFx0XHRcdFx0XCIgICAgICAgIFBhdGg9IFwiICtcblx0XHRcdFx0XHRcdHBhdGggK1xuXHRcdFx0XHRcdFx0XCI+XCJcblx0XHRcdFx0fTtcblx0XHRcdFx0YWRkQW5ub3RhdGlvbkVycm9yTWVzc2FnZSh0YXJnZXRTdHIsIG9FcnJvck1zZyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcblx0Zm9yICh2YXIgcHJvcGVydHkgaW4gQUxMX0FOTk9UQVRJT05fRVJST1JTKSB7XG5cdFx0QU5OT1RBVElPTl9FUlJPUlMucHVzaChBTExfQU5OT1RBVElPTl9FUlJPUlNbcHJvcGVydHldWzBdKTtcblx0fVxuXHQocGFyc2VyT3V0cHV0IGFzIGFueSkuZW50aXR5U2V0cyA9IHBhcnNlck91dHB1dC5zY2hlbWEuZW50aXR5U2V0cztcblx0Y29uc3QgZXh0cmFSZWZlcmVuY2VzID0gcGFyc2VyT3V0cHV0LnJlZmVyZW5jZXMuZmlsdGVyKHJlZmVyZW5jZSA9PiB7XG5cdFx0cmV0dXJuIGRlZmF1bHRSZWZlcmVuY2VzLmZpbmQoZGVmYXVsdFJlZiA9PiBkZWZhdWx0UmVmLm5hbWVzcGFjZSA9PT0gcmVmZXJlbmNlLm5hbWVzcGFjZSkgPT09IHVuZGVmaW5lZDtcblx0fSk7XG5cdGNvbnN0IGNvbnZlcnRlZE91dHB1dDogUGFydGlhbDxDb252ZXJ0ZXJPdXRwdXQ+ID0ge1xuXHRcdHZlcnNpb246IHBhcnNlck91dHB1dC52ZXJzaW9uLFxuXHRcdGFubm90YXRpb25zOiBwYXJzZXJPdXRwdXQuc2NoZW1hLmFubm90YXRpb25zLFxuXHRcdG5hbWVzcGFjZTogcGFyc2VyT3V0cHV0LnNjaGVtYS5uYW1lc3BhY2UsXG5cdFx0ZW50aXR5Q29udGFpbmVyOiBwYXJzZXJPdXRwdXQuc2NoZW1hLmVudGl0eUNvbnRhaW5lciBhcyBFbnRpdHlDb250YWluZXIsXG5cdFx0YWN0aW9uczogcGFyc2VyT3V0cHV0LnNjaGVtYS5hY3Rpb25zIGFzIEFjdGlvbltdLFxuXHRcdGVudGl0eVNldHM6IHBhcnNlck91dHB1dC5zY2hlbWEuZW50aXR5U2V0cyBhcyBFbnRpdHlTZXRbXSxcblx0XHRzaW5nbGV0b25zOiBwYXJzZXJPdXRwdXQuc2NoZW1hLnNpbmdsZXRvbnMgYXMgU2luZ2xldG9uW10sXG5cdFx0ZW50aXR5VHlwZXM6IHBhcnNlck91dHB1dC5zY2hlbWEuZW50aXR5VHlwZXMgYXMgRW50aXR5VHlwZVtdLFxuXHRcdGNvbXBsZXhUeXBlczogcGFyc2VyT3V0cHV0LnNjaGVtYS5jb21wbGV4VHlwZXMgYXMgQ29tcGxleFR5cGVbXSxcblx0XHRyZWZlcmVuY2VzOiBkZWZhdWx0UmVmZXJlbmNlcy5jb25jYXQoZXh0cmFSZWZlcmVuY2VzKSxcblx0XHRkaWFnbm9zdGljczogQU5OT1RBVElPTl9FUlJPUlMuY29uY2F0KClcblx0fTtcblx0Y29udmVydGVkT3V0cHV0LnJlc29sdmVQYXRoID0gY3JlYXRlR2xvYmFsUmVzb2x2ZShjb252ZXJ0ZWRPdXRwdXQgYXMgQ29udmVydGVyT3V0cHV0LCBvYmplY3RNYXApO1xuXHRyZXR1cm4gY29udmVydGVkT3V0cHV0IGFzIENvbnZlcnRlck91dHB1dDtcbn1cblxuZnVuY3Rpb24gcmV2ZXJ0VmFsdWVUb0dlbmVyaWNUeXBlKHJlZmVyZW5jZXM6IFJlZmVyZW5jZVtdLCB2YWx1ZTogYW55KTogRXhwcmVzc2lvbiB8IHVuZGVmaW5lZCB7XG5cdGxldCByZXN1bHQ6IEV4cHJlc3Npb24gfCB1bmRlZmluZWQ7XG5cdGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcblx0XHRjb25zdCB2YWx1ZU1hdGNoZXMgPSB2YWx1ZS5tYXRjaCgvKFxcdyspXFwuXFx3K1xcLy4qLyk7XG5cdFx0aWYgKHZhbHVlTWF0Y2hlcyAmJiByZWZlcmVuY2VzLmZpbmQocmVmID0+IHJlZi5hbGlhcyA9PT0gdmFsdWVNYXRjaGVzWzFdKSkge1xuXHRcdFx0cmVzdWx0ID0ge1xuXHRcdFx0XHR0eXBlOiBcIkVudW1NZW1iZXJcIixcblx0XHRcdFx0RW51bU1lbWJlcjogdmFsdWVcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlc3VsdCA9IHtcblx0XHRcdFx0dHlwZTogXCJTdHJpbmdcIixcblx0XHRcdFx0U3RyaW5nOiB2YWx1ZVxuXHRcdFx0fTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcblx0XHRyZXN1bHQgPSB7XG5cdFx0XHR0eXBlOiBcIkNvbGxlY3Rpb25cIixcblx0XHRcdENvbGxlY3Rpb246IHZhbHVlLm1hcChhbm5vID0+IHJldmVydENvbGxlY3Rpb25JdGVtVG9HZW5lcmljVHlwZShyZWZlcmVuY2VzLCBhbm5vKSkgYXMgYW55W11cblx0XHR9O1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRyZXN1bHQgPSB7XG5cdFx0XHR0eXBlOiBcIkJvb2xcIixcblx0XHRcdEJvb2w6IHZhbHVlXG5cdFx0fTtcblx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcblx0XHRpZiAodmFsdWUudG9TdHJpbmcoKSA9PT0gdmFsdWUudG9GaXhlZCgpKSB7XG5cdFx0XHRyZXN1bHQgPSB7XG5cdFx0XHRcdHR5cGU6IFwiSW50XCIsXG5cdFx0XHRcdEludDogdmFsdWVcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlc3VsdCA9IHtcblx0XHRcdFx0dHlwZTogXCJEZWNpbWFsXCIsXG5cdFx0XHRcdERlY2ltYWw6IHZhbHVlXG5cdFx0XHR9O1xuXHRcdH1cblx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUuaXNEZWNpbWFsICYmIHZhbHVlLmlzRGVjaW1hbCgpKSB7XG5cdFx0cmVzdWx0ID0ge1xuXHRcdFx0dHlwZTogXCJEZWNpbWFsXCIsXG5cdFx0XHREZWNpbWFsOiB2YWx1ZS52YWx1ZU9mKClcblx0XHR9O1xuXHR9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09IFwiUGF0aFwiKSB7XG5cdFx0cmVzdWx0ID0ge1xuXHRcdFx0dHlwZTogXCJQYXRoXCIsXG5cdFx0XHRQYXRoOiB2YWx1ZS5wYXRoXG5cdFx0fTtcblx0fSBlbHNlIGlmICh2YWx1ZS50eXBlID09PSBcIkFubm90YXRpb25QYXRoXCIpIHtcblx0XHRyZXN1bHQgPSB7XG5cdFx0XHR0eXBlOiBcIkFubm90YXRpb25QYXRoXCIsXG5cdFx0XHRBbm5vdGF0aW9uUGF0aDogdmFsdWUudmFsdWVcblx0XHR9O1xuXHR9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09IFwiQXBwbHlcIikge1xuXHRcdHJlc3VsdCA9IHtcblx0XHRcdHR5cGU6IFwiQXBwbHlcIixcblx0XHRcdEFwcGx5OiB2YWx1ZS5BcHBseVxuXHRcdH07XG5cdH0gZWxzZSBpZiAodmFsdWUudHlwZSA9PT0gXCJOdWxsXCIpIHtcblx0XHRyZXN1bHQgPSB7XG5cdFx0XHR0eXBlOiBcIk51bGxcIlxuXHRcdH07XG5cdH0gZWxzZSBpZiAodmFsdWUudHlwZSA9PT0gXCJQcm9wZXJ0eVBhdGhcIikge1xuXHRcdHJlc3VsdCA9IHtcblx0XHRcdHR5cGU6IFwiUHJvcGVydHlQYXRoXCIsXG5cdFx0XHRQcm9wZXJ0eVBhdGg6IHZhbHVlLnZhbHVlXG5cdFx0fTtcblx0fSBlbHNlIGlmICh2YWx1ZS50eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIikge1xuXHRcdHJlc3VsdCA9IHtcblx0XHRcdHR5cGU6IFwiTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiLFxuXHRcdFx0TmF2aWdhdGlvblByb3BlcnR5UGF0aDogdmFsdWUudmFsdWVcblx0XHR9O1xuXHR9IGVsc2UgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgXCIkVHlwZVwiKSkge1xuXHRcdHJlc3VsdCA9IHtcblx0XHRcdHR5cGU6IFwiUmVjb3JkXCIsXG5cdFx0XHRSZWNvcmQ6IHJldmVydENvbGxlY3Rpb25JdGVtVG9HZW5lcmljVHlwZShyZWZlcmVuY2VzLCB2YWx1ZSkgYXMgQW5ub3RhdGlvblJlY29yZFxuXHRcdH07XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcmV2ZXJ0Q29sbGVjdGlvbkl0ZW1Ub0dlbmVyaWNUeXBlKFxuXHRyZWZlcmVuY2VzOiBSZWZlcmVuY2VbXSxcblx0Y29sbGVjdGlvbkl0ZW06IGFueVxuKTpcblx0fCBBbm5vdGF0aW9uUmVjb3JkXG5cdHwgc3RyaW5nXG5cdHwgUHJvcGVydHlQYXRoRXhwcmVzc2lvblxuXHR8IFBhdGhFeHByZXNzaW9uXG5cdHwgTmF2aWdhdGlvblByb3BlcnR5UGF0aEV4cHJlc3Npb25cblx0fCBBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb25cblx0fCB1bmRlZmluZWQge1xuXHRpZiAodHlwZW9mIGNvbGxlY3Rpb25JdGVtID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIGNvbGxlY3Rpb25JdGVtO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBjb2xsZWN0aW9uSXRlbSA9PT0gXCJvYmplY3RcIikge1xuXHRcdGlmIChjb2xsZWN0aW9uSXRlbS5oYXNPd25Qcm9wZXJ0eShcIiRUeXBlXCIpKSB7XG5cdFx0XHQvLyBBbm5vdGF0aW9uIFJlY29yZFxuXHRcdFx0Y29uc3Qgb3V0SXRlbTogQW5ub3RhdGlvblJlY29yZCA9IHtcblx0XHRcdFx0dHlwZTogY29sbGVjdGlvbkl0ZW0uJFR5cGUsXG5cdFx0XHRcdHByb3BlcnR5VmFsdWVzOiBbXSBhcyBhbnlbXVxuXHRcdFx0fTtcblx0XHRcdC8vIENvdWxkIHZhbGlkYXRlIGtleXMgYW5kIHR5cGUgYmFzZWQgb24gJFR5cGVcblx0XHRcdE9iamVjdC5rZXlzKGNvbGxlY3Rpb25JdGVtKS5mb3JFYWNoKGNvbGxlY3Rpb25LZXkgPT4ge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0Y29sbGVjdGlvbktleSAhPT0gXCIkVHlwZVwiICYmXG5cdFx0XHRcdFx0Y29sbGVjdGlvbktleSAhPT0gXCJ0ZXJtXCIgJiZcblx0XHRcdFx0XHRjb2xsZWN0aW9uS2V5ICE9PSBcIl9fc291cmNlXCIgJiZcblx0XHRcdFx0XHRjb2xsZWN0aW9uS2V5ICE9PSBcInF1YWxpZmllclwiICYmXG5cdFx0XHRcdFx0Y29sbGVjdGlvbktleSAhPT0gXCJBY3Rpb25UYXJnZXRcIiAmJlxuXHRcdFx0XHRcdGNvbGxlY3Rpb25LZXkgIT09IFwiZnVsbHlRdWFsaWZpZWROYW1lXCIgJiZcblx0XHRcdFx0XHRjb2xsZWN0aW9uS2V5ICE9PSBcImFubm90YXRpb25zXCJcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Y29uc3QgdmFsdWUgPSBjb2xsZWN0aW9uSXRlbVtjb2xsZWN0aW9uS2V5XTtcblx0XHRcdFx0XHRvdXRJdGVtLnByb3BlcnR5VmFsdWVzLnB1c2goe1xuXHRcdFx0XHRcdFx0bmFtZTogY29sbGVjdGlvbktleSxcblx0XHRcdFx0XHRcdHZhbHVlOiByZXZlcnRWYWx1ZVRvR2VuZXJpY1R5cGUocmVmZXJlbmNlcywgdmFsdWUpIGFzIEV4cHJlc3Npb25cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIGlmIChjb2xsZWN0aW9uS2V5ID09PSBcImFubm90YXRpb25zXCIpIHtcblx0XHRcdFx0XHRjb25zdCBhbm5vdGF0aW9ucyA9IGNvbGxlY3Rpb25JdGVtW2NvbGxlY3Rpb25LZXldO1xuXHRcdFx0XHRcdG91dEl0ZW0uYW5ub3RhdGlvbnMgPSBbXTtcblx0XHRcdFx0XHRPYmplY3Qua2V5cyhhbm5vdGF0aW9ucylcblx0XHRcdFx0XHRcdC5maWx0ZXIoa2V5ID0+IGtleSAhPT0gXCJfYW5ub3RhdGlvbnNcIilcblx0XHRcdFx0XHRcdC5mb3JFYWNoKGtleSA9PiB7XG5cdFx0XHRcdFx0XHRcdE9iamVjdC5rZXlzKGFubm90YXRpb25zW2tleV0pLmZvckVhY2godGVybSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgcGFyc2VkQW5ub3RhdGlvbiA9IHJldmVydFRlcm1Ub0dlbmVyaWNUeXBlKHJlZmVyZW5jZXMsIGFubm90YXRpb25zW2tleV1bdGVybV0pO1xuXHRcdFx0XHRcdFx0XHRcdGlmICghcGFyc2VkQW5ub3RhdGlvbi50ZXJtKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB1bmFsaWFzZWRUZXJtID0gdW5hbGlhcyhyZWZlcmVuY2VzLCBgJHtrZXl9LiR7dGVybX1gKTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICh1bmFsaWFzZWRUZXJtKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHF1YWxpZmllZFNwbGl0ID0gdW5hbGlhc2VkVGVybS5zcGxpdChcIiNcIik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb24udGVybSA9IHF1YWxpZmllZFNwbGl0WzBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAocXVhbGlmaWVkU3BsaXQubGVuZ3RoID4gMSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb24ucXVhbGlmaWVyID0gcXVhbGlmaWVkU3BsaXRbMV07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0b3V0SXRlbS5hbm5vdGF0aW9ucz8ucHVzaChwYXJzZWRBbm5vdGF0aW9uKTtcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gb3V0SXRlbTtcblx0XHR9IGVsc2UgaWYgKGNvbGxlY3Rpb25JdGVtLnR5cGUgPT09IFwiUHJvcGVydHlQYXRoXCIpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHR5cGU6IFwiUHJvcGVydHlQYXRoXCIsXG5cdFx0XHRcdFByb3BlcnR5UGF0aDogY29sbGVjdGlvbkl0ZW0udmFsdWVcblx0XHRcdH07XG5cdFx0fSBlbHNlIGlmIChjb2xsZWN0aW9uSXRlbS50eXBlID09PSBcIkFubm90YXRpb25QYXRoXCIpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHR5cGU6IFwiQW5ub3RhdGlvblBhdGhcIixcblx0XHRcdFx0QW5ub3RhdGlvblBhdGg6IGNvbGxlY3Rpb25JdGVtLnZhbHVlXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSBpZiAoY29sbGVjdGlvbkl0ZW0udHlwZSA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHR5cGU6IFwiTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiLFxuXHRcdFx0XHROYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBjb2xsZWN0aW9uSXRlbS52YWx1ZVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJldmVydFRlcm1Ub0dlbmVyaWNUeXBlKHJlZmVyZW5jZXM6IFJlZmVyZW5jZVtdLCBhbm5vdGF0aW9uOiBBbm5vdGF0aW9uVGVybTxhbnk+KTogRWRtQW5ub3RhdGlvbiB7XG5cdGNvbnN0IGJhc2VBbm5vdGF0aW9uOiBFZG1Bbm5vdGF0aW9uID0ge1xuXHRcdHRlcm06IGFubm90YXRpb24udGVybSxcblx0XHRxdWFsaWZpZXI6IGFubm90YXRpb24ucXVhbGlmaWVyXG5cdH07XG5cdGlmIChBcnJheS5pc0FycmF5KGFubm90YXRpb24pKSB7XG5cdFx0Ly8gQ29sbGVjdGlvblxuXHRcdGlmIChhbm5vdGF0aW9uLmhhc093blByb3BlcnR5KFwiYW5ub3RhdGlvbnNcIikpIHtcblx0XHRcdGJhc2VBbm5vdGF0aW9uLmFubm90YXRpb25zID0gW107XG5cdFx0XHRjb25zdCBjdXJyZW50QW5ub3RhdGlvbnMgPSAoYW5ub3RhdGlvbiBhcyBhbnkpLmFubm90YXRpb25zO1xuXHRcdFx0T2JqZWN0LmtleXMoY3VycmVudEFubm90YXRpb25zKVxuXHRcdFx0XHQuZmlsdGVyKGtleSA9PiBrZXkgIT09IFwiX2Fubm90YXRpb25zXCIpXG5cdFx0XHRcdC5mb3JFYWNoKGtleSA9PiB7XG5cdFx0XHRcdFx0T2JqZWN0LmtleXMoY3VycmVudEFubm90YXRpb25zW2tleV0pLmZvckVhY2godGVybSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBwYXJzZWRBbm5vdGF0aW9uID0gcmV2ZXJ0VGVybVRvR2VuZXJpY1R5cGUocmVmZXJlbmNlcywgY3VycmVudEFubm90YXRpb25zW2tleV1bdGVybV0pO1xuXHRcdFx0XHRcdFx0aWYgKCFwYXJzZWRBbm5vdGF0aW9uLnRlcm0pIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdW5hbGlhc2VkVGVybSA9IHVuYWxpYXMocmVmZXJlbmNlcywgYCR7a2V5fS4ke3Rlcm19YCk7XG5cdFx0XHRcdFx0XHRcdGlmICh1bmFsaWFzZWRUZXJtKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgcXVhbGlmaWVkU3BsaXQgPSB1bmFsaWFzZWRUZXJtLnNwbGl0KFwiI1wiKTtcblx0XHRcdFx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uLnRlcm0gPSBxdWFsaWZpZWRTcGxpdFswXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAocXVhbGlmaWVkU3BsaXQubGVuZ3RoID4gMSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbi5xdWFsaWZpZXIgPSBxdWFsaWZpZWRTcGxpdFsxXTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJhc2VBbm5vdGF0aW9uLmFubm90YXRpb25zPy5wdXNoKHBhcnNlZEFubm90YXRpb24pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdC4uLmJhc2VBbm5vdGF0aW9uLFxuXHRcdFx0Y29sbGVjdGlvbjogYW5ub3RhdGlvbi5tYXAoYW5ubyA9PiByZXZlcnRDb2xsZWN0aW9uSXRlbVRvR2VuZXJpY1R5cGUocmVmZXJlbmNlcywgYW5ubykpIGFzIGFueVtdXG5cdFx0fTtcblx0fSBlbHNlIGlmIChhbm5vdGF0aW9uLmhhc093blByb3BlcnR5KFwiJFR5cGVcIikpIHtcblx0XHRyZXR1cm4geyAuLi5iYXNlQW5ub3RhdGlvbiwgcmVjb3JkOiByZXZlcnRDb2xsZWN0aW9uSXRlbVRvR2VuZXJpY1R5cGUocmVmZXJlbmNlcywgYW5ub3RhdGlvbikgYXMgYW55IH07XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIHsgLi4uYmFzZUFubm90YXRpb24sIHZhbHVlOiByZXZlcnRWYWx1ZVRvR2VuZXJpY1R5cGUocmVmZXJlbmNlcywgYW5ub3RhdGlvbikgfTtcblx0fVxufVxuIl19
1731
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbW1vbi9Bbm5vdGF0aW9uQ29udmVydGVyLnRzIl0sIm5hbWVzIjpbIlBhdGgiLCJwYXRoRXhwcmVzc2lvbiIsInRhcmdldE5hbWUiLCJhbm5vdGF0aW9uc1Rlcm0iLCJhbm5vdGF0aW9uVHlwZSIsInRlcm0iLCJwYXRoIiwidHlwZSIsIiR0YXJnZXQiLCJUZXJtVG9UeXBlcyIsImRlZmF1bHRSZWZlcmVuY2VzIiwiYWxpYXMiLCJuYW1lc3BhY2UiLCJ1cmkiLCJyZWZlcmVuY2VzIiwidW5hbGlhc2VkVmFsdWUiLCJyZXZlcnNlUmVmZXJlbmNlTWFwIiwicmVkdWNlIiwibWFwIiwicmVmZXJlbmNlIiwibGFzdERvdEluZGV4IiwibGFzdEluZGV4T2YiLCJzdWJzdHIiLCJ2YWx1ZSIsImluZGV4T2YiLCJzcGxpdCIsInByZUFsaWFzIiwicG9zdEFsaWFzIiwiam9pbiIsInVuYWxpYXMiLCJhbGlhc2VkVmFsdWUiLCJyZWZlcmVuY2VNYXAiLCJidWlsZE9iamVjdE1hcCIsInBhcnNlck91dHB1dCIsIm9iamVjdE1hcCIsInNjaGVtYSIsImVudGl0eUNvbnRhaW5lciIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImVudGl0eVNldHMiLCJmb3JFYWNoIiwiZW50aXR5U2V0IiwiYWN0aW9ucyIsImFjdGlvbiIsImlzQm91bmQiLCJ1bkJvdW5kQWN0aW9uTmFtZSIsIl90eXBlIiwicHVzaCIsInBhcmFtZXRlcnMiLCJwYXJhbWV0ZXIiLCJjb21wbGV4VHlwZXMiLCJjb21wbGV4VHlwZSIsInByb3BlcnRpZXMiLCJwcm9wZXJ0eSIsInR5cGVEZWZpbml0aW9ucyIsInR5cGVEZWZpbml0aW9uIiwiZW50aXR5VHlwZXMiLCJlbnRpdHlUeXBlIiwiZW50aXR5UHJvcGVydGllcyIsImNvbXBsZXhUeXBlRGVmaW5pdGlvbiIsImNvbXBsZXhUeXBlUHJvcCIsImNvbXBsZXhUeXBlUHJvcFRhcmdldCIsIk9iamVjdCIsImFzc2lnbiIsIm5hbWUiLCJuYXZpZ2F0aW9uUHJvcGVydGllcyIsIm5hdlByb3BlcnR5Iiwia2V5cyIsImFubm90YXRpb25zIiwiYW5ub3RhdGlvblNvdXJjZSIsImFubm90YXRpb25MaXN0IiwiY3VycmVudFRhcmdldE5hbWUiLCJ0YXJnZXQiLCJhbm5vdGF0aW9uIiwiYW5ub3RhdGlvbkZRTiIsInF1YWxpZmllciIsImNvbWJpbmVQYXRoIiwiY3VycmVudFRhcmdldCIsInN0YXJ0c1dpdGgiLCJhZGRBbm5vdGF0aW9uRXJyb3JNZXNzYWdlIiwib0Vycm9yTXNnIiwiQUxMX0FOTk9UQVRJT05fRVJST1JTIiwicmVzb2x2ZVRhcmdldCIsInBhdGhPbmx5IiwiaW5jbHVkZVZpc2l0ZWRPYmplY3RzIiwidW5kZWZpbmVkIiwiYVZpc2l0ZWRPYmplY3RzIiwicGF0aFNwbGl0IiwidGFyZ2V0UGF0aFNwbGl0IiwicGF0aFBhcnQiLCJhbm5vdGF0aW9uUGF0aCIsImN1cnJlbnRQYXRoIiwiY3VycmVudENvbnRleHQiLCJjdXJyZW50VmFsdWUiLCJsZW5ndGgiLCJ0YXJnZXRUeXBlIiwiZW50aXR5VHlwZU5hbWUiLCJ0YXJnZXRUeXBlTmFtZSIsInNvdXJjZVR5cGUiLCJpc0VudGl0eVNldCIsImxhc3RJZHgiLCJzdWJUYXJnZXQiLCJ2aXNpdGVkT2JqZWN0cyIsInZpc2l0ZWRTdWJPYmplY3QiLCJjb25jYXQiLCJyZXZlcnNlIiwiZmluZCIsIm9iaiIsImludGVybWVkaWF0ZVRhcmdldCIsImhhc093blByb3BlcnR5IiwibWVzc2FnZSIsImlzQW5ub3RhdGlvblBhdGgiLCJwYXRoU3RyIiwicGFyc2VWYWx1ZSIsInByb3BlcnR5VmFsdWUiLCJ2YWx1ZUZRTiIsInRvUmVzb2x2ZSIsInVucmVzb2x2ZWRBbm5vdGF0aW9ucyIsIlN0cmluZyIsIkludCIsIkJvb2wiLCJEZWNpbWFsIiwiRGF0ZSIsIkVudW1NZW1iZXIiLCJQcm9wZXJ0eVBhdGgiLCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoIiwiYW5ub3RhdGlvblRhcmdldCIsIkFubm90YXRpb25QYXRoIiwiaW5saW5lIiwicGFyc2VSZWNvcmQiLCJSZWNvcmQiLCJwYXJzZUNvbGxlY3Rpb24iLCJDb2xsZWN0aW9uIiwiaW5mZXJUeXBlRnJvbVRlcm0iLCJpc0Vycm9yIiwicmVjb3JkRGVmaW5pdGlvbiIsImN1cnJlbnRGUU4iLCJhbm5vdGF0aW9uVGVybSIsIiRUeXBlIiwiYW5ub3RhdGlvbkNvbnRlbnQiLCJBcnJheSIsImlzQXJyYXkiLCJzdWJBbm5vdGF0aW9uTGlzdCIsIl9fc291cmNlIiwicHJvcGVydHlWYWx1ZXMiLCJBY3Rpb25UYXJnZXQiLCJBY3Rpb24iLCJBTk5PVEFUSU9OX0VSUk9SUyIsImdldE9ySW5mZXJDb2xsZWN0aW9uVHlwZSIsImNvbGxlY3Rpb25EZWZpbml0aW9uIiwiZmlyc3RDb2xJdGVtIiwicGFyZW50RlFOIiwiY29sbGVjdGlvbkRlZmluaXRpb25UeXBlIiwicHJvcGVydHlQYXRoIiwicHJvcGVydHlJZHgiLCJwYXRoVmFsdWUiLCJhbm5vdGF0aW9uSWR4IiwiYW5ub3RhdGlvbkNvbGxlY3Rpb25FbGVtZW50IiwibmF2UHJvcGVydHlQYXRoIiwibmF2UHJvcElkeCIsInJlY29yZElkeCIsImlmVmFsdWUiLCJzdHJpbmdWYWx1ZSIsIkVycm9yIiwiY29udmVydEFubm90YXRpb24iLCJyZWNvcmQiLCJjb2xsZWN0aW9uIiwiY3JlYXRlUmVzb2x2ZVBhdGhGbiIsInJlbGF0aXZlUGF0aCIsInJlc29sdmVOYXZpZ2F0aW9uUHJvcGVydGllcyIsImFzc29jaWF0aW9ucyIsIm5hdlByb3AiLCJvdXROYXZQcm9wIiwicGFydG5lciIsImlzQ29sbGVjdGlvbiIsImNvbnRhaW5zVGFyZ2V0IiwicmVmZXJlbnRpYWxDb25zdHJhaW50IiwicmVsYXRpb25zaGlwIiwidGFyZ2V0QXNzb2NpYXRpb24iLCJhc3NvY2lhdGlvbiIsImFzc29jaWF0aW9uRW5kIiwiZW5kIiwicm9sZSIsInRvUm9sZSIsIm11bHRpcGxpY2l0eSIsIm91dE5hdlByb3BSZXEiLCJyZXNvbHZlUGF0aCIsImxpbmtBY3Rpb25zVG9FbnRpdHlUeXBlIiwic291cmNlRW50aXR5VHlwZSIsInJldHVybkVudGl0eVR5cGUiLCJyZXR1cm5UeXBlIiwibGlua0VudGl0eVR5cGVUb0VudGl0eVNldCIsImtleVByb3AiLCJpc0tleSIsImxpbmtFbnRpdHlUeXBlVG9TaW5nbGV0b24iLCJzaW5nbGV0b25zIiwic2luZ2xldG9uIiwidHlwZU5hbWUiLCJsaW5rUHJvcGVydGllc1RvQ29tcGxleFR5cGVzIiwibGluayIsImNvbXBsZXhUeXBlTmFtZSIsInNFcnJvciIsInByZXBhcmVDb21wbGV4VHlwZXMiLCJzcGxpdFRlcm0iLCJ0ZXJtVmFsdWUiLCJhbGlhc2VkVGVybSIsImxhc3REb3QiLCJ0ZXJtQWxpYXMiLCJjcmVhdGVHbG9iYWxSZXNvbHZlIiwiY29udmVydGVkT3V0cHV0Iiwic1BhdGgiLCJhUGF0aFNwbGl0Iiwic2hpZnQiLCJlbnRpdHlTZXROYW1lIiwiZXQiLCJvYmplY3RQYXRoIiwidGFyZ2V0UmVzb2x1dGlvbiIsImNvbnZlcnRUeXBlcyIsIm9iamVjdE1hcEVsZW1lbnQiLCJhbGxUYXJnZXRzIiwiYk92ZXJyaWRlRXhpc3RpbmciLCJ2b2NBbGlhcyIsInZvY1Rlcm0iLCJfYW5ub3RhdGlvbnMiLCJ2b2NUZXJtV2l0aFF1YWxpZmllciIsIkJvb2xlYW4iLCJleHRyYVVucmVzb2x2ZWRBbm5vdGF0aW9ucyIsImJhc2VPYmoiLCJhbm5vdGF0aW9uUGFydCIsInRhcmdldFNwbGl0Iiwic2xpY2UiLCJjdXJyZW50T2JqIiwicmVzb2x2ZWFibGUiLCJ0YXJnZXRTdHIiLCJyZXNvbHZlZFRhcmdldCIsInRhcmdldFN0cmluZyIsInRlcm1JbmZvIiwiZXh0cmFSZWZlcmVuY2VzIiwiZmlsdGVyIiwiZGVmYXVsdFJlZiIsInZlcnNpb24iLCJkaWFnbm9zdGljcyIsInJldmVydFZhbHVlVG9HZW5lcmljVHlwZSIsInJlc3VsdCIsInZhbHVlTWF0Y2hlcyIsIm1hdGNoIiwicmVmIiwiYW5ubyIsInJldmVydENvbGxlY3Rpb25JdGVtVG9HZW5lcmljVHlwZSIsInRvU3RyaW5nIiwidG9GaXhlZCIsImlzRGVjaW1hbCIsInZhbHVlT2YiLCJBcHBseSIsInByb3RvdHlwZSIsImNhbGwiLCJjb2xsZWN0aW9uSXRlbSIsIm91dEl0ZW0iLCJjb2xsZWN0aW9uS2V5Iiwia2V5IiwicGFyc2VkQW5ub3RhdGlvbiIsInJldmVydFRlcm1Ub0dlbmVyaWNUeXBlIiwidW5hbGlhc2VkVGVybSIsInF1YWxpZmllZFNwbGl0IiwiYmFzZUFubm90YXRpb24iLCJjdXJyZW50QW5ub3RhdGlvbnMiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUF3Q01BLEksNkJBUUwsY0FDQ0MsY0FERCxFQUVDQyxVQUZELEVBR0NDLGVBSEQsRUFJQ0MsY0FKRCxFQUtDQyxJQUxELEVBTUU7QUFBQTs7QUFDRCxTQUFLQyxJQUFMLEdBQVlMLGNBQWMsQ0FBQ0QsSUFBM0I7QUFDQSxTQUFLTyxJQUFMLEdBQVksTUFBWjtBQUNBLFNBQUtDLE9BQUwsR0FBZU4sVUFBZjtBQUNDLFNBQUtHLElBQUwsR0FBWUEsSUFBYixFQUFxQixLQUFLRCxjQUFMLEdBQXNCQSxjQUEzQyxFQUE2RCxLQUFLRCxlQUFMLEdBQXVCQSxlQUFwRjtBQUNBLEc7O01BR0dNLFc7O2FBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFBQSxXO0FBQUFBLElBQUFBLFc7QUFBQUEsSUFBQUEsVztBQUFBQSxJQUFB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LEtBRk0sTUFFQTtBQUNOLDZDQUFZK0wsY0FBWjtBQUE0QmhQLFFBQUFBLEtBQUssRUFBRTBOLHdCQUF3QixDQUFDbk8sVUFBRCxFQUFhMEQsVUFBYjtBQUEzRDtBQUNBO0FBQ0QiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFubm90YXRpb24gYXMgRWRtQW5ub3RhdGlvbixcblx0QW5ub3RhdGlvbkxpc3QsXG5cdEFubm90YXRpb25SZWNvcmQsXG5cdEFubm90YXRpb25UZXJtLFxuXHRDb252ZXJ0ZXJPdXRwdXQsXG5cdEV4cHJlc3Npb24sXG5cdFBhcnNlck91dHB1dCxcblx0UGF0aEV4cHJlc3Npb24sXG5cdFByb3BlcnR5UGF0aCxcblx0UHJvcGVydHlWYWx1ZSxcblx0QW5ub3RhdGlvblBhdGhFeHByZXNzaW9uLFxuXHROYXZpZ2F0aW9uUHJvcGVydHlQYXRoRXhwcmVzc2lvbixcblx0UHJvcGVydHlQYXRoRXhwcmVzc2lvblxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7XG5cdEFzc29jaWF0aW9uLFxuXHRHZW5lcmljTmF2aWdhdGlvblByb3BlcnR5LFxuXHRSZWZlcmVuY2UsXG5cdFByb3BlcnR5IGFzIFBhcnNlclByb3BlcnR5LFxuXHRFbnRpdHlUeXBlIGFzIFBhcnNlckVudGl0eVR5cGUsXG5cdENvbXBsZXhUeXBlIGFzIFBhcnNlckNvbXBsZXhUeXBlLFxuXHRUeXBlRGVmaW5pdGlvbiBhcyBQYXJzZXJUeXBlRGVmaW5pdGlvbixcblx0VjJOYXZpZ2F0aW9uUHJvcGVydHksXG5cdFY0TmF2aWdhdGlvblByb3BlcnR5XG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9kaXN0L1BhcnNlclwiO1xuaW1wb3J0IHtcblx0QW5ub3RhdGlvbixcblx0RW50aXR5VHlwZSxcblx0Q29tcGxleFR5cGUsXG5cdEFjdGlvbixcblx0RW50aXR5U2V0LFxuXHRTaW5nbGV0b24sXG5cdFByb3BlcnR5LFxuXHROYXZpZ2F0aW9uUHJvcGVydHksXG5cdEVudGl0eUNvbnRhaW5lcixcblx0U2VydmljZU9iamVjdEFuZEFubm90YXRpb24sXG5cdFJlc29sdXRpb25UYXJnZXQsXG5cdFR5cGVEZWZpbml0aW9uXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9kaXN0L0NvbnZlcnRlclwiO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwidHMtbm9kZVwiO1xuXG5jbGFzcyBQYXRoIHtcblx0cGF0aDogc3RyaW5nO1xuXHQkdGFyZ2V0OiBzdHJpbmc7XG5cdHR5cGU6IHN0cmluZztcblx0YW5ub3RhdGlvbnNUZXJtOiBzdHJpbmc7XG5cdGFubm90YXRpb25UeXBlOiBzdHJpbmc7XG5cdHRlcm06IHN0cmluZztcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwYXRoRXhwcmVzc2lvbjogUGF0aEV4cHJlc3Npb24sXG5cdFx0dGFyZ2V0TmFtZTogc3RyaW5nLFxuXHRcdGFubm90YXRpb25zVGVybTogc3RyaW5nLFxuXHRcdGFubm90YXRpb25UeXBlOiBzdHJpbmcsXG5cdFx0dGVybTogc3RyaW5nXG5cdCkge1xuXHRcdHRoaXMucGF0aCA9IHBhdGhFeHByZXNzaW9uLlBhdGg7XG5cdFx0dGhpcy50eXBlID0gXCJQYXRoXCI7XG5cdFx0dGhpcy4kdGFyZ2V0ID0gdGFyZ2V0TmFtZTtcblx0XHQodGhpcy50ZXJtID0gdGVybSksICh0aGlzLmFubm90YXRpb25UeXBlID0gYW5ub3RhdGlvblR5cGUpLCAodGhpcy5hbm5vdGF0aW9uc1Rlcm0gPSBhbm5vdGF0aW9uc1Rlcm0pO1xuXHR9XG59XG5cbmVudW0gVGVybVRvVHlwZXMge1xuXHRcIk9yZy5PRGF0YS5BdXRob3JpemF0aW9uLlYxLlNlY3VyaXR5U2NoZW1lc1wiID0gXCJPcmcuT0RhdGEuQXV0aG9yaXphdGlvbi5WMS5TZWN1cml0eVNjaGVtZVwiLFxuXHRcIk9yZy5PRGF0YS5BdXRob3JpemF0aW9uLlYxLkF1dGhvcml6YXRpb25zXCIgPSBcIk9yZy5PRGF0YS5BdXRob3JpemF0aW9uLlYxLkF1dGhvcml6YXRpb25cIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5SZXZpc2lvbnNcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuUmV2aXNpb25UeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNvcmUuVjEuTGlua3NcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuTGlua1wiLFxuXHRcIk9yZy5PRGF0YS5Db3JlLlYxLkV4YW1wbGVcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuRXhhbXBsZVZhbHVlXCIsXG5cdFwiT3JnLk9EYXRhLkNvcmUuVjEuTWVzc2FnZXNcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuTWVzc2FnZVR5cGVcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5WYWx1ZUV4Y2VwdGlvblwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5WYWx1ZUV4Y2VwdGlvblR5cGVcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5SZXNvdXJjZUV4Y2VwdGlvblwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5SZXNvdXJjZUV4Y2VwdGlvblR5cGVcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5EYXRhTW9kaWZpY2F0aW9uRXhjZXB0aW9uXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLkRhdGFNb2RpZmljYXRpb25FeGNlcHRpb25UeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNvcmUuVjEuSXNMYW5ndWFnZURlcGVuZGVudFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5EZXJlZmVyZW5jZWFibGVJRHNcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLkNvcmUuVjEuQ29udmVudGlvbmFsSURzXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcIk9yZy5PRGF0YS5Db3JlLlYxLlBlcm1pc3Npb25zXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlBlcm1pc3Npb25cIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5EZWZhdWx0TmFtZXNwYWNlXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcIk9yZy5PRGF0YS5Db3JlLlYxLkltbXV0YWJsZVwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5Db21wdXRlZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5Db21wdXRlZERlZmF1bHRWYWx1ZVwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5Jc1VSTFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5Jc01lZGlhVHlwZVwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5Db250ZW50RGlzcG9zaXRpb25cIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuQ29udGVudERpc3Bvc2l0aW9uVHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5Db3JlLlYxLk9wdGltaXN0aWNDb25jdXJyZW5jeVwiID0gXCJFZG0uUHJvcGVydHlQYXRoXCIsXG5cdFwiT3JnLk9EYXRhLkNvcmUuVjEuQWRkaXRpb25hbFByb3BlcnRpZXNcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLkNvcmUuVjEuQXV0b0V4cGFuZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5BdXRvRXhwYW5kUmVmZXJlbmNlc1wiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5NYXlJbXBsZW1lbnRcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuUXVhbGlmaWVkVHlwZU5hbWVcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5PcmRlcmVkXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcIk9yZy5PRGF0YS5Db3JlLlYxLlBvc2l0aW9uYWxJbnNlcnRcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLkNvcmUuVjEuQWx0ZXJuYXRlS2V5c1wiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5BbHRlcm5hdGVLZXlcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5PcHRpb25hbFBhcmFtZXRlclwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5PcHRpb25hbFBhcmFtZXRlclR5cGVcIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5PcGVyYXRpb25BdmFpbGFibGVcIiA9IFwiRWRtLkJvb2xlYW5cIixcblx0XCJPcmcuT0RhdGEuQ29yZS5WMS5TeW1ib2xpY05hbWVcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuU2ltcGxlSWRlbnRpZmllclwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ29uZm9ybWFuY2VMZXZlbFwiID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNvbmZvcm1hbmNlTGV2ZWxUeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Bc3luY2hyb25vdXNSZXF1ZXN0c1N1cHBvcnRlZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkJhdGNoQ29udGludWVPbkVycm9yU3VwcG9ydGVkXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuSXNvbGF0aW9uU3VwcG9ydGVkXCIgPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuSXNvbGF0aW9uTGV2ZWxcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNyb3NzSm9pblN1cHBvcnRlZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNhbGxiYWNrU3VwcG9ydGVkXCIgPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ2FsbGJhY2tUeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5DaGFuZ2VUcmFja2luZ1wiID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNoYW5nZVRyYWNraW5nVHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ291bnRSZXN0cmljdGlvbnNcIiA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Db3VudFJlc3RyaWN0aW9uc1R5cGVcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLk5hdmlnYXRpb25SZXN0cmljdGlvbnNcIiA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5OYXZpZ2F0aW9uUmVzdHJpY3Rpb25zVHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuSW5kZXhhYmxlQnlLZXlcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Ub3BTdXBwb3J0ZWRcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Ta2lwU3VwcG9ydGVkXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ29tcHV0ZVN1cHBvcnRlZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlNlbGVjdFN1cHBvcnRcIiA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5TZWxlY3RTdXBwb3J0VHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQmF0Y2hTdXBwb3J0ZWRcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5CYXRjaFN1cHBvcnRcIiA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5CYXRjaFN1cHBvcnRUeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNcIiA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNUeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Tb3J0UmVzdHJpY3Rpb25zXCIgPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuU29ydFJlc3RyaWN0aW9uc1R5cGVcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkV4cGFuZFJlc3RyaWN0aW9uc1wiID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkV4cGFuZFJlc3RyaWN0aW9uc1R5cGVcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlNlYXJjaFJlc3RyaWN0aW9uc1wiID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlNlYXJjaFJlc3RyaWN0aW9uc1R5cGVcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLktleUFzU2VnbWVudFN1cHBvcnRlZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlF1ZXJ5U2VnbWVudFN1cHBvcnRlZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkluc2VydFJlc3RyaWN0aW9uc1wiID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkluc2VydFJlc3RyaWN0aW9uc1R5cGVcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkRlZXBJbnNlcnRTdXBwb3J0XCIgPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRGVlcEluc2VydFN1cHBvcnRUeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5VcGRhdGVSZXN0cmljdGlvbnNcIiA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5VcGRhdGVSZXN0cmljdGlvbnNUeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5EZWVwVXBkYXRlU3VwcG9ydFwiID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkRlZXBVcGRhdGVTdXBwb3J0VHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRGVsZXRlUmVzdHJpY3Rpb25zXCIgPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRGVsZXRlUmVzdHJpY3Rpb25zVHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ29sbGVjdGlvblByb3BlcnR5UmVzdHJpY3Rpb25zXCIgPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ29sbGVjdGlvblByb3BlcnR5UmVzdHJpY3Rpb25zVHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuT3BlcmF0aW9uUmVzdHJpY3Rpb25zXCIgPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuT3BlcmF0aW9uUmVzdHJpY3Rpb25zVHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQW5ub3RhdGlvblZhbHVlc0luUXVlcnlTdXBwb3J0ZWRcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Nb2RpZmljYXRpb25RdWVyeU9wdGlvbnNcIiA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Nb2RpZmljYXRpb25RdWVyeU9wdGlvbnNUeXBlXCIsXG5cdFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5SZWFkUmVzdHJpY3Rpb25zXCIgPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuUmVhZFJlc3RyaWN0aW9uc1R5cGVcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkN1c3RvbUhlYWRlcnNcIiA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5DdXN0b21QYXJhbWV0ZXJcIixcblx0XCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkN1c3RvbVF1ZXJ5T3B0aW9uc1wiID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkN1c3RvbVBhcmFtZXRlclwiLFxuXHRcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuTWVkaWFMb2NhdGlvblVwZGF0ZVN1cHBvcnRlZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQXBwbHlTdXBwb3J0ZWRcIiA9IFwiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkFwcGx5U3VwcG9ydGVkVHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5Hcm91cGFibGVcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkFnZ3JlZ2F0YWJsZVwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQ29udGV4dERlZmluaW5nUHJvcGVydGllc1wiID0gXCJFZG0uUHJvcGVydHlQYXRoXCIsXG5cdFwiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkxldmVsZWRIaWVyYXJjaHlcIiA9IFwiRWRtLlByb3BlcnR5UGF0aFwiLFxuXHRcIk9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5SZWN1cnNpdmVIaWVyYXJjaHlcIiA9IFwiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLlJlY3Vyc2l2ZUhpZXJhcmNoeVR5cGVcIixcblx0XCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQXZhaWxhYmxlT25BZ2dyZWdhdGVzXCIgPSBcIk9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5BdmFpbGFibGVPbkFnZ3JlZ2F0ZXNUeXBlXCIsXG5cdFwiT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuTWluaW11bVwiID0gXCJFZG0uUHJpbWl0aXZlVHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1heGltdW1cIiA9IFwiRWRtLlByaW1pdGl2ZVR5cGVcIixcblx0XCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5FeGNsdXNpdmVcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuQWxsb3dlZFZhbHVlc1wiID0gXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5BbGxvd2VkVmFsdWVcIixcblx0XCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5NdWx0aXBsZU9mXCIgPSBcIkVkbS5EZWNpbWFsXCIsXG5cdFwiT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuQ29uc3RyYWludFwiID0gXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5Db25zdHJhaW50VHlwZVwiLFxuXHRcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLkl0ZW1zT2ZcIiA9IFwiT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuSXRlbXNPZlR5cGVcIixcblx0XCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5PcGVuUHJvcGVydHlUeXBlQ29uc3RyYWludFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5RdWFsaWZpZWRUeXBlTmFtZVwiLFxuXHRcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLkRlcml2ZWRUeXBlQ29uc3RyYWludFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5RdWFsaWZpZWRUeXBlTmFtZVwiLFxuXHRcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLkFsbG93ZWRUZXJtc1wiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5RdWFsaWZpZWRUZXJtTmFtZVwiLFxuXHRcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLkFwcGxpY2FibGVUZXJtc1wiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5RdWFsaWZpZWRUZXJtTmFtZVwiLFxuXHRcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1heEl0ZW1zXCIgPSBcIkVkbS5JbnQ2NFwiLFxuXHRcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1pbkl0ZW1zXCIgPSBcIkVkbS5JbnQ2NFwiLFxuXHRcIk9yZy5PRGF0YS5NZWFzdXJlcy5WMS5TY2FsZVwiID0gXCJFZG0uQnl0ZVwiLFxuXHRcIk9yZy5PRGF0YS5NZWFzdXJlcy5WMS5EdXJhdGlvbkdyYW51bGFyaXR5XCIgPSBcIk9yZy5PRGF0YS5NZWFzdXJlcy5WMS5EdXJhdGlvbkdyYW51bGFyaXR5VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkFuYWx5dGljcy52MS5EaW1lbnNpb25cIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQW5hbHl0aWNzLnYxLk1lYXN1cmVcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQW5hbHl0aWNzLnYxLkFjY3VtdWxhdGl2ZU1lYXN1cmVcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQW5hbHl0aWNzLnYxLlJvbGxlZFVwUHJvcGVydHlDb3VudFwiID0gXCJFZG0uSW50MTZcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5BbmFseXRpY3MudjEuUGxhbm5pbmdBY3Rpb25cIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQW5hbHl0aWNzLnYxLkFnZ3JlZ2F0ZWRQcm9wZXJ0aWVzXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkFuYWx5dGljcy52MS5BZ2dyZWdhdGVkUHJvcGVydHlUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNlcnZpY2VWZXJzaW9uXCIgPSBcIkVkbS5JbnQzMlwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZXJ2aWNlU2NoZW1hVmVyc2lvblwiID0gXCJFZG0uSW50MzJcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVGV4dEZvclwiID0gXCJFZG0uUHJvcGVydHlQYXRoXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzTGFuZ3VhZ2VJZGVudGlmaWVyXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UZXh0Rm9ybWF0XCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UZXh0Rm9ybWF0VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0RpZ2l0U2VxdWVuY2VcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzVXBwZXJDYXNlXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0N1cnJlbmN5XCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc1VuaXRcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlVuaXRTcGVjaWZpY1NjYWxlXCIgPSBcIkVkbS5QcmltaXRpdmVUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlVuaXRTcGVjaWZpY1ByZWNpc2lvblwiID0gXCJFZG0uUHJpbWl0aXZlVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZWNvbmRhcnlLZXlcIiA9IFwiRWRtLlByb3BlcnR5UGF0aFwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5NaW5PY2N1cnNcIiA9IFwiRWRtLkludDY0XCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLk1heE9jY3Vyc1wiID0gXCJFZG0uSW50NjRcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuQXNzb2NpYXRpb25FbnRpdHlcIiA9IFwiRWRtLk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRGVyaXZlZE5hdmlnYXRpb25cIiA9IFwiRWRtLk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTWFza2VkXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5NYXNrZWRBbHdheXNcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNlbWFudGljT2JqZWN0TWFwcGluZ1wiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2VtYW50aWNPYmplY3RNYXBwaW5nVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0luc3RhbmNlQW5ub3RhdGlvblwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uc1wiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5GaWVsZENvbnRyb2xcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpZWxkQ29udHJvbFR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuQXBwbGljYXRpb25cIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkFwcGxpY2F0aW9uVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UaW1lc3RhbXBcIiA9IFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkVycm9yUmVzb2x1dGlvblwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRXJyb3JSZXNvbHV0aW9uVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5NZXNzYWdlc1wiID0gXCJFZG0uQ29tcGxleFR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEubnVtZXJpY1NldmVyaXR5XCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5OdW1lcmljTWVzc2FnZVNldmVyaXR5VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5NYXhpbXVtTnVtZXJpY01lc3NhZ2VTZXZlcml0eVwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTnVtZXJpY01lc3NhZ2VTZXZlcml0eVR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNBY3Rpb25Dcml0aWNhbFwiID0gXCJFZG0uQm9vbGVhblwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5BdHRyaWJ1dGVzXCIgPSBcIkVkbS5Qcm9wZXJ0eVBhdGhcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuUmVsYXRlZFJlY3Vyc2l2ZUhpZXJhcmNoeVwiID0gXCJFZG0uQW5ub3RhdGlvblBhdGhcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSW50ZXJ2YWxcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkludGVydmFsVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5SZXN1bHRDb250ZXh0XCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5XZWFrUmVmZXJlbnRpYWxDb25zdHJhaW50XCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5XZWFrUmVmZXJlbnRpYWxDb25zdHJhaW50VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc05hdHVyYWxQZXJzb25cIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RSZWxldmFudFF1YWxpZmllcnNcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNpbXBsZUlkZW50aWZpZXJcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RNYXBwaW5nXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RNYXBwaW5nVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0NhbGVuZGFyWWVhclwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDYWxlbmRhckhhbGZ5ZWFyXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0NhbGVuZGFyUXVhcnRlclwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDYWxlbmRhck1vbnRoXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0NhbGVuZGFyV2Vla1wiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNEYXlPZkNhbGVuZGFyTW9udGhcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRGF5T2ZDYWxlbmRhclllYXJcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzQ2FsZW5kYXJZZWFySGFsZnllYXJcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzQ2FsZW5kYXJZZWFyUXVhcnRlclwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDYWxlbmRhclllYXJNb250aFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDYWxlbmRhclllYXJXZWVrXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0NhbGVuZGFyRGF0ZVwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNGaXNjYWxZZWFyXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0Zpc2NhbFBlcmlvZFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNGaXNjYWxZZWFyUGVyaW9kXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0Zpc2NhbFF1YXJ0ZXJcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRmlzY2FsWWVhclF1YXJ0ZXJcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRmlzY2FsV2Vla1wiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNGaXNjYWxZZWFyV2Vla1wiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNEYXlPZkZpc2NhbFllYXJcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRmlzY2FsWWVhclZhcmlhbnRcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLk11dHVhbGx5RXhjbHVzaXZlVGVybVwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290XCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdFJvb3RUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Tm9kZVwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnROb2RlVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdEFjdGl2YXRpb25WaWFcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNpbXBsZUlkZW50aWZpZXJcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRWRpdGFibGVGaWVsZEZvclwiID0gXCJFZG0uUHJvcGVydHlQYXRoXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNlbWFudGljS2V5XCIgPSBcIkVkbS5Qcm9wZXJ0eVBhdGhcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2lkZUVmZmVjdHNcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNpZGVFZmZlY3RzVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EZWZhdWx0VmFsdWVzRnVuY3Rpb25cIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlF1YWxpZmllZE5hbWVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRmlsdGVyRGVmYXVsdFZhbHVlXCIgPSBcIkVkbS5QcmltaXRpdmVUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpbHRlckRlZmF1bHRWYWx1ZUhpZ2hcIiA9IFwiRWRtLlByaW1pdGl2ZVR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU29ydE9yZGVyXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Tb3J0T3JkZXJUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlJlY3Vyc2l2ZUhpZXJhcmNoeVwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuUmVjdXJzaXZlSGllcmFyY2h5VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5DcmVhdGVkQXRcIiA9IFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkNyZWF0ZWRCeVwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVXNlcklEXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkNoYW5nZWRBdFwiID0gXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuQ2hhbmdlZEJ5XCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Vc2VySURcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuQXBwbHlNdWx0aVVuaXRCZWhhdmlvckZvclNvcnRpbmdBbmRGaWx0ZXJpbmdcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29kZUxpc3QudjEuQ3VycmVuY3lDb2Rlc1wiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db2RlTGlzdC52MS5Db2RlTGlzdFNvdXJjZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvZGVMaXN0LnYxLlVuaXRzT2ZNZWFzdXJlXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvZGVMaXN0LnYxLkNvZGVMaXN0U291cmNlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29kZUxpc3QudjEuU3RhbmRhcmRDb2RlXCIgPSBcIkVkbS5Qcm9wZXJ0eVBhdGhcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db2RlTGlzdC52MS5FeHRlcm5hbENvZGVcIiA9IFwiRWRtLlByb3BlcnR5UGF0aFwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvZGVMaXN0LnYxLklzQ29uZmlndXJhdGlvbkRlcHJlY2F0aW9uQ29kZVwiID0gXCJFZG0uQm9vbGVhblwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQ29udGFjdFwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLkNvbnRhY3RUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5BZGRyZXNzXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQWRkcmVzc1R5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLklzRW1haWxBZGRyZXNzXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuSXNQaG9uZU51bWJlclwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLkV2ZW50XCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuRXZlbnREYXRhXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5UYXNrXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuVGFza0RhdGFcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLk1lc3NhZ2VcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5NZXNzYWdlRGF0YVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkhpZXJhcmNoeS52MS5SZWN1cnNpdmVIaWVyYXJjaHlcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuSGllcmFyY2h5LnYxLlJlY3Vyc2l2ZUhpZXJhcmNoeVR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5QZXJzb25hbERhdGEudjEuRW50aXR5U2VtYW50aWNzXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlBlcnNvbmFsRGF0YS52MS5FbnRpdHlTZW1hbnRpY3NUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuUGVyc29uYWxEYXRhLnYxLkZpZWxkU2VtYW50aWNzXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlBlcnNvbmFsRGF0YS52MS5GaWVsZFNlbWFudGljc1R5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5QZXJzb25hbERhdGEudjEuSXNQb3RlbnRpYWxseVBlcnNvbmFsXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlBlcnNvbmFsRGF0YS52MS5Jc1BvdGVudGlhbGx5U2Vuc2l0aXZlXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlNlc3Npb24udjEuU3RpY2t5U2Vzc2lvblN1cHBvcnRlZFwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxLlN0aWNreVNlc3Npb25TdXBwb3J0ZWRUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGVhZGVySW5mb1wiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IZWFkZXJJbmZvVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLklkZW50aWZpY2F0aW9uXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEFic3RyYWN0XCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQmFkZ2VcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQmFkZ2VUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkQWJzdHJhY3RcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TdGF0dXNJbmZvXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEFic3RyYWN0XCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmllbGRHcm91cFwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GaWVsZEdyb3VwVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbm5lY3RlZEZpZWxkc1wiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Db25uZWN0ZWRGaWVsZHNUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuR2VvTG9jYXRpb25zXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkdlb0xvY2F0aW9uVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkdlb0xvY2F0aW9uXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkdlb0xvY2F0aW9uVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbnRhY3RzXCIgPSBcIkVkbS5Bbm5vdGF0aW9uUGF0aFwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLk1lZGlhUmVzb3VyY2VcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTWVkaWFSZXNvdXJjZVR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YVBvaW50VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLktQSVwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5LUElUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnREZWZpbml0aW9uVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlZhbHVlQ3JpdGljYWxpdHlcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuVmFsdWVDcml0aWNhbGl0eVR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Dcml0aWNhbGl0eUxhYmVsc1wiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Dcml0aWNhbGl0eUxhYmVsVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvbkZpZWxkc1wiID0gXCJFZG0uUHJvcGVydHlQYXRoXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmFjZXRzXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZhY2V0XCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGVhZGVyRmFjZXRzXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZhY2V0XCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUXVpY2tWaWV3RmFjZXRzXCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZhY2V0XCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUXVpY2tDcmVhdGVGYWNldHNcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmFjZXRcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GaWx0ZXJGYWNldHNcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUmVmZXJlbmNlRmFjZXRcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUHJlc2VudGF0aW9uVmFyaWFudFwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QcmVzZW50YXRpb25WYXJpYW50VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblZhcmlhbnRcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uVmFyaWFudFR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5UaGluZ1BlcnNwZWN0aXZlXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLklzU3VtbWFyeVwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QYXJ0T2ZQcmV2aWV3XCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLk1hcFwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5HYWxsZXJ5XCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLklzSW1hZ2VVUkxcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSXNJbWFnZVwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5NdWx0aUxpbmVUZXh0XCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlRleHRBcnJhbmdlbWVudFwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5UZXh0QXJyYW5nZW1lbnRUeXBlXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSW1wb3J0YW5jZVwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5JbXBvcnRhbmNlVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhpZGRlblwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DcmVhdGVIaWRkZW5cIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuVXBkYXRlSGlkZGVuXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRlbGV0ZUhpZGRlblwiID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IaWRkZW5GaWx0ZXJcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRGVmYXVsdFwiID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRBYnN0cmFjdFwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNyaXRpY2FsaXR5XCIgPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNyaXRpY2FsaXR5VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb25cIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ3JpdGljYWxpdHlDYWxjdWxhdGlvblR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5FbXBoYXNpemVkXCIgPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLk9yZGVyQnlcIiA9IFwiRWRtLlByb3BlcnR5UGF0aFwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlBhcmFtZXRlckRlZmF1bHRWYWx1ZVwiID0gXCJFZG0uUHJpbWl0aXZlVHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlJlY29tbWVuZGF0aW9uU3RhdGVcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUmVjb21tZW5kYXRpb25TdGF0ZVR5cGVcIixcblx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWNvbW1lbmRhdGlvbkxpc3RcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUmVjb21tZW5kYXRpb25MaXN0VHlwZVwiLFxuXHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkV4Y2x1ZGVGcm9tTmF2aWdhdGlvbkNvbnRleHRcIiA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCIsXG5cdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuSFRNTDUudjEuQ3NzRGVmYXVsdHNcIiA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuSFRNTDUudjEuQ3NzRGVmYXVsdHNUeXBlXCJcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRSZWZlcmVuY2VzOiBSZWZlcmVuY2VzV2l0aE1hcCA9IFtcblx0eyBhbGlhczogXCJDYXBhYmlsaXRpZXNcIiwgbmFtZXNwYWNlOiBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjFcIiwgdXJpOiBcIlwiIH0sXG5cdHsgYWxpYXM6IFwiQWdncmVnYXRpb25cIiwgbmFtZXNwYWNlOiBcIk9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMVwiLCB1cmk6IFwiXCIgfSxcblx0eyBhbGlhczogXCJWYWxpZGF0aW9uXCIsIG5hbWVzcGFjZTogXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMVwiLCB1cmk6IFwiXCIgfSxcblx0eyBuYW1lc3BhY2U6IFwiT3JnLk9EYXRhLkNvcmUuVjFcIiwgYWxpYXM6IFwiQ29yZVwiLCB1cmk6IFwiXCIgfSxcblx0eyBuYW1lc3BhY2U6IFwiT3JnLk9EYXRhLk1lYXN1cmVzLlYxXCIsIGFsaWFzOiBcIk1lYXN1cmVzXCIsIHVyaTogXCJcIiB9LFxuXHR7IG5hbWVzcGFjZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjFcIiwgYWxpYXM6IFwiQ29tbW9uXCIsIHVyaTogXCJcIiB9LFxuXHR7IG5hbWVzcGFjZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MVwiLCBhbGlhczogXCJVSVwiLCB1cmk6IFwiXCIgfSxcblx0eyBuYW1lc3BhY2U6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuU2Vzc2lvbi52MVwiLCBhbGlhczogXCJTZXNzaW9uXCIsIHVyaTogXCJcIiB9LFxuXHR7IG5hbWVzcGFjZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5BbmFseXRpY3MudjFcIiwgYWxpYXM6IFwiQW5hbHl0aWNzXCIsIHVyaTogXCJcIiB9LFxuXHR7IG5hbWVzcGFjZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db2RlTGlzdC52MVwiLCBhbGlhczogXCJDb2RlTGlzdFwiLCB1cmk6IFwiXCIgfSxcblx0eyBuYW1lc3BhY2U6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuUGVyc29uYWxEYXRhLnYxXCIsIGFsaWFzOiBcIlBlcnNvbmFsRGF0YVwiLCB1cmk6IFwiXCIgfSxcblx0eyBuYW1lc3BhY2U6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MVwiLCBhbGlhczogXCJDb21tdW5pY2F0aW9uXCIsIHVyaTogXCJcIiB9LFxuXHR7IG5hbWVzcGFjZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5IVE1MNS52MVwiLCBhbGlhczogXCJIVE1MNVwiLCB1cmk6IFwiXCIgfVxuXTtcblxudHlwZSBSZWZlcmVuY2VzV2l0aE1hcCA9IFJlZmVyZW5jZVtdICYge1xuXHRyZWZlcmVuY2VNYXA/OiBSZWNvcmQ8c3RyaW5nLCBSZWZlcmVuY2U+O1xuXHRyZXZlcnNlUmVmZXJlbmNlTWFwPzogUmVjb3JkPHN0cmluZywgUmVmZXJlbmNlPjtcbn07XG5cbmZ1bmN0aW9uIGFsaWFzKHJlZmVyZW5jZXM6IFJlZmVyZW5jZXNXaXRoTWFwLCB1bmFsaWFzZWRWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcblx0aWYgKCFyZWZlcmVuY2VzLnJldmVyc2VSZWZlcmVuY2VNYXApIHtcblx0XHRyZWZlcmVuY2VzLnJldmVyc2VSZWZlcmVuY2VNYXAgPSByZWZlcmVuY2VzLnJlZHVjZSgobWFwOiBSZWNvcmQ8c3RyaW5nLCBSZWZlcmVuY2U+LCByZWZlcmVuY2UpID0+IHtcblx0XHRcdG1hcFtyZWZlcmVuY2UubmFtZXNwYWNlXSA9IHJlZmVyZW5jZTtcblx0XHRcdHJldHVybiBtYXA7XG5cdFx0fSwge30pO1xuXHR9XG5cdGlmICghdW5hbGlhc2VkVmFsdWUpIHtcblx0XHRyZXR1cm4gdW5hbGlhc2VkVmFsdWU7XG5cdH1cblx0Y29uc3QgbGFzdERvdEluZGV4ID0gdW5hbGlhc2VkVmFsdWUubGFzdEluZGV4T2YoXCIuXCIpO1xuXHRjb25zdCBuYW1lc3BhY2UgPSB1bmFsaWFzZWRWYWx1ZS5zdWJzdHIoMCwgbGFzdERvdEluZGV4KTtcblx0Y29uc3QgdmFsdWUgPSB1bmFsaWFzZWRWYWx1ZS5zdWJzdHIobGFzdERvdEluZGV4ICsgMSk7XG5cdGNvbnN0IHJlZmVyZW5jZSA9IHJlZmVyZW5jZXMucmV2ZXJzZVJlZmVyZW5jZU1hcFtuYW1lc3BhY2VdO1xuXHRpZiAocmVmZXJlbmNlKSB7XG5cdFx0cmV0dXJuIGAke3JlZmVyZW5jZS5hbGlhc30uJHt2YWx1ZX1gO1xuXHR9IGVsc2Uge1xuXHRcdC8vIFRyeSB0byBzZWUgaWYgaXQncyBhbiBhbm5vdGF0aW9uIFBhdGggbGlrZSB0b19TYWxlc09yZGVyL0BVSS5MaW5lSXRlbVxuXHRcdGlmICh1bmFsaWFzZWRWYWx1ZS5pbmRleE9mKFwiQFwiKSAhPT0gLTEpIHtcblx0XHRcdGNvbnN0IFtwcmVBbGlhcywgLi4ucG9zdEFsaWFzXSA9IHVuYWxpYXNlZFZhbHVlLnNwbGl0KFwiQFwiKTtcblx0XHRcdHJldHVybiBgJHtwcmVBbGlhc31AJHthbGlhcyhyZWZlcmVuY2VzLCBwb3N0QWxpYXMuam9pbihcIkBcIikpfWA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB1bmFsaWFzZWRWYWx1ZTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gdW5hbGlhcyhyZWZlcmVuY2VzOiBSZWZlcmVuY2VzV2l0aE1hcCwgYWxpYXNlZFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRpZiAoIXJlZmVyZW5jZXMucmVmZXJlbmNlTWFwKSB7XG5cdFx0cmVmZXJlbmNlcy5yZWZlcmVuY2VNYXAgPSByZWZlcmVuY2VzLnJlZHVjZSgobWFwOiBSZWNvcmQ8c3RyaW5nLCBSZWZlcmVuY2U+LCByZWZlcmVuY2UpID0+IHtcblx0XHRcdG1hcFtyZWZlcmVuY2UuYWxpYXNdID0gcmVmZXJlbmNlO1xuXHRcdFx0cmV0dXJuIG1hcDtcblx0XHR9LCB7fSk7XG5cdH1cblx0aWYgKCFhbGlhc2VkVmFsdWUpIHtcblx0XHRyZXR1cm4gYWxpYXNlZFZhbHVlO1xuXHR9XG5cdGNvbnN0IFthbGlhcywgLi4udmFsdWVdID0gYWxpYXNlZFZhbHVlLnNwbGl0KFwiLlwiKTtcblx0Y29uc3QgcmVmZXJlbmNlID0gcmVmZXJlbmNlcy5yZWZlcmVuY2VNYXBbYWxpYXNdO1xuXHRpZiAocmVmZXJlbmNlKSB7XG5cdFx0cmV0dXJuIGAke3JlZmVyZW5jZS5uYW1lc3BhY2V9LiR7dmFsdWUuam9pbihcIi5cIil9YDtcblx0fSBlbHNlIHtcblx0XHQvLyBUcnkgdG8gc2VlIGlmIGl0J3MgYW4gYW5ub3RhdGlvbiBQYXRoIGxpa2UgdG9fU2FsZXNPcmRlci9AVUkuTGluZUl0ZW1cblx0XHRpZiAoYWxpYXNlZFZhbHVlLmluZGV4T2YoXCJAXCIpICE9PSAtMSkge1xuXHRcdFx0Y29uc3QgW3ByZUFsaWFzLCAuLi5wb3N0QWxpYXNdID0gYWxpYXNlZFZhbHVlLnNwbGl0KFwiQFwiKTtcblx0XHRcdHJldHVybiBgJHtwcmVBbGlhc31AJHt1bmFsaWFzKHJlZmVyZW5jZXMsIHBvc3RBbGlhcy5qb2luKFwiQFwiKSl9YDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGFsaWFzZWRWYWx1ZTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gYnVpbGRPYmplY3RNYXAocGFyc2VyT3V0cHV0OiBQYXJzZXJPdXRwdXQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcblx0Y29uc3Qgb2JqZWN0TWFwOiBhbnkgPSB7fTtcblx0aWYgKHBhcnNlck91dHB1dC5zY2hlbWEuZW50aXR5Q29udGFpbmVyICYmIHBhcnNlck91dHB1dC5zY2hlbWEuZW50aXR5Q29udGFpbmVyLmZ1bGx5UXVhbGlmaWVkTmFtZSkge1xuXHRcdG9iamVjdE1hcFtwYXJzZXJPdXRwdXQuc2NoZW1hLmVudGl0eUNvbnRhaW5lci5mdWxseVF1YWxpZmllZE5hbWVdID0gcGFyc2VyT3V0cHV0LnNjaGVtYS5lbnRpdHlDb250YWluZXI7XG5cdH1cblx0cGFyc2VyT3V0cHV0LnNjaGVtYS5lbnRpdHlTZXRzLmZvckVhY2goZW50aXR5U2V0ID0+IHtcblx0XHRvYmplY3RNYXBbZW50aXR5U2V0LmZ1bGx5UXVhbGlmaWVkTmFtZV0gPSBlbnRpdHlTZXQ7XG5cdH0pO1xuXHRwYXJzZXJPdXRwdXQuc2NoZW1hLmFjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuXHRcdG9iamVjdE1hcFthY3Rpb24uZnVsbHlRdWFsaWZpZWROYW1lXSA9IGFjdGlvbjtcblx0XHRpZiAoYWN0aW9uLmlzQm91bmQpIHtcblx0XHRcdGNvbnN0IHVuQm91bmRBY3Rpb25OYW1lID0gYWN0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdChcIihcIilbMF07XG5cdFx0XHRpZiAoIW9iamVjdE1hcFt1bkJvdW5kQWN0aW9uTmFtZV0pIHtcblx0XHRcdFx0b2JqZWN0TWFwW3VuQm91bmRBY3Rpb25OYW1lXSA9IHtcblx0XHRcdFx0XHRfdHlwZTogXCJVbmJvdW5kR2VuZXJpY0FjdGlvblwiLFxuXHRcdFx0XHRcdGFjdGlvbnM6IFtdXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHRvYmplY3RNYXBbdW5Cb3VuZEFjdGlvbk5hbWVdLmFjdGlvbnMucHVzaChhY3Rpb24pO1xuXHRcdH1cblxuXHRcdGFjdGlvbi5wYXJhbWV0ZXJzLmZvckVhY2gocGFyYW1ldGVyID0+IHtcblx0XHRcdG9iamVjdE1hcFtwYXJhbWV0ZXIuZnVsbHlRdWFsaWZpZWROYW1lXSA9IHBhcmFtZXRlcjtcblx0XHR9KTtcblx0fSk7XG5cdHBhcnNlck91dHB1dC5zY2hlbWEuY29tcGxleFR5cGVzLmZvckVhY2goY29tcGxleFR5cGUgPT4ge1xuXHRcdG9iamVjdE1hcFtjb21wbGV4VHlwZS5mdWxseVF1YWxpZmllZE5hbWVdID0gY29tcGxleFR5cGU7XG5cdFx0Y29tcGxleFR5cGUucHJvcGVydGllcy5mb3JFYWNoKHByb3BlcnR5ID0+IHtcblx0XHRcdG9iamVjdE1hcFtwcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdID0gcHJvcGVydHk7XG5cdFx0fSk7XG5cdH0pO1xuXHRwYXJzZXJPdXRwdXQuc2NoZW1hLnR5cGVEZWZpbml0aW9ucy5mb3JFYWNoKHR5cGVEZWZpbml0aW9uID0+IHtcblx0XHRvYmplY3RNYXBbdHlwZURlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lXSA9IHR5cGVEZWZpbml0aW9uO1xuXHR9KTtcblx0cGFyc2VyT3V0cHV0LnNjaGVtYS5lbnRpdHlUeXBlcy5mb3JFYWNoKGVudGl0eVR5cGUgPT4ge1xuXHRcdG9iamVjdE1hcFtlbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZV0gPSBlbnRpdHlUeXBlO1xuXHRcdGVudGl0eVR5cGUuZW50aXR5UHJvcGVydGllcy5mb3JFYWNoKHByb3BlcnR5ID0+IHtcblx0XHRcdG9iamVjdE1hcFtwcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdID0gcHJvcGVydHk7XG5cdFx0XHRpZiAocHJvcGVydHkudHlwZS5pbmRleE9mKFwiRWRtXCIpICE9PSAwKSB7XG5cdFx0XHRcdC8vIEhhbmRsZSBjb21wbGV4IHR5cGVzXG5cdFx0XHRcdGNvbnN0IGNvbXBsZXhUeXBlRGVmaW5pdGlvbiA9IG9iamVjdE1hcFtwcm9wZXJ0eS50eXBlXSBhcyBDb21wbGV4VHlwZSB8IFR5cGVEZWZpbml0aW9uO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0Y29tcGxleFR5cGVEZWZpbml0aW9uICYmXG5cdFx0XHRcdFx0Y29tcGxleFR5cGVEZWZpbml0aW9uLl90eXBlID09PSBcIkNvbXBsZXhUeXBlXCIgJiZcblx0XHRcdFx0XHRjb21wbGV4VHlwZURlZmluaXRpb24ucHJvcGVydGllc1xuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjb21wbGV4VHlwZURlZmluaXRpb24ucHJvcGVydGllcy5mb3JFYWNoKGNvbXBsZXhUeXBlUHJvcCA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBjb21wbGV4VHlwZVByb3BUYXJnZXQ6IFBhcnNlclByb3BlcnR5ID0gT2JqZWN0LmFzc2lnbihjb21wbGV4VHlwZVByb3AsIHtcblx0XHRcdFx0XHRcdFx0X3R5cGU6IFwiUHJvcGVydHlcIixcblx0XHRcdFx0XHRcdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBwcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWUgKyBcIi9cIiArIGNvbXBsZXhUeXBlUHJvcC5uYW1lXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdG9iamVjdE1hcFtjb21wbGV4VHlwZVByb3BUYXJnZXQuZnVsbHlRdWFsaWZpZWROYW1lXSA9IGNvbXBsZXhUeXBlUHJvcFRhcmdldDtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGVudGl0eVR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMuZm9yRWFjaChuYXZQcm9wZXJ0eSA9PiB7XG5cdFx0XHRvYmplY3RNYXBbbmF2UHJvcGVydHkuZnVsbHlRdWFsaWZpZWROYW1lXSA9IG5hdlByb3BlcnR5O1xuXHRcdH0pO1xuXHR9KTtcblxuXHRPYmplY3Qua2V5cyhwYXJzZXJPdXRwdXQuc2NoZW1hLmFubm90YXRpb25zKS5mb3JFYWNoKGFubm90YXRpb25Tb3VyY2UgPT4ge1xuXHRcdHBhcnNlck91dHB1dC5zY2hlbWEuYW5ub3RhdGlvbnNbYW5ub3RhdGlvblNvdXJjZV0uZm9yRWFjaChhbm5vdGF0aW9uTGlzdCA9PiB7XG5cdFx0XHRjb25zdCBjdXJyZW50VGFyZ2V0TmFtZSA9IHVuYWxpYXMocGFyc2VyT3V0cHV0LnJlZmVyZW5jZXMsIGFubm90YXRpb25MaXN0LnRhcmdldCk7XG5cdFx0XHRhbm5vdGF0aW9uTGlzdC5hbm5vdGF0aW9ucy5mb3JFYWNoKGFubm90YXRpb24gPT4ge1xuXHRcdFx0XHRsZXQgYW5ub3RhdGlvbkZRTiA9IGAke2N1cnJlbnRUYXJnZXROYW1lfUAke3VuYWxpYXMocGFyc2VyT3V0cHV0LnJlZmVyZW5jZXMsIGFubm90YXRpb24udGVybSl9YDtcblx0XHRcdFx0aWYgKGFubm90YXRpb24ucXVhbGlmaWVyKSB7XG5cdFx0XHRcdFx0YW5ub3RhdGlvbkZRTiArPSBgIyR7YW5ub3RhdGlvbi5xdWFsaWZpZXJ9YDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodHlwZW9mIGFubm90YXRpb24gIT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0XHRkZWJ1Z2dlcjtcblx0XHRcdFx0fVxuXHRcdFx0XHRvYmplY3RNYXBbYW5ub3RhdGlvbkZRTl0gPSBhbm5vdGF0aW9uO1xuXHRcdFx0XHQoYW5ub3RhdGlvbiBhcyBBbm5vdGF0aW9uKS5mdWxseVF1YWxpZmllZE5hbWUgPSBhbm5vdGF0aW9uRlFOO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH0pO1xuXHRyZXR1cm4gb2JqZWN0TWFwO1xufVxuXG5mdW5jdGlvbiBjb21iaW5lUGF0aChjdXJyZW50VGFyZ2V0OiBzdHJpbmcsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG5cdGlmIChwYXRoLnN0YXJ0c1dpdGgoXCJAXCIpKSB7XG5cdFx0cmV0dXJuIGN1cnJlbnRUYXJnZXQgKyB1bmFsaWFzKGRlZmF1bHRSZWZlcmVuY2VzLCBwYXRoKTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gY3VycmVudFRhcmdldCArIFwiL1wiICsgcGF0aDtcblx0fVxufVxuXG5mdW5jdGlvbiBhZGRBbm5vdGF0aW9uRXJyb3JNZXNzYWdlKHBhdGg6IHN0cmluZywgb0Vycm9yTXNnOiBhbnkpIHtcblx0aWYgKCFBTExfQU5OT1RBVElPTl9FUlJPUlNbcGF0aF0pIHtcblx0XHRBTExfQU5OT1RBVElPTl9FUlJPUlNbcGF0aF0gPSBbb0Vycm9yTXNnXTtcblx0fSBlbHNlIHtcblx0XHRBTExfQU5OT1RBVElPTl9FUlJPUlNbcGF0aF0ucHVzaChvRXJyb3JNc2cpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVUYXJnZXQoXG5cdG9iamVjdE1hcDogYW55LFxuXHRjdXJyZW50VGFyZ2V0OiBhbnksXG5cdHBhdGg6IHN0cmluZyxcblx0cGF0aE9ubHk6IGJvb2xlYW4gPSBmYWxzZSxcblx0aW5jbHVkZVZpc2l0ZWRPYmplY3RzOiBib29sZWFuID0gZmFsc2UsXG5cdGFubm90YXRpb25UeXBlPzogc3RyaW5nLFxuXHRhbm5vdGF0aW9uc1Rlcm0/OiBzdHJpbmdcbikge1xuXHRpZiAoIXBhdGgpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdC8vY29uc3QgcHJvcGVydHlQYXRoID0gcGF0aDtcblx0bGV0IGFWaXNpdGVkT2JqZWN0czogYW55W10gPSBbXTtcblx0aWYgKGN1cnJlbnRUYXJnZXQgJiYgY3VycmVudFRhcmdldC5fdHlwZSA9PT0gXCJQcm9wZXJ0eVwiKSB7XG5cdFx0Y3VycmVudFRhcmdldCA9IG9iamVjdE1hcFtjdXJyZW50VGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdChcIi9cIilbMF1dO1xuXHR9XG5cdHBhdGggPSBjb21iaW5lUGF0aChjdXJyZW50VGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZSwgcGF0aCk7XG5cblx0Y29uc3QgcGF0aFNwbGl0ID0gcGF0aC5zcGxpdChcIi9cIik7XG5cdGNvbnN0IHRhcmdldFBhdGhTcGxpdDogc3RyaW5nW10gPSBbXTtcblx0cGF0aFNwbGl0LmZvckVhY2gocGF0aFBhcnQgPT4ge1xuXHRcdC8vIFNlcGFyYXRlIG91dCB0aGUgYW5ub3RhdGlvblxuXHRcdGlmIChwYXRoUGFydC5pbmRleE9mKFwiQFwiKSAhPT0gLTEpIHtcblx0XHRcdGNvbnN0IFtwYXRoLCBhbm5vdGF0aW9uUGF0aF0gPSBwYXRoUGFydC5zcGxpdChcIkBcIik7XG5cdFx0XHR0YXJnZXRQYXRoU3BsaXQucHVzaChwYXRoKTtcblx0XHRcdHRhcmdldFBhdGhTcGxpdC5wdXNoKGBAJHthbm5vdGF0aW9uUGF0aH1gKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGFyZ2V0UGF0aFNwbGl0LnB1c2gocGF0aFBhcnQpO1xuXHRcdH1cblx0fSk7XG5cdGxldCBjdXJyZW50UGF0aCA9IHBhdGg7XG5cdGxldCBjdXJyZW50Q29udGV4dCA9IGN1cnJlbnRUYXJnZXQ7XG5cdGNvbnN0IHRhcmdldCA9IHRhcmdldFBhdGhTcGxpdC5yZWR1Y2UoKGN1cnJlbnRWYWx1ZTogYW55LCBwYXRoUGFydCkgPT4ge1xuXHRcdGlmIChwYXRoUGFydCA9PT0gXCIkVHlwZVwiICYmIGN1cnJlbnRWYWx1ZS5fdHlwZSA9PT0gXCJFbnRpdHlUeXBlXCIpIHtcblx0XHRcdHJldHVybiBjdXJyZW50VmFsdWU7XG5cdFx0fVxuXHRcdGlmIChwYXRoUGFydC5sZW5ndGggPT09IDApIHtcblx0XHRcdC8vIEVtcHR5IFBhdGggYWZ0ZXIgYW4gZW50aXR5U2V0IG1lYW5zIGVudGl0eVR5cGVcblx0XHRcdGlmIChjdXJyZW50VmFsdWUgJiYgY3VycmVudFZhbHVlLl90eXBlID09PSBcIkVudGl0eVNldFwiICYmIGN1cnJlbnRWYWx1ZS5lbnRpdHlUeXBlKSB7XG5cdFx0XHRcdGlmIChpbmNsdWRlVmlzaXRlZE9iamVjdHMpIHtcblx0XHRcdFx0XHRhVmlzaXRlZE9iamVjdHMucHVzaChjdXJyZW50VmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGN1cnJlbnRWYWx1ZSA9IGN1cnJlbnRWYWx1ZS5lbnRpdHlUeXBlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSAmJiBjdXJyZW50VmFsdWUuX3R5cGUgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIgJiYgY3VycmVudFZhbHVlLnRhcmdldFR5cGUpIHtcblx0XHRcdFx0aWYgKGluY2x1ZGVWaXNpdGVkT2JqZWN0cykge1xuXHRcdFx0XHRcdGFWaXNpdGVkT2JqZWN0cy5wdXNoKGN1cnJlbnRWYWx1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y3VycmVudFZhbHVlID0gY3VycmVudFZhbHVlLnRhcmdldFR5cGU7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY3VycmVudFZhbHVlO1xuXHRcdH1cblx0XHRpZiAoaW5jbHVkZVZpc2l0ZWRPYmplY3RzICYmIGN1cnJlbnRWYWx1ZSAhPT0gbnVsbCAmJiBjdXJyZW50VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0YVZpc2l0ZWRPYmplY3RzLnB1c2goY3VycmVudFZhbHVlKTtcblx0XHR9XG5cdFx0aWYgKCFjdXJyZW50VmFsdWUpIHtcblx0XHRcdGN1cnJlbnRQYXRoID0gcGF0aFBhcnQ7XG5cdFx0fSBlbHNlIGlmIChjdXJyZW50VmFsdWUuX3R5cGUgPT09IFwiRW50aXR5U2V0XCIgJiYgcGF0aFBhcnQgPT09IFwiJFR5cGVcIikge1xuXHRcdFx0Y3VycmVudFZhbHVlID0gY3VycmVudFZhbHVlLnRhcmdldFR5cGU7XG5cdFx0XHRyZXR1cm4gY3VycmVudFZhbHVlO1xuXHRcdH0gZWxzZSBpZiAoY3VycmVudFZhbHVlLl90eXBlID09PSBcIkVudGl0eVNldFwiICYmIGN1cnJlbnRWYWx1ZS5lbnRpdHlUeXBlKSB7XG5cdFx0XHRjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRWYWx1ZS5lbnRpdHlUeXBlTmFtZSwgcGF0aFBhcnQpO1xuXHRcdH0gZWxzZSBpZiAoY3VycmVudFZhbHVlLl90eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiICYmIGN1cnJlbnRWYWx1ZS50YXJnZXRUeXBlTmFtZSkge1xuXHRcdFx0Y3VycmVudFBhdGggPSBjb21iaW5lUGF0aChjdXJyZW50VmFsdWUudGFyZ2V0VHlwZU5hbWUsIHBhdGhQYXJ0KTtcblx0XHR9IGVsc2UgaWYgKGN1cnJlbnRWYWx1ZS5fdHlwZSA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIiAmJiBjdXJyZW50VmFsdWUudGFyZ2V0VHlwZSkge1xuXHRcdFx0Y3VycmVudFBhdGggPSBjb21iaW5lUGF0aChjdXJyZW50VmFsdWUudGFyZ2V0VHlwZS5mdWxseVF1YWxpZmllZE5hbWUsIHBhdGhQYXJ0KTtcblx0XHR9IGVsc2UgaWYgKGN1cnJlbnRWYWx1ZS5fdHlwZSA9PT0gXCJQcm9wZXJ0eVwiKSB7XG5cdFx0XHQvLyBDb21wbGV4VHlwZSBvciBQcm9wZXJ0eVxuXHRcdFx0aWYgKGN1cnJlbnRWYWx1ZS50YXJnZXRUeXBlKSB7XG5cdFx0XHRcdGN1cnJlbnRQYXRoID0gY29tYmluZVBhdGgoY3VycmVudFZhbHVlLnRhcmdldFR5cGUuZnVsbHlRdWFsaWZpZWROYW1lLCBwYXRoUGFydCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRWYWx1ZS5mdWxseVF1YWxpZmllZE5hbWUsIHBhdGhQYXJ0KTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGN1cnJlbnRWYWx1ZS5fdHlwZSA9PT0gXCJBY3Rpb25cIiAmJiBjdXJyZW50VmFsdWUuaXNCb3VuZCkge1xuXHRcdFx0Y3VycmVudFBhdGggPSBjb21iaW5lUGF0aChjdXJyZW50VmFsdWUuZnVsbHlRdWFsaWZpZWROYW1lLCBwYXRoUGFydCk7XG5cdFx0XHRpZiAoIW9iamVjdE1hcFtjdXJyZW50UGF0aF0pIHtcblx0XHRcdFx0Y3VycmVudFBhdGggPSBjb21iaW5lUGF0aChjdXJyZW50VmFsdWUuc291cmNlVHlwZSwgcGF0aFBhcnQpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoY3VycmVudFZhbHVlLl90eXBlID09PSBcIkFjdGlvblBhcmFtZXRlclwiICYmIGN1cnJlbnRWYWx1ZS5pc0VudGl0eVNldCkge1xuXHRcdFx0Y3VycmVudFBhdGggPSBjb21iaW5lUGF0aChjdXJyZW50VmFsdWUudHlwZSwgcGF0aFBhcnQpO1xuXHRcdH0gZWxzZSBpZiAoY3VycmVudFZhbHVlLl90eXBlID09PSBcIkFjdGlvblBhcmFtZXRlclwiICYmICFjdXJyZW50VmFsdWUuaXNFbnRpdHlTZXQpIHtcblx0XHRcdGN1cnJlbnRQYXRoID0gY29tYmluZVBhdGgoXG5cdFx0XHRcdGN1cnJlbnRUYXJnZXQuZnVsbHlRdWFsaWZpZWROYW1lLnN1YnN0cigwLCBjdXJyZW50VGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZS5sYXN0SW5kZXhPZihcIi9cIikpLFxuXHRcdFx0XHRwYXRoUGFydFxuXHRcdFx0KTtcblx0XHRcdGlmICghb2JqZWN0TWFwW2N1cnJlbnRQYXRoXSkge1xuXHRcdFx0XHRsZXQgbGFzdElkeCA9IGN1cnJlbnRUYXJnZXQuZnVsbHlRdWFsaWZpZWROYW1lLmxhc3RJbmRleE9mKFwiL1wiKTtcblx0XHRcdFx0aWYgKGxhc3RJZHggPT09IC0xKSB7XG5cdFx0XHRcdFx0bGFzdElkeCA9IGN1cnJlbnRUYXJnZXQuZnVsbHlRdWFsaWZpZWROYW1lLmxlbmd0aDtcblx0XHRcdFx0fVxuXHRcdFx0XHRjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKFxuXHRcdFx0XHRcdChvYmplY3RNYXBbY3VycmVudFRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUuc3Vic3RyKDAsIGxhc3RJZHgpXSBhcyBBY3Rpb24pLnNvdXJjZVR5cGUsXG5cdFx0XHRcdFx0cGF0aFBhcnRcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3VycmVudFBhdGggPSBjb21iaW5lUGF0aChjdXJyZW50VmFsdWUuZnVsbHlRdWFsaWZpZWROYW1lLCBwYXRoUGFydCk7XG5cdFx0XHRpZiAocGF0aFBhcnQgIT09IFwibmFtZVwiICYmIGN1cnJlbnRWYWx1ZVtwYXRoUGFydF0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRyZXR1cm4gY3VycmVudFZhbHVlW3BhdGhQYXJ0XTtcblx0XHRcdH0gZWxzZSBpZiAocGF0aFBhcnQgPT09IFwiJEFubm90YXRpb25QYXRoXCIgJiYgY3VycmVudFZhbHVlLiR0YXJnZXQpIHtcblx0XHRcdFx0Y29uc3QgY3VycmVudENvbnRleHQgPSBvYmplY3RNYXBbY3VycmVudFZhbHVlLmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdChcIkBcIilbMF1dO1xuXHRcdFx0XHRjb25zdCBzdWJUYXJnZXQ6IGFueSA9IHJlc29sdmVUYXJnZXQob2JqZWN0TWFwLCBjdXJyZW50Q29udGV4dCwgY3VycmVudFZhbHVlLnZhbHVlLCBmYWxzZSwgdHJ1ZSk7XG5cdFx0XHRcdHN1YlRhcmdldC52aXNpdGVkT2JqZWN0cy5mb3JFYWNoKCh2aXNpdGVkU3ViT2JqZWN0OiBhbnkpID0+IHtcblx0XHRcdFx0XHRpZiAoYVZpc2l0ZWRPYmplY3RzLmluZGV4T2YodmlzaXRlZFN1Yk9iamVjdCkgPT09IC0xKSB7XG5cdFx0XHRcdFx0XHRhVmlzaXRlZE9iamVjdHMucHVzaCh2aXNpdGVkU3ViT2JqZWN0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gc3ViVGFyZ2V0LnRhcmdldDtcblx0XHRcdH0gZWxzZSBpZiAocGF0aFBhcnQgPT09IFwiJFBhdGhcIiAmJiBjdXJyZW50VmFsdWUuJHRhcmdldCkge1xuXHRcdFx0XHRjdXJyZW50Q29udGV4dCA9IGFWaXNpdGVkT2JqZWN0c1xuXHRcdFx0XHRcdC5jb25jYXQoKVxuXHRcdFx0XHRcdC5yZXZlcnNlKClcblx0XHRcdFx0XHQuZmluZChcblx0XHRcdFx0XHRcdG9iaiA9PlxuXHRcdFx0XHRcdFx0XHRvYmouX3R5cGUgPT09IFwiRW50aXR5VHlwZVwiIHx8XG5cdFx0XHRcdFx0XHRcdG9iai5fdHlwZSA9PT0gXCJFbnRpdHlTZXRcIiB8fFxuXHRcdFx0XHRcdFx0XHRvYmouX3R5cGUgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCJcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoY3VycmVudENvbnRleHQpIHtcblx0XHRcdFx0XHRjb25zdCBzdWJUYXJnZXQ6IGFueSA9IHJlc29sdmVUYXJnZXQob2JqZWN0TWFwLCBjdXJyZW50Q29udGV4dCwgY3VycmVudFZhbHVlLnBhdGgsIGZhbHNlLCB0cnVlKTtcblx0XHRcdFx0XHRzdWJUYXJnZXQudmlzaXRlZE9iamVjdHMuZm9yRWFjaCgodmlzaXRlZFN1Yk9iamVjdDogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoYVZpc2l0ZWRPYmplY3RzLmluZGV4T2YodmlzaXRlZFN1Yk9iamVjdCkgPT09IC0xKSB7XG5cdFx0XHRcdFx0XHRcdGFWaXNpdGVkT2JqZWN0cy5wdXNoKHZpc2l0ZWRTdWJPYmplY3QpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHJldHVybiBzdWJUYXJnZXQudGFyZ2V0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBjdXJyZW50VmFsdWUuJHRhcmdldDtcblx0XHRcdH0gZWxzZSBpZiAocGF0aFBhcnQuc3RhcnRzV2l0aChcIiRQYXRoXCIpICYmIGN1cnJlbnRWYWx1ZS4kdGFyZ2V0KSB7XG5cdFx0XHRcdGNvbnN0IGludGVybWVkaWF0ZVRhcmdldCA9IGN1cnJlbnRWYWx1ZS4kdGFyZ2V0O1xuXHRcdFx0XHRjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGludGVybWVkaWF0ZVRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUsIHBhdGhQYXJ0LnN1YnN0cig1KSk7XG5cdFx0XHR9IGVsc2UgaWYgKGN1cnJlbnRWYWx1ZS5oYXNPd25Qcm9wZXJ0eShcIiRUeXBlXCIpICYmICFvYmplY3RNYXBbY3VycmVudFBhdGhdKSB7XG5cdFx0XHRcdC8vIFRoaXMgaXMgbm93IGFuIGFubm90YXRpb24gdmFsdWVcblx0XHRcdFx0Y29uc3QgZW50aXR5VHlwZSA9IG9iamVjdE1hcFtjdXJyZW50VmFsdWUuZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KFwiQFwiKVswXV07XG5cdFx0XHRcdGlmIChlbnRpdHlUeXBlKSB7XG5cdFx0XHRcdFx0Y3VycmVudFBhdGggPSBjb21iaW5lUGF0aChlbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZSwgcGF0aFBhcnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBvYmplY3RNYXBbY3VycmVudFBhdGhdO1xuXHR9LCBudWxsKTtcblx0aWYgKCF0YXJnZXQpIHtcblx0XHRpZiAoYW5ub3RhdGlvbnNUZXJtICYmIGFubm90YXRpb25UeXBlKSB7XG5cdFx0XHR2YXIgb0Vycm9yTXNnID0ge1xuXHRcdFx0XHRtZXNzYWdlOlxuXHRcdFx0XHRcdFwiVW5hYmxlIHRvIHJlc29sdmUgdGhlIHBhdGggZXhwcmVzc2lvbjogXCIgK1xuXHRcdFx0XHRcdFwiXFxuXCIgK1xuXHRcdFx0XHRcdHBhdGggK1xuXHRcdFx0XHRcdFwiXFxuXCIgK1xuXHRcdFx0XHRcdFwiXFxuXCIgK1xuXHRcdFx0XHRcdFwiSGludDogQ2hlY2sgYW5kIGNvcnJlY3QgdGhlIHBhdGggdmFsdWVzIHVuZGVyIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIGluIHRoZSBtZXRhZGF0YSAoYW5ub3RhdGlvbi54bWwgZmlsZSBvciBDRFMgYW5ub3RhdGlvbnMgZm9yIHRoZSBhcHBsaWNhdGlvbik6IFxcblxcblwiICtcblx0XHRcdFx0XHRcIjxBbm5vdGF0aW9uIFRlcm0gPSBcIiArXG5cdFx0XHRcdFx0YW5ub3RhdGlvbnNUZXJtICtcblx0XHRcdFx0XHRcIj5cIiArXG5cdFx0XHRcdFx0XCJcXG5cIiArXG5cdFx0XHRcdFx0XCI8UmVjb3JkIFR5cGUgPSBcIiArXG5cdFx0XHRcdFx0YW5ub3RhdGlvblR5cGUgK1xuXHRcdFx0XHRcdFwiPlwiICtcblx0XHRcdFx0XHRcIlxcblwiICtcblx0XHRcdFx0XHRcIjxBbm5vdGF0aW9uUGF0aCA9IFwiICtcblx0XHRcdFx0XHRwYXRoICtcblx0XHRcdFx0XHRcIj5cIlxuXHRcdFx0fTtcblx0XHRcdGFkZEFubm90YXRpb25FcnJvck1lc3NhZ2UocGF0aCwgb0Vycm9yTXNnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmFyIG9FcnJvck1zZyA9IHtcblx0XHRcdFx0bWVzc2FnZTpcblx0XHRcdFx0XHRcIlVuYWJsZSB0byByZXNvbHZlIHRoZSBwYXRoIGV4cHJlc3Npb246IFwiICtcblx0XHRcdFx0XHRwYXRoICtcblx0XHRcdFx0XHRcIlxcblwiICtcblx0XHRcdFx0XHRcIlxcblwiICtcblx0XHRcdFx0XHRcIkhpbnQ6IENoZWNrIGFuZCBjb3JyZWN0IHRoZSBwYXRoIHZhbHVlcyB1bmRlciB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZSBpbiB0aGUgbWV0YWRhdGEgKGFubm90YXRpb24ueG1sIGZpbGUgb3IgQ0RTIGFubm90YXRpb25zIGZvciB0aGUgYXBwbGljYXRpb24pOiBcXG5cXG5cIiArXG5cdFx0XHRcdFx0XCI8QW5ub3RhdGlvbiBUZXJtID0gXCIgK1xuXHRcdFx0XHRcdHBhdGhTcGxpdFswXSArXG5cdFx0XHRcdFx0XCI+XCIgK1xuXHRcdFx0XHRcdFwiXFxuXCIgK1xuXHRcdFx0XHRcdFwiPFByb3BlcnR5VmFsdWUgIFBhdGg9IFwiICtcblx0XHRcdFx0XHRwYXRoU3BsaXRbMV0gK1xuXHRcdFx0XHRcdFwiPlwiXG5cdFx0XHR9O1xuXHRcdFx0YWRkQW5ub3RhdGlvbkVycm9yTWVzc2FnZShwYXRoLCBvRXJyb3JNc2cpO1xuXHRcdH1cblx0XHQvLyBjb25zb2xlLmxvZyhcIk1pc3NpbmcgdGFyZ2V0IFwiICsgcGF0aCk7XG5cdH1cblx0aWYgKHBhdGhPbmx5KSB7XG5cdFx0cmV0dXJuIGN1cnJlbnRQYXRoO1xuXHR9XG5cdGlmIChpbmNsdWRlVmlzaXRlZE9iamVjdHMpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dmlzaXRlZE9iamVjdHM6IGFWaXNpdGVkT2JqZWN0cyxcblx0XHRcdHRhcmdldDogdGFyZ2V0XG5cdFx0fTtcblx0fVxuXHRyZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBpc0Fubm90YXRpb25QYXRoKHBhdGhTdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gcGF0aFN0ci5pbmRleE9mKFwiQFwiKSAhPT0gLTE7XG59XG5cbmZ1bmN0aW9uIHBhcnNlVmFsdWUoXG5cdHByb3BlcnR5VmFsdWU6IEV4cHJlc3Npb24sXG5cdHZhbHVlRlFOOiBzdHJpbmcsXG5cdHBhcnNlck91dHB1dDogUGFyc2VyT3V0cHV0LFxuXHRjdXJyZW50VGFyZ2V0OiBhbnksXG5cdG9iamVjdE1hcDogYW55LFxuXHR0b1Jlc29sdmU6IFJlc29sdmVhYmxlW10sXG5cdGFubm90YXRpb25Tb3VyY2U6IHN0cmluZyxcblx0dW5yZXNvbHZlZEFubm90YXRpb25zOiBBbm5vdGF0aW9uTGlzdFtdLFxuXHRhbm5vdGF0aW9uVHlwZTogc3RyaW5nLFxuXHRhbm5vdGF0aW9uc1Rlcm06IHN0cmluZ1xuKSB7XG5cdGlmIChwcm9wZXJ0eVZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdHN3aXRjaCAocHJvcGVydHlWYWx1ZS50eXBlKSB7XG5cdFx0Y2FzZSBcIlN0cmluZ1wiOlxuXHRcdFx0cmV0dXJuIHByb3BlcnR5VmFsdWUuU3RyaW5nO1xuXHRcdGNhc2UgXCJJbnRcIjpcblx0XHRcdHJldHVybiBwcm9wZXJ0eVZhbHVlLkludDtcblx0XHRjYXNlIFwiQm9vbFwiOlxuXHRcdFx0cmV0dXJuIHByb3BlcnR5VmFsdWUuQm9vbDtcblx0XHRjYXNlIFwiRGVjaW1hbFwiOlxuXHRcdFx0cmV0dXJuIHByb3BlcnR5VmFsdWUuRGVjaW1hbDtcblx0XHRjYXNlIFwiRGF0ZVwiOlxuXHRcdFx0cmV0dXJuIHByb3BlcnR5VmFsdWUuRGF0ZTtcblx0XHRjYXNlIFwiRW51bU1lbWJlclwiOlxuXHRcdFx0cmV0dXJuIGFsaWFzKHBhcnNlck91dHB1dC5yZWZlcmVuY2VzLCBwcm9wZXJ0eVZhbHVlLkVudW1NZW1iZXIpO1xuXHRcdGNhc2UgXCJQcm9wZXJ0eVBhdGhcIjpcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHR5cGU6IFwiUHJvcGVydHlQYXRoXCIsXG5cdFx0XHRcdHZhbHVlOiBwcm9wZXJ0eVZhbHVlLlByb3BlcnR5UGF0aCxcblx0XHRcdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiB2YWx1ZUZRTixcblx0XHRcdFx0JHRhcmdldDogcmVzb2x2ZVRhcmdldChcblx0XHRcdFx0XHRvYmplY3RNYXAsXG5cdFx0XHRcdFx0Y3VycmVudFRhcmdldCxcblx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlLlByb3BlcnR5UGF0aCxcblx0XHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0XHRhbm5vdGF0aW9uVHlwZSxcblx0XHRcdFx0XHRhbm5vdGF0aW9uc1Rlcm1cblx0XHRcdFx0KVxuXHRcdFx0fTtcblx0XHRjYXNlIFwiTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiOlxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dHlwZTogXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIsXG5cdFx0XHRcdHZhbHVlOiBwcm9wZXJ0eVZhbHVlLk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogdmFsdWVGUU4sXG5cdFx0XHRcdCR0YXJnZXQ6IHJlc29sdmVUYXJnZXQoXG5cdFx0XHRcdFx0b2JqZWN0TWFwLFxuXHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQsXG5cdFx0XHRcdFx0cHJvcGVydHlWYWx1ZS5OYXZpZ2F0aW9uUHJvcGVydHlQYXRoLFxuXHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdGFubm90YXRpb25UeXBlLFxuXHRcdFx0XHRcdGFubm90YXRpb25zVGVybVxuXHRcdFx0XHQpXG5cdFx0XHR9O1xuXHRcdGNhc2UgXCJBbm5vdGF0aW9uUGF0aFwiOlxuXHRcdFx0Y29uc3QgYW5ub3RhdGlvblRhcmdldCA9IHJlc29sdmVUYXJnZXQoXG5cdFx0XHRcdG9iamVjdE1hcCxcblx0XHRcdFx0Y3VycmVudFRhcmdldCxcblx0XHRcdFx0dW5hbGlhcyhwYXJzZXJPdXRwdXQucmVmZXJlbmNlcywgcHJvcGVydHlWYWx1ZS5Bbm5vdGF0aW9uUGF0aCkgYXMgc3RyaW5nLFxuXHRcdFx0XHR0cnVlLFxuXHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0YW5ub3RhdGlvblR5cGUsXG5cdFx0XHRcdGFubm90YXRpb25zVGVybVxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IGFubm90YXRpb25QYXRoID0ge1xuXHRcdFx0XHR0eXBlOiBcIkFubm90YXRpb25QYXRoXCIsXG5cdFx0XHRcdHZhbHVlOiBwcm9wZXJ0eVZhbHVlLkFubm90YXRpb25QYXRoLFxuXHRcdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IHZhbHVlRlFOLFxuXHRcdFx0XHQkdGFyZ2V0OiBhbm5vdGF0aW9uVGFyZ2V0LFxuXHRcdFx0XHRhbm5vdGF0aW9uVHlwZTogYW5ub3RhdGlvblR5cGUsXG5cdFx0XHRcdGFubm90YXRpb25zVGVybTogYW5ub3RhdGlvbnNUZXJtLFxuXHRcdFx0XHR0ZXJtOiBcIlwiLFxuXHRcdFx0XHRwYXRoOiBcIlwiXG5cdFx0XHR9O1xuXHRcdFx0dG9SZXNvbHZlLnB1c2goeyBpbmxpbmU6IGZhbHNlLCB0b1Jlc29sdmU6IGFubm90YXRpb25QYXRoIH0pO1xuXHRcdFx0cmV0dXJuIGFubm90YXRpb25QYXRoO1xuXHRcdGNhc2UgXCJQYXRoXCI6XG5cdFx0XHRjb25zdCAkdGFyZ2V0ID0gcmVzb2x2ZVRhcmdldChcblx0XHRcdFx0b2JqZWN0TWFwLFxuXHRcdFx0XHRjdXJyZW50VGFyZ2V0LFxuXHRcdFx0XHRwcm9wZXJ0eVZhbHVlLlBhdGgsXG5cdFx0XHRcdHRydWUsXG5cdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRhbm5vdGF0aW9uVHlwZSxcblx0XHRcdFx0YW5ub3RhdGlvbnNUZXJtXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgcGF0aCA9IG5ldyBQYXRoKHByb3BlcnR5VmFsdWUsICR0YXJnZXQsIGFubm90YXRpb25zVGVybSwgYW5ub3RhdGlvblR5cGUsIFwiXCIpO1xuXHRcdFx0dG9SZXNvbHZlLnB1c2goe1xuXHRcdFx0XHRpbmxpbmU6IGlzQW5ub3RhdGlvblBhdGgocHJvcGVydHlWYWx1ZS5QYXRoKSxcblx0XHRcdFx0dG9SZXNvbHZlOiBwYXRoXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBwYXRoO1xuXG5cdFx0Y2FzZSBcIlJlY29yZFwiOlxuXHRcdFx0cmV0dXJuIHBhcnNlUmVjb3JkKFxuXHRcdFx0XHRwcm9wZXJ0eVZhbHVlLlJlY29yZCxcblx0XHRcdFx0dmFsdWVGUU4sXG5cdFx0XHRcdHBhcnNlck91dHB1dCxcblx0XHRcdFx0Y3VycmVudFRhcmdldCxcblx0XHRcdFx0b2JqZWN0TWFwLFxuXHRcdFx0XHR0b1Jlc29sdmUsXG5cdFx0XHRcdGFubm90YXRpb25Tb3VyY2UsXG5cdFx0XHRcdHVucmVzb2x2ZWRBbm5vdGF0aW9ucyxcblx0XHRcdFx0YW5ub3RhdGlvblR5cGUsXG5cdFx0XHRcdGFubm90YXRpb25zVGVybVxuXHRcdFx0KTtcblx0XHRjYXNlIFwiQ29sbGVjdGlvblwiOlxuXHRcdFx0cmV0dXJuIHBhcnNlQ29sbGVjdGlvbihcblx0XHRcdFx0cHJvcGVydHlWYWx1ZS5Db2xsZWN0aW9uLFxuXHRcdFx0XHR2YWx1ZUZRTixcblx0XHRcdFx0cGFyc2VyT3V0cHV0LFxuXHRcdFx0XHRjdXJyZW50VGFyZ2V0LFxuXHRcdFx0XHRvYmplY3RNYXAsXG5cdFx0XHRcdHRvUmVzb2x2ZSxcblx0XHRcdFx0YW5ub3RhdGlvblNvdXJjZSxcblx0XHRcdFx0dW5yZXNvbHZlZEFubm90YXRpb25zLFxuXHRcdFx0XHRhbm5vdGF0aW9uVHlwZSxcblx0XHRcdFx0YW5ub3RhdGlvbnNUZXJtXG5cdFx0XHQpO1xuXHRcdGNhc2UgXCJBcHBseVwiOlxuXHRcdGNhc2UgXCJOdWxsXCI6XG5cdFx0Y2FzZSBcIk5vdFwiOlxuXHRcdGNhc2UgXCJFcVwiOlxuXHRcdGNhc2UgXCJOZVwiOlxuXHRcdGNhc2UgXCJHdFwiOlxuXHRcdGNhc2UgXCJHZVwiOlxuXHRcdGNhc2UgXCJMdFwiOlxuXHRcdGNhc2UgXCJMZVwiOlxuXHRcdGNhc2UgXCJJZlwiOlxuXHRcdGNhc2UgXCJBbmRcIjpcblx0XHRjYXNlIFwiT3JcIjpcblx0XHRcdHJldHVybiBwcm9wZXJ0eVZhbHVlO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGluZmVyVHlwZUZyb21UZXJtKGFubm90YXRpb25zVGVybTogc3RyaW5nLCBwYXJzZXJPdXRwdXQ6IFBhcnNlck91dHB1dCwgYW5ub3RhdGlvblRhcmdldDogc3RyaW5nKSB7XG5cdGNvbnN0IHRhcmdldFR5cGUgPSAoVGVybVRvVHlwZXMgYXMgYW55KVthbm5vdGF0aW9uc1Rlcm1dO1xuXHR2YXIgb0Vycm9yTXNnID0ge1xuXHRcdGlzRXJyb3I6IGZhbHNlLFxuXHRcdG1lc3NhZ2U6IGBUaGUgdHlwZSBvZiB0aGUgcmVjb3JkIHVzZWQgd2l0aGluIHRoZSB0ZXJtICR7YW5ub3RhdGlvbnNUZXJtfSB3YXMgbm90IGRlZmluZWQgYW5kIHdhcyBpbmZlcnJlZCBhcyAke3RhcmdldFR5cGV9LlxuSGludDogSWYgcG9zc2libGUsIHRyeSB0byBtYWludGFpbiB0aGUgVHlwZSBwcm9wZXJ0eSBmb3IgZWFjaCBSZWNvcmQuXG48QW5ub3RhdGlvbnMgVGFyZ2V0PVwiJHthbm5vdGF0aW9uVGFyZ2V0fVwiPlxuXHQ8QW5ub3RhdGlvbiBUZXJtPVwiJHthbm5vdGF0aW9uc1Rlcm19XCI+XG5cdFx0PFJlY29yZD4uLi48L1JlY29yZD5cblx0PC9Bbm5vdGF0aW9uPlxuPC9Bbm5vdGF0aW9ucz5gXG5cdH07XG5cdGFkZEFubm90YXRpb25FcnJvck1lc3NhZ2UoYW5ub3RhdGlvblRhcmdldCArIFwiL1wiICsgYW5ub3RhdGlvbnNUZXJtLCBvRXJyb3JNc2cpO1xuXHRyZXR1cm4gdGFyZ2V0VHlwZTtcbn1cblxuZnVuY3Rpb24gcGFyc2VSZWNvcmQoXG5cdHJlY29yZERlZmluaXRpb246IEFubm90YXRpb25SZWNvcmQsXG5cdGN1cnJlbnRGUU46IHN0cmluZyxcblx0cGFyc2VyT3V0cHV0OiBQYXJzZXJPdXRwdXQsXG5cdGN1cnJlbnRUYXJnZXQ6IGFueSxcblx0b2JqZWN0TWFwOiBhbnksXG5cdHRvUmVzb2x2ZTogUmVzb2x2ZWFibGVbXSxcblx0YW5ub3RhdGlvblNvdXJjZTogc3RyaW5nLFxuXHR1bnJlc29sdmVkQW5ub3RhdGlvbnM6IEFubm90YXRpb25MaXN0W10sXG5cdGFubm90YXRpb25UeXBlOiBzdHJpbmcsXG5cdGFubm90YXRpb25zVGVybTogc3RyaW5nXG4pIHtcblx0bGV0IHRhcmdldFR5cGU7XG5cdGlmICghcmVjb3JkRGVmaW5pdGlvbi50eXBlICYmIGFubm90YXRpb25zVGVybSkge1xuXHRcdHRhcmdldFR5cGUgPSBpbmZlclR5cGVGcm9tVGVybShhbm5vdGF0aW9uc1Rlcm0sIHBhcnNlck91dHB1dCwgY3VycmVudFRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUpO1xuXHR9IGVsc2Uge1xuXHRcdHRhcmdldFR5cGUgPSB1bmFsaWFzKHBhcnNlck91dHB1dC5yZWZlcmVuY2VzLCByZWNvcmREZWZpbml0aW9uLnR5cGUpO1xuXHR9XG5cdGNvbnN0IGFubm90YXRpb25UZXJtOiBhbnkgPSB7XG5cdFx0JFR5cGU6IHRhcmdldFR5cGUsXG5cdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBjdXJyZW50RlFOXG5cdH07XG5cdGNvbnN0IGFubm90YXRpb25Db250ZW50OiBhbnkgPSB7fTtcblx0aWYgKHJlY29yZERlZmluaXRpb24uYW5ub3RhdGlvbnMgJiYgQXJyYXkuaXNBcnJheShyZWNvcmREZWZpbml0aW9uLmFubm90YXRpb25zKSkge1xuXHRcdGNvbnN0IHN1YkFubm90YXRpb25MaXN0ID0ge1xuXHRcdFx0dGFyZ2V0OiBjdXJyZW50RlFOLFxuXHRcdFx0YW5ub3RhdGlvbnM6IHJlY29yZERlZmluaXRpb24uYW5ub3RhdGlvbnMsXG5cdFx0XHRfX3NvdXJjZTogYW5ub3RhdGlvblNvdXJjZVxuXHRcdH07XG5cdFx0dW5yZXNvbHZlZEFubm90YXRpb25zLnB1c2goc3ViQW5ub3RhdGlvbkxpc3QpO1xuXHR9XG5cdGlmIChyZWNvcmREZWZpbml0aW9uLnByb3BlcnR5VmFsdWVzKSB7XG5cdFx0cmVjb3JkRGVmaW5pdGlvbi5wcm9wZXJ0eVZhbHVlcy5mb3JFYWNoKChwcm9wZXJ0eVZhbHVlOiBQcm9wZXJ0eVZhbHVlKSA9PiB7XG5cdFx0XHRhbm5vdGF0aW9uQ29udGVudFtwcm9wZXJ0eVZhbHVlLm5hbWVdID0gcGFyc2VWYWx1ZShcblx0XHRcdFx0cHJvcGVydHlWYWx1ZS52YWx1ZSxcblx0XHRcdFx0YCR7Y3VycmVudEZRTn0vJHtwcm9wZXJ0eVZhbHVlLm5hbWV9YCxcblx0XHRcdFx0cGFyc2VyT3V0cHV0LFxuXHRcdFx0XHRjdXJyZW50VGFyZ2V0LFxuXHRcdFx0XHRvYmplY3RNYXAsXG5cdFx0XHRcdHRvUmVzb2x2ZSxcblx0XHRcdFx0YW5ub3RhdGlvblNvdXJjZSxcblx0XHRcdFx0dW5yZXNvbHZlZEFubm90YXRpb25zLFxuXHRcdFx0XHRhbm5vdGF0aW9uVHlwZSxcblx0XHRcdFx0YW5ub3RhdGlvbnNUZXJtXG5cdFx0XHQpO1xuXHRcdFx0aWYgKHByb3BlcnR5VmFsdWUuYW5ub3RhdGlvbnMgJiYgQXJyYXkuaXNBcnJheShwcm9wZXJ0eVZhbHVlLmFubm90YXRpb25zKSkge1xuXHRcdFx0XHRjb25zdCBzdWJBbm5vdGF0aW9uTGlzdCA9IHtcblx0XHRcdFx0XHR0YXJnZXQ6IGAke2N1cnJlbnRGUU59LyR7cHJvcGVydHlWYWx1ZS5uYW1lfWAsXG5cdFx0XHRcdFx0YW5ub3RhdGlvbnM6IHByb3BlcnR5VmFsdWUuYW5ub3RhdGlvbnMsXG5cdFx0XHRcdFx0X19zb3VyY2U6IGFubm90YXRpb25Tb3VyY2Vcblx0XHRcdFx0fTtcblx0XHRcdFx0dW5yZXNvbHZlZEFubm90YXRpb25zLnB1c2goc3ViQW5ub3RhdGlvbkxpc3QpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFxuXHRcdFx0XHRhbm5vdGF0aW9uQ29udGVudC5oYXNPd25Qcm9wZXJ0eShcIkFjdGlvblwiKSAmJlxuXHRcdFx0XHQoYW5ub3RhdGlvblRlcm0uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQWN0aW9uXCIgfHxcblx0XHRcdFx0XHRhbm5vdGF0aW9uVGVybS4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoQWN0aW9uXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0YW5ub3RhdGlvbkNvbnRlbnQuQWN0aW9uVGFyZ2V0ID1cblx0XHRcdFx0XHQoY3VycmVudFRhcmdldC5hY3Rpb25zICYmIGN1cnJlbnRUYXJnZXQuYWN0aW9uc1thbm5vdGF0aW9uQ29udGVudC5BY3Rpb25dKSB8fFxuXHRcdFx0XHRcdG9iamVjdE1hcFthbm5vdGF0aW9uQ29udGVudC5BY3Rpb25dO1xuXHRcdFx0XHRpZiAoIWFubm90YXRpb25Db250ZW50LkFjdGlvblRhcmdldCkge1xuXHRcdFx0XHRcdC8vIEFkZCB0byBkaWFnbm9zdGljcyBkZWJ1Z2dlcjtcblx0XHRcdFx0XHRBTk5PVEFUSU9OX0VSUk9SUy5wdXNoKHtcblx0XHRcdFx0XHRcdG1lc3NhZ2U6XG5cdFx0XHRcdFx0XHRcdFwiVW5hYmxlIHRvIHJlc29sdmUgdGhlIGFjdGlvbiBcIiArXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb25Db250ZW50LkFjdGlvbiArXG5cdFx0XHRcdFx0XHRcdFwiIGRlZmluZWQgZm9yIFwiICtcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvblRlcm0uZnVsbHlRdWFsaWZpZWROYW1lXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gT2JqZWN0LmFzc2lnbihhbm5vdGF0aW9uVGVybSwgYW5ub3RhdGlvbkNvbnRlbnQpO1xufVxuXG5leHBvcnQgdHlwZSBDb2xsZWN0aW9uVHlwZSA9XG5cdHwgXCJQcm9wZXJ0eVBhdGhcIlxuXHR8IFwiUGF0aFwiXG5cdHwgXCJJZlwiXG5cdHwgXCJBcHBseVwiXG5cdHwgXCJOdWxsXCJcblx0fCBcIkFuZFwiXG5cdHwgXCJFcVwiXG5cdHwgXCJOZVwiXG5cdHwgXCJOb3RcIlxuXHR8IFwiR3RcIlxuXHR8IFwiR2VcIlxuXHR8IFwiTHRcIlxuXHR8IFwiTGVcIlxuXHR8IFwiT3JcIlxuXHR8IFwiQW5ub3RhdGlvblBhdGhcIlxuXHR8IFwiTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiXG5cdHwgXCJSZWNvcmRcIlxuXHR8IFwiU3RyaW5nXCJcblx0fCBcIkVtcHR5Q29sbGVjdGlvblwiO1xuXG5mdW5jdGlvbiBnZXRPckluZmVyQ29sbGVjdGlvblR5cGUoY29sbGVjdGlvbkRlZmluaXRpb246IGFueVtdKTogQ29sbGVjdGlvblR5cGUge1xuXHRsZXQgdHlwZTogQ29sbGVjdGlvblR5cGUgPSAoY29sbGVjdGlvbkRlZmluaXRpb24gYXMgYW55KS50eXBlO1xuXHRpZiAodHlwZSA9PT0gdW5kZWZpbmVkICYmIGNvbGxlY3Rpb25EZWZpbml0aW9uLmxlbmd0aCA+IDApIHtcblx0XHRjb25zdCBmaXJzdENvbEl0ZW0gPSBjb2xsZWN0aW9uRGVmaW5pdGlvblswXTtcblx0XHRpZiAoZmlyc3RDb2xJdGVtLmhhc093blByb3BlcnR5KFwiUHJvcGVydHlQYXRoXCIpKSB7XG5cdFx0XHR0eXBlID0gXCJQcm9wZXJ0eVBhdGhcIjtcblx0XHR9IGVsc2UgaWYgKGZpcnN0Q29sSXRlbS5oYXNPd25Qcm9wZXJ0eShcIlBhdGhcIikpIHtcblx0XHRcdHR5cGUgPSBcIlBhdGhcIjtcblx0XHR9IGVsc2UgaWYgKGZpcnN0Q29sSXRlbS5oYXNPd25Qcm9wZXJ0eShcIkFubm90YXRpb25QYXRoXCIpKSB7XG5cdFx0XHR0eXBlID0gXCJBbm5vdGF0aW9uUGF0aFwiO1xuXHRcdH0gZWxzZSBpZiAoZmlyc3RDb2xJdGVtLmhhc093blByb3BlcnR5KFwiTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiKSkge1xuXHRcdFx0dHlwZSA9IFwiTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiO1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHR0eXBlb2YgZmlyc3RDb2xJdGVtID09PSBcIm9iamVjdFwiICYmXG5cdFx0XHQoZmlyc3RDb2xJdGVtLmhhc093blByb3BlcnR5KFwidHlwZVwiKSB8fCBmaXJzdENvbEl0ZW0uaGFzT3duUHJvcGVydHkoXCJwcm9wZXJ0eVZhbHVlc1wiKSlcblx0XHQpIHtcblx0XHRcdHR5cGUgPSBcIlJlY29yZFwiO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIGZpcnN0Q29sSXRlbSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dHlwZSA9IFwiU3RyaW5nXCI7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCkge1xuXHRcdHR5cGUgPSBcIkVtcHR5Q29sbGVjdGlvblwiO1xuXHR9XG5cdHJldHVybiB0eXBlO1xufVxuXG5mdW5jdGlvbiBwYXJzZUNvbGxlY3Rpb24oXG5cdGNvbGxlY3Rpb25EZWZpbml0aW9uOiBhbnlbXSxcblx0cGFyZW50RlFOOiBzdHJpbmcsXG5cdHBhcnNlck91dHB1dDogUGFyc2VyT3V0cHV0LFxuXHRjdXJyZW50VGFyZ2V0OiBhbnksXG5cdG9iamVjdE1hcDogYW55LFxuXHR0b1Jlc29sdmU6IFJlc29sdmVhYmxlW10sXG5cdGFubm90YXRpb25Tb3VyY2U6IHN0cmluZyxcblx0dW5yZXNvbHZlZEFubm90YXRpb25zOiBBbm5vdGF0aW9uTGlzdFtdLFxuXHRhbm5vdGF0aW9uVHlwZTogc3RyaW5nLFxuXHRhbm5vdGF0aW9uc1Rlcm06IHN0cmluZ1xuKSB7XG5cdGNvbnN0IGNvbGxlY3Rpb25EZWZpbml0aW9uVHlwZSA9IGdldE9ySW5mZXJDb2xsZWN0aW9uVHlwZShjb2xsZWN0aW9uRGVmaW5pdGlvbik7XG5cdHN3aXRjaCAoY29sbGVjdGlvbkRlZmluaXRpb25UeXBlKSB7XG5cdFx0Y2FzZSBcIlByb3BlcnR5UGF0aFwiOlxuXHRcdFx0cmV0dXJuIGNvbGxlY3Rpb25EZWZpbml0aW9uLm1hcCgocHJvcGVydHlQYXRoLCBwcm9wZXJ0eUlkeCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdHR5cGU6IFwiUHJvcGVydHlQYXRoXCIsXG5cdFx0XHRcdFx0dmFsdWU6IHByb3BlcnR5UGF0aC5Qcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtwYXJlbnRGUU59LyR7cHJvcGVydHlJZHh9YCxcblx0XHRcdFx0XHQkdGFyZ2V0OiByZXNvbHZlVGFyZ2V0KFxuXHRcdFx0XHRcdFx0b2JqZWN0TWFwLFxuXHRcdFx0XHRcdFx0Y3VycmVudFRhcmdldCxcblx0XHRcdFx0XHRcdHByb3BlcnR5UGF0aC5Qcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdFx0YW5ub3RhdGlvblR5cGUsXG5cdFx0XHRcdFx0XHRhbm5vdGF0aW9uc1Rlcm1cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHRjYXNlIFwiUGF0aFwiOlxuXHRcdFx0cmV0dXJuIGNvbGxlY3Rpb25EZWZpbml0aW9uLm1hcChwYXRoVmFsdWUgPT4ge1xuXHRcdFx0XHRjb25zdCAkdGFyZ2V0ID0gcmVzb2x2ZVRhcmdldChcblx0XHRcdFx0XHRvYmplY3RNYXAsXG5cdFx0XHRcdFx0Y3VycmVudFRhcmdldCxcblx0XHRcdFx0XHRwYXRoVmFsdWUuUGF0aCxcblx0XHRcdFx0XHR0cnVlLFxuXHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdGFubm90YXRpb25UeXBlLFxuXHRcdFx0XHRcdGFubm90YXRpb25zVGVybVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBwYXRoID0gbmV3IFBhdGgocGF0aFZhbHVlLCAkdGFyZ2V0LCBhbm5vdGF0aW9uc1Rlcm0sIGFubm90YXRpb25UeXBlLCBcIlwiKTtcblx0XHRcdFx0dG9SZXNvbHZlLnB1c2goe1xuXHRcdFx0XHRcdGlubGluZTogaXNBbm5vdGF0aW9uUGF0aChwYXRoVmFsdWUuUGF0aCksXG5cdFx0XHRcdFx0dG9SZXNvbHZlOiBwYXRoXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gcGF0aDtcblx0XHRcdH0pO1xuXHRcdGNhc2UgXCJBbm5vdGF0aW9uUGF0aFwiOlxuXHRcdFx0cmV0dXJuIGNvbGxlY3Rpb25EZWZpbml0aW9uLm1hcCgoYW5ub3RhdGlvblBhdGgsIGFubm90YXRpb25JZHgpID0+IHtcblx0XHRcdFx0Y29uc3QgYW5ub3RhdGlvblRhcmdldCA9IHJlc29sdmVUYXJnZXQoXG5cdFx0XHRcdFx0b2JqZWN0TWFwLFxuXHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQsXG5cdFx0XHRcdFx0YW5ub3RhdGlvblBhdGguQW5ub3RhdGlvblBhdGgsXG5cdFx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0XHRhbm5vdGF0aW9uVHlwZSxcblx0XHRcdFx0XHRhbm5vdGF0aW9uc1Rlcm1cblx0XHRcdFx0KTtcblx0XHRcdFx0Y29uc3QgYW5ub3RhdGlvbkNvbGxlY3Rpb25FbGVtZW50ID0ge1xuXHRcdFx0XHRcdHR5cGU6IFwiQW5ub3RhdGlvblBhdGhcIixcblx0XHRcdFx0XHR2YWx1ZTogYW5ub3RhdGlvblBhdGguQW5ub3RhdGlvblBhdGgsXG5cdFx0XHRcdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtwYXJlbnRGUU59LyR7YW5ub3RhdGlvbklkeH1gLFxuXHRcdFx0XHRcdCR0YXJnZXQ6IGFubm90YXRpb25UYXJnZXQsXG5cdFx0XHRcdFx0YW5ub3RhdGlvblR5cGU6IGFubm90YXRpb25UeXBlLFxuXHRcdFx0XHRcdGFubm90YXRpb25zVGVybTogYW5ub3RhdGlvbnNUZXJtLFxuXHRcdFx0XHRcdHRlcm06IFwiXCIsXG5cdFx0XHRcdFx0cGF0aDogXCJcIlxuXHRcdFx0XHR9O1xuXHRcdFx0XHR0b1Jlc29sdmUucHVzaCh7XG5cdFx0XHRcdFx0aW5saW5lOiBmYWxzZSxcblx0XHRcdFx0XHR0b1Jlc29sdmU6IGFubm90YXRpb25Db2xsZWN0aW9uRWxlbWVudFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIGFubm90YXRpb25Db2xsZWN0aW9uRWxlbWVudDtcblx0XHRcdH0pO1xuXHRcdGNhc2UgXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCI6XG5cdFx0XHRyZXR1cm4gY29sbGVjdGlvbkRlZmluaXRpb24ubWFwKChuYXZQcm9wZXJ0eVBhdGgsIG5hdlByb3BJZHgpID0+IHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHR0eXBlOiBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIixcblx0XHRcdFx0XHR2YWx1ZTogbmF2UHJvcGVydHlQYXRoLk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtwYXJlbnRGUU59LyR7bmF2UHJvcElkeH1gLFxuXHRcdFx0XHRcdCR0YXJnZXQ6IHJlc29sdmVUYXJnZXQoXG5cdFx0XHRcdFx0XHRvYmplY3RNYXAsXG5cdFx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LFxuXHRcdFx0XHRcdFx0bmF2UHJvcGVydHlQYXRoLk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdFx0YW5ub3RhdGlvblR5cGUsXG5cdFx0XHRcdFx0XHRhbm5vdGF0aW9uc1Rlcm1cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHRjYXNlIFwiUmVjb3JkXCI6XG5cdFx0XHRyZXR1cm4gY29sbGVjdGlvbkRlZmluaXRpb24ubWFwKChyZWNvcmREZWZpbml0aW9uLCByZWNvcmRJZHgpID0+IHtcblx0XHRcdFx0cmV0dXJuIHBhcnNlUmVjb3JkKFxuXHRcdFx0XHRcdHJlY29yZERlZmluaXRpb24sXG5cdFx0XHRcdFx0YCR7cGFyZW50RlFOfS8ke3JlY29yZElkeH1gLFxuXHRcdFx0XHRcdHBhcnNlck91dHB1dCxcblx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LFxuXHRcdFx0XHRcdG9iamVjdE1hcCxcblx0XHRcdFx0XHR0b1Jlc29sdmUsXG5cdFx0XHRcdFx0YW5ub3RhdGlvblNvdXJjZSxcblx0XHRcdFx0XHR1bnJlc29sdmVkQW5ub3RhdGlvbnMsXG5cdFx0XHRcdFx0YW5ub3RhdGlvblR5cGUsXG5cdFx0XHRcdFx0YW5ub3RhdGlvbnNUZXJtXG5cdFx0XHRcdCk7XG5cdFx0XHR9KTtcblx0XHRjYXNlIFwiQXBwbHlcIjpcblx0XHRjYXNlIFwiTnVsbFwiOlxuXHRcdGNhc2UgXCJJZlwiOlxuXHRcdGNhc2UgXCJFcVwiOlxuXHRcdGNhc2UgXCJOZVwiOlxuXHRcdGNhc2UgXCJMdFwiOlxuXHRcdGNhc2UgXCJHdFwiOlxuXHRcdGNhc2UgXCJMZVwiOlxuXHRcdGNhc2UgXCJHZVwiOlxuXHRcdGNhc2UgXCJOb3RcIjpcblx0XHRjYXNlIFwiQW5kXCI6XG5cdFx0Y2FzZSBcIk9yXCI6XG5cdFx0XHRyZXR1cm4gY29sbGVjdGlvbkRlZmluaXRpb24ubWFwKGlmVmFsdWUgPT4ge1xuXHRcdFx0XHRyZXR1cm4gaWZWYWx1ZTtcblx0XHRcdH0pO1xuXHRcdGNhc2UgXCJTdHJpbmdcIjpcblx0XHRcdHJldHVybiBjb2xsZWN0aW9uRGVmaW5pdGlvbi5tYXAoc3RyaW5nVmFsdWUgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIHN0cmluZ1ZhbHVlID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHN0cmluZ1ZhbHVlO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHN0cmluZ1ZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRyZXR1cm4gc3RyaW5nVmFsdWU7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHN0cmluZ1ZhbHVlLlN0cmluZztcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGlmIChjb2xsZWN0aW9uRGVmaW5pdGlvbi5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0cmV0dXJuIFtdO1xuXHRcdFx0fVxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgY2FzZVwiKTtcblx0fVxufVxuXG50eXBlIFJlc29sdmVhYmxlID0ge1xuXHRpbmxpbmU6IGJvb2xlYW47XG5cdHRvUmVzb2x2ZToge1xuXHRcdCR0YXJnZXQ6IHN0cmluZztcblx0XHR0YXJnZXRTdHJpbmc/OiBzdHJpbmc7XG5cdFx0YW5ub3RhdGlvbnNUZXJtOiBzdHJpbmc7XG5cdFx0YW5ub3RhdGlvblR5cGU6IHN0cmluZztcblx0XHR0ZXJtOiBzdHJpbmc7XG5cdFx0cGF0aDogc3RyaW5nO1xuXHR9O1xufTtcblxuZnVuY3Rpb24gY29udmVydEFubm90YXRpb24oXG5cdGFubm90YXRpb246IEFubm90YXRpb24sXG5cdHBhcnNlck91dHB1dDogUGFyc2VyT3V0cHV0LFxuXHRjdXJyZW50VGFyZ2V0OiBhbnksXG5cdG9iamVjdE1hcDogYW55LFxuXHR0b1Jlc29sdmU6IFJlc29sdmVhYmxlW10sXG5cdGFubm90YXRpb25Tb3VyY2U6IHN0cmluZyxcblx0dW5yZXNvbHZlZEFubm90YXRpb25zOiBBbm5vdGF0aW9uTGlzdFtdXG4pOiBhbnkge1xuXHRpZiAoYW5ub3RhdGlvbi5yZWNvcmQpIHtcblx0XHRjb25zdCBhbm5vdGF0aW9uVHlwZSA9IGFubm90YXRpb24ucmVjb3JkLnR5cGVcblx0XHRcdD8gdW5hbGlhcyhwYXJzZXJPdXRwdXQucmVmZXJlbmNlcywgYW5ub3RhdGlvbi5yZWNvcmQudHlwZSlcblx0XHRcdDogaW5mZXJUeXBlRnJvbVRlcm0oYW5ub3RhdGlvbi50ZXJtLCBwYXJzZXJPdXRwdXQsIGN1cnJlbnRUYXJnZXQuZnVsbHlRdWFsaWZpZWROYW1lKTtcblx0XHRjb25zdCBhbm5vdGF0aW9uVGVybTogYW55ID0ge1xuXHRcdFx0JFR5cGU6IGFubm90YXRpb25UeXBlLFxuXHRcdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBhbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRcdHF1YWxpZmllcjogYW5ub3RhdGlvbi5xdWFsaWZpZXJcblx0XHR9O1xuXHRcdGNvbnN0IGFubm90YXRpb25Db250ZW50OiBhbnkgPSB7fTtcblx0XHRhbm5vdGF0aW9uLnJlY29yZC5wcm9wZXJ0eVZhbHVlcy5mb3JFYWNoKChwcm9wZXJ0eVZhbHVlOiBQcm9wZXJ0eVZhbHVlKSA9PiB7XG5cdFx0XHRhbm5vdGF0aW9uQ29udGVudFtwcm9wZXJ0eVZhbHVlLm5hbWVdID0gcGFyc2VWYWx1ZShcblx0XHRcdFx0cHJvcGVydHlWYWx1ZS52YWx1ZSxcblx0XHRcdFx0YCR7YW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWV9LyR7cHJvcGVydHlWYWx1ZS5uYW1lfWAsXG5cdFx0XHRcdHBhcnNlck91dHB1dCxcblx0XHRcdFx0Y3VycmVudFRhcmdldCxcblx0XHRcdFx0b2JqZWN0TWFwLFxuXHRcdFx0XHR0b1Jlc29sdmUsXG5cdFx0XHRcdGFubm90YXRpb25Tb3VyY2UsXG5cdFx0XHRcdHVucmVzb2x2ZWRBbm5vdGF0aW9ucyxcblx0XHRcdFx0YW5ub3RhdGlvblR5cGUsXG5cdFx0XHRcdGFubm90YXRpb24udGVybVxuXHRcdFx0KTtcblx0XHRcdGlmIChcblx0XHRcdFx0YW5ub3RhdGlvbkNvbnRlbnQuaGFzT3duUHJvcGVydHkoXCJBY3Rpb25cIikgJiZcblx0XHRcdFx0KCFhbm5vdGF0aW9uLnJlY29yZCB8fFxuXHRcdFx0XHRcdGFubm90YXRpb25UZXJtLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFjdGlvblwiIHx8XG5cdFx0XHRcdFx0YW5ub3RhdGlvblRlcm0uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aEFjdGlvblwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdGFubm90YXRpb25Db250ZW50LkFjdGlvblRhcmdldCA9XG5cdFx0XHRcdFx0KGN1cnJlbnRUYXJnZXQuYWN0aW9ucyAmJiBjdXJyZW50VGFyZ2V0LmFjdGlvbnNbYW5ub3RhdGlvbkNvbnRlbnQuQWN0aW9uXSkgfHxcblx0XHRcdFx0XHRvYmplY3RNYXBbYW5ub3RhdGlvbkNvbnRlbnQuQWN0aW9uXTtcblx0XHRcdFx0aWYgKCFhbm5vdGF0aW9uQ29udGVudC5BY3Rpb25UYXJnZXQpIHtcblx0XHRcdFx0XHRBTk5PVEFUSU9OX0VSUk9SUy5wdXNoKHtcblx0XHRcdFx0XHRcdG1lc3NhZ2U6XG5cdFx0XHRcdFx0XHRcdFwiVW5hYmxlIHRvIHJlc29sdmUgdGhlIGFjdGlvbiBcIiArXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb25Db250ZW50LkFjdGlvbiArXG5cdFx0XHRcdFx0XHRcdFwiIGRlZmluZWQgZm9yIFwiICtcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWVcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHQvLyBBZGQgdG8gZGlhZ25vc3RpY3Ncblx0XHRcdFx0XHQvLyBkZWJ1Z2dlcjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKGFubm90YXRpb25UZXJtLCBhbm5vdGF0aW9uQ29udGVudCk7XG5cdH0gZWxzZSBpZiAoYW5ub3RhdGlvbi5jb2xsZWN0aW9uID09PSB1bmRlZmluZWQpIHtcblx0XHRpZiAoYW5ub3RhdGlvbi52YWx1ZSkge1xuXHRcdFx0cmV0dXJuIHBhcnNlVmFsdWUoXG5cdFx0XHRcdGFubm90YXRpb24udmFsdWUsXG5cdFx0XHRcdGFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHRwYXJzZXJPdXRwdXQsXG5cdFx0XHRcdGN1cnJlbnRUYXJnZXQsXG5cdFx0XHRcdG9iamVjdE1hcCxcblx0XHRcdFx0dG9SZXNvbHZlLFxuXHRcdFx0XHRhbm5vdGF0aW9uU291cmNlLFxuXHRcdFx0XHR1bnJlc29sdmVkQW5ub3RhdGlvbnMsXG5cdFx0XHRcdFwiXCIsXG5cdFx0XHRcdGFubm90YXRpb24udGVybVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKGFubm90YXRpb24uY29sbGVjdGlvbikge1xuXHRcdGNvbnN0IGNvbGxlY3Rpb246IGFueSA9IHBhcnNlQ29sbGVjdGlvbihcblx0XHRcdGFubm90YXRpb24uY29sbGVjdGlvbixcblx0XHRcdGFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0cGFyc2VyT3V0cHV0LFxuXHRcdFx0Y3VycmVudFRhcmdldCxcblx0XHRcdG9iamVjdE1hcCxcblx0XHRcdHRvUmVzb2x2ZSxcblx0XHRcdGFubm90YXRpb25Tb3VyY2UsXG5cdFx0XHR1bnJlc29sdmVkQW5ub3RhdGlvbnMsXG5cdFx0XHRcIlwiLFxuXHRcdFx0YW5ub3RhdGlvbi50ZXJtXG5cdFx0KTtcblx0XHRjb2xsZWN0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSA9IGFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lO1xuXHRcdHJldHVybiBjb2xsZWN0aW9uO1xuXHR9IGVsc2Uge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGNhc2VcIik7XG5cdH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlUmVzb2x2ZVBhdGhGbihlbnRpdHlUeXBlOiBFbnRpdHlUeXBlLCBvYmplY3RNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcblx0cmV0dXJuIGZ1bmN0aW9uKHJlbGF0aXZlUGF0aDogc3RyaW5nLCBpbmNsdWRlVmlzaXRlZE9iamVjdHM6IGJvb2xlYW4pOiBhbnkge1xuXHRcdGNvbnN0IGFubm90YXRpb25UZXJtOiBzdHJpbmcgPSBcIlwiO1xuXHRcdGNvbnN0IGFubm90YXRpb25UeXBlOiBzdHJpbmcgPSBcIlwiO1xuXHRcdHJldHVybiByZXNvbHZlVGFyZ2V0KFxuXHRcdFx0b2JqZWN0TWFwLFxuXHRcdFx0ZW50aXR5VHlwZSxcblx0XHRcdHJlbGF0aXZlUGF0aCxcblx0XHRcdGZhbHNlLFxuXHRcdFx0aW5jbHVkZVZpc2l0ZWRPYmplY3RzLFxuXHRcdFx0YW5ub3RhdGlvblR5cGUsXG5cdFx0XHRhbm5vdGF0aW9uVGVybVxuXHRcdCk7XG5cdH07XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVOYXZpZ2F0aW9uUHJvcGVydGllcyhcblx0ZW50aXR5VHlwZXM6IFBhcnNlckVudGl0eVR5cGVbXSxcblx0YXNzb2NpYXRpb25zOiBBc3NvY2lhdGlvbltdLFxuXHRvYmplY3RNYXA6IFJlY29yZDxzdHJpbmcsIGFueT5cbik6IHZvaWQge1xuXHRlbnRpdHlUeXBlcy5mb3JFYWNoKGVudGl0eVR5cGUgPT4ge1xuXHRcdGVudGl0eVR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMgPSBlbnRpdHlUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLm1hcChuYXZQcm9wID0+IHtcblx0XHRcdGNvbnN0IG91dE5hdlByb3A6IFBhcnRpYWw8TmF2aWdhdGlvblByb3BlcnR5PiA9IHtcblx0XHRcdFx0X3R5cGU6IFwiTmF2aWdhdGlvblByb3BlcnR5XCIsXG5cdFx0XHRcdG5hbWU6IG5hdlByb3AubmFtZSxcblx0XHRcdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBuYXZQcm9wLmZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRcdFx0cGFydG5lcjogKG5hdlByb3AgYXMgYW55KS5oYXNPd25Qcm9wZXJ0eShcInBhcnRuZXJcIikgPyAobmF2UHJvcCBhcyBhbnkpLnBhcnRuZXIgOiB1bmRlZmluZWQsXG5cdFx0XHRcdC8vIHRhcmdldFR5cGVOYW1lOiBGdWxseVF1YWxpZmllZE5hbWU7XG5cdFx0XHRcdC8vIHRhcmdldFR5cGU6IEVudGl0eVR5cGU7XG5cdFx0XHRcdGlzQ29sbGVjdGlvbjogKG5hdlByb3AgYXMgYW55KS5oYXNPd25Qcm9wZXJ0eShcImlzQ29sbGVjdGlvblwiKSA/IChuYXZQcm9wIGFzIGFueSkuaXNDb2xsZWN0aW9uIDogZmFsc2UsXG5cdFx0XHRcdGNvbnRhaW5zVGFyZ2V0OiAobmF2UHJvcCBhcyBhbnkpLmhhc093blByb3BlcnR5KFwiY29udGFpbnNUYXJnZXRcIilcblx0XHRcdFx0XHQ/IChuYXZQcm9wIGFzIGFueSkuY29udGFpbnNUYXJnZXRcblx0XHRcdFx0XHQ6IGZhbHNlLFxuXHRcdFx0XHRyZWZlcmVudGlhbENvbnN0cmFpbnQ6IChuYXZQcm9wIGFzIGFueSkucmVmZXJlbnRpYWxDb25zdHJhaW50XG5cdFx0XHRcdFx0PyAobmF2UHJvcCBhcyBhbnkpLnJlZmVyZW50aWFsQ29uc3RyYWludFxuXHRcdFx0XHRcdDogW10sXG5cdFx0XHRcdGFubm90YXRpb25zOiB7fVxuXHRcdFx0fTtcblx0XHRcdGlmICgobmF2UHJvcCBhcyBHZW5lcmljTmF2aWdhdGlvblByb3BlcnR5KS50YXJnZXRUeXBlTmFtZSkge1xuXHRcdFx0XHRvdXROYXZQcm9wLnRhcmdldFR5cGUgPSBvYmplY3RNYXBbKG5hdlByb3AgYXMgVjROYXZpZ2F0aW9uUHJvcGVydHkpLnRhcmdldFR5cGVOYW1lXTtcblx0XHRcdH0gZWxzZSBpZiAoKG5hdlByb3AgYXMgVjJOYXZpZ2F0aW9uUHJvcGVydHkpLnJlbGF0aW9uc2hpcCkge1xuXHRcdFx0XHRjb25zdCB0YXJnZXRBc3NvY2lhdGlvbiA9IGFzc29jaWF0aW9ucy5maW5kKFxuXHRcdFx0XHRcdGFzc29jaWF0aW9uID0+IGFzc29jaWF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gKG5hdlByb3AgYXMgVjJOYXZpZ2F0aW9uUHJvcGVydHkpLnJlbGF0aW9uc2hpcFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAodGFyZ2V0QXNzb2NpYXRpb24pIHtcblx0XHRcdFx0XHRjb25zdCBhc3NvY2lhdGlvbkVuZCA9IHRhcmdldEFzc29jaWF0aW9uLmFzc29jaWF0aW9uRW5kLmZpbmQoXG5cdFx0XHRcdFx0XHRlbmQgPT4gZW5kLnJvbGUgPT09IChuYXZQcm9wIGFzIFYyTmF2aWdhdGlvblByb3BlcnR5KS50b1JvbGVcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGlmIChhc3NvY2lhdGlvbkVuZCkge1xuXHRcdFx0XHRcdFx0b3V0TmF2UHJvcC50YXJnZXRUeXBlID0gb2JqZWN0TWFwW2Fzc29jaWF0aW9uRW5kLnR5cGVdO1xuXHRcdFx0XHRcdFx0b3V0TmF2UHJvcC5pc0NvbGxlY3Rpb24gPSBhc3NvY2lhdGlvbkVuZC5tdWx0aXBsaWNpdHkgPT09IFwiKlwiO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKG91dE5hdlByb3AudGFyZ2V0VHlwZSkge1xuXHRcdFx0XHRvdXROYXZQcm9wLnRhcmdldFR5cGVOYW1lID0gb3V0TmF2UHJvcC50YXJnZXRUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IG91dE5hdlByb3BSZXEgPSBvdXROYXZQcm9wIGFzIE5hdmlnYXRpb25Qcm9wZXJ0eTtcblx0XHRcdG9iamVjdE1hcFtvdXROYXZQcm9wUmVxLmZ1bGx5UXVhbGlmaWVkTmFtZV0gPSBvdXROYXZQcm9wUmVxO1xuXHRcdFx0cmV0dXJuIG91dE5hdlByb3BSZXE7XG5cdFx0fSk7XG5cdFx0KGVudGl0eVR5cGUgYXMgRW50aXR5VHlwZSkucmVzb2x2ZVBhdGggPSBjcmVhdGVSZXNvbHZlUGF0aEZuKGVudGl0eVR5cGUgYXMgRW50aXR5VHlwZSwgb2JqZWN0TWFwKTtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIGxpbmtBY3Rpb25zVG9FbnRpdHlUeXBlKG5hbWVzcGFjZTogc3RyaW5nLCBhY3Rpb25zOiBBY3Rpb25bXSwgb2JqZWN0TWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZCB7XG5cdGFjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuXHRcdGlmICghYWN0aW9uLmFubm90YXRpb25zKSB7XG5cdFx0XHRhY3Rpb24uYW5ub3RhdGlvbnMgPSB7fTtcblx0XHR9XG5cdFx0aWYgKGFjdGlvbi5pc0JvdW5kKSB7XG5cdFx0XHRjb25zdCBzb3VyY2VFbnRpdHlUeXBlID0gb2JqZWN0TWFwW2FjdGlvbi5zb3VyY2VUeXBlXTtcblx0XHRcdGFjdGlvbi5zb3VyY2VFbnRpdHlUeXBlID0gc291cmNlRW50aXR5VHlwZTtcblx0XHRcdGlmIChzb3VyY2VFbnRpdHlUeXBlKSB7XG5cdFx0XHRcdGlmICghc291cmNlRW50aXR5VHlwZS5hY3Rpb25zKSB7XG5cdFx0XHRcdFx0c291cmNlRW50aXR5VHlwZS5hY3Rpb25zID0ge307XG5cdFx0XHRcdH1cblx0XHRcdFx0c291cmNlRW50aXR5VHlwZS5hY3Rpb25zW2FjdGlvbi5uYW1lXSA9IGFjdGlvbjtcblx0XHRcdFx0c291cmNlRW50aXR5VHlwZS5hY3Rpb25zW2Ake25hbWVzcGFjZX0uJHthY3Rpb24ubmFtZX1gXSA9IGFjdGlvbjtcblx0XHRcdH1cblx0XHRcdGFjdGlvbi5yZXR1cm5FbnRpdHlUeXBlID0gb2JqZWN0TWFwW2FjdGlvbi5yZXR1cm5UeXBlXTtcblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBsaW5rRW50aXR5VHlwZVRvRW50aXR5U2V0KFxuXHRlbnRpdHlTZXRzOiBFbnRpdHlTZXRbXSxcblx0b2JqZWN0TWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuXHRyZWZlcmVuY2VzOiBSZWZlcmVuY2VzV2l0aE1hcFxuKTogdm9pZCB7XG5cdGVudGl0eVNldHMuZm9yRWFjaChlbnRpdHlTZXQgPT4ge1xuXHRcdGVudGl0eVNldC5lbnRpdHlUeXBlID0gb2JqZWN0TWFwW2VudGl0eVNldC5lbnRpdHlUeXBlTmFtZV07XG5cdFx0aWYgKCFlbnRpdHlTZXQuZW50aXR5VHlwZSkge1xuXHRcdFx0ZW50aXR5U2V0LmVudGl0eVR5cGUgPSBvYmplY3RNYXBbdW5hbGlhcyhyZWZlcmVuY2VzLCBlbnRpdHlTZXQuZW50aXR5VHlwZU5hbWUpIGFzIHN0cmluZ107XG5cdFx0fVxuXHRcdGlmICghZW50aXR5U2V0LmFubm90YXRpb25zKSB7XG5cdFx0XHRlbnRpdHlTZXQuYW5ub3RhdGlvbnMgPSB7fTtcblx0XHR9XG5cdFx0aWYgKCFlbnRpdHlTZXQuZW50aXR5VHlwZS5hbm5vdGF0aW9ucykge1xuXHRcdFx0ZW50aXR5U2V0LmVudGl0eVR5cGUuYW5ub3RhdGlvbnMgPSB7fTtcblx0XHR9XG5cdFx0ZW50aXR5U2V0LmVudGl0eVR5cGUua2V5cy5mb3JFYWNoKChrZXlQcm9wOiBQcm9wZXJ0eSkgPT4ge1xuXHRcdFx0a2V5UHJvcC5pc0tleSA9IHRydWU7XG5cdFx0fSk7XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBsaW5rRW50aXR5VHlwZVRvU2luZ2xldG9uKFxuXHRzaW5nbGV0b25zOiBTaW5nbGV0b25bXSA9IFtdLFxuXHRvYmplY3RNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4sXG5cdHJlZmVyZW5jZXM6IFJlZmVyZW5jZXNXaXRoTWFwXG4pOiB2b2lkIHtcblx0c2luZ2xldG9ucy5mb3JFYWNoKHNpbmdsZXRvbiA9PiB7XG5cdFx0c2luZ2xldG9uLnR5cGUgPSBvYmplY3RNYXBbc2luZ2xldG9uLnR5cGVOYW1lXTtcblx0XHRpZiAoIXNpbmdsZXRvbi50eXBlKSB7XG5cdFx0XHRzaW5nbGV0b24udHlwZSA9IG9iamVjdE1hcFt1bmFsaWFzKHJlZmVyZW5jZXMsIHNpbmdsZXRvbi50eXBlTmFtZSkgYXMgc3RyaW5nXTtcblx0XHR9XG5cdFx0aWYgKCFzaW5nbGV0b24uYW5ub3RhdGlvbnMpIHtcblx0XHRcdHNpbmdsZXRvbi5hbm5vdGF0aW9ucyA9IHt9O1xuXHRcdH1cblx0XHRpZiAoIXNpbmdsZXRvbi50eXBlLmFubm90YXRpb25zKSB7XG5cdFx0XHRzaW5nbGV0b24udHlwZS5hbm5vdGF0aW9ucyA9IHt9O1xuXHRcdH1cblx0XHRzaW5nbGV0b24udHlwZS5rZXlzLmZvckVhY2goKGtleVByb3A6IFByb3BlcnR5KSA9PiB7XG5cdFx0XHRrZXlQcm9wLmlzS2V5ID0gdHJ1ZTtcblx0XHR9KTtcblx0XHRzaW5nbGV0b24uZW50aXR5VHlwZSA9IHNpbmdsZXRvbi50eXBlO1xuXHR9KTtcbn1cblxuZnVuY3Rpb24gbGlua1Byb3BlcnRpZXNUb0NvbXBsZXhUeXBlcyhlbnRpdHlUeXBlczogRW50aXR5VHlwZVtdLCBvYmplY3RNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcblx0ZnVuY3Rpb24gbGluayhwcm9wZXJ0eTogUHJvcGVydHkpIHtcblx0XHRpZiAoIXByb3BlcnR5LmFubm90YXRpb25zKSB7XG5cdFx0XHRwcm9wZXJ0eS5hbm5vdGF0aW9ucyA9IHt9O1xuXHRcdH1cblxuXHRcdHRyeSB7XG4gICAgICBpZiAocHJvcGVydHkudHlwZS5pbmRleE9mKFwiRWRtXCIpICE9PSAwKSB7XG4gICAgICAgIGxldCBjb21wbGV4VHlwZTogQ29tcGxleFR5cGUgfCBUeXBlRGVmaW5pdGlvbjtcbiAgICAgICAgaWYgKHByb3BlcnR5LnR5cGUuc3RhcnRzV2l0aChcIkNvbGxlY3Rpb25cIikpIHtcbiAgICAgICAgICBjb25zdCBjb21wbGV4VHlwZU5hbWUgPSBwcm9wZXJ0eS50eXBlLnN1YnN0cigxMSwgcHJvcGVydHkudHlwZS5sZW5ndGggLSAxMik7XG4gICAgICAgICAgY29tcGxleFR5cGUgPSBvYmplY3RNYXBbY29tcGxleFR5cGVOYW1lXSBhcyBDb21wbGV4VHlwZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb21wbGV4VHlwZSA9IG9iamVjdE1hcFtwcm9wZXJ0eS50eXBlXSBhcyBDb21wbGV4VHlwZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcGxleFR5cGUpIHtcbiAgICAgICAgICBwcm9wZXJ0eS50YXJnZXRUeXBlID0gY29tcGxleFR5cGU7XG4gICAgICAgICAgaWYgKGNvbXBsZXhUeXBlLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGNvbXBsZXhUeXBlLnByb3BlcnRpZXMuZm9yRWFjaChsaW5rKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB9XG4gICAgICAgIH1cblx0XHR9IGNhdGNoIChzRXJyb3Ipe1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiUHJvcGVydHkgVHlwZSBpcyBub3QgZGVmaW5lZFwiKTtcblx0XHR9XG5cdFx0XG5cdH1cblxuXHRlbnRpdHlUeXBlcy5mb3JFYWNoKGVudGl0eVR5cGUgPT4ge1xuXHRcdGVudGl0eVR5cGUuZW50aXR5UHJvcGVydGllcy5mb3JFYWNoKGxpbmspO1xuXHR9KTtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZUNvbXBsZXhUeXBlcyhcblx0Y29tcGxleFR5cGVzOiBQYXJzZXJDb21wbGV4VHlwZVtdLFxuXHRhc3NvY2lhdGlvbnM6IEFzc29jaWF0aW9uW10sXG5cdG9iamVjdE1hcDogUmVjb3JkPHN0cmluZywgYW55PlxuKSB7XG5cdGNvbXBsZXhUeXBlcy5mb3JFYWNoKGNvbXBsZXhUeXBlID0+IHtcblx0XHQoY29tcGxleFR5cGUgYXMgQ29tcGxleFR5cGUpLmFubm90YXRpb25zID0ge307XG5cdFx0Y29tcGxleFR5cGUucHJvcGVydGllcy5mb3JFYWNoKHByb3BlcnR5ID0+IHtcblx0XHRcdGlmICghKHByb3BlcnR5IGFzIFByb3BlcnR5KS5hbm5vdGF0aW9ucykge1xuXHRcdFx0XHQocHJvcGVydHkgYXMgUHJvcGVydHkpLmFubm90YXRpb25zID0ge307XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0Y29tcGxleFR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMgPSBjb21wbGV4VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5tYXAobmF2UHJvcCA9PiB7XG5cdFx0XHRpZiAoIShuYXZQcm9wIGFzIE5hdmlnYXRpb25Qcm9wZXJ0eSkuYW5ub3RhdGlvbnMpIHtcblx0XHRcdFx0KG5hdlByb3AgYXMgTmF2aWdhdGlvblByb3BlcnR5KS5hbm5vdGF0aW9ucyA9IHt9O1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgb3V0TmF2UHJvcDogUGFydGlhbDxOYXZpZ2F0aW9uUHJvcGVydHk+ID0ge1xuXHRcdFx0XHRfdHlwZTogXCJOYXZpZ2F0aW9uUHJvcGVydHlcIixcblx0XHRcdFx0bmFtZTogbmF2UHJvcC5uYW1lLFxuXHRcdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IG5hdlByb3AuZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHRwYXJ0bmVyOiAobmF2UHJvcCBhcyBhbnkpLmhhc093blByb3BlcnR5KFwicGFydG5lclwiKSA/IChuYXZQcm9wIGFzIGFueSkucGFydG5lciA6IHVuZGVmaW5lZCxcblx0XHRcdFx0Ly8gdGFyZ2V0VHlwZU5hbWU6IEZ1bGx5UXVhbGlmaWVkTmFtZTtcblx0XHRcdFx0Ly8gdGFyZ2V0VHlwZTogRW50aXR5VHlwZTtcblx0XHRcdFx0aXNDb2xsZWN0aW9uOiAobmF2UHJvcCBhcyBhbnkpLmhhc093blByb3BlcnR5KFwiaXNDb2xsZWN0aW9uXCIpID8gKG5hdlByb3AgYXMgYW55KS5pc0NvbGxlY3Rpb24gOiBmYWxzZSxcblx0XHRcdFx0Y29udGFpbnNUYXJnZXQ6IChuYXZQcm9wIGFzIGFueSkuaGFzT3duUHJvcGVydHkoXCJjb250YWluc1RhcmdldFwiKVxuXHRcdFx0XHRcdD8gKG5hdlByb3AgYXMgYW55KS5jb250YWluc1RhcmdldFxuXHRcdFx0XHRcdDogZmFsc2UsXG5cdFx0XHRcdHJlZmVyZW50aWFsQ29uc3RyYWludDogKG5hdlByb3AgYXMgYW55KS5yZWZlcmVudGlhbENvbnN0cmFpbnRcblx0XHRcdFx0XHQ/IChuYXZQcm9wIGFzIGFueSkucmVmZXJlbnRpYWxDb25zdHJhaW50XG5cdFx0XHRcdFx0OiBbXVxuXHRcdFx0fTtcblx0XHRcdGlmICgobmF2UHJvcCBhcyBHZW5lcmljTmF2aWdhdGlvblByb3BlcnR5KS50YXJnZXRUeXBlTmFtZSkge1xuXHRcdFx0XHRvdXROYXZQcm9wLnRhcmdldFR5cGUgPSBvYmplY3RNYXBbKG5hdlByb3AgYXMgVjROYXZpZ2F0aW9uUHJvcGVydHkpLnRhcmdldFR5cGVOYW1lXTtcblx0XHRcdH0gZWxzZSBpZiAoKG5hdlByb3AgYXMgVjJOYXZpZ2F0aW9uUHJvcGVydHkpLnJlbGF0aW9uc2hpcCkge1xuXHRcdFx0XHRjb25zdCB0YXJnZXRBc3NvY2lhdGlvbiA9IGFzc29jaWF0aW9ucy5maW5kKFxuXHRcdFx0XHRcdGFzc29jaWF0aW9uID0+IGFzc29jaWF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gKG5hdlByb3AgYXMgVjJOYXZpZ2F0aW9uUHJvcGVydHkpLnJlbGF0aW9uc2hpcFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAodGFyZ2V0QXNzb2NpYXRpb24pIHtcblx0XHRcdFx0XHRjb25zdCBhc3NvY2lhdGlvbkVuZCA9IHRhcmdldEFzc29jaWF0aW9uLmFzc29jaWF0aW9uRW5kLmZpbmQoXG5cdFx0XHRcdFx0XHRlbmQgPT4gZW5kLnJvbGUgPT09IChuYXZQcm9wIGFzIFYyTmF2aWdhdGlvblByb3BlcnR5KS50b1JvbGVcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGlmIChhc3NvY2lhdGlvbkVuZCkge1xuXHRcdFx0XHRcdFx0b3V0TmF2UHJvcC50YXJnZXRUeXBlID0gb2JqZWN0TWFwW2Fzc29jaWF0aW9uRW5kLnR5cGVdO1xuXHRcdFx0XHRcdFx0b3V0TmF2UHJvcC5pc0NvbGxlY3Rpb24gPSBhc3NvY2lhdGlvbkVuZC5tdWx0aXBsaWNpdHkgPT09IFwiKlwiO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKG91dE5hdlByb3AudGFyZ2V0VHlwZSkge1xuXHRcdFx0XHRvdXROYXZQcm9wLnRhcmdldFR5cGVOYW1lID0gb3V0TmF2UHJvcC50YXJnZXRUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IG91dE5hdlByb3BSZXEgPSBvdXROYXZQcm9wIGFzIE5hdmlnYXRpb25Qcm9wZXJ0eTtcblx0XHRcdG9iamVjdE1hcFtvdXROYXZQcm9wUmVxLmZ1bGx5UXVhbGlmaWVkTmFtZV0gPSBvdXROYXZQcm9wUmVxO1xuXHRcdFx0cmV0dXJuIG91dE5hdlByb3BSZXE7XG5cdFx0fSk7XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBzcGxpdFRlcm0ocmVmZXJlbmNlczogUmVmZXJlbmNlc1dpdGhNYXAsIHRlcm1WYWx1ZTogc3RyaW5nKSB7XG5cdGNvbnN0IGFsaWFzZWRUZXJtID0gYWxpYXMocmVmZXJlbmNlcywgdGVybVZhbHVlKTtcblx0Y29uc3QgbGFzdERvdCA9IGFsaWFzZWRUZXJtLmxhc3RJbmRleE9mKFwiLlwiKTtcblx0bGV0IHRlcm1BbGlhcyA9IGFsaWFzZWRUZXJtLnN1YnN0cigwLCBsYXN0RG90KTtcblx0bGV0IHRlcm0gPSBhbGlhc2VkVGVybS5zdWJzdHIobGFzdERvdCArIDEpO1xuXHRyZXR1cm4gW3Rlcm1BbGlhcywgdGVybV07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIHNwZWNpZmljIHBhdGhcbiAqIEBwYXJhbSBzUGF0aFxuICovXG5mdW5jdGlvbiBjcmVhdGVHbG9iYWxSZXNvbHZlKGNvbnZlcnRlZE91dHB1dDogQ29udmVydGVyT3V0cHV0LCBvYmplY3RNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcblx0cmV0dXJuIGZ1bmN0aW9uIHJlc29sdmVQYXRoPFQgZXh0ZW5kcyBTZXJ2aWNlT2JqZWN0QW5kQW5ub3RhdGlvbj4oc1BhdGg6IHN0cmluZyk6IFJlc29sdXRpb25UYXJnZXQ8VD4ge1xuXHRcdGNvbnN0IGFQYXRoU3BsaXQgPSBzUGF0aC5zcGxpdChcIi9cIik7XG5cdFx0aWYgKGFQYXRoU3BsaXQuc2hpZnQoKSAhPT0gXCJcIikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGRlYWwgd2l0aCByZWxhdGl2ZSBwYXRoXCIpO1xuXHRcdH1cblx0XHRjb25zdCBlbnRpdHlTZXROYW1lID0gYVBhdGhTcGxpdC5zaGlmdCgpO1xuXHRcdGNvbnN0IGVudGl0eVNldCA9IGNvbnZlcnRlZE91dHB1dC5lbnRpdHlTZXRzLmZpbmQoZXQgPT4gZXQubmFtZSA9PT0gZW50aXR5U2V0TmFtZSk7XG5cdFx0aWYgKCFlbnRpdHlTZXQpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHRhcmdldDogY29udmVydGVkT3V0cHV0LmVudGl0eUNvbnRhaW5lcixcblx0XHRcdFx0b2JqZWN0UGF0aDogW2NvbnZlcnRlZE91dHB1dC5lbnRpdHlDb250YWluZXJdXG5cdFx0XHR9IGFzIFJlc29sdXRpb25UYXJnZXQ8VD47XG5cdFx0fVxuXHRcdGlmIChhUGF0aFNwbGl0Lmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dGFyZ2V0OiBlbnRpdHlTZXQsXG5cdFx0XHRcdG9iamVjdFBhdGg6IFtjb252ZXJ0ZWRPdXRwdXQuZW50aXR5Q29udGFpbmVyLCBlbnRpdHlTZXRdXG5cdFx0XHR9IGFzIFJlc29sdXRpb25UYXJnZXQ8VD47XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHRhcmdldFJlc29sdXRpb246IGFueSA9IHJlc29sdmVUYXJnZXQob2JqZWN0TWFwLCBlbnRpdHlTZXQsIFwiL1wiICsgYVBhdGhTcGxpdC5qb2luKFwiL1wiKSwgZmFsc2UsIHRydWUpO1xuXHRcdFx0aWYgKHRhcmdldFJlc29sdXRpb24udGFyZ2V0KSB7XG5cdFx0XHRcdHRhcmdldFJlc29sdXRpb24udmlzaXRlZE9iamVjdHMucHVzaCh0YXJnZXRSZXNvbHV0aW9uLnRhcmdldCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR0YXJnZXQ6IHRhcmdldFJlc29sdXRpb24udGFyZ2V0LFxuXHRcdFx0XHRvYmplY3RQYXRoOiB0YXJnZXRSZXNvbHV0aW9uLnZpc2l0ZWRPYmplY3RzXG5cdFx0XHR9O1xuXHRcdH1cblx0fTtcbn1cblxubGV0IEFOTk9UQVRJT05fRVJST1JTOiB7IG1lc3NhZ2U6IHN0cmluZyB9W10gPSBbXTtcbmxldCBBTExfQU5OT1RBVElPTl9FUlJPUlM6IGFueSA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFR5cGVzKHBhcnNlck91dHB1dDogUGFyc2VyT3V0cHV0KTogQ29udmVydGVyT3V0cHV0IHtcblx0QU5OT1RBVElPTl9FUlJPUlMgPSBbXTtcblx0Y29uc3Qgb2JqZWN0TWFwID0gYnVpbGRPYmplY3RNYXAocGFyc2VyT3V0cHV0KTtcblx0cmVzb2x2ZU5hdmlnYXRpb25Qcm9wZXJ0aWVzKFxuXHRcdHBhcnNlck91dHB1dC5zY2hlbWEuZW50aXR5VHlwZXMgYXMgRW50aXR5VHlwZVtdLFxuXHRcdHBhcnNlck91dHB1dC5zY2hlbWEuYXNzb2NpYXRpb25zLFxuXHRcdG9iamVjdE1hcFxuXHQpO1xuXHRpZiAoIShwYXJzZXJPdXRwdXQuc2NoZW1hLmVudGl0eUNvbnRhaW5lciBhcyBFbnRpdHlDb250YWluZXIpLmFubm90YXRpb25zKSB7XG5cdFx0KHBhcnNlck91dHB1dC5zY2hlbWEuZW50aXR5Q29udGFpbmVyIGFzIEVudGl0eUNvbnRhaW5lcikuYW5ub3RhdGlvbnMgPSB7fTtcblx0fVxuXHRsaW5rQWN0aW9uc1RvRW50aXR5VHlwZShwYXJzZXJPdXRwdXQuc2NoZW1hLm5hbWVzcGFjZSwgcGFyc2VyT3V0cHV0LnNjaGVtYS5hY3Rpb25zIGFzIEFjdGlvbltdLCBvYmplY3RNYXApO1xuXHRsaW5rRW50aXR5VHlwZVRvRW50aXR5U2V0KHBhcnNlck91dHB1dC5zY2hlbWEuZW50aXR5U2V0cyBhcyBFbnRpdHlTZXRbXSwgb2JqZWN0TWFwLCBwYXJzZXJPdXRwdXQucmVmZXJlbmNlcyk7XG5cdGxpbmtFbnRpdHlUeXBlVG9TaW5nbGV0b24ocGFyc2VyT3V0cHV0LnNjaGVtYS5zaW5nbGV0b25zIGFzIFNpbmdsZXRvbltdLCBvYmplY3RNYXAsIHBhcnNlck91dHB1dC5yZWZlcmVuY2VzKTtcblx0bGlua1Byb3BlcnRpZXNUb0NvbXBsZXhUeXBlcyhwYXJzZXJPdXRwdXQuc2NoZW1hLmVudGl0eVR5cGVzIGFzIEVudGl0eVR5cGVbXSwgb2JqZWN0TWFwKTtcblx0cHJlcGFyZUNvbXBsZXhUeXBlcyhwYXJzZXJPdXRwdXQuc2NoZW1hLmNvbXBsZXhUeXBlcyBhcyBDb21wbGV4VHlwZVtdLCBwYXJzZXJPdXRwdXQuc2NoZW1hLmFzc29jaWF0aW9ucywgb2JqZWN0TWFwKTtcblx0Y29uc3QgdG9SZXNvbHZlOiBSZXNvbHZlYWJsZVtdID0gW107XG5cdGNvbnN0IHVucmVzb2x2ZWRBbm5vdGF0aW9uczogQW5ub3RhdGlvbkxpc3RbXSA9IFtdO1xuXG5cdE9iamVjdC5rZXlzKHBhcnNlck91dHB1dC5zY2hlbWEuYW5ub3RhdGlvbnMpLmZvckVhY2goYW5ub3RhdGlvblNvdXJjZSA9PiB7XG5cdFx0cGFyc2VyT3V0cHV0LnNjaGVtYS5hbm5vdGF0aW9uc1thbm5vdGF0aW9uU291cmNlXS5mb3JFYWNoKGFubm90YXRpb25MaXN0ID0+IHtcblx0XHRcdGxldCBjdXJyZW50VGFyZ2V0TmFtZSA9IHVuYWxpYXMocGFyc2VyT3V0cHV0LnJlZmVyZW5jZXMsIGFubm90YXRpb25MaXN0LnRhcmdldCkgYXMgc3RyaW5nO1xuXHRcdFx0Y29uc3Qgb2JqZWN0TWFwRWxlbWVudCA9IG9iamVjdE1hcFtjdXJyZW50VGFyZ2V0TmFtZV07XG5cdFx0XHRpZiAoIW9iamVjdE1hcEVsZW1lbnQpIHtcblx0XHRcdFx0aWYgKGN1cnJlbnRUYXJnZXROYW1lICYmIGN1cnJlbnRUYXJnZXROYW1lLmluZGV4T2YoXCJAXCIpICE9PSAtMSkge1xuXHRcdFx0XHRcdChhbm5vdGF0aW9uTGlzdCBhcyBhbnkpLl9fc291cmNlID0gYW5ub3RhdGlvblNvdXJjZTtcblx0XHRcdFx0XHR1bnJlc29sdmVkQW5ub3RhdGlvbnMucHVzaChhbm5vdGF0aW9uTGlzdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIG9iamVjdE1hcEVsZW1lbnQgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0bGV0IGFsbFRhcmdldHMgPSBbb2JqZWN0TWFwRWxlbWVudF07XG5cdFx0XHRcdGxldCBiT3ZlcnJpZGVFeGlzdGluZyA9IHRydWU7XG5cdFx0XHRcdGlmIChvYmplY3RNYXBFbGVtZW50Ll90eXBlID09PSBcIlVuYm91bmRHZW5lcmljQWN0aW9uXCIpIHtcblx0XHRcdFx0XHRhbGxUYXJnZXRzID0gb2JqZWN0TWFwRWxlbWVudC5hY3Rpb25zO1xuXHRcdFx0XHRcdGJPdmVycmlkZUV4aXN0aW5nID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0YWxsVGFyZ2V0cy5mb3JFYWNoKGN1cnJlbnRUYXJnZXQgPT4ge1xuXHRcdFx0XHRcdGlmIChjdXJyZW50VGFyZ2V0TmFtZSAhPT0gY3VycmVudFRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUpIHtcblx0XHRcdFx0XHRcdGN1cnJlbnRUYXJnZXROYW1lID0gY3VycmVudFRhcmdldC5mdWxseVF1YWxpZmllZE5hbWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICghY3VycmVudFRhcmdldC5hbm5vdGF0aW9ucykge1xuXHRcdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9ucyA9IHt9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRhbm5vdGF0aW9uTGlzdC5hbm5vdGF0aW9ucy5mb3JFYWNoKGFubm90YXRpb24gPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgW3ZvY0FsaWFzLCB2b2NUZXJtXSA9IHNwbGl0VGVybShkZWZhdWx0UmVmZXJlbmNlcywgYW5ub3RhdGlvbi50ZXJtKTtcblx0XHRcdFx0XHRcdGlmICghY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc10pIHtcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc10gPSB7fTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmICghY3VycmVudFRhcmdldC5hbm5vdGF0aW9ucy5fYW5ub3RhdGlvbnMpIHtcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9ucy5fYW5ub3RhdGlvbnMgPSB7fTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Y29uc3Qgdm9jVGVybVdpdGhRdWFsaWZpZXIgPSBgJHt2b2NUZXJtfSR7XG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb24ucXVhbGlmaWVyID8gYCMke2Fubm90YXRpb24ucXVhbGlmaWVyfWAgOiBcIlwiXG5cdFx0XHRcdFx0XHR9YDtcblx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0IWJPdmVycmlkZUV4aXN0aW5nICYmXG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnM/Llt2b2NBbGlhc10/Llt2b2NUZXJtV2l0aFF1YWxpZmllcl0gIT09IHVuZGVmaW5lZFxuXHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXSA9IGNvbnZlcnRBbm5vdGF0aW9uKFxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uIGFzIEFubm90YXRpb24sXG5cdFx0XHRcdFx0XHRcdHBhcnNlck91dHB1dCxcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhcmdldCxcblx0XHRcdFx0XHRcdFx0b2JqZWN0TWFwLFxuXHRcdFx0XHRcdFx0XHR0b1Jlc29sdmUsXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb25Tb3VyY2UsXG5cdFx0XHRcdFx0XHRcdHVucmVzb2x2ZWRBbm5vdGF0aW9uc1xuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHN3aXRjaCAodHlwZW9mIGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXSkge1xuXHRcdFx0XHRcdFx0XHRjYXNlIFwic3RyaW5nXCI6XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdID0gbmV3IFN0cmluZyhcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgXCJib29sZWFuXCI6XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdID0gbmV3IEJvb2xlYW4oXG5cdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl1cblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0gIT09IG51bGwgJiZcblx0XHRcdFx0XHRcdFx0dHlwZW9mIGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXSA9PT0gXCJvYmplY3RcIlxuXHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXS50ZXJtID0gdW5hbGlhcyhcblx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0UmVmZXJlbmNlcyxcblx0XHRcdFx0XHRcdFx0XHRgJHt2b2NBbGlhc30uJHt2b2NUZXJtfWBcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdLnF1YWxpZmllciA9IGFubm90YXRpb24ucXVhbGlmaWVyO1xuXHRcdFx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0uX19zb3VyY2UgPSBhbm5vdGF0aW9uU291cmNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Y29uc3QgYW5ub3RhdGlvblRhcmdldCA9IGAke2N1cnJlbnRUYXJnZXROYW1lfUAke3VuYWxpYXMoXG5cdFx0XHRcdFx0XHRcdGRlZmF1bHRSZWZlcmVuY2VzLFxuXHRcdFx0XHRcdFx0XHR2b2NBbGlhcyArIFwiLlwiICsgdm9jVGVybVdpdGhRdWFsaWZpZXJcblx0XHRcdFx0XHRcdCl9YDtcblx0XHRcdFx0XHRcdGlmIChhbm5vdGF0aW9uLmFubm90YXRpb25zICYmIEFycmF5LmlzQXJyYXkoYW5ub3RhdGlvbi5hbm5vdGF0aW9ucykpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc3ViQW5ub3RhdGlvbkxpc3QgPSB7XG5cdFx0XHRcdFx0XHRcdFx0dGFyZ2V0OiBhbm5vdGF0aW9uVGFyZ2V0LFxuXHRcdFx0XHRcdFx0XHRcdGFubm90YXRpb25zOiBhbm5vdGF0aW9uLmFubm90YXRpb25zLFxuXHRcdFx0XHRcdFx0XHRcdF9fc291cmNlOiBhbm5vdGF0aW9uU291cmNlXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdHVucmVzb2x2ZWRBbm5vdGF0aW9ucy5wdXNoKHN1YkFubm90YXRpb25MaXN0KTtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb24uYW5ub3RhdGlvbnMgJiZcblx0XHRcdFx0XHRcdFx0IWN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXS5hbm5vdGF0aW9uc1xuXHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXS5hbm5vdGF0aW9ucyA9XG5cdFx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvbi5hbm5vdGF0aW9ucztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnMuX2Fubm90YXRpb25zW2Ake3ZvY0FsaWFzfS4ke3ZvY1Rlcm1XaXRoUXVhbGlmaWVyfWBdID1cblx0XHRcdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdO1xuXHRcdFx0XHRcdFx0b2JqZWN0TWFwW2Fubm90YXRpb25UYXJnZXRdID0gY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSk7XG5cdGNvbnN0IGV4dHJhVW5yZXNvbHZlZEFubm90YXRpb25zOiBBbm5vdGF0aW9uTGlzdFtdID0gW107XG5cdHVucmVzb2x2ZWRBbm5vdGF0aW9ucy5mb3JFYWNoKGFubm90YXRpb25MaXN0ID0+IHtcblx0XHRjb25zdCBjdXJyZW50VGFyZ2V0TmFtZSA9IHVuYWxpYXMocGFyc2VyT3V0cHV0LnJlZmVyZW5jZXMsIGFubm90YXRpb25MaXN0LnRhcmdldCkgYXMgc3RyaW5nO1xuXHRcdGxldCBbYmFzZU9iaiwgYW5ub3RhdGlvblBhcnRdID0gY3VycmVudFRhcmdldE5hbWUuc3BsaXQoXCJAXCIpO1xuXHRcdGNvbnN0IHRhcmdldFNwbGl0ID0gYW5ub3RhdGlvblBhcnQuc3BsaXQoXCIvXCIpO1xuXHRcdGJhc2VPYmogPSBiYXNlT2JqICsgXCJAXCIgKyB0YXJnZXRTcGxpdFswXTtcblx0XHRjb25zdCBjdXJyZW50VGFyZ2V0ID0gdGFyZ2V0U3BsaXQuc2xpY2UoMSkucmVkdWNlKChjdXJyZW50T2JqLCBwYXRoKSA9PiB7XG5cdFx0XHRpZiAoIWN1cnJlbnRPYmopIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY3VycmVudE9ialtwYXRoXTtcblx0XHR9LCBvYmplY3RNYXBbYmFzZU9ial0pO1xuXHRcdGlmICghY3VycmVudFRhcmdldCkge1xuXHRcdFx0QU5OT1RBVElPTl9FUlJPUlMucHVzaCh7XG5cdFx0XHRcdG1lc3NhZ2U6IFwiVGhlIGZvbGxvd2luZyBhbm5vdGF0aW9uIHRhcmdldCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2aWNlIFwiICsgY3VycmVudFRhcmdldE5hbWVcblx0XHRcdH0pO1xuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJNaXNzaW5nIHRhcmdldCBhZ2FpbiBcIiArIGN1cnJlbnRUYXJnZXROYW1lKTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBjdXJyZW50VGFyZ2V0ID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRpZiAoIWN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnMpIHtcblx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9ucyA9IHt9O1xuXHRcdFx0fVxuXHRcdFx0YW5ub3RhdGlvbkxpc3QuYW5ub3RhdGlvbnMuZm9yRWFjaChhbm5vdGF0aW9uID0+IHtcblx0XHRcdFx0Y29uc3QgW3ZvY0FsaWFzLCB2b2NUZXJtXSA9IHNwbGl0VGVybShkZWZhdWx0UmVmZXJlbmNlcywgYW5ub3RhdGlvbi50ZXJtKTtcblx0XHRcdFx0aWYgKCFjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXSkge1xuXHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdID0ge307XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zLl9hbm5vdGF0aW9ucykge1xuXHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnMuX2Fubm90YXRpb25zID0ge307XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCB2b2NUZXJtV2l0aFF1YWxpZmllciA9IGAke3ZvY1Rlcm19JHthbm5vdGF0aW9uLnF1YWxpZmllciA/IGAjJHthbm5vdGF0aW9uLnF1YWxpZmllcn1gIDogXCJcIn1gO1xuXHRcdFx0XHRjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0gPSBjb252ZXJ0QW5ub3RhdGlvbihcblx0XHRcdFx0XHRhbm5vdGF0aW9uIGFzIEFubm90YXRpb24sXG5cdFx0XHRcdFx0cGFyc2VyT3V0cHV0LFxuXHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQsXG5cdFx0XHRcdFx0b2JqZWN0TWFwLFxuXHRcdFx0XHRcdHRvUmVzb2x2ZSxcblx0XHRcdFx0XHQoYW5ub3RhdGlvbkxpc3QgYXMgYW55KS5fX3NvdXJjZSxcblx0XHRcdFx0XHRleHRyYVVucmVzb2x2ZWRBbm5vdGF0aW9uc1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdICE9PSBudWxsICYmXG5cdFx0XHRcdFx0dHlwZW9mIGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXSA9PT0gXCJvYmplY3RcIlxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0udGVybSA9IHVuYWxpYXMoXG5cdFx0XHRcdFx0XHRkZWZhdWx0UmVmZXJlbmNlcyxcblx0XHRcdFx0XHRcdGAke3ZvY0FsaWFzfS4ke3ZvY1Rlcm19YFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdLnF1YWxpZmllciA9IGFubm90YXRpb24ucXVhbGlmaWVyO1xuXHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW1xuXHRcdFx0XHRcdFx0dm9jVGVybVdpdGhRdWFsaWZpZXJcblx0XHRcdFx0XHRdLl9fc291cmNlID0gKGFubm90YXRpb25MaXN0IGFzIGFueSkuX19zb3VyY2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y3VycmVudFRhcmdldC5hbm5vdGF0aW9ucy5fYW5ub3RhdGlvbnNbYCR7dm9jQWxpYXN9LiR7dm9jVGVybVdpdGhRdWFsaWZpZXJ9YF0gPVxuXHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXTtcblx0XHRcdFx0b2JqZWN0TWFwW2Ake2N1cnJlbnRUYXJnZXROYW1lfUAke3VuYWxpYXMoZGVmYXVsdFJlZmVyZW5jZXMsIHZvY0FsaWFzICsgXCIuXCIgKyB2b2NUZXJtV2l0aFF1YWxpZmllcil9YF0gPVxuXHRcdFx0XHRcdGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fSk7XG5cdHRvUmVzb2x2ZS5mb3JFYWNoKHJlc29sdmVhYmxlID0+IHtcblx0XHRjb25zdCB0b1Jlc29sdmUgPSByZXNvbHZlYWJsZS50b1Jlc29sdmU7XG5cdFx0Y29uc3QgdGFyZ2V0U3RyID0gdG9SZXNvbHZlLiR0YXJnZXQ7XG5cdFx0Y29uc3QgcmVzb2x2ZWRUYXJnZXQgPSBvYmplY3RNYXBbdGFyZ2V0U3RyXTtcblx0XHRjb25zdCB7IGFubm90YXRpb25zVGVybSwgYW5ub3RhdGlvblR5cGUgfSA9IHRvUmVzb2x2ZTtcblx0XHRkZWxldGUgdG9SZXNvbHZlLmFubm90YXRpb25UeXBlO1xuXHRcdGRlbGV0ZSB0b1Jlc29sdmUuYW5ub3RhdGlvbnNUZXJtO1xuXG5cdFx0aWYgKHJlc29sdmVhYmxlLmlubGluZSAmJiAhKHJlc29sdmVkVGFyZ2V0IGluc3RhbmNlb2YgU3RyaW5nKSkge1xuXHRcdFx0Ly8gaW5saW5lIHRoZSByZXNvbHZlZCB0YXJnZXRcblx0XHRcdGxldCBrZXlzOiBrZXlvZiB0eXBlb2YgdG9SZXNvbHZlO1xuXHRcdFx0Zm9yIChrZXlzIGluIHRvUmVzb2x2ZSkgZGVsZXRlIHRvUmVzb2x2ZVtrZXlzXTtcblxuXHRcdFx0T2JqZWN0LmFzc2lnbih0b1Jlc29sdmUsIHJlc29sdmVkVGFyZ2V0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gYXNzaWduIHRoZSByZXNvbHZlZCB0YXJnZXRcblx0XHRcdHRvUmVzb2x2ZS4kdGFyZ2V0ID0gcmVzb2x2ZWRUYXJnZXQ7XG5cdFx0fVxuXG5cdFx0aWYgKCFyZXNvbHZlZFRhcmdldCkge1xuXHRcdFx0dG9SZXNvbHZlLnRhcmdldFN0cmluZyA9IHRhcmdldFN0cjtcblx0XHRcdGlmIChhbm5vdGF0aW9uc1Rlcm0gJiYgYW5ub3RhdGlvblR5cGUpIHtcblx0XHRcdFx0Y29uc3Qgb0Vycm9yTXNnID0ge1xuXHRcdFx0XHRcdG1lc3NhZ2U6XG5cdFx0XHRcdFx0XHRcIlVuYWJsZSB0byByZXNvbHZlIHRoZSBwYXRoIGV4cHJlc3Npb246IFwiICtcblx0XHRcdFx0XHRcdHRhcmdldFN0ciArXG5cdFx0XHRcdFx0XHRcIlxcblwiICtcblx0XHRcdFx0XHRcdFwiXFxuXCIgK1xuXHRcdFx0XHRcdFx0XCJIaW50OiBDaGVjayBhbmQgY29ycmVjdCB0aGUgcGF0aCB2YWx1ZXMgdW5kZXIgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgaW4gdGhlIG1ldGFkYXRhIChhbm5vdGF0aW9uLnhtbCBmaWxlIG9yIENEUyBhbm5vdGF0aW9ucyBmb3IgdGhlIGFwcGxpY2F0aW9uKTogXFxuXFxuXCIgK1xuXHRcdFx0XHRcdFx0XCI8QW5ub3RhdGlvbiBUZXJtID0gXCIgK1xuXHRcdFx0XHRcdFx0YW5ub3RhdGlvbnNUZXJtICtcblx0XHRcdFx0XHRcdFwiPlwiICtcblx0XHRcdFx0XHRcdFwiXFxuXCIgK1xuXHRcdFx0XHRcdFx0XCI8UmVjb3JkIFR5cGUgPSBcIiArXG5cdFx0XHRcdFx0XHRhbm5vdGF0aW9uVHlwZSArXG5cdFx0XHRcdFx0XHRcIj5cIiArXG5cdFx0XHRcdFx0XHRcIlxcblwiICtcblx0XHRcdFx0XHRcdFwiPEFubm90YXRpb25QYXRoID0gXCIgK1xuXHRcdFx0XHRcdFx0dGFyZ2V0U3RyICtcblx0XHRcdFx0XHRcdFwiPlwiXG5cdFx0XHRcdH07XG5cdFx0XHRcdGFkZEFubm90YXRpb25FcnJvck1lc3NhZ2UodGFyZ2V0U3RyLCBvRXJyb3JNc2cpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgcHJvcGVydHkgPSB0b1Jlc29sdmUudGVybTtcblx0XHRcdFx0Y29uc3QgcGF0aCA9IHRvUmVzb2x2ZS5wYXRoO1xuXHRcdFx0XHRjb25zdCB0ZXJtSW5mbyA9IHRhcmdldFN0ciA/IHRhcmdldFN0ci5zcGxpdChcIi9cIilbMF0gOiB0YXJnZXRTdHI7XG5cdFx0XHRcdGNvbnN0IG9FcnJvck1zZyA9IHtcblx0XHRcdFx0XHRtZXNzYWdlOlxuXHRcdFx0XHRcdFx0XCJVbmFibGUgdG8gcmVzb2x2ZSB0aGUgcGF0aCBleHByZXNzaW9uOiBcIiArXG5cdFx0XHRcdFx0XHR0YXJnZXRTdHIgK1xuXHRcdFx0XHRcdFx0XCJcXG5cIiArXG5cdFx0XHRcdFx0XHRcIlxcblwiICtcblx0XHRcdFx0XHRcdFwiSGludDogQ2hlY2sgYW5kIGNvcnJlY3QgdGhlIHBhdGggdmFsdWVzIHVuZGVyIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIGluIHRoZSBtZXRhZGF0YSAoYW5ub3RhdGlvbi54bWwgZmlsZSBvciBDRFMgYW5ub3RhdGlvbnMgZm9yIHRoZSBhcHBsaWNhdGlvbik6IFxcblxcblwiICtcblx0XHRcdFx0XHRcdFwiPEFubm90YXRpb24gVGVybSA9IFwiICtcblx0XHRcdFx0XHRcdHRlcm1JbmZvICtcblx0XHRcdFx0XHRcdFwiPlwiICtcblx0XHRcdFx0XHRcdFwiXFxuXCIgK1xuXHRcdFx0XHRcdFx0XCI8UHJvcGVydHlWYWx1ZSBQcm9wZXJ0eSA9IFwiICtcblx0XHRcdFx0XHRcdHByb3BlcnR5ICtcblx0XHRcdFx0XHRcdFwiICAgICAgICBQYXRoPSBcIiArXG5cdFx0XHRcdFx0XHRwYXRoICtcblx0XHRcdFx0XHRcdFwiPlwiXG5cdFx0XHRcdH07XG5cdFx0XHRcdGFkZEFubm90YXRpb25FcnJvck1lc3NhZ2UodGFyZ2V0U3RyLCBvRXJyb3JNc2cpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cdGZvciAodmFyIHByb3BlcnR5IGluIEFMTF9BTk5PVEFUSU9OX0VSUk9SUykge1xuXHRcdEFOTk9UQVRJT05fRVJST1JTLnB1c2goQUxMX0FOTk9UQVRJT05fRVJST1JTW3Byb3BlcnR5XVswXSk7XG5cdH1cblx0KHBhcnNlck91dHB1dCBhcyBhbnkpLmVudGl0eVNldHMgPSBwYXJzZXJPdXRwdXQuc2NoZW1hLmVudGl0eVNldHM7XG5cdGNvbnN0IGV4dHJhUmVmZXJlbmNlcyA9IHBhcnNlck91dHB1dC5yZWZlcmVuY2VzLmZpbHRlcihyZWZlcmVuY2UgPT4ge1xuXHRcdHJldHVybiBkZWZhdWx0UmVmZXJlbmNlcy5maW5kKGRlZmF1bHRSZWYgPT4gZGVmYXVsdFJlZi5uYW1lc3BhY2UgPT09IHJlZmVyZW5jZS5uYW1lc3BhY2UpID09PSB1bmRlZmluZWQ7XG5cdH0pO1xuXHRjb25zdCBjb252ZXJ0ZWRPdXRwdXQ6IFBhcnRpYWw8Q29udmVydGVyT3V0cHV0PiA9IHtcblx0XHR2ZXJzaW9uOiBwYXJzZXJPdXRwdXQudmVyc2lvbixcblx0XHRhbm5vdGF0aW9uczogcGFyc2VyT3V0cHV0LnNjaGVtYS5hbm5vdGF0aW9ucyxcblx0XHRuYW1lc3BhY2U6IHBhcnNlck91dHB1dC5zY2hlbWEubmFtZXNwYWNlLFxuXHRcdGVudGl0eUNvbnRhaW5lcjogcGFyc2VyT3V0cHV0LnNjaGVtYS5lbnRpdHlDb250YWluZXIgYXMgRW50aXR5Q29udGFpbmVyLFxuXHRcdGFjdGlvbnM6IHBhcnNlck91dHB1dC5zY2hlbWEuYWN0aW9ucyBhcyBBY3Rpb25bXSxcblx0XHRlbnRpdHlTZXRzOiBwYXJzZXJPdXRwdXQuc2NoZW1hLmVudGl0eVNldHMgYXMgRW50aXR5U2V0W10sXG5cdFx0c2luZ2xldG9uczogcGFyc2VyT3V0cHV0LnNjaGVtYS5zaW5nbGV0b25zIGFzIFNpbmdsZXRvbltdLFxuXHRcdGVudGl0eVR5cGVzOiBwYXJzZXJPdXRwdXQuc2NoZW1hLmVudGl0eVR5cGVzIGFzIEVudGl0eVR5cGVbXSxcblx0XHRjb21wbGV4VHlwZXM6IHBhcnNlck91dHB1dC5zY2hlbWEuY29tcGxleFR5cGVzIGFzIENvbXBsZXhUeXBlW10sXG5cdFx0dHlwZURlZmluaXRpb25zOiBwYXJzZXJPdXRwdXQuc2NoZW1hLnR5cGVEZWZpbml0aW9ucyBhcyBUeXBlRGVmaW5pdGlvbltdLFxuXHRcdHJlZmVyZW5jZXM6IGRlZmF1bHRSZWZlcmVuY2VzLmNvbmNhdChleHRyYVJlZmVyZW5jZXMpLFxuXHRcdGRpYWdub3N0aWNzOiBBTk5PVEFUSU9OX0VSUk9SUy5jb25jYXQoKVxuXHR9O1xuXHRjb252ZXJ0ZWRPdXRwdXQucmVzb2x2ZVBhdGggPSBjcmVhdGVHbG9iYWxSZXNvbHZlKGNvbnZlcnRlZE91dHB1dCBhcyBDb252ZXJ0ZXJPdXRwdXQsIG9iamVjdE1hcCk7XG5cdHJldHVybiBjb252ZXJ0ZWRPdXRwdXQgYXMgQ29udmVydGVyT3V0cHV0O1xufVxuXG5mdW5jdGlvbiByZXZlcnRWYWx1ZVRvR2VuZXJpY1R5cGUocmVmZXJlbmNlczogUmVmZXJlbmNlW10sIHZhbHVlOiBhbnkpOiBFeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcblx0bGV0IHJlc3VsdDogRXhwcmVzc2lvbiB8IHVuZGVmaW5lZDtcblx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdGNvbnN0IHZhbHVlTWF0Y2hlcyA9IHZhbHVlLm1hdGNoKC8oXFx3KylcXC5cXHcrXFwvLiovKTtcblx0XHRpZiAodmFsdWVNYXRjaGVzICYmIHJlZmVyZW5jZXMuZmluZChyZWYgPT4gcmVmLmFsaWFzID09PSB2YWx1ZU1hdGNoZXNbMV0pKSB7XG5cdFx0XHRyZXN1bHQgPSB7XG5cdFx0XHRcdHR5cGU6IFwiRW51bU1lbWJlclwiLFxuXHRcdFx0XHRFbnVtTWVtYmVyOiB2YWx1ZVxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVzdWx0ID0ge1xuXHRcdFx0XHR0eXBlOiBcIlN0cmluZ1wiLFxuXHRcdFx0XHRTdHJpbmc6IHZhbHVlXG5cdFx0XHR9O1xuXHRcdH1cblx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuXHRcdHJlc3VsdCA9IHtcblx0XHRcdHR5cGU6IFwiQ29sbGVjdGlvblwiLFxuXHRcdFx0Q29sbGVjdGlvbjogdmFsdWUubWFwKGFubm8gPT4gcmV2ZXJ0Q29sbGVjdGlvbkl0ZW1Ub0dlbmVyaWNUeXBlKHJlZmVyZW5jZXMsIGFubm8pKSBhcyBhbnlbXVxuXHRcdH07XG5cdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuXHRcdHJlc3VsdCA9IHtcblx0XHRcdHR5cGU6IFwiQm9vbFwiLFxuXHRcdFx0Qm9vbDogdmFsdWVcblx0XHR9O1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuXHRcdGlmICh2YWx1ZS50b1N0cmluZygpID09PSB2YWx1ZS50b0ZpeGVkKCkpIHtcblx0XHRcdHJlc3VsdCA9IHtcblx0XHRcdFx0dHlwZTogXCJJbnRcIixcblx0XHRcdFx0SW50OiB2YWx1ZVxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVzdWx0ID0ge1xuXHRcdFx0XHR0eXBlOiBcIkRlY2ltYWxcIixcblx0XHRcdFx0RGVjaW1hbDogdmFsdWVcblx0XHRcdH07XG5cdFx0fVxuXHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZS5pc0RlY2ltYWwgJiYgdmFsdWUuaXNEZWNpbWFsKCkpIHtcblx0XHRyZXN1bHQgPSB7XG5cdFx0XHR0eXBlOiBcIkRlY2ltYWxcIixcblx0XHRcdERlY2ltYWw6IHZhbHVlLnZhbHVlT2YoKVxuXHRcdH07XG5cdH0gZWxzZSBpZiAodmFsdWUudHlwZSA9PT0gXCJQYXRoXCIpIHtcblx0XHRyZXN1bHQgPSB7XG5cdFx0XHR0eXBlOiBcIlBhdGhcIixcblx0XHRcdFBhdGg6IHZhbHVlLnBhdGhcblx0XHR9O1xuXHR9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09IFwiQW5ub3RhdGlvblBhdGhcIikge1xuXHRcdHJlc3VsdCA9IHtcblx0XHRcdHR5cGU6IFwiQW5ub3RhdGlvblBhdGhcIixcblx0XHRcdEFubm90YXRpb25QYXRoOiB2YWx1ZS52YWx1ZVxuXHRcdH07XG5cdH0gZWxzZSBpZiAodmFsdWUudHlwZSA9PT0gXCJBcHBseVwiKSB7XG5cdFx0cmVzdWx0ID0ge1xuXHRcdFx0dHlwZTogXCJBcHBseVwiLFxuXHRcdFx0QXBwbHk6IHZhbHVlLkFwcGx5XG5cdFx0fTtcblx0fSBlbHNlIGlmICh2YWx1ZS50eXBlID09PSBcIk51bGxcIikge1xuXHRcdHJlc3VsdCA9IHtcblx0XHRcdHR5cGU6IFwiTnVsbFwiXG5cdFx0fTtcblx0fSBlbHNlIGlmICh2YWx1ZS50eXBlID09PSBcIlByb3BlcnR5UGF0aFwiKSB7XG5cdFx0cmVzdWx0ID0ge1xuXHRcdFx0dHlwZTogXCJQcm9wZXJ0eVBhdGhcIixcblx0XHRcdFByb3BlcnR5UGF0aDogdmFsdWUudmFsdWVcblx0XHR9O1xuXHR9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiKSB7XG5cdFx0cmVzdWx0ID0ge1xuXHRcdFx0dHlwZTogXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIsXG5cdFx0XHROYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiB2YWx1ZS52YWx1ZVxuXHRcdH07XG5cdH0gZWxzZSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBcIiRUeXBlXCIpKSB7XG5cdFx0cmVzdWx0ID0ge1xuXHRcdFx0dHlwZTogXCJSZWNvcmRcIixcblx0XHRcdFJlY29yZDogcmV2ZXJ0Q29sbGVjdGlvbkl0ZW1Ub0dlbmVyaWNUeXBlKHJlZmVyZW5jZXMsIHZhbHVlKSBhcyBBbm5vdGF0aW9uUmVjb3JkXG5cdFx0fTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiByZXZlcnRDb2xsZWN0aW9uSXRlbVRvR2VuZXJpY1R5cGUoXG5cdHJlZmVyZW5jZXM6IFJlZmVyZW5jZVtdLFxuXHRjb2xsZWN0aW9uSXRlbTogYW55XG4pOlxuXHR8IEFubm90YXRpb25SZWNvcmRcblx0fCBzdHJpbmdcblx0fCBQcm9wZXJ0eVBhdGhFeHByZXNzaW9uXG5cdHwgUGF0aEV4cHJlc3Npb25cblx0fCBOYXZpZ2F0aW9uUHJvcGVydHlQYXRoRXhwcmVzc2lvblxuXHR8IEFubm90YXRpb25QYXRoRXhwcmVzc2lvblxuXHR8IHVuZGVmaW5lZCB7XG5cdGlmICh0eXBlb2YgY29sbGVjdGlvbkl0ZW0gPT09IFwic3RyaW5nXCIpIHtcblx0XHRyZXR1cm4gY29sbGVjdGlvbkl0ZW07XG5cdH0gZWxzZSBpZiAodHlwZW9mIGNvbGxlY3Rpb25JdGVtID09PSBcIm9iamVjdFwiKSB7XG5cdFx0aWYgKGNvbGxlY3Rpb25JdGVtLmhhc093blByb3BlcnR5KFwiJFR5cGVcIikpIHtcblx0XHRcdC8vIEFubm90YXRpb24gUmVjb3JkXG5cdFx0XHRjb25zdCBvdXRJdGVtOiBBbm5vdGF0aW9uUmVjb3JkID0ge1xuXHRcdFx0XHR0eXBlOiBjb2xsZWN0aW9uSXRlbS4kVHlwZSxcblx0XHRcdFx0cHJvcGVydHlWYWx1ZXM6IFtdIGFzIGFueVtdXG5cdFx0XHR9O1xuXHRcdFx0Ly8gQ291bGQgdmFsaWRhdGUga2V5cyBhbmQgdHlwZSBiYXNlZCBvbiAkVHlwZVxuXHRcdFx0T2JqZWN0LmtleXMoY29sbGVjdGlvbkl0ZW0pLmZvckVhY2goY29sbGVjdGlvbktleSA9PiB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRjb2xsZWN0aW9uS2V5ICE9PSBcIiRUeXBlXCIgJiZcblx0XHRcdFx0XHRjb2xsZWN0aW9uS2V5ICE9PSBcInRlcm1cIiAmJlxuXHRcdFx0XHRcdGNvbGxlY3Rpb25LZXkgIT09IFwiX19zb3VyY2VcIiAmJlxuXHRcdFx0XHRcdGNvbGxlY3Rpb25LZXkgIT09IFwicXVhbGlmaWVyXCIgJiZcblx0XHRcdFx0XHRjb2xsZWN0aW9uS2V5ICE9PSBcIkFjdGlvblRhcmdldFwiICYmXG5cdFx0XHRcdFx0Y29sbGVjdGlvbktleSAhPT0gXCJmdWxseVF1YWxpZmllZE5hbWVcIiAmJlxuXHRcdFx0XHRcdGNvbGxlY3Rpb25LZXkgIT09IFwiYW5ub3RhdGlvbnNcIlxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjb25zdCB2YWx1ZSA9IGNvbGxlY3Rpb25JdGVtW2NvbGxlY3Rpb25LZXldO1xuXHRcdFx0XHRcdG91dEl0ZW0ucHJvcGVydHlWYWx1ZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRuYW1lOiBjb2xsZWN0aW9uS2V5LFxuXHRcdFx0XHRcdFx0dmFsdWU6IHJldmVydFZhbHVlVG9HZW5lcmljVHlwZShyZWZlcmVuY2VzLCB2YWx1ZSkgYXMgRXhwcmVzc2lvblxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGNvbGxlY3Rpb25LZXkgPT09IFwiYW5ub3RhdGlvbnNcIikge1xuXHRcdFx0XHRcdGNvbnN0IGFubm90YXRpb25zID0gY29sbGVjdGlvbkl0ZW1bY29sbGVjdGlvbktleV07XG5cdFx0XHRcdFx0b3V0SXRlbS5hbm5vdGF0aW9ucyA9IFtdO1xuXHRcdFx0XHRcdE9iamVjdC5rZXlzKGFubm90YXRpb25zKVxuXHRcdFx0XHRcdFx0LmZpbHRlcihrZXkgPT4ga2V5ICE9PSBcIl9hbm5vdGF0aW9uc1wiKVxuXHRcdFx0XHRcdFx0LmZvckVhY2goa2V5ID0+IHtcblx0XHRcdFx0XHRcdFx0T2JqZWN0LmtleXMoYW5ub3RhdGlvbnNba2V5XSkuZm9yRWFjaCh0ZXJtID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBwYXJzZWRBbm5vdGF0aW9uID0gcmV2ZXJ0VGVybVRvR2VuZXJpY1R5cGUocmVmZXJlbmNlcywgYW5ub3RhdGlvbnNba2V5XVt0ZXJtXSk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFwYXJzZWRBbm5vdGF0aW9uLnRlcm0pIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHVuYWxpYXNlZFRlcm0gPSB1bmFsaWFzKHJlZmVyZW5jZXMsIGAke2tleX0uJHt0ZXJtfWApO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHVuYWxpYXNlZFRlcm0pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgcXVhbGlmaWVkU3BsaXQgPSB1bmFsaWFzZWRUZXJtLnNwbGl0KFwiI1wiKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbi50ZXJtID0gcXVhbGlmaWVkU3BsaXRbMF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChxdWFsaWZpZWRTcGxpdC5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cGFyc2VkQW5ub3RhdGlvbi5xdWFsaWZpZXIgPSBxdWFsaWZpZWRTcGxpdFsxXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRvdXRJdGVtLmFubm90YXRpb25zPy5wdXNoKHBhcnNlZEFubm90YXRpb24pO1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBvdXRJdGVtO1xuXHRcdH0gZWxzZSBpZiAoY29sbGVjdGlvbkl0ZW0udHlwZSA9PT0gXCJQcm9wZXJ0eVBhdGhcIikge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dHlwZTogXCJQcm9wZXJ0eVBhdGhcIixcblx0XHRcdFx0UHJvcGVydHlQYXRoOiBjb2xsZWN0aW9uSXRlbS52YWx1ZVxuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKGNvbGxlY3Rpb25JdGVtLnR5cGUgPT09IFwiQW5ub3RhdGlvblBhdGhcIikge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dHlwZTogXCJBbm5vdGF0aW9uUGF0aFwiLFxuXHRcdFx0XHRBbm5vdGF0aW9uUGF0aDogY29sbGVjdGlvbkl0ZW0udmFsdWVcblx0XHRcdH07XG5cdFx0fSBlbHNlIGlmIChjb2xsZWN0aW9uSXRlbS50eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIikge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dHlwZTogXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIsXG5cdFx0XHRcdE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IGNvbGxlY3Rpb25JdGVtLnZhbHVlXG5cdFx0XHR9O1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV2ZXJ0VGVybVRvR2VuZXJpY1R5cGUocmVmZXJlbmNlczogUmVmZXJlbmNlW10sIGFubm90YXRpb246IEFubm90YXRpb25UZXJtPGFueT4pOiBFZG1Bbm5vdGF0aW9uIHtcblx0Y29uc3QgYmFzZUFubm90YXRpb246IEVkbUFubm90YXRpb24gPSB7XG5cdFx0dGVybTogYW5ub3RhdGlvbi50ZXJtLFxuXHRcdHF1YWxpZmllcjogYW5ub3RhdGlvbi5xdWFsaWZpZXJcblx0fTtcblx0aWYgKEFycmF5LmlzQXJyYXkoYW5ub3RhdGlvbikpIHtcblx0XHQvLyBDb2xsZWN0aW9uXG5cdFx0aWYgKGFubm90YXRpb24uaGFzT3duUHJvcGVydHkoXCJhbm5vdGF0aW9uc1wiKSkge1xuXHRcdFx0YmFzZUFubm90YXRpb24uYW5ub3RhdGlvbnMgPSBbXTtcblx0XHRcdGNvbnN0IGN1cnJlbnRBbm5vdGF0aW9ucyA9IChhbm5vdGF0aW9uIGFzIGFueSkuYW5ub3RhdGlvbnM7XG5cdFx0XHRPYmplY3Qua2V5cyhjdXJyZW50QW5ub3RhdGlvbnMpXG5cdFx0XHRcdC5maWx0ZXIoa2V5ID0+IGtleSAhPT0gXCJfYW5ub3RhdGlvbnNcIilcblx0XHRcdFx0LmZvckVhY2goa2V5ID0+IHtcblx0XHRcdFx0XHRPYmplY3Qua2V5cyhjdXJyZW50QW5ub3RhdGlvbnNba2V5XSkuZm9yRWFjaCh0ZXJtID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IHBhcnNlZEFubm90YXRpb24gPSByZXZlcnRUZXJtVG9HZW5lcmljVHlwZShyZWZlcmVuY2VzLCBjdXJyZW50QW5ub3RhdGlvbnNba2V5XVt0ZXJtXSk7XG5cdFx0XHRcdFx0XHRpZiAoIXBhcnNlZEFubm90YXRpb24udGVybSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB1bmFsaWFzZWRUZXJtID0gdW5hbGlhcyhyZWZlcmVuY2VzLCBgJHtrZXl9LiR7dGVybX1gKTtcblx0XHRcdFx0XHRcdFx0aWYgKHVuYWxpYXNlZFRlcm0pIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBxdWFsaWZpZWRTcGxpdCA9IHVuYWxpYXNlZFRlcm0uc3BsaXQoXCIjXCIpO1xuXHRcdFx0XHRcdFx0XHRcdHBhcnNlZEFubm90YXRpb24udGVybSA9IHF1YWxpZmllZFNwbGl0WzBdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChxdWFsaWZpZWRTcGxpdC5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJzZWRBbm5vdGF0aW9uLnF1YWxpZmllciA9IHF1YWxpZmllZFNwbGl0WzFdO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YmFzZUFubm90YXRpb24uYW5ub3RhdGlvbnM/LnB1c2gocGFyc2VkQW5ub3RhdGlvbik7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4uYmFzZUFubm90YXRpb24sXG5cdFx0XHRjb2xsZWN0aW9uOiBhbm5vdGF0aW9uLm1hcChhbm5vID0+IHJldmVydENvbGxlY3Rpb25JdGVtVG9HZW5lcmljVHlwZShyZWZlcmVuY2VzLCBhbm5vKSkgYXMgYW55W11cblx0XHR9O1xuXHR9IGVsc2UgaWYgKGFubm90YXRpb24uaGFzT3duUHJvcGVydHkoXCIkVHlwZVwiKSkge1xuXHRcdHJldHVybiB7IC4uLmJhc2VBbm5vdGF0aW9uLCByZWNvcmQ6IHJldmVydENvbGxlY3Rpb25JdGVtVG9HZW5lcmljVHlwZShyZWZlcmVuY2VzLCBhbm5vdGF0aW9uKSBhcyBhbnkgfTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4geyAuLi5iYXNlQW5ub3RhdGlvbiwgdmFsdWU6IHJldmVydFZhbHVlVG9HZW5lcmljVHlwZShyZWZlcmVuY2VzLCBhbm5vdGF0aW9uKSB9O1xuXHR9XG59XG4iXX0=