@sapui5/sap.fe.core 1.103.0 → 1.104.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 (162) hide show
  1. package/package.json +3 -3
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +12 -5
  4. package/src/sap/fe/core/AppComponent.ts +9 -3
  5. package/src/sap/fe/core/AppStateHandler.js +74 -62
  6. package/src/sap/fe/core/AppStateHandler.ts +24 -29
  7. package/src/sap/fe/core/CommonUtils.js +10 -34
  8. package/src/sap/fe/core/CommonUtils.ts +10 -43
  9. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +181 -43
  10. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +150 -24
  11. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +582 -207
  12. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +237 -88
  13. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +4 -4
  14. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +4 -3
  15. package/src/sap/fe/core/controllerextensions/EditFlow.js +257 -219
  16. package/src/sap/fe/core/controllerextensions/EditFlow.ts +103 -108
  17. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +80 -54
  18. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +40 -44
  19. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +28 -26
  20. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +35 -30
  21. package/src/sap/fe/core/controllerextensions/InternalRouting.js +89 -47
  22. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +85 -48
  23. package/src/sap/fe/core/controllerextensions/MassEdit.js +2 -2
  24. package/src/sap/fe/core/controllerextensions/MassEdit.ts +1 -1
  25. package/src/sap/fe/core/controllerextensions/PageReady.js +2 -2
  26. package/src/sap/fe/core/controllerextensions/PageReady.ts +5 -1
  27. package/src/sap/fe/core/controllerextensions/Share.js +153 -122
  28. package/src/sap/fe/core/controllerextensions/Share.ts +93 -95
  29. package/src/sap/fe/core/controllerextensions/ViewState.js +139 -73
  30. package/src/sap/fe/core/controllerextensions/ViewState.ts +78 -90
  31. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +6 -5
  32. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +5 -3
  33. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +18 -13
  34. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +17 -15
  35. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +88 -17
  36. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +105 -31
  37. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +5 -4
  38. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +28 -32
  39. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +10 -17
  40. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +1 -6
  41. package/src/sap/fe/core/controls/FileWrapper.js +6 -1
  42. package/src/sap/fe/core/controls/FileWrapper.ts +4 -0
  43. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +3 -3
  44. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +2 -2
  45. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
  46. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +2 -2
  47. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +1 -1
  48. package/src/sap/fe/core/converters/ConverterContext.js +1 -1
  49. package/src/sap/fe/core/converters/ConverterContext.ts +1 -1
  50. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  51. package/src/sap/fe/core/converters/ManifestSettings.ts +3 -1
  52. package/src/sap/fe/core/converters/MetaModelConverter.js +15 -4
  53. package/src/sap/fe/core/converters/MetaModelConverter.ts +10 -3
  54. package/src/sap/fe/core/converters/annotations/DataField.js +5 -2
  55. package/src/sap/fe/core/converters/annotations/DataField.ts +5 -1
  56. package/src/sap/fe/core/converters/common/AnnotationConverter.js +11 -11
  57. package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
  58. package/src/sap/fe/core/converters/controls/Common/Chart.ts +4 -8
  59. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +4 -2
  60. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +25 -30
  61. package/src/sap/fe/core/converters/controls/Common/Form.js +3 -2
  62. package/src/sap/fe/core/converters/controls/Common/Form.ts +9 -14
  63. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  64. package/src/sap/fe/core/converters/controls/Common/KPI.ts +16 -15
  65. package/src/sap/fe/core/converters/controls/Common/Table.js +8 -15
  66. package/src/sap/fe/core/converters/controls/Common/Table.ts +14 -30
  67. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
  68. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +3 -4
  69. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -1
  70. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +2 -2
  71. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +5 -2
  72. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +4 -2
  73. package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
  74. package/src/sap/fe/core/converters/helpers/Aggregation.ts +3 -3
  75. package/src/sap/fe/core/converters/helpers/ID.js +3 -1
  76. package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
  77. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  78. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +2 -3
  79. package/src/sap/fe/core/converters/templates/ListReportConverter.js +27 -15
  80. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +42 -27
  81. package/src/sap/fe/core/formatters/StandardFormatter.js +13 -6
  82. package/src/sap/fe/core/formatters/StandardFormatter.ts +20 -14
  83. package/src/sap/fe/core/helpers/BindingToolkit.js +36 -13
  84. package/src/sap/fe/core/helpers/BindingToolkit.ts +37 -11
  85. package/src/sap/fe/core/helpers/ClassSupport.js +30 -2
  86. package/src/sap/fe/core/helpers/ClassSupport.ts +23 -0
  87. package/src/sap/fe/core/helpers/MassEditHelper.js +94 -89
  88. package/src/sap/fe/core/helpers/MassEditHelper.ts +128 -157
  89. package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
  90. package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
  91. package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
  92. package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
  93. package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
  94. package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
  95. package/src/sap/fe/core/jsx-runtime/jsx-control.js +99 -0
  96. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +82 -0
  97. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
  98. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
  99. package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
  100. package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
  101. package/src/sap/fe/core/library.js +1 -1
  102. package/src/sap/fe/core/messagebundle.properties +4 -37
  103. package/src/sap/fe/core/messagebundle_ar.properties +20 -40
  104. package/src/sap/fe/core/messagebundle_bg.properties +20 -40
  105. package/src/sap/fe/core/messagebundle_ca.properties +20 -40
  106. package/src/sap/fe/core/messagebundle_cs.properties +20 -40
  107. package/src/sap/fe/core/messagebundle_cy.properties +20 -40
  108. package/src/sap/fe/core/messagebundle_da.properties +20 -40
  109. package/src/sap/fe/core/messagebundle_de.properties +20 -40
  110. package/src/sap/fe/core/messagebundle_el.properties +20 -40
  111. package/src/sap/fe/core/messagebundle_en.properties +19 -39
  112. package/src/sap/fe/core/messagebundle_en_GB.properties +19 -39
  113. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +21 -39
  114. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +19 -39
  115. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +22 -18
  116. package/src/sap/fe/core/messagebundle_es.properties +22 -42
  117. package/src/sap/fe/core/messagebundle_es_MX.properties +20 -40
  118. package/src/sap/fe/core/messagebundle_et.properties +20 -40
  119. package/src/sap/fe/core/messagebundle_fi.properties +20 -40
  120. package/src/sap/fe/core/messagebundle_fr.properties +21 -41
  121. package/src/sap/fe/core/messagebundle_fr_CA.properties +20 -40
  122. package/src/sap/fe/core/messagebundle_hi.properties +20 -40
  123. package/src/sap/fe/core/messagebundle_hr.properties +20 -40
  124. package/src/sap/fe/core/messagebundle_hu.properties +20 -40
  125. package/src/sap/fe/core/messagebundle_id.properties +20 -40
  126. package/src/sap/fe/core/messagebundle_it.properties +20 -40
  127. package/src/sap/fe/core/messagebundle_iw.properties +20 -40
  128. package/src/sap/fe/core/messagebundle_ja.properties +20 -40
  129. package/src/sap/fe/core/messagebundle_kk.properties +20 -40
  130. package/src/sap/fe/core/messagebundle_ko.properties +25 -45
  131. package/src/sap/fe/core/messagebundle_lt.properties +20 -40
  132. package/src/sap/fe/core/messagebundle_lv.properties +20 -40
  133. package/src/sap/fe/core/messagebundle_ms.properties +20 -40
  134. package/src/sap/fe/core/messagebundle_nl.properties +22 -42
  135. package/src/sap/fe/core/messagebundle_no.properties +20 -40
  136. package/src/sap/fe/core/messagebundle_pl.properties +21 -41
  137. package/src/sap/fe/core/messagebundle_pt.properties +21 -41
  138. package/src/sap/fe/core/messagebundle_pt_PT.properties +20 -40
  139. package/src/sap/fe/core/messagebundle_ro.properties +20 -40
  140. package/src/sap/fe/core/messagebundle_ru.properties +20 -40
  141. package/src/sap/fe/core/messagebundle_sh.properties +20 -40
  142. package/src/sap/fe/core/messagebundle_sk.properties +20 -40
  143. package/src/sap/fe/core/messagebundle_sl.properties +20 -40
  144. package/src/sap/fe/core/messagebundle_sv.properties +20 -40
  145. package/src/sap/fe/core/messagebundle_th.properties +20 -40
  146. package/src/sap/fe/core/messagebundle_tr.properties +20 -40
  147. package/src/sap/fe/core/messagebundle_uk.properties +20 -40
  148. package/src/sap/fe/core/messagebundle_vi.properties +20 -40
  149. package/src/sap/fe/core/messagebundle_zh_CN.properties +20 -40
  150. package/src/sap/fe/core/messagebundle_zh_TW.properties +20 -40
  151. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +96 -68
  152. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +58 -59
  153. package/src/sap/fe/core/services/NavigationServiceFactory.js +10 -7
  154. package/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -7
  155. package/src/sap/fe/core/services/ShellServicesFactory.js +21 -1
  156. package/src/sap/fe/core/services/ShellServicesFactory.ts +19 -0
  157. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +211 -190
  158. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +114 -120
  159. package/src/sap/fe/core/templating/FilterHelper.js +7 -7
  160. package/src/sap/fe/core/templating/FilterHelper.ts +5 -5
  161. package/src/sap/fe/core/templating/UIFormatters.js +5 -3
  162. package/src/sap/fe/core/templating/UIFormatters.ts +7 -5
@@ -37,7 +37,7 @@ var AnnotationConverter;
37
37
 
38
38
  var __webpack_modules__ = {
39
39
  /***/
40
- 875:
40
+ 582:
41
41
  /***/
42
42
  function (__unused_webpack_module, exports, __webpack_require__) {
43
43
  Object.defineProperty(exports, "__esModule", {
@@ -45,7 +45,7 @@ var AnnotationConverter;
45
45
  });
46
46
  exports.convert = void 0;
47
47
 
48
- var utils_1 = __webpack_require__(69);
48
+ var utils_1 = __webpack_require__(800);
49
49
  /**
50
50
  *
51
51
  */
@@ -1303,7 +1303,7 @@ var AnnotationConverter;
1303
1303
  },
1304
1304
 
1305
1305
  /***/
1306
- 759:
1306
+ 126:
1307
1307
  /***/
1308
1308
  function (__unused_webpack_module, exports, __webpack_require__) {
1309
1309
  var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
@@ -1335,17 +1335,17 @@ var AnnotationConverter;
1335
1335
  value: true
1336
1336
  });
1337
1337
 
1338
- __exportStar(__webpack_require__(875), exports);
1338
+ __exportStar(__webpack_require__(582), exports);
1339
1339
 
1340
- __exportStar(__webpack_require__(426), exports);
1340
+ __exportStar(__webpack_require__(922), exports);
1341
1341
 
1342
- __exportStar(__webpack_require__(69), exports);
1342
+ __exportStar(__webpack_require__(800), exports);
1343
1343
  /***/
1344
1344
 
1345
1345
  },
1346
1346
 
1347
1347
  /***/
1348
- 69:
1348
+ 800:
1349
1349
  /***/
1350
1350
  function (__unused_webpack_module, exports) {
1351
1351
  Object.defineProperty(exports, "__esModule", {
@@ -1764,7 +1764,7 @@ var AnnotationConverter;
1764
1764
  },
1765
1765
 
1766
1766
  /***/
1767
- 426:
1767
+ 922:
1768
1768
  /***/
1769
1769
  function (__unused_webpack_module, exports, __webpack_require__) {
1770
1770
  Object.defineProperty(exports, "__esModule", {
@@ -1772,7 +1772,7 @@ var AnnotationConverter;
1772
1772
  });
1773
1773
  exports.revertTermToGenericType = void 0;
1774
1774
 
1775
- var utils_1 = __webpack_require__(69);
1775
+ var utils_1 = __webpack_require__(800);
1776
1776
  /**
1777
1777
  * Revert an object to its raw type equivalent.
1778
1778
  *
@@ -2133,7 +2133,7 @@ var AnnotationConverter;
2133
2133
  /******/
2134
2134
 
2135
2135
 
2136
- var __webpack_exports__ = __webpack_require__(759);
2136
+ var __webpack_exports__ = __webpack_require__(126);
2137
2137
  /******/
2138
2138
 
2139
2139
 
@@ -2142,6 +2142,6 @@ var AnnotationConverter;
2142
2142
 
2143
2143
  /******/
2144
2144
  })();
2145
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2Rpc3QvQW5ub3RhdGlvbkNvbnZlcnRlci5qcyJdLCJuYW1lcyI6WyJBbm5vdGF0aW9uQ29udmVydGVyIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIl9fdW51c2VkX3dlYnBhY2tfbW9kdWxlIiwiZXhwb3J0cyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiY29udmVydCIsInV0aWxzXzEiLCJQYXRoIiwicGF0aEV4cHJlc3Npb24iLCJ0YXJnZXROYW1lIiwiYW5ub3RhdGlvbnNUZXJtIiwidGVybSIsInBhdGgiLCJ0eXBlIiwiJHRhcmdldCIsImJ1aWxkT2JqZWN0TWFwIiwicmF3TWV0YWRhdGEiLCJfYSIsIm9iamVjdE1hcCIsInNjaGVtYSIsImVudGl0eUNvbnRhaW5lciIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImVudGl0eVNldHMiLCJmb3JFYWNoIiwiZW50aXR5U2V0IiwiYWN0aW9ucyIsImFjdGlvbiIsImlzQm91bmQiLCJ1bkJvdW5kQWN0aW9uTmFtZSIsInNwbGl0IiwiX3R5cGUiLCJwdXNoIiwiYWN0aW9uU3BsaXQiLCJwYXJhbWV0ZXJzIiwicGFyYW1ldGVyIiwiY29tcGxleFR5cGVzIiwiY29tcGxleFR5cGUiLCJwcm9wZXJ0aWVzIiwicHJvcGVydHkiLCJ0eXBlRGVmaW5pdGlvbnMiLCJ0eXBlRGVmaW5pdGlvbiIsImVudGl0eVR5cGVzIiwiZW50aXR5VHlwZSIsImFubm90YXRpb25zIiwiZW50aXR5UHJvcGVydGllcyIsImNvbXBsZXhUeXBlRGVmaW5pdGlvbiIsImlzQ29tcGxleFR5cGVEZWZpbml0aW9uIiwiY29tcGxleFR5cGVQcm9wIiwiY29tcGxleFR5cGVQcm9wVGFyZ2V0IiwiYXNzaWduIiwibmFtZSIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibmF2UHJvcGVydHkiLCJrZXlzIiwiYW5ub3RhdGlvblNvdXJjZSIsImFubm90YXRpb25MaXN0IiwiY3VycmVudFRhcmdldE5hbWUiLCJ1bmFsaWFzIiwicmVmZXJlbmNlcyIsInRhcmdldCIsImFubm90YXRpb24iLCJhbm5vdGF0aW9uRlFOIiwicXVhbGlmaWVyIiwiY29tYmluZVBhdGgiLCJjdXJyZW50VGFyZ2V0Iiwic3RhcnRzV2l0aCIsImRlZmF1bHRSZWZlcmVuY2VzIiwiQUxMX0FOTk9UQVRJT05fRVJST1JTIiwiQU5OT1RBVElPTl9FUlJPUlMiLCJhZGRBbm5vdGF0aW9uRXJyb3JNZXNzYWdlIiwib0Vycm9yTXNnIiwiX3Jlc29sdmVUYXJnZXQiLCJwYXRoT25seSIsImluY2x1ZGVWaXNpdGVkT2JqZWN0cyIsInVuZGVmaW5lZCIsImFWaXNpdGVkT2JqZWN0cyIsInBhdGhTcGxpdCIsInRhcmdldFBhdGhTcGxpdCIsInBhdGhQYXJ0IiwiaW5kZXhPZiIsInNwbGl0dGVkUGF0aCIsImFubm90YXRpb25QYXRoIiwiY3VycmVudFBhdGgiLCJjdXJyZW50Q29udGV4dCIsInJlZHVjZSIsImN1cnJlbnRWYWx1ZSIsImxlbmd0aCIsInRhcmdldFR5cGUiLCJlbnRpdHlUeXBlTmFtZSIsInRhcmdldFR5cGVOYW1lIiwic291cmNlVHlwZSIsImlzRW50aXR5U2V0Iiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJsYXN0SWR4IiwiY29udGV4dFRvUmVzb2x2ZSIsInN1YlRhcmdldCIsInZpc2l0ZWRPYmplY3RzIiwidmlzaXRlZFN1Yk9iamVjdCIsImNvbmNhdCIsInJldmVyc2UiLCJmaW5kIiwib2JqIiwiaW50ZXJtZWRpYXRlVGFyZ2V0IiwiaGFzT3duUHJvcGVydHkiLCJhbm5vdGF0aW9uVHlwZSIsImluZmVyVHlwZUZyb21UZXJtIiwibWVzc2FnZSIsImlzQW5ub3RhdGlvblBhdGgiLCJwYXRoU3RyIiwicGFyc2VWYWx1ZSIsInByb3BlcnR5VmFsdWUiLCJ2YWx1ZUZRTiIsImNvbnRleHQiLCJTdHJpbmciLCJJbnQiLCJCb29sIiwiRGVjaW1hbCIsIkRhdGUiLCJhbGlhcyIsIkVudW1NZW1iZXIiLCJQcm9wZXJ0eVBhdGgiLCJjdXJyZW50VGVybSIsIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJhbm5vdGF0aW9uVGFyZ2V0IiwiQW5ub3RhdGlvblBhdGgiLCJ1bnJlc29sdmVkQW5ub3RhdGlvbnMiLCJpbmxpbmUiLCJ0b1Jlc29sdmUiLCJwYXJzZVJlY29yZCIsIlJlY29yZCIsInBhcnNlQ29sbGVjdGlvbiIsIkNvbGxlY3Rpb24iLCJUZXJtVG9UeXBlcyIsImlzRXJyb3IiLCJpc0RhdGFGaWVsZFdpdGhGb3JBY3Rpb24iLCJhbm5vdGF0aW9uQ29udGVudCIsImFubm90YXRpb25UZXJtIiwiJFR5cGUiLCJwYXJzZVJlY29yZFR5cGUiLCJyZWNvcmREZWZpbml0aW9uIiwiY3VycmVudEZRTiIsIkFycmF5IiwiaXNBcnJheSIsInN1YkFubm90YXRpb25MaXN0IiwiX19zb3VyY2UiLCJjdXJyZW50U291cmNlIiwiYWRkaXRpb25hbEFubm90YXRpb25zIiwicHJvcGVydHlWYWx1ZXMiLCJBY3Rpb25UYXJnZXQiLCJBY3Rpb24iLCJnZXRPckluZmVyQ29sbGVjdGlvblR5cGUiLCJjb2xsZWN0aW9uRGVmaW5pdGlvbiIsImZpcnN0Q29sSXRlbSIsInBhcmVudEZRTiIsImNvbGxlY3Rpb25EZWZpbml0aW9uVHlwZSIsIm1hcCIsInByb3BlcnR5UGF0aCIsInByb3BlcnR5SWR4IiwicGF0aFZhbHVlIiwiYW5ub3RhdGlvbklkeCIsImFubm90YXRpb25Db2xsZWN0aW9uRWxlbWVudCIsIm5hdlByb3BlcnR5UGF0aCIsIm5hdlByb3BJZHgiLCJyZWNvcmRJZHgiLCJpZlZhbHVlIiwic3RyaW5nVmFsdWUiLCJFcnJvciIsImNvbnZlcnRBbm5vdGF0aW9uIiwicmVjb3JkIiwiY29sbGVjdGlvbiIsImNyZWF0ZVJlc29sdmVQYXRoRm4iLCJyZWxhdGl2ZVBhdGgiLCJyZXNvbHZlVjJOYXZpZ2F0aW9uUHJvcGVydHkiLCJuYXZQcm9wIiwiYXNzb2NpYXRpb25zIiwib3V0TmF2UHJvcCIsInRhcmdldEFzc29jaWF0aW9uIiwiYXNzb2NpYXRpb24iLCJyZWxhdGlvbnNoaXAiLCJhc3NvY2lhdGlvbkVuZCIsImVuZCIsInJvbGUiLCJ0b1JvbGUiLCJpc0NvbGxlY3Rpb24iLCJtdWx0aXBsaWNpdHkiLCJyZXNvbHZlVjROYXZpZ2F0aW9uUHJvcGVydHkiLCJwYXJ0bmVyIiwiY29udGFpbnNUYXJnZXQiLCJyZWZlcmVudGlhbENvbnN0cmFpbnQiLCJpc1Y0TmF2aWdhdGlvblByb3BlcnR5IiwicHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwicmVzb2x2ZU5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwicmVzb2x2ZVBhdGgiLCJsaW5rQWN0aW9uc1RvRW50aXR5VHlwZSIsIm5hbWVzcGFjZSIsInNvdXJjZUVudGl0eVR5cGUiLCJyZXR1cm5FbnRpdHlUeXBlIiwicmV0dXJuVHlwZSIsImxpbmtFbnRpdHlUeXBlVG9FbnRpdHlTZXQiLCJrZXlQcm9wIiwiaXNLZXkiLCJsaW5rRW50aXR5VHlwZVRvU2luZ2xldG9uIiwic2luZ2xldG9ucyIsInNpbmdsZXRvbiIsImxpbmtQcm9wZXJ0aWVzVG9Db21wbGV4VHlwZXMiLCJsaW5rIiwiY29tcGxleFR5cGVOYW1lIiwic0Vycm9yIiwicHJlcGFyZUNvbXBsZXhUeXBlcyIsInNwbGl0VGVybSIsInRlcm1WYWx1ZSIsImFsaWFzZWRUZXJtIiwibGFzdERvdCIsInRlcm1BbGlhcyIsImNyZWF0ZUdsb2JhbFJlc29sdmUiLCJjb252ZXJ0ZWRPdXRwdXQiLCJzUGF0aCIsImFQYXRoU3BsaXQiLCJzaGlmdCIsImVudGl0eVNldE5hbWUiLCJldCIsIm9iamVjdFBhdGgiLCJ0YXJnZXRSZXNvbHV0aW9uIiwiam9pbiIsImVuc3VyZUFubm90YXRpb25zIiwidm9jQWxpYXMiLCJfYW5ub3RhdGlvbnMiLCJwcm9jZXNzQW5ub3RhdGlvbnMiLCJiT3ZlcnJpZGVFeGlzdGluZyIsIl9iIiwidm9jVGVybSIsInZvY1Rlcm1XaXRoUXVhbGlmaWVyIiwiQm9vbGVhbiIsInByb2Nlc3NVbnJlc29sdmVkVGFyZ2V0cyIsInVucmVzb2x2ZWRUYXJnZXRzIiwicmVzb2x2YWJsZSIsInRhcmdldFRvUmVzb2x2ZSIsInRhcmdldFN0ciIsInJlc29sdmVkVGFyZ2V0IiwidGFyZ2V0U3RyaW5nIiwidGVybUluZm8iLCJtZXJnZUFubm90YXRpb25zIiwiYW5ub3RhdGlvbkxpc3RQZXJUYXJnZXQiLCJmaW5kSW5kZXgiLCJyZWZlcmVuY2VBbm5vdGF0aW9uIiwic3BsaWNlIiwib2JqZWN0TWFwRWxlbWVudCIsImFsbFRhcmdldHMiLCJleHRyYVVucmVzb2x2ZWRBbm5vdGF0aW9ucyIsImJhc2VPYmoiLCJhbm5vdGF0aW9uUGFydCIsInRhcmdldFNwbGl0Iiwic2xpY2UiLCJjdXJyZW50T2JqIiwiZXh0cmFSZWZlcmVuY2VzIiwiZmlsdGVyIiwicmVmZXJlbmNlIiwiZGVmYXVsdFJlZiIsInZlcnNpb24iLCJkaWFnbm9zdGljcyIsIl9fY3JlYXRlQmluZGluZyIsImNyZWF0ZSIsIm8iLCJtIiwiayIsImsyIiwiZGVzYyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9fZXNNb2R1bGUiLCJ3cml0YWJsZSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXQiLCJfX2V4cG9ydFN0YXIiLCJwIiwicHJvdG90eXBlIiwiY2FsbCIsInVyaSIsInVuYWxpYXNlZFZhbHVlIiwicmV2ZXJzZVJlZmVyZW5jZU1hcCIsInJlZiIsImxhc3REb3RJbmRleCIsInByZUFsaWFzIiwicG9zdEFsaWFzIiwiYWxpYXNlZFZhbHVlIiwicmVmZXJlbmNlTWFwIiwiaXNEZWNpbWFsIiwidmFsdWVPZiIsInRvU3RyaW5nIiwicmV2ZXJ0VGVybVRvR2VuZXJpY1R5cGUiLCJyZXZlcnRPYmplY3RUb1Jhd1R5cGUiLCJyZXN1bHQiLCJhbm5vIiwicmV2ZXJ0Q29sbGVjdGlvbkl0ZW1Ub1Jhd1R5cGUiLCJpc1N0cmluZyIsInZhbHVlTWF0Y2hlcyIsIkFwcGx5IiwicmV2ZXJ0VmFsdWVUb1Jhd1R5cGUiLCJ2YWx1ZUNvbnN0cnVjdG9yIiwiY29uc3RydWN0b3IiLCJ0b0ZpeGVkIiwicmVzdHJpY3RlZEtleXMiLCJyZXZlcnRBbm5vdGF0aW9uc1RvUmF3VHlwZSIsImN1cnJlbnRBbm5vdGF0aW9ucyIsInRhcmdldEFubm90YXRpb25zIiwia2V5IiwicGFyc2VkQW5ub3RhdGlvbiIsInVuYWxpYXNlZFRlcm0iLCJxdWFsaWZpZWRTcGxpdCIsImNvbGxlY3Rpb25JdGVtIiwib3V0SXRlbSIsImNvbGxlY3Rpb25LZXkiLCJiYXNlQW5ub3RhdGlvbiIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwibW9kdWxlIiwiX193ZWJwYWNrX2V4cG9ydHNfXyJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUZBLElBQUlBLG1CQUFKO0FBQ0E7O0FBQVMsQ0FBQyxZQUFXO0FBQUU7O0FBQ3ZCO0FBQVU7QUFDVjs7QUFBVSxNQUFJQyxtQkFBbUIsR0FBSTtBQUVyQztBQUFNO0FBQ047QUFBTyxjQUFTQyx1QkFBVCxFQUFrQ0MsT0FBbEMsRUFBMkNDLG1CQUEzQyxFQUFnRTtBQUd2RUMsTUFBQUEsTUFBTSxDQUFDQyxjQUFQLENBQXNCSCxPQUF0QixFQUErQixZQUEvQixFQUE4QztBQUFFSSxRQUFBQSxLQUFLLEVBQUU7QUFBVCxPQUE5QztBQUNBSixNQUFBQSxPQUFPLENBQUNLLE9BQVIsR0FBa0IsS0FBSyxDQUF2Qjs7QUFDQSxVQUFNQyxPQUFPLEdBQUdMLG1CQUFtQixDQUFDLEVBQUQsQ0FBbkM7QUFDQTtBQUNBO0FBQ0E7OztBQVJ1RSxVQVNqRU0sSUFUaUU7QUFVbkU7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0ksb0JBQVlDLGNBQVosRUFBNEJDLFVBQTVCLEVBQXdDQyxlQUF4QyxFQUF5REMsSUFBekQsRUFBK0Q7QUFDM0QsYUFBS0MsSUFBTCxHQUFZSixjQUFjLENBQUNELElBQTNCO0FBQ0EsYUFBS00sSUFBTCxHQUFZLE1BQVo7QUFDQSxhQUFLQyxPQUFMLEdBQWVM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QVUsTUFBSXdCLHdCQUF3QixHQUFHLEVBQS9CO0FBQ1Y7O0FBQ0E7QUFBVTs7QUFDVjs7QUFBVSxXQUFTelQsbUJBQVQsQ0FBNkIwVCxRQUE3QixFQUF1QztBQUNqRDtBQUFXOztBQUNYO0FBQVcsUUFBSUMsWUFBWSxHQUFHRix3QkFBd0IsQ0FBQ0MsUUFBRCxDQUEzQztBQUNYOztBQUFXLFFBQUlDLFlBQVksS0FBS2xQLFNBQXJCLEVBQWdDO0FBQzNDO0FBQVksYUFBT2tQLFlBQVksQ0FBQzVULE9BQXBCO0FBQ1o7QUFBWTtBQUNaO0FBQVc7O0FBQ1g7OztBQUFXLFFBQUk2VCxNQUFNLEdBQUdILHdCQUF3QixDQUFDQyxRQUFELENBQXhCLEdBQXFDO0FBQzdEO0FBQVk7O0FBQ1o7QUFBWTs7QUFDWjtBQUFZM1QsTUFBQUEsT0FBTyxFQUFFO0FBQ3JCOztBQUo2RCxLQUFsRDtBQUtYOztBQUNBO0FBQVc7O0FBQ1g7O0FBQVdGLElBQUFBLG1CQUFtQixDQUFDNlQsUUFBRCxDQUFuQixDQUE4QnRDLElBQTlCLENBQW1Dd0MsTUFBTSxDQUFDN1QsT0FBMUMsRUFBbUQ2VCxNQUFuRCxFQUEyREEsTUFBTSxDQUFDN1QsT0FBbEUsRUFBMkVDLG1CQUEzRTtBQUNYOztBQUNBO0FBQVc7O0FBQ1g7OztBQUFXLFdBQU80VCxNQUFNLENBQUM3VCxPQUFkO0FBQ1g7QUFBVztBQUNYOztBQUNBOztBQUNBOztBQUNBO0FBQVU7O0FBQ1Y7QUFBVTs7QUFDVjtBQUFVOztBQUNWOzs7QUFBVSxNQUFJOFQsbUJBQW1CLEdBQUc3VCxtQkFBbUIsQ0FBQyxHQUFELENBQTdDO0FBQ1Y7OztBQUFVSixFQUFBQSxtQkFBbUIsR0FBR2lVLG1CQUF0QjtBQUNWOztBQUNBO0FBQVUsQ0F0ekREIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgQW5ub3RhdGlvbkNvbnZlcnRlcjtcbi8qKioqKiovIChmdW5jdGlvbigpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHRcInVzZSBzdHJpY3RcIjtcbi8qKioqKiovIFx0dmFyIF9fd2VicGFja19tb2R1bGVzX18gPSAoe1xuXG4vKioqLyA4NzU6XG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19tb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsICh7IHZhbHVlOiB0cnVlIH0pKTtcbmV4cG9ydHMuY29udmVydCA9IHZvaWQgMDtcbmNvbnN0IHV0aWxzXzEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY5KTtcbi8qKlxuICpcbiAqL1xuY2xhc3MgUGF0aCB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBhdGhFeHByZXNzaW9uXG4gICAgICogQHBhcmFtIHRhcmdldE5hbWVcbiAgICAgKiBAcGFyYW0gYW5ub3RhdGlvbnNUZXJtXG4gICAgICogQHBhcmFtIHRlcm1cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihwYXRoRXhwcmVzc2lvbiwgdGFyZ2V0TmFtZSwgYW5ub3RhdGlvbnNUZXJtLCB0ZXJtKSB7XG4gICAgICAgIHRoaXMucGF0aCA9IHBhdGhFeHByZXNzaW9uLlBhdGg7XG4gICAgICAgIHRoaXMudHlwZSA9ICdQYXRoJztcbiAgICAgICAgdGhpcy4kdGFyZ2V0ID0gdGFyZ2V0TmFtZTtcbiAgICAgICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICAgICAgdGhpcy5hbm5vdGF0aW9uc1Rlcm0gPSBhbm5vdGF0aW9uc1Rlcm07XG4gICAgfVxufVxuLyoqXG4gKiBDcmVhdGVzIGEgTWFwIGJhc2VkIG9uIHRoZSBmdWxseVF1YWxpZmllZE5hbWUgb2YgZWFjaCBvYmplY3QgcGFydCBvZiB0aGUgbWV0YWRhdGEuXG4gKlxuICogQHBhcmFtIHJhd01ldGFkYXRhIHRoZSByYXdNZXRhZGF0YSB3ZSdyZSB3b3JraW5nIGFnYWluc3RcbiAqIEByZXR1cm5zIHRoZSBvYmplY3RtYXAgZm9yIGVhc3kgYWNjZXNzIHRvIHRoZSBkaWZmZXJlbnQgb2JqZWN0IG9mIHRoZSBtZXRhZGF0YVxuICovXG5mdW5jdGlvbiBidWlsZE9iamVjdE1hcChyYXdNZXRhZGF0YSkge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBvYmplY3RNYXAgPSB7fTtcbiAgICBpZiAoKF9hID0gcmF3TWV0YWRhdGEuc2NoZW1hLmVudGl0eUNvbnRhaW5lcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZ1bGx5UXVhbGlmaWVkTmFtZSkge1xuICAgICAgICBvYmplY3RNYXBbcmF3TWV0YWRhdGEuc2NoZW1hLmVudGl0eUNvbnRhaW5lci5mdWxseVF1YWxpZmllZE5hbWVdID0gcmF3TWV0YWRhdGEuc2NoZW1hLmVudGl0eUNvbnRhaW5lcjtcbiAgICB9XG4gICAgcmF3TWV0YWRhdGEuc2NoZW1hLmVudGl0eVNldHMuZm9yRWFjaCgoZW50aXR5U2V0KSA9PiB7XG4gICAgICAgIG9iamVjdE1hcFtlbnRpdHlTZXQuZnVsbHlRdWFsaWZpZWROYW1lXSA9IGVudGl0eVNldDtcbiAgICB9KTtcbiAgICByYXdNZXRhZGF0YS5zY2hlbWEuYWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgICAgb2JqZWN0TWFwW2FjdGlvbi5mdWxseVF1YWxpZmllZE5hbWVdID0gYWN0aW9uO1xuICAgICAgICBpZiAoYWN0aW9uLmlzQm91bmQpIHtcbiAgICAgICAgICAgIGNvbnN0IHVuQm91bmRBY3Rpb25OYW1lID0gYWN0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdCgnKCcpWzBdO1xuICAgICAgICAgICAgaWYgKCFvYmplY3RNYXBbdW5Cb3VuZEFjdGlvbk5hbWVdKSB7XG4gICAgICAgICAgICAgICAgb2JqZWN0TWFwW3VuQm91bmRBY3Rpb25OYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgX3R5cGU6ICdVbmJvdW5kR2VuZXJpY0FjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9iamVjdE1hcFt1bkJvdW5kQWN0aW9uTmFtZV0uYWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25TcGxpdCA9IGFjdGlvbi5mdWxseVF1YWxpZmllZE5hbWUuc3BsaXQoJygnKTtcbiAgICAgICAgICAgIG9iamVjdE1hcFtgJHthY3Rpb25TcGxpdFsxXS5zcGxpdCgnKScpWzBdfS8ke2FjdGlvblNwbGl0WzBdfWBdID0gYWN0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGFjdGlvbi5wYXJhbWV0ZXJzLmZvckVhY2goKHBhcmFtZXRlcikgPT4ge1xuICAgICAgICAgICAgb2JqZWN0TWFwW3BhcmFtZXRlci5mdWxseVF1YWxpZmllZE5hbWVdID0gcGFyYW1ldGVyO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByYXdNZXRhZGF0YS5zY2hlbWEuY29tcGxleFR5cGVzLmZvckVhY2goKGNvbXBsZXhUeXBlKSA9PiB7XG4gICAgICAgIG9iamVjdE1hcFtjb21wbGV4VHlwZS5mdWxseVF1YWxpZmllZE5hbWVdID0gY29tcGxleFR5cGU7XG4gICAgICAgIGNvbXBsZXhUeXBlLnByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcbiAgICAgICAgICAgIG9iamVjdE1hcFtwcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdID0gcHJvcGVydHk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJhd01ldGFkYXRhLnNjaGVtYS50eXBlRGVmaW5pdGlvbnMuZm9yRWFjaCgodHlwZURlZmluaXRpb24pID0+IHtcbiAgICAgICAgb2JqZWN0TWFwW3R5cGVEZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZV0gPSB0eXBlRGVmaW5pdGlvbjtcbiAgICB9KTtcbiAgICByYXdNZXRhZGF0YS5zY2hlbWEuZW50aXR5VHlwZXMuZm9yRWFjaCgoZW50aXR5VHlwZSkgPT4ge1xuICAgICAgICBlbnRpdHlUeXBlLmFubm90YXRpb25zID0ge307IC8vICdhbm5vdGF0aW9ucycgcHJvcGVydHkgaXMgbWFuZGF0b3J5XG4gICAgICAgIG9iamVjdE1hcFtlbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZV0gPSBlbnRpdHlUeXBlO1xuICAgICAgICBlbnRpdHlUeXBlLmVudGl0eVByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcbiAgICAgICAgICAgIG9iamVjdE1hcFtwcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdID0gcHJvcGVydHk7XG4gICAgICAgICAgICAvLyBIYW5kbGUgY29tcGxleCB0eXBlc1xuICAgICAgICAgICAgY29uc3QgY29tcGxleFR5cGVEZWZpbml0aW9uID0gb2JqZWN0TWFwW3Byb3BlcnR5LnR5cGVdO1xuICAgICAgICAgICAgaWYgKCgwLCB1dGlsc18xLmlzQ29tcGxleFR5cGVEZWZpbml0aW9uKShjb21wbGV4VHlwZURlZmluaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgY29tcGxleFR5cGVEZWZpbml0aW9uLnByb3BlcnRpZXMuZm9yRWFjaCgoY29tcGxleFR5cGVQcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXhUeXBlUHJvcFRhcmdldCA9IE9iamVjdC5hc3NpZ24oY29tcGxleFR5cGVQcm9wLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdHlwZTogJ1Byb3BlcnR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGx5UXVhbGlmaWVkTmFtZTogcHJvcGVydHkuZnVsbHlRdWFsaWZpZWROYW1lICsgJy8nICsgY29tcGxleFR5cGVQcm9wLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdE1hcFtjb21wbGV4VHlwZVByb3BUYXJnZXQuZnVsbHlRdWFsaWZpZWROYW1lXSA9IGNvbXBsZXhUeXBlUHJvcFRhcmdldDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGVudGl0eVR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMuZm9yRWFjaCgobmF2UHJvcGVydHkpID0+IHtcbiAgICAgICAgICAgIG9iamVjdE1hcFtuYXZQcm9wZXJ0eS5mdWxseVF1YWxpZmllZE5hbWVdID0gbmF2UHJvcGVydHk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIE9iamVjdC5rZXlzKHJhd01ldGFkYXRhLnNjaGVtYS5hbm5vdGF0aW9ucykuZm9yRWFjaCgoYW5ub3RhdGlvblNvdXJjZSkgPT4ge1xuICAgICAgICByYXdNZXRhZGF0YS5zY2hlbWEuYW5ub3RhdGlvbnNbYW5ub3RhdGlvblNvdXJjZV0uZm9yRWFjaCgoYW5ub3RhdGlvbkxpc3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUYXJnZXROYW1lID0gKDAsIHV0aWxzXzEudW5hbGlhcykocmF3TWV0YWRhdGEucmVmZXJlbmNlcywgYW5ub3RhdGlvbkxpc3QudGFyZ2V0KTtcbiAgICAgICAgICAgIGFubm90YXRpb25MaXN0LmFubm90YXRpb25zLmZvckVhY2goKGFubm90YXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgYW5ub3RhdGlvbkZRTiA9IGAke2N1cnJlbnRUYXJnZXROYW1lfUAkeygwLCB1dGlsc18xLnVuYWxpYXMpKHJhd01ldGFkYXRhLnJlZmVyZW5jZXMsIGFubm90YXRpb24udGVybSl9YDtcbiAgICAgICAgICAgICAgICBpZiAoYW5ub3RhdGlvbi5xdWFsaWZpZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbkZRTiArPSBgIyR7YW5ub3RhdGlvbi5xdWFsaWZpZXJ9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb2JqZWN0TWFwW2Fubm90YXRpb25GUU5dID0gYW5ub3RhdGlvbjtcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSA9IGFubm90YXRpb25GUU47XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG9iamVjdE1hcDtcbn1cbi8qKlxuICogQ29tYmluZSB0d28gc3RyaW5ncyByZXByZXNlbnRpbmcgcGF0aCBpbiB0aGUgbWV0YW1vZGVsIHdoaWxlIGVuc3VyaW5nIHRoZWlyIHNwZWNpZmljaXRpZXMgKGFubm90YXRpb24uLi4pIGFyZSByZXNwZWN0ZWQuXG4gKlxuICogQHBhcmFtIGN1cnJlbnRUYXJnZXQgdGhlIGN1cnJlbnQgcGF0aFxuICogQHBhcmFtIHBhdGggdGhlIHBhcnQgd2Ugd2FudCB0byBhcHBlbmRcbiAqIEByZXR1cm5zIHRoZSBjb21wbGV0ZSBwYXRoIGluY2x1ZGluZyB0aGUgZXh0ZW5zaW9uLlxuICovXG5mdW5jdGlvbiBjb21iaW5lUGF0aChjdXJyZW50VGFyZ2V0LCBwYXRoKSB7XG4gICAgaWYgKHBhdGguc3RhcnRzV2l0aCgnQCcpKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50VGFyZ2V0ICsgKDAsIHV0aWxzXzEudW5hbGlhcykodXRpbHNfMS5kZWZhdWx0UmVmZXJlbmNlcywgcGF0aCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gY3VycmVudFRhcmdldCArICcvJyArIHBhdGg7XG4gICAgfVxufVxuY29uc3QgQUxMX0FOTk9UQVRJT05fRVJST1JTID0ge307XG5sZXQgQU5OT1RBVElPTl9FUlJPUlMgPSBbXTtcbi8qKlxuICogQHBhcmFtIHBhdGhcbiAqIEBwYXJhbSBvRXJyb3JNc2dcbiAqL1xuZnVuY3Rpb24gYWRkQW5ub3RhdGlvbkVycm9yTWVzc2FnZShwYXRoLCBvRXJyb3JNc2cpIHtcbiAgICBpZiAoIUFMTF9BTk5PVEFUSU9OX0VSUk9SU1twYXRoXSkge1xuICAgICAgICBBTExfQU5OT1RBVElPTl9FUlJPUlNbcGF0aF0gPSBbb0Vycm9yTXNnXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIEFMTF9BTk5PVEFUSU9OX0VSUk9SU1twYXRoXS5wdXNoKG9FcnJvck1zZyk7XG4gICAgfVxufVxuLyoqXG4gKiBSZXNvbHZlcyBhIHNwZWNpZmljIHBhdGggYmFzZWQgb24gdGhlIG9iamVjdE1hcC5cbiAqXG4gKiBAcGFyYW0gb2JqZWN0TWFwXG4gKiBAcGFyYW0gY3VycmVudFRhcmdldFxuICogQHBhcmFtIHBhdGhcbiAqIEBwYXJhbSBwYXRoT25seVxuICogQHBhcmFtIGluY2x1ZGVWaXNpdGVkT2JqZWN0c1xuICogQHBhcmFtIGFubm90YXRpb25zVGVybVxuICogQHJldHVybnMgdGhlIHJlc29sdmVkIG9iamVjdFxuICovXG5mdW5jdGlvbiBfcmVzb2x2ZVRhcmdldChvYmplY3RNYXAsIGN1cnJlbnRUYXJnZXQsIHBhdGgsIHBhdGhPbmx5ID0gZmFsc2UsIGluY2x1ZGVWaXNpdGVkT2JqZWN0cyA9IGZhbHNlLCBhbm5vdGF0aW9uc1Rlcm0pIHtcbiAgICBsZXQgb0Vycm9yTXNnO1xuICAgIGlmICghcGF0aCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBhVmlzaXRlZE9iamVjdHMgPSBbXTtcbiAgICBpZiAoY3VycmVudFRhcmdldCAmJiBjdXJyZW50VGFyZ2V0Ll90eXBlID09PSAnUHJvcGVydHknKSB7XG4gICAgICAgIGN1cnJlbnRUYXJnZXQgPSBvYmplY3RNYXBbY3VycmVudFRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUuc3BsaXQoJy8nKVswXV07XG4gICAgfVxuICAgIHBhdGggPSBjb21iaW5lUGF0aChjdXJyZW50VGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZSwgcGF0aCk7XG4gICAgY29uc3QgcGF0aFNwbGl0ID0gcGF0aC5zcGxpdCgnLycpO1xuICAgIGNvbnN0IHRhcmdldFBhdGhTcGxpdCA9IFtdO1xuICAgIHBhdGhTcGxpdC5mb3JFYWNoKChwYXRoUGFydCkgPT4ge1xuICAgICAgICAvLyBTZXBhcmF0ZSBvdXQgdGhlIGFubm90YXRpb25cbiAgICAgICAgaWYgKHBhdGhQYXJ0LmluZGV4T2YoJ0AnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IFtzcGxpdHRlZFBhdGgsIGFubm90YXRpb25QYXRoXSA9IHBhdGhQYXJ0LnNwbGl0KCdAJyk7XG4gICAgICAgICAgICB0YXJnZXRQYXRoU3BsaXQucHVzaChzcGxpdHRlZFBhdGgpO1xuICAgICAgICAgICAgdGFyZ2V0UGF0aFNwbGl0LnB1c2goYEAke2Fubm90YXRpb25QYXRofWApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0UGF0aFNwbGl0LnB1c2gocGF0aFBhcnQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgbGV0IGN1cnJlbnRQYXRoID0gcGF0aDtcbiAgICBsZXQgY3VycmVudENvbnRleHQgPSBjdXJyZW50VGFyZ2V0O1xuICAgIGNvbnN0IHRhcmdldCA9IHRhcmdldFBhdGhTcGxpdC5yZWR1Y2UoKGN1cnJlbnRWYWx1ZSwgcGF0aFBhcnQpID0+IHtcbiAgICAgICAgaWYgKHBhdGhQYXJ0ID09PSAnJFR5cGUnICYmIGN1cnJlbnRWYWx1ZS5fdHlwZSA9PT0gJ0VudGl0eVR5cGUnKSB7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICgocGF0aFBhcnQgPT09ICdAJHVpNS5vdmVybG9hZCcgfHwgcGF0aFBhcnQgPT09ICcwJykgJiYgY3VycmVudFZhbHVlLl90eXBlID09PSAnQWN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aFBhcnQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAvLyBFbXB0eSBQYXRoIGFmdGVyIGFuIGVudGl0eVNldCBtZWFucyBlbnRpdHlUeXBlXG4gICAgICAgICAgICBpZiAoY3VycmVudFZhbHVlICYmIGN1cnJlbnRWYWx1ZS5fdHlwZSA9PT0gJ0VudGl0eVNldCcgJiYgY3VycmVudFZhbHVlLmVudGl0eVR5cGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZVZpc2l0ZWRPYmplY3RzKSB7XG4gICAgICAgICAgICAgICAgICAgIGFWaXNpdGVkT2JqZWN0cy5wdXNoKGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZSA9IGN1cnJlbnRWYWx1ZS5lbnRpdHlUeXBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAmJiBjdXJyZW50VmFsdWUuX3R5cGUgPT09ICdOYXZpZ2F0aW9uUHJvcGVydHknICYmIGN1cnJlbnRWYWx1ZS50YXJnZXRUeXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVWaXNpdGVkT2JqZWN0cykge1xuICAgICAgICAgICAgICAgICAgICBhVmlzaXRlZE9iamVjdHMucHVzaChjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWUgPSBjdXJyZW50VmFsdWUudGFyZ2V0VHlwZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluY2x1ZGVWaXNpdGVkT2JqZWN0cyAmJiBjdXJyZW50VmFsdWUgIT09IG51bGwgJiYgY3VycmVudFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFWaXNpdGVkT2JqZWN0cy5wdXNoKGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIGN1cnJlbnRQYXRoID0gcGF0aFBhcnQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY3VycmVudFZhbHVlLl90eXBlID09PSAnRW50aXR5U2V0JyAmJiBwYXRoUGFydCA9PT0gJyRUeXBlJykge1xuICAgICAgICAgICAgY3VycmVudFZhbHVlID0gY3VycmVudFZhbHVlLnRhcmdldFR5cGU7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGN1cnJlbnRWYWx1ZS5fdHlwZSA9PT0gJ0VudGl0eVNldCcgJiYgY3VycmVudFZhbHVlLmVudGl0eVR5cGUpIHtcbiAgICAgICAgICAgIGN1cnJlbnRQYXRoID0gY29tYmluZVBhdGgoY3VycmVudFZhbHVlLmVudGl0eVR5cGVOYW1lLCBwYXRoUGFydCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY3VycmVudFZhbHVlLl90eXBlID09PSAnTmF2aWdhdGlvblByb3BlcnR5Jykge1xuICAgICAgICAgICAgY3VycmVudFBhdGggPSBjb21iaW5lUGF0aChjdXJyZW50VmFsdWUuZnVsbHlRdWFsaWZpZWROYW1lLCBwYXRoUGFydCk7XG4gICAgICAgICAgICBpZiAoIW9iamVjdE1hcFtjdXJyZW50UGF0aF0pIHtcbiAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayBsb2cgZXJyb3JcbiAgICAgICAgICAgICAgICBjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRWYWx1ZS50YXJnZXRUeXBlTmFtZSwgcGF0aFBhcnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGN1cnJlbnRWYWx1ZS5fdHlwZSA9PT0gJ1Byb3BlcnR5Jykge1xuICAgICAgICAgICAgLy8gQ29tcGxleFR5cGUgb3IgUHJvcGVydHlcbiAgICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUudGFyZ2V0VHlwZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXRoID0gY29tYmluZVBhdGgoY3VycmVudFZhbHVlLnRhcmdldFR5cGUuZnVsbHlRdWFsaWZpZWROYW1lLCBwYXRoUGFydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRWYWx1ZS5mdWxseVF1YWxpZmllZE5hbWUsIHBhdGhQYXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjdXJyZW50VmFsdWUuX3R5cGUgPT09ICdBY3Rpb24nICYmIGN1cnJlbnRWYWx1ZS5pc0JvdW5kKSB7XG4gICAgICAgICAgICBjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRWYWx1ZS5mdWxseVF1YWxpZmllZE5hbWUsIHBhdGhQYXJ0KTtcbiAgICAgICAgICAgIGlmIChwYXRoUGFydCA9PT0gJyRQYXJhbWV0ZXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZS5wYXJhbWV0ZXJzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFvYmplY3RNYXBbY3VycmVudFBhdGhdKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFBhdGggPSBjb21iaW5lUGF0aChjdXJyZW50VmFsdWUuc291cmNlVHlwZSwgcGF0aFBhcnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGN1cnJlbnRWYWx1ZS5fdHlwZSA9PT0gJ0FjdGlvblBhcmFtZXRlcicgJiYgY3VycmVudFZhbHVlLmlzRW50aXR5U2V0KSB7XG4gICAgICAgICAgICBjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRWYWx1ZS50eXBlLCBwYXRoUGFydCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY3VycmVudFZhbHVlLl90eXBlID09PSAnQWN0aW9uUGFyYW1ldGVyJyAmJiAhY3VycmVudFZhbHVlLmlzRW50aXR5U2V0KSB7XG4gICAgICAgICAgICBjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRUYXJnZXQuZnVsbHlRdWFsaWZpZWROYW1lLnN1YnN0cmluZygwLCBjdXJyZW50VGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZS5sYXN0SW5kZXhPZignLycpKSwgcGF0aFBhcnQpO1xuICAgICAgICAgICAgaWYgKCFvYmplY3RNYXBbY3VycmVudFBhdGhdKSB7XG4gICAgICAgICAgICAgICAgbGV0IGxhc3RJZHggPSBjdXJyZW50VGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZS5sYXN0SW5kZXhPZignLycpO1xuICAgICAgICAgICAgICAgIGlmIChsYXN0SWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBsYXN0SWR4ID0gY3VycmVudFRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKG9iamVjdE1hcFtjdXJyZW50VGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZS5zdWJzdHJpbmcoMCwgbGFzdElkeCldLnNvdXJjZVR5cGUsIHBhdGhQYXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRQYXRoID0gY29tYmluZVBhdGgoY3VycmVudFZhbHVlLmZ1bGx5UXVhbGlmaWVkTmFtZSwgcGF0aFBhcnQpO1xuICAgICAgICAgICAgaWYgKHBhdGhQYXJ0ICE9PSAnbmFtZScgJiYgY3VycmVudFZhbHVlW3BhdGhQYXJ0XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZVtwYXRoUGFydF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwYXRoUGFydCA9PT0gJyRBbm5vdGF0aW9uUGF0aCcgJiYgY3VycmVudFZhbHVlLiR0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0VG9SZXNvbHZlID0gb2JqZWN0TWFwW2N1cnJlbnRWYWx1ZS5mdWxseVF1YWxpZmllZE5hbWUuc3BsaXQoJ0AnKVswXV07XG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViVGFyZ2V0ID0gX3Jlc29sdmVUYXJnZXQob2JqZWN0TWFwLCBjb250ZXh0VG9SZXNvbHZlLCBjdXJyZW50VmFsdWUudmFsdWUsIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBzdWJUYXJnZXQudmlzaXRlZE9iamVjdHMuZm9yRWFjaCgodmlzaXRlZFN1Yk9iamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYVZpc2l0ZWRPYmplY3RzLmluZGV4T2YodmlzaXRlZFN1Yk9iamVjdCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhVmlzaXRlZE9iamVjdHMucHVzaCh2aXNpdGVkU3ViT2JqZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWJUYXJnZXQudGFyZ2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocGF0aFBhcnQgPT09ICckUGF0aCcgJiYgY3VycmVudFZhbHVlLiR0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50Q29udGV4dCA9IGFWaXNpdGVkT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICAuY29uY2F0KClcbiAgICAgICAgICAgICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICAuZmluZCgob2JqKSA9PiBvYmouX3R5cGUgPT09ICdFbnRpdHlUeXBlJyB8fFxuICAgICAgICAgICAgICAgICAgICBvYmouX3R5cGUgPT09ICdFbnRpdHlTZXQnIHx8XG4gICAgICAgICAgICAgICAgICAgIG9iai5fdHlwZSA9PT0gJ05hdmlnYXRpb25Qcm9wZXJ0eScpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWJUYXJnZXQgPSBfcmVzb2x2ZVRhcmdldChvYmplY3RNYXAsIGN1cnJlbnRDb250ZXh0LCBjdXJyZW50VmFsdWUucGF0aCwgZmFsc2UsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzdWJUYXJnZXQudmlzaXRlZE9iamVjdHMuZm9yRWFjaCgodmlzaXRlZFN1Yk9iamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFWaXNpdGVkT2JqZWN0cy5pbmRleE9mKHZpc2l0ZWRTdWJPYmplY3QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFWaXNpdGVkT2JqZWN0cy5wdXNoKHZpc2l0ZWRTdWJPYmplY3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YlRhcmdldC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50VmFsdWUuJHRhcmdldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHBhdGhQYXJ0LnN0YXJ0c1dpdGgoJyRQYXRoJykgJiYgY3VycmVudFZhbHVlLiR0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnRlcm1lZGlhdGVUYXJnZXQgPSBjdXJyZW50VmFsdWUuJHRhcmdldDtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGludGVybWVkaWF0ZVRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUsIHBhdGhQYXJ0LnN1YnN0cmluZyg1KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50VmFsdWUuaGFzT3duUHJvcGVydHkoJyRUeXBlJykgJiYgIW9iamVjdE1hcFtjdXJyZW50UGF0aF0pIHtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5vdyBhbiBhbm5vdGF0aW9uIHZhbHVlXG4gICAgICAgICAgICAgICAgY29uc3QgZW50aXR5VHlwZSA9IG9iamVjdE1hcFtjdXJyZW50VmFsdWUuZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KCdAJylbMF1dO1xuICAgICAgICAgICAgICAgIGlmIChlbnRpdHlUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYXRoID0gY29tYmluZVBhdGgoZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUsIHBhdGhQYXJ0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdE1hcFtjdXJyZW50UGF0aF07XG4gICAgfSwgbnVsbCk7XG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgaWYgKGFubm90YXRpb25zVGVybSkge1xuICAgICAgICAgICAgY29uc3QgYW5ub3RhdGlvblR5cGUgPSBpbmZlclR5cGVGcm9tVGVybShhbm5vdGF0aW9uc1Rlcm0sIGN1cnJlbnRUYXJnZXQpO1xuICAgICAgICAgICAgb0Vycm9yTXNnID0ge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdVbmFibGUgdG8gcmVzb2x2ZSB0aGUgcGF0aCBleHByZXNzaW9uOiAnICtcbiAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICBwYXRoICtcbiAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICAnXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICdIaW50OiBDaGVjayBhbmQgY29ycmVjdCB0aGUgcGF0aCB2YWx1ZXMgdW5kZXIgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgaW4gdGhlIG1ldGFkYXRhIChhbm5vdGF0aW9uLnhtbCBmaWxlIG9yIENEUyBhbm5vdGF0aW9ucyBmb3IgdGhlIGFwcGxpY2F0aW9uKTogXFxuXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICc8QW5ub3RhdGlvbiBUZXJtID0gJyArXG4gICAgICAgICAgICAgICAgICAgIGFubm90YXRpb25zVGVybSArXG4gICAgICAgICAgICAgICAgICAgICc+JyArXG4gICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgJzxSZWNvcmQgVHlwZSA9ICcgK1xuICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSArXG4gICAgICAgICAgICAgICAgICAgICc+JyArXG4gICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgJzxBbm5vdGF0aW9uUGF0aCA9ICcgK1xuICAgICAgICAgICAgICAgICAgICBwYXRoICtcbiAgICAgICAgICAgICAgICAgICAgJz4nXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYWRkQW5ub3RhdGlvbkVycm9yTWVzc2FnZShwYXRoLCBvRXJyb3JNc2cpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb0Vycm9yTXNnID0ge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdVbmFibGUgdG8gcmVzb2x2ZSB0aGUgcGF0aCBleHByZXNzaW9uOiAnICtcbiAgICAgICAgICAgICAgICAgICAgcGF0aCArXG4gICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICAnSGludDogQ2hlY2sgYW5kIGNvcnJlY3QgdGhlIHBhdGggdmFsdWVzIHVuZGVyIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIGluIHRoZSBtZXRhZGF0YSAoYW5ub3RhdGlvbi54bWwgZmlsZSBvciBDRFMgYW5ub3RhdGlvbnMgZm9yIHRoZSBhcHBsaWNhdGlvbik6IFxcblxcbicgK1xuICAgICAgICAgICAgICAgICAgICAnPEFubm90YXRpb24gVGVybSA9ICcgK1xuICAgICAgICAgICAgICAgICAgICBwYXRoU3BsaXRbMF0gK1xuICAgICAgICAgICAgICAgICAgICAnPicgK1xuICAgICAgICAgICAgICAgICAgICAnXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICc8UHJvcGVydHlWYWx1ZSAgUGF0aD0gJyArXG4gICAgICAgICAgICAgICAgICAgIHBhdGhTcGxpdFsxXSArXG4gICAgICAgICAgICAgICAgICAgICc+J1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGFkZEFubm90YXRpb25FcnJvck1lc3NhZ2UocGF0aCwgb0Vycm9yTXNnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocGF0aE9ubHkpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRQYXRoO1xuICAgIH1cbiAgICBpZiAoaW5jbHVkZVZpc2l0ZWRPYmplY3RzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2aXNpdGVkT2JqZWN0czogYVZpc2l0ZWRPYmplY3RzLFxuICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXRcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cbi8qKlxuICogVHlwZWd1YXJkIHRvIGNoZWNrIGlmIHRoZSBwYXRoIGNvbnRhaW5zIGFuIGFubm90YXRpb24uXG4gKlxuICogQHBhcmFtIHBhdGhTdHIgdGhlIHBhdGggdG8gZXZhbHVhdGVcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgYW4gYW5ub3RhdGlvbiBpbiB0aGUgcGF0aC5cbiAqL1xuZnVuY3Rpb24gaXNBbm5vdGF0aW9uUGF0aChwYXRoU3RyKSB7XG4gICAgcmV0dXJuIHBhdGhTdHIuaW5kZXhPZignQCcpICE9PSAtMTtcbn1cbmZ1bmN0aW9uIHBhcnNlVmFsdWUocHJvcGVydHlWYWx1ZSwgdmFsdWVGUU4sIG9iamVjdE1hcCwgY29udGV4dCkge1xuICAgIGlmIChwcm9wZXJ0eVZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgc3dpdGNoIChwcm9wZXJ0eVZhbHVlLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnU3RyaW5nJzpcbiAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlLlN0cmluZztcbiAgICAgICAgY2FzZSAnSW50JzpcbiAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlLkludDtcbiAgICAgICAgY2FzZSAnQm9vbCc6XG4gICAgICAgICAgICByZXR1cm4gcHJvcGVydHlWYWx1ZS5Cb29sO1xuICAgICAgICBjYXNlICdEZWNpbWFsJzpcbiAgICAgICAgICAgIHJldHVybiAoMCwgdXRpbHNfMS5EZWNpbWFsKShwcm9wZXJ0eVZhbHVlLkRlY2ltYWwpO1xuICAgICAgICBjYXNlICdEYXRlJzpcbiAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlLkRhdGU7XG4gICAgICAgIGNhc2UgJ0VudW1NZW1iZXInOlxuICAgICAgICAgICAgcmV0dXJuICgwLCB1dGlsc18xLmFsaWFzKShjb250ZXh0LnJhd01ldGFkYXRhLnJlZmVyZW5jZXMsIHByb3BlcnR5VmFsdWUuRW51bU1lbWJlcik7XG4gICAgICAgIGNhc2UgJ1Byb3BlcnR5UGF0aCc6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdQcm9wZXJ0eVBhdGgnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBwcm9wZXJ0eVZhbHVlLlByb3BlcnR5UGF0aCxcbiAgICAgICAgICAgICAgICBmdWxseVF1YWxpZmllZE5hbWU6IHZhbHVlRlFOLFxuICAgICAgICAgICAgICAgICR0YXJnZXQ6IF9yZXNvbHZlVGFyZ2V0KG9iamVjdE1hcCwgY29udGV4dC5jdXJyZW50VGFyZ2V0LCBwcm9wZXJ0eVZhbHVlLlByb3BlcnR5UGF0aCwgZmFsc2UsIGZhbHNlLCBjb250ZXh0LmN1cnJlbnRUZXJtKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnTmF2aWdhdGlvblByb3BlcnR5UGF0aCc6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdOYXZpZ2F0aW9uUHJvcGVydHlQYXRoJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogcHJvcGVydHlWYWx1ZS5OYXZpZ2F0aW9uUHJvcGVydHlQYXRoLFxuICAgICAgICAgICAgICAgIGZ1bGx5UXVhbGlmaWVkTmFtZTogdmFsdWVGUU4sXG4gICAgICAgICAgICAgICAgJHRhcmdldDogX3Jlc29sdmVUYXJnZXQob2JqZWN0TWFwLCBjb250ZXh0LmN1cnJlbnRUYXJnZXQsIHByb3BlcnR5VmFsdWUuTmF2aWdhdGlvblByb3BlcnR5UGF0aCwgZmFsc2UsIGZhbHNlLCBjb250ZXh0LmN1cnJlbnRUZXJtKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnQW5ub3RhdGlvblBhdGgnOlxuICAgICAgICAgICAgY29uc3QgYW5ub3RhdGlvblRhcmdldCA9IF9yZXNvbHZlVGFyZ2V0KG9iamVjdE1hcCwgY29udGV4dC5jdXJyZW50VGFyZ2V0LCAoMCwgdXRpbHNfMS51bmFsaWFzKShjb250ZXh0LnJhd01ldGFkYXRhLnJlZmVyZW5jZXMsIHByb3BlcnR5VmFsdWUuQW5ub3RhdGlvblBhdGgpLCB0cnVlLCBmYWxzZSwgY29udGV4dC5jdXJyZW50VGVybSk7XG4gICAgICAgICAgICBjb25zdCBhbm5vdGF0aW9uUGF0aCA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnQW5ub3RhdGlvblBhdGgnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBwcm9wZXJ0eVZhbHVlLkFubm90YXRpb25QYXRoLFxuICAgICAgICAgICAgICAgIGZ1bGx5UXVhbGlmaWVkTmFtZTogdmFsdWVGUU4sXG4gICAgICAgICAgICAgICAgJHRhcmdldDogYW5ub3RhdGlvblRhcmdldCxcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uc1Rlcm06IGNvbnRleHQuY3VycmVudFRlcm0sXG4gICAgICAgICAgICAgICAgdGVybTogJycsXG4gICAgICAgICAgICAgICAgcGF0aDogJydcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb250ZXh0LnVucmVzb2x2ZWRBbm5vdGF0aW9ucy5wdXNoKHsgaW5saW5lOiBmYWxzZSwgdG9SZXNvbHZlOiBhbm5vdGF0aW9uUGF0aCB9KTtcbiAgICAgICAgICAgIHJldHVybiBhbm5vdGF0aW9uUGF0aDtcbiAgICAgICAgY2FzZSAnUGF0aCc6XG4gICAgICAgICAgICBjb25zdCAkdGFyZ2V0ID0gX3Jlc29sdmVUYXJnZXQob2JqZWN0TWFwLCBjb250ZXh0LmN1cnJlbnRUYXJnZXQsIHByb3BlcnR5VmFsdWUuUGF0aCwgdHJ1ZSwgZmFsc2UsIGNvbnRleHQuY3VycmVudFRlcm0pO1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IG5ldyBQYXRoKHByb3BlcnR5VmFsdWUsICR0YXJnZXQsIGNvbnRleHQuY3VycmVudFRlcm0sICcnKTtcbiAgICAgICAgICAgIGNvbnRleHQudW5yZXNvbHZlZEFubm90YXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIGlubGluZTogaXNBbm5vdGF0aW9uUGF0aChwcm9wZXJ0eVZhbHVlLlBhdGgpLFxuICAgICAgICAgICAgICAgIHRvUmVzb2x2ZTogcGF0aFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgICAgY2FzZSAnUmVjb3JkJzpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZVJlY29yZChwcm9wZXJ0eVZhbHVlLlJlY29yZCwgdmFsdWVGUU4sIG9iamVjdE1hcCwgY29udGV4dCk7XG4gICAgICAgIGNhc2UgJ0NvbGxlY3Rpb24nOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlQ29sbGVjdGlvbihwcm9wZXJ0eVZhbHVlLkNvbGxlY3Rpb24sIHZhbHVlRlFOLCBvYmplY3RNYXAsIGNvbnRleHQpO1xuICAgICAgICBjYXNlICdBcHBseSc6XG4gICAgICAgIGNhc2UgJ051bGwnOlxuICAgICAgICBjYXNlICdOb3QnOlxuICAgICAgICBjYXNlICdFcSc6XG4gICAgICAgIGNhc2UgJ05lJzpcbiAgICAgICAgY2FzZSAnR3QnOlxuICAgICAgICBjYXNlICdHZSc6XG4gICAgICAgIGNhc2UgJ0x0JzpcbiAgICAgICAgY2FzZSAnTGUnOlxuICAgICAgICBjYXNlICdJZic6XG4gICAgICAgIGNhc2UgJ0FuZCc6XG4gICAgICAgIGNhc2UgJ09yJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlO1xuICAgIH1cbn1cbi8qKlxuICogSW5mZXIgdGhlIHR5cGUgb2YgYSB0ZXJtIGJhc2VkIG9uIGl0cyB0eXBlLlxuICpcbiAqIEBwYXJhbSBhbm5vdGF0aW9uc1Rlcm0gVGhlIGFubm90YXRpb24gdGVybVxuICogQHBhcmFtIGFubm90YXRpb25UYXJnZXQgdGhlIGFubm90YXRpb24gdGFyZ2V0XG4gKiBAcmV0dXJucyB0aGUgaW5mZXJyZWQgdHlwZS5cbiAqL1xuZnVuY3Rpb24gaW5mZXJUeXBlRnJvbVRlcm0oYW5ub3RhdGlvbnNUZXJtLCBhbm5vdGF0aW9uVGFyZ2V0KSB7XG4gICAgY29uc3QgdGFyZ2V0VHlwZSA9IHV0aWxzXzEuVGVybVRvVHlwZXNbYW5ub3RhdGlvbnNUZXJtXTtcbiAgICBjb25zdCBvRXJyb3JNc2cgPSB7XG4gICAgICAgIGlzRXJyb3I6IGZhbHNlLFxuICAgICAgICBtZXNzYWdlOiBgVGhlIHR5cGUgb2YgdGhlIHJlY29yZCB1c2VkIHdpdGhpbiB0aGUgdGVybSAke2Fubm90YXRpb25zVGVybX0gd2FzIG5vdCBkZWZpbmVkIGFuZCB3YXMgaW5mZXJyZWQgYXMgJHt0YXJnZXRUeXBlfS5cbkhpbnQ6IElmIHBvc3NpYmxlLCB0cnkgdG8gbWFpbnRhaW4gdGhlIFR5cGUgcHJvcGVydHkgZm9yIGVhY2ggUmVjb3JkLlxuPEFubm90YXRpb25zIFRhcmdldD1cIiR7YW5ub3RhdGlvblRhcmdldH1cIj5cblx0PEFubm90YXRpb24gVGVybT1cIiR7YW5ub3RhdGlvbnNUZXJtfVwiPlxuXHRcdDxSZWNvcmQ+Li4uPC9SZWNvcmQ+XG5cdDwvQW5ub3RhdGlvbj5cbjwvQW5ub3RhdGlvbnM+YFxuICAgIH07XG4gICAgYWRkQW5ub3RhdGlvbkVycm9yTWVzc2FnZShhbm5vdGF0aW9uVGFyZ2V0ICsgJy8nICsgYW5ub3RhdGlvbnNUZXJtLCBvRXJyb3JNc2cpO1xuICAgIHJldHVybiB0YXJnZXRUeXBlO1xufVxuZnVuY3Rpb24gaXNEYXRhRmllbGRXaXRoRm9yQWN0aW9uKGFubm90YXRpb25Db250ZW50LCBhbm5vdGF0aW9uVGVybSkge1xuICAgIHJldHVybiAoYW5ub3RhdGlvbkNvbnRlbnQuaGFzT3duUHJvcGVydHkoJ0FjdGlvbicpICYmXG4gICAgICAgIChhbm5vdGF0aW9uVGVybS4kVHlwZSA9PT0gJ2NvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFjdGlvbicgfHxcbiAgICAgICAgICAgIGFubm90YXRpb25UZXJtLiRUeXBlID09PSAnY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aEFjdGlvbicpKTtcbn1cbmZ1bmN0aW9uIHBhcnNlUmVjb3JkVHlwZShyZWNvcmREZWZpbml0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IHRhcmdldFR5cGU7XG4gICAgaWYgKCFyZWNvcmREZWZpbml0aW9uLnR5cGUgJiYgY29udGV4dC5jdXJyZW50VGVybSkge1xuICAgICAgICB0YXJnZXRUeXBlID0gaW5mZXJUeXBlRnJvbVRlcm0oY29udGV4dC5jdXJyZW50VGVybSwgY29udGV4dC5jdXJyZW50VGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0YXJnZXRUeXBlID0gKDAsIHV0aWxzXzEudW5hbGlhcykoY29udGV4dC5yYXdNZXRhZGF0YS5yZWZlcmVuY2VzLCByZWNvcmREZWZpbml0aW9uLnR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0VHlwZTtcbn1cbmZ1bmN0aW9uIHBhcnNlUmVjb3JkKHJlY29yZERlZmluaXRpb24sIGN1cnJlbnRGUU4sIG9iamVjdE1hcCwgY29udGV4dCkge1xuICAgIGNvbnN0IHRhcmdldFR5cGUgPSBwYXJzZVJlY29yZFR5cGUocmVjb3JkRGVmaW5pdGlvbiwgY29udGV4dCk7XG4gICAgY29uc3QgYW5ub3RhdGlvblRlcm0gPSB7XG4gICAgICAgICRUeXBlOiB0YXJnZXRUeXBlLFxuICAgICAgICBmdWxseVF1YWxpZmllZE5hbWU6IGN1cnJlbnRGUU5cbiAgICB9O1xuICAgIGNvbnN0IGFubm90YXRpb25Db250ZW50ID0ge307XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjb3JkRGVmaW5pdGlvbi5hbm5vdGF0aW9ucykpIHtcbiAgICAgICAgY29uc3Qgc3ViQW5ub3RhdGlvbkxpc3QgPSB7XG4gICAgICAgICAgICB0YXJnZXQ6IGN1cnJlbnRGUU4sXG4gICAgICAgICAgICBhbm5vdGF0aW9uczogcmVjb3JkRGVmaW5pdGlvbi5hbm5vdGF0aW9ucyxcbiAgICAgICAgICAgIF9fc291cmNlOiBjb250ZXh0LmN1cnJlbnRTb3VyY2VcbiAgICAgICAgfTtcbiAgICAgICAgY29udGV4dC5hZGRpdGlvbmFsQW5ub3RhdGlvbnMucHVzaChzdWJBbm5vdGF0aW9uTGlzdCk7XG4gICAgfVxuICAgIGlmIChyZWNvcmREZWZpbml0aW9uLnByb3BlcnR5VmFsdWVzKSB7XG4gICAgICAgIHJlY29yZERlZmluaXRpb24ucHJvcGVydHlWYWx1ZXMuZm9yRWFjaCgocHJvcGVydHlWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgYW5ub3RhdGlvbkNvbnRlbnRbcHJvcGVydHlWYWx1ZS5uYW1lXSA9IHBhcnNlVmFsdWUocHJvcGVydHlWYWx1ZS52YWx1ZSwgYCR7Y3VycmVudEZRTn0vJHtwcm9wZXJ0eVZhbHVlLm5hbWV9YCwgb2JqZWN0TWFwLCBjb250ZXh0KTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BlcnR5VmFsdWUuYW5ub3RhdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViQW5ub3RhdGlvbkxpc3QgPSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogYCR7Y3VycmVudEZRTn0vJHtwcm9wZXJ0eVZhbHVlLm5hbWV9YCxcbiAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbnM6IHByb3BlcnR5VmFsdWUuYW5ub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIF9fc291cmNlOiBjb250ZXh0LmN1cnJlbnRTb3VyY2VcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnRleHQuYWRkaXRpb25hbEFubm90YXRpb25zLnB1c2goc3ViQW5ub3RhdGlvbkxpc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzRGF0YUZpZWxkV2l0aEZvckFjdGlvbihhbm5vdGF0aW9uQ29udGVudCwgYW5ub3RhdGlvblRlcm0pKSB7XG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvbkNvbnRlbnQuQWN0aW9uVGFyZ2V0ID1cbiAgICAgICAgICAgICAgICAgICAgKGNvbnRleHQuY3VycmVudFRhcmdldC5hY3Rpb25zICYmIGNvbnRleHQuY3VycmVudFRhcmdldC5hY3Rpb25zW2Fubm90YXRpb25Db250ZW50LkFjdGlvbl0pIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RNYXBbYW5ub3RhdGlvbkNvbnRlbnQuQWN0aW9uXTtcbiAgICAgICAgICAgICAgICBpZiAoIWFubm90YXRpb25Db250ZW50LkFjdGlvblRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdG8gZGlhZ25vc3RpY3MgZGVidWdnZXI7XG4gICAgICAgICAgICAgICAgICAgIEFOTk9UQVRJT05fRVJST1JTLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1VuYWJsZSB0byByZXNvbHZlIHRoZSBhY3Rpb24gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbkNvbnRlbnQuQWN0aW9uICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGRlZmluZWQgZm9yICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb25UZXJtLmZ1bGx5UXVhbGlmaWVkTmFtZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihhbm5vdGF0aW9uVGVybSwgYW5ub3RhdGlvbkNvbnRlbnQpO1xufVxuLyoqXG4gKiBSZXRyaWV2ZSBvciBpbmZlciB0aGUgY29sbGVjdGlvbiB0eXBlIGJhc2VkIG9uIGl0cyBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBjb2xsZWN0aW9uRGVmaW5pdGlvblxuICogQHJldHVybnMgdGhlIHR5cGUgb2YgdGhlIGNvbGxlY3Rpb25cbiAqL1xuZnVuY3Rpb24gZ2V0T3JJbmZlckNvbGxlY3Rpb25UeXBlKGNvbGxlY3Rpb25EZWZpbml0aW9uKSB7XG4gICAgbGV0IHR5cGUgPSBjb2xsZWN0aW9uRGVmaW5pdGlvbi50eXBlO1xuICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQgJiYgY29sbGVjdGlvbkRlZmluaXRpb24ubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBmaXJzdENvbEl0ZW0gPSBjb2xsZWN0aW9uRGVmaW5pdGlvblswXTtcbiAgICAgICAgaWYgKGZpcnN0Q29sSXRlbS5oYXNPd25Qcm9wZXJ0eSgnUHJvcGVydHlQYXRoJykpIHtcbiAgICAgICAgICAgIHR5cGUgPSAnUHJvcGVydHlQYXRoJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmaXJzdENvbEl0ZW0uaGFzT3duUHJvcGVydHkoJ1BhdGgnKSkge1xuICAgICAgICAgICAgdHlwZSA9ICdQYXRoJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmaXJzdENvbEl0ZW0uaGFzT3duUHJvcGVydHkoJ0Fubm90YXRpb25QYXRoJykpIHtcbiAgICAgICAgICAgIHR5cGUgPSAnQW5ub3RhdGlvblBhdGgnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGZpcnN0Q29sSXRlbS5oYXNPd25Qcm9wZXJ0eSgnTmF2aWdhdGlvblByb3BlcnR5UGF0aCcpKSB7XG4gICAgICAgICAgICB0eXBlID0gJ05hdmlnYXRpb25Qcm9wZXJ0eVBhdGgnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBmaXJzdENvbEl0ZW0gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAoZmlyc3RDb2xJdGVtLmhhc093blByb3BlcnR5KCd0eXBlJykgfHwgZmlyc3RDb2xJdGVtLmhhc093blByb3BlcnR5KCdwcm9wZXJ0eVZhbHVlcycpKSkge1xuICAgICAgICAgICAgdHlwZSA9ICdSZWNvcmQnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBmaXJzdENvbEl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0eXBlID0gJ1N0cmluZyc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHR5cGUgPSAnRW1wdHlDb2xsZWN0aW9uJztcbiAgICB9XG4gICAgcmV0dXJuIHR5cGU7XG59XG5mdW5jdGlvbiBwYXJzZUNvbGxlY3Rpb24oY29sbGVjdGlvbkRlZmluaXRpb24sIHBhcmVudEZRTiwgb2JqZWN0TWFwLCBjb250ZXh0KSB7XG4gICAgY29uc3QgY29sbGVjdGlvbkRlZmluaXRpb25UeXBlID0gZ2V0T3JJbmZlckNvbGxlY3Rpb25UeXBlKGNvbGxlY3Rpb25EZWZpbml0aW9uKTtcbiAgICBzd2l0Y2ggKGNvbGxlY3Rpb25EZWZpbml0aW9uVHlwZSkge1xuICAgICAgICBjYXNlICdQcm9wZXJ0eVBhdGgnOlxuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25EZWZpbml0aW9uLm1hcCgocHJvcGVydHlQYXRoLCBwcm9wZXJ0eUlkeCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQcm9wZXJ0eVBhdGgnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcHJvcGVydHlQYXRoLlByb3BlcnR5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtwYXJlbnRGUU59LyR7cHJvcGVydHlJZHh9YCxcbiAgICAgICAgICAgICAgICAgICAgJHRhcmdldDogX3Jlc29sdmVUYXJnZXQob2JqZWN0TWFwLCBjb250ZXh0LmN1cnJlbnRUYXJnZXQsIHByb3BlcnR5UGF0aC5Qcm9wZXJ0eVBhdGgsIGZhbHNlLCBmYWxzZSwgY29udGV4dC5jdXJyZW50VGVybSlcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgJ1BhdGgnOlxuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25EZWZpbml0aW9uLm1hcCgocGF0aFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgJHRhcmdldCA9IF9yZXNvbHZlVGFyZ2V0KG9iamVjdE1hcCwgY29udGV4dC5jdXJyZW50VGFyZ2V0LCBwYXRoVmFsdWUuUGF0aCwgdHJ1ZSwgZmFsc2UsIGNvbnRleHQuY3VycmVudFRlcm0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBuZXcgUGF0aChwYXRoVmFsdWUsICR0YXJnZXQsIGNvbnRleHQuY3VycmVudFRlcm0sICcnKTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnVucmVzb2x2ZWRBbm5vdGF0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgaW5saW5lOiBpc0Fubm90YXRpb25QYXRoKHBhdGhWYWx1ZS5QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgdG9SZXNvbHZlOiBwYXRoXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSAnQW5ub3RhdGlvblBhdGgnOlxuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25EZWZpbml0aW9uLm1hcCgoYW5ub3RhdGlvblBhdGgsIGFubm90YXRpb25JZHgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbm5vdGF0aW9uVGFyZ2V0ID0gX3Jlc29sdmVUYXJnZXQob2JqZWN0TWFwLCBjb250ZXh0LmN1cnJlbnRUYXJnZXQsIGFubm90YXRpb25QYXRoLkFubm90YXRpb25QYXRoLCB0cnVlLCBmYWxzZSwgY29udGV4dC5jdXJyZW50VGVybSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYW5ub3RhdGlvbkNvbGxlY3Rpb25FbGVtZW50ID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnQW5ub3RhdGlvblBhdGgnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYW5ub3RhdGlvblBhdGguQW5ub3RhdGlvblBhdGgsXG4gICAgICAgICAgICAgICAgICAgIGZ1bGx5UXVhbGlmaWVkTmFtZTogYCR7cGFyZW50RlFOfS8ke2Fubm90YXRpb25JZHh9YCxcbiAgICAgICAgICAgICAgICAgICAgJHRhcmdldDogYW5ub3RhdGlvblRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbnNUZXJtOiBjb250ZXh0LmN1cnJlbnRUZXJtLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogJydcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnRleHQudW5yZXNvbHZlZEFubm90YXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBpbmxpbmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB0b1Jlc29sdmU6IGFubm90YXRpb25Db2xsZWN0aW9uRWxlbWVudFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBhbm5vdGF0aW9uQ29sbGVjdGlvbkVsZW1lbnQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSAnTmF2aWdhdGlvblByb3BlcnR5UGF0aCc6XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbkRlZmluaXRpb24ubWFwKChuYXZQcm9wZXJ0eVBhdGgsIG5hdlByb3BJZHgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnTmF2aWdhdGlvblByb3BlcnR5UGF0aCcsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuYXZQcm9wZXJ0eVBhdGguTmF2aWdhdGlvblByb3BlcnR5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgZnVsbHlRdWFsaWZpZWROYW1lOiBgJHtwYXJlbnRGUU59LyR7bmF2UHJvcElkeH1gLFxuICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0OiBfcmVzb2x2ZVRhcmdldChvYmplY3RNYXAsIGNvbnRleHQuY3VycmVudFRhcmdldCwgbmF2UHJvcGVydHlQYXRoLk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIGZhbHNlLCBmYWxzZSwgY29udGV4dC5jdXJyZW50VGVybSlcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgJ1JlY29yZCc6XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbkRlZmluaXRpb24ubWFwKChyZWNvcmREZWZpbml0aW9uLCByZWNvcmRJZHgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VSZWNvcmQocmVjb3JkRGVmaW5pdGlvbiwgYCR7cGFyZW50RlFOfS8ke3JlY29yZElkeH1gLCBvYmplY3RNYXAsIGNvbnRleHQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgJ0FwcGx5JzpcbiAgICAgICAgY2FzZSAnTnVsbCc6XG4gICAgICAgIGNhc2UgJ0lmJzpcbiAgICAgICAgY2FzZSAnRXEnOlxuICAgICAgICBjYXNlICdOZSc6XG4gICAgICAgIGNhc2UgJ0x0JzpcbiAgICAgICAgY2FzZSAnR3QnOlxuICAgICAgICBjYXNlICdMZSc6XG4gICAgICAgIGNhc2UgJ0dlJzpcbiAgICAgICAgY2FzZSAnTm90JzpcbiAgICAgICAgY2FzZSAnQW5kJzpcbiAgICAgICAgY2FzZSAnT3InOlxuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25EZWZpbml0aW9uLm1hcCgoaWZWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpZlZhbHVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgJ1N0cmluZyc6XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbkRlZmluaXRpb24ubWFwKChzdHJpbmdWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RyaW5nVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmdWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RyaW5nVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RyaW5nVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RyaW5nVmFsdWUuU3RyaW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgaWYgKGNvbGxlY3Rpb25EZWZpbml0aW9uLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgY2FzZScpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNvbnZlcnRBbm5vdGF0aW9uKGFubm90YXRpb24sIG9iamVjdE1hcCwgY29udGV4dCkge1xuICAgIGlmIChhbm5vdGF0aW9uLnJlY29yZCkge1xuICAgICAgICByZXR1cm4gcGFyc2VSZWNvcmQoYW5ub3RhdGlvbi5yZWNvcmQsIGFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLCBvYmplY3RNYXAsIGNvbnRleHQpO1xuICAgIH1cbiAgICBlbHNlIGlmIChhbm5vdGF0aW9uLmNvbGxlY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoYW5ub3RhdGlvbi52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlVmFsdWUoYW5ub3RhdGlvbi52YWx1ZSwgYW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUsIG9iamVjdE1hcCwgY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChhbm5vdGF0aW9uLmNvbGxlY3Rpb24pIHtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHBhcnNlQ29sbGVjdGlvbihhbm5vdGF0aW9uLmNvbGxlY3Rpb24sIGFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLCBvYmplY3RNYXAsIGNvbnRleHQpO1xuICAgICAgICBjb2xsZWN0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSA9IGFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lO1xuICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgY2FzZScpO1xuICAgIH1cbn1cbi8qKlxuICogQ3JlYXRlcyBhIHJlc29sdmVQYXRoIGZ1bmN0aW9uIGZvciBhIGdpdmVuIGVudGl0eVR5cGUuXG4gKlxuICogQHBhcmFtIGVudGl0eVR5cGUgVGhlIGVudGl0eVR5cGUgZm9yIHdoaWNoIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY3JlYXRlZFxuICogQHBhcmFtIG9iamVjdE1hcCBUaGUgY3VycmVudCBvYmplY3RNYXBcbiAqIEByZXR1cm5zIHRoZSByZXNvbHZlUGF0aCBmdW5jdGlvbiB0aGF0IHN0YXJ0cyBhdCB0aGUgZW50aXR5VHlwZVxuICovXG5mdW5jdGlvbiBjcmVhdGVSZXNvbHZlUGF0aEZuKGVudGl0eVR5cGUsIG9iamVjdE1hcCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAocmVsYXRpdmVQYXRoLCBpbmNsdWRlVmlzaXRlZE9iamVjdHMpIHtcbiAgICAgICAgY29uc3QgYW5ub3RhdGlvblRlcm0gPSAnJztcbiAgICAgICAgcmV0dXJuIF9yZXNvbHZlVGFyZ2V0KG9iamVjdE1hcCwgZW50aXR5VHlwZSwgcmVsYXRpdmVQYXRoLCBmYWxzZSwgaW5jbHVkZVZpc2l0ZWRPYmplY3RzLCBhbm5vdGF0aW9uVGVybSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHJlc29sdmVWMk5hdmlnYXRpb25Qcm9wZXJ0eShuYXZQcm9wLCBhc3NvY2lhdGlvbnMsIG9iamVjdE1hcCwgb3V0TmF2UHJvcCkge1xuICAgIGNvbnN0IHRhcmdldEFzc29jaWF0aW9uID0gYXNzb2NpYXRpb25zLmZpbmQoKGFzc29jaWF0aW9uKSA9PiBhc3NvY2lhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUgPT09IG5hdlByb3AucmVsYXRpb25zaGlwKTtcbiAgICBpZiAodGFyZ2V0QXNzb2NpYXRpb24pIHtcbiAgICAgICAgY29uc3QgYXNzb2NpYXRpb25FbmQgPSB0YXJnZXRBc3NvY2lhdGlvbi5hc3NvY2lhdGlvbkVuZC5maW5kKChlbmQpID0+IGVuZC5yb2xlID09PSBuYXZQcm9wLnRvUm9sZSk7XG4gICAgICAgIGlmIChhc3NvY2lhdGlvbkVuZCkge1xuICAgICAgICAgICAgb3V0TmF2UHJvcC50YXJnZXRUeXBlID0gb2JqZWN0TWFwW2Fzc29jaWF0aW9uRW5kLnR5cGVdO1xuICAgICAgICAgICAgb3V0TmF2UHJvcC5pc0NvbGxlY3Rpb24gPSBhc3NvY2lhdGlvbkVuZC5tdWx0aXBsaWNpdHkgPT09ICcqJztcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHJlc29sdmVWNE5hdmlnYXRpb25Qcm9wZXJ0eShuYXZQcm9wLCBvYmplY3RNYXAsIG91dE5hdlByb3ApIHtcbiAgICBvdXROYXZQcm9wLnRhcmdldFR5cGUgPSBvYmplY3RNYXBbbmF2UHJvcC50YXJnZXRUeXBlTmFtZV07XG4gICAgb3V0TmF2UHJvcC5wYXJ0bmVyID0gbmF2UHJvcC5wYXJ0bmVyO1xuICAgIG91dE5hdlByb3AuaXNDb2xsZWN0aW9uID0gbmF2UHJvcC5pc0NvbGxlY3Rpb247XG4gICAgb3V0TmF2UHJvcC5jb250YWluc1RhcmdldCA9IG5hdlByb3AuY29udGFpbnNUYXJnZXQ7XG4gICAgb3V0TmF2UHJvcC5yZWZlcmVudGlhbENvbnN0cmFpbnQgPSBuYXZQcm9wLnJlZmVyZW50aWFsQ29uc3RyYWludDtcbn1cbmZ1bmN0aW9uIGlzVjROYXZpZ2F0aW9uUHJvcGVydHkobmF2UHJvcCkge1xuICAgIHJldHVybiAhIW5hdlByb3AudGFyZ2V0VHlwZU5hbWU7XG59XG5mdW5jdGlvbiBwcmVwYXJlTmF2aWdhdGlvblByb3BlcnRpZXMobmF2aWdhdGlvblByb3BlcnRpZXMsIGFzc29jaWF0aW9ucywgb2JqZWN0TWFwKSB7XG4gICAgcmV0dXJuIG5hdmlnYXRpb25Qcm9wZXJ0aWVzLm1hcCgobmF2UHJvcCkgPT4ge1xuICAgICAgICBjb25zdCBvdXROYXZQcm9wID0ge1xuICAgICAgICAgICAgX3R5cGU6ICdOYXZpZ2F0aW9uUHJvcGVydHknLFxuICAgICAgICAgICAgbmFtZTogbmF2UHJvcC5uYW1lLFxuICAgICAgICAgICAgZnVsbHlRdWFsaWZpZWROYW1lOiBuYXZQcm9wLmZ1bGx5UXVhbGlmaWVkTmFtZSxcbiAgICAgICAgICAgIGlzQ29sbGVjdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBjb250YWluc1RhcmdldDogZmFsc2UsXG4gICAgICAgICAgICByZWZlcmVudGlhbENvbnN0cmFpbnQ6IFtdLFxuICAgICAgICAgICAgYW5ub3RhdGlvbnM6IHt9LFxuICAgICAgICAgICAgcGFydG5lcjogJycsXG4gICAgICAgICAgICB0YXJnZXRUeXBlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0YXJnZXRUeXBlTmFtZTogJydcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGlzVjROYXZpZ2F0aW9uUHJvcGVydHkobmF2UHJvcCkpIHtcbiAgICAgICAgICAgIHJlc29sdmVWNE5hdmlnYXRpb25Qcm9wZXJ0eShuYXZQcm9wLCBvYmplY3RNYXAsIG91dE5hdlByb3ApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZVYyTmF2aWdhdGlvblByb3BlcnR5KG5hdlByb3AsIGFzc29jaWF0aW9ucywgb2JqZWN0TWFwLCBvdXROYXZQcm9wKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3V0TmF2UHJvcC50YXJnZXRUeXBlKSB7XG4gICAgICAgICAgICBvdXROYXZQcm9wLnRhcmdldFR5cGVOYW1lID0gb3V0TmF2UHJvcC50YXJnZXRUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3RNYXBbb3V0TmF2UHJvcC5mdWxseVF1YWxpZmllZE5hbWVdID0gb3V0TmF2UHJvcDtcbiAgICAgICAgcmV0dXJuIG91dE5hdlByb3A7XG4gICAgfSk7XG59XG4vKipcbiAqIEBwYXJhbSBlbnRpdHlUeXBlc1xuICogQHBhcmFtIGFzc29jaWF0aW9uc1xuICogQHBhcmFtIG9iamVjdE1hcFxuICovXG5mdW5jdGlvbiByZXNvbHZlTmF2aWdhdGlvblByb3BlcnRpZXMoZW50aXR5VHlwZXMsIGFzc29jaWF0aW9ucywgb2JqZWN0TWFwKSB7XG4gICAgZW50aXR5VHlwZXMuZm9yRWFjaCgoZW50aXR5VHlwZSkgPT4ge1xuICAgICAgICBlbnRpdHlUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gcHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0aWVzKGVudGl0eVR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMsIGFzc29jaWF0aW9ucywgb2JqZWN0TWFwKTtcbiAgICAgICAgZW50aXR5VHlwZS5yZXNvbHZlUGF0aCA9IGNyZWF0ZVJlc29sdmVQYXRoRm4oZW50aXR5VHlwZSwgb2JqZWN0TWFwKTtcbiAgICB9KTtcbn1cbi8qKlxuICogQHBhcmFtIG5hbWVzcGFjZVxuICogQHBhcmFtIGFjdGlvbnNcbiAqIEBwYXJhbSBvYmplY3RNYXBcbiAqL1xuZnVuY3Rpb24gbGlua0FjdGlvbnNUb0VudGl0eVR5cGUobmFtZXNwYWNlLCBhY3Rpb25zLCBvYmplY3RNYXApIHtcbiAgICBhY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgICBpZiAoIWFjdGlvbi5hbm5vdGF0aW9ucykge1xuICAgICAgICAgICAgYWN0aW9uLmFubm90YXRpb25zID0ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvbi5pc0JvdW5kKSB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VFbnRpdHlUeXBlID0gb2JqZWN0TWFwW2FjdGlvbi5zb3VyY2VUeXBlXTtcbiAgICAgICAgICAgIGFjdGlvbi5zb3VyY2VFbnRpdHlUeXBlID0gc291cmNlRW50aXR5VHlwZTtcbiAgICAgICAgICAgIGlmIChzb3VyY2VFbnRpdHlUeXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzb3VyY2VFbnRpdHlUeXBlLmFjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgc291cmNlRW50aXR5VHlwZS5hY3Rpb25zID0ge307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNvdXJjZUVudGl0eVR5cGUuYWN0aW9uc1thY3Rpb24ubmFtZV0gPSBhY3Rpb247XG4gICAgICAgICAgICAgICAgc291cmNlRW50aXR5VHlwZS5hY3Rpb25zW2Ake25hbWVzcGFjZX0uJHthY3Rpb24ubmFtZX1gXSA9IGFjdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjdGlvbi5yZXR1cm5FbnRpdHlUeXBlID0gb2JqZWN0TWFwW2FjdGlvbi5yZXR1cm5UeXBlXTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuLyoqXG4gKiBAcGFyYW0gZW50aXR5U2V0c1xuICogQHBhcmFtIG9iamVjdE1hcFxuICogQHBhcmFtIHJlZmVyZW5jZXNcbiAqL1xuZnVuY3Rpb24gbGlua0VudGl0eVR5cGVUb0VudGl0eVNldChlbnRpdHlTZXRzLCBvYmplY3RNYXAsIHJlZmVyZW5jZXMpIHtcbiAgICBlbnRpdHlTZXRzLmZvckVhY2goKGVudGl0eVNldCkgPT4ge1xuICAgICAgICBlbnRpdHlTZXQuZW50aXR5VHlwZSA9IG9iamVjdE1hcFtlbnRpdHlTZXQuZW50aXR5VHlwZU5hbWVdO1xuICAgICAgICBpZiAoIWVudGl0eVNldC5lbnRpdHlUeXBlKSB7XG4gICAgICAgICAgICBlbnRpdHlTZXQuZW50aXR5VHlwZSA9IG9iamVjdE1hcFsoMCwgdXRpbHNfMS51bmFsaWFzKShyZWZlcmVuY2VzLCBlbnRpdHlTZXQuZW50aXR5VHlwZU5hbWUpXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVudGl0eVNldC5hbm5vdGF0aW9ucykge1xuICAgICAgICAgICAgZW50aXR5U2V0LmFubm90YXRpb25zID0ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFlbnRpdHlTZXQuZW50aXR5VHlwZS5hbm5vdGF0aW9ucykge1xuICAgICAgICAgICAgZW50aXR5U2V0LmVudGl0eVR5cGUuYW5ub3RhdGlvbnMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBlbnRpdHlTZXQuZW50aXR5VHlwZS5rZXlzLmZvckVhY2goKGtleVByb3ApID0+IHtcbiAgICAgICAgICAgIGtleVByb3AuaXNLZXkgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbi8qKlxuICogQHBhcmFtIHNpbmdsZXRvbnNcbiAqIEBwYXJhbSBvYmplY3RNYXBcbiAqIEBwYXJhbSByZWZlcmVuY2VzXG4gKi9cbmZ1bmN0aW9uIGxpbmtFbnRpdHlUeXBlVG9TaW5nbGV0b24oc2luZ2xldG9ucywgb2JqZWN0TWFwLCByZWZlcmVuY2VzKSB7XG4gICAgc2luZ2xldG9ucy5mb3JFYWNoKChzaW5nbGV0b24pID0+IHtcbiAgICAgICAgc2luZ2xldG9uLmVudGl0eVR5cGUgPSBvYmplY3RNYXBbc2luZ2xldG9uLmVudGl0eVR5cGVOYW1lXTtcbiAgICAgICAgaWYgKCFzaW5nbGV0b24uZW50aXR5VHlwZSkge1xuICAgICAgICAgICAgc2luZ2xldG9uLmVudGl0eVR5cGUgPSBvYmplY3RNYXBbKDAsIHV0aWxzXzEudW5hbGlhcykocmVmZXJlbmNlcywgc2luZ2xldG9uLmVudGl0eVR5cGVOYW1lKV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzaW5nbGV0b24uYW5ub3RhdGlvbnMpIHtcbiAgICAgICAgICAgIHNpbmdsZXRvbi5hbm5vdGF0aW9ucyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2luZ2xldG9uLmVudGl0eVR5cGUuYW5ub3RhdGlvbnMpIHtcbiAgICAgICAgICAgIHNpbmdsZXRvbi5lbnRpdHlUeXBlLmFubm90YXRpb25zID0ge307XG4gICAgICAgIH1cbiAgICAgICAgc2luZ2xldG9uLmVudGl0eVR5cGUua2V5cy5mb3JFYWNoKChrZXlQcm9wKSA9PiB7XG4gICAgICAgICAgICBrZXlQcm9wLmlzS2V5ID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG4vKipcbiAqIEBwYXJhbSBlbnRpdHlUeXBlc1xuICogQHBhcmFtIG9iamVjdE1hcFxuICovXG5mdW5jdGlvbiBsaW5rUHJvcGVydGllc1RvQ29tcGxleFR5cGVzKGVudGl0eVR5cGVzLCBvYmplY3RNYXApIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaW5rKHByb3BlcnR5KSB7XG4gICAgICAgIGlmICghcHJvcGVydHkuYW5ub3RhdGlvbnMpIHtcbiAgICAgICAgICAgIHByb3BlcnR5LmFubm90YXRpb25zID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eS50eXBlLmluZGV4T2YoJ0VkbScpICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNvbXBsZXhUeXBlO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS50eXBlLnN0YXJ0c1dpdGgoJ0NvbGxlY3Rpb24nKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV4VHlwZU5hbWUgPSBwcm9wZXJ0eS50eXBlLnN1YnN0cmluZygxMSwgcHJvcGVydHkudHlwZS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgY29tcGxleFR5cGUgPSBvYmplY3RNYXBbY29tcGxleFR5cGVOYW1lXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXhUeXBlID0gb2JqZWN0TWFwW3Byb3BlcnR5LnR5cGVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29tcGxleFR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkudGFyZ2V0VHlwZSA9IGNvbXBsZXhUeXBlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29tcGxleFR5cGUucHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxleFR5cGUucHJvcGVydGllcy5mb3JFYWNoKGxpbmspO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChzRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUHJvcGVydHkgVHlwZSBpcyBub3QgZGVmaW5lZCcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVudGl0eVR5cGVzLmZvckVhY2goKGVudGl0eVR5cGUpID0+IHtcbiAgICAgICAgZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLmZvckVhY2gobGluayk7XG4gICAgfSk7XG59XG4vKipcbiAqIEBwYXJhbSBjb21wbGV4VHlwZXNcbiAqIEBwYXJhbSBhc3NvY2lhdGlvbnNcbiAqIEBwYXJhbSBvYmplY3RNYXBcbiAqL1xuZnVuY3Rpb24gcHJlcGFyZUNvbXBsZXhUeXBlcyhjb21wbGV4VHlwZXMsIGFzc29jaWF0aW9ucywgb2JqZWN0TWFwKSB7XG4gICAgY29tcGxleFR5cGVzLmZvckVhY2goKGNvbXBsZXhUeXBlKSA9PiB7XG4gICAgICAgIGNvbXBsZXhUeXBlLmFubm90YXRpb25zID0ge307XG4gICAgICAgIGNvbXBsZXhUeXBlLnByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcbiAgICAgICAgICAgIGlmICghcHJvcGVydHkuYW5ub3RhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eS5hbm5vdGF0aW9ucyA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29tcGxleFR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMgPSBwcmVwYXJlTmF2aWdhdGlvblByb3BlcnRpZXMoY29tcGxleFR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMsIGFzc29jaWF0aW9ucywgb2JqZWN0TWFwKTtcbiAgICB9KTtcbn1cbi8qKlxuICogU3BsaXQgdGhlIGFsaWFzIGZyb20gdGhlIHRlcm0gdmFsdWUuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZXMgdGhlIGN1cnJlbnQgc2V0IG9mIHJlZmVyZW5jZXNcbiAqIEBwYXJhbSB0ZXJtVmFsdWUgdGhlIHZhbHVlIG9mIHRoZSB0ZXJtXG4gKiBAcmV0dXJucyB0aGUgdGVybSBhbGlhcyBhbmQgdGhlIGFjdHVhbCB0ZXJtIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHNwbGl0VGVybShyZWZlcmVuY2VzLCB0ZXJtVmFsdWUpIHtcbiAgICBjb25zdCBhbGlhc2VkVGVybSA9ICgwLCB1dGlsc18xLmFsaWFzKShyZWZlcmVuY2VzLCB0ZXJtVmFsdWUpO1xuICAgIGNvbnN0IGxhc3REb3QgPSBhbGlhc2VkVGVybS5sYXN0SW5kZXhPZignLicpO1xuICAgIGNvbnN0IHRlcm1BbGlhcyA9IGFsaWFzZWRUZXJtLnN1YnN0cmluZygwLCBsYXN0RG90KTtcbiAgICBjb25zdCB0ZXJtID0gYWxpYXNlZFRlcm0uc3Vic3RyaW5nKGxhc3REb3QgKyAxKTtcbiAgICByZXR1cm4gW3Rlcm1BbGlhcywgdGVybV07XG59XG4vKipcbiAqIENyZWF0ZXMgdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXNvbHZlIGEgc3BlY2lmaWMgcGF0aC5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVkT3V0cHV0XG4gKiBAcGFyYW0gb2JqZWN0TWFwXG4gKiBAcmV0dXJucyB0aGUgZnVuY3Rpb24gdGhhdCB3aWxsIGFsbG93IHRvIHJlc29sdmUgZWxlbWVudCBnbG9iYWxseS5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlR2xvYmFsUmVzb2x2ZShjb252ZXJ0ZWRPdXRwdXQsIG9iamVjdE1hcCkge1xuICAgIHJldHVybiBmdW5jdGlvbiByZXNvbHZlUGF0aChzUGF0aCkge1xuICAgICAgICBjb25zdCBhUGF0aFNwbGl0ID0gc1BhdGguc3BsaXQoJy8nKTtcbiAgICAgICAgaWYgKGFQYXRoU3BsaXQuc2hpZnQoKSAhPT0gJycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGRlYWwgd2l0aCByZWxhdGl2ZSBwYXRoJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZW50aXR5U2V0TmFtZSA9IGFQYXRoU3BsaXQuc2hpZnQoKTtcbiAgICAgICAgY29uc3QgZW50aXR5U2V0ID0gY29udmVydGVkT3V0cHV0LmVudGl0eVNldHMuZmluZCgoZXQpID0+IGV0Lm5hbWUgPT09IGVudGl0eVNldE5hbWUpO1xuICAgICAgICBpZiAoIWVudGl0eVNldCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IGNvbnZlcnRlZE91dHB1dC5lbnRpdHlDb250YWluZXIsXG4gICAgICAgICAgICAgICAgb2JqZWN0UGF0aDogW2NvbnZlcnRlZE91dHB1dC5lbnRpdHlDb250YWluZXJdXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChhUGF0aFNwbGl0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IGVudGl0eVNldCxcbiAgICAgICAgICAgICAgICBvYmplY3RQYXRoOiBbY29udmVydGVkT3V0cHV0LmVudGl0eUNvbnRhaW5lciwgZW50aXR5U2V0XVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldFJlc29sdXRpb24gPSBfcmVzb2x2ZVRhcmdldChvYmplY3RNYXAsIGVudGl0eVNldCwgJy8nICsgYVBhdGhTcGxpdC5qb2luKCcvJyksIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgICAgIGlmICh0YXJnZXRSZXNvbHV0aW9uLnRhcmdldCkge1xuICAgICAgICAgICAgICAgIHRhcmdldFJlc29sdXRpb24udmlzaXRlZE9iamVjdHMucHVzaCh0YXJnZXRSZXNvbHV0aW9uLnRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0UmVzb2x1dGlvbi50YXJnZXQsXG4gICAgICAgICAgICAgICAgb2JqZWN0UGF0aDogdGFyZ2V0UmVzb2x1dGlvbi52aXNpdGVkT2JqZWN0c1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH07XG59XG5mdW5jdGlvbiBlbnN1cmVBbm5vdGF0aW9ucyhjdXJyZW50VGFyZ2V0LCB2b2NBbGlhcykge1xuICAgIGlmICghY3VycmVudFRhcmdldC5hbm5vdGF0aW9ucykge1xuICAgICAgICBjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zID0ge307XG4gICAgfVxuICAgIGlmICghY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc10pIHtcbiAgICAgICAgY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc10gPSB7fTtcbiAgICB9XG4gICAgaWYgKCFjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zLl9hbm5vdGF0aW9ucykge1xuICAgICAgICBjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zLl9hbm5vdGF0aW9ucyA9IHt9O1xuICAgIH1cbn1cbmZ1bmN0aW9uIHByb2Nlc3NBbm5vdGF0aW9ucyhjdXJyZW50Q29udGV4dCwgYW5ub3RhdGlvbkxpc3QsIG9iamVjdE1hcCwgYk92ZXJyaWRlRXhpc3RpbmcpIHtcbiAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gY3VycmVudENvbnRleHQuY3VycmVudFRhcmdldDtcbiAgICBjb25zdCBjdXJyZW50VGFyZ2V0TmFtZSA9IGN1cnJlbnRUYXJnZXQuZnVsbHlRdWFsaWZpZWROYW1lO1xuICAgIGFubm90YXRpb25MaXN0LmFubm90YXRpb25zLmZvckVhY2goKGFubm90YXRpb24pID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY3VycmVudENvbnRleHQuY3VycmVudFNvdXJjZSA9IGFubm90YXRpb24uX19zb3VyY2UgfHwgYW5ub3RhdGlvbkxpc3QuX19zb3VyY2U7XG4gICAgICAgIGNvbnN0IFt2b2NBbGlhcywgdm9jVGVybV0gPSBzcGxpdFRlcm0odXRpbHNfMS5kZWZhdWx0UmVmZXJlbmNlcywgYW5ub3RhdGlvbi50ZXJtKTtcbiAgICAgICAgZW5zdXJlQW5ub3RhdGlvbnMoY3VycmVudFRhcmdldCwgdm9jQWxpYXMpO1xuICAgICAgICBjb25zdCB2b2NUZXJtV2l0aFF1YWxpZmllciA9IGAke3ZvY1Rlcm19JHthbm5vdGF0aW9uLnF1YWxpZmllciA/ICcjJyArIGFubm90YXRpb24ucXVhbGlmaWVyIDogJyd9YDtcbiAgICAgICAgaWYgKCFiT3ZlcnJpZGVFeGlzdGluZyAmJiAoKF9iID0gKF9hID0gY3VycmVudFRhcmdldC5hbm5vdGF0aW9ucykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW3ZvY0FsaWFzXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXSkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRDb250ZXh0LmN1cnJlbnRUZXJtID0gYW5ub3RhdGlvbi50ZXJtO1xuICAgICAgICBjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0gPSBjb252ZXJ0QW5ub3RhdGlvbihhbm5vdGF0aW9uLCBvYmplY3RNYXAsIGN1cnJlbnRDb250ZXh0KTtcbiAgICAgICAgc3dpdGNoICh0eXBlb2YgY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdKSB7XG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctd3JhcHBlcnNcbiAgICAgICAgICAgICAgICBjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0gPSBuZXcgU3RyaW5nKGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LXdyYXBwZXJzXG4gICAgICAgICAgICAgICAgY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdID0gbmV3IEJvb2xlYW4oY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0gIT09IG51bGwgJiZcbiAgICAgICAgICAgIHR5cGVvZiBjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0udGVybSA9ICgwLCB1dGlsc18xLnVuYWxpYXMpKHV0aWxzXzEuZGVmYXVsdFJlZmVyZW5jZXMsIGAke3ZvY0FsaWFzfS4ke3ZvY1Rlcm19YCk7XG4gICAgICAgICAgICBjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0ucXVhbGlmaWVyID0gYW5ub3RhdGlvbi5xdWFsaWZpZXI7XG4gICAgICAgICAgICBjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0uX19zb3VyY2UgPSBjdXJyZW50Q29udGV4dC5jdXJyZW50U291cmNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFubm90YXRpb25UYXJnZXQgPSBgJHtjdXJyZW50VGFyZ2V0TmFtZX1AJHsoMCwgdXRpbHNfMS51bmFsaWFzKSh1dGlsc18xLmRlZmF1bHRSZWZlcmVuY2VzLCB2b2NBbGlhcyArICcuJyArIHZvY1Rlcm1XaXRoUXVhbGlmaWVyKX1gO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhbm5vdGF0aW9uLmFubm90YXRpb25zKSkge1xuICAgICAgICAgICAgY29uc3Qgc3ViQW5ub3RhdGlvbkxpc3QgPSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0OiBhbm5vdGF0aW9uVGFyZ2V0LFxuICAgICAgICAgICAgICAgIGFubm90YXRpb25zOiBhbm5vdGF0aW9uLmFubm90YXRpb25zLFxuICAgICAgICAgICAgICAgIF9fc291cmNlOiBjdXJyZW50Q29udGV4dC5jdXJyZW50U291cmNlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY3VycmVudENvbnRleHQuYWRkaXRpb25hbEFubm90YXRpb25zLnB1c2goc3ViQW5ub3RhdGlvbkxpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFubm90YXRpb24uYW5ub3RhdGlvbnMgJiYgIWN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXS5hbm5vdGF0aW9ucykge1xuICAgICAgICAgICAgY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdLmFubm90YXRpb25zID0gYW5ub3RhdGlvbi5hbm5vdGF0aW9ucztcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zLl9hbm5vdGF0aW9uc1tgJHt2b2NBbGlhc30uJHt2b2NUZXJtV2l0aFF1YWxpZmllcn1gXSA9XG4gICAgICAgICAgICBjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl07XG4gICAgICAgIG9iamVjdE1hcFthbm5vdGF0aW9uVGFyZ2V0XSA9IGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXTtcbiAgICB9KTtcbn1cbi8qKlxuICogUHJvY2VzcyBhbGwgdGhlIHVucmVzb2x2ZWQgdGFyZ2V0cyBzbyBmYXIgdG8gdHJ5IGFuZCBzZWUgaWYgdGhleSBhcmUgcmVzb2x2ZWFibGUgaW4gdGhlIGVuZC5cbiAqXG4gKiBAcGFyYW0gdW5yZXNvbHZlZFRhcmdldHNcbiAqIEBwYXJhbSBvYmplY3RNYXBcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc1VucmVzb2x2ZWRUYXJnZXRzKHVucmVzb2x2ZWRUYXJnZXRzLCBvYmplY3RNYXApIHtcbiAgICB1bnJlc29sdmVkVGFyZ2V0cy5mb3JFYWNoKChyZXNvbHZhYmxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldFRvUmVzb2x2ZSA9IHJlc29sdmFibGUudG9SZXNvbHZlO1xuICAgICAgICBjb25zdCB0YXJnZXRTdHIgPSB0YXJnZXRUb1Jlc29sdmUuJHRhcmdldDtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRUYXJnZXQgPSBvYmplY3RNYXBbdGFyZ2V0U3RyXTtcbiAgICAgICAgY29uc3QgeyBhbm5vdGF0aW9uc1Rlcm0sIGFubm90YXRpb25UeXBlIH0gPSB0YXJnZXRUb1Jlc29sdmU7XG4gICAgICAgIGRlbGV0ZSB0YXJnZXRUb1Jlc29sdmUuYW5ub3RhdGlvblR5cGU7XG4gICAgICAgIGRlbGV0ZSB0YXJnZXRUb1Jlc29sdmUuYW5ub3RhdGlvbnNUZXJtO1xuICAgICAgICBpZiAocmVzb2x2YWJsZS5pbmxpbmUgJiYgIShyZXNvbHZlZFRhcmdldCBpbnN0YW5jZW9mIFN0cmluZykpIHtcbiAgICAgICAgICAgIC8vIGlubGluZSB0aGUgcmVzb2x2ZWQgdGFyZ2V0XG4gICAgICAgICAgICBsZXQga2V5cztcbiAgICAgICAgICAgIGZvciAoa2V5cyBpbiB0YXJnZXRUb1Jlc29sdmUpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGFyZ2V0VG9SZXNvbHZlW2tleXNdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0YXJnZXRUb1Jlc29sdmUsIHJlc29sdmVkVGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGFzc2lnbiB0aGUgcmVzb2x2ZWQgdGFyZ2V0XG4gICAgICAgICAgICB0YXJnZXRUb1Jlc29sdmUuJHRhcmdldCA9IHJlc29sdmVkVGFyZ2V0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmVzb2x2ZWRUYXJnZXQpIHtcbiAgICAgICAgICAgIHRhcmdldFRvUmVzb2x2ZS50YXJnZXRTdHJpbmcgPSB0YXJnZXRTdHI7XG4gICAgICAgICAgICBpZiAoYW5ub3RhdGlvbnNUZXJtICYmIGFubm90YXRpb25UeXBlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb0Vycm9yTXNnID0ge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnVW5hYmxlIHRvIHJlc29sdmUgdGhlIHBhdGggZXhwcmVzc2lvbjogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdHIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ0hpbnQ6IENoZWNrIGFuZCBjb3JyZWN0IHRoZSBwYXRoIHZhbHVlcyB1bmRlciB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZSBpbiB0aGUgbWV0YWRhdGEgKGFubm90YXRpb24ueG1sIGZpbGUgb3IgQ0RTIGFubm90YXRpb25zIGZvciB0aGUgYXBwbGljYXRpb24pOiBcXG5cXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICc8QW5ub3RhdGlvbiBUZXJtID0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uc1Rlcm0gK1xuICAgICAgICAgICAgICAgICAgICAgICAgJz4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICc8UmVjb3JkIFR5cGUgPSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb25UeXBlICtcbiAgICAgICAgICAgICAgICAgICAgICAgICc+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnPEFubm90YXRpb25QYXRoID0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdHIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJz4nXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBhZGRBbm5vdGF0aW9uRXJyb3JNZXNzYWdlKHRhcmdldFN0ciwgb0Vycm9yTXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGFyZ2V0VG9SZXNvbHZlLnRlcm07XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IHRhcmdldFRvUmVzb2x2ZS5wYXRoO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRlcm1JbmZvID0gdGFyZ2V0U3RyID8gdGFyZ2V0U3RyLnNwbGl0KCcvJylbMF0gOiB0YXJnZXRTdHI7XG4gICAgICAgICAgICAgICAgY29uc3Qgb0Vycm9yTXNnID0ge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnVW5hYmxlIHRvIHJlc29sdmUgdGhlIHBhdGggZXhwcmVzc2lvbjogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdHIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ0hpbnQ6IENoZWNrIGFuZCBjb3JyZWN0IHRoZSBwYXRoIHZhbHVlcyB1bmRlciB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZSBpbiB0aGUgbWV0YWRhdGEgKGFubm90YXRpb24ueG1sIGZpbGUgb3IgQ0RTIGFubm90YXRpb25zIGZvciB0aGUgYXBwbGljYXRpb24pOiBcXG5cXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICc8QW5ub3RhdGlvbiBUZXJtID0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXJtSW5mbyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzxQcm9wZXJ0eVZhbHVlIFByb3BlcnR5ID0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBQYXRoPSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggK1xuICAgICAgICAgICAgICAgICAgICAgICAgJz4nXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBhZGRBbm5vdGF0aW9uRXJyb3JNZXNzYWdlKHRhcmdldFN0ciwgb0Vycm9yTXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuLyoqXG4gKiBNZXJnZSBhbm5vdGF0aW9uIGZyb20gZGlmZmVyZW50IHNvdXJjZSB0b2dldGhlciBieSBvdmVyd3JpdGluZyBhdCB0aGUgdGVybSBsZXZlbC5cbiAqXG4gKiBAcGFyYW0gcmF3TWV0YWRhdGFcbiAqIEByZXR1cm5zIHRoZSByZXN1bHRpbmcgbWVyZ2VkIGFubm90YXRpb25zXG4gKi9cbmZ1bmN0aW9uIG1lcmdlQW5ub3RhdGlvbnMocmF3TWV0YWRhdGEpIHtcbiAgICBjb25zdCBhbm5vdGF0aW9uTGlzdFBlclRhcmdldCA9IHt9O1xuICAgIE9iamVjdC5rZXlzKHJhd01ldGFkYXRhLnNjaGVtYS5hbm5vdGF0aW9ucykuZm9yRWFjaCgoYW5ub3RhdGlvblNvdXJjZSkgPT4ge1xuICAgICAgICByYXdNZXRhZGF0YS5zY2hlbWEuYW5ub3RhdGlvbnNbYW5ub3RhdGlvblNvdXJjZV0uZm9yRWFjaCgoYW5ub3RhdGlvbkxpc3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUYXJnZXROYW1lID0gKDAsIHV0aWxzXzEudW5hbGlhcykocmF3TWV0YWRhdGEucmVmZXJlbmNlcywgYW5ub3RhdGlvbkxpc3QudGFyZ2V0KTtcbiAgICAgICAgICAgIGFubm90YXRpb25MaXN0Ll9fc291cmNlID0gYW5ub3RhdGlvblNvdXJjZTtcbiAgICAgICAgICAgIGlmICghYW5ub3RhdGlvbkxpc3RQZXJUYXJnZXRbY3VycmVudFRhcmdldE5hbWVdKSB7XG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvbkxpc3RQZXJUYXJnZXRbY3VycmVudFRhcmdldE5hbWVdID0ge1xuICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uczogYW5ub3RhdGlvbkxpc3QuYW5ub3RhdGlvbnMuY29uY2F0KCksXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogY3VycmVudFRhcmdldE5hbWVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGFubm90YXRpb25MaXN0UGVyVGFyZ2V0W2N1cnJlbnRUYXJnZXROYW1lXS5fX3NvdXJjZSA9IGFubm90YXRpb25Tb3VyY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uTGlzdC5hbm5vdGF0aW9ucy5mb3JFYWNoKChhbm5vdGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmRJbmRleCA9IGFubm90YXRpb25MaXN0UGVyVGFyZ2V0W2N1cnJlbnRUYXJnZXROYW1lXS5hbm5vdGF0aW9ucy5maW5kSW5kZXgoKHJlZmVyZW5jZUFubm90YXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAocmVmZXJlbmNlQW5ub3RhdGlvbi50ZXJtID09PSBhbm5vdGF0aW9uLnRlcm0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VBbm5vdGF0aW9uLnF1YWxpZmllciA9PT0gYW5ub3RhdGlvbi5xdWFsaWZpZXIpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbi5fX3NvdXJjZSA9IGFubm90YXRpb25Tb3VyY2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaW5kSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uTGlzdFBlclRhcmdldFtjdXJyZW50VGFyZ2V0TmFtZV0uYW5ub3RhdGlvbnMuc3BsaWNlKGZpbmRJbmRleCwgMSwgYW5ub3RhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uTGlzdFBlclRhcmdldFtjdXJyZW50VGFyZ2V0TmFtZV0uYW5ub3RhdGlvbnMucHVzaChhbm5vdGF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gYW5ub3RhdGlvbkxpc3RQZXJUYXJnZXQ7XG59XG4vKipcbiAqIENvbnZlcnQgYSBSYXdNZXRhZGF0YSBpbnRvIGFuIG9iamVjdCByZXByZXNlbnRhdGlvbiB0byBiZSB1c2VkIHRvIGVhc2lseSBuYXZpZ2F0ZSBhIG1ldGFkYXRhIG9iamVjdCBhbmQgaXRzIGFubm90YXRpb24uXG4gKlxuICogQHBhcmFtIHJhd01ldGFkYXRhXG4gKiBAcmV0dXJucyB0aGUgY29udmVydGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXRhZGF0YS5cbiAqL1xuZnVuY3Rpb24gY29udmVydChyYXdNZXRhZGF0YSkge1xuICAgIEFOTk9UQVRJT05fRVJST1JTID0gW107XG4gICAgY29uc3Qgb2JqZWN0TWFwID0gYnVpbGRPYmplY3RNYXAocmF3TWV0YWRhdGEpO1xuICAgIHJlc29sdmVOYXZpZ2F0aW9uUHJvcGVydGllcyhyYXdNZXRhZGF0YS5zY2hlbWEuZW50aXR5VHlwZXMsIHJhd01ldGFkYXRhLnNjaGVtYS5hc3NvY2lhdGlvbnMsIG9iamVjdE1hcCk7XG4gICAgcmF3TWV0YWRhdGEuc2NoZW1hLmVudGl0eUNvbnRhaW5lci5hbm5vdGF0aW9ucyA9IHt9O1xuICAgIGxpbmtBY3Rpb25zVG9FbnRpdHlUeXBlKHJhd01ldGFkYXRhLnNjaGVtYS5uYW1lc3BhY2UsIHJhd01ldGFkYXRhLnNjaGVtYS5hY3Rpb25zLCBvYmplY3RNYXApO1xuICAgIGxpbmtFbnRpdHlUeXBlVG9FbnRpdHlTZXQocmF3TWV0YWRhdGEuc2NoZW1hLmVudGl0eVNldHMsIG9iamVjdE1hcCwgcmF3TWV0YWRhdGEucmVmZXJlbmNlcyk7XG4gICAgbGlua0VudGl0eVR5cGVUb1NpbmdsZXRvbihyYXdNZXRhZGF0YS5zY2hlbWEuc2luZ2xldG9ucywgb2JqZWN0TWFwLCByYXdNZXRhZGF0YS5yZWZlcmVuY2VzKTtcbiAgICBsaW5rUHJvcGVydGllc1RvQ29tcGxleFR5cGVzKHJhd01ldGFkYXRhLnNjaGVtYS5lbnRpdHlUeXBlcywgb2JqZWN0TWFwKTtcbiAgICBwcmVwYXJlQ29tcGxleFR5cGVzKHJhd01ldGFkYXRhLnNjaGVtYS5jb21wbGV4VHlwZXMsIHJhd01ldGFkYXRhLnNjaGVtYS5hc3NvY2lhdGlvbnMsIG9iamVjdE1hcCk7XG4gICAgY29uc3QgdW5yZXNvbHZlZFRhcmdldHMgPSBbXTtcbiAgICBjb25zdCB1bnJlc29sdmVkQW5ub3RhdGlvbnMgPSBbXTtcbiAgICBjb25zdCBhbm5vdGF0aW9uTGlzdFBlclRhcmdldCA9IG1lcmdlQW5ub3RhdGlvbnMocmF3TWV0YWRhdGEpO1xuICAgIE9iamVjdC5rZXlzKGFubm90YXRpb25MaXN0UGVyVGFyZ2V0KS5mb3JFYWNoKChjdXJyZW50VGFyZ2V0TmFtZSkgPT4ge1xuICAgICAgICBjb25zdCBhbm5vdGF0aW9uTGlzdCA9IGFubm90YXRpb25MaXN0UGVyVGFyZ2V0W2N1cnJlbnRUYXJnZXROYW1lXTtcbiAgICAgICAgY29uc3Qgb2JqZWN0TWFwRWxlbWVudCA9IG9iamVjdE1hcFtjdXJyZW50VGFyZ2V0TmFtZV07XG4gICAgICAgIGlmICghb2JqZWN0TWFwRWxlbWVudCAmJiAoY3VycmVudFRhcmdldE5hbWUgPT09IG51bGwgfHwgY3VycmVudFRhcmdldE5hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN1cnJlbnRUYXJnZXROYW1lLmluZGV4T2YoJ0AnKSkgPiAwKSB7XG4gICAgICAgICAgICB1bnJlc29sdmVkQW5ub3RhdGlvbnMucHVzaChhbm5vdGF0aW9uTGlzdCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAob2JqZWN0TWFwRWxlbWVudCkge1xuICAgICAgICAgICAgbGV0IGFsbFRhcmdldHMgPSBbb2JqZWN0TWFwRWxlbWVudF07XG4gICAgICAgICAgICBsZXQgYk92ZXJyaWRlRXhpc3RpbmcgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKG9iamVjdE1hcEVsZW1lbnQuX3R5cGUgPT09ICdVbmJvdW5kR2VuZXJpY0FjdGlvbicpIHtcbiAgICAgICAgICAgICAgICBhbGxUYXJnZXRzID0gb2JqZWN0TWFwRWxlbWVudC5hY3Rpb25zO1xuICAgICAgICAgICAgICAgIGJPdmVycmlkZUV4aXN0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhbGxUYXJnZXRzLmZvckVhY2goKGN1cnJlbnRUYXJnZXQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEFubm90YXRpb25zOiB1bnJlc29sdmVkQW5ub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTb3VyY2U6IGFubm90YXRpb25MaXN0Ll9fc291cmNlLFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50VGFyZ2V0OiBjdXJyZW50VGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50VGVybTogJycsXG4gICAgICAgICAgICAgICAgICAgIHJhd01ldGFkYXRhOiByYXdNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgdW5yZXNvbHZlZEFubm90YXRpb25zOiB1bnJlc29sdmVkVGFyZ2V0c1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0Fubm90YXRpb25zKGN1cnJlbnRDb250ZXh0LCBhbm5vdGF0aW9uTGlzdCwgb2JqZWN0TWFwLCBiT3ZlcnJpZGVFeGlzdGluZyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGV4dHJhVW5yZXNvbHZlZEFubm90YXRpb25zID0gW107XG4gICAgdW5yZXNvbHZlZEFubm90YXRpb25zLmZvckVhY2goKGFubm90YXRpb25MaXN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUYXJnZXROYW1lID0gKDAsIHV0aWxzXzEudW5hbGlhcykocmF3TWV0YWRhdGEucmVmZXJlbmNlcywgYW5ub3RhdGlvbkxpc3QudGFyZ2V0KTtcbiAgICAgICAgbGV0IFtiYXNlT2JqLCBhbm5vdGF0aW9uUGFydF0gPSBjdXJyZW50VGFyZ2V0TmFtZS5zcGxpdCgnQCcpO1xuICAgICAgICBjb25zdCB0YXJnZXRTcGxpdCA9IGFubm90YXRpb25QYXJ0LnNwbGl0KCcvJyk7XG4gICAgICAgIGJhc2VPYmogPSBiYXNlT2JqICsgJ0AnICsgdGFyZ2V0U3BsaXRbMF07XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSB0YXJnZXRTcGxpdC5zbGljZSgxKS5yZWR1Y2UoKGN1cnJlbnRPYmosIHBhdGgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50T2JqID09PSBudWxsIHx8IGN1cnJlbnRPYmogPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN1cnJlbnRPYmpbcGF0aF07XG4gICAgICAgIH0sIG9iamVjdE1hcFtiYXNlT2JqXSk7XG4gICAgICAgIGlmICghY3VycmVudFRhcmdldCB8fCB0eXBlb2YgY3VycmVudFRhcmdldCAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIEFOTk9UQVRJT05fRVJST1JTLnB1c2goe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdUaGUgZm9sbG93aW5nIGFubm90YXRpb24gdGFyZ2V0IHdhcyBub3QgZm91bmQgb24gdGhlIHNlcnZpY2UgJyArIGN1cnJlbnRUYXJnZXROYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxBbm5vdGF0aW9uczogZXh0cmFVbnJlc29sdmVkQW5ub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgY3VycmVudFNvdXJjZTogYW5ub3RhdGlvbkxpc3QuX19zb3VyY2UsXG4gICAgICAgICAgICAgICAgY3VycmVudFRhcmdldDogY3VycmVudFRhcmdldCxcbiAgICAgICAgICAgICAgICBjdXJyZW50VGVybTogJycsXG4gICAgICAgICAgICAgICAgcmF3TWV0YWRhdGE6IHJhd01ldGFkYXRhLFxuICAgICAgICAgICAgICAgIHVucmVzb2x2ZWRBbm5vdGF0aW9uczogdW5yZXNvbHZlZFRhcmdldHNcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBwcm9jZXNzQW5ub3RhdGlvbnMoY3VycmVudENvbnRleHQsIGFubm90YXRpb25MaXN0LCBvYmplY3RNYXAsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHByb2Nlc3NVbnJlc29sdmVkVGFyZ2V0cyh1bnJlc29sdmVkVGFyZ2V0cywgb2JqZWN0TWFwKTtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIEFMTF9BTk5PVEFUSU9OX0VSUk9SUykge1xuICAgICAgICBBTk5PVEFUSU9OX0VSUk9SUy5wdXNoKEFMTF9BTk5PVEFUSU9OX0VSUk9SU1twcm9wZXJ0eV1bMF0pO1xuICAgIH1cbiAgICByYXdNZXRhZGF0YS5lbnRpdHlTZXRzID0gcmF3TWV0YWRhdGEuc2NoZW1hLmVudGl0eVNldHM7XG4gICAgY29uc3QgZXh0cmFSZWZlcmVuY2VzID0gcmF3TWV0YWRhdGEucmVmZXJlbmNlcy5maWx0ZXIoKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICByZXR1cm4gdXRpbHNfMS5kZWZhdWx0UmVmZXJlbmNlcy5maW5kKChkZWZhdWx0UmVmKSA9PiBkZWZhdWx0UmVmLm5hbWVzcGFjZSA9PT0gcmVmZXJlbmNlLm5hbWVzcGFjZSkgPT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBjb25zdCBjb252ZXJ0ZWRPdXRwdXQgPSB7XG4gICAgICAgIHZlcnNpb246IHJhd01ldGFkYXRhLnZlcnNpb24sXG4gICAgICAgIGFubm90YXRpb25zOiByYXdNZXRhZGF0YS5zY2hlbWEuYW5ub3RhdGlvbnMsXG4gICAgICAgIG5hbWVzcGFjZTogcmF3TWV0YWRhdGEuc2NoZW1hLm5hbWVzcGFjZSxcbiAgICAgICAgZW50aXR5Q29udGFpbmVyOiByYXdNZXRhZGF0YS5zY2hlbWEuZW50aXR5Q29udGFpbmVyLFxuICAgICAgICBhY3Rpb25zOiByYXdNZXRhZGF0YS5zY2hlbWEuYWN0aW9ucyxcbiAgICAgICAgZW50aXR5U2V0czogcmF3TWV0YWRhdGEuc2NoZW1hLmVudGl0eVNldHMsXG4gICAgICAgIHNpbmdsZXRvbnM6IHJhd01ldGFkYXRhLnNjaGVtYS5zaW5nbGV0b25zLFxuICAgICAgICBlbnRpdHlUeXBlczogcmF3TWV0YWRhdGEuc2NoZW1hLmVudGl0eVR5cGVzLFxuICAgICAgICBjb21wbGV4VHlwZXM6IHJhd01ldGFkYXRhLnNjaGVtYS5jb21wbGV4VHlwZXMsXG4gICAgICAgIHR5cGVEZWZpbml0aW9uczogcmF3TWV0YWRhdGEuc2NoZW1hLnR5cGVEZWZpbml0aW9ucyxcbiAgICAgICAgcmVmZXJlbmNlczogdXRpbHNfMS5kZWZhdWx0UmVmZXJlbmNlcy5jb25jYXQoZXh0cmFSZWZlcmVuY2VzKSxcbiAgICAgICAgZGlhZ25vc3RpY3M6IEFOTk9UQVRJT05fRVJST1JTLmNvbmNhdCgpXG4gICAgfTtcbiAgICBjb252ZXJ0ZWRPdXRwdXQucmVzb2x2ZVBhdGggPSBjcmVhdGVHbG9iYWxSZXNvbHZlKGNvbnZlcnRlZE91dHB1dCwgb2JqZWN0TWFwKTtcbiAgICByZXR1cm4gY29udmVydGVkT3V0cHV0O1xufVxuZXhwb3J0cy5jb252ZXJ0ID0gY29udmVydDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnZlcnRlci5qcy5tYXBcblxuLyoqKi8gfSksXG5cbi8qKiovIDc1OTpcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX21vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cbnZhciBfX2NyZWF0ZUJpbmRpbmcgPSAodGhpcyAmJiB0aGlzLl9fY3JlYXRlQmluZGluZykgfHwgKE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcbiAgICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xuICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICBvW2syXSA9IG1ba107XG59KSk7XG52YXIgX19leHBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2V4cG9ydFN0YXIpIHx8IGZ1bmN0aW9uKG0sIGV4cG9ydHMpIHtcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGV4cG9ydHMsIHApKSBfX2NyZWF0ZUJpbmRpbmcoZXhwb3J0cywgbSwgcCk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCAoeyB2YWx1ZTogdHJ1ZSB9KSk7XG5fX2V4cG9ydFN0YXIoX193ZWJwYWNrX3JlcXVpcmVfXyg4NzUpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihfX3dlYnBhY2tfcmVxdWlyZV9fKDQyNiksIGV4cG9ydHMpO1xuX19leHBvcnRTdGFyKF9fd2VicGFja19yZXF1aXJlX18oNjkpLCBleHBvcnRzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcFxuXG4vKioqLyB9KSxcblxuLyoqKi8gNjk6XG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19tb2R1bGUsIGV4cG9ydHMpIHtcblxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsICh7IHZhbHVlOiB0cnVlIH0pKTtcbmV4cG9ydHMuRGVjaW1hbCA9IGV4cG9ydHMuaXNDb21wbGV4VHlwZURlZmluaXRpb24gPSBleHBvcnRzLlRlcm1Ub1R5cGVzID0gZXhwb3J0cy51bmFsaWFzID0gZXhwb3J0cy5hbGlhcyA9IGV4cG9ydHMuZGVmYXVsdFJlZmVyZW5jZXMgPSB2b2lkIDA7XG5leHBvcnRzLmRlZmF1bHRSZWZlcmVuY2VzID0gW1xuICAgIHsgYWxpYXM6ICdDYXBhYmlsaXRpZXMnLCBuYW1lc3BhY2U6ICdPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxJywgdXJpOiAnJyB9LFxuICAgIHsgYWxpYXM6ICdBZ2dyZWdhdGlvbicsIG5hbWVzcGFjZTogJ09yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMScsIHVyaTogJycgfSxcbiAgICB7IGFsaWFzOiAnVmFsaWRhdGlvbicsIG5hbWVzcGFjZTogJ09yZy5PRGF0YS5WYWxpZGF0aW9uLlYxJywgdXJpOiAnJyB9LFxuICAgIHsgbmFtZXNwYWNlOiAnT3JnLk9EYXRhLkNvcmUuVjEnLCBhbGlhczogJ0NvcmUnLCB1cmk6ICcnIH0sXG4gICAgeyBuYW1lc3BhY2U6ICdPcmcuT0RhdGEuTWVhc3VyZXMuVjEnLCBhbGlhczogJ01lYXN1cmVzJywgdXJpOiAnJyB9LFxuICAgIHsgbmFtZXNwYWNlOiAnY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxJywgYWxpYXM6ICdDb21tb24nLCB1cmk6ICcnIH0sXG4gICAgeyBuYW1lc3BhY2U6ICdjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MScsIGFsaWFzOiAnVUknLCB1cmk6ICcnIH0sXG4gICAgeyBuYW1lc3BhY2U6ICdjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxJywgYWxpYXM6ICdTZXNzaW9uJywgdXJpOiAnJyB9LFxuICAgIHsgbmFtZXNwYWNlOiAnY29tLnNhcC52b2NhYnVsYXJpZXMuQW5hbHl0aWNzLnYxJywgYWxpYXM6ICdBbmFseXRpY3MnLCB1cmk6ICcnIH0sXG4gICAgeyBuYW1lc3BhY2U6ICdjb20uc2FwLnZvY2FidWxhcmllcy5Db2RlTGlzdC52MScsIGFsaWFzOiAnQ29kZUxpc3QnLCB1cmk6ICcnIH0sXG4gICAgeyBuYW1lc3BhY2U6ICdjb20uc2FwLnZvY2FidWxhcmllcy5QZXJzb25hbERhdGEudjEnLCBhbGlhczogJ1BlcnNvbmFsRGF0YScsIHVyaTogJycgfSxcbiAgICB7IG5hbWVzcGFjZTogJ2NvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEnLCBhbGlhczogJ0NvbW11bmljYXRpb24nLCB1cmk6ICcnIH0sXG4gICAgeyBuYW1lc3BhY2U6ICdjb20uc2FwLnZvY2FidWxhcmllcy5IVE1MNS52MScsIGFsaWFzOiAnSFRNTDUnLCB1cmk6ICcnIH1cbl07XG4vKipcbiAqIFRyYW5zZm9ybSBhbiB1bmFsaWFzZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGFubm90YXRpb24gdG8gdGhlIGFsaWFzZWQgdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlcyBjdXJyZW50UmVmZXJlbmNlcyBmb3IgdGhlIHByb2plY3RcbiAqIEBwYXJhbSB1bmFsaWFzZWRWYWx1ZSB0aGUgdW5hbGlhc2VkIHZhbHVlXG4gKiBAcmV0dXJucyB0aGUgYWxpYXNlZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBzYW1lXG4gKi9cbmZ1bmN0aW9uIGFsaWFzKHJlZmVyZW5jZXMsIHVuYWxpYXNlZFZhbHVlKSB7XG4gICAgaWYgKCFyZWZlcmVuY2VzLnJldmVyc2VSZWZlcmVuY2VNYXApIHtcbiAgICAgICAgcmVmZXJlbmNlcy5yZXZlcnNlUmVmZXJlbmNlTWFwID0gcmVmZXJlbmNlcy5yZWR1Y2UoKG1hcCwgcmVmKSA9PiB7XG4gICAgICAgICAgICBtYXBbcmVmLm5hbWVzcGFjZV0gPSByZWY7XG4gICAgICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgICB9LCB7fSk7XG4gICAgfVxuICAgIGlmICghdW5hbGlhc2VkVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHVuYWxpYXNlZFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBsYXN0RG90SW5kZXggPSB1bmFsaWFzZWRWYWx1ZS5sYXN0SW5kZXhPZignLicpO1xuICAgIGNvbnN0IG5hbWVzcGFjZSA9IHVuYWxpYXNlZFZhbHVlLnN1YnN0cmluZygwLCBsYXN0RG90SW5kZXgpO1xuICAgIGNvbnN0IHZhbHVlID0gdW5hbGlhc2VkVmFsdWUuc3Vic3RyaW5nKGxhc3REb3RJbmRleCArIDEpO1xuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHJlZmVyZW5jZXMucmV2ZXJzZVJlZmVyZW5jZU1hcFtuYW1lc3BhY2VdO1xuICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgICAgcmV0dXJuIGAke3JlZmVyZW5jZS5hbGlhc30uJHt2YWx1ZX1gO1xuICAgIH1cbiAgICBlbHNlIGlmICh1bmFsaWFzZWRWYWx1ZS5pbmRleE9mKCdAJykgIT09IC0xKSB7XG4gICAgICAgIC8vIFRyeSB0byBzZWUgaWYgaXQncyBhbiBhbm5vdGF0aW9uIFBhdGggbGlrZSB0b19TYWxlc09yZGVyL0BVSS5MaW5lSXRlbVxuICAgICAgICBjb25zdCBbcHJlQWxpYXMsIC4uLnBvc3RBbGlhc10gPSB1bmFsaWFzZWRWYWx1ZS5zcGxpdCgnQCcpO1xuICAgICAgICByZXR1cm4gYCR7cHJlQWxpYXN9QCR7YWxpYXMocmVmZXJlbmNlcywgcG9zdEFsaWFzLmpvaW4oJ0AnKSl9YDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiB1bmFsaWFzZWRWYWx1ZTtcbiAgICB9XG59XG5leHBvcnRzLmFsaWFzID0gYWxpYXM7XG4vKipcbiAqIFRyYW5zZm9ybSBhbiBhbGlhc2VkIHN0cmluZyByZXByZXNlbnRhdGlvbiBhbm5vdGF0aW9uIHRvIHRoZSB1bmFsaWFzZWQgdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlcyBjdXJyZW50UmVmZXJlbmNlcyBmb3IgdGhlIHByb2plY3RcbiAqIEBwYXJhbSBhbGlhc2VkVmFsdWUgdGhlIGFsaWFzZWQgdmFsdWVcbiAqIEByZXR1cm5zIHRoZSB1bmFsaWFzZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgc2FtZVxuICovXG5mdW5jdGlvbiB1bmFsaWFzKHJlZmVyZW5jZXMsIGFsaWFzZWRWYWx1ZSkge1xuICAgIGlmICghcmVmZXJlbmNlcy5yZWZlcmVuY2VNYXApIHtcbiAgICAgICAgcmVmZXJlbmNlcy5yZWZlcmVuY2VNYXAgPSByZWZlcmVuY2VzLnJlZHVjZSgobWFwLCByZWYpID0+IHtcbiAgICAgICAgICAgIG1hcFtyZWYuYWxpYXNdID0gcmVmO1xuICAgICAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgICAgfSwge30pO1xuICAgIH1cbiAgICBpZiAoIWFsaWFzZWRWYWx1ZSkge1xuICAgICAgICByZXR1cm4gYWxpYXNlZFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBbdm9jQWxpYXMsIC4uLnZhbHVlXSA9IGFsaWFzZWRWYWx1ZS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHJlZmVyZW5jZXMucmVmZXJlbmNlTWFwW3ZvY0FsaWFzXTtcbiAgICBpZiAocmVmZXJlbmNlKSB7XG4gICAgICAgIHJldHVybiBgJHtyZWZlcmVuY2UubmFtZXNwYWNlfS4ke3ZhbHVlLmpvaW4oJy4nKX1gO1xuICAgIH1cbiAgICBlbHNlIGlmIChhbGlhc2VkVmFsdWUuaW5kZXhPZignQCcpICE9PSAtMSkge1xuICAgICAgICAvLyBUcnkgdG8gc2VlIGlmIGl0J3MgYW4gYW5ub3RhdGlvbiBQYXRoIGxpa2UgdG9fU2FsZXNPcmRlci9AVUkuTGluZUl0ZW1cbiAgICAgICAgY29uc3QgW3ByZUFsaWFzLCAuLi5wb3N0QWxpYXNdID0gYWxpYXNlZFZhbHVlLnNwbGl0KCdAJyk7XG4gICAgICAgIHJldHVybiBgJHtwcmVBbGlhc31AJHt1bmFsaWFzKHJlZmVyZW5jZXMsIHBvc3RBbGlhcy5qb2luKCdAJykpfWA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gYWxpYXNlZFZhbHVlO1xuICAgIH1cbn1cbmV4cG9ydHMudW5hbGlhcyA9IHVuYWxpYXM7XG52YXIgVGVybVRvVHlwZXM7XG4oZnVuY3Rpb24gKFRlcm1Ub1R5cGVzKSB7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQXV0aG9yaXphdGlvbi5WMS5TZWN1cml0eVNjaGVtZXNcIl0gPSBcIk9yZy5PRGF0YS5BdXRob3JpemF0aW9uLlYxLlNlY3VyaXR5U2NoZW1lXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQXV0aG9yaXphdGlvbi5WMS5BdXRob3JpemF0aW9uc1wiXSA9IFwiT3JnLk9EYXRhLkF1dGhvcml6YXRpb24uVjEuQXV0aG9yaXphdGlvblwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuUmV2aXNpb25zXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5SZXZpc2lvblR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5Db3JlLlYxLkxpbmtzXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5MaW5rXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ29yZS5WMS5FeGFtcGxlXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5FeGFtcGxlVmFsdWVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5Db3JlLlYxLk1lc3NhZ2VzXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5NZXNzYWdlVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuVmFsdWVFeGNlcHRpb25cIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlZhbHVlRXhjZXB0aW9uVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuUmVzb3VyY2VFeGNlcHRpb25cIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlJlc291cmNlRXhjZXB0aW9uVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuRGF0YU1vZGlmaWNhdGlvbkV4Y2VwdGlvblwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuRGF0YU1vZGlmaWNhdGlvbkV4Y2VwdGlvblR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5Db3JlLlYxLklzTGFuZ3VhZ2VEZXBlbmRlbnRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuRGVyZWZlcmVuY2VhYmxlSURzXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5Db3JlLlYxLkNvbnZlbnRpb25hbElEc1wiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ29yZS5WMS5QZXJtaXNzaW9uc1wiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuUGVybWlzc2lvblwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuRGVmYXVsdE5hbWVzcGFjZVwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ29yZS5WMS5JbW11dGFibGVcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuQ29tcHV0ZWRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuQ29tcHV0ZWREZWZhdWx0VmFsdWVcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuSXNVUkxcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuSXNNZWRpYVR5cGVcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuQ29udGVudERpc3Bvc2l0aW9uXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5Db250ZW50RGlzcG9zaXRpb25UeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ29yZS5WMS5PcHRpbWlzdGljQ29uY3VycmVuY3lcIl0gPSBcIkVkbS5Qcm9wZXJ0eVBhdGhcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5Db3JlLlYxLkFkZGl0aW9uYWxQcm9wZXJ0aWVzXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5Db3JlLlYxLkF1dG9FeHBhbmRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuQXV0b0V4cGFuZFJlZmVyZW5jZXNcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuTWF5SW1wbGVtZW50XCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5RdWFsaWZpZWRUeXBlTmFtZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuT3JkZXJlZFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ29yZS5WMS5Qb3NpdGlvbmFsSW5zZXJ0XCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5Db3JlLlYxLkFsdGVybmF0ZUtleXNcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLkFsdGVybmF0ZUtleVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuT3B0aW9uYWxQYXJhbWV0ZXJcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLk9wdGlvbmFsUGFyYW1ldGVyVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuT3BlcmF0aW9uQXZhaWxhYmxlXCJdID0gXCJFZG0uQm9vbGVhblwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuU3ltYm9saWNOYW1lXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5TaW1wbGVJZGVudGlmaWVyXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNvbmZvcm1hbmNlTGV2ZWxcIl0gPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ29uZm9ybWFuY2VMZXZlbFR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQXN5bmNocm9ub3VzUmVxdWVzdHNTdXBwb3J0ZWRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5CYXRjaENvbnRpbnVlT25FcnJvclN1cHBvcnRlZFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLklzb2xhdGlvblN1cHBvcnRlZFwiXSA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Jc29sYXRpb25MZXZlbFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Dcm9zc0pvaW5TdXBwb3J0ZWRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5DYWxsYmFja1N1cHBvcnRlZFwiXSA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5DYWxsYmFja1R5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ2hhbmdlVHJhY2tpbmdcIl0gPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ2hhbmdlVHJhY2tpbmdUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNvdW50UmVzdHJpY3Rpb25zXCJdID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNvdW50UmVzdHJpY3Rpb25zVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5OYXZpZ2F0aW9uUmVzdHJpY3Rpb25zXCJdID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLk5hdmlnYXRpb25SZXN0cmljdGlvbnNUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkluZGV4YWJsZUJ5S2V5XCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuVG9wU3VwcG9ydGVkXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuU2tpcFN1cHBvcnRlZFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNvbXB1dGVTdXBwb3J0ZWRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5TZWxlY3RTdXBwb3J0XCJdID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlNlbGVjdFN1cHBvcnRUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkJhdGNoU3VwcG9ydGVkXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQmF0Y2hTdXBwb3J0XCJdID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkJhdGNoU3VwcG9ydFR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRmlsdGVyUmVzdHJpY3Rpb25zXCJdID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkZpbHRlclJlc3RyaWN0aW9uc1R5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuU29ydFJlc3RyaWN0aW9uc1wiXSA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Tb3J0UmVzdHJpY3Rpb25zVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5FeHBhbmRSZXN0cmljdGlvbnNcIl0gPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRXhwYW5kUmVzdHJpY3Rpb25zVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5TZWFyY2hSZXN0cmljdGlvbnNcIl0gPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuU2VhcmNoUmVzdHJpY3Rpb25zVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5LZXlBc1NlZ21lbnRTdXBwb3J0ZWRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5RdWVyeVNlZ21lbnRTdXBwb3J0ZWRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5JbnNlcnRSZXN0cmljdGlvbnNcIl0gPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuSW5zZXJ0UmVzdHJpY3Rpb25zVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5EZWVwSW5zZXJ0U3VwcG9ydFwiXSA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5EZWVwSW5zZXJ0U3VwcG9ydFR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuVXBkYXRlUmVzdHJpY3Rpb25zXCJdID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlVwZGF0ZVJlc3RyaWN0aW9uc1R5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRGVlcFVwZGF0ZVN1cHBvcnRcIl0gPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRGVlcFVwZGF0ZVN1cHBvcnRUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkRlbGV0ZVJlc3RyaWN0aW9uc1wiXSA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5EZWxldGVSZXN0cmljdGlvbnNUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNvbGxlY3Rpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uc1wiXSA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Db2xsZWN0aW9uUHJvcGVydHlSZXN0cmljdGlvbnNUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLk9wZXJhdGlvblJlc3RyaWN0aW9uc1wiXSA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5PcGVyYXRpb25SZXN0cmljdGlvbnNUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkFubm90YXRpb25WYWx1ZXNJblF1ZXJ5U3VwcG9ydGVkXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuTW9kaWZpY2F0aW9uUXVlcnlPcHRpb25zXCJdID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLk1vZGlmaWNhdGlvblF1ZXJ5T3B0aW9uc1R5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuUmVhZFJlc3RyaWN0aW9uc1wiXSA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5SZWFkUmVzdHJpY3Rpb25zVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5DdXN0b21IZWFkZXJzXCJdID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkN1c3RvbVBhcmFtZXRlclwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5DdXN0b21RdWVyeU9wdGlvbnNcIl0gPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ3VzdG9tUGFyYW1ldGVyXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLk1lZGlhTG9jYXRpb25VcGRhdGVTdXBwb3J0ZWRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkFwcGx5U3VwcG9ydGVkXCJdID0gXCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQXBwbHlTdXBwb3J0ZWRUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuR3JvdXBhYmxlXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5BZ2dyZWdhdGFibGVcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXNcIl0gPSBcIkVkbS5Qcm9wZXJ0eVBhdGhcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5MZXZlbGVkSGllcmFyY2h5XCJdID0gXCJFZG0uUHJvcGVydHlQYXRoXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuUmVjdXJzaXZlSGllcmFyY2h5XCJdID0gXCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuUmVjdXJzaXZlSGllcmFyY2h5VHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkF2YWlsYWJsZU9uQWdncmVnYXRlc1wiXSA9IFwiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkF2YWlsYWJsZU9uQWdncmVnYXRlc1R5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1pbmltdW1cIl0gPSBcIkVkbS5QcmltaXRpdmVUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5NYXhpbXVtXCJdID0gXCJFZG0uUHJpbWl0aXZlVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuRXhjbHVzaXZlXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLkFsbG93ZWRWYWx1ZXNcIl0gPSBcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLkFsbG93ZWRWYWx1ZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuTXVsdGlwbGVPZlwiXSA9IFwiRWRtLkRlY2ltYWxcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLkNvbnN0cmFpbnRcIl0gPSBcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLkNvbnN0cmFpbnRUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5JdGVtc09mXCJdID0gXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5JdGVtc09mVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuT3BlblByb3BlcnR5VHlwZUNvbnN0cmFpbnRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlF1YWxpZmllZFR5cGVOYW1lXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5EZXJpdmVkVHlwZUNvbnN0cmFpbnRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlF1YWxpZmllZFR5cGVOYW1lXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5BbGxvd2VkVGVybXNcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlF1YWxpZmllZFRlcm1OYW1lXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5BcHBsaWNhYmxlVGVybXNcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlF1YWxpZmllZFRlcm1OYW1lXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5NYXhJdGVtc1wiXSA9IFwiRWRtLkludDY0XCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5NaW5JdGVtc1wiXSA9IFwiRWRtLkludDY0XCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuTWVhc3VyZXMuVjEuU2NhbGVcIl0gPSBcIkVkbS5CeXRlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuTWVhc3VyZXMuVjEuRHVyYXRpb25HcmFudWxhcml0eVwiXSA9IFwiT3JnLk9EYXRhLk1lYXN1cmVzLlYxLkR1cmF0aW9uR3JhbnVsYXJpdHlUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5BbmFseXRpY3MudjEuRGltZW5zaW9uXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkFuYWx5dGljcy52MS5NZWFzdXJlXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkFuYWx5dGljcy52MS5BY2N1bXVsYXRpdmVNZWFzdXJlXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkFuYWx5dGljcy52MS5Sb2xsZWRVcFByb3BlcnR5Q291bnRcIl0gPSBcIkVkbS5JbnQxNlwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQW5hbHl0aWNzLnYxLlBsYW5uaW5nQWN0aW9uXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkFuYWx5dGljcy52MS5BZ2dyZWdhdGVkUHJvcGVydGllc1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQW5hbHl0aWNzLnYxLkFnZ3JlZ2F0ZWRQcm9wZXJ0eVR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZXJ2aWNlVmVyc2lvblwiXSA9IFwiRWRtLkludDMyXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2VydmljZVNjaGVtYVZlcnNpb25cIl0gPSBcIkVkbS5JbnQzMlwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRGb3JcIl0gPSBcIkVkbS5Qcm9wZXJ0eVBhdGhcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0xhbmd1YWdlSWRlbnRpZmllclwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVGV4dEZvcm1hdFwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRGb3JtYXRUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNEaWdpdFNlcXVlbmNlXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc1VwcGVyQ2FzZVwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDdXJyZW5jeVwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNVbml0XCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Vbml0U3BlY2lmaWNTY2FsZVwiXSA9IFwiRWRtLlByaW1pdGl2ZVR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Vbml0U3BlY2lmaWNQcmVjaXNpb25cIl0gPSBcIkVkbS5QcmltaXRpdmVUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2Vjb25kYXJ5S2V5XCJdID0gXCJFZG0uUHJvcGVydHlQYXRoXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTWluT2NjdXJzXCJdID0gXCJFZG0uSW50NjRcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5NYXhPY2N1cnNcIl0gPSBcIkVkbS5JbnQ2NFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkFzc29jaWF0aW9uRW50aXR5XCJdID0gXCJFZG0uTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRlcml2ZWROYXZpZ2F0aW9uXCJdID0gXCJFZG0uTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLk1hc2tlZFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTWFza2VkQWx3YXlzXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY09iamVjdE1hcHBpbmdcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY09iamVjdE1hcHBpbmdUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNJbnN0YW5jZUFubm90YXRpb25cIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnNcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25UeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRmllbGRDb250cm9sXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRmllbGRDb250cm9sVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkFwcGxpY2F0aW9uXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuQXBwbGljYXRpb25UeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVGltZXN0YW1wXCJdID0gXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5FcnJvclJlc29sdXRpb25cIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5FcnJvclJlc29sdXRpb25UeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTWVzc2FnZXNcIl0gPSBcIkVkbS5Db21wbGV4VHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLm51bWVyaWNTZXZlcml0eVwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLk51bWVyaWNNZXNzYWdlU2V2ZXJpdHlUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTWF4aW11bU51bWVyaWNNZXNzYWdlU2V2ZXJpdHlcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5OdW1lcmljTWVzc2FnZVNldmVyaXR5VHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzQWN0aW9uQ3JpdGljYWxcIl0gPSBcIkVkbS5Cb29sZWFuXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuQXR0cmlidXRlc1wiXSA9IFwiRWRtLlByb3BlcnR5UGF0aFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlJlbGF0ZWRSZWN1cnNpdmVIaWVyYXJjaHlcIl0gPSBcIkVkbS5Bbm5vdGF0aW9uUGF0aFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkludGVydmFsXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSW50ZXJ2YWxUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuUmVzdWx0Q29udGV4dFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuV2Vha1JlZmVyZW50aWFsQ29uc3RyYWludFwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLldlYWtSZWZlcmVudGlhbENvbnN0cmFpbnRUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNOYXR1cmFsUGVyc29uXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0UmVsZXZhbnRRdWFsaWZpZXJzXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2ltcGxlSWRlbnRpZmllclwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlc1wiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0TWFwcGluZ1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdE1hcHBpbmdUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDYWxlbmRhclllYXJcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzQ2FsZW5kYXJIYWxmeWVhclwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDYWxlbmRhclF1YXJ0ZXJcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzQ2FsZW5kYXJNb250aFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDYWxlbmRhcldlZWtcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRGF5T2ZDYWxlbmRhck1vbnRoXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0RheU9mQ2FsZW5kYXJZZWFyXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0NhbGVuZGFyWWVhckhhbGZ5ZWFyXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0NhbGVuZGFyWWVhclF1YXJ0ZXJcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzQ2FsZW5kYXJZZWFyTW9udGhcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzQ2FsZW5kYXJZZWFyV2Vla1wiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDYWxlbmRhckRhdGVcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRmlzY2FsWWVhclwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNGaXNjYWxQZXJpb2RcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRmlzY2FsWWVhclBlcmlvZFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNGaXNjYWxRdWFydGVyXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0Zpc2NhbFllYXJRdWFydGVyXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0Zpc2NhbFdlZWtcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRmlzY2FsWWVhcldlZWtcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRGF5T2ZGaXNjYWxZZWFyXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0Zpc2NhbFllYXJWYXJpYW50XCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5NdXR1YWxseUV4Y2x1c2l2ZVRlcm1cIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Um9vdFwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Um9vdFR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdE5vZGVcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdE5vZGVUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRBY3RpdmF0aW9uVmlhXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2ltcGxlSWRlbnRpZmllclwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkVkaXRhYmxlRmllbGRGb3JcIl0gPSBcIkVkbS5Qcm9wZXJ0eVBhdGhcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY0tleVwiXSA9IFwiRWRtLlByb3BlcnR5UGF0aFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNpZGVFZmZlY3RzXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2lkZUVmZmVjdHNUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRGVmYXVsdFZhbHVlc0Z1bmN0aW9uXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuUXVhbGlmaWVkTmFtZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpbHRlckRlZmF1bHRWYWx1ZVwiXSA9IFwiRWRtLlByaW1pdGl2ZVR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5GaWx0ZXJEZWZhdWx0VmFsdWVIaWdoXCJdID0gXCJFZG0uUHJpbWl0aXZlVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNvcnRPcmRlclwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNvcnRPcmRlclR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5SZWN1cnNpdmVIaWVyYXJjaHlcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5SZWN1cnNpdmVIaWVyYXJjaHlUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuQ3JlYXRlZEF0XCJdID0gXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5DcmVhdGVkQnlcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Vc2VySURcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5DaGFuZ2VkQXRcIl0gPSBcIkVkbS5EYXRlVGltZU9mZnNldFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkNoYW5nZWRCeVwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlVzZXJJRFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkFwcGx5TXVsdGlVbml0QmVoYXZpb3JGb3JTb3J0aW5nQW5kRmlsdGVyaW5nXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvZGVMaXN0LnYxLkN1cnJlbmN5Q29kZXNcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvZGVMaXN0LnYxLkNvZGVMaXN0U291cmNlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db2RlTGlzdC52MS5Vbml0c09mTWVhc3VyZVwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29kZUxpc3QudjEuQ29kZUxpc3RTb3VyY2VcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvZGVMaXN0LnYxLlN0YW5kYXJkQ29kZVwiXSA9IFwiRWRtLlByb3BlcnR5UGF0aFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29kZUxpc3QudjEuRXh0ZXJuYWxDb2RlXCJdID0gXCJFZG0uUHJvcGVydHlQYXRoXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db2RlTGlzdC52MS5Jc0NvbmZpZ3VyYXRpb25EZXByZWNhdGlvbkNvZGVcIl0gPSBcIkVkbS5Cb29sZWFuXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLkNvbnRhY3RcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQ29udGFjdFR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQWRkcmVzc1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5BZGRyZXNzVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5Jc0VtYWlsQWRkcmVzc1wiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLklzUGhvbmVOdW1iZXJcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5FdmVudFwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5FdmVudERhdGFcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuVGFza1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5UYXNrRGF0YVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5NZXNzYWdlXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLk1lc3NhZ2VEYXRhXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5IaWVyYXJjaHkudjEuUmVjdXJzaXZlSGllcmFyY2h5XCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5IaWVyYXJjaHkudjEuUmVjdXJzaXZlSGllcmFyY2h5VHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuUGVyc29uYWxEYXRhLnYxLkVudGl0eVNlbWFudGljc1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuUGVyc29uYWxEYXRhLnYxLkVudGl0eVNlbWFudGljc1R5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlBlcnNvbmFsRGF0YS52MS5GaWVsZFNlbWFudGljc1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuUGVyc29uYWxEYXRhLnYxLkZpZWxkU2VtYW50aWNzVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuUGVyc29uYWxEYXRhLnYxLklzUG90ZW50aWFsbHlQZXJzb25hbFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5QZXJzb25hbERhdGEudjEuSXNQb3RlbnRpYWxseVNlbnNpdGl2ZVwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxLlN0aWNreVNlc3Npb25TdXBwb3J0ZWRcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlNlc3Npb24udjEuU3RpY2t5U2Vzc2lvblN1cHBvcnRlZFR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhlYWRlckluZm9cIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhlYWRlckluZm9UeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5JZGVudGlmaWNhdGlvblwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkQWJzdHJhY3RcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkJhZGdlXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5CYWRnZVR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRBYnN0cmFjdFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU3RhdHVzSW5mb1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkQWJzdHJhY3RcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZpZWxkR3JvdXBcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZpZWxkR3JvdXBUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Db25uZWN0ZWRGaWVsZHNcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbm5lY3RlZEZpZWxkc1R5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkdlb0xvY2F0aW9uc1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuR2VvTG9jYXRpb25UeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5HZW9Mb2NhdGlvblwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuR2VvTG9jYXRpb25UeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Db250YWN0c1wiXSA9IFwiRWRtLkFubm90YXRpb25QYXRoXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5NZWRpYVJlc291cmNlXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5NZWRpYVJlc291cmNlVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YVBvaW50XCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5LUElcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLktQSVR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydERlZmluaXRpb25UeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5WYWx1ZUNyaXRpY2FsaXR5XCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5WYWx1ZUNyaXRpY2FsaXR5VHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ3JpdGljYWxpdHlMYWJlbHNcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNyaXRpY2FsaXR5TGFiZWxUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHNcIl0gPSBcIkVkbS5Qcm9wZXJ0eVBhdGhcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZhY2V0c1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmFjZXRcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhlYWRlckZhY2V0c1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmFjZXRcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlF1aWNrVmlld0ZhY2V0c1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmFjZXRcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlF1aWNrQ3JlYXRlRmFjZXRzXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GYWNldFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmlsdGVyRmFjZXRzXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWZlcmVuY2VGYWNldFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnRcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnRUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25WYXJpYW50XCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25WYXJpYW50VHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuVGhpbmdQZXJzcGVjdGl2ZVwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Jc1N1bW1hcnlcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUGFydE9mUHJldmlld1wiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5NYXBcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuR2FsbGVyeVwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Jc0ltYWdlVVJMXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLklzSW1hZ2VcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTXVsdGlMaW5lVGV4dFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5UZXh0QXJyYW5nZW1lbnRcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlRleHRBcnJhbmdlbWVudFR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkltcG9ydGFuY2VcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkltcG9ydGFuY2VUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IaWRkZW5cIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ3JlYXRlSGlkZGVuXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlVwZGF0ZUhpZGRlblwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EZWxldGVIaWRkZW5cIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGlkZGVuRmlsdGVyXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZERlZmF1bHRcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEFic3RyYWN0XCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Dcml0aWNhbGl0eVwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ3JpdGljYWxpdHlUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRW1waGFzaXplZFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5PcmRlckJ5XCJdID0gXCJFZG0uUHJvcGVydHlQYXRoXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QYXJhbWV0ZXJEZWZhdWx0VmFsdWVcIl0gPSBcIkVkbS5QcmltaXRpdmVUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWNvbW1lbmRhdGlvblN0YXRlXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWNvbW1lbmRhdGlvblN0YXRlVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUmVjb21tZW5kYXRpb25MaXN0XCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWNvbW1lbmRhdGlvbkxpc3RUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5FeGNsdWRlRnJvbU5hdmlnYXRpb25Db250ZXh0XCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkhUTUw1LnYxLkNzc0RlZmF1bHRzXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5IVE1MNS52MS5Dc3NEZWZhdWx0c1R5cGVcIjtcbn0pKFRlcm1Ub1R5cGVzID0gZXhwb3J0cy5UZXJtVG9UeXBlcyB8fCAoZXhwb3J0cy5UZXJtVG9UeXBlcyA9IHt9KSk7XG4vKipcbiAqIERpZmZlcmVudGlhdGUgYmV0d2VlbiBhIENvbXBsZXhUeXBlIGFuZCBhIFR5cGVEZWZpbml0aW9uLlxuICogQHBhcmFtIGNvbXBsZXhUeXBlRGVmaW5pdGlvblxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYSBjb21wbGV4IHR5cGVcbiAqL1xuZnVuY3Rpb24gaXNDb21wbGV4VHlwZURlZmluaXRpb24oY29tcGxleFR5cGVEZWZpbml0aW9uKSB7XG4gICAgcmV0dXJuICghIWNvbXBsZXhUeXBlRGVmaW5pdGlvbiAmJiBjb21wbGV4VHlwZURlZmluaXRpb24uX3R5cGUgPT09ICdDb21wbGV4VHlwZScgJiYgISFjb21wbGV4VHlwZURlZmluaXRpb24ucHJvcGVydGllcyk7XG59XG5leHBvcnRzLmlzQ29tcGxleFR5cGVEZWZpbml0aW9uID0gaXNDb21wbGV4VHlwZURlZmluaXRpb247XG5mdW5jdGlvbiBEZWNpbWFsKHZhbHVlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaXNEZWNpbWFsKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlT2YoKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIHRvU3RyaW5nKCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZXhwb3J0cy5EZWNpbWFsID0gRGVjaW1hbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWxzLmpzLm1hcFxuXG4vKioqLyB9KSxcblxuLyoqKi8gNDI2OlxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCAoeyB2YWx1ZTogdHJ1ZSB9KSk7XG5leHBvcnRzLnJldmVydFRlcm1Ub0dlbmVyaWNUeXBlID0gdm9pZCAwO1xuY29uc3QgdXRpbHNfMSA9IF9fd2VicGFja19yZXF1aXJlX18oNjkpO1xuLyoqXG4gKiBSZXZlcnQgYW4gb2JqZWN0IHRvIGl0cyByYXcgdHlwZSBlcXVpdmFsZW50LlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2VzIHRoZSBjdXJyZW50IHJlZmVyZW5jZVxuICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byByZXZlcnRcbiAqIEByZXR1cm5zIHRoZSByYXcgdmFsdWVcbiAqL1xuZnVuY3Rpb24gcmV2ZXJ0T2JqZWN0VG9SYXdUeXBlKHJlZmVyZW5jZXMsIHZhbHVlKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICB0eXBlOiAnQ29sbGVjdGlvbicsXG4gICAgICAgICAgICBDb2xsZWN0aW9uOiB2YWx1ZS5tYXAoKGFubm8pID0+IHJldmVydENvbGxlY3Rpb25JdGVtVG9SYXdUeXBlKHJlZmVyZW5jZXMsIGFubm8pKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmICgoX2EgPSB2YWx1ZS5pc0RlY2ltYWwpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHZhbHVlKSkge1xuICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICB0eXBlOiAnRGVjaW1hbCcsXG4gICAgICAgICAgICBEZWNpbWFsOiB2YWx1ZS52YWx1ZU9mKClcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoKF9iID0gdmFsdWUuaXNTdHJpbmcpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKHZhbHVlKSkge1xuICAgICAgICBjb25zdCB2YWx1ZU1hdGNoZXMgPSB2YWx1ZS5zcGxpdCgnLicpO1xuICAgICAgICBpZiAodmFsdWVNYXRjaGVzLmxlbmd0aCA+IDEgJiYgcmVmZXJlbmNlcy5maW5kKChyZWYpID0+IHJlZi5hbGlhcyA9PT0gdmFsdWVNYXRjaGVzWzBdKSkge1xuICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdFbnVtTWVtYmVyJyxcbiAgICAgICAgICAgICAgICBFbnVtTWVtYmVyOiB2YWx1ZS52YWx1ZU9mKClcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICAgICAgU3RyaW5nOiB2YWx1ZS52YWx1ZU9mKClcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodmFsdWUudHlwZSA9PT0gJ1BhdGgnKSB7XG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdQYXRoJyxcbiAgICAgICAgICAgIFBhdGg6IHZhbHVlLnBhdGhcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAodmFsdWUudHlwZSA9PT0gJ0Fubm90YXRpb25QYXRoJykge1xuICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICB0eXBlOiAnQW5ub3RhdGlvblBhdGgnLFxuICAgICAgICAgICAgQW5ub3RhdGlvblBhdGg6IHZhbHVlLnZhbHVlXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09ICdBcHBseScpIHtcbiAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgdHlwZTogJ0FwcGx5JyxcbiAgICAgICAgICAgIEFwcGx5OiB2YWx1ZS5BcHBseVxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmICh2YWx1ZS50eXBlID09PSAnTnVsbCcpIHtcbiAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgdHlwZTogJ051bGwnXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09ICdQcm9wZXJ0eVBhdGgnKSB7XG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdQcm9wZXJ0eVBhdGgnLFxuICAgICAgICAgICAgUHJvcGVydHlQYXRoOiB2YWx1ZS52YWx1ZVxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmICh2YWx1ZS50eXBlID09PSAnTmF2aWdhdGlvblByb3BlcnR5UGF0aCcpIHtcbiAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgdHlwZTogJ05hdmlnYXRpb25Qcm9wZXJ0eVBhdGgnLFxuICAgICAgICAgICAgTmF2aWdhdGlvblByb3BlcnR5UGF0aDogdmFsdWUudmFsdWVcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnJFR5cGUnKSkge1xuICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICB0eXBlOiAnUmVjb3JkJyxcbiAgICAgICAgICAgIFJlY29yZDogcmV2ZXJ0Q29sbGVjdGlvbkl0ZW1Ub1Jhd1R5cGUocmVmZXJlbmNlcywgdmFsdWUpXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4vKipcbiAqIFJldmVydCBhIHZhbHVlIHRvIGl0cyByYXcgdmFsdWUgZGVwZW5kaW5nIG9uIGl0cyB0eXBlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2VzIHRoZSBjdXJyZW50IHNldCBvZiByZWZlcmVuY2VcbiAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gcmV2ZXJ0XG4gKiBAcmV0dXJucyB0aGUgcmF3IGV4cHJlc3Npb25cbiAqL1xuZnVuY3Rpb24gcmV2ZXJ0VmFsdWVUb1Jhd1R5cGUocmVmZXJlbmNlcywgdmFsdWUpIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGNvbnN0IHZhbHVlQ29uc3RydWN0b3IgPSB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmFsdWUuY29uc3RydWN0b3IubmFtZTtcbiAgICBzd2l0Y2ggKHZhbHVlQ29uc3RydWN0b3IpIHtcbiAgICAgICAgY2FzZSAnU3RyaW5nJzpcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlTWF0Y2hlcyA9IHZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZU1hdGNoZXMubGVuZ3RoID4gMSAmJiByZWZlcmVuY2VzLmZpbmQoKHJlZikgPT4gcmVmLmFsaWFzID09PSB2YWx1ZU1hdGNoZXNbMF0pKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnRW51bU1lbWJlcicsXG4gICAgICAgICAgICAgICAgICAgIEVudW1NZW1iZXI6IHZhbHVlLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgU3RyaW5nOiB2YWx1ZS50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdCb29sZWFuJzpcbiAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ0Jvb2wnLFxuICAgICAgICAgICAgICAgIEJvb2w6IHZhbHVlLnZhbHVlT2YoKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdOdW1iZXInOlxuICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgaWYgKHZhbHVlLnRvU3RyaW5nKCkgPT09IHZhbHVlLnRvRml4ZWQoKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0ludCcsXG4gICAgICAgICAgICAgICAgICAgIEludDogdmFsdWUudmFsdWVPZigpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0RlY2ltYWwnLFxuICAgICAgICAgICAgICAgICAgICBEZWNpbWFsOiB2YWx1ZS52YWx1ZU9mKClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXN1bHQgPSByZXZlcnRPYmplY3RUb1Jhd1R5cGUocmVmZXJlbmNlcywgdmFsdWUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5jb25zdCByZXN0cmljdGVkS2V5cyA9IFsnJFR5cGUnLCAndGVybScsICdfX3NvdXJjZScsICdxdWFsaWZpZXInLCAnQWN0aW9uVGFyZ2V0JywgJ2Z1bGx5UXVhbGlmaWVkTmFtZScsICdhbm5vdGF0aW9ucyddO1xuLyoqXG4gKiBSZXZlcnQgdGhlIGN1cnJlbnQgZW1iZWRkZWQgYW5ub3RhdGlvbnMgdG8gdGhlaXIgcmF3IHR5cGUuXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZXMgdGhlIGN1cnJlbnQgc2V0IG9mIHJlZmVyZW5jZVxuICogQHBhcmFtIGN1cnJlbnRBbm5vdGF0aW9ucyB0aGUgY29sbGVjdGlvbiBpdGVtIHRvIGV2YWx1YXRlXG4gKiBAcGFyYW0gdGFyZ2V0QW5ub3RhdGlvbnMgdGhlIHBsYWNlIHdoZXJlIHdlIG5lZWQgdG8gYWRkIHRoZSBhbm5vdGF0aW9uXG4gKi9cbmZ1bmN0aW9uIHJldmVydEFubm90YXRpb25zVG9SYXdUeXBlKHJlZmVyZW5jZXMsIGN1cnJlbnRBbm5vdGF0aW9ucywgdGFyZ2V0QW5ub3RhdGlvbnMpIHtcbiAgICBPYmplY3Qua2V5cyhjdXJyZW50QW5ub3RhdGlvbnMpXG4gICAgICAgIC5maWx0ZXIoKGtleSkgPT4ga2V5ICE9PSAnX2Fubm90YXRpb25zJylcbiAgICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50QW5ub3RhdGlvbnNba2V5XSkuZm9yRWFjaCgodGVybSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkQW5ub3RhdGlvbiA9IHJldmVydFRlcm1Ub0dlbmVyaWNUeXBlKHJlZmVyZW5jZXMsIGN1cnJlbnRBbm5vdGF0aW9uc1trZXldW3Rlcm1dKTtcbiAgICAgICAgICAgIGlmICghcGFyc2VkQW5ub3RhdGlvbi50ZXJtKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdW5hbGlhc2VkVGVybSA9ICgwLCB1dGlsc18xLnVuYWxpYXMpKHJlZmVyZW5jZXMsIGAke2tleX0uJHt0ZXJtfWApO1xuICAgICAgICAgICAgICAgIGlmICh1bmFsaWFzZWRUZXJtKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHF1YWxpZmllZFNwbGl0ID0gdW5hbGlhc2VkVGVybS5zcGxpdCgnIycpO1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWRBbm5vdGF0aW9uLnRlcm0gPSBxdWFsaWZpZWRTcGxpdFswXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHF1YWxpZmllZFNwbGl0Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1YiBBbm5vdGF0aW9uIHdpdGggYSBxdWFsaWZpZXIsIG5vdCBzdXJlIHdoZW4gdGhhdCBjYW4gaGFwcGVuIGluIHJlYWwgc2NlbmFyaW9zXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRBbm5vdGF0aW9uLnF1YWxpZmllciA9IHF1YWxpZmllZFNwbGl0WzFdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFyZ2V0QW5ub3RhdGlvbnMucHVzaChwYXJzZWRBbm5vdGF0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG4vKipcbiAqIFJldmVydCB0aGUgY3VycmVudCBjb2xsZWN0aW9uIGl0ZW0gdG8gdGhlIGNvcnJlc3BvbmRpbmcgcmF3IGFubm90YXRpb24uXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZXMgdGhlIGN1cnJlbnQgc2V0IG9mIHJlZmVyZW5jZVxuICogQHBhcmFtIGNvbGxlY3Rpb25JdGVtIHRoZSBjb2xsZWN0aW9uIGl0ZW0gdG8gZXZhbHVhdGVcbiAqIEByZXR1cm5zIHRoZSByYXcgdHlwZSBlcXVpdmFsZW50XG4gKi9cbmZ1bmN0aW9uIHJldmVydENvbGxlY3Rpb25JdGVtVG9SYXdUeXBlKHJlZmVyZW5jZXMsIGNvbGxlY3Rpb25JdGVtKSB7XG4gICAgaWYgKHR5cGVvZiBjb2xsZWN0aW9uSXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25JdGVtO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgY29sbGVjdGlvbkl0ZW0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChjb2xsZWN0aW9uSXRlbS5oYXNPd25Qcm9wZXJ0eSgnJFR5cGUnKSkge1xuICAgICAgICAgICAgLy8gQW5ub3RhdGlvbiBSZWNvcmRcbiAgICAgICAgICAgIGNvbnN0IG91dEl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbkl0ZW0uJFR5cGUsXG4gICAgICAgICAgICAgICAgcHJvcGVydHlWYWx1ZXM6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gQ291bGQgdmFsaWRhdGUga2V5cyBhbmQgdHlwZSBiYXNlZCBvbiAkVHlwZVxuICAgICAgICAgICAgT2JqZWN0LmtleXMoY29sbGVjdGlvbkl0ZW0pLmZvckVhY2goKGNvbGxlY3Rpb25LZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdHJpY3RlZEtleXMuaW5kZXhPZihjb2xsZWN0aW9uS2V5KSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjb2xsZWN0aW9uSXRlbVtjb2xsZWN0aW9uS2V5XTtcbiAgICAgICAgICAgICAgICAgICAgb3V0SXRlbS5wcm9wZXJ0eVZhbHVlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbGxlY3Rpb25LZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmV2ZXJ0VmFsdWVUb1Jhd1R5cGUocmVmZXJlbmNlcywgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjb2xsZWN0aW9uS2V5ID09PSAnYW5ub3RhdGlvbnMnKSB7XG4gICAgICAgICAgICAgICAgICAgIG91dEl0ZW0uYW5ub3RhdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcmV2ZXJ0QW5ub3RhdGlvbnNUb1Jhd1R5cGUocmVmZXJlbmNlcywgY29sbGVjdGlvbkl0ZW1bY29sbGVjdGlvbktleV0sIG91dEl0ZW0uYW5ub3RhdGlvbnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG91dEl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29sbGVjdGlvbkl0ZW0udHlwZSA9PT0gJ1Byb3BlcnR5UGF0aCcpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1Byb3BlcnR5UGF0aCcsXG4gICAgICAgICAgICAgICAgUHJvcGVydHlQYXRoOiBjb2xsZWN0aW9uSXRlbS52YWx1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb2xsZWN0aW9uSXRlbS50eXBlID09PSAnQW5ub3RhdGlvblBhdGgnKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdBbm5vdGF0aW9uUGF0aCcsXG4gICAgICAgICAgICAgICAgQW5ub3RhdGlvblBhdGg6IGNvbGxlY3Rpb25JdGVtLnZhbHVlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbGxlY3Rpb25JdGVtLnR5cGUgPT09ICdOYXZpZ2F0aW9uUHJvcGVydHlQYXRoJykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnTmF2aWdhdGlvblByb3BlcnR5UGF0aCcsXG4gICAgICAgICAgICAgICAgTmF2aWdhdGlvblByb3BlcnR5UGF0aDogY29sbGVjdGlvbkl0ZW0udmFsdWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIFJldmVydCBhbiBhbm5vdGF0aW9uIHRlcm0gdG8gaXQncyBnZW5lcmljIG9yIHJhdyBlcXVpdmFsZW50LlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2VzIHRoZSByZWZlcmVuY2Ugb2YgdGhlIGN1cnJlbnQgY29udGV4dFxuICogQHBhcmFtIGFubm90YXRpb24gdGhlIGFubm90YXRpb24gdGVybSB0byByZXZlcnRcbiAqIEByZXR1cm5zIHRoZSByYXcgYW5ub3RhdGlvblxuICovXG5mdW5jdGlvbiByZXZlcnRUZXJtVG9HZW5lcmljVHlwZShyZWZlcmVuY2VzLCBhbm5vdGF0aW9uKSB7XG4gICAgY29uc3QgYmFzZUFubm90YXRpb24gPSB7XG4gICAgICAgIHRlcm06IGFubm90YXRpb24udGVybSxcbiAgICAgICAgcXVhbGlmaWVyOiBhbm5vdGF0aW9uLnF1YWxpZmllclxuICAgIH07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYW5ub3RhdGlvbikpIHtcbiAgICAgICAgLy8gQ29sbGVjdGlvblxuICAgICAgICBpZiAoYW5ub3RhdGlvbi5oYXNPd25Qcm9wZXJ0eSgnYW5ub3RhdGlvbnMnKSkge1xuICAgICAgICAgICAgLy8gQW5ub3RhdGlvbiBvbiBhIGNvbGxlY3Rpb24gaXRzZWxmLCBub3Qgc3VyZSB3aGVuIHRoYXQgaGFwcGVucyBpZiBhdCBhbGxcbiAgICAgICAgICAgIGJhc2VBbm5vdGF0aW9uLmFubm90YXRpb25zID0gW107XG4gICAgICAgICAgICByZXZlcnRBbm5vdGF0aW9uc1RvUmF3VHlwZShyZWZlcmVuY2VzLCBhbm5vdGF0aW9uLmFubm90YXRpb25zLCBiYXNlQW5ub3RhdGlvbi5hbm5vdGF0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYmFzZUFubm90YXRpb24pLCB7IGNvbGxlY3Rpb246IGFubm90YXRpb24ubWFwKChhbm5vKSA9PiByZXZlcnRDb2xsZWN0aW9uSXRlbVRvUmF3VHlwZShyZWZlcmVuY2VzLCBhbm5vKSkgfSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGFubm90YXRpb24uaGFzT3duUHJvcGVydHkoJyRUeXBlJykpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYmFzZUFubm90YXRpb24pLCB7IHJlY29yZDogcmV2ZXJ0Q29sbGVjdGlvbkl0ZW1Ub1Jhd1R5cGUocmVmZXJlbmNlcywgYW5ub3RhdGlvbikgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBiYXNlQW5ub3RhdGlvbiksIHsgdmFsdWU6IHJldmVydFZhbHVlVG9SYXdUeXBlKHJlZmVyZW5jZXMsIGFubm90YXRpb24pIH0pO1xuICAgIH1cbn1cbmV4cG9ydHMucmV2ZXJ0VGVybVRvR2VuZXJpY1R5cGUgPSByZXZlcnRUZXJtVG9HZW5lcmljVHlwZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXdyaXRlYmFjay5qcy5tYXBcblxuLyoqKi8gfSlcblxuLyoqKioqKi8gXHR9KTtcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuLyoqKioqKi8gXHRcdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuLyoqKioqKi8gXHRcdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqLyBcdFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8vIHN0YXJ0dXBcbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdC8vIFRoaXMgZW50cnkgbW9kdWxlIGlzIHJlZmVyZW5jZWQgYnkgb3RoZXIgbW9kdWxlcyBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkXG4vKioqKioqLyBcdHZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NTkpO1xuLyoqKioqKi8gXHRBbm5vdGF0aW9uQ29udmVydGVyID0gX193ZWJwYWNrX2V4cG9ydHNfXztcbi8qKioqKiovIFx0XG4vKioqKioqLyB9KSgpXG47Il19
2145
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2Rpc3QvQW5ub3RhdGlvbkNvbnZlcnRlci5qcyJdLCJuYW1lcyI6WyJBbm5vdGF0aW9uQ29udmVydGVyIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIl9fdW51c2VkX3dlYnBhY2tfbW9kdWxlIiwiZXhwb3J0cyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiY29udmVydCIsInV0aWxzXzEiLCJQYXRoIiwicGF0aEV4cHJlc3Npb24iLCJ0YXJnZXROYW1lIiwiYW5ub3RhdGlvbnNUZXJtIiwidGVybSIsInBhdGgiLCJ0eXBlIiwiJHRhcmdldCIsImJ1aWxkT2JqZWN0TWFwIiwicmF3TWV0YWRhdGEiLCJfYSIsIm9iamVjdE1hcCIsInNjaGVtYSIsImVudGl0eUNvbnRhaW5lciIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImVudGl0eVNldHMiLCJmb3JFYWNoIiwiZW50aXR5U2V0IiwiYWN0aW9ucyIsImFjdGlvbiIsImlzQm91bmQiLCJ1bkJvdW5kQWN0aW9uTmFtZSIsInNwbGl0IiwiX3R5cGUiLCJwdXNoIiwiYWN0aW9uU3BsaXQiLCJwYXJhbWV0ZXJzIiwicGFyYW1ldGVyIiwiY29tcGxleFR5cGVzIiwiY29tcGxleFR5cGUiLCJwcm9wZXJ0aWVzIiwicHJvcGVydHkiLCJ0eXBlRGVmaW5pdGlvbnMiLCJ0eXBlRGVmaW5pdGlvbiIsImVudGl0eVR5cGVzIiwiZW50aXR5VHlwZSIsImFubm90YXRpb25zIiwiZW50aXR5UHJvcGVydGllcyIsImNvbXBsZXhUeXBlRGVmaW5pdGlvbiIsImlzQ29tcGxleFR5cGVEZWZpbml0aW9uIiwiY29tcGxleFR5cGVQcm9wIiwiY29tcGxleFR5cGVQcm9wVGFyZ2V0IiwiYXNzaWduIiwibmFtZSIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibmF2UHJvcGVydHkiLCJrZXlzIiwiYW5ub3RhdGlvblNvdXJjZSIsImFubm90YXRpb25MaXN0IiwiY3VycmVudFRhcmdldE5hbWUiLCJ1bmFsaWFzIiwicmVmZXJlbmNlcyIsInRhcmdldCIsImFubm90YXRpb24iLCJhbm5vdGF0aW9uRlFOIiwicXVhbGlmaWVyIiwiY29tYmluZVBhdGgiLCJjdXJyZW50VGFyZ2V0Iiwic3RhcnRzV2l0aCIsImRlZmF1bHRSZWZlcmVuY2VzIiwiQUxMX0FOTk9UQVRJT05fRVJST1JTIiwiQU5OT1RBVElPTl9FUlJPUlMiLCJhZGRBbm5vdGF0aW9uRXJyb3JNZXNzYWdlIiwib0Vycm9yTXNnIiwiX3Jlc29sdmVUYXJnZXQiLCJwYXRoT25seSIsImluY2x1ZGVWaXNpdGVkT2JqZWN0cyIsInVuZGVmaW5lZCIsImFWaXNpdGVkT2JqZWN0cyIsInBhdGhTcGxpdCIsInRhcmdldFBhdGhTcGxpdCIsInBhdGhQYXJ0IiwiaW5kZXhPZiIsInNwbGl0dGVkUGF0aCIsImFubm90YXRpb25QYXRoIiwiY3VycmVudFBhdGgiLCJjdXJyZW50Q29udGV4dCIsInJlZHVjZSIsImN1cnJlbnRWYWx1ZSIsImxlbmd0aCIsInRhcmdldFR5cGUiLCJlbnRpdHlUeXBlTmFtZSIsInRhcmdldFR5cGVOYW1lIiwic291cmNlVHlwZSIsImlzRW50aXR5U2V0Iiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJsYXN0SWR4IiwiY29udGV4dFRvUmVzb2x2ZSIsInN1YlRhcmdldCIsInZpc2l0ZWRPYmplY3RzIiwidmlzaXRlZFN1Yk9iamVjdCIsImNvbmNhdCIsInJldmVyc2UiLCJmaW5kIiwib2JqIiwiaW50ZXJtZWRpYXRlVGFyZ2V0IiwiaGFzT3duUHJvcGVydHkiLCJhbm5vdGF0aW9uVHlwZSIsImluZmVyVHlwZUZyb21UZXJtIiwibWVzc2FnZSIsImlzQW5ub3RhdGlvblBhdGgiLCJwYXRoU3RyIiwicGFyc2VWYWx1ZSIsInByb3BlcnR5VmFsdWUiLCJ2YWx1ZUZRTiIsImNvbnRleHQiLCJTdHJpbmciLCJJbnQiLCJCb29sIiwiRGVjaW1hbCIsIkRhdGUiLCJhbGlhcyIsIkVudW1NZW1iZXIiLCJQcm9wZXJ0eVBhdGgiLCJjdXJyZW50VGVybSIsIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJhbm5vdGF0aW9uVGFyZ2V0IiwiQW5ub3RhdGlvblBhdGgiLCJ1bnJlc29sdmVkQW5ub3RhdGlvbnMiLCJpbmxpbmUiLCJ0b1Jlc29sdmUiLCJwYXJzZVJlY29yZCIsIlJlY29yZCIsInBhcnNlQ29sbGVjdGlvbiIsIkNvbGxlY3Rpb24iLCJUZXJtVG9UeXBlcyIsImlzRXJyb3IiLCJpc0RhdGFGaWVsZFdpdGhGb3JBY3Rpb24iLCJhbm5vdGF0aW9uQ29udGVudCIsImFubm90YXRpb25UZXJtIiwiJFR5cGUiLCJwYXJzZVJlY29yZFR5cGUiLCJyZWNvcmREZWZpbml0aW9uIiwiY3VycmVudEZRTiIsIkFycmF5IiwiaXNBcnJheSIsInN1YkFubm90YXRpb25MaXN0IiwiX19zb3VyY2UiLCJjdXJyZW50U291cmNlIiwiYWRkaXRpb25hbEFubm90YXRpb25zIiwicHJvcGVydHlWYWx1ZXMiLCJBY3Rpb25UYXJnZXQiLCJBY3Rpb24iLCJnZXRPckluZmVyQ29sbGVjdGlvblR5cGUiLCJjb2xsZWN0aW9uRGVmaW5pdGlvbiIsImZpcnN0Q29sSXRlbSIsInBhcmVudEZRTiIsImNvbGxlY3Rpb25EZWZpbml0aW9uVHlwZSIsIm1hcCIsInByb3BlcnR5UGF0aCIsInByb3BlcnR5SWR4IiwicGF0aFZhbHVlIiwiYW5ub3RhdGlvbklkeCIsImFubm90YXRpb25Db2xsZWN0aW9uRWxlbWVudCIsIm5hdlByb3BlcnR5UGF0aCIsIm5hdlByb3BJZHgiLCJyZWNvcmRJZHgiLCJpZlZhbHVlIiwic3RyaW5nVmFsdWUiLCJFcnJvciIsImNvbnZlcnRBbm5vdGF0aW9uIiwicmVjb3JkIiwiY29sbGVjdGlvbiIsImNyZWF0ZVJlc29sdmVQYXRoRm4iLCJyZWxhdGl2ZVBhdGgiLCJyZXNvbHZlVjJOYXZpZ2F0aW9uUHJvcGVydHkiLCJuYXZQcm9wIiwiYXNzb2NpYXRpb25zIiwib3V0TmF2UHJvcCIsInRhcmdldEFzc29jaWF0aW9uIiwiYXNzb2NpYXRpb24iLCJyZWxhdGlvbnNoaXAiLCJhc3NvY2lhdGlvbkVuZCIsImVuZCIsInJvbGUiLCJ0b1JvbGUiLCJpc0NvbGxlY3Rpb24iLCJtdWx0aXBsaWNpdHkiLCJyZXNvbHZlVjROYXZpZ2F0aW9uUHJvcGVydHkiLCJwYXJ0bmVyIiwiY29udGFpbnNUYXJnZXQiLCJyZWZlcmVudGlhbENvbnN0cmFpbnQiLCJpc1Y0TmF2aWdhdGlvblByb3BlcnR5IiwicHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwicmVzb2x2ZU5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwicmVzb2x2ZVBhdGgiLCJsaW5rQWN0aW9uc1RvRW50aXR5VHlwZSIsIm5hbWVzcGFjZSIsInNvdXJjZUVudGl0eVR5cGUiLCJyZXR1cm5FbnRpdHlUeXBlIiwicmV0dXJuVHlwZSIsImxpbmtFbnRpdHlUeXBlVG9FbnRpdHlTZXQiLCJrZXlQcm9wIiwiaXNLZXkiLCJsaW5rRW50aXR5VHlwZVRvU2luZ2xldG9uIiwic2luZ2xldG9ucyIsInNpbmdsZXRvbiIsImxpbmtQcm9wZXJ0aWVzVG9Db21wbGV4VHlwZXMiLCJsaW5rIiwiY29tcGxleFR5cGVOYW1lIiwic0Vycm9yIiwicHJlcGFyZUNvbXBsZXhUeXBlcyIsInNwbGl0VGVybSIsInRlcm1WYWx1ZSIsImFsaWFzZWRUZXJtIiwibGFzdERvdCIsInRlcm1BbGlhcyIsImNyZWF0ZUdsb2JhbFJlc29sdmUiLCJjb252ZXJ0ZWRPdXRwdXQiLCJzUGF0aCIsImFQYXRoU3BsaXQiLCJzaGlmdCIsImVudGl0eVNldE5hbWUiLCJldCIsIm9iamVjdFBhdGgiLCJ0YXJnZXRSZXNvbHV0aW9uIiwiam9pbiIsImVuc3VyZUFubm90YXRpb25zIiwidm9jQWxpYXMiLCJfYW5ub3RhdGlvbnMiLCJwcm9jZXNzQW5ub3RhdGlvbnMiLCJiT3ZlcnJpZGVFeGlzdGluZyIsIl9iIiwidm9jVGVybSIsInZvY1Rlcm1XaXRoUXVhbGlmaWVyIiwiQm9vbGVhbiIsInByb2Nlc3NVbnJlc29sdmVkVGFyZ2V0cyIsInVucmVzb2x2ZWRUYXJnZXRzIiwicmVzb2x2YWJsZSIsInRhcmdldFRvUmVzb2x2ZSIsInRhcmdldFN0ciIsInJlc29sdmVkVGFyZ2V0IiwidGFyZ2V0U3RyaW5nIiwidGVybUluZm8iLCJtZXJnZUFubm90YXRpb25zIiwiYW5ub3RhdGlvbkxpc3RQZXJUYXJnZXQiLCJmaW5kSW5kZXgiLCJyZWZlcmVuY2VBbm5vdGF0aW9uIiwic3BsaWNlIiwib2JqZWN0TWFwRWxlbWVudCIsImFsbFRhcmdldHMiLCJleHRyYVVucmVzb2x2ZWRBbm5vdGF0aW9ucyIsImJhc2VPYmoiLCJhbm5vdGF0aW9uUGFydCIsInRhcmdldFNwbGl0Iiwic2xpY2UiLCJjdXJyZW50T2JqIiwiZXh0cmFSZWZlcmVuY2VzIiwiZmlsdGVyIiwicmVmZXJlbmNlIiwiZGVmYXVsdFJlZiIsInZlcnNpb24iLCJkaWFnbm9zdGljcyIsIl9fY3JlYXRlQmluZGluZyIsImNyZWF0ZSIsIm8iLCJtIiwiayIsImsyIiwiZGVzYyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9fZXNNb2R1bGUiLCJ3cml0YWJsZSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXQiLCJfX2V4cG9ydFN0YXIiLCJwIiwicHJvdG90eXBlIiwiY2FsbCIsInVyaSIsInVuYWxpYXNlZFZhbHVlIiwicmV2ZXJzZVJlZmVyZW5jZU1hcCIsInJlZiIsImxhc3REb3RJbmRleCIsInByZUFsaWFzIiwicG9zdEFsaWFzIiwiYWxpYXNlZFZhbHVlIiwicmVmZXJlbmNlTWFwIiwiaXNEZWNpbWFsIiwidmFsdWVPZiIsInRvU3RyaW5nIiwicmV2ZXJ0VGVybVRvR2VuZXJpY1R5cGUiLCJyZXZlcnRPYmplY3RUb1Jhd1R5cGUiLCJyZXN1bHQiLCJhbm5vIiwicmV2ZXJ0Q29sbGVjdGlvbkl0ZW1Ub1Jhd1R5cGUiLCJpc1N0cmluZyIsInZhbHVlTWF0Y2hlcyIsIkFwcGx5IiwicmV2ZXJ0VmFsdWVUb1Jhd1R5cGUiLCJ2YWx1ZUNvbnN0cnVjdG9yIiwiY29uc3RydWN0b3IiLCJ0b0ZpeGVkIiwicmVzdHJpY3RlZEtleXMiLCJyZXZlcnRBbm5vdGF0aW9uc1RvUmF3VHlwZSIsImN1cnJlbnRBbm5vdGF0aW9ucyIsInRhcmdldEFubm90YXRpb25zIiwia2V5IiwicGFyc2VkQW5ub3RhdGlvbiIsInVuYWxpYXNlZFRlcm0iLCJxdWFsaWZpZWRTcGxpdCIsImNvbGxlY3Rpb25JdGVtIiwib3V0SXRlbSIsImNvbGxlY3Rpb25LZXkiLCJiYXNlQW5ub3RhdGlvbiIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwibW9kdWxlIiwiX193ZWJwYWNrX2V4cG9ydHNfXyJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUZBLElBQUlBLG1CQUFKO0FBQ0E7O0FBQVMsQ0FBQyxZQUFXO0FBQUU7O0FBQ3ZCO0FBQVU7QUFDVjs7QUFBVSxNQUFJQyxtQkFBbUIsR0FBSTtBQUVyQztBQUFNO0FBQ047QUFBTyxjQUFTQyx1QkFBVCxFQUFrQ0MsT0FBbEMsRUFBMkNDLG1CQUEzQyxFQUFnRTtBQUd2RUMsTUFBQUEsTUFBTSxDQUFDQyxjQUFQLENBQXNCSCxPQUF0QixFQUErQixZQUEvQixFQUE4QztBQUFFSSxRQUFBQSxLQUFLLEVBQUU7QUFBVCxPQUE5QztBQUNBSixNQUFBQSxPQUFPLENBQUNLLE9BQVIsR0FBa0IsS0FBSyxDQUF2Qjs7QUFDQSxVQUFNQyxPQUFPLEdBQUdMLG1CQUFtQixDQUFDLEdBQUQsQ0FBbkM7QUFDQTtBQUNBO0FBQ0E7OztBQVJ1RSxVQVNqRU0sSUFUaUU7QUFVbkU7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0ksb0JBQVlDLGNBQVosRUFBNEJDLFVBQTVCLEVBQXdDQyxlQUF4QyxFQUF5REMsSUFBekQsRUFBK0Q7QUFDM0QsYUFBS0MsSUFBTCxHQUFZSixjQUFjLENBQUNELElBQTNCO0FBQ0EsYUFBS00sSUFBTCxHQUFZLE1BQVo7QUFDQSxhQUFLQyxPQUFMLEdBQWVM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QVUsTUFBSXdCLHdCQUF3QixHQUFHLEVBQS9CO0FBQ1Y7O0FBQ0E7QUFBVTs7QUFDVjs7QUFBVSxXQUFTelQsbUJBQVQsQ0FBNkIwVCxRQUE3QixFQUF1QztBQUNqRDtBQUFXOztBQUNYO0FBQVcsUUFBSUMsWUFBWSxHQUFHRix3QkFBd0IsQ0FBQ0MsUUFBRCxDQUEzQztBQUNYOztBQUFXLFFBQUlDLFlBQVksS0FBS2xQLFNBQXJCLEVBQWdDO0FBQzNDO0FBQVksYUFBT2tQLFlBQVksQ0FBQzVULE9BQXBCO0FBQ1o7QUFBWTtBQUNaO0FBQVc7O0FBQ1g7OztBQUFXLFFBQUk2VCxNQUFNLEdBQUdILHdCQUF3QixDQUFDQyxRQUFELENBQXhCLEdBQXFDO0FBQzdEO0FBQVk7O0FBQ1o7QUFBWTs7QUFDWjtBQUFZM1QsTUFBQUEsT0FBTyxFQUFFO0FBQ3JCOztBQUo2RCxLQUFsRDtBQUtYOztBQUNBO0FBQVc7O0FBQ1g7O0FBQVdGLElBQUFBLG1CQUFtQixDQUFDNlQsUUFBRCxDQUFuQixDQUE4QnRDLElBQTlCLENBQW1Dd0MsTUFBTSxDQUFDN1QsT0FBMUMsRUFBbUQ2VCxNQUFuRCxFQUEyREEsTUFBTSxDQUFDN1QsT0FBbEUsRUFBMkVDLG1CQUEzRTtBQUNYOztBQUNBO0FBQVc7O0FBQ1g7OztBQUFXLFdBQU80VCxNQUFNLENBQUM3VCxPQUFkO0FBQ1g7QUFBVztBQUNYOztBQUNBOztBQUNBOztBQUNBO0FBQVU7O0FBQ1Y7QUFBVTs7QUFDVjtBQUFVOztBQUNWOzs7QUFBVSxNQUFJOFQsbUJBQW1CLEdBQUc3VCxtQkFBbUIsQ0FBQyxHQUFELENBQTdDO0FBQ1Y7OztBQUFVSixFQUFBQSxtQkFBbUIsR0FBR2lVLG1CQUF0QjtBQUNWOztBQUNBO0FBQVUsQ0F0ekREIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgQW5ub3RhdGlvbkNvbnZlcnRlcjtcbi8qKioqKiovIChmdW5jdGlvbigpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHRcInVzZSBzdHJpY3RcIjtcbi8qKioqKiovIFx0dmFyIF9fd2VicGFja19tb2R1bGVzX18gPSAoe1xuXG4vKioqLyA1ODI6XG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19tb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsICh7IHZhbHVlOiB0cnVlIH0pKTtcbmV4cG9ydHMuY29udmVydCA9IHZvaWQgMDtcbmNvbnN0IHV0aWxzXzEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgwMCk7XG4vKipcbiAqXG4gKi9cbmNsYXNzIFBhdGgge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwYXRoRXhwcmVzc2lvblxuICAgICAqIEBwYXJhbSB0YXJnZXROYW1lXG4gICAgICogQHBhcmFtIGFubm90YXRpb25zVGVybVxuICAgICAqIEBwYXJhbSB0ZXJtXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocGF0aEV4cHJlc3Npb24sIHRhcmdldE5hbWUsIGFubm90YXRpb25zVGVybSwgdGVybSkge1xuICAgICAgICB0aGlzLnBhdGggPSBwYXRoRXhwcmVzc2lvbi5QYXRoO1xuICAgICAgICB0aGlzLnR5cGUgPSAnUGF0aCc7XG4gICAgICAgIHRoaXMuJHRhcmdldCA9IHRhcmdldE5hbWU7XG4gICAgICAgIHRoaXMudGVybSA9IHRlcm07XG4gICAgICAgIHRoaXMuYW5ub3RhdGlvbnNUZXJtID0gYW5ub3RhdGlvbnNUZXJtO1xuICAgIH1cbn1cbi8qKlxuICogQ3JlYXRlcyBhIE1hcCBiYXNlZCBvbiB0aGUgZnVsbHlRdWFsaWZpZWROYW1lIG9mIGVhY2ggb2JqZWN0IHBhcnQgb2YgdGhlIG1ldGFkYXRhLlxuICpcbiAqIEBwYXJhbSByYXdNZXRhZGF0YSB0aGUgcmF3TWV0YWRhdGEgd2UncmUgd29ya2luZyBhZ2FpbnN0XG4gKiBAcmV0dXJucyB0aGUgb2JqZWN0bWFwIGZvciBlYXN5IGFjY2VzcyB0byB0aGUgZGlmZmVyZW50IG9iamVjdCBvZiB0aGUgbWV0YWRhdGFcbiAqL1xuZnVuY3Rpb24gYnVpbGRPYmplY3RNYXAocmF3TWV0YWRhdGEpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3Qgb2JqZWN0TWFwID0ge307XG4gICAgaWYgKChfYSA9IHJhd01ldGFkYXRhLnNjaGVtYS5lbnRpdHlDb250YWluZXIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mdWxseVF1YWxpZmllZE5hbWUpIHtcbiAgICAgICAgb2JqZWN0TWFwW3Jhd01ldGFkYXRhLnNjaGVtYS5lbnRpdHlDb250YWluZXIuZnVsbHlRdWFsaWZpZWROYW1lXSA9IHJhd01ldGFkYXRhLnNjaGVtYS5lbnRpdHlDb250YWluZXI7XG4gICAgfVxuICAgIHJhd01ldGFkYXRhLnNjaGVtYS5lbnRpdHlTZXRzLmZvckVhY2goKGVudGl0eVNldCkgPT4ge1xuICAgICAgICBvYmplY3RNYXBbZW50aXR5U2V0LmZ1bGx5UXVhbGlmaWVkTmFtZV0gPSBlbnRpdHlTZXQ7XG4gICAgfSk7XG4gICAgcmF3TWV0YWRhdGEuc2NoZW1hLmFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICAgIG9iamVjdE1hcFthY3Rpb24uZnVsbHlRdWFsaWZpZWROYW1lXSA9IGFjdGlvbjtcbiAgICAgICAgaWYgKGFjdGlvbi5pc0JvdW5kKSB7XG4gICAgICAgICAgICBjb25zdCB1bkJvdW5kQWN0aW9uTmFtZSA9IGFjdGlvbi5mdWxseVF1YWxpZmllZE5hbWUuc3BsaXQoJygnKVswXTtcbiAgICAgICAgICAgIGlmICghb2JqZWN0TWFwW3VuQm91bmRBY3Rpb25OYW1lXSkge1xuICAgICAgICAgICAgICAgIG9iamVjdE1hcFt1bkJvdW5kQWN0aW9uTmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIF90eXBlOiAnVW5ib3VuZEdlbmVyaWNBY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvYmplY3RNYXBbdW5Cb3VuZEFjdGlvbk5hbWVdLmFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uU3BsaXQgPSBhY3Rpb24uZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KCcoJyk7XG4gICAgICAgICAgICBvYmplY3RNYXBbYCR7YWN0aW9uU3BsaXRbMV0uc3BsaXQoJyknKVswXX0vJHthY3Rpb25TcGxpdFswXX1gXSA9IGFjdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBhY3Rpb24ucGFyYW1ldGVycy5mb3JFYWNoKChwYXJhbWV0ZXIpID0+IHtcbiAgICAgICAgICAgIG9iamVjdE1hcFtwYXJhbWV0ZXIuZnVsbHlRdWFsaWZpZWROYW1lXSA9IHBhcmFtZXRlcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmF3TWV0YWRhdGEuc2NoZW1hLmNvbXBsZXhUeXBlcy5mb3JFYWNoKChjb21wbGV4VHlwZSkgPT4ge1xuICAgICAgICBvYmplY3RNYXBbY29tcGxleFR5cGUuZnVsbHlRdWFsaWZpZWROYW1lXSA9IGNvbXBsZXhUeXBlO1xuICAgICAgICBjb21wbGV4VHlwZS5wcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgICBvYmplY3RNYXBbcHJvcGVydHkuZnVsbHlRdWFsaWZpZWROYW1lXSA9IHByb3BlcnR5O1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByYXdNZXRhZGF0YS5zY2hlbWEudHlwZURlZmluaXRpb25zLmZvckVhY2goKHR5cGVEZWZpbml0aW9uKSA9PiB7XG4gICAgICAgIG9iamVjdE1hcFt0eXBlRGVmaW5pdGlvbi5mdWxseVF1YWxpZmllZE5hbWVdID0gdHlwZURlZmluaXRpb247XG4gICAgfSk7XG4gICAgcmF3TWV0YWRhdGEuc2NoZW1hLmVudGl0eVR5cGVzLmZvckVhY2goKGVudGl0eVR5cGUpID0+IHtcbiAgICAgICAgZW50aXR5VHlwZS5hbm5vdGF0aW9ucyA9IHt9OyAvLyAnYW5ub3RhdGlvbnMnIHByb3BlcnR5IGlzIG1hbmRhdG9yeVxuICAgICAgICBvYmplY3RNYXBbZW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWVdID0gZW50aXR5VHlwZTtcbiAgICAgICAgZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgICBvYmplY3RNYXBbcHJvcGVydHkuZnVsbHlRdWFsaWZpZWROYW1lXSA9IHByb3BlcnR5O1xuICAgICAgICAgICAgLy8gSGFuZGxlIGNvbXBsZXggdHlwZXNcbiAgICAgICAgICAgIGNvbnN0IGNvbXBsZXhUeXBlRGVmaW5pdGlvbiA9IG9iamVjdE1hcFtwcm9wZXJ0eS50eXBlXTtcbiAgICAgICAgICAgIGlmICgoMCwgdXRpbHNfMS5pc0NvbXBsZXhUeXBlRGVmaW5pdGlvbikoY29tcGxleFR5cGVEZWZpbml0aW9uKSkge1xuICAgICAgICAgICAgICAgIGNvbXBsZXhUeXBlRGVmaW5pdGlvbi5wcm9wZXJ0aWVzLmZvckVhY2goKGNvbXBsZXhUeXBlUHJvcCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV4VHlwZVByb3BUYXJnZXQgPSBPYmplY3QuYXNzaWduKGNvbXBsZXhUeXBlUHJvcCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3R5cGU6ICdQcm9wZXJ0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICBmdWxseVF1YWxpZmllZE5hbWU6IHByb3BlcnR5LmZ1bGx5UXVhbGlmaWVkTmFtZSArICcvJyArIGNvbXBsZXhUeXBlUHJvcC5uYW1lXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBvYmplY3RNYXBbY29tcGxleFR5cGVQcm9wVGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZV0gPSBjb21wbGV4VHlwZVByb3BUYXJnZXQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBlbnRpdHlUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZvckVhY2goKG5hdlByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgICBvYmplY3RNYXBbbmF2UHJvcGVydHkuZnVsbHlRdWFsaWZpZWROYW1lXSA9IG5hdlByb3BlcnR5O1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBPYmplY3Qua2V5cyhyYXdNZXRhZGF0YS5zY2hlbWEuYW5ub3RhdGlvbnMpLmZvckVhY2goKGFubm90YXRpb25Tb3VyY2UpID0+IHtcbiAgICAgICAgcmF3TWV0YWRhdGEuc2NoZW1hLmFubm90YXRpb25zW2Fubm90YXRpb25Tb3VyY2VdLmZvckVhY2goKGFubm90YXRpb25MaXN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VGFyZ2V0TmFtZSA9ICgwLCB1dGlsc18xLnVuYWxpYXMpKHJhd01ldGFkYXRhLnJlZmVyZW5jZXMsIGFubm90YXRpb25MaXN0LnRhcmdldCk7XG4gICAgICAgICAgICBhbm5vdGF0aW9uTGlzdC5hbm5vdGF0aW9ucy5mb3JFYWNoKChhbm5vdGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGFubm90YXRpb25GUU4gPSBgJHtjdXJyZW50VGFyZ2V0TmFtZX1AJHsoMCwgdXRpbHNfMS51bmFsaWFzKShyYXdNZXRhZGF0YS5yZWZlcmVuY2VzLCBhbm5vdGF0aW9uLnRlcm0pfWA7XG4gICAgICAgICAgICAgICAgaWYgKGFubm90YXRpb24ucXVhbGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGFubm90YXRpb25GUU4gKz0gYCMke2Fubm90YXRpb24ucXVhbGlmaWVyfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9iamVjdE1hcFthbm5vdGF0aW9uRlFOXSA9IGFubm90YXRpb247XG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUgPSBhbm5vdGF0aW9uRlFOO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBvYmplY3RNYXA7XG59XG4vKipcbiAqIENvbWJpbmUgdHdvIHN0cmluZ3MgcmVwcmVzZW50aW5nIHBhdGggaW4gdGhlIG1ldGFtb2RlbCB3aGlsZSBlbnN1cmluZyB0aGVpciBzcGVjaWZpY2l0aWVzIChhbm5vdGF0aW9uLi4uKSBhcmUgcmVzcGVjdGVkLlxuICpcbiAqIEBwYXJhbSBjdXJyZW50VGFyZ2V0IHRoZSBjdXJyZW50IHBhdGhcbiAqIEBwYXJhbSBwYXRoIHRoZSBwYXJ0IHdlIHdhbnQgdG8gYXBwZW5kXG4gKiBAcmV0dXJucyB0aGUgY29tcGxldGUgcGF0aCBpbmNsdWRpbmcgdGhlIGV4dGVuc2lvbi5cbiAqL1xuZnVuY3Rpb24gY29tYmluZVBhdGgoY3VycmVudFRhcmdldCwgcGF0aCkge1xuICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoJ0AnKSkge1xuICAgICAgICByZXR1cm4gY3VycmVudFRhcmdldCArICgwLCB1dGlsc18xLnVuYWxpYXMpKHV0aWxzXzEuZGVmYXVsdFJlZmVyZW5jZXMsIHBhdGgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRUYXJnZXQgKyAnLycgKyBwYXRoO1xuICAgIH1cbn1cbmNvbnN0IEFMTF9BTk5PVEFUSU9OX0VSUk9SUyA9IHt9O1xubGV0IEFOTk9UQVRJT05fRVJST1JTID0gW107XG4vKipcbiAqIEBwYXJhbSBwYXRoXG4gKiBAcGFyYW0gb0Vycm9yTXNnXG4gKi9cbmZ1bmN0aW9uIGFkZEFubm90YXRpb25FcnJvck1lc3NhZ2UocGF0aCwgb0Vycm9yTXNnKSB7XG4gICAgaWYgKCFBTExfQU5OT1RBVElPTl9FUlJPUlNbcGF0aF0pIHtcbiAgICAgICAgQUxMX0FOTk9UQVRJT05fRVJST1JTW3BhdGhdID0gW29FcnJvck1zZ107XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBBTExfQU5OT1RBVElPTl9FUlJPUlNbcGF0aF0ucHVzaChvRXJyb3JNc2cpO1xuICAgIH1cbn1cbi8qKlxuICogUmVzb2x2ZXMgYSBzcGVjaWZpYyBwYXRoIGJhc2VkIG9uIHRoZSBvYmplY3RNYXAuXG4gKlxuICogQHBhcmFtIG9iamVjdE1hcFxuICogQHBhcmFtIGN1cnJlbnRUYXJnZXRcbiAqIEBwYXJhbSBwYXRoXG4gKiBAcGFyYW0gcGF0aE9ubHlcbiAqIEBwYXJhbSBpbmNsdWRlVmlzaXRlZE9iamVjdHNcbiAqIEBwYXJhbSBhbm5vdGF0aW9uc1Rlcm1cbiAqIEByZXR1cm5zIHRoZSByZXNvbHZlZCBvYmplY3RcbiAqL1xuZnVuY3Rpb24gX3Jlc29sdmVUYXJnZXQob2JqZWN0TWFwLCBjdXJyZW50VGFyZ2V0LCBwYXRoLCBwYXRoT25seSA9IGZhbHNlLCBpbmNsdWRlVmlzaXRlZE9iamVjdHMgPSBmYWxzZSwgYW5ub3RhdGlvbnNUZXJtKSB7XG4gICAgbGV0IG9FcnJvck1zZztcbiAgICBpZiAoIXBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgYVZpc2l0ZWRPYmplY3RzID0gW107XG4gICAgaWYgKGN1cnJlbnRUYXJnZXQgJiYgY3VycmVudFRhcmdldC5fdHlwZSA9PT0gJ1Byb3BlcnR5Jykge1xuICAgICAgICBjdXJyZW50VGFyZ2V0ID0gb2JqZWN0TWFwW2N1cnJlbnRUYXJnZXQuZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KCcvJylbMF1dO1xuICAgIH1cbiAgICBwYXRoID0gY29tYmluZVBhdGgoY3VycmVudFRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUsIHBhdGgpO1xuICAgIGNvbnN0IHBhdGhTcGxpdCA9IHBhdGguc3BsaXQoJy8nKTtcbiAgICBjb25zdCB0YXJnZXRQYXRoU3BsaXQgPSBbXTtcbiAgICBwYXRoU3BsaXQuZm9yRWFjaCgocGF0aFBhcnQpID0+IHtcbiAgICAgICAgLy8gU2VwYXJhdGUgb3V0IHRoZSBhbm5vdGF0aW9uXG4gICAgICAgIGlmIChwYXRoUGFydC5pbmRleE9mKCdAJykgIT09IC0xKSB7XG4gICAgICAgICAgICBjb25zdCBbc3BsaXR0ZWRQYXRoLCBhbm5vdGF0aW9uUGF0aF0gPSBwYXRoUGFydC5zcGxpdCgnQCcpO1xuICAgICAgICAgICAgdGFyZ2V0UGF0aFNwbGl0LnB1c2goc3BsaXR0ZWRQYXRoKTtcbiAgICAgICAgICAgIHRhcmdldFBhdGhTcGxpdC5wdXNoKGBAJHthbm5vdGF0aW9uUGF0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRhcmdldFBhdGhTcGxpdC5wdXNoKHBhdGhQYXJ0KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGxldCBjdXJyZW50UGF0aCA9IHBhdGg7XG4gICAgbGV0IGN1cnJlbnRDb250ZXh0ID0gY3VycmVudFRhcmdldDtcbiAgICBjb25zdCB0YXJnZXQgPSB0YXJnZXRQYXRoU3BsaXQucmVkdWNlKChjdXJyZW50VmFsdWUsIHBhdGhQYXJ0KSA9PiB7XG4gICAgICAgIGlmIChwYXRoUGFydCA9PT0gJyRUeXBlJyAmJiBjdXJyZW50VmFsdWUuX3R5cGUgPT09ICdFbnRpdHlUeXBlJykge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHBhdGhQYXJ0ID09PSAnQCR1aTUub3ZlcmxvYWQnIHx8IHBhdGhQYXJ0ID09PSAnMCcpICYmIGN1cnJlbnRWYWx1ZS5fdHlwZSA9PT0gJ0FjdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGhQYXJ0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gRW1wdHkgUGF0aCBhZnRlciBhbiBlbnRpdHlTZXQgbWVhbnMgZW50aXR5VHlwZVxuICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAmJiBjdXJyZW50VmFsdWUuX3R5cGUgPT09ICdFbnRpdHlTZXQnICYmIGN1cnJlbnRWYWx1ZS5lbnRpdHlUeXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVWaXNpdGVkT2JqZWN0cykge1xuICAgICAgICAgICAgICAgICAgICBhVmlzaXRlZE9iamVjdHMucHVzaChjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWUgPSBjdXJyZW50VmFsdWUuZW50aXR5VHlwZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUgJiYgY3VycmVudFZhbHVlLl90eXBlID09PSAnTmF2aWdhdGlvblByb3BlcnR5JyAmJiBjdXJyZW50VmFsdWUudGFyZ2V0VHlwZSkge1xuICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlVmlzaXRlZE9iamVjdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgYVZpc2l0ZWRPYmplY3RzLnB1c2goY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudFZhbHVlID0gY3VycmVudFZhbHVlLnRhcmdldFR5cGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmNsdWRlVmlzaXRlZE9iamVjdHMgJiYgY3VycmVudFZhbHVlICE9PSBudWxsICYmIGN1cnJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhVmlzaXRlZE9iamVjdHMucHVzaChjdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICBjdXJyZW50UGF0aCA9IHBhdGhQYXJ0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGN1cnJlbnRWYWx1ZS5fdHlwZSA9PT0gJ0VudGl0eVNldCcgJiYgcGF0aFBhcnQgPT09ICckVHlwZScpIHtcbiAgICAgICAgICAgIGN1cnJlbnRWYWx1ZSA9IGN1cnJlbnRWYWx1ZS50YXJnZXRUeXBlO1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjdXJyZW50VmFsdWUuX3R5cGUgPT09ICdFbnRpdHlTZXQnICYmIGN1cnJlbnRWYWx1ZS5lbnRpdHlUeXBlKSB7XG4gICAgICAgICAgICBjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRWYWx1ZS5lbnRpdHlUeXBlTmFtZSwgcGF0aFBhcnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGN1cnJlbnRWYWx1ZS5fdHlwZSA9PT0gJ05hdmlnYXRpb25Qcm9wZXJ0eScpIHtcbiAgICAgICAgICAgIGN1cnJlbnRQYXRoID0gY29tYmluZVBhdGgoY3VycmVudFZhbHVlLmZ1bGx5UXVhbGlmaWVkTmFtZSwgcGF0aFBhcnQpO1xuICAgICAgICAgICAgaWYgKCFvYmplY3RNYXBbY3VycmVudFBhdGhdKSB7XG4gICAgICAgICAgICAgICAgLy8gRmFsbGJhY2sgbG9nIGVycm9yXG4gICAgICAgICAgICAgICAgY3VycmVudFBhdGggPSBjb21iaW5lUGF0aChjdXJyZW50VmFsdWUudGFyZ2V0VHlwZU5hbWUsIHBhdGhQYXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjdXJyZW50VmFsdWUuX3R5cGUgPT09ICdQcm9wZXJ0eScpIHtcbiAgICAgICAgICAgIC8vIENvbXBsZXhUeXBlIG9yIFByb3BlcnR5XG4gICAgICAgICAgICBpZiAoY3VycmVudFZhbHVlLnRhcmdldFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRWYWx1ZS50YXJnZXRUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZSwgcGF0aFBhcnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFBhdGggPSBjb21iaW5lUGF0aChjdXJyZW50VmFsdWUuZnVsbHlRdWFsaWZpZWROYW1lLCBwYXRoUGFydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY3VycmVudFZhbHVlLl90eXBlID09PSAnQWN0aW9uJyAmJiBjdXJyZW50VmFsdWUuaXNCb3VuZCkge1xuICAgICAgICAgICAgY3VycmVudFBhdGggPSBjb21iaW5lUGF0aChjdXJyZW50VmFsdWUuZnVsbHlRdWFsaWZpZWROYW1lLCBwYXRoUGFydCk7XG4gICAgICAgICAgICBpZiAocGF0aFBhcnQgPT09ICckUGFyYW1ldGVyJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50VmFsdWUucGFyYW1ldGVycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghb2JqZWN0TWFwW2N1cnJlbnRQYXRoXSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXRoID0gY29tYmluZVBhdGgoY3VycmVudFZhbHVlLnNvdXJjZVR5cGUsIHBhdGhQYXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjdXJyZW50VmFsdWUuX3R5cGUgPT09ICdBY3Rpb25QYXJhbWV0ZXInICYmIGN1cnJlbnRWYWx1ZS5pc0VudGl0eVNldCkge1xuICAgICAgICAgICAgY3VycmVudFBhdGggPSBjb21iaW5lUGF0aChjdXJyZW50VmFsdWUudHlwZSwgcGF0aFBhcnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGN1cnJlbnRWYWx1ZS5fdHlwZSA9PT0gJ0FjdGlvblBhcmFtZXRlcicgJiYgIWN1cnJlbnRWYWx1ZS5pc0VudGl0eVNldCkge1xuICAgICAgICAgICAgY3VycmVudFBhdGggPSBjb21iaW5lUGF0aChjdXJyZW50VGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZS5zdWJzdHJpbmcoMCwgY3VycmVudFRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUubGFzdEluZGV4T2YoJy8nKSksIHBhdGhQYXJ0KTtcbiAgICAgICAgICAgIGlmICghb2JqZWN0TWFwW2N1cnJlbnRQYXRoXSkge1xuICAgICAgICAgICAgICAgIGxldCBsYXN0SWR4ID0gY3VycmVudFRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgICAgICAgICAgICBpZiAobGFzdElkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdElkeCA9IGN1cnJlbnRUYXJnZXQuZnVsbHlRdWFsaWZpZWROYW1lLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudFBhdGggPSBjb21iaW5lUGF0aChvYmplY3RNYXBbY3VycmVudFRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUuc3Vic3RyaW5nKDAsIGxhc3RJZHgpXS5zb3VyY2VUeXBlLCBwYXRoUGFydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGN1cnJlbnRWYWx1ZS5mdWxseVF1YWxpZmllZE5hbWUsIHBhdGhQYXJ0KTtcbiAgICAgICAgICAgIGlmIChwYXRoUGFydCAhPT0gJ25hbWUnICYmIGN1cnJlbnRWYWx1ZVtwYXRoUGFydF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50VmFsdWVbcGF0aFBhcnRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocGF0aFBhcnQgPT09ICckQW5ub3RhdGlvblBhdGgnICYmIGN1cnJlbnRWYWx1ZS4kdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGV4dFRvUmVzb2x2ZSA9IG9iamVjdE1hcFtjdXJyZW50VmFsdWUuZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KCdAJylbMF1dO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YlRhcmdldCA9IF9yZXNvbHZlVGFyZ2V0KG9iamVjdE1hcCwgY29udGV4dFRvUmVzb2x2ZSwgY3VycmVudFZhbHVlLnZhbHVlLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgc3ViVGFyZ2V0LnZpc2l0ZWRPYmplY3RzLmZvckVhY2goKHZpc2l0ZWRTdWJPYmplY3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFWaXNpdGVkT2JqZWN0cy5pbmRleE9mKHZpc2l0ZWRTdWJPYmplY3QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYVZpc2l0ZWRPYmplY3RzLnB1c2godmlzaXRlZFN1Yk9iamVjdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ViVGFyZ2V0LnRhcmdldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHBhdGhQYXJ0ID09PSAnJFBhdGgnICYmIGN1cnJlbnRWYWx1ZS4kdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgY3VycmVudENvbnRleHQgPSBhVmlzaXRlZE9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgLmNvbmNhdCgpXG4gICAgICAgICAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoKG9iaikgPT4gb2JqLl90eXBlID09PSAnRW50aXR5VHlwZScgfHxcbiAgICAgICAgICAgICAgICAgICAgb2JqLl90eXBlID09PSAnRW50aXR5U2V0JyB8fFxuICAgICAgICAgICAgICAgICAgICBvYmouX3R5cGUgPT09ICdOYXZpZ2F0aW9uUHJvcGVydHknKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudENvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViVGFyZ2V0ID0gX3Jlc29sdmVUYXJnZXQob2JqZWN0TWFwLCBjdXJyZW50Q29udGV4dCwgY3VycmVudFZhbHVlLnBhdGgsIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgc3ViVGFyZ2V0LnZpc2l0ZWRPYmplY3RzLmZvckVhY2goKHZpc2l0ZWRTdWJPYmplY3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhVmlzaXRlZE9iamVjdHMuaW5kZXhPZih2aXNpdGVkU3ViT2JqZWN0KSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhVmlzaXRlZE9iamVjdHMucHVzaCh2aXNpdGVkU3ViT2JqZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWJUYXJnZXQudGFyZ2V0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFZhbHVlLiR0YXJnZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwYXRoUGFydC5zdGFydHNXaXRoKCckUGF0aCcpICYmIGN1cnJlbnRWYWx1ZS4kdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW50ZXJtZWRpYXRlVGFyZ2V0ID0gY3VycmVudFZhbHVlLiR0YXJnZXQ7XG4gICAgICAgICAgICAgICAgY3VycmVudFBhdGggPSBjb21iaW5lUGF0aChpbnRlcm1lZGlhdGVUYXJnZXQuZnVsbHlRdWFsaWZpZWROYW1lLCBwYXRoUGFydC5zdWJzdHJpbmcoNSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudFZhbHVlLmhhc093blByb3BlcnR5KCckVHlwZScpICYmICFvYmplY3RNYXBbY3VycmVudFBhdGhdKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBub3cgYW4gYW5ub3RhdGlvbiB2YWx1ZVxuICAgICAgICAgICAgICAgIGNvbnN0IGVudGl0eVR5cGUgPSBvYmplY3RNYXBbY3VycmVudFZhbHVlLmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdCgnQCcpWzBdXTtcbiAgICAgICAgICAgICAgICBpZiAoZW50aXR5VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGF0aCA9IGNvbWJpbmVQYXRoKGVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lLCBwYXRoUGFydCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmplY3RNYXBbY3VycmVudFBhdGhdO1xuICAgIH0sIG51bGwpO1xuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgIGlmIChhbm5vdGF0aW9uc1Rlcm0pIHtcbiAgICAgICAgICAgIGNvbnN0IGFubm90YXRpb25UeXBlID0gaW5mZXJUeXBlRnJvbVRlcm0oYW5ub3RhdGlvbnNUZXJtLCBjdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgICAgIG9FcnJvck1zZyA9IHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAnVW5hYmxlIHRvIHJlc29sdmUgdGhlIHBhdGggZXhwcmVzc2lvbjogJyArXG4gICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgcGF0aCArXG4gICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICAnSGludDogQ2hlY2sgYW5kIGNvcnJlY3QgdGhlIHBhdGggdmFsdWVzIHVuZGVyIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIGluIHRoZSBtZXRhZGF0YSAoYW5ub3RhdGlvbi54bWwgZmlsZSBvciBDRFMgYW5ub3RhdGlvbnMgZm9yIHRoZSBhcHBsaWNhdGlvbik6IFxcblxcbicgK1xuICAgICAgICAgICAgICAgICAgICAnPEFubm90YXRpb24gVGVybSA9ICcgK1xuICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uc1Rlcm0gK1xuICAgICAgICAgICAgICAgICAgICAnPicgK1xuICAgICAgICAgICAgICAgICAgICAnXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICc8UmVjb3JkIFR5cGUgPSAnICtcbiAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgK1xuICAgICAgICAgICAgICAgICAgICAnPicgK1xuICAgICAgICAgICAgICAgICAgICAnXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICc8QW5ub3RhdGlvblBhdGggPSAnICtcbiAgICAgICAgICAgICAgICAgICAgcGF0aCArXG4gICAgICAgICAgICAgICAgICAgICc+J1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGFkZEFubm90YXRpb25FcnJvck1lc3NhZ2UocGF0aCwgb0Vycm9yTXNnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9FcnJvck1zZyA9IHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAnVW5hYmxlIHRvIHJlc29sdmUgdGhlIHBhdGggZXhwcmVzc2lvbjogJyArXG4gICAgICAgICAgICAgICAgICAgIHBhdGggK1xuICAgICAgICAgICAgICAgICAgICAnXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgJ0hpbnQ6IENoZWNrIGFuZCBjb3JyZWN0IHRoZSBwYXRoIHZhbHVlcyB1bmRlciB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZSBpbiB0aGUgbWV0YWRhdGEgKGFubm90YXRpb24ueG1sIGZpbGUgb3IgQ0RTIGFubm90YXRpb25zIGZvciB0aGUgYXBwbGljYXRpb24pOiBcXG5cXG4nICtcbiAgICAgICAgICAgICAgICAgICAgJzxBbm5vdGF0aW9uIFRlcm0gPSAnICtcbiAgICAgICAgICAgICAgICAgICAgcGF0aFNwbGl0WzBdICtcbiAgICAgICAgICAgICAgICAgICAgJz4nICtcbiAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICAnPFByb3BlcnR5VmFsdWUgIFBhdGg9ICcgK1xuICAgICAgICAgICAgICAgICAgICBwYXRoU3BsaXRbMV0gK1xuICAgICAgICAgICAgICAgICAgICAnPidcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhZGRBbm5vdGF0aW9uRXJyb3JNZXNzYWdlKHBhdGgsIG9FcnJvck1zZyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBhdGhPbmx5KSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50UGF0aDtcbiAgICB9XG4gICAgaWYgKGluY2x1ZGVWaXNpdGVkT2JqZWN0cykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmlzaXRlZE9iamVjdHM6IGFWaXNpdGVkT2JqZWN0cyxcbiAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0XG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG59XG4vKipcbiAqIFR5cGVndWFyZCB0byBjaGVjayBpZiB0aGUgcGF0aCBjb250YWlucyBhbiBhbm5vdGF0aW9uLlxuICpcbiAqIEBwYXJhbSBwYXRoU3RyIHRoZSBwYXRoIHRvIGV2YWx1YXRlXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZXJlIGlzIGFuIGFubm90YXRpb24gaW4gdGhlIHBhdGguXG4gKi9cbmZ1bmN0aW9uIGlzQW5ub3RhdGlvblBhdGgocGF0aFN0cikge1xuICAgIHJldHVybiBwYXRoU3RyLmluZGV4T2YoJ0AnKSAhPT0gLTE7XG59XG5mdW5jdGlvbiBwYXJzZVZhbHVlKHByb3BlcnR5VmFsdWUsIHZhbHVlRlFOLCBvYmplY3RNYXAsIGNvbnRleHQpIHtcbiAgICBpZiAocHJvcGVydHlWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHN3aXRjaCAocHJvcGVydHlWYWx1ZS50eXBlKSB7XG4gICAgICAgIGNhc2UgJ1N0cmluZyc6XG4gICAgICAgICAgICByZXR1cm4gcHJvcGVydHlWYWx1ZS5TdHJpbmc7XG4gICAgICAgIGNhc2UgJ0ludCc6XG4gICAgICAgICAgICByZXR1cm4gcHJvcGVydHlWYWx1ZS5JbnQ7XG4gICAgICAgIGNhc2UgJ0Jvb2wnOlxuICAgICAgICAgICAgcmV0dXJuIHByb3BlcnR5VmFsdWUuQm9vbDtcbiAgICAgICAgY2FzZSAnRGVjaW1hbCc6XG4gICAgICAgICAgICByZXR1cm4gKDAsIHV0aWxzXzEuRGVjaW1hbCkocHJvcGVydHlWYWx1ZS5EZWNpbWFsKTtcbiAgICAgICAgY2FzZSAnRGF0ZSc6XG4gICAgICAgICAgICByZXR1cm4gcHJvcGVydHlWYWx1ZS5EYXRlO1xuICAgICAgICBjYXNlICdFbnVtTWVtYmVyJzpcbiAgICAgICAgICAgIHJldHVybiAoMCwgdXRpbHNfMS5hbGlhcykoY29udGV4dC5yYXdNZXRhZGF0YS5yZWZlcmVuY2VzLCBwcm9wZXJ0eVZhbHVlLkVudW1NZW1iZXIpO1xuICAgICAgICBjYXNlICdQcm9wZXJ0eVBhdGgnOlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnUHJvcGVydHlQYXRoJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogcHJvcGVydHlWYWx1ZS5Qcm9wZXJ0eVBhdGgsXG4gICAgICAgICAgICAgICAgZnVsbHlRdWFsaWZpZWROYW1lOiB2YWx1ZUZRTixcbiAgICAgICAgICAgICAgICAkdGFyZ2V0OiBfcmVzb2x2ZVRhcmdldChvYmplY3RNYXAsIGNvbnRleHQuY3VycmVudFRhcmdldCwgcHJvcGVydHlWYWx1ZS5Qcm9wZXJ0eVBhdGgsIGZhbHNlLCBmYWxzZSwgY29udGV4dC5jdXJyZW50VGVybSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ05hdmlnYXRpb25Qcm9wZXJ0eVBhdGgnOlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnTmF2aWdhdGlvblByb3BlcnR5UGF0aCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHByb3BlcnR5VmFsdWUuTmF2aWdhdGlvblByb3BlcnR5UGF0aCxcbiAgICAgICAgICAgICAgICBmdWxseVF1YWxpZmllZE5hbWU6IHZhbHVlRlFOLFxuICAgICAgICAgICAgICAgICR0YXJnZXQ6IF9yZXNvbHZlVGFyZ2V0KG9iamVjdE1hcCwgY29udGV4dC5jdXJyZW50VGFyZ2V0LCBwcm9wZXJ0eVZhbHVlLk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIGZhbHNlLCBmYWxzZSwgY29udGV4dC5jdXJyZW50VGVybSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ0Fubm90YXRpb25QYXRoJzpcbiAgICAgICAgICAgIGNvbnN0IGFubm90YXRpb25UYXJnZXQgPSBfcmVzb2x2ZVRhcmdldChvYmplY3RNYXAsIGNvbnRleHQuY3VycmVudFRhcmdldCwgKDAsIHV0aWxzXzEudW5hbGlhcykoY29udGV4dC5yYXdNZXRhZGF0YS5yZWZlcmVuY2VzLCBwcm9wZXJ0eVZhbHVlLkFubm90YXRpb25QYXRoKSwgdHJ1ZSwgZmFsc2UsIGNvbnRleHQuY3VycmVudFRlcm0pO1xuICAgICAgICAgICAgY29uc3QgYW5ub3RhdGlvblBhdGggPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ0Fubm90YXRpb25QYXRoJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogcHJvcGVydHlWYWx1ZS5Bbm5vdGF0aW9uUGF0aCxcbiAgICAgICAgICAgICAgICBmdWxseVF1YWxpZmllZE5hbWU6IHZhbHVlRlFOLFxuICAgICAgICAgICAgICAgICR0YXJnZXQ6IGFubm90YXRpb25UYXJnZXQsXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvbnNUZXJtOiBjb250ZXh0LmN1cnJlbnRUZXJtLFxuICAgICAgICAgICAgICAgIHRlcm06ICcnLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcnXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29udGV4dC51bnJlc29sdmVkQW5ub3RhdGlvbnMucHVzaCh7IGlubGluZTogZmFsc2UsIHRvUmVzb2x2ZTogYW5ub3RhdGlvblBhdGggfSk7XG4gICAgICAgICAgICByZXR1cm4gYW5ub3RhdGlvblBhdGg7XG4gICAgICAgIGNhc2UgJ1BhdGgnOlxuICAgICAgICAgICAgY29uc3QgJHRhcmdldCA9IF9yZXNvbHZlVGFyZ2V0KG9iamVjdE1hcCwgY29udGV4dC5jdXJyZW50VGFyZ2V0LCBwcm9wZXJ0eVZhbHVlLlBhdGgsIHRydWUsIGZhbHNlLCBjb250ZXh0LmN1cnJlbnRUZXJtKTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBuZXcgUGF0aChwcm9wZXJ0eVZhbHVlLCAkdGFyZ2V0LCBjb250ZXh0LmN1cnJlbnRUZXJtLCAnJyk7XG4gICAgICAgICAgICBjb250ZXh0LnVucmVzb2x2ZWRBbm5vdGF0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpbmxpbmU6IGlzQW5ub3RhdGlvblBhdGgocHJvcGVydHlWYWx1ZS5QYXRoKSxcbiAgICAgICAgICAgICAgICB0b1Jlc29sdmU6IHBhdGhcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgIGNhc2UgJ1JlY29yZCc6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VSZWNvcmQocHJvcGVydHlWYWx1ZS5SZWNvcmQsIHZhbHVlRlFOLCBvYmplY3RNYXAsIGNvbnRleHQpO1xuICAgICAgICBjYXNlICdDb2xsZWN0aW9uJzpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUNvbGxlY3Rpb24ocHJvcGVydHlWYWx1ZS5Db2xsZWN0aW9uLCB2YWx1ZUZRTiwgb2JqZWN0TWFwLCBjb250ZXh0KTtcbiAgICAgICAgY2FzZSAnQXBwbHknOlxuICAgICAgICBjYXNlICdOdWxsJzpcbiAgICAgICAgY2FzZSAnTm90JzpcbiAgICAgICAgY2FzZSAnRXEnOlxuICAgICAgICBjYXNlICdOZSc6XG4gICAgICAgIGNhc2UgJ0d0JzpcbiAgICAgICAgY2FzZSAnR2UnOlxuICAgICAgICBjYXNlICdMdCc6XG4gICAgICAgIGNhc2UgJ0xlJzpcbiAgICAgICAgY2FzZSAnSWYnOlxuICAgICAgICBjYXNlICdBbmQnOlxuICAgICAgICBjYXNlICdPcic6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gcHJvcGVydHlWYWx1ZTtcbiAgICB9XG59XG4vKipcbiAqIEluZmVyIHRoZSB0eXBlIG9mIGEgdGVybSBiYXNlZCBvbiBpdHMgdHlwZS5cbiAqXG4gKiBAcGFyYW0gYW5ub3RhdGlvbnNUZXJtIFRoZSBhbm5vdGF0aW9uIHRlcm1cbiAqIEBwYXJhbSBhbm5vdGF0aW9uVGFyZ2V0IHRoZSBhbm5vdGF0aW9uIHRhcmdldFxuICogQHJldHVybnMgdGhlIGluZmVycmVkIHR5cGUuXG4gKi9cbmZ1bmN0aW9uIGluZmVyVHlwZUZyb21UZXJtKGFubm90YXRpb25zVGVybSwgYW5ub3RhdGlvblRhcmdldCkge1xuICAgIGNvbnN0IHRhcmdldFR5cGUgPSB1dGlsc18xLlRlcm1Ub1R5cGVzW2Fubm90YXRpb25zVGVybV07XG4gICAgY29uc3Qgb0Vycm9yTXNnID0ge1xuICAgICAgICBpc0Vycm9yOiBmYWxzZSxcbiAgICAgICAgbWVzc2FnZTogYFRoZSB0eXBlIG9mIHRoZSByZWNvcmQgdXNlZCB3aXRoaW4gdGhlIHRlcm0gJHthbm5vdGF0aW9uc1Rlcm19IHdhcyBub3QgZGVmaW5lZCBhbmQgd2FzIGluZmVycmVkIGFzICR7dGFyZ2V0VHlwZX0uXG5IaW50OiBJZiBwb3NzaWJsZSwgdHJ5IHRvIG1haW50YWluIHRoZSBUeXBlIHByb3BlcnR5IGZvciBlYWNoIFJlY29yZC5cbjxBbm5vdGF0aW9ucyBUYXJnZXQ9XCIke2Fubm90YXRpb25UYXJnZXR9XCI+XG5cdDxBbm5vdGF0aW9uIFRlcm09XCIke2Fubm90YXRpb25zVGVybX1cIj5cblx0XHQ8UmVjb3JkPi4uLjwvUmVjb3JkPlxuXHQ8L0Fubm90YXRpb24+XG48L0Fubm90YXRpb25zPmBcbiAgICB9O1xuICAgIGFkZEFubm90YXRpb25FcnJvck1lc3NhZ2UoYW5ub3RhdGlvblRhcmdldCArICcvJyArIGFubm90YXRpb25zVGVybSwgb0Vycm9yTXNnKTtcbiAgICByZXR1cm4gdGFyZ2V0VHlwZTtcbn1cbmZ1bmN0aW9uIGlzRGF0YUZpZWxkV2l0aEZvckFjdGlvbihhbm5vdGF0aW9uQ29udGVudCwgYW5ub3RhdGlvblRlcm0pIHtcbiAgICByZXR1cm4gKGFubm90YXRpb25Db250ZW50Lmhhc093blByb3BlcnR5KCdBY3Rpb24nKSAmJlxuICAgICAgICAoYW5ub3RhdGlvblRlcm0uJFR5cGUgPT09ICdjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb24nIHx8XG4gICAgICAgICAgICBhbm5vdGF0aW9uVGVybS4kVHlwZSA9PT0gJ2NvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhBY3Rpb24nKSk7XG59XG5mdW5jdGlvbiBwYXJzZVJlY29yZFR5cGUocmVjb3JkRGVmaW5pdGlvbiwgY29udGV4dCkge1xuICAgIGxldCB0YXJnZXRUeXBlO1xuICAgIGlmICghcmVjb3JkRGVmaW5pdGlvbi50eXBlICYmIGNvbnRleHQuY3VycmVudFRlcm0pIHtcbiAgICAgICAgdGFyZ2V0VHlwZSA9IGluZmVyVHlwZUZyb21UZXJtKGNvbnRleHQuY3VycmVudFRlcm0sIGNvbnRleHQuY3VycmVudFRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGFyZ2V0VHlwZSA9ICgwLCB1dGlsc18xLnVuYWxpYXMpKGNvbnRleHQucmF3TWV0YWRhdGEucmVmZXJlbmNlcywgcmVjb3JkRGVmaW5pdGlvbi50eXBlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldFR5cGU7XG59XG5mdW5jdGlvbiBwYXJzZVJlY29yZChyZWNvcmREZWZpbml0aW9uLCBjdXJyZW50RlFOLCBvYmplY3RNYXAsIGNvbnRleHQpIHtcbiAgICBjb25zdCB0YXJnZXRUeXBlID0gcGFyc2VSZWNvcmRUeXBlKHJlY29yZERlZmluaXRpb24sIGNvbnRleHQpO1xuICAgIGNvbnN0IGFubm90YXRpb25UZXJtID0ge1xuICAgICAgICAkVHlwZTogdGFyZ2V0VHlwZSxcbiAgICAgICAgZnVsbHlRdWFsaWZpZWROYW1lOiBjdXJyZW50RlFOXG4gICAgfTtcbiAgICBjb25zdCBhbm5vdGF0aW9uQ29udGVudCA9IHt9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlY29yZERlZmluaXRpb24uYW5ub3RhdGlvbnMpKSB7XG4gICAgICAgIGNvbnN0IHN1YkFubm90YXRpb25MaXN0ID0ge1xuICAgICAgICAgICAgdGFyZ2V0OiBjdXJyZW50RlFOLFxuICAgICAgICAgICAgYW5ub3RhdGlvbnM6IHJlY29yZERlZmluaXRpb24uYW5ub3RhdGlvbnMsXG4gICAgICAgICAgICBfX3NvdXJjZTogY29udGV4dC5jdXJyZW50U291cmNlXG4gICAgICAgIH07XG4gICAgICAgIGNvbnRleHQuYWRkaXRpb25hbEFubm90YXRpb25zLnB1c2goc3ViQW5ub3RhdGlvbkxpc3QpO1xuICAgIH1cbiAgICBpZiAocmVjb3JkRGVmaW5pdGlvbi5wcm9wZXJ0eVZhbHVlcykge1xuICAgICAgICByZWNvcmREZWZpbml0aW9uLnByb3BlcnR5VmFsdWVzLmZvckVhY2goKHByb3BlcnR5VmFsdWUpID0+IHtcbiAgICAgICAgICAgIGFubm90YXRpb25Db250ZW50W3Byb3BlcnR5VmFsdWUubmFtZV0gPSBwYXJzZVZhbHVlKHByb3BlcnR5VmFsdWUudmFsdWUsIGAke2N1cnJlbnRGUU59LyR7cHJvcGVydHlWYWx1ZS5uYW1lfWAsIG9iamVjdE1hcCwgY29udGV4dCk7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wZXJ0eVZhbHVlLmFubm90YXRpb25zKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YkFubm90YXRpb25MaXN0ID0ge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGAke2N1cnJlbnRGUU59LyR7cHJvcGVydHlWYWx1ZS5uYW1lfWAsXG4gICAgICAgICAgICAgICAgICAgIGFubm90YXRpb25zOiBwcm9wZXJ0eVZhbHVlLmFubm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICBfX3NvdXJjZTogY29udGV4dC5jdXJyZW50U291cmNlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmFkZGl0aW9uYWxBbm5vdGF0aW9ucy5wdXNoKHN1YkFubm90YXRpb25MaXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0RhdGFGaWVsZFdpdGhGb3JBY3Rpb24oYW5ub3RhdGlvbkNvbnRlbnQsIGFubm90YXRpb25UZXJtKSkge1xuICAgICAgICAgICAgICAgIGFubm90YXRpb25Db250ZW50LkFjdGlvblRhcmdldCA9XG4gICAgICAgICAgICAgICAgICAgIChjb250ZXh0LmN1cnJlbnRUYXJnZXQuYWN0aW9ucyAmJiBjb250ZXh0LmN1cnJlbnRUYXJnZXQuYWN0aW9uc1thbm5vdGF0aW9uQ29udGVudC5BY3Rpb25dKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0TWFwW2Fubm90YXRpb25Db250ZW50LkFjdGlvbl07XG4gICAgICAgICAgICAgICAgaWYgKCFhbm5vdGF0aW9uQ29udGVudC5BY3Rpb25UYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQWRkIHRvIGRpYWdub3N0aWNzIGRlYnVnZ2VyO1xuICAgICAgICAgICAgICAgICAgICBBTk5PVEFUSU9OX0VSUk9SUy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdVbmFibGUgdG8gcmVzb2x2ZSB0aGUgYWN0aW9uICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb25Db250ZW50LkFjdGlvbiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBkZWZpbmVkIGZvciAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVGVybS5mdWxseVF1YWxpZmllZE5hbWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYW5ub3RhdGlvblRlcm0sIGFubm90YXRpb25Db250ZW50KTtcbn1cbi8qKlxuICogUmV0cmlldmUgb3IgaW5mZXIgdGhlIGNvbGxlY3Rpb24gdHlwZSBiYXNlZCBvbiBpdHMgY29udGVudC5cbiAqXG4gKiBAcGFyYW0gY29sbGVjdGlvbkRlZmluaXRpb25cbiAqIEByZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSBjb2xsZWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGdldE9ySW5mZXJDb2xsZWN0aW9uVHlwZShjb2xsZWN0aW9uRGVmaW5pdGlvbikge1xuICAgIGxldCB0eXBlID0gY29sbGVjdGlvbkRlZmluaXRpb24udHlwZTtcbiAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkICYmIGNvbGxlY3Rpb25EZWZpbml0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgZmlyc3RDb2xJdGVtID0gY29sbGVjdGlvbkRlZmluaXRpb25bMF07XG4gICAgICAgIGlmIChmaXJzdENvbEl0ZW0uaGFzT3duUHJvcGVydHkoJ1Byb3BlcnR5UGF0aCcpKSB7XG4gICAgICAgICAgICB0eXBlID0gJ1Byb3BlcnR5UGF0aCc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZmlyc3RDb2xJdGVtLmhhc093blByb3BlcnR5KCdQYXRoJykpIHtcbiAgICAgICAgICAgIHR5cGUgPSAnUGF0aCc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZmlyc3RDb2xJdGVtLmhhc093blByb3BlcnR5KCdBbm5vdGF0aW9uUGF0aCcpKSB7XG4gICAgICAgICAgICB0eXBlID0gJ0Fubm90YXRpb25QYXRoJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmaXJzdENvbEl0ZW0uaGFzT3duUHJvcGVydHkoJ05hdmlnYXRpb25Qcm9wZXJ0eVBhdGgnKSkge1xuICAgICAgICAgICAgdHlwZSA9ICdOYXZpZ2F0aW9uUHJvcGVydHlQYXRoJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgZmlyc3RDb2xJdGVtID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgKGZpcnN0Q29sSXRlbS5oYXNPd25Qcm9wZXJ0eSgndHlwZScpIHx8IGZpcnN0Q29sSXRlbS5oYXNPd25Qcm9wZXJ0eSgncHJvcGVydHlWYWx1ZXMnKSkpIHtcbiAgICAgICAgICAgIHR5cGUgPSAnUmVjb3JkJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgZmlyc3RDb2xJdGVtID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdHlwZSA9ICdTdHJpbmcnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0eXBlID0gJ0VtcHR5Q29sbGVjdGlvbic7XG4gICAgfVxuICAgIHJldHVybiB0eXBlO1xufVxuZnVuY3Rpb24gcGFyc2VDb2xsZWN0aW9uKGNvbGxlY3Rpb25EZWZpbml0aW9uLCBwYXJlbnRGUU4sIG9iamVjdE1hcCwgY29udGV4dCkge1xuICAgIGNvbnN0IGNvbGxlY3Rpb25EZWZpbml0aW9uVHlwZSA9IGdldE9ySW5mZXJDb2xsZWN0aW9uVHlwZShjb2xsZWN0aW9uRGVmaW5pdGlvbik7XG4gICAgc3dpdGNoIChjb2xsZWN0aW9uRGVmaW5pdGlvblR5cGUpIHtcbiAgICAgICAgY2FzZSAnUHJvcGVydHlQYXRoJzpcbiAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uRGVmaW5pdGlvbi5tYXAoKHByb3BlcnR5UGF0aCwgcHJvcGVydHlJZHgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUHJvcGVydHlQYXRoJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHByb3BlcnR5UGF0aC5Qcm9wZXJ0eVBhdGgsXG4gICAgICAgICAgICAgICAgICAgIGZ1bGx5UXVhbGlmaWVkTmFtZTogYCR7cGFyZW50RlFOfS8ke3Byb3BlcnR5SWR4fWAsXG4gICAgICAgICAgICAgICAgICAgICR0YXJnZXQ6IF9yZXNvbHZlVGFyZ2V0KG9iamVjdE1hcCwgY29udGV4dC5jdXJyZW50VGFyZ2V0LCBwcm9wZXJ0eVBhdGguUHJvcGVydHlQYXRoLCBmYWxzZSwgZmFsc2UsIGNvbnRleHQuY3VycmVudFRlcm0pXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlICdQYXRoJzpcbiAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uRGVmaW5pdGlvbi5tYXAoKHBhdGhWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0ICR0YXJnZXQgPSBfcmVzb2x2ZVRhcmdldChvYmplY3RNYXAsIGNvbnRleHQuY3VycmVudFRhcmdldCwgcGF0aFZhbHVlLlBhdGgsIHRydWUsIGZhbHNlLCBjb250ZXh0LmN1cnJlbnRUZXJtKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gbmV3IFBhdGgocGF0aFZhbHVlLCAkdGFyZ2V0LCBjb250ZXh0LmN1cnJlbnRUZXJtLCAnJyk7XG4gICAgICAgICAgICAgICAgY29udGV4dC51bnJlc29sdmVkQW5ub3RhdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGlubGluZTogaXNBbm5vdGF0aW9uUGF0aChwYXRoVmFsdWUuUGF0aCksXG4gICAgICAgICAgICAgICAgICAgIHRvUmVzb2x2ZTogcGF0aFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgJ0Fubm90YXRpb25QYXRoJzpcbiAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uRGVmaW5pdGlvbi5tYXAoKGFubm90YXRpb25QYXRoLCBhbm5vdGF0aW9uSWR4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW5ub3RhdGlvblRhcmdldCA9IF9yZXNvbHZlVGFyZ2V0KG9iamVjdE1hcCwgY29udGV4dC5jdXJyZW50VGFyZ2V0LCBhbm5vdGF0aW9uUGF0aC5Bbm5vdGF0aW9uUGF0aCwgdHJ1ZSwgZmFsc2UsIGNvbnRleHQuY3VycmVudFRlcm0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFubm90YXRpb25Db2xsZWN0aW9uRWxlbWVudCA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0Fubm90YXRpb25QYXRoJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGFubm90YXRpb25QYXRoLkFubm90YXRpb25QYXRoLFxuICAgICAgICAgICAgICAgICAgICBmdWxseVF1YWxpZmllZE5hbWU6IGAke3BhcmVudEZRTn0vJHthbm5vdGF0aW9uSWR4fWAsXG4gICAgICAgICAgICAgICAgICAgICR0YXJnZXQ6IGFubm90YXRpb25UYXJnZXQsXG4gICAgICAgICAgICAgICAgICAgIGFubm90YXRpb25zVGVybTogY29udGV4dC5jdXJyZW50VGVybSxcbiAgICAgICAgICAgICAgICAgICAgdGVybTogJycsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6ICcnXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnVucmVzb2x2ZWRBbm5vdGF0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgaW5saW5lOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgdG9SZXNvbHZlOiBhbm5vdGF0aW9uQ29sbGVjdGlvbkVsZW1lbnRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW5ub3RhdGlvbkNvbGxlY3Rpb25FbGVtZW50O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgJ05hdmlnYXRpb25Qcm9wZXJ0eVBhdGgnOlxuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25EZWZpbml0aW9uLm1hcCgobmF2UHJvcGVydHlQYXRoLCBuYXZQcm9wSWR4KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ05hdmlnYXRpb25Qcm9wZXJ0eVBhdGgnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmF2UHJvcGVydHlQYXRoLk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsXG4gICAgICAgICAgICAgICAgICAgIGZ1bGx5UXVhbGlmaWVkTmFtZTogYCR7cGFyZW50RlFOfS8ke25hdlByb3BJZHh9YCxcbiAgICAgICAgICAgICAgICAgICAgJHRhcmdldDogX3Jlc29sdmVUYXJnZXQob2JqZWN0TWFwLCBjb250ZXh0LmN1cnJlbnRUYXJnZXQsIG5hdlByb3BlcnR5UGF0aC5OYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBmYWxzZSwgZmFsc2UsIGNvbnRleHQuY3VycmVudFRlcm0pXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlICdSZWNvcmQnOlxuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25EZWZpbml0aW9uLm1hcCgocmVjb3JkRGVmaW5pdGlvbiwgcmVjb3JkSWR4KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlUmVjb3JkKHJlY29yZERlZmluaXRpb24sIGAke3BhcmVudEZRTn0vJHtyZWNvcmRJZHh9YCwgb2JqZWN0TWFwLCBjb250ZXh0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlICdBcHBseSc6XG4gICAgICAgIGNhc2UgJ051bGwnOlxuICAgICAgICBjYXNlICdJZic6XG4gICAgICAgIGNhc2UgJ0VxJzpcbiAgICAgICAgY2FzZSAnTmUnOlxuICAgICAgICBjYXNlICdMdCc6XG4gICAgICAgIGNhc2UgJ0d0JzpcbiAgICAgICAgY2FzZSAnTGUnOlxuICAgICAgICBjYXNlICdHZSc6XG4gICAgICAgIGNhc2UgJ05vdCc6XG4gICAgICAgIGNhc2UgJ0FuZCc6XG4gICAgICAgIGNhc2UgJ09yJzpcbiAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uRGVmaW5pdGlvbi5tYXAoKGlmVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWZWYWx1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlICdTdHJpbmcnOlxuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25EZWZpbml0aW9uLm1hcCgoc3RyaW5nVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHN0cmluZ1ZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RyaW5nVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0cmluZ1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1ZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1ZhbHVlLlN0cmluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uRGVmaW5pdGlvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGNhc2UnKTtcbiAgICB9XG59XG5mdW5jdGlvbiBjb252ZXJ0QW5ub3RhdGlvbihhbm5vdGF0aW9uLCBvYmplY3RNYXAsIGNvbnRleHQpIHtcbiAgICBpZiAoYW5ub3RhdGlvbi5yZWNvcmQpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlUmVjb3JkKGFubm90YXRpb24ucmVjb3JkLCBhbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSwgb2JqZWN0TWFwLCBjb250ZXh0KTtcbiAgICB9XG4gICAgZWxzZSBpZiAoYW5ub3RhdGlvbi5jb2xsZWN0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGFubm90YXRpb24udmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZVZhbHVlKGFubm90YXRpb24udmFsdWUsIGFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLCBvYmplY3RNYXAsIGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoYW5ub3RhdGlvbi5jb2xsZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBwYXJzZUNvbGxlY3Rpb24oYW5ub3RhdGlvbi5jb2xsZWN0aW9uLCBhbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSwgb2JqZWN0TWFwLCBjb250ZXh0KTtcbiAgICAgICAgY29sbGVjdGlvbi5mdWxseVF1YWxpZmllZE5hbWUgPSBhbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZTtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGNhc2UnKTtcbiAgICB9XG59XG4vKipcbiAqIENyZWF0ZXMgYSByZXNvbHZlUGF0aCBmdW5jdGlvbiBmb3IgYSBnaXZlbiBlbnRpdHlUeXBlLlxuICpcbiAqIEBwYXJhbSBlbnRpdHlUeXBlIFRoZSBlbnRpdHlUeXBlIGZvciB3aGljaCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNyZWF0ZWRcbiAqIEBwYXJhbSBvYmplY3RNYXAgVGhlIGN1cnJlbnQgb2JqZWN0TWFwXG4gKiBAcmV0dXJucyB0aGUgcmVzb2x2ZVBhdGggZnVuY3Rpb24gdGhhdCBzdGFydHMgYXQgdGhlIGVudGl0eVR5cGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlUmVzb2x2ZVBhdGhGbihlbnRpdHlUeXBlLCBvYmplY3RNYXApIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHJlbGF0aXZlUGF0aCwgaW5jbHVkZVZpc2l0ZWRPYmplY3RzKSB7XG4gICAgICAgIGNvbnN0IGFubm90YXRpb25UZXJtID0gJyc7XG4gICAgICAgIHJldHVybiBfcmVzb2x2ZVRhcmdldChvYmplY3RNYXAsIGVudGl0eVR5cGUsIHJlbGF0aXZlUGF0aCwgZmFsc2UsIGluY2x1ZGVWaXNpdGVkT2JqZWN0cywgYW5ub3RhdGlvblRlcm0pO1xuICAgIH07XG59XG5mdW5jdGlvbiByZXNvbHZlVjJOYXZpZ2F0aW9uUHJvcGVydHkobmF2UHJvcCwgYXNzb2NpYXRpb25zLCBvYmplY3RNYXAsIG91dE5hdlByb3ApIHtcbiAgICBjb25zdCB0YXJnZXRBc3NvY2lhdGlvbiA9IGFzc29jaWF0aW9ucy5maW5kKChhc3NvY2lhdGlvbikgPT4gYXNzb2NpYXRpb24uZnVsbHlRdWFsaWZpZWROYW1lID09PSBuYXZQcm9wLnJlbGF0aW9uc2hpcCk7XG4gICAgaWYgKHRhcmdldEFzc29jaWF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGFzc29jaWF0aW9uRW5kID0gdGFyZ2V0QXNzb2NpYXRpb24uYXNzb2NpYXRpb25FbmQuZmluZCgoZW5kKSA9PiBlbmQucm9sZSA9PT0gbmF2UHJvcC50b1JvbGUpO1xuICAgICAgICBpZiAoYXNzb2NpYXRpb25FbmQpIHtcbiAgICAgICAgICAgIG91dE5hdlByb3AudGFyZ2V0VHlwZSA9IG9iamVjdE1hcFthc3NvY2lhdGlvbkVuZC50eXBlXTtcbiAgICAgICAgICAgIG91dE5hdlByb3AuaXNDb2xsZWN0aW9uID0gYXNzb2NpYXRpb25FbmQubXVsdGlwbGljaXR5ID09PSAnKic7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiByZXNvbHZlVjROYXZpZ2F0aW9uUHJvcGVydHkobmF2UHJvcCwgb2JqZWN0TWFwLCBvdXROYXZQcm9wKSB7XG4gICAgb3V0TmF2UHJvcC50YXJnZXRUeXBlID0gb2JqZWN0TWFwW25hdlByb3AudGFyZ2V0VHlwZU5hbWVdO1xuICAgIG91dE5hdlByb3AucGFydG5lciA9IG5hdlByb3AucGFydG5lcjtcbiAgICBvdXROYXZQcm9wLmlzQ29sbGVjdGlvbiA9IG5hdlByb3AuaXNDb2xsZWN0aW9uO1xuICAgIG91dE5hdlByb3AuY29udGFpbnNUYXJnZXQgPSBuYXZQcm9wLmNvbnRhaW5zVGFyZ2V0O1xuICAgIG91dE5hdlByb3AucmVmZXJlbnRpYWxDb25zdHJhaW50ID0gbmF2UHJvcC5yZWZlcmVudGlhbENvbnN0cmFpbnQ7XG59XG5mdW5jdGlvbiBpc1Y0TmF2aWdhdGlvblByb3BlcnR5KG5hdlByb3ApIHtcbiAgICByZXR1cm4gISFuYXZQcm9wLnRhcmdldFR5cGVOYW1lO1xufVxuZnVuY3Rpb24gcHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0aWVzKG5hdmlnYXRpb25Qcm9wZXJ0aWVzLCBhc3NvY2lhdGlvbnMsIG9iamVjdE1hcCkge1xuICAgIHJldHVybiBuYXZpZ2F0aW9uUHJvcGVydGllcy5tYXAoKG5hdlByb3ApID0+IHtcbiAgICAgICAgY29uc3Qgb3V0TmF2UHJvcCA9IHtcbiAgICAgICAgICAgIF90eXBlOiAnTmF2aWdhdGlvblByb3BlcnR5JyxcbiAgICAgICAgICAgIG5hbWU6IG5hdlByb3AubmFtZSxcbiAgICAgICAgICAgIGZ1bGx5UXVhbGlmaWVkTmFtZTogbmF2UHJvcC5mdWxseVF1YWxpZmllZE5hbWUsXG4gICAgICAgICAgICBpc0NvbGxlY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgY29udGFpbnNUYXJnZXQ6IGZhbHNlLFxuICAgICAgICAgICAgcmVmZXJlbnRpYWxDb25zdHJhaW50OiBbXSxcbiAgICAgICAgICAgIGFubm90YXRpb25zOiB7fSxcbiAgICAgICAgICAgIHBhcnRuZXI6ICcnLFxuICAgICAgICAgICAgdGFyZ2V0VHlwZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdGFyZ2V0VHlwZU5hbWU6ICcnXG4gICAgICAgIH07XG4gICAgICAgIGlmIChpc1Y0TmF2aWdhdGlvblByb3BlcnR5KG5hdlByb3ApKSB7XG4gICAgICAgICAgICByZXNvbHZlVjROYXZpZ2F0aW9uUHJvcGVydHkobmF2UHJvcCwgb2JqZWN0TWFwLCBvdXROYXZQcm9wKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmVWMk5hdmlnYXRpb25Qcm9wZXJ0eShuYXZQcm9wLCBhc3NvY2lhdGlvbnMsIG9iamVjdE1hcCwgb3V0TmF2UHJvcCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG91dE5hdlByb3AudGFyZ2V0VHlwZSkge1xuICAgICAgICAgICAgb3V0TmF2UHJvcC50YXJnZXRUeXBlTmFtZSA9IG91dE5hdlByb3AudGFyZ2V0VHlwZS5mdWxseVF1YWxpZmllZE5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0TWFwW291dE5hdlByb3AuZnVsbHlRdWFsaWZpZWROYW1lXSA9IG91dE5hdlByb3A7XG4gICAgICAgIHJldHVybiBvdXROYXZQcm9wO1xuICAgIH0pO1xufVxuLyoqXG4gKiBAcGFyYW0gZW50aXR5VHlwZXNcbiAqIEBwYXJhbSBhc3NvY2lhdGlvbnNcbiAqIEBwYXJhbSBvYmplY3RNYXBcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZU5hdmlnYXRpb25Qcm9wZXJ0aWVzKGVudGl0eVR5cGVzLCBhc3NvY2lhdGlvbnMsIG9iamVjdE1hcCkge1xuICAgIGVudGl0eVR5cGVzLmZvckVhY2goKGVudGl0eVR5cGUpID0+IHtcbiAgICAgICAgZW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcyA9IHByZXBhcmVOYXZpZ2F0aW9uUHJvcGVydGllcyhlbnRpdHlUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLCBhc3NvY2lhdGlvbnMsIG9iamVjdE1hcCk7XG4gICAgICAgIGVudGl0eVR5cGUucmVzb2x2ZVBhdGggPSBjcmVhdGVSZXNvbHZlUGF0aEZuKGVudGl0eVR5cGUsIG9iamVjdE1hcCk7XG4gICAgfSk7XG59XG4vKipcbiAqIEBwYXJhbSBuYW1lc3BhY2VcbiAqIEBwYXJhbSBhY3Rpb25zXG4gKiBAcGFyYW0gb2JqZWN0TWFwXG4gKi9cbmZ1bmN0aW9uIGxpbmtBY3Rpb25zVG9FbnRpdHlUeXBlKG5hbWVzcGFjZSwgYWN0aW9ucywgb2JqZWN0TWFwKSB7XG4gICAgYWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgICAgaWYgKCFhY3Rpb24uYW5ub3RhdGlvbnMpIHtcbiAgICAgICAgICAgIGFjdGlvbi5hbm5vdGF0aW9ucyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3Rpb24uaXNCb3VuZCkge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlRW50aXR5VHlwZSA9IG9iamVjdE1hcFthY3Rpb24uc291cmNlVHlwZV07XG4gICAgICAgICAgICBhY3Rpb24uc291cmNlRW50aXR5VHlwZSA9IHNvdXJjZUVudGl0eVR5cGU7XG4gICAgICAgICAgICBpZiAoc291cmNlRW50aXR5VHlwZSkge1xuICAgICAgICAgICAgICAgIGlmICghc291cmNlRW50aXR5VHlwZS5hY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZUVudGl0eVR5cGUuYWN0aW9ucyA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzb3VyY2VFbnRpdHlUeXBlLmFjdGlvbnNbYWN0aW9uLm5hbWVdID0gYWN0aW9uO1xuICAgICAgICAgICAgICAgIHNvdXJjZUVudGl0eVR5cGUuYWN0aW9uc1tgJHtuYW1lc3BhY2V9LiR7YWN0aW9uLm5hbWV9YF0gPSBhY3Rpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY3Rpb24ucmV0dXJuRW50aXR5VHlwZSA9IG9iamVjdE1hcFthY3Rpb24ucmV0dXJuVHlwZV07XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8qKlxuICogQHBhcmFtIGVudGl0eVNldHNcbiAqIEBwYXJhbSBvYmplY3RNYXBcbiAqIEBwYXJhbSByZWZlcmVuY2VzXG4gKi9cbmZ1bmN0aW9uIGxpbmtFbnRpdHlUeXBlVG9FbnRpdHlTZXQoZW50aXR5U2V0cywgb2JqZWN0TWFwLCByZWZlcmVuY2VzKSB7XG4gICAgZW50aXR5U2V0cy5mb3JFYWNoKChlbnRpdHlTZXQpID0+IHtcbiAgICAgICAgZW50aXR5U2V0LmVudGl0eVR5cGUgPSBvYmplY3RNYXBbZW50aXR5U2V0LmVudGl0eVR5cGVOYW1lXTtcbiAgICAgICAgaWYgKCFlbnRpdHlTZXQuZW50aXR5VHlwZSkge1xuICAgICAgICAgICAgZW50aXR5U2V0LmVudGl0eVR5cGUgPSBvYmplY3RNYXBbKDAsIHV0aWxzXzEudW5hbGlhcykocmVmZXJlbmNlcywgZW50aXR5U2V0LmVudGl0eVR5cGVOYW1lKV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFlbnRpdHlTZXQuYW5ub3RhdGlvbnMpIHtcbiAgICAgICAgICAgIGVudGl0eVNldC5hbm5vdGF0aW9ucyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGlmICghZW50aXR5U2V0LmVudGl0eVR5cGUuYW5ub3RhdGlvbnMpIHtcbiAgICAgICAgICAgIGVudGl0eVNldC5lbnRpdHlUeXBlLmFubm90YXRpb25zID0ge307XG4gICAgICAgIH1cbiAgICAgICAgZW50aXR5U2V0LmVudGl0eVR5cGUua2V5cy5mb3JFYWNoKChrZXlQcm9wKSA9PiB7XG4gICAgICAgICAgICBrZXlQcm9wLmlzS2V5ID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG4vKipcbiAqIEBwYXJhbSBzaW5nbGV0b25zXG4gKiBAcGFyYW0gb2JqZWN0TWFwXG4gKiBAcGFyYW0gcmVmZXJlbmNlc1xuICovXG5mdW5jdGlvbiBsaW5rRW50aXR5VHlwZVRvU2luZ2xldG9uKHNpbmdsZXRvbnMsIG9iamVjdE1hcCwgcmVmZXJlbmNlcykge1xuICAgIHNpbmdsZXRvbnMuZm9yRWFjaCgoc2luZ2xldG9uKSA9PiB7XG4gICAgICAgIHNpbmdsZXRvbi5lbnRpdHlUeXBlID0gb2JqZWN0TWFwW3NpbmdsZXRvbi5lbnRpdHlUeXBlTmFtZV07XG4gICAgICAgIGlmICghc2luZ2xldG9uLmVudGl0eVR5cGUpIHtcbiAgICAgICAgICAgIHNpbmdsZXRvbi5lbnRpdHlUeXBlID0gb2JqZWN0TWFwWygwLCB1dGlsc18xLnVuYWxpYXMpKHJlZmVyZW5jZXMsIHNpbmdsZXRvbi5lbnRpdHlUeXBlTmFtZSldO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2luZ2xldG9uLmFubm90YXRpb25zKSB7XG4gICAgICAgICAgICBzaW5nbGV0b24uYW5ub3RhdGlvbnMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNpbmdsZXRvbi5lbnRpdHlUeXBlLmFubm90YXRpb25zKSB7XG4gICAgICAgICAgICBzaW5nbGV0b24uZW50aXR5VHlwZS5hbm5vdGF0aW9ucyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHNpbmdsZXRvbi5lbnRpdHlUeXBlLmtleXMuZm9yRWFjaCgoa2V5UHJvcCkgPT4ge1xuICAgICAgICAgICAga2V5UHJvcC5pc0tleSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuLyoqXG4gKiBAcGFyYW0gZW50aXR5VHlwZXNcbiAqIEBwYXJhbSBvYmplY3RNYXBcbiAqL1xuZnVuY3Rpb24gbGlua1Byb3BlcnRpZXNUb0NvbXBsZXhUeXBlcyhlbnRpdHlUeXBlcywgb2JqZWN0TWFwKSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHByb3BlcnR5XG4gICAgICovXG4gICAgZnVuY3Rpb24gbGluayhwcm9wZXJ0eSkge1xuICAgICAgICBpZiAoIXByb3BlcnR5LmFubm90YXRpb25zKSB7XG4gICAgICAgICAgICBwcm9wZXJ0eS5hbm5vdGF0aW9ucyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAocHJvcGVydHkudHlwZS5pbmRleE9mKCdFZG0nKSAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGxldCBjb21wbGV4VHlwZTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkudHlwZS5zdGFydHNXaXRoKCdDb2xsZWN0aW9uJykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcGxleFR5cGVOYW1lID0gcHJvcGVydHkudHlwZS5zdWJzdHJpbmcoMTEsIHByb3BlcnR5LnR5cGUubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXhUeXBlID0gb2JqZWN0TWFwW2NvbXBsZXhUeXBlTmFtZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb21wbGV4VHlwZSA9IG9iamVjdE1hcFtwcm9wZXJ0eS50eXBlXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbXBsZXhUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5LnRhcmdldFR5cGUgPSBjb21wbGV4VHlwZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBsZXhUeXBlLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXhUeXBlLnByb3BlcnRpZXMuZm9yRWFjaChsaW5rKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoc0Vycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb3BlcnR5IFR5cGUgaXMgbm90IGRlZmluZWQnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbnRpdHlUeXBlcy5mb3JFYWNoKChlbnRpdHlUeXBlKSA9PiB7XG4gICAgICAgIGVudGl0eVR5cGUuZW50aXR5UHJvcGVydGllcy5mb3JFYWNoKGxpbmspO1xuICAgIH0pO1xufVxuLyoqXG4gKiBAcGFyYW0gY29tcGxleFR5cGVzXG4gKiBAcGFyYW0gYXNzb2NpYXRpb25zXG4gKiBAcGFyYW0gb2JqZWN0TWFwXG4gKi9cbmZ1bmN0aW9uIHByZXBhcmVDb21wbGV4VHlwZXMoY29tcGxleFR5cGVzLCBhc3NvY2lhdGlvbnMsIG9iamVjdE1hcCkge1xuICAgIGNvbXBsZXhUeXBlcy5mb3JFYWNoKChjb21wbGV4VHlwZSkgPT4ge1xuICAgICAgICBjb21wbGV4VHlwZS5hbm5vdGF0aW9ucyA9IHt9O1xuICAgICAgICBjb21wbGV4VHlwZS5wcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXByb3BlcnR5LmFubm90YXRpb25zKSB7XG4gICAgICAgICAgICAgICAgcHJvcGVydHkuYW5ub3RhdGlvbnMgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbXBsZXhUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gcHJlcGFyZU5hdmlnYXRpb25Qcm9wZXJ0aWVzKGNvbXBsZXhUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLCBhc3NvY2lhdGlvbnMsIG9iamVjdE1hcCk7XG4gICAgfSk7XG59XG4vKipcbiAqIFNwbGl0IHRoZSBhbGlhcyBmcm9tIHRoZSB0ZXJtIHZhbHVlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2VzIHRoZSBjdXJyZW50IHNldCBvZiByZWZlcmVuY2VzXG4gKiBAcGFyYW0gdGVybVZhbHVlIHRoZSB2YWx1ZSBvZiB0aGUgdGVybVxuICogQHJldHVybnMgdGhlIHRlcm0gYWxpYXMgYW5kIHRoZSBhY3R1YWwgdGVybSB2YWx1ZVxuICovXG5mdW5jdGlvbiBzcGxpdFRlcm0ocmVmZXJlbmNlcywgdGVybVZhbHVlKSB7XG4gICAgY29uc3QgYWxpYXNlZFRlcm0gPSAoMCwgdXRpbHNfMS5hbGlhcykocmVmZXJlbmNlcywgdGVybVZhbHVlKTtcbiAgICBjb25zdCBsYXN0RG90ID0gYWxpYXNlZFRlcm0ubGFzdEluZGV4T2YoJy4nKTtcbiAgICBjb25zdCB0ZXJtQWxpYXMgPSBhbGlhc2VkVGVybS5zdWJzdHJpbmcoMCwgbGFzdERvdCk7XG4gICAgY29uc3QgdGVybSA9IGFsaWFzZWRUZXJtLnN1YnN0cmluZyhsYXN0RG90ICsgMSk7XG4gICAgcmV0dXJuIFt0ZXJtQWxpYXMsIHRlcm1dO1xufVxuLyoqXG4gKiBDcmVhdGVzIHRoZSBmdW5jdGlvbiB0aGF0IHdpbGwgcmVzb2x2ZSBhIHNwZWNpZmljIHBhdGguXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlZE91dHB1dFxuICogQHBhcmFtIG9iamVjdE1hcFxuICogQHJldHVybnMgdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCBhbGxvdyB0byByZXNvbHZlIGVsZW1lbnQgZ2xvYmFsbHkuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUdsb2JhbFJlc29sdmUoY29udmVydGVkT3V0cHV0LCBvYmplY3RNYXApIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gcmVzb2x2ZVBhdGgoc1BhdGgpIHtcbiAgICAgICAgY29uc3QgYVBhdGhTcGxpdCA9IHNQYXRoLnNwbGl0KCcvJyk7XG4gICAgICAgIGlmIChhUGF0aFNwbGl0LnNoaWZ0KCkgIT09ICcnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWFsIHdpdGggcmVsYXRpdmUgcGF0aCcpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVudGl0eVNldE5hbWUgPSBhUGF0aFNwbGl0LnNoaWZ0KCk7XG4gICAgICAgIGNvbnN0IGVudGl0eVNldCA9IGNvbnZlcnRlZE91dHB1dC5lbnRpdHlTZXRzLmZpbmQoKGV0KSA9PiBldC5uYW1lID09PSBlbnRpdHlTZXROYW1lKTtcbiAgICAgICAgaWYgKCFlbnRpdHlTZXQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0OiBjb252ZXJ0ZWRPdXRwdXQuZW50aXR5Q29udGFpbmVyLFxuICAgICAgICAgICAgICAgIG9iamVjdFBhdGg6IFtjb252ZXJ0ZWRPdXRwdXQuZW50aXR5Q29udGFpbmVyXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYVBhdGhTcGxpdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0OiBlbnRpdHlTZXQsXG4gICAgICAgICAgICAgICAgb2JqZWN0UGF0aDogW2NvbnZlcnRlZE91dHB1dC5lbnRpdHlDb250YWluZXIsIGVudGl0eVNldF1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRSZXNvbHV0aW9uID0gX3Jlc29sdmVUYXJnZXQob2JqZWN0TWFwLCBlbnRpdHlTZXQsICcvJyArIGFQYXRoU3BsaXQuam9pbignLycpLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAodGFyZ2V0UmVzb2x1dGlvbi50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRSZXNvbHV0aW9uLnZpc2l0ZWRPYmplY3RzLnB1c2godGFyZ2V0UmVzb2x1dGlvbi50YXJnZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHRhcmdldFJlc29sdXRpb24udGFyZ2V0LFxuICAgICAgICAgICAgICAgIG9iamVjdFBhdGg6IHRhcmdldFJlc29sdXRpb24udmlzaXRlZE9iamVjdHNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gZW5zdXJlQW5ub3RhdGlvbnMoY3VycmVudFRhcmdldCwgdm9jQWxpYXMpIHtcbiAgICBpZiAoIWN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnMpIHtcbiAgICAgICAgY3VycmVudFRhcmdldC5hbm5vdGF0aW9ucyA9IHt9O1xuICAgIH1cbiAgICBpZiAoIWN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdKSB7XG4gICAgICAgIGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdID0ge307XG4gICAgfVxuICAgIGlmICghY3VycmVudFRhcmdldC5hbm5vdGF0aW9ucy5fYW5ub3RhdGlvbnMpIHtcbiAgICAgICAgY3VycmVudFRhcmdldC5hbm5vdGF0aW9ucy5fYW5ub3RhdGlvbnMgPSB7fTtcbiAgICB9XG59XG5mdW5jdGlvbiBwcm9jZXNzQW5ub3RhdGlvbnMoY3VycmVudENvbnRleHQsIGFubm90YXRpb25MaXN0LCBvYmplY3RNYXAsIGJPdmVycmlkZUV4aXN0aW5nKSB7XG4gICAgY29uc3QgY3VycmVudFRhcmdldCA9IGN1cnJlbnRDb250ZXh0LmN1cnJlbnRUYXJnZXQ7XG4gICAgY29uc3QgY3VycmVudFRhcmdldE5hbWUgPSBjdXJyZW50VGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZTtcbiAgICBhbm5vdGF0aW9uTGlzdC5hbm5vdGF0aW9ucy5mb3JFYWNoKChhbm5vdGF0aW9uKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGN1cnJlbnRDb250ZXh0LmN1cnJlbnRTb3VyY2UgPSBhbm5vdGF0aW9uLl9fc291cmNlIHx8IGFubm90YXRpb25MaXN0Ll9fc291cmNlO1xuICAgICAgICBjb25zdCBbdm9jQWxpYXMsIHZvY1Rlcm1dID0gc3BsaXRUZXJtKHV0aWxzXzEuZGVmYXVsdFJlZmVyZW5jZXMsIGFubm90YXRpb24udGVybSk7XG4gICAgICAgIGVuc3VyZUFubm90YXRpb25zKGN1cnJlbnRUYXJnZXQsIHZvY0FsaWFzKTtcbiAgICAgICAgY29uc3Qgdm9jVGVybVdpdGhRdWFsaWZpZXIgPSBgJHt2b2NUZXJtfSR7YW5ub3RhdGlvbi5xdWFsaWZpZXIgPyAnIycgKyBhbm5vdGF0aW9uLnF1YWxpZmllciA6ICcnfWA7XG4gICAgICAgIGlmICghYk92ZXJyaWRlRXhpc3RpbmcgJiYgKChfYiA9IChfYSA9IGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVt2b2NBbGlhc10pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYlt2b2NUZXJtV2l0aFF1YWxpZmllcl0pICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50Q29udGV4dC5jdXJyZW50VGVybSA9IGFubm90YXRpb24udGVybTtcbiAgICAgICAgY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdID0gY29udmVydEFubm90YXRpb24oYW5ub3RhdGlvbiwgb2JqZWN0TWFwLCBjdXJyZW50Q29udGV4dCk7XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXSkge1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LXdyYXBwZXJzXG4gICAgICAgICAgICAgICAgY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdID0gbmV3IFN0cmluZyhjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy13cmFwcGVyc1xuICAgICAgICAgICAgICAgIGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXSA9IG5ldyBCb29sZWFuKGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdICE9PSBudWxsICYmXG4gICAgICAgICAgICB0eXBlb2YgY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdLnRlcm0gPSAoMCwgdXRpbHNfMS51bmFsaWFzKSh1dGlsc18xLmRlZmF1bHRSZWZlcmVuY2VzLCBgJHt2b2NBbGlhc30uJHt2b2NUZXJtfWApO1xuICAgICAgICAgICAgY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdLnF1YWxpZmllciA9IGFubm90YXRpb24ucXVhbGlmaWVyO1xuICAgICAgICAgICAgY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdLl9fc291cmNlID0gY3VycmVudENvbnRleHQuY3VycmVudFNvdXJjZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbm5vdGF0aW9uVGFyZ2V0ID0gYCR7Y3VycmVudFRhcmdldE5hbWV9QCR7KDAsIHV0aWxzXzEudW5hbGlhcykodXRpbHNfMS5kZWZhdWx0UmVmZXJlbmNlcywgdm9jQWxpYXMgKyAnLicgKyB2b2NUZXJtV2l0aFF1YWxpZmllcil9YDtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYW5ub3RhdGlvbi5hbm5vdGF0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1YkFubm90YXRpb25MaXN0ID0ge1xuICAgICAgICAgICAgICAgIHRhcmdldDogYW5ub3RhdGlvblRhcmdldCxcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uczogYW5ub3RhdGlvbi5hbm5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICBfX3NvdXJjZTogY3VycmVudENvbnRleHQuY3VycmVudFNvdXJjZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGN1cnJlbnRDb250ZXh0LmFkZGl0aW9uYWxBbm5vdGF0aW9ucy5wdXNoKHN1YkFubm90YXRpb25MaXN0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhbm5vdGF0aW9uLmFubm90YXRpb25zICYmICFjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl0uYW5ub3RhdGlvbnMpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUYXJnZXQuYW5ub3RhdGlvbnNbdm9jQWxpYXNdW3ZvY1Rlcm1XaXRoUXVhbGlmaWVyXS5hbm5vdGF0aW9ucyA9IGFubm90YXRpb24uYW5ub3RhdGlvbnM7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudFRhcmdldC5hbm5vdGF0aW9ucy5fYW5ub3RhdGlvbnNbYCR7dm9jQWxpYXN9LiR7dm9jVGVybVdpdGhRdWFsaWZpZXJ9YF0gPVxuICAgICAgICAgICAgY3VycmVudFRhcmdldC5hbm5vdGF0aW9uc1t2b2NBbGlhc11bdm9jVGVybVdpdGhRdWFsaWZpZXJdO1xuICAgICAgICBvYmplY3RNYXBbYW5ub3RhdGlvblRhcmdldF0gPSBjdXJyZW50VGFyZ2V0LmFubm90YXRpb25zW3ZvY0FsaWFzXVt2b2NUZXJtV2l0aFF1YWxpZmllcl07XG4gICAgfSk7XG59XG4vKipcbiAqIFByb2Nlc3MgYWxsIHRoZSB1bnJlc29sdmVkIHRhcmdldHMgc28gZmFyIHRvIHRyeSBhbmQgc2VlIGlmIHRoZXkgYXJlIHJlc29sdmVhYmxlIGluIHRoZSBlbmQuXG4gKlxuICogQHBhcmFtIHVucmVzb2x2ZWRUYXJnZXRzXG4gKiBAcGFyYW0gb2JqZWN0TWFwXG4gKi9cbmZ1bmN0aW9uIHByb2Nlc3NVbnJlc29sdmVkVGFyZ2V0cyh1bnJlc29sdmVkVGFyZ2V0cywgb2JqZWN0TWFwKSB7XG4gICAgdW5yZXNvbHZlZFRhcmdldHMuZm9yRWFjaCgocmVzb2x2YWJsZSkgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXRUb1Jlc29sdmUgPSByZXNvbHZhYmxlLnRvUmVzb2x2ZTtcbiAgICAgICAgY29uc3QgdGFyZ2V0U3RyID0gdGFyZ2V0VG9SZXNvbHZlLiR0YXJnZXQ7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gb2JqZWN0TWFwW3RhcmdldFN0cl07XG4gICAgICAgIGNvbnN0IHsgYW5ub3RhdGlvbnNUZXJtLCBhbm5vdGF0aW9uVHlwZSB9ID0gdGFyZ2V0VG9SZXNvbHZlO1xuICAgICAgICBkZWxldGUgdGFyZ2V0VG9SZXNvbHZlLmFubm90YXRpb25UeXBlO1xuICAgICAgICBkZWxldGUgdGFyZ2V0VG9SZXNvbHZlLmFubm90YXRpb25zVGVybTtcbiAgICAgICAgaWYgKHJlc29sdmFibGUuaW5saW5lICYmICEocmVzb2x2ZWRUYXJnZXQgaW5zdGFuY2VvZiBTdHJpbmcpKSB7XG4gICAgICAgICAgICAvLyBpbmxpbmUgdGhlIHJlc29sdmVkIHRhcmdldFxuICAgICAgICAgICAgbGV0IGtleXM7XG4gICAgICAgICAgICBmb3IgKGtleXMgaW4gdGFyZ2V0VG9SZXNvbHZlKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRhcmdldFRvUmVzb2x2ZVtrZXlzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGFyZ2V0VG9SZXNvbHZlLCByZXNvbHZlZFRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBhc3NpZ24gdGhlIHJlc29sdmVkIHRhcmdldFxuICAgICAgICAgICAgdGFyZ2V0VG9SZXNvbHZlLiR0YXJnZXQgPSByZXNvbHZlZFRhcmdldDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJlc29sdmVkVGFyZ2V0KSB7XG4gICAgICAgICAgICB0YXJnZXRUb1Jlc29sdmUudGFyZ2V0U3RyaW5nID0gdGFyZ2V0U3RyO1xuICAgICAgICAgICAgaWYgKGFubm90YXRpb25zVGVybSAmJiBhbm5vdGF0aW9uVHlwZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9FcnJvck1zZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1VuYWJsZSB0byByZXNvbHZlIHRoZSBwYXRoIGV4cHJlc3Npb246ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0U3RyICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdIaW50OiBDaGVjayBhbmQgY29ycmVjdCB0aGUgcGF0aCB2YWx1ZXMgdW5kZXIgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgaW4gdGhlIG1ldGFkYXRhIChhbm5vdGF0aW9uLnhtbCBmaWxlIG9yIENEUyBhbm5vdGF0aW9ucyBmb3IgdGhlIGFwcGxpY2F0aW9uKTogXFxuXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnPEFubm90YXRpb24gVGVybSA9ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbnNUZXJtICtcbiAgICAgICAgICAgICAgICAgICAgICAgICc+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnPFJlY29yZCBUeXBlID0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJzxBbm5vdGF0aW9uUGF0aCA9ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0U3RyICtcbiAgICAgICAgICAgICAgICAgICAgICAgICc+J1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYWRkQW5ub3RhdGlvbkVycm9yTWVzc2FnZSh0YXJnZXRTdHIsIG9FcnJvck1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHRhcmdldFRvUmVzb2x2ZS50ZXJtO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSB0YXJnZXRUb1Jlc29sdmUucGF0aDtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXJtSW5mbyA9IHRhcmdldFN0ciA/IHRhcmdldFN0ci5zcGxpdCgnLycpWzBdIDogdGFyZ2V0U3RyO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9FcnJvck1zZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1VuYWJsZSB0byByZXNvbHZlIHRoZSBwYXRoIGV4cHJlc3Npb246ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0U3RyICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdIaW50OiBDaGVjayBhbmQgY29ycmVjdCB0aGUgcGF0aCB2YWx1ZXMgdW5kZXIgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgaW4gdGhlIG1ldGFkYXRhIChhbm5vdGF0aW9uLnhtbCBmaWxlIG9yIENEUyBhbm5vdGF0aW9ucyBmb3IgdGhlIGFwcGxpY2F0aW9uKTogXFxuXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnPEFubm90YXRpb24gVGVybSA9ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVybUluZm8gK1xuICAgICAgICAgICAgICAgICAgICAgICAgJz4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICc8UHJvcGVydHlWYWx1ZSBQcm9wZXJ0eSA9ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgUGF0aD0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoICtcbiAgICAgICAgICAgICAgICAgICAgICAgICc+J1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYWRkQW5ub3RhdGlvbkVycm9yTWVzc2FnZSh0YXJnZXRTdHIsIG9FcnJvck1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8qKlxuICogTWVyZ2UgYW5ub3RhdGlvbiBmcm9tIGRpZmZlcmVudCBzb3VyY2UgdG9nZXRoZXIgYnkgb3ZlcndyaXRpbmcgYXQgdGhlIHRlcm0gbGV2ZWwuXG4gKlxuICogQHBhcmFtIHJhd01ldGFkYXRhXG4gKiBAcmV0dXJucyB0aGUgcmVzdWx0aW5nIG1lcmdlZCBhbm5vdGF0aW9uc1xuICovXG5mdW5jdGlvbiBtZXJnZUFubm90YXRpb25zKHJhd01ldGFkYXRhKSB7XG4gICAgY29uc3QgYW5ub3RhdGlvbkxpc3RQZXJUYXJnZXQgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhyYXdNZXRhZGF0YS5zY2hlbWEuYW5ub3RhdGlvbnMpLmZvckVhY2goKGFubm90YXRpb25Tb3VyY2UpID0+IHtcbiAgICAgICAgcmF3TWV0YWRhdGEuc2NoZW1hLmFubm90YXRpb25zW2Fubm90YXRpb25Tb3VyY2VdLmZvckVhY2goKGFubm90YXRpb25MaXN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VGFyZ2V0TmFtZSA9ICgwLCB1dGlsc18xLnVuYWxpYXMpKHJhd01ldGFkYXRhLnJlZmVyZW5jZXMsIGFubm90YXRpb25MaXN0LnRhcmdldCk7XG4gICAgICAgICAgICBhbm5vdGF0aW9uTGlzdC5fX3NvdXJjZSA9IGFubm90YXRpb25Tb3VyY2U7XG4gICAgICAgICAgICBpZiAoIWFubm90YXRpb25MaXN0UGVyVGFyZ2V0W2N1cnJlbnRUYXJnZXROYW1lXSkge1xuICAgICAgICAgICAgICAgIGFubm90YXRpb25MaXN0UGVyVGFyZ2V0W2N1cnJlbnRUYXJnZXROYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbnM6IGFubm90YXRpb25MaXN0LmFubm90YXRpb25zLmNvbmNhdCgpLFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGN1cnJlbnRUYXJnZXROYW1lXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uTGlzdFBlclRhcmdldFtjdXJyZW50VGFyZ2V0TmFtZV0uX19zb3VyY2UgPSBhbm5vdGF0aW9uU291cmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvbkxpc3QuYW5ub3RhdGlvbnMuZm9yRWFjaCgoYW5ub3RhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaW5kSW5kZXggPSBhbm5vdGF0aW9uTGlzdFBlclRhcmdldFtjdXJyZW50VGFyZ2V0TmFtZV0uYW5ub3RhdGlvbnMuZmluZEluZGV4KChyZWZlcmVuY2VBbm5vdGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJlZmVyZW5jZUFubm90YXRpb24udGVybSA9PT0gYW5ub3RhdGlvbi50ZXJtICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlQW5ub3RhdGlvbi5xdWFsaWZpZXIgPT09IGFubm90YXRpb24ucXVhbGlmaWVyKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24uX19zb3VyY2UgPSBhbm5vdGF0aW9uU291cmNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmluZEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbkxpc3RQZXJUYXJnZXRbY3VycmVudFRhcmdldE5hbWVdLmFubm90YXRpb25zLnNwbGljZShmaW5kSW5kZXgsIDEsIGFubm90YXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbkxpc3RQZXJUYXJnZXRbY3VycmVudFRhcmdldE5hbWVdLmFubm90YXRpb25zLnB1c2goYW5ub3RhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFubm90YXRpb25MaXN0UGVyVGFyZ2V0O1xufVxuLyoqXG4gKiBDb252ZXJ0IGEgUmF3TWV0YWRhdGEgaW50byBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24gdG8gYmUgdXNlZCB0byBlYXNpbHkgbmF2aWdhdGUgYSBtZXRhZGF0YSBvYmplY3QgYW5kIGl0cyBhbm5vdGF0aW9uLlxuICpcbiAqIEBwYXJhbSByYXdNZXRhZGF0YVxuICogQHJldHVybnMgdGhlIGNvbnZlcnRlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWV0YWRhdGEuXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnQocmF3TWV0YWRhdGEpIHtcbiAgICBBTk5PVEFUSU9OX0VSUk9SUyA9IFtdO1xuICAgIGNvbnN0IG9iamVjdE1hcCA9IGJ1aWxkT2JqZWN0TWFwKHJhd01ldGFkYXRhKTtcbiAgICByZXNvbHZlTmF2aWdhdGlvblByb3BlcnRpZXMocmF3TWV0YWRhdGEuc2NoZW1hLmVudGl0eVR5cGVzLCByYXdNZXRhZGF0YS5zY2hlbWEuYXNzb2NpYXRpb25zLCBvYmplY3RNYXApO1xuICAgIHJhd01ldGFkYXRhLnNjaGVtYS5lbnRpdHlDb250YWluZXIuYW5ub3RhdGlvbnMgPSB7fTtcbiAgICBsaW5rQWN0aW9uc1RvRW50aXR5VHlwZShyYXdNZXRhZGF0YS5zY2hlbWEubmFtZXNwYWNlLCByYXdNZXRhZGF0YS5zY2hlbWEuYWN0aW9ucywgb2JqZWN0TWFwKTtcbiAgICBsaW5rRW50aXR5VHlwZVRvRW50aXR5U2V0KHJhd01ldGFkYXRhLnNjaGVtYS5lbnRpdHlTZXRzLCBvYmplY3RNYXAsIHJhd01ldGFkYXRhLnJlZmVyZW5jZXMpO1xuICAgIGxpbmtFbnRpdHlUeXBlVG9TaW5nbGV0b24ocmF3TWV0YWRhdGEuc2NoZW1hLnNpbmdsZXRvbnMsIG9iamVjdE1hcCwgcmF3TWV0YWRhdGEucmVmZXJlbmNlcyk7XG4gICAgbGlua1Byb3BlcnRpZXNUb0NvbXBsZXhUeXBlcyhyYXdNZXRhZGF0YS5zY2hlbWEuZW50aXR5VHlwZXMsIG9iamVjdE1hcCk7XG4gICAgcHJlcGFyZUNvbXBsZXhUeXBlcyhyYXdNZXRhZGF0YS5zY2hlbWEuY29tcGxleFR5cGVzLCByYXdNZXRhZGF0YS5zY2hlbWEuYXNzb2NpYXRpb25zLCBvYmplY3RNYXApO1xuICAgIGNvbnN0IHVucmVzb2x2ZWRUYXJnZXRzID0gW107XG4gICAgY29uc3QgdW5yZXNvbHZlZEFubm90YXRpb25zID0gW107XG4gICAgY29uc3QgYW5ub3RhdGlvbkxpc3RQZXJUYXJnZXQgPSBtZXJnZUFubm90YXRpb25zKHJhd01ldGFkYXRhKTtcbiAgICBPYmplY3Qua2V5cyhhbm5vdGF0aW9uTGlzdFBlclRhcmdldCkuZm9yRWFjaCgoY3VycmVudFRhcmdldE5hbWUpID0+IHtcbiAgICAgICAgY29uc3QgYW5ub3RhdGlvbkxpc3QgPSBhbm5vdGF0aW9uTGlzdFBlclRhcmdldFtjdXJyZW50VGFyZ2V0TmFtZV07XG4gICAgICAgIGNvbnN0IG9iamVjdE1hcEVsZW1lbnQgPSBvYmplY3RNYXBbY3VycmVudFRhcmdldE5hbWVdO1xuICAgICAgICBpZiAoIW9iamVjdE1hcEVsZW1lbnQgJiYgKGN1cnJlbnRUYXJnZXROYW1lID09PSBudWxsIHx8IGN1cnJlbnRUYXJnZXROYW1lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXJyZW50VGFyZ2V0TmFtZS5pbmRleE9mKCdAJykpID4gMCkge1xuICAgICAgICAgICAgdW5yZXNvbHZlZEFubm90YXRpb25zLnB1c2goYW5ub3RhdGlvbkxpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9iamVjdE1hcEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGxldCBhbGxUYXJnZXRzID0gW29iamVjdE1hcEVsZW1lbnRdO1xuICAgICAgICAgICAgbGV0IGJPdmVycmlkZUV4aXN0aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChvYmplY3RNYXBFbGVtZW50Ll90eXBlID09PSAnVW5ib3VuZEdlbmVyaWNBY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgYWxsVGFyZ2V0cyA9IG9iamVjdE1hcEVsZW1lbnQuYWN0aW9ucztcbiAgICAgICAgICAgICAgICBiT3ZlcnJpZGVFeGlzdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWxsVGFyZ2V0cy5mb3JFYWNoKChjdXJyZW50VGFyZ2V0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudENvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxBbm5vdGF0aW9uczogdW5yZXNvbHZlZEFubm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U291cmNlOiBhbm5vdGF0aW9uTGlzdC5fX3NvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFRhcmdldDogY3VycmVudFRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFRlcm06ICcnLFxuICAgICAgICAgICAgICAgICAgICByYXdNZXRhZGF0YTogcmF3TWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIHVucmVzb2x2ZWRBbm5vdGF0aW9uczogdW5yZXNvbHZlZFRhcmdldHNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHByb2Nlc3NBbm5vdGF0aW9ucyhjdXJyZW50Q29udGV4dCwgYW5ub3RhdGlvbkxpc3QsIG9iamVjdE1hcCwgYk92ZXJyaWRlRXhpc3RpbmcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBleHRyYVVucmVzb2x2ZWRBbm5vdGF0aW9ucyA9IFtdO1xuICAgIHVucmVzb2x2ZWRBbm5vdGF0aW9ucy5mb3JFYWNoKChhbm5vdGF0aW9uTGlzdCkgPT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50VGFyZ2V0TmFtZSA9ICgwLCB1dGlsc18xLnVuYWxpYXMpKHJhd01ldGFkYXRhLnJlZmVyZW5jZXMsIGFubm90YXRpb25MaXN0LnRhcmdldCk7XG4gICAgICAgIGxldCBbYmFzZU9iaiwgYW5ub3RhdGlvblBhcnRdID0gY3VycmVudFRhcmdldE5hbWUuc3BsaXQoJ0AnKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0U3BsaXQgPSBhbm5vdGF0aW9uUGFydC5zcGxpdCgnLycpO1xuICAgICAgICBiYXNlT2JqID0gYmFzZU9iaiArICdAJyArIHRhcmdldFNwbGl0WzBdO1xuICAgICAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gdGFyZ2V0U3BsaXQuc2xpY2UoMSkucmVkdWNlKChjdXJyZW50T2JqLCBwYXRoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudE9iaiA9PT0gbnVsbCB8fCBjdXJyZW50T2JqID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXJyZW50T2JqW3BhdGhdO1xuICAgICAgICB9LCBvYmplY3RNYXBbYmFzZU9ial0pO1xuICAgICAgICBpZiAoIWN1cnJlbnRUYXJnZXQgfHwgdHlwZW9mIGN1cnJlbnRUYXJnZXQgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBBTk5PVEFUSU9OX0VSUk9SUy5wdXNoKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAnVGhlIGZvbGxvd2luZyBhbm5vdGF0aW9uIHRhcmdldCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2aWNlICcgKyBjdXJyZW50VGFyZ2V0TmFtZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50Q29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsQW5ub3RhdGlvbnM6IGV4dHJhVW5yZXNvbHZlZEFubm90YXRpb25zLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRTb3VyY2U6IGFubm90YXRpb25MaXN0Ll9fc291cmNlLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRUYXJnZXQ6IGN1cnJlbnRUYXJnZXQsXG4gICAgICAgICAgICAgICAgY3VycmVudFRlcm06ICcnLFxuICAgICAgICAgICAgICAgIHJhd01ldGFkYXRhOiByYXdNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICB1bnJlc29sdmVkQW5ub3RhdGlvbnM6IHVucmVzb2x2ZWRUYXJnZXRzXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcHJvY2Vzc0Fubm90YXRpb25zKGN1cnJlbnRDb250ZXh0LCBhbm5vdGF0aW9uTGlzdCwgb2JqZWN0TWFwLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBwcm9jZXNzVW5yZXNvbHZlZFRhcmdldHModW5yZXNvbHZlZFRhcmdldHMsIG9iamVjdE1hcCk7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBBTExfQU5OT1RBVElPTl9FUlJPUlMpIHtcbiAgICAgICAgQU5OT1RBVElPTl9FUlJPUlMucHVzaChBTExfQU5OT1RBVElPTl9FUlJPUlNbcHJvcGVydHldWzBdKTtcbiAgICB9XG4gICAgcmF3TWV0YWRhdGEuZW50aXR5U2V0cyA9IHJhd01ldGFkYXRhLnNjaGVtYS5lbnRpdHlTZXRzO1xuICAgIGNvbnN0IGV4dHJhUmVmZXJlbmNlcyA9IHJhd01ldGFkYXRhLnJlZmVyZW5jZXMuZmlsdGVyKChyZWZlcmVuY2UpID0+IHtcbiAgICAgICAgcmV0dXJuIHV0aWxzXzEuZGVmYXVsdFJlZmVyZW5jZXMuZmluZCgoZGVmYXVsdFJlZikgPT4gZGVmYXVsdFJlZi5uYW1lc3BhY2UgPT09IHJlZmVyZW5jZS5uYW1lc3BhY2UpID09PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgY29uc3QgY29udmVydGVkT3V0cHV0ID0ge1xuICAgICAgICB2ZXJzaW9uOiByYXdNZXRhZGF0YS52ZXJzaW9uLFxuICAgICAgICBhbm5vdGF0aW9uczogcmF3TWV0YWRhdGEuc2NoZW1hLmFubm90YXRpb25zLFxuICAgICAgICBuYW1lc3BhY2U6IHJhd01ldGFkYXRhLnNjaGVtYS5uYW1lc3BhY2UsXG4gICAgICAgIGVudGl0eUNvbnRhaW5lcjogcmF3TWV0YWRhdGEuc2NoZW1hLmVudGl0eUNvbnRhaW5lcixcbiAgICAgICAgYWN0aW9uczogcmF3TWV0YWRhdGEuc2NoZW1hLmFjdGlvbnMsXG4gICAgICAgIGVudGl0eVNldHM6IHJhd01ldGFkYXRhLnNjaGVtYS5lbnRpdHlTZXRzLFxuICAgICAgICBzaW5nbGV0b25zOiByYXdNZXRhZGF0YS5zY2hlbWEuc2luZ2xldG9ucyxcbiAgICAgICAgZW50aXR5VHlwZXM6IHJhd01ldGFkYXRhLnNjaGVtYS5lbnRpdHlUeXBlcyxcbiAgICAgICAgY29tcGxleFR5cGVzOiByYXdNZXRhZGF0YS5zY2hlbWEuY29tcGxleFR5cGVzLFxuICAgICAgICB0eXBlRGVmaW5pdGlvbnM6IHJhd01ldGFkYXRhLnNjaGVtYS50eXBlRGVmaW5pdGlvbnMsXG4gICAgICAgIHJlZmVyZW5jZXM6IHV0aWxzXzEuZGVmYXVsdFJlZmVyZW5jZXMuY29uY2F0KGV4dHJhUmVmZXJlbmNlcyksXG4gICAgICAgIGRpYWdub3N0aWNzOiBBTk5PVEFUSU9OX0VSUk9SUy5jb25jYXQoKVxuICAgIH07XG4gICAgY29udmVydGVkT3V0cHV0LnJlc29sdmVQYXRoID0gY3JlYXRlR2xvYmFsUmVzb2x2ZShjb252ZXJ0ZWRPdXRwdXQsIG9iamVjdE1hcCk7XG4gICAgcmV0dXJuIGNvbnZlcnRlZE91dHB1dDtcbn1cbmV4cG9ydHMuY29udmVydCA9IGNvbnZlcnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb252ZXJ0ZXIuanMubWFwXG5cbi8qKiovIH0pLFxuXG4vKioqLyAxMjY6XG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19tb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXG52YXIgX19jcmVhdGVCaW5kaW5nID0gKHRoaXMgJiYgdGhpcy5fX2NyZWF0ZUJpbmRpbmcpIHx8IChPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XG4gICAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcbiAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgb1trMl0gPSBtW2tdO1xufSkpO1xudmFyIF9fZXhwb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19leHBvcnRTdGFyKSB8fCBmdW5jdGlvbihtLCBleHBvcnRzKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleHBvcnRzLCBwKSkgX19jcmVhdGVCaW5kaW5nKGV4cG9ydHMsIG0sIHApO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgKHsgdmFsdWU6IHRydWUgfSkpO1xuX19leHBvcnRTdGFyKF9fd2VicGFja19yZXF1aXJlX18oNTgyKSwgZXhwb3J0cyk7XG5fX2V4cG9ydFN0YXIoX193ZWJwYWNrX3JlcXVpcmVfXyg5MjIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihfX3dlYnBhY2tfcmVxdWlyZV9fKDgwMCksIGV4cG9ydHMpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwXG5cbi8qKiovIH0pLFxuXG4vKioqLyA4MDA6XG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19tb2R1bGUsIGV4cG9ydHMpIHtcblxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsICh7IHZhbHVlOiB0cnVlIH0pKTtcbmV4cG9ydHMuRGVjaW1hbCA9IGV4cG9ydHMuaXNDb21wbGV4VHlwZURlZmluaXRpb24gPSBleHBvcnRzLlRlcm1Ub1R5cGVzID0gZXhwb3J0cy51bmFsaWFzID0gZXhwb3J0cy5hbGlhcyA9IGV4cG9ydHMuZGVmYXVsdFJlZmVyZW5jZXMgPSB2b2lkIDA7XG5leHBvcnRzLmRlZmF1bHRSZWZlcmVuY2VzID0gW1xuICAgIHsgYWxpYXM6ICdDYXBhYmlsaXRpZXMnLCBuYW1lc3BhY2U6ICdPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxJywgdXJpOiAnJyB9LFxuICAgIHsgYWxpYXM6ICdBZ2dyZWdhdGlvbicsIG5hbWVzcGFjZTogJ09yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMScsIHVyaTogJycgfSxcbiAgICB7IGFsaWFzOiAnVmFsaWRhdGlvbicsIG5hbWVzcGFjZTogJ09yZy5PRGF0YS5WYWxpZGF0aW9uLlYxJywgdXJpOiAnJyB9LFxuICAgIHsgbmFtZXNwYWNlOiAnT3JnLk9EYXRhLkNvcmUuVjEnLCBhbGlhczogJ0NvcmUnLCB1cmk6ICcnIH0sXG4gICAgeyBuYW1lc3BhY2U6ICdPcmcuT0RhdGEuTWVhc3VyZXMuVjEnLCBhbGlhczogJ01lYXN1cmVzJywgdXJpOiAnJyB9LFxuICAgIHsgbmFtZXNwYWNlOiAnY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxJywgYWxpYXM6ICdDb21tb24nLCB1cmk6ICcnIH0sXG4gICAgeyBuYW1lc3BhY2U6ICdjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MScsIGFsaWFzOiAnVUknLCB1cmk6ICcnIH0sXG4gICAgeyBuYW1lc3BhY2U6ICdjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxJywgYWxpYXM6ICdTZXNzaW9uJywgdXJpOiAnJyB9LFxuICAgIHsgbmFtZXNwYWNlOiAnY29tLnNhcC52b2NhYnVsYXJpZXMuQW5hbHl0aWNzLnYxJywgYWxpYXM6ICdBbmFseXRpY3MnLCB1cmk6ICcnIH0sXG4gICAgeyBuYW1lc3BhY2U6ICdjb20uc2FwLnZvY2FidWxhcmllcy5Db2RlTGlzdC52MScsIGFsaWFzOiAnQ29kZUxpc3QnLCB1cmk6ICcnIH0sXG4gICAgeyBuYW1lc3BhY2U6ICdjb20uc2FwLnZvY2FidWxhcmllcy5QZXJzb25hbERhdGEudjEnLCBhbGlhczogJ1BlcnNvbmFsRGF0YScsIHVyaTogJycgfSxcbiAgICB7IG5hbWVzcGFjZTogJ2NvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEnLCBhbGlhczogJ0NvbW11bmljYXRpb24nLCB1cmk6ICcnIH0sXG4gICAgeyBuYW1lc3BhY2U6ICdjb20uc2FwLnZvY2FidWxhcmllcy5IVE1MNS52MScsIGFsaWFzOiAnSFRNTDUnLCB1cmk6ICcnIH1cbl07XG4vKipcbiAqIFRyYW5zZm9ybSBhbiB1bmFsaWFzZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGFubm90YXRpb24gdG8gdGhlIGFsaWFzZWQgdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlcyBjdXJyZW50UmVmZXJlbmNlcyBmb3IgdGhlIHByb2plY3RcbiAqIEBwYXJhbSB1bmFsaWFzZWRWYWx1ZSB0aGUgdW5hbGlhc2VkIHZhbHVlXG4gKiBAcmV0dXJucyB0aGUgYWxpYXNlZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBzYW1lXG4gKi9cbmZ1bmN0aW9uIGFsaWFzKHJlZmVyZW5jZXMsIHVuYWxpYXNlZFZhbHVlKSB7XG4gICAgaWYgKCFyZWZlcmVuY2VzLnJldmVyc2VSZWZlcmVuY2VNYXApIHtcbiAgICAgICAgcmVmZXJlbmNlcy5yZXZlcnNlUmVmZXJlbmNlTWFwID0gcmVmZXJlbmNlcy5yZWR1Y2UoKG1hcCwgcmVmKSA9PiB7XG4gICAgICAgICAgICBtYXBbcmVmLm5hbWVzcGFjZV0gPSByZWY7XG4gICAgICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgICB9LCB7fSk7XG4gICAgfVxuICAgIGlmICghdW5hbGlhc2VkVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHVuYWxpYXNlZFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBsYXN0RG90SW5kZXggPSB1bmFsaWFzZWRWYWx1ZS5sYXN0SW5kZXhPZignLicpO1xuICAgIGNvbnN0IG5hbWVzcGFjZSA9IHVuYWxpYXNlZFZhbHVlLnN1YnN0cmluZygwLCBsYXN0RG90SW5kZXgpO1xuICAgIGNvbnN0IHZhbHVlID0gdW5hbGlhc2VkVmFsdWUuc3Vic3RyaW5nKGxhc3REb3RJbmRleCArIDEpO1xuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHJlZmVyZW5jZXMucmV2ZXJzZVJlZmVyZW5jZU1hcFtuYW1lc3BhY2VdO1xuICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgICAgcmV0dXJuIGAke3JlZmVyZW5jZS5hbGlhc30uJHt2YWx1ZX1gO1xuICAgIH1cbiAgICBlbHNlIGlmICh1bmFsaWFzZWRWYWx1ZS5pbmRleE9mKCdAJykgIT09IC0xKSB7XG4gICAgICAgIC8vIFRyeSB0byBzZWUgaWYgaXQncyBhbiBhbm5vdGF0aW9uIFBhdGggbGlrZSB0b19TYWxlc09yZGVyL0BVSS5MaW5lSXRlbVxuICAgICAgICBjb25zdCBbcHJlQWxpYXMsIC4uLnBvc3RBbGlhc10gPSB1bmFsaWFzZWRWYWx1ZS5zcGxpdCgnQCcpO1xuICAgICAgICByZXR1cm4gYCR7cHJlQWxpYXN9QCR7YWxpYXMocmVmZXJlbmNlcywgcG9zdEFsaWFzLmpvaW4oJ0AnKSl9YDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiB1bmFsaWFzZWRWYWx1ZTtcbiAgICB9XG59XG5leHBvcnRzLmFsaWFzID0gYWxpYXM7XG4vKipcbiAqIFRyYW5zZm9ybSBhbiBhbGlhc2VkIHN0cmluZyByZXByZXNlbnRhdGlvbiBhbm5vdGF0aW9uIHRvIHRoZSB1bmFsaWFzZWQgdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlcyBjdXJyZW50UmVmZXJlbmNlcyBmb3IgdGhlIHByb2plY3RcbiAqIEBwYXJhbSBhbGlhc2VkVmFsdWUgdGhlIGFsaWFzZWQgdmFsdWVcbiAqIEByZXR1cm5zIHRoZSB1bmFsaWFzZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgc2FtZVxuICovXG5mdW5jdGlvbiB1bmFsaWFzKHJlZmVyZW5jZXMsIGFsaWFzZWRWYWx1ZSkge1xuICAgIGlmICghcmVmZXJlbmNlcy5yZWZlcmVuY2VNYXApIHtcbiAgICAgICAgcmVmZXJlbmNlcy5yZWZlcmVuY2VNYXAgPSByZWZlcmVuY2VzLnJlZHVjZSgobWFwLCByZWYpID0+IHtcbiAgICAgICAgICAgIG1hcFtyZWYuYWxpYXNdID0gcmVmO1xuICAgICAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgICAgfSwge30pO1xuICAgIH1cbiAgICBpZiAoIWFsaWFzZWRWYWx1ZSkge1xuICAgICAgICByZXR1cm4gYWxpYXNlZFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBbdm9jQWxpYXMsIC4uLnZhbHVlXSA9IGFsaWFzZWRWYWx1ZS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHJlZmVyZW5jZXMucmVmZXJlbmNlTWFwW3ZvY0FsaWFzXTtcbiAgICBpZiAocmVmZXJlbmNlKSB7XG4gICAgICAgIHJldHVybiBgJHtyZWZlcmVuY2UubmFtZXNwYWNlfS4ke3ZhbHVlLmpvaW4oJy4nKX1gO1xuICAgIH1cbiAgICBlbHNlIGlmIChhbGlhc2VkVmFsdWUuaW5kZXhPZignQCcpICE9PSAtMSkge1xuICAgICAgICAvLyBUcnkgdG8gc2VlIGlmIGl0J3MgYW4gYW5ub3RhdGlvbiBQYXRoIGxpa2UgdG9fU2FsZXNPcmRlci9AVUkuTGluZUl0ZW1cbiAgICAgICAgY29uc3QgW3ByZUFsaWFzLCAuLi5wb3N0QWxpYXNdID0gYWxpYXNlZFZhbHVlLnNwbGl0KCdAJyk7XG4gICAgICAgIHJldHVybiBgJHtwcmVBbGlhc31AJHt1bmFsaWFzKHJlZmVyZW5jZXMsIHBvc3RBbGlhcy5qb2luKCdAJykpfWA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gYWxpYXNlZFZhbHVlO1xuICAgIH1cbn1cbmV4cG9ydHMudW5hbGlhcyA9IHVuYWxpYXM7XG52YXIgVGVybVRvVHlwZXM7XG4oZnVuY3Rpb24gKFRlcm1Ub1R5cGVzKSB7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQXV0aG9yaXphdGlvbi5WMS5TZWN1cml0eVNjaGVtZXNcIl0gPSBcIk9yZy5PRGF0YS5BdXRob3JpemF0aW9uLlYxLlNlY3VyaXR5U2NoZW1lXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQXV0aG9yaXphdGlvbi5WMS5BdXRob3JpemF0aW9uc1wiXSA9IFwiT3JnLk9EYXRhLkF1dGhvcml6YXRpb24uVjEuQXV0aG9yaXphdGlvblwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuUmV2aXNpb25zXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5SZXZpc2lvblR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5Db3JlLlYxLkxpbmtzXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5MaW5rXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ29yZS5WMS5FeGFtcGxlXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5FeGFtcGxlVmFsdWVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5Db3JlLlYxLk1lc3NhZ2VzXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5NZXNzYWdlVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuVmFsdWVFeGNlcHRpb25cIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlZhbHVlRXhjZXB0aW9uVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuUmVzb3VyY2VFeGNlcHRpb25cIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlJlc291cmNlRXhjZXB0aW9uVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuRGF0YU1vZGlmaWNhdGlvbkV4Y2VwdGlvblwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuRGF0YU1vZGlmaWNhdGlvbkV4Y2VwdGlvblR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5Db3JlLlYxLklzTGFuZ3VhZ2VEZXBlbmRlbnRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuRGVyZWZlcmVuY2VhYmxlSURzXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5Db3JlLlYxLkNvbnZlbnRpb25hbElEc1wiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ29yZS5WMS5QZXJtaXNzaW9uc1wiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuUGVybWlzc2lvblwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuRGVmYXVsdE5hbWVzcGFjZVwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ29yZS5WMS5JbW11dGFibGVcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuQ29tcHV0ZWRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuQ29tcHV0ZWREZWZhdWx0VmFsdWVcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuSXNVUkxcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuSXNNZWRpYVR5cGVcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuQ29udGVudERpc3Bvc2l0aW9uXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5Db250ZW50RGlzcG9zaXRpb25UeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ29yZS5WMS5PcHRpbWlzdGljQ29uY3VycmVuY3lcIl0gPSBcIkVkbS5Qcm9wZXJ0eVBhdGhcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5Db3JlLlYxLkFkZGl0aW9uYWxQcm9wZXJ0aWVzXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5Db3JlLlYxLkF1dG9FeHBhbmRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuQXV0b0V4cGFuZFJlZmVyZW5jZXNcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuTWF5SW1wbGVtZW50XCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5RdWFsaWZpZWRUeXBlTmFtZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuT3JkZXJlZFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ29yZS5WMS5Qb3NpdGlvbmFsSW5zZXJ0XCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5Db3JlLlYxLkFsdGVybmF0ZUtleXNcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLkFsdGVybmF0ZUtleVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuT3B0aW9uYWxQYXJhbWV0ZXJcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLk9wdGlvbmFsUGFyYW1ldGVyVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuT3BlcmF0aW9uQXZhaWxhYmxlXCJdID0gXCJFZG0uQm9vbGVhblwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNvcmUuVjEuU3ltYm9saWNOYW1lXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5TaW1wbGVJZGVudGlmaWVyXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNvbmZvcm1hbmNlTGV2ZWxcIl0gPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ29uZm9ybWFuY2VMZXZlbFR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQXN5bmNocm9ub3VzUmVxdWVzdHNTdXBwb3J0ZWRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5CYXRjaENvbnRpbnVlT25FcnJvclN1cHBvcnRlZFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLklzb2xhdGlvblN1cHBvcnRlZFwiXSA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Jc29sYXRpb25MZXZlbFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Dcm9zc0pvaW5TdXBwb3J0ZWRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5DYWxsYmFja1N1cHBvcnRlZFwiXSA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5DYWxsYmFja1R5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ2hhbmdlVHJhY2tpbmdcIl0gPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ2hhbmdlVHJhY2tpbmdUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNvdW50UmVzdHJpY3Rpb25zXCJdID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNvdW50UmVzdHJpY3Rpb25zVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5OYXZpZ2F0aW9uUmVzdHJpY3Rpb25zXCJdID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLk5hdmlnYXRpb25SZXN0cmljdGlvbnNUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkluZGV4YWJsZUJ5S2V5XCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuVG9wU3VwcG9ydGVkXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuU2tpcFN1cHBvcnRlZFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNvbXB1dGVTdXBwb3J0ZWRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5TZWxlY3RTdXBwb3J0XCJdID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlNlbGVjdFN1cHBvcnRUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkJhdGNoU3VwcG9ydGVkXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQmF0Y2hTdXBwb3J0XCJdID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkJhdGNoU3VwcG9ydFR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRmlsdGVyUmVzdHJpY3Rpb25zXCJdID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkZpbHRlclJlc3RyaWN0aW9uc1R5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuU29ydFJlc3RyaWN0aW9uc1wiXSA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Tb3J0UmVzdHJpY3Rpb25zVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5FeHBhbmRSZXN0cmljdGlvbnNcIl0gPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRXhwYW5kUmVzdHJpY3Rpb25zVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5TZWFyY2hSZXN0cmljdGlvbnNcIl0gPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuU2VhcmNoUmVzdHJpY3Rpb25zVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5LZXlBc1NlZ21lbnRTdXBwb3J0ZWRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5RdWVyeVNlZ21lbnRTdXBwb3J0ZWRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5JbnNlcnRSZXN0cmljdGlvbnNcIl0gPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuSW5zZXJ0UmVzdHJpY3Rpb25zVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5EZWVwSW5zZXJ0U3VwcG9ydFwiXSA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5EZWVwSW5zZXJ0U3VwcG9ydFR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuVXBkYXRlUmVzdHJpY3Rpb25zXCJdID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlVwZGF0ZVJlc3RyaWN0aW9uc1R5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRGVlcFVwZGF0ZVN1cHBvcnRcIl0gPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRGVlcFVwZGF0ZVN1cHBvcnRUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkRlbGV0ZVJlc3RyaWN0aW9uc1wiXSA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5EZWxldGVSZXN0cmljdGlvbnNUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkNvbGxlY3Rpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uc1wiXSA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5Db2xsZWN0aW9uUHJvcGVydHlSZXN0cmljdGlvbnNUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLk9wZXJhdGlvblJlc3RyaWN0aW9uc1wiXSA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5PcGVyYXRpb25SZXN0cmljdGlvbnNUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkFubm90YXRpb25WYWx1ZXNJblF1ZXJ5U3VwcG9ydGVkXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuTW9kaWZpY2F0aW9uUXVlcnlPcHRpb25zXCJdID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLk1vZGlmaWNhdGlvblF1ZXJ5T3B0aW9uc1R5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuUmVhZFJlc3RyaWN0aW9uc1wiXSA9IFwiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5SZWFkUmVzdHJpY3Rpb25zVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5DdXN0b21IZWFkZXJzXCJdID0gXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkN1c3RvbVBhcmFtZXRlclwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5DdXN0b21RdWVyeU9wdGlvbnNcIl0gPSBcIk9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuQ3VzdG9tUGFyYW1ldGVyXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLk1lZGlhTG9jYXRpb25VcGRhdGVTdXBwb3J0ZWRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkFwcGx5U3VwcG9ydGVkXCJdID0gXCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQXBwbHlTdXBwb3J0ZWRUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuR3JvdXBhYmxlXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5BZ2dyZWdhdGFibGVcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXNcIl0gPSBcIkVkbS5Qcm9wZXJ0eVBhdGhcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5MZXZlbGVkSGllcmFyY2h5XCJdID0gXCJFZG0uUHJvcGVydHlQYXRoXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuUmVjdXJzaXZlSGllcmFyY2h5XCJdID0gXCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuUmVjdXJzaXZlSGllcmFyY2h5VHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkF2YWlsYWJsZU9uQWdncmVnYXRlc1wiXSA9IFwiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkF2YWlsYWJsZU9uQWdncmVnYXRlc1R5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1pbmltdW1cIl0gPSBcIkVkbS5QcmltaXRpdmVUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5NYXhpbXVtXCJdID0gXCJFZG0uUHJpbWl0aXZlVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuRXhjbHVzaXZlXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLkFsbG93ZWRWYWx1ZXNcIl0gPSBcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLkFsbG93ZWRWYWx1ZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuTXVsdGlwbGVPZlwiXSA9IFwiRWRtLkRlY2ltYWxcIjtcbiAgICBUZXJtVG9UeXBlc1tcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLkNvbnN0cmFpbnRcIl0gPSBcIk9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLkNvbnN0cmFpbnRUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5JdGVtc09mXCJdID0gXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5JdGVtc09mVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuT3BlblByb3BlcnR5VHlwZUNvbnN0cmFpbnRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlF1YWxpZmllZFR5cGVOYW1lXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5EZXJpdmVkVHlwZUNvbnN0cmFpbnRcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlF1YWxpZmllZFR5cGVOYW1lXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5BbGxvd2VkVGVybXNcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlF1YWxpZmllZFRlcm1OYW1lXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5BcHBsaWNhYmxlVGVybXNcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlF1YWxpZmllZFRlcm1OYW1lXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5NYXhJdGVtc1wiXSA9IFwiRWRtLkludDY0XCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5NaW5JdGVtc1wiXSA9IFwiRWRtLkludDY0XCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuTWVhc3VyZXMuVjEuU2NhbGVcIl0gPSBcIkVkbS5CeXRlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJPcmcuT0RhdGEuTWVhc3VyZXMuVjEuRHVyYXRpb25HcmFudWxhcml0eVwiXSA9IFwiT3JnLk9EYXRhLk1lYXN1cmVzLlYxLkR1cmF0aW9uR3JhbnVsYXJpdHlUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5BbmFseXRpY3MudjEuRGltZW5zaW9uXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkFuYWx5dGljcy52MS5NZWFzdXJlXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkFuYWx5dGljcy52MS5BY2N1bXVsYXRpdmVNZWFzdXJlXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkFuYWx5dGljcy52MS5Sb2xsZWRVcFByb3BlcnR5Q291bnRcIl0gPSBcIkVkbS5JbnQxNlwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQW5hbHl0aWNzLnYxLlBsYW5uaW5nQWN0aW9uXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkFuYWx5dGljcy52MS5BZ2dyZWdhdGVkUHJvcGVydGllc1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQW5hbHl0aWNzLnYxLkFnZ3JlZ2F0ZWRQcm9wZXJ0eVR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZXJ2aWNlVmVyc2lvblwiXSA9IFwiRWRtLkludDMyXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2VydmljZVNjaGVtYVZlcnNpb25cIl0gPSBcIkVkbS5JbnQzMlwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRGb3JcIl0gPSBcIkVkbS5Qcm9wZXJ0eVBhdGhcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0xhbmd1YWdlSWRlbnRpZmllclwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVGV4dEZvcm1hdFwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRGb3JtYXRUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNEaWdpdFNlcXVlbmNlXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc1VwcGVyQ2FzZVwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDdXJyZW5jeVwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNVbml0XCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Vbml0U3BlY2lmaWNTY2FsZVwiXSA9IFwiRWRtLlByaW1pdGl2ZVR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Vbml0U3BlY2lmaWNQcmVjaXNpb25cIl0gPSBcIkVkbS5QcmltaXRpdmVUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2Vjb25kYXJ5S2V5XCJdID0gXCJFZG0uUHJvcGVydHlQYXRoXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTWluT2NjdXJzXCJdID0gXCJFZG0uSW50NjRcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5NYXhPY2N1cnNcIl0gPSBcIkVkbS5JbnQ2NFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkFzc29jaWF0aW9uRW50aXR5XCJdID0gXCJFZG0uTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRlcml2ZWROYXZpZ2F0aW9uXCJdID0gXCJFZG0uTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLk1hc2tlZFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTWFza2VkQWx3YXlzXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY09iamVjdE1hcHBpbmdcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY09iamVjdE1hcHBpbmdUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNJbnN0YW5jZUFubm90YXRpb25cIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnNcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25UeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRmllbGRDb250cm9sXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRmllbGRDb250cm9sVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkFwcGxpY2F0aW9uXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuQXBwbGljYXRpb25UeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVGltZXN0YW1wXCJdID0gXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5FcnJvclJlc29sdXRpb25cIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5FcnJvclJlc29sdXRpb25UeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTWVzc2FnZXNcIl0gPSBcIkVkbS5Db21wbGV4VHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLm51bWVyaWNTZXZlcml0eVwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLk51bWVyaWNNZXNzYWdlU2V2ZXJpdHlUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTWF4aW11bU51bWVyaWNNZXNzYWdlU2V2ZXJpdHlcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5OdW1lcmljTWVzc2FnZVNldmVyaXR5VHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzQWN0aW9uQ3JpdGljYWxcIl0gPSBcIkVkbS5Cb29sZWFuXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuQXR0cmlidXRlc1wiXSA9IFwiRWRtLlByb3BlcnR5UGF0aFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlJlbGF0ZWRSZWN1cnNpdmVIaWVyYXJjaHlcIl0gPSBcIkVkbS5Bbm5vdGF0aW9uUGF0aFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkludGVydmFsXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSW50ZXJ2YWxUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuUmVzdWx0Q29udGV4dFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuV2Vha1JlZmVyZW50aWFsQ29uc3RyYWludFwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLldlYWtSZWZlcmVudGlhbENvbnN0cmFpbnRUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNOYXR1cmFsUGVyc29uXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0UmVsZXZhbnRRdWFsaWZpZXJzXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2ltcGxlSWRlbnRpZmllclwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlc1wiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0TWFwcGluZ1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdE1hcHBpbmdUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDYWxlbmRhclllYXJcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzQ2FsZW5kYXJIYWxmeWVhclwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDYWxlbmRhclF1YXJ0ZXJcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzQ2FsZW5kYXJNb250aFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDYWxlbmRhcldlZWtcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRGF5T2ZDYWxlbmRhck1vbnRoXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0RheU9mQ2FsZW5kYXJZZWFyXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0NhbGVuZGFyWWVhckhhbGZ5ZWFyXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0NhbGVuZGFyWWVhclF1YXJ0ZXJcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzQ2FsZW5kYXJZZWFyTW9udGhcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzQ2FsZW5kYXJZZWFyV2Vla1wiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNDYWxlbmRhckRhdGVcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRmlzY2FsWWVhclwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNGaXNjYWxQZXJpb2RcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRmlzY2FsWWVhclBlcmlvZFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuSXNGaXNjYWxRdWFydGVyXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0Zpc2NhbFllYXJRdWFydGVyXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0Zpc2NhbFdlZWtcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRmlzY2FsWWVhcldlZWtcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRGF5T2ZGaXNjYWxZZWFyXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0Zpc2NhbFllYXJWYXJpYW50XCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5NdXR1YWxseUV4Y2x1c2l2ZVRlcm1cIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Um9vdFwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Um9vdFR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdE5vZGVcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdE5vZGVUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRBY3RpdmF0aW9uVmlhXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2ltcGxlSWRlbnRpZmllclwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkVkaXRhYmxlRmllbGRGb3JcIl0gPSBcIkVkbS5Qcm9wZXJ0eVBhdGhcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY0tleVwiXSA9IFwiRWRtLlByb3BlcnR5UGF0aFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNpZGVFZmZlY3RzXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2lkZUVmZmVjdHNUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRGVmYXVsdFZhbHVlc0Z1bmN0aW9uXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuUXVhbGlmaWVkTmFtZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpbHRlckRlZmF1bHRWYWx1ZVwiXSA9IFwiRWRtLlByaW1pdGl2ZVR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5GaWx0ZXJEZWZhdWx0VmFsdWVIaWdoXCJdID0gXCJFZG0uUHJpbWl0aXZlVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNvcnRPcmRlclwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNvcnRPcmRlclR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5SZWN1cnNpdmVIaWVyYXJjaHlcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5SZWN1cnNpdmVIaWVyYXJjaHlUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuQ3JlYXRlZEF0XCJdID0gXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5DcmVhdGVkQnlcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Vc2VySURcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5DaGFuZ2VkQXRcIl0gPSBcIkVkbS5EYXRlVGltZU9mZnNldFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkNoYW5nZWRCeVwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlVzZXJJRFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkFwcGx5TXVsdGlVbml0QmVoYXZpb3JGb3JTb3J0aW5nQW5kRmlsdGVyaW5nXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvZGVMaXN0LnYxLkN1cnJlbmN5Q29kZXNcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvZGVMaXN0LnYxLkNvZGVMaXN0U291cmNlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db2RlTGlzdC52MS5Vbml0c09mTWVhc3VyZVwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29kZUxpc3QudjEuQ29kZUxpc3RTb3VyY2VcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvZGVMaXN0LnYxLlN0YW5kYXJkQ29kZVwiXSA9IFwiRWRtLlByb3BlcnR5UGF0aFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29kZUxpc3QudjEuRXh0ZXJuYWxDb2RlXCJdID0gXCJFZG0uUHJvcGVydHlQYXRoXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db2RlTGlzdC52MS5Jc0NvbmZpZ3VyYXRpb25EZXByZWNhdGlvbkNvZGVcIl0gPSBcIkVkbS5Cb29sZWFuXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLkNvbnRhY3RcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQ29udGFjdFR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQWRkcmVzc1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5BZGRyZXNzVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5Jc0VtYWlsQWRkcmVzc1wiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLklzUGhvbmVOdW1iZXJcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5FdmVudFwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5FdmVudERhdGFcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuVGFza1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5UYXNrRGF0YVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5NZXNzYWdlXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLk1lc3NhZ2VEYXRhXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5IaWVyYXJjaHkudjEuUmVjdXJzaXZlSGllcmFyY2h5XCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5IaWVyYXJjaHkudjEuUmVjdXJzaXZlSGllcmFyY2h5VHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuUGVyc29uYWxEYXRhLnYxLkVudGl0eVNlbWFudGljc1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuUGVyc29uYWxEYXRhLnYxLkVudGl0eVNlbWFudGljc1R5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlBlcnNvbmFsRGF0YS52MS5GaWVsZFNlbWFudGljc1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuUGVyc29uYWxEYXRhLnYxLkZpZWxkU2VtYW50aWNzVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuUGVyc29uYWxEYXRhLnYxLklzUG90ZW50aWFsbHlQZXJzb25hbFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5QZXJzb25hbERhdGEudjEuSXNQb3RlbnRpYWxseVNlbnNpdGl2ZVwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxLlN0aWNreVNlc3Npb25TdXBwb3J0ZWRcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlNlc3Npb24udjEuU3RpY2t5U2Vzc2lvblN1cHBvcnRlZFR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhlYWRlckluZm9cIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhlYWRlckluZm9UeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5JZGVudGlmaWNhdGlvblwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkQWJzdHJhY3RcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkJhZGdlXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5CYWRnZVR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRBYnN0cmFjdFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU3RhdHVzSW5mb1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkQWJzdHJhY3RcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZpZWxkR3JvdXBcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZpZWxkR3JvdXBUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Db25uZWN0ZWRGaWVsZHNcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbm5lY3RlZEZpZWxkc1R5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkdlb0xvY2F0aW9uc1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuR2VvTG9jYXRpb25UeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5HZW9Mb2NhdGlvblwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuR2VvTG9jYXRpb25UeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Db250YWN0c1wiXSA9IFwiRWRtLkFubm90YXRpb25QYXRoXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5NZWRpYVJlc291cmNlXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5NZWRpYVJlc291cmNlVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YVBvaW50XCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5LUElcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLktQSVR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydERlZmluaXRpb25UeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5WYWx1ZUNyaXRpY2FsaXR5XCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5WYWx1ZUNyaXRpY2FsaXR5VHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ3JpdGljYWxpdHlMYWJlbHNcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNyaXRpY2FsaXR5TGFiZWxUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHNcIl0gPSBcIkVkbS5Qcm9wZXJ0eVBhdGhcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZhY2V0c1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmFjZXRcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhlYWRlckZhY2V0c1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmFjZXRcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlF1aWNrVmlld0ZhY2V0c1wiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmFjZXRcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlF1aWNrQ3JlYXRlRmFjZXRzXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GYWNldFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmlsdGVyRmFjZXRzXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWZlcmVuY2VGYWNldFwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnRcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnRUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25WYXJpYW50XCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25WYXJpYW50VHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuVGhpbmdQZXJzcGVjdGl2ZVwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Jc1N1bW1hcnlcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUGFydE9mUHJldmlld1wiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5NYXBcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuR2FsbGVyeVwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Jc0ltYWdlVVJMXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLklzSW1hZ2VcIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTXVsdGlMaW5lVGV4dFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5UZXh0QXJyYW5nZW1lbnRcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlRleHRBcnJhbmdlbWVudFR5cGVcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkltcG9ydGFuY2VcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkltcG9ydGFuY2VUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IaWRkZW5cIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ3JlYXRlSGlkZGVuXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlVwZGF0ZUhpZGRlblwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EZWxldGVIaWRkZW5cIl0gPSBcIk9yZy5PRGF0YS5Db3JlLlYxLlRhZ1wiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGlkZGVuRmlsdGVyXCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZERlZmF1bHRcIl0gPSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEFic3RyYWN0XCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Dcml0aWNhbGl0eVwiXSA9IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ3JpdGljYWxpdHlUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRW1waGFzaXplZFwiXSA9IFwiT3JnLk9EYXRhLkNvcmUuVjEuVGFnXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5PcmRlckJ5XCJdID0gXCJFZG0uUHJvcGVydHlQYXRoXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QYXJhbWV0ZXJEZWZhdWx0VmFsdWVcIl0gPSBcIkVkbS5QcmltaXRpdmVUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWNvbW1lbmRhdGlvblN0YXRlXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWNvbW1lbmRhdGlvblN0YXRlVHlwZVwiO1xuICAgIFRlcm1Ub1R5cGVzW1wiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUmVjb21tZW5kYXRpb25MaXN0XCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWNvbW1lbmRhdGlvbkxpc3RUeXBlXCI7XG4gICAgVGVybVRvVHlwZXNbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5FeGNsdWRlRnJvbU5hdmlnYXRpb25Db250ZXh0XCJdID0gXCJPcmcuT0RhdGEuQ29yZS5WMS5UYWdcIjtcbiAgICBUZXJtVG9UeXBlc1tcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkhUTUw1LnYxLkNzc0RlZmF1bHRzXCJdID0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5IVE1MNS52MS5Dc3NEZWZhdWx0c1R5cGVcIjtcbn0pKFRlcm1Ub1R5cGVzID0gZXhwb3J0cy5UZXJtVG9UeXBlcyB8fCAoZXhwb3J0cy5UZXJtVG9UeXBlcyA9IHt9KSk7XG4vKipcbiAqIERpZmZlcmVudGlhdGUgYmV0d2VlbiBhIENvbXBsZXhUeXBlIGFuZCBhIFR5cGVEZWZpbml0aW9uLlxuICogQHBhcmFtIGNvbXBsZXhUeXBlRGVmaW5pdGlvblxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYSBjb21wbGV4IHR5cGVcbiAqL1xuZnVuY3Rpb24gaXNDb21wbGV4VHlwZURlZmluaXRpb24oY29tcGxleFR5cGVEZWZpbml0aW9uKSB7XG4gICAgcmV0dXJuICghIWNvbXBsZXhUeXBlRGVmaW5pdGlvbiAmJiBjb21wbGV4VHlwZURlZmluaXRpb24uX3R5cGUgPT09ICdDb21wbGV4VHlwZScgJiYgISFjb21wbGV4VHlwZURlZmluaXRpb24ucHJvcGVydGllcyk7XG59XG5leHBvcnRzLmlzQ29tcGxleFR5cGVEZWZpbml0aW9uID0gaXNDb21wbGV4VHlwZURlZmluaXRpb247XG5mdW5jdGlvbiBEZWNpbWFsKHZhbHVlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaXNEZWNpbWFsKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlT2YoKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIHRvU3RyaW5nKCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZXhwb3J0cy5EZWNpbWFsID0gRGVjaW1hbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWxzLmpzLm1hcFxuXG4vKioqLyB9KSxcblxuLyoqKi8gOTIyOlxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCAoeyB2YWx1ZTogdHJ1ZSB9KSk7XG5leHBvcnRzLnJldmVydFRlcm1Ub0dlbmVyaWNUeXBlID0gdm9pZCAwO1xuY29uc3QgdXRpbHNfMSA9IF9fd2VicGFja19yZXF1aXJlX18oODAwKTtcbi8qKlxuICogUmV2ZXJ0IGFuIG9iamVjdCB0byBpdHMgcmF3IHR5cGUgZXF1aXZhbGVudC5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlcyB0aGUgY3VycmVudCByZWZlcmVuY2VcbiAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gcmV2ZXJ0XG4gKiBAcmV0dXJucyB0aGUgcmF3IHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHJldmVydE9iamVjdFRvUmF3VHlwZShyZWZlcmVuY2VzLCB2YWx1ZSkge1xuICAgIHZhciBfYSwgX2I7XG4gICAgbGV0IHJlc3VsdDtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgdHlwZTogJ0NvbGxlY3Rpb24nLFxuICAgICAgICAgICAgQ29sbGVjdGlvbjogdmFsdWUubWFwKChhbm5vKSA9PiByZXZlcnRDb2xsZWN0aW9uSXRlbVRvUmF3VHlwZShyZWZlcmVuY2VzLCBhbm5vKSlcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoKF9hID0gdmFsdWUuaXNEZWNpbWFsKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbCh2YWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgdHlwZTogJ0RlY2ltYWwnLFxuICAgICAgICAgICAgRGVjaW1hbDogdmFsdWUudmFsdWVPZigpXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKChfYiA9IHZhbHVlLmlzU3RyaW5nKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbCh2YWx1ZSkpIHtcbiAgICAgICAgY29uc3QgdmFsdWVNYXRjaGVzID0gdmFsdWUuc3BsaXQoJy4nKTtcbiAgICAgICAgaWYgKHZhbHVlTWF0Y2hlcy5sZW5ndGggPiAxICYmIHJlZmVyZW5jZXMuZmluZCgocmVmKSA9PiByZWYuYWxpYXMgPT09IHZhbHVlTWF0Y2hlc1swXSkpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnRW51bU1lbWJlcicsXG4gICAgICAgICAgICAgICAgRW51bU1lbWJlcjogdmFsdWUudmFsdWVPZigpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgICAgIFN0cmluZzogdmFsdWUudmFsdWVPZigpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09ICdQYXRoJykge1xuICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICB0eXBlOiAnUGF0aCcsXG4gICAgICAgICAgICBQYXRoOiB2YWx1ZS5wYXRoXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09ICdBbm5vdGF0aW9uUGF0aCcpIHtcbiAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgdHlwZTogJ0Fubm90YXRpb25QYXRoJyxcbiAgICAgICAgICAgIEFubm90YXRpb25QYXRoOiB2YWx1ZS52YWx1ZVxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmICh2YWx1ZS50eXBlID09PSAnQXBwbHknKSB7XG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdBcHBseScsXG4gICAgICAgICAgICBBcHBseTogdmFsdWUuQXBwbHlcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAodmFsdWUudHlwZSA9PT0gJ051bGwnKSB7XG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdOdWxsJ1xuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmICh2YWx1ZS50eXBlID09PSAnUHJvcGVydHlQYXRoJykge1xuICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICB0eXBlOiAnUHJvcGVydHlQYXRoJyxcbiAgICAgICAgICAgIFByb3BlcnR5UGF0aDogdmFsdWUudmFsdWVcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAodmFsdWUudHlwZSA9PT0gJ05hdmlnYXRpb25Qcm9wZXJ0eVBhdGgnKSB7XG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdOYXZpZ2F0aW9uUHJvcGVydHlQYXRoJyxcbiAgICAgICAgICAgIE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IHZhbHVlLnZhbHVlXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJyRUeXBlJykpIHtcbiAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgdHlwZTogJ1JlY29yZCcsXG4gICAgICAgICAgICBSZWNvcmQ6IHJldmVydENvbGxlY3Rpb25JdGVtVG9SYXdUeXBlKHJlZmVyZW5jZXMsIHZhbHVlKVxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBSZXZlcnQgYSB2YWx1ZSB0byBpdHMgcmF3IHZhbHVlIGRlcGVuZGluZyBvbiBpdHMgdHlwZS5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlcyB0aGUgY3VycmVudCBzZXQgb2YgcmVmZXJlbmNlXG4gKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIHJldmVydFxuICogQHJldHVybnMgdGhlIHJhdyBleHByZXNzaW9uXG4gKi9cbmZ1bmN0aW9uIHJldmVydFZhbHVlVG9SYXdUeXBlKHJlZmVyZW5jZXMsIHZhbHVlKSB7XG4gICAgbGV0IHJlc3VsdDtcbiAgICBjb25zdCB2YWx1ZUNvbnN0cnVjdG9yID0gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgc3dpdGNoICh2YWx1ZUNvbnN0cnVjdG9yKSB7XG4gICAgICAgIGNhc2UgJ1N0cmluZyc6XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICBjb25zdCB2YWx1ZU1hdGNoZXMgPSB2YWx1ZS50b1N0cmluZygpLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBpZiAodmFsdWVNYXRjaGVzLmxlbmd0aCA+IDEgJiYgcmVmZXJlbmNlcy5maW5kKChyZWYpID0+IHJlZi5hbGlhcyA9PT0gdmFsdWVNYXRjaGVzWzBdKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0VudW1NZW1iZXInLFxuICAgICAgICAgICAgICAgICAgICBFbnVtTWVtYmVyOiB2YWx1ZS50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICAgICAgICAgIFN0cmluZzogdmFsdWUudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQm9vbGVhbic6XG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdCb29sJyxcbiAgICAgICAgICAgICAgICBCb29sOiB2YWx1ZS52YWx1ZU9mKClcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnTnVtYmVyJzpcbiAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgIGlmICh2YWx1ZS50b1N0cmluZygpID09PSB2YWx1ZS50b0ZpeGVkKCkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdJbnQnLFxuICAgICAgICAgICAgICAgICAgICBJbnQ6IHZhbHVlLnZhbHVlT2YoKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdEZWNpbWFsJyxcbiAgICAgICAgICAgICAgICAgICAgRGVjaW1hbDogdmFsdWUudmFsdWVPZigpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmVzdWx0ID0gcmV2ZXJ0T2JqZWN0VG9SYXdUeXBlKHJlZmVyZW5jZXMsIHZhbHVlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuY29uc3QgcmVzdHJpY3RlZEtleXMgPSBbJyRUeXBlJywgJ3Rlcm0nLCAnX19zb3VyY2UnLCAncXVhbGlmaWVyJywgJ0FjdGlvblRhcmdldCcsICdmdWxseVF1YWxpZmllZE5hbWUnLCAnYW5ub3RhdGlvbnMnXTtcbi8qKlxuICogUmV2ZXJ0IHRoZSBjdXJyZW50IGVtYmVkZGVkIGFubm90YXRpb25zIHRvIHRoZWlyIHJhdyB0eXBlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2VzIHRoZSBjdXJyZW50IHNldCBvZiByZWZlcmVuY2VcbiAqIEBwYXJhbSBjdXJyZW50QW5ub3RhdGlvbnMgdGhlIGNvbGxlY3Rpb24gaXRlbSB0byBldmFsdWF0ZVxuICogQHBhcmFtIHRhcmdldEFubm90YXRpb25zIHRoZSBwbGFjZSB3aGVyZSB3ZSBuZWVkIHRvIGFkZCB0aGUgYW5ub3RhdGlvblxuICovXG5mdW5jdGlvbiByZXZlcnRBbm5vdGF0aW9uc1RvUmF3VHlwZShyZWZlcmVuY2VzLCBjdXJyZW50QW5ub3RhdGlvbnMsIHRhcmdldEFubm90YXRpb25zKSB7XG4gICAgT2JqZWN0LmtleXMoY3VycmVudEFubm90YXRpb25zKVxuICAgICAgICAuZmlsdGVyKChrZXkpID0+IGtleSAhPT0gJ19hbm5vdGF0aW9ucycpXG4gICAgICAgIC5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgT2JqZWN0LmtleXMoY3VycmVudEFubm90YXRpb25zW2tleV0pLmZvckVhY2goKHRlcm0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZEFubm90YXRpb24gPSByZXZlcnRUZXJtVG9HZW5lcmljVHlwZShyZWZlcmVuY2VzLCBjdXJyZW50QW5ub3RhdGlvbnNba2V5XVt0ZXJtXSk7XG4gICAgICAgICAgICBpZiAoIXBhcnNlZEFubm90YXRpb24udGVybSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVuYWxpYXNlZFRlcm0gPSAoMCwgdXRpbHNfMS51bmFsaWFzKShyZWZlcmVuY2VzLCBgJHtrZXl9LiR7dGVybX1gKTtcbiAgICAgICAgICAgICAgICBpZiAodW5hbGlhc2VkVGVybSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBxdWFsaWZpZWRTcGxpdCA9IHVuYWxpYXNlZFRlcm0uc3BsaXQoJyMnKTtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkQW5ub3RhdGlvbi50ZXJtID0gcXVhbGlmaWVkU3BsaXRbMF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChxdWFsaWZpZWRTcGxpdC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTdWIgQW5ub3RhdGlvbiB3aXRoIGEgcXVhbGlmaWVyLCBub3Qgc3VyZSB3aGVuIHRoYXQgY2FuIGhhcHBlbiBpbiByZWFsIHNjZW5hcmlvc1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkQW5ub3RhdGlvbi5xdWFsaWZpZXIgPSBxdWFsaWZpZWRTcGxpdFsxXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhcmdldEFubm90YXRpb25zLnB1c2gocGFyc2VkQW5ub3RhdGlvbik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuLyoqXG4gKiBSZXZlcnQgdGhlIGN1cnJlbnQgY29sbGVjdGlvbiBpdGVtIHRvIHRoZSBjb3JyZXNwb25kaW5nIHJhdyBhbm5vdGF0aW9uLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2VzIHRoZSBjdXJyZW50IHNldCBvZiByZWZlcmVuY2VcbiAqIEBwYXJhbSBjb2xsZWN0aW9uSXRlbSB0aGUgY29sbGVjdGlvbiBpdGVtIHRvIGV2YWx1YXRlXG4gKiBAcmV0dXJucyB0aGUgcmF3IHR5cGUgZXF1aXZhbGVudFxuICovXG5mdW5jdGlvbiByZXZlcnRDb2xsZWN0aW9uSXRlbVRvUmF3VHlwZShyZWZlcmVuY2VzLCBjb2xsZWN0aW9uSXRlbSkge1xuICAgIGlmICh0eXBlb2YgY29sbGVjdGlvbkl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uSXRlbTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIGNvbGxlY3Rpb25JdGVtID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAoY29sbGVjdGlvbkl0ZW0uaGFzT3duUHJvcGVydHkoJyRUeXBlJykpIHtcbiAgICAgICAgICAgIC8vIEFubm90YXRpb24gUmVjb3JkXG4gICAgICAgICAgICBjb25zdCBvdXRJdGVtID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IGNvbGxlY3Rpb25JdGVtLiRUeXBlLFxuICAgICAgICAgICAgICAgIHByb3BlcnR5VmFsdWVzOiBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIENvdWxkIHZhbGlkYXRlIGtleXMgYW5kIHR5cGUgYmFzZWQgb24gJFR5cGVcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGNvbGxlY3Rpb25JdGVtKS5mb3JFYWNoKChjb2xsZWN0aW9uS2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3RyaWN0ZWRLZXlzLmluZGV4T2YoY29sbGVjdGlvbktleSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY29sbGVjdGlvbkl0ZW1bY29sbGVjdGlvbktleV07XG4gICAgICAgICAgICAgICAgICAgIG91dEl0ZW0ucHJvcGVydHlWYWx1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb2xsZWN0aW9uS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJldmVydFZhbHVlVG9SYXdUeXBlKHJlZmVyZW5jZXMsIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY29sbGVjdGlvbktleSA9PT0gJ2Fubm90YXRpb25zJykge1xuICAgICAgICAgICAgICAgICAgICBvdXRJdGVtLmFubm90YXRpb25zID0gW107XG4gICAgICAgICAgICAgICAgICAgIHJldmVydEFubm90YXRpb25zVG9SYXdUeXBlKHJlZmVyZW5jZXMsIGNvbGxlY3Rpb25JdGVtW2NvbGxlY3Rpb25LZXldLCBvdXRJdGVtLmFubm90YXRpb25zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBvdXRJdGVtO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbGxlY3Rpb25JdGVtLnR5cGUgPT09ICdQcm9wZXJ0eVBhdGgnKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdQcm9wZXJ0eVBhdGgnLFxuICAgICAgICAgICAgICAgIFByb3BlcnR5UGF0aDogY29sbGVjdGlvbkl0ZW0udmFsdWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29sbGVjdGlvbkl0ZW0udHlwZSA9PT0gJ0Fubm90YXRpb25QYXRoJykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnQW5ub3RhdGlvblBhdGgnLFxuICAgICAgICAgICAgICAgIEFubm90YXRpb25QYXRoOiBjb2xsZWN0aW9uSXRlbS52YWx1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb2xsZWN0aW9uSXRlbS50eXBlID09PSAnTmF2aWdhdGlvblByb3BlcnR5UGF0aCcpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ05hdmlnYXRpb25Qcm9wZXJ0eVBhdGgnLFxuICAgICAgICAgICAgICAgIE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IGNvbGxlY3Rpb25JdGVtLnZhbHVlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiBSZXZlcnQgYW4gYW5ub3RhdGlvbiB0ZXJtIHRvIGl0J3MgZ2VuZXJpYyBvciByYXcgZXF1aXZhbGVudC5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlcyB0aGUgcmVmZXJlbmNlIG9mIHRoZSBjdXJyZW50IGNvbnRleHRcbiAqIEBwYXJhbSBhbm5vdGF0aW9uIHRoZSBhbm5vdGF0aW9uIHRlcm0gdG8gcmV2ZXJ0XG4gKiBAcmV0dXJucyB0aGUgcmF3IGFubm90YXRpb25cbiAqL1xuZnVuY3Rpb24gcmV2ZXJ0VGVybVRvR2VuZXJpY1R5cGUocmVmZXJlbmNlcywgYW5ub3RhdGlvbikge1xuICAgIGNvbnN0IGJhc2VBbm5vdGF0aW9uID0ge1xuICAgICAgICB0ZXJtOiBhbm5vdGF0aW9uLnRlcm0sXG4gICAgICAgIHF1YWxpZmllcjogYW5ub3RhdGlvbi5xdWFsaWZpZXJcbiAgICB9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFubm90YXRpb24pKSB7XG4gICAgICAgIC8vIENvbGxlY3Rpb25cbiAgICAgICAgaWYgKGFubm90YXRpb24uaGFzT3duUHJvcGVydHkoJ2Fubm90YXRpb25zJykpIHtcbiAgICAgICAgICAgIC8vIEFubm90YXRpb24gb24gYSBjb2xsZWN0aW9uIGl0c2VsZiwgbm90IHN1cmUgd2hlbiB0aGF0IGhhcHBlbnMgaWYgYXQgYWxsXG4gICAgICAgICAgICBiYXNlQW5ub3RhdGlvbi5hbm5vdGF0aW9ucyA9IFtdO1xuICAgICAgICAgICAgcmV2ZXJ0QW5ub3RhdGlvbnNUb1Jhd1R5cGUocmVmZXJlbmNlcywgYW5ub3RhdGlvbi5hbm5vdGF0aW9ucywgYmFzZUFubm90YXRpb24uYW5ub3RhdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGJhc2VBbm5vdGF0aW9uKSwgeyBjb2xsZWN0aW9uOiBhbm5vdGF0aW9uLm1hcCgoYW5ubykgPT4gcmV2ZXJ0Q29sbGVjdGlvbkl0ZW1Ub1Jhd1R5cGUocmVmZXJlbmNlcywgYW5ubykpIH0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChhbm5vdGF0aW9uLmhhc093blByb3BlcnR5KCckVHlwZScpKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGJhc2VBbm5vdGF0aW9uKSwgeyByZWNvcmQ6IHJldmVydENvbGxlY3Rpb25JdGVtVG9SYXdUeXBlKHJlZmVyZW5jZXMsIGFubm90YXRpb24pIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYmFzZUFubm90YXRpb24pLCB7IHZhbHVlOiByZXZlcnRWYWx1ZVRvUmF3VHlwZShyZWZlcmVuY2VzLCBhbm5vdGF0aW9uKSB9KTtcbiAgICB9XG59XG5leHBvcnRzLnJldmVydFRlcm1Ub0dlbmVyaWNUeXBlID0gcmV2ZXJ0VGVybVRvR2VuZXJpY1R5cGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD13cml0ZWJhY2suanMubWFwXG5cbi8qKiovIH0pXG5cbi8qKioqKiovIFx0fSk7XG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcbi8qKioqKiovIFx0XG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcbi8qKioqKiovIFx0XHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcbi8qKioqKiovIFx0XHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi8gXHRcbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi8gXHRcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyBcdFxuLyoqKioqKi8gXHQvLyBzdGFydHVwXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHQvLyBUaGlzIGVudHJ5IG1vZHVsZSBpcyByZWZlcmVuY2VkIGJ5IG90aGVyIG1vZHVsZXMgc28gaXQgY2FuJ3QgYmUgaW5saW5lZFxuLyoqKioqKi8gXHR2YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTI2KTtcbi8qKioqKiovIFx0QW5ub3RhdGlvbkNvbnZlcnRlciA9IF9fd2VicGFja19leHBvcnRzX187XG4vKioqKioqLyBcdFxuLyoqKioqKi8gfSkoKVxuOyJdfQ==
2146
2146
  return AnnotationConverter;
2147
2147
  },true);